mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-16 18:45:22 +01:00
docker-container
39 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b1ae4ddce9 |
Diamonds and Bluespace Crystals ore vent rebalance. (#96135)
## About The Pull Request A few tweaks regarding diamonds and bluespace crystals with regards to ore vents. With the quantity of bluespace crystals and diamonds that have been reintroduced to the game, in an attempt to maintain their status as the rarest tier of material to obtain for the station, both materials have been removed from the standard pools of ores that can spawn into boulders. What this **means** is that it can't roll as a primary material for a boulder, providing 25-10 sheets worth of material. **However,** diamonds and BS crystals are now available from all tapped vents as an artifact boulder spawn. These artifact boulders will spawn at a flat 7% chance, previously set as a random range of 0-10% randomly per vent. Because this chance was never communicated to players, I think it's fine at this point to split the difference, lock it in at 7% (Considering that we're adding more things onto the artifact boulder outcomes as is, I've elected to throw it to a slightly higher chance, based purely on vibes). For clarity, these two artifact boulders add a flat 1-5 sheets of their respective material to the boulder on spawn, the same as mining a single tile of their respective ore from a wall. Additionally, the overlays when scanning an ore vent will now show a flashing icon to represent the rare chance that these two materials may spawn. Text has been added to the examine for ore vents to explain this behavior. Boss vents may still spawn diamond and bluespace crystals, but at a lower weighting than all other materials. Due to diamonds and BS crystals being removed from the standard ore vent weightings, their distributions within the ore vent mineral distribution used on roundstart has been shifted, while otherwise keeping a similar distribution of minerals across vents, according to the rough intent of what minerals should show up at what rarities. As previously stated, these two artifact material boulders add their ore to the boulder itself, meaning that you may also want to pick out artifact boulders in order to do limited chemical boosting for up to 50% more materials. ## Why It's Good For The Game Diamonds and bluespace crystals are intended to be rare, valuable, and desirable enough to go out of your way to obtain. Ore vents ideally should have had some sort of built-in scaling that tweaked the amount of that specific material they produced, but I never got around to implementing that and as a result they've been really, REALLY common for the last while. One of the design goals of the new mining PRs that have been released recently as to try and reintroduce some rarity and desirability into these high tier minerals by adjusting their availability while not completely locking them off from the rest of the game. This was a compromise to also still provide some utility to doing ore vents with the reintroduction of ores being more common from wall-mining. Wall diamonds and bluespace crystals will still exist, but this way completing a small collection of ore vents will help to supply the station with materials, where it's the quantity, not the quality of vents that provides the best value, while noting you're still going to be recieving these drops somewhat rarely unless optimizing your factory output. ## Changelog 🆑 balance: Non-boss ore vents may no longer contain bluespace crystals and diamonds. balance: All ore vents now have a flat 7% chance to spawn an artifact boulder. balance: There are now 2 new artifact boulder types, which may contain 1-5 sheets worth of bluespace crystals or diamonds respectively. These boulders may have their rare ore boosted via chemical boosting. balance: ore distribution in vents have been adjusted to accommodate for bluespace and diamonds being removed from vents accordingly. spellcheck: Ore vents now explain the artifact boulder mechanic on examine. /🆑 |
||
|
|
2ede6af8bc |
Fix basic mobs triggering click cooldown erroneously. (#95906)
## About The Pull Request Basic Mobs used to always trigger cooldown on clicks. This resulted in missed attacks causing you to have a delay before you could attack again, this makes it really punishing to play as a basic mob. To resolve this I did a mini-refactor on basic mob's attack chain to allow for the return values to determine whether we go on cooldown or not. Preventing attacks that did nothing (due to not passing checks, or simply not having any behavior) from causing cooldown. This fixes #95605 ## Why It's Good For The Game being able to perform melee with the same rules as /human is only fair ## Changelog 🆑 DresserOnFire fix: Fixes a bug where player-controlled basic mobs would get a cooldown when their attacks miss refactor: basic mob attack chain can now decided whether an attack resulted in a cooldown or not. /🆑 |
||
|
|
0c91535120 | Arcmining: Chemical Boosting (#95530) | ||
|
|
2680aafa3f | [MDB IGNORE] Lavaland Mineral Rework: Yapmining 2026 (#95682) | ||
|
|
9ecf33adf9 |
Ore vents now turn transparent and clickthrough when there's a mob behind them (#95646)
## About The Pull Request When a mob enters a tile above the vent its top half (and the rig, if the vent has been tapped) will turn transparent and clickthrough. The bottom half residing on the tile below is still clickable. https://github.com/user-attachments/assets/5ed1cd3a-4f33-4692-adce-471eb2942d45 Same applies to ore type overlays. Also I've cleaned up ore vent code a bit. ## Why It's Good For The Game During combat some mobs, especially legion skulls, can end up hiding behind the vent and be extremely hard to hit, requiring the player to pull up the alt click menu to dispatch of them. This should resolve that issue. ## Changelog 🆑 qol: Ore vents now turn transparent and clickthrough when a mob enters the tile above them. The bottom half of the vent is still clickable. code: Cleaned up ore vent code /🆑 |
||
|
|
3dbcdd9be3 |
Add tap all ore vents admin secret (#95231)
## About The Pull Request Add a new button to the fun tab of admin secrets that taps every ore vent ## Why It's Good For The Game Quick button to get steady stream of ore flowing into the station is nice ## Changelog 🆑 admin: added tap all ore vents button to secrets panel /🆑 |
||
|
|
f74b725961 | Ore vent sizes are now divided up based on their distance to the mining base (#92943) | ||
|
|
d78d3a5f4a |
Ore vents spawn a ring of platforms around themselves for the duration of wave defense. (#92978)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
beb50296b6 |
Ensures uniform distribution of minerals across ore vents & non zero material boulders (#92996)
## About The Pull Request - Fixes #92972 There were multiple problems with code that I can't be asked to explain but here is the intended output(`ore_vent_minerals` contains the copy of the list `ore_vent_minerals_lavaland` which we actually modify & not the global list itself) <img width="481" height="241" alt="Screenshot (512)" src="https://github.com/user-attachments/assets/ed4d2659-b78c-4b99-ae68-e6fad4f116e4" /> All ore vents will now have at most 4 minerals but because we use an associative list it is possible for a mineral to get picked more than once in the same iteration resulting in old values getting replaced which isn't a problem but just a point to be known so you don't always get vents with 4 minerals Another problem i ran into debugging is that some vents churn out 0 material boulders. That had to do with rounding down of the logarithmic function which returned 0. We now ensure that never happens ## Changelog 🆑 fix: ore vents have unique distribution of at most 4 minerals without rare ones being repeated fix: ore vents should no longer be produce 0 material boulders /🆑 |
||
|
|
985fac79eb | Boulders can now be used on lava turfs in order to create temporary, walkable platforms (#92877) | ||
|
|
7be3eb8fdb |
Fixes winning ore vent wave defence by moving drone (#92220)
## About The Pull Request - Fixes #92079 The `force` parameter in `handle_wave_conclusion()` was being interpreted the wrong way in these 2 scenarios - When `COMSIG_QDELETING` is sent `force` actually means are we deleting the object forcefully & not if we want to win the wave defence - When `COMSIG_MOVABLE_MOVED` is sent `force` gets the old location of the drone(which gets misunderstood as TRUE because it's a non null value) & not if we want to win the wave defence So let's just remove this parameter so that it doesn't get misinterpreted again. We don't lose any functionality with this because when analysing all the places `handle_wave_conclusion()` is called, no where is `force = TRUE` passed so the default is always assumed to be FALSE so we can just throw it away ## Changelog 🆑 fix: You cannot win an ore vent wave defence by throwing a blue space crystal on the drone or by moving it in any other way /🆑 |
||
|
|
5261efb67f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
## About The Pull Request Melee attack chain now has a list passed along with it, `attack_modifiers`, which you can stick force modifiers to change the resulting attack This is basically a soft implementation of damage packets until a more definitive pr, but one that only applies to item attack chain, and not unarmed attacks. This change was done to facilitate a baton refactor - batons no longer hack together their own attack chain, and are now integrated straight into the real attack chain. This refactor itself was done because batons don't send any attack signals, which has been annoying in the past (for swing combat). ## Changelog 🆑 Melbert refactor: Batons have been refactored again. Baton stuns now properly count as an attack, when before it was a nothing. Report any oddities, particularly in regards to harmbatonning vs normal batonning. refactor: The method of adjusting item damage mid-attack has been refactored - some affected items include the Nullblade and knives. Report any strange happenings with damage numbers. refactor: A few objects have been moved to the new interaction chain - records consoles, mawed crucible, alien weeds and space vines, hedges, restaurant portals, and some mobs - to name a few. fix: Spears only deal bonus damage against secure lockers, not all closet types (including crates) /🆑 |
||
|
|
339616ae78 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
## About The Pull Request People can now pet held mothroaches and pugs if they want to, or use items on them, hopefully without causing many issues. After all, it only took about a couple dozen lines of code to make... ...Oh, did the 527 files changed or the 850~ lines added/removed perhaps catch your eye? Made you wonder if I accidentally pushed the wrong branch? or skewed something up big time? Well, nuh uh. I just happen to be fed up with the melee attack chain still using stringized params instead of an array/list. It was frankly revolting to see how I'd have had to otherwise call `list2params` for what I'm trying to accomplish here, and make this PR another tessera to the immense stupidity of our attack chain procs calling `params2list` over and over and over instead of just using that one call instance from `ClickOn` as an argument. It's 2025, honey, wake up! I also tried to replace some of those single letter vars/args but there are just way too many of them. ## Why It's Good For The Game Improving old code. And I want to be able to pet mobroaches while holding them too. ## Changelog 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
67dd51be79 |
Reworks language translations. Add partial language understanding. Bilingual update. (#90252)
## About The Pull Request Fixes #89445 (well, technically. It fixes the bug associated but these `say`s should really be emotes.) Three things: 1. Reworks how language translation works. Rather than scrambling a sentence into a language entirely, sentences are now scrambled on a per-word basis. Additionally, the 1000 most common words of a language are *never* re-scrambled across the duration of a round. Once it's set it's set in stone. Example: (Sample / Old / New)  This allows for a number of things: - More consistent translations, making it (more) viable to actually "teach" someone words for something - Maintaining emphasis such as caps (but not `||`, `++`, or `__` - at least not yet) - The following: 2. Adds partial language understanding Some languages can understand portions of other languages.  This pr adds the following: - Those who understand Beachtongue can understand 50% of Common and 33% of Uncommon words. - Those who understand Common can understand 33% of Beachtongue and 20% of Uncommon words. - Those who understand Uncommon can understand 20% of Common and 20% of Beachtongue words. 3. Bilingual quirk has been expanded to accomodate these changes. There are now two more preferences: - Language Speakable - You can toggle this, so you only understand the language, rather than understand AND speak. - Language Skill - If you choose to be unable to speak the language, you can set how much of the language you can understand, down to 10%. ## Why It's Good For The Game Playing around languages is fun, but due to the way our translation works, ALL context is immediately lost for what the other person may be saying. If the other person is shouting in all caps? Output language is normal chatting. This is lame! Even if someone is unable to understand you, there's a LOT you can convey just by how you speak, and getting that across in game is quite difficult when all translations get mauled so badly. So this changes that. - Emphasis like caps lock is maintained, so you see someone shouting in caps in a foreign language you can probably intuit something is wrong (but not what is wrong!) - Some languages can gleam bits of other languages, so you MIGHT be able to pick out context if you pay close attention - "Brother" languages will now feel more like "brothers" and not completely divergent - You can even "teach" someone words in your language - at least the most common words! (Until next round) ## Changelog 🆑 Melbert add: Languages can now have partial understanding of other languages. More common English words are more likely to be mutually understood. add: Those who understand Beachtongue can understand 50% of Common and 33% of Uncommon words. add: Those who understand Common can understand 33% of Beachtongue and 20% of Uncommon words. add: Those who understand Uncommon can understand 20% of Common and 20% of Beachtongue words. add: Bilingual quirk: You can now choose between being able to speak or not speak the language add: Bilingual quirk: You can now choose to have partial understanding of your language, rather than full. qol: If you speak in ALL CAPS in a foreign language, the translated words will also be ALL CAPS. qol: Many more forms of punctuation are now conveyed across translations. qol: The 1000 most common English words will now never be scrambled when translating into other languages for the duration of the round. This means you can actually "learn" some words if you are especially attentive! (Until the next round at least) refactor: Refactored language translations. Report if you see any super odd looking translations. fix: Force-says forcing you to speak common (such as cult invocations) will now correctly force you to speak common (even if you don't know common) /🆑 |
||
|
|
acd8a1693f |
Moves manual boulder breaking to LMB, corrects tooltips (#90474)
## About The Pull Request Per #90473, for some reason boulder breaking is right click exclusive for items. Basicmobs also break boulders on left click, but the tooltip claims they should use right click for it. Also cleaned up some related code. ## Why It's Good For The Game Doesn't really make sense to use exclusively right click for boulder breaking, this can confuse newer players. ## Changelog 🆑 qol: Moved manual boulder breaking with tools to LMB, corrected boulder tooltips suggesting incorrect mouse buttons for basicmobs. /🆑 |
||
|
|
8df0c5851d |
Partially reverts #89619, where I partially reverted #87936; Puts back the mining and damage AOE damage on Mech PKA, but improves the standard modkits as well (#89993)
## About The Pull Request In #89619, I removed the mech PKA's mining AOE and reduced the damaging AOE to a fraction of the damage. I have restored both of these aspects, but I have also applied this change to the standard PKA's mining and damage AOE. I have also included the mob biotype limitations as well. AOE modkits take 10% capacity, now allowing miners to use them in more setups. However, they conflict with one another. You can only have one AOE mod until you can get the dual AOE mod from tendrils. The AOE damage/mining effect is now a 2 tile effect rather than 1 tile effect. ## Why It's Good For The Game My intent in the previous PR was to bring mech PKA's down to standard mining limitations. So, why not improve those standards for everyone instead? The new state of mining expects you to be dealing with a lot of mobs at once. Even small vents can, on occasion, decide to spit out several goliaths back to back. That's a lot of mobs with a lot of health. Miners need AOE options more than ever. They have very little that are actually meaningful, sadly. So my intent here is that this should be an expectation for our miners to be seeking out and can fit into their current, standard gameplay. Certainly I've only felt like shit having to sacrifice a damage or cooldown mod for an AOE mod, only to get a very minor amount of damage splash for my efforts. That, and the radius doesn't usually impact most mobs as they spawn and attack from awkward angles or distances from one another where they are JUST out of reach of one another. Trying to use the splash to hit multiple enemies is often not worth it compared to just hitting one enemy at a time with a lot of damage. So, let's just go with the standard of 'Good AOE is fundamentally needed now' and worth from that premise. ## Changelog 🆑 balance: Mech PKA now once again mines turfs and does full damage on its AOE explosion (still only hitting mining mobs). balance: The standard PKA AOE mods are now by default 10% capacity. But they cannot be used with one another. balance: The standard PKA offensive AOE mod now does the PKA's full damage in its AOE. balance: Mining AOEs will affect everything within a 2 tile radius around the point of impact, up from a 1 tile radius. /🆑 --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
742729fa0a |
Converts most common particle sources to use our new pooling system (#88048)
## About The Pull Request Closes #83370 Converted most cases where we could benefit from using shared particles (aka when there's probably more than 3 uses of that particle in a round) to use the new shared particle system. Should provide significant clientside performance in particle-heavy areas like botany (or sometimes kitchen) ## Changelog 🆑 refactor: Converted most common particle sources to use our new pooling system. /🆑 |
||
|
|
15247f28f1 |
Arcmines The Clarke Exosuit + Tech node changes. (#87936)
## About The Pull Request The Clarke Exosuit has received several adjustments to make it worth using in the Arcmining era. - Clarke no longer requires gold bars to be built. - HP bumped from 200 to 250, melee armor bumped from 20 to 40. - Clarke Ore storage module can now collect boulders and smelt them internally. - Exo mining scanners can now be used in proximity to a vent to start the wave defense event. - Mech Pkas now do more damage and have the AOE upgrade preinstalled. - Mech drills are now a utility module rather than a weapon. - New Internal module unique to the Clarke, It's a rusty sleeper that can be used to recover dead miners, but lacks the ability to inject chems - Fixed Mech sleepers not granting life support. - Plasma cutters and Bluespace satchels tech nodes are no longer locked behind experiments, but they are now discounted by them. ## Why It's Good For The Game Ever since the inception of Arcmining, the Clarke Exosuit has fallen from being niche to straight up irrelevant. The Clarke sits in this weird spot, where, while not being roundstart available, it is an effectively worse fit than your regular Shaft Miner in all aspects of the job. This PR aims to address this by making The Clarke able to be built even if the miners are absent or haven't secured a haul, while making it actually capable of interacting with the new elements introduced by Arcmining. **Arcmining Clarke and Improved Combat functionality** The Mech mining scanner can now be used to trigger the vent wave defense, The internal storage module can now collect boulders and internally smelt them within the Clarke. Video Demonstration: https://www.youtube.com/watch?v=gtsNK5JbI3o The Clarke is now a more capable fighter on Lavaland, being a bit beefier overall. The mech Pka was also in dire need of some love. It being unable to be upgraded made it frankly underwhelming at dealing with Vent defences. I was considering just having PkA upgrades applicable to the mech itself but ultimately decided against it in fear of having it become a problem on the station. Instead, I just went for a flat damage increase and have the AOE upgrade come preinstalled to better deal with legion swarms. Lastly The drill modules have been reworked to be utility modules instead of weapons. Frankly these shouldn't be weapons, they are nowhere near as valuable as the cutter or the PKA and can't be used at all on moving targets due to the long cost time. **New Clarke Exclusive Internal Module: Mining Sleeper**  Just a bit of extra functionality to aid miners that have tragically fallen, this sleeper is effectively a worse version of the Odysseus, it can stabilize patients but cannot inject chems, I also fixed an issue where Mech sleepers were not putting patients on life support like regular sleepers do. **Tech Node Changes** This is not something super related to the Clarke in and on itself, but I figured I might push my luck and try these anyway. There is just no good reason as to why satchels and cutters should be hard locked behind gas shells. These experiments are fairly trivial, but have a huge impact on lowpop as they usually force people to break into ordinance or the teleporter room just so miners could get their basic tools. The shells still exist but now grant a discount instead of hardlocking tech, so there's still an incentive to do them. ROCK AND STONE! ## Changelog 🆑 add: New internal sleeper module for the Clarke. balance: Clarke Integrity has been bumped from 200 to 250 HP, melee armor bumped from 20 to 40. balance: Exo mining module can now be used to scan vents and begin the wave defense event. balance: The Clarke Ore Storage Module can now collect boulders and internally smelt them. balance: Mech Pka is now bundled within the Clarke tech node, it now does more damage and comes with the AOE upgrade preinstalled. balance: Exo mining drills are now a utility module rather than a weapon. balance: Applied Bluespace Research and Controlled Plasma tech nodes are no longer hardlocked behind surveys, they instead favor from a discount if they are completed. fix: Fixes Exo Mech modules not granting life support to housed patients. /🆑 --------- Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
00d40c2a8f |
fixes ore vents being tapped despite their drones dying (#87359)
## About The Pull Request the vent defense minigames had a 100% win rate because of a small mistake in the order of args passed to the proc ## Why It's Good For The Game closes #87284 ## Changelog 🆑 fix: fixes ore vents being tapped despite their drones dying /🆑 |
||
|
|
47430a4c04 |
A smattering of boulder-related QOL and fixes. (#86834)
## About The Pull Request This pull request does a little bit of cleanup that I came across awhile ago while looking at #85081, then forgot about, then came back up when I was looking at some additional cleanup that needed to be done. Reorganizes the handle_wave_conclusion function such that it can take a force arg, to force a ore vent to be completed for debug purposes. This also fixes a minor bug where vents, when successfully completed, will still show a warning alert that the waves were failed, and that the vent has closed up. Grammar fix to the examine of boulder processing machines. Moves the can-move behavior of boulders on conveyor belts and during regular stacking to an early return over a late return (Thank you Goofball for pointing that out). Artifact boulders will now default to their artifact icon_state whenever possible. Finally, adds an additional sanity check to boulder processing to check for custom material length, to attempt to avoid zero-content boulders existing and running into the afforementioned #85081 ## Why It's Good For The Game Largely applies cleanup to several aspects of the boulder processing system, and a handful of (hopefully) performance related rearrangements to the existing layout of boulder processing code. I can't for sure say that it'll fix the linked issue, due to the fact that I could not for some reason re-create the issue in local testing, but I'm hopeful that it's some kind of nebulous sanity-related issue. Cleans up grammar in some spots, and provides a useful debug tool for admin purposes when you just want a vent to flip. Might be a good justification for a ore-manager admin panel later? 🤷 ## Changelog 🆑 fix: Artifact boulders should keep their alien icon even after a first round of processing. fix: Boulders are less likely to exist with zero materials after processing. fix: Boulders should be slightly less laggy on conveyor belts. fix: Grammar of refinery/smeltery examine is corrected. /🆑 |
||
|
|
58501dce77 |
Reorganizes the sound folder (#86726)
## About The Pull Request <details> - renamed ai folder to announcer -- announcer -- - moved vox_fem to announcer - moved approachingTG to announcer - separated the ambience folder into ambience and instrumental -- ambience -- - created holy folder moved all related sounds there - created engineering folder and moved all related sounds there - created security folder and moved ambidet there - created general folder and moved ambigen there - created icemoon folder and moved all icebox-related ambience there - created medical folder and moved all medbay-related ambi there - created ruin folder and moves all ruins ambi there - created beach folder and moved seag and shore there - created lavaland folder and moved related ambi there - created aurora_caelus folder and placed its ambi there - created misc folder and moved the rest of the files that don't have a specific category into it -- instrumental -- - moved traitor folder here - created lobby_music folder and placed our songs there (title0 not used anywhere? - server-side modification?) -- items -- - moved secdeath to hailer - moved surgery to handling -- effects -- - moved chemistry into effects - moved hallucinations into effects - moved health into effects - moved magic into effects -- vehicles -- - moved mecha into vehicles created mobs folder -- mobs -- - moved creatures folder into mobs - moved voice into mobs renamed creatures to non-humanoids renamed voice to humanoids -- non-humanoids-- created cyborg folder created hiss folder moved harmalarm.ogg to cyborg -- humanoids -- -- misc -- moved ghostwhisper to misc moved insane_low_laugh to misc I give up trying to document this. </details> - [X] ambience - [x] announcer - [x] effects - [X] instrumental - [x] items - [x] machines - [x] misc - [X] mobs - [X] runtime - [X] vehicles - [ ] attributions ## Why It's Good For The Game This folder is so disorganized that it's vomit inducing, will make it easier to find and add new sounds, providng a minor structure to the sound folder. ## Changelog 🆑 grungussuss refactor: the sound folder in the source code has been reorganized, please report any oddities with sounds playing or not playing server: lobby music has been repathed to sound/music/lobby_music /🆑 |
||
|
|
69176298ed |
Spelling Fixes (#86056)
## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game Improves readability and user experience. ## Changelog 🆑 spellcheck: fixed a few typos /🆑 |
||
|
|
d4a2246e70 |
NODE drones now show their wave progress on the sprite (#85405)
## About The Pull Request Node drones now show a small green progress light as they reach 25%, 50%, and 75% landmarks within the wave defense minigame. This allows for a bit of consistency when it comes to doing wave defense, so you can get a feel for how much longer you have until wave defense is complete at any given vent. This also clears the registered signal on QDEL, so that when wave defense is completed successfully, it doesn't trigger the "*creaks and groans as the mining attempt fails, and the vent closes back up*" message.   ## Why It's Good For The Game This was presented as an idea to me as a quick QOL improvement for arcmining, which I agree would make for an easy improvement to how the wave defense minigame is presented. Been meaning to do more balance, system, and QOL changes to arcmining, but I've been swamped with real life as of late. This however was a fairly simple change I did over the weekend. ## Changelog 🆑 qol: NODE drones summoned to tap a vent within ore vents now display a green status light to show how much longer they need the vent defended for. /🆑 |
||
|
|
5f80128fa9 |
Corrects 200+ instances of "it's" where it should've been "its" instead (#85169)
## About The Pull Request it's - conjunction of "it" and "is" its - possessive form of "it" grammar is hard, and there were a lot of places where "it's" was used where it shouldn't have been. i went and painstakingly searched the entire repository for these instances, spending a few hours on it. i completely ignored the changelog archive, and i may have missed some outliers. most player-facing ones should be corrected, though ## Why It's Good For The Game proper grammar is good ## Changelog 🆑 spellcheck: Numerous instances of "it's" have been properly replaced with "its" /🆑 |
||
|
|
26f6235a53 |
Fixes ore vents floating after a tendril collapses nearby. (#84730)
## About The Pull Request Ore vents now provide a trait to the turf they spawn on, TRAIT_NO_TERRAFORM, which does exactly what it says on the tin, preventing the turf from being able to change into something else, like a chasm. Ore vents already have `move_resist = MOVE_FORCE_EXTREMELY_STRONG`, so they shouldn't be movable by any other means anyway, resulting in them being stuck in the turf that they spawned without admin tomfoolery.  ## Why It's Good For The Game Fixes #84463. Reasonably, too, we'll one day have other uses for something that needs to avoid the turf changing on it as well such as this. I also sorted the turf traits because they were starting to get non-alphabetical and I know that'll drive someone crazy if I don't fix that while it's still early. ## Changelog 🆑 fix: Ore vents that are caught in the cross-fire of a lavaland tendril collapsing will now spare the ore vent and it's associated turf. /🆑 |
||
|
|
97b135a6c7 |
Vent-spawned wendigos no longer create one-way portals (#84230)
## About The Pull Request Creates a vent-specific wendigo subtype that will not spawn a portal upon death ## Why It's Good For The Game Fixes #84119 ## Changelog 🆑 fix: Vent-born wendigos no longer create one-way portals /🆑 |
||
|
|
a37a888ff8 |
Adds logging for ore vent mobs spawned and killed (#83942)
## About The Pull Request Basically what the title says. Adds logging for every mob spawned by an ore vent by type (bosses included). Adds similar logging for spawned mobs being killed, that way people can tell if vents are being cheesed. ## Why It's Good For The Game Logging is good. Also this:  ## Changelog No player facing changes. |
||
|
|
a05321db2f |
Increases move resistance on NODE Drones, adds handling for when the drone is seperated from the node (#83309)
## About The Pull Request NODE Drones now have higher move resistance (MOVE_FORCE_EXTREMELY_STRONG), preventing them from being bumped off the node, pulled away, or lifted away by a fulton extraction kit. As an extra layer of assurance, the NODE Drone will depart from the site if it is moved off of its vent. ## Why It's Good For The Game Closes #83164. I'm pretty sure these things shouldn't really be ever moving off of their vents. ## Changelog 🆑 Rhials fix: You can no longer force NODE Drones off of ore vents. That includes using fulton packs! fix: When a NODE Drone is forcibly separated from its vent, it will fly away. /🆑 |
||
|
|
659c925495 |
Ore vents now have countermeasures against walling them off from all sides. (#83295)
## About The Pull Request This PR fixes some balance and practicality issues with the spawner component that has affected vent mining and the associated wave defense. * The turf_peel() proc now checks to see if it's pulling no turf from the inside or outside of it's peel, in which case it now has a default case where it returns it's center turf instead. * As a consequence of this, the center turf is where mobs will spawn if an ore vent is unable to find any space where it can spawn any new hostile mobs. Upon testing this, it worked fairly well, but ultimately node drones were capable of tanking enough hits for long enough that typically they could still survive a small vent's onslaught. As a precaution, I've made two additional changes. * Node drones have had their maximum health dropped slightly, from 500 health to 300 health. * As a secondary precaution, if a spawner using the turf peel method cannot spawn correctly, it will send a signal, which ore vents are now registered to. When called on an ore vent, it has new behavior to clear the offending nearby turfs and create a pathway to allow nearby mobs to get access to the vent. * (**This is an explosion**.) ## Why It's Good For The Game Fixes an unreported on the repo but repeatedly pinged issue regarding ore vent waves where players could often wall off or blockoff an ore vent in such a way that it allows vents to be functionally immortal by quickly walling off the vent using sandstone doors. This should help to prevent players cheesing the intended gameplay mechanic, as well as keep up the challenge to arcmining wave defense without some additional nuance. I may have gone a little overboard with the health tweaks as well, but considering that even with the explosions, I was able to survive the repeated explosions on the vent, I think this should work quite well all things considered. Still, open to feedback there. ## Changelog 🆑 balance: Ore vents, if blocked off from all four sides while being defended, now cause a mild gas explosion, resulting in a mild dissuasive explosion. fix: NODE drones spawned from ore vent defense have lower maximum health. /🆑 |
||
|
|
a8d5a8dcc4 |
node drones hard deletes (#82927)
i noticed node drones were being hard deleted 60% of the time. its because the ore vent wasnt cleaning up after them. also fixes some runtimes if ur id card didnt have a registered account fix hard deletes |
||
|
|
d3662137f8 |
Arcmining QoL: GPS component to scanned vents and vent(pin)pointer (#82724)
## About The Pull Request Scanning ore vents will now tag them on GPS so you can find them easily when you are prepared (and remove them when they are tapped). Also adds special pinpointer to help with finding unscanned vents in a first place. And adds missing uranium overlays for scanned vents. Because why not. <details>   </details> ## Why It's Good For The Game While looking at mineral density to find vents is somewhat fun and entertaining, having some sort of upgrade to make finding them easier adds a bit of a progression. Also re-finding already scanned vents can be a bit annoying. You need to fill your backpacks with GPSs and tag them manually. It is also inconsistent with geysers that are added to positioning after you scan them. And with tendrils, which are always visible. ## Changelog 🆑 add: added ventpointer that points toward nearby ore vents and can be bought with mining points balance: scanned ore vents can now be found with GPS fix: fixed ore vents missing overlay icon for uranium /🆑 |
||
|
|
9802508ab9 |
Adds logging to SSore_generation on subsystem initialize (#81488)
This PR adds a new logging category and a logging message specific to
SSore_generation's initialize, logging the number of vents of each size,
as well as the number of random and proximity based ore spawns due to
cave generation and map generation.
Currently drafted as I could use some feedback as to why I'm not seeing
the logger.log() messages not appearing on any of the current in-game
log files 👍
Useful for data logging to determine how many of each type of ore is
spawned on the map, for the purposes of determining how much ore is
being spawned manually over the automatic amounts based on the vents,
with the quantity of ores spawning being a product of the ore vent sizes
being logged as well.
|
||
|
|
b8667c320f |
Ore vent fixes to spawning multiple megafauna. (#81935)
## About The Pull Request Ore vents can now no longer be scanned multiple times to spawn multiple nodes, nor can they be used to duplicate lavaland bosses. Vents now call for a `can_interact` check, as well as against the cooldown timer, which has been moved a bit in the order of operations in order to check things correctly when there's possibly multiple prompts open for starting the defense waves. Additionally, boss waves actually do what they're supposed to do, and don't spawn in a node drone on boss summoning, but instead summon the drone afterwards, which sets up the vent, then takes off visually. This is reflected in the tgui alert before starting waves. ## Why It's Good For The Game Fixes #81817. Improves visual clarity when doing boss vents so that players don't get the wrong idea that they need to protect the drone as well when fighting bosses. ## Changelog 🆑 fix: Ore vents have to be scanned while standing next to them. fix: Menacing ore vents now correctly only spawn in a node drone after the boss is defeated, instead of before. /🆑 |
||
|
|
6b6bd5ce95 |
fix ore vents spawning the wrong wolves and remove simple wolves (#81864)
## About The Pull Request wolves got refactored but the ore vents were still spawning the old versions, this fixes it and removes the old wolves from the code ## Why It's Good For The Game fixes ore vents spawning old wolves ## Changelog 🆑 fix: fixes ore vent spawned wolves being untammable /🆑 |
||
|
|
df2ce692ee |
General maintenance for all things boulder related. (#81358)
## About The Pull Request **1. Qol** - Adds screen tips & examines for screwdriver & crowbar acts on BRM, Refinery & Smelter - Adds examines to display number of boulders stored inside a refinery & maximum number of boulders it can hold. Right click screentip to remove boulders - Adds examines to display maximum number of boulders than can be teleported by a BRM & screentips for interacting with wires - More audio & visual feedback for refinery processing. If a boulder requires multiple steps you will get a balloon alert saying "crushing" for refineries & "smelting" for smelters along with a sound per process tick(which is every 2 seconds so no need for cooldown) giving you a better idea of what's happening in the pipeline - BRM now will display all lights when the "Automatic boulder retrieval" is on & turn off the lights when disabled along with examines giving you a visual indicator of its state **2. Code Improvements** - Splits types of boulders into its own file `boulder_types.dm` for easy maintainability - Moves beacon for refinery machines into its own file `boulder_processing/beacon.dm` for easy maintainability - Moves the cooldown for processing a boulder `processing_cooldown` into the refinery machine itself. Since 100's of boulders can be created per round this var can take up memory quickly so by moving them into the refinery machine it gives us some savings - Compressed & merged procs such as `create_mineral_contents()` , `flavour_boulder()` etc with the vent code. These procs were only used by the vent 1 time & by merging the code we removed if conditions to check if a parent vent was passed or not(since now that's always the case). Helped in removing boilder plate code **3. Fixes** - **Fixes vents always spawning "Small size boulders" & not medium, nor large boulders.** Once a vent generates a boulder it calls `flavour_boulder()` https://github.com/tgstation/tgstation/blob/084f56938c0169aeeee0b5f41453f31d072f3f67/code/game/objects/structures/lavaland/ore_vent.dm#L385 however this proc also accepts 2 more params `size` which would always default to `BOULDER_SIZE_SMALL` and `is_artifact` which is simply unused in the proc https://github.com/tgstation/tgstation/blob/fb83617ff94d6294b0d48c8c6c57488237508d11/code/modules/mining/boulder_processing/boulder.dm#L219 Therefore vents would always generate small boulders giving us no varity. Now the boulder size is set depending on the vent size & durability for each boulder is set to a random value between 2 & the boulder max size giving us the flavour we actually wanted - **Fixes "Expanded Gulag boulders" using "normal gulag material list" when setting its custom materials.** If you look at the `add_gulag_minerals()` proc it always picks from the `gulag_minerals` list & accepts no params https://github.com/tgstation/tgstation/blob/fb83617ff94d6294b0d48c8c6c57488237508d11/code/modules/mining/boulder_processing/boulder.dm#L235-L236 So when we try to pass params to this proc which in reality doesn't accept any we were wasting our time doing this https://github.com/tgstation/tgstation/blob/fb83617ff94d6294b0d48c8c6c57488237508d11/code/modules/mining/boulder_processing/boulder.dm#L274 And for our case `expanded_gulag_minerals` list was simply unused because our proc doesn't care about it and it went back to just using `gulag_minerals` list thus ignoring our list https://github.com/tgstation/tgstation/blob/fb83617ff94d6294b0d48c8c6c57488237508d11/code/modules/mining/boulder_processing/boulder.dm#L282 As i said in the "Code Improvement` section when i moved boulder types into it's own unique file this was fixed & now expanded gulag boulders actually has a chance to spawn with bluespace crystals inside them - **Fixes manual tapping of ore vents by hand not using a cooldown** `produce_boulder()` accepts a cooldown var for when you need to manually tap the vent by hand. https://github.com/tgstation/tgstation/blob/e8b5b52d54a60b651d72e610cfb35a237aef6efe/code/game/objects/structures/lavaland/ore_vent.dm#L374 This var was always set to FALSE because we never passed `TRUE` into it. Not once here https://github.com/tgstation/tgstation/blob/e8b5b52d54a60b651d72e610cfb35a237aef6efe/code/game/objects/structures/lavaland/ore_vent.dm#L124 Nor here https://github.com/tgstation/tgstation/blob/e8b5b52d54a60b651d72e610cfb35a237aef6efe/code/game/objects/structures/lavaland/ore_vent.dm#L131 Now we just pass `TRUE` so tapping these vents by hand have a cooldown - **Fixes BRM off icon state never being used** When the room ran out of power it would still look on. Now we use that state correctly - **Fixes Automatic Boulder Retrieval by the BRM not actually being automatic** You must have noticed that once you do "Right click" and wait for all the boulders it can teleport (determined by `boulder_processing_max`) to be teleported it stops permanently after that. Even if more boulders get generated it won't do anything, You have to again "Right click" & retoggle automatic boulder retrieval on again, thus forcing someone to stand there & monitor the BRM Now once you set Automatic Boulder Retrieval on you can leave & forget. It will teleport boulders as & when available thus enabling automation properly. - **Fixes boulders ejected from refineries via right click from getting teleported back into the machines loc** Fixes https://github.com/tgstation/tgstation/pull/78524#issuecomment-1911666995. The problem is refinery machines & the BRM keep track of all the boulders that entered into it via the `boulders_contained` list. Now we directly check `contents` for boulders so we don't have to maintain 2 seperate lists to keep track of boulders. It also now uses `processed_by` var of boulders to ensure refinerries don't retake in the same boulder it just processed. Not sure where exactly the problem got fixed but implementing these 2 measures fixed it regardless. - **Fixes boulders with 0 durability[a.k.a steps] from getting ejected out** Fixes https://github.com/tgstation/tgstation/pull/78524#issuecomment-1914551952. So inside `process()` we constantly decrease the durability of the boulder till it becomes 0. https://github.com/tgstation/tgstation/blob/0a496f180c627b9de26d3982d775cbf323fbc459/code/modules/mining/boulder_processing/_boulder_processing.dm#L159 When it reaches 0 it calls `breakdown_boulder()` https://github.com/tgstation/tgstation/blob/0a496f180c627b9de26d3982d775cbf323fbc459/code/modules/mining/boulder_processing/_boulder_processing.dm#L164-L165 This proc has a chance to reject the boulder if it could not process any materials https://github.com/tgstation/tgstation/blob/0a496f180c627b9de26d3982d775cbf323fbc459/code/modules/mining/boulder_processing/_boulder_processing.dm#L219-L222 **"Without resetting its durability"** over here https://github.com/tgstation/tgstation/blob/0a496f180c627b9de26d3982d775cbf323fbc459/code/modules/mining/boulder_processing/_boulder_processing.dm#L241 So it ends up rejecting a "0" or worse -1 durability boulder. Now we set the durability in `remove_boulder()` so regardless of what circumstances the boulder is ejected it always gets a positive durability - **Fixes BRM & Refinery from rapidly spitting out boulders in their loc which causes lag in the long terms** Fixes #81404. Basically even if there is 1 boulder sitting at a BRM's loc or an refineries loc. Operations are haulted i.e. the BRM will not teleport any more boulders & the refinery will keep their already processed boulders inside till their locs are cleared from boulders. This prevents large number of boulders from pilling up in long rounds - **[Priority : High] Fixes refineries incorrectly removing materials from processed boulders** Fixes #81109. This bug is quite serious because it can't literarily affect any random item with custom materials in game. This one line of code over here can break the entire material economy as we know it https://github.com/tgstation/tgstation/blob/0a496f180c627b9de26d3982d775cbf323fbc459/code/modules/mining/boulder_processing/_boulder_processing.dm#L217 **"DONT DO THIS"**. The `custom_materials` list is a **"read only"** list & if you ever want to change it call the `set_custom_materials()` proc with your new values but do not edit this list manually as it is done here. All lists related to materials are cached by the `SSmaterials` subsystem. List values are cached & shared across multiple objects so when you edit those values like here, you might end up effecting an item/multiple items in some random corner of the map that shares this list. This also causes boulders with empty list of materials to get spawned at random so yeah again plzz don't do this **4. Refactors** - Repathes `obj/machinery/boulder_processing/brm` -> just `obj/machinery/brm`. Even though semantically it looks nice that the brm is a subtype of `obj/machinery/boulder_processing` from a code & operation perspective they have 0 similarities. 1) The BRM does not accept boulders feed into it from a conveyer belt unlike a refinery but instead picks boulders from `SSore` subsystem & put it on the conveyer belt. This means procs for accepting boulders such `CanAllowThrough()`, `breakdown_boulder()`, `accept_boulder()` etc have no use in the BRM. Their just code clutter at this point 2) The BRM overrides `process()` & does not call its parent proc making that code wasted 3) It has no use for silo materials & mining points making those vars go to waste With so much wasted code its better to just let go off all of it & just make it a basic instance of `obj/machinery` making maintainence easy - BRM now teleports boulders in a batch (batch size determined by `boulders_processing_max` max value from upgraded parts is 7) with a boulder appearing every 1.5 seconds rather than spawning all at once. After a batch is processed it has a cooldown of 3 seconds before repeating the process if automatic boulder retrieval is on. This stops the conveyer belt from getting crowded with boulders and makes the refining process more efficient. With this BRM wires are removed because only it had only 1 wire responsible for toggling boulder retrieval but now since this process is automatic, we have true control over the timing of boulders spawned & don't want to leave it in the hands of players ## Changelog 🆑 qol: adds examines & screentips for crowbar, screwdriver acts to BRM & refinery machines qol: adds examines about the number of boulders stored & processed to BRM & refinery machines qol: BRM now has its lights turn on/off depending on wether automatic boulder retrieval is on/off for visual clarity along with examines qol: refinery machines now display ballon alerts & plays sounds more frequently when processing boulders for better feedback fix: vents now spawn boulders of all sizes & not just small ones fix: expanded gulag boulders now have correct materials in them. fix: manual tapping of vents now has a cooldown applied as intended. fix: BRM has its light turned off when area power goes off fix: boulders ejected from refineries by hand no longer teleport all over the place occasionally. fix: refineries no longer eject boulders with 0 durability fix: Boulders & refineries no longer pile up on top of BRM's & refineries in long rounds. Their locs have to be clear of boulders before they spit out more boulders to prevent a large pile of boulders from causing lag fix: sheets ejected from lathes no longer get rejected when inserted back which could happen at random, no more boulders with empty materials code: splits boulder types into its own file along with other items code: merges & autodocs procs, vars related to boulders refactor: repaths BRM to a simpler subtype refactor: BRM now spawns boulders in batches(batch size can be increased with upgraded parts) with a boulder appearing every second. After a batch is processed a 3 second cooldown is applied to stop the conveyer belt from clogging up, With this BRM wires are removed as there is no need for timers to be attached to wires which intefers without our batch processing timings. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
ed31397cc4 |
Fixes ore vents spawning without ores on icebox, sets up map specific ore configurations (#81103)
## About The Pull Request In short, we used a static list previously within the ore_generation subsystem that held the amount of each ore that we expected a single map to uniformly need. We held this number constant, since we were spawning 15 vents per map. **Pros:** This worked flawlessly for Lavaland since 15 vents on a single Z level makes it pretty densely packed map with a good amount of map-based ore spawns, and it worked consistently. **Cons:** 15 vents did not work well on Icebox however, even when split so that the majority of the ores were spawning on the lower levels, players did not feel like icebox spawned nearly enough ores and reported the map spawning empty. **Result:** As a result, we adjusted the ratio, so that we spawned vastly more ores on the lower levels, now up to 4 vents on the upper level, and 21 vents on the lower level. However, as we were still using the ore distribution list based on lavaland, icebox vents were quickly running out of ores to distribute between them, resulting in empty vents -> which produced empty boulders -> which not only don't really let you process them properly, but also just result in a metric ton of runtimes. Icebox now has it's own list of ore distributions. These distributions are now moved to a set of global lists as opposed to being saved on the subsystem as a static list, which will make going and setting up new ore distribution lists very very easy. Additionally, we've moved the setting and getting of those ore_distributions over to the seedRuins proc, so that we're actually setting the list of ores right before we actually place them to make sure that the order that it's set is roughly as it's needed, while still setting the list at the same time the map-appropriate ruin placements are dropped in. **Plus some misc cleanup fixes:** `var/list/ore_vent_sizes` in SSore_generation wasn't being treated as a similar budget list as `ore_vent_minerals`, since it `pick()`s off it's own static size list. Which is honestly fine for this five seconds, I can handle that later while we make sure the rest of the code code is stable. In the meantime, I've just tweak it so that it's easy to see at a glance how many of each random vent has spawned into the map. Tweaked the description to not include anything about chemical processing, as I'm planning on hitting on that in a part 2 PR that I'll be picking back up after the freeze. ## Why It's Good For The Game Cleans up the code a bit, but primarily fixes ores not spawning on icebox as they should. Should fix #81058. Improves description to not mention mechanics that aren't in game. Also, cleans up a piece of code that currently isn't serving much of a purpose. ## Changelog 🆑 fix: Icebox should have it's ore distribution and it's ore vents fixed, so that vents should now produce ore. spellcheck: Boulder processing machines now don't mention things they don't do. /🆑 |
||
|
|
907e0d8f21 |
Fix Ore Vent's well being on improper plane (#81181)
## About The Pull Request Removed explicit plane set to `GAME_PLANE` and `ABOVE_MOB_LAYER` thus fixing issue when well was drawn on improper plane, possibly the ghost one. ## Why It's Good For The Game This PR fixes a visual bug.  ## Changelog 🆑 fix: fixed ore vent's well being drawn over ash storm. /🆑 |
||
|
|
5a67aa0411 |
Fixes ore vent descriptions stacking, fixes potential exploits with ore vent scanning (#81174)
## About The Pull Request - Scanning ore vents did a do_after to do the actual scan, but if the do_after failed, it didn't cancel the scan proc, and rewarded you points anyways. So you could just keep cancelling the scan for free points? - Also there was nothing preventing someone from stacking scans on the same vent - Also, when generating the ore description, always override existing descriptions. Given `generate_description` can be called multiple times, prevents it from stacking on itself. ## Changelog 🆑 Melbert fix: Fixed ore vent descriptions looking weird sometimes fix: Fixed being able to scan an ore vent multiple times at once fix: Fixed gaining scan points from scannning an ore vent without finishing the scan /🆑 |
||
|
|
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> |