mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 16:44:43 +01:00
master
53 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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. /🆑 |
||
|
|
a5c9662caa |
You can draw faces on bots (#95258)
## About The Pull Request Adds the ability to use a pen or crayon or spraycan to draw a face or eyes onto certain bots This allows people who miss the pareidolia of the old medkit sprite to fix it themselves You can clean it off again using most cleaning products, if you disagree <img width="649" height="220" alt="image" src="https://github.com/user-attachments/assets/de4869b8-9ac1-4c79-8890-bd95fd4fcaa1" /> I think from looking at this screenshot apparently I haven't enabled pixel perfect 2x on my laptop for which i should be executed, sorry I didn't add any for ones not pictured here because I couldn't think of a good way to draw them but it's simple enough to expand. The face will be coloured with whatever ink you used to draw it, I was just lazy and only used a regular pen in this picture How are all of the non-white drawing implements adding that white circle? Don't worry about it This comes in the form of a component so if you want to make other things easily graffitable then you can do that I ironically called it the defaceable component even though it's used to add faces ## Why It's Good For The Game It seems like something people have been wanting and it seemed like a cute idea ## Changelog 🆑 add: You can draw faces onto some bots using a pen, crayon, or spraycan /🆑 |
||
|
|
f58b8511f0 |
Refactors effect_system (#94999)
## About The Pull Request This PR refactors ``effect_system``s to be a bit easier to use by getting rid of ``set_up``, allowing ``attach()`` to be chained into ``start()`` and refactoring most direct system usages in our code to use helper procs. ``set_up`` was unnecessary and only existed to allow ``New``'s behavior to be fully overriden, which is not required if we split sparks/lightning/steam into a new ``/datum/effect_system/basic`` subtype which houses the effect spreading behavior. This allows us to roll all logic from ``set_up`` into ``New`` and cut down on code complexity. Chaining setup as ``system.attach(src).start()`` also helps a bit in case no helper method exists I've added ``do_chem_smoke`` and ``do_foam`` helpers, which respectively allow chemical smoke or foam to be spawned easily without having to manually create effect datums and reagent holders. Also turns out we've had some nonfunctional effect systems which either never set themselves up, or never started, so I fixed those while I was at it (mostly by moving them to aforementioned helper procs) ## Why It's Good For The Game Cleaner code, makes it significantly easier for users to work with. Also most of our effect system usage was copypasta which was passing booleans as numbers, while perfectly fine helper procs existed in our code. ## Changelog 🆑 refactor: Refactored sparks, foam, smoke, and other miscellaneous effect systems. refactor: Vapes now have consistent rigging with cigs using the new system. fix: Fixed some effects never working. /🆑 |
||
|
|
68153c2333 | Refactors faction lists to use getters and setters and be cached (#94490) | ||
|
|
aedc5bae7a |
allowed is now signals based instead of hardcoded slots (#94871)
## About The Pull Request ID cards/MMI mech access/simple mob access/pAIs now use signals instead of checking specific slots with mob checks. We do this through mob's ``get_access`` proc that collects all access a mob has with a collect_access signal. ## Why It's Good For The Game It looks cleaner and we no longer individually check `check_access` for every single item that may have access. It's cleaner to put it all together and check in one go with all the access we've got. This also makes it easier to add items that hold access that aren't necessarily IDs but you want to be able to open stuff with. ## Changelog 🆑 refactor: ID checking for access has been reworked, please make a bug report if anything that's supposed to grant access is not working. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
31d4eb04f1 |
Fix Stoat Steal Behaviour (and some other AI stuff hopefully) (#94153)
## About The Pull Request Two main things. Multiple instances of use of a proc in AI controllers seemingly assuming the default behaviour will work for them, but what ends up happening is `search_tactic` gets redefined and redefined with no defaut search range parameter, so nothing ends up passed to the `search_tactic` child procs, so they all call `oview` with `null` and this... somehow doesn't runtime? Has behaviour that works some of the time??? I hate this fucking language. Anyway. Stoat steal items behaviour was completely broken and apparently was not tested once since it was merged in. I've made the corrections I can, but I haven't figured out why stoat AI never enters idle, so we have a behaviour that leads to the stoat running up to an item, grabbing it, and then just staying there, unmoving. I've sunk too many hours into this, I'm just going to call it fixed and let someone else figure out what exciting additions there need to be to a behaviour that was never functional in the first place. ## Why It's Good For The Game i don't know man i just want the pain to stop okay, generally speaking, when people write AI behaviours, they want those AI behaviours to do something and not just silently fail for six months or longer ## Changelog 🆑 fix: Stoats have a chance to try and grab items like they always should have. /🆑 |
||
|
|
7a3ad79506 |
All camelCase (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use snake_case. UNDERSCORES RULE! (#94111)
## About The Pull Request It's just a partial cleanup of anti-[STYLE](https://github.com/tgstation/tgstation/blob/master/.github/guides/STYLE.md) code from /tg/'s ancient history. I compiled & tested with my helpful assistant and damage is still working. <img width="1920" height="1040" alt="image" src="https://github.com/user-attachments/assets/26dabc17-088f-4008-b299-3ff4c27142c3" /> I'll upload the .cs script I used to do it shortly. ## Why It's Good For The Game Just minor code cleanup. Script used is located at https://metek.tech/camelTo-Snake.7z EDIT 11/23/25: Updated the script to use multithreading and sequential scan so it works a hell of a lot faster ``` /* // Copyright 2025 Joshua 'Joan Metekillot' Kidder This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. // */ using System.Text.RegularExpressions; class Program { static async Task Main(string[] args) { var readFile = new FileStreamOptions { Access = FileAccess.Read, Share = FileShare.ReadWrite, Options = FileOptions.Asynchronous | FileOptions.SequentialScan }; FileStreamOptions writeFile = new FileStreamOptions { Share = FileShare.ReadWrite, Access = FileAccess.ReadWrite, Mode = FileMode.Truncate, Options = FileOptions.Asynchronous }; RegexOptions regexOptions = RegexOptions.Multiline | RegexOptions.Compiled; Dictionary<string, int> changedProcs = new(); string regexPattern = @"(?<=\P{L})([a-z]+)([A-Z]{1,2}[a-z]+)*(Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss)([A-Z]{1,2}[a-z]+)*"; Regex camelCaseProcRegex = new(regexPattern, regexOptions); string snakeify(Match matchingRegex) { var vals = matchingRegex.Groups.Cast<Group>().SelectMany(_ => _.Captures).Select(_ => _.Value).ToArray(); var newVal = string.Join("_", vals.Skip(1).ToArray()).ToLower(); string logString = $"{vals[0]} => {newVal}"; if (changedProcs.TryGetValue(logString, out int value)) { changedProcs[logString] = value + 1; } else { changedProcs.Add(logString, 1); } return newVal; } var dmFiles = Directory.EnumerateFiles(".", "*.dm", SearchOption.AllDirectories).ToAsyncEnumerable<string>(); // uses default ParallelOptions // https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.paralleloptions?view=net-10.0#main await Parallel.ForEachAsync(dmFiles, async (filePath, UnusedCancellationToken) => { var reader = new StreamReader(filePath, readFile); string oldContent = await reader.ReadToEndAsync(); string newContent = camelCaseProcRegex.Replace(oldContent, new MatchEvaluator((Func<Match, string>)snakeify)); if (oldContent != newContent) { var writer = new StreamWriter(filePath, writeFile); await writer.WriteAsync(newContent); await writer.DisposeAsync(); } reader.Dispose(); }); var logToList = changedProcs.Cast<KeyValuePair<string, int>>().ToList(); foreach (var pair in logToList) { Console.WriteLine($"{pair.Key}: {pair.Value} locations"); } } } ``` ## Changelog 🆑 Bisar code: All (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use snake_case, in-line with the STYLE guide. Underscores rule! /🆑 |
||
|
|
5eeb3e4d53 |
makes xenobio stuff use interact_with_atom (#93918)
## About The Pull Request Makes slime potions, injector, and cookies use item_interaction. generizices behavoir that potions typed under `obj/item/slimepotion/slime/` only affect slimes, moves the handful of potions that did not do that out of that type. removed a random type casting for slime cookies to verify there human before it checks for `TRAIT_AGEUSIA` as there is no reason other mobs wouldn't be able to taste it. do to the refactor you wont "bash" a lot of items if the interaction fails. ## Why It's Good For The Game <img width="439" height="68" alt="image" src="https://github.com/user-attachments/assets/f398fb6c-8cbd-4092-9a64-8cccce87f8b6" /> |
||
|
|
975d3d47ae |
Fixes certain broken icons in the outfit editor, stripping menu and multiple others (#93319)
## About The Pull Request ``icon2base64`` does not like animated icons and will display an atlas in TGUI when one is passed into it <img width="239" height="220" alt="JKneqDL9NH" src="https://github.com/user-attachments/assets/47e0ffdf-c155-4c84-94ce-c23203281012" /> Additionally added some padding between the icon and the slot name in the outfit editor because it annoyed me ## Changelog 🆑 fix: Fixed certain broken icons in the outfit editor, stripping menu and multiple others /🆑 |
||
|
|
5f3c85eee0 | Unifies mob, megafauna and boss crusher loot and achievements (#93068) | ||
|
|
d87637e6ab |
Adjusts easing in places where EASE_IN/OUT was applied without a curve. (#92976)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
5a263b77a3 |
Changes to crusher trophies and mining AOE, adds a new raptor-sourced trophy (#92241)
## About The Pull Request - Rebuke effect (from god's eye and lobstrocity claw trophy) now works on basicmobs, increasing the cooldown on their ranged attacks just like it does for simplemobs. - Bileworm spewlet trophy shots no longer hit your allied mobs, as previously this would cause you to constantly hit your own raptor/minebots/NODE drones, making it actively detrimental in some situations. Its shots now deals brute damage instead of burn, as otherwise its damage was reduced by 70% due to innate projectile resistance of lavaland mobs, making it deal measely 6 damage every 10 seconds. - MOD sphere module bombs now properly aggro lavaland mobs, as previously they only worked on simplemobs (also fixed a direct assignment to the blackboard in legionnaire spine code). - They also no longer deal damage to minebots and NODE drones. - Afterimages from the ice demon and their trophy can now be passed through, although hostile AI would attempt to avoid doing so. This way the trophy should no longer be an active detriment to players, and demons themselves should be less jank to fight. And if you're a heartless enough bastard, you can kill and butcher your raptor to get a new raptor feather crusher trophy, which allows your destabilizer shots to phase through your allied mobs similarly to passthrough mods for PKA. <img width="174" height="125" alt="Aseprite_3Olcd7oyVJ" src="https://github.com/user-attachments/assets/99d7eebb-e36d-428b-aa48-f1261a173ca1" /> ## Why It's Good For The Game These changes should make vent defense more bearable, as right now its very easy to accidentally damage and kill your own drone due to them being hit by all AOEs in miner arsenal. - Rebuke - should probably work on basicmobs as only remaining simplemobs on lavaland are megafauna - Bileworm spewlet - its a joke of a trophy at 6 damage as it has a 10 second cooldown, and it hitting your allies made vent defense much harder than it should've been - Sphere changes - should make bombs not kill your NODE/mining drones, aggro helps prevent cheese. - Afterimages - the trophy can end up bodyblocking you, this change should make it less of a pain in the ass to use the trophy and to fight the demons themselves. - Raptor feather - useful for vent defense when you're using minebots or have dismounted your raptor, right now its a pain for reasons mentioned above ## Changelog 🆑 add: Added a raptor feather crusher trophy which makes your crusher shots go through your allied mobs. balance: Rebuke effect from lobster claw trophy and the eye of god now applies to basicmob attacks balance: Bileworm spewlet's damage is no longer reduced by 70% when hitting lavaland fauna, and it no longer can hit allied mobs balance: Sphere MODule bombs no longer hit NODE drones and minebots balance: Ice demon/ice demon cube afterimages can now be walked through by players fix: Sphere MODule bombs now aggro basicmobs hit by their explosions /🆑 |
||
|
|
d5b113a5e2 |
[no gbp] fixes minebots crashing the server (#91746)
## About The Pull Request the element was wrongfully adding items to its list. since its meant to be a singleton, this list would get extremely large. ## Why It's Good For The Game closes #91738 ## Changelog 🆑 fix: 50 minebots no longer crash the server /🆑 |
||
|
|
e3dee6810e | Most hostile mobs can no longer be trapped by closets, chairs, and aggro grabs (#91652) | ||
|
|
b4061f1800 |
[MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
## About The Pull Request Refactors most of blood handling code untouched by #90593 and completely rewrites all blood decals, components and reagents. - Blood types now have behavioral flags which allow them to control where they leave decals/DNA/viruses. Oil no longer transfers DNA and viruses with it, while podpeople water-blood doesn't leave visible decals on turfs and items, but still can be picked up by DNA scanners. - Multiple blood types have received unique handling - liquid electricity blood now glows in the dark, oil trails are flammable and lube ones are slippery. Oil blood can be restored with fuel, lube with silicon and slime with stable plasma (as normal plasma already passively regenerates their blood), instead of everything using iron. Saline solution only supplements on iron-based blood and won't do anything to help with bloodloss for species who rely on different blood types. (Roundstart this applies only to Ethereals) - All blood logic has been moved away from the blood reagent itself into a blood element that is assigned to the blood reagent by default, and to any reagent that's drawn from a mob as their "blood" (in ``transfer_blood_to``). This means that blood you draw from lizards will be green and have lizard's blood description instead of mentioning red blood cells, Ethereal "blood" will actually contain their DNA and genes, etc. - Refactored all blood decals. Blood states are no more, everything is now handled via blood DNA. Credits to MrMelbert and Maplestation, as a significant amount of code has been taken from https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his followup PRs. Oil and xenomorph splatters are now subtypes of blood, blood drying is now animated, blood trails now curve and can be diagonal. - Rewrote bloodysoles and bloody_spreader components, credits to Melbert again for the former, while latter now makes more sense with its interactions. Bloody soles no longer share blood DNA with your hands. - Ported Melbert's bloody footprint sprites and bot-blood-spreading functionality. - Removed all species-side reagent interactions, instead they're handled by said species' livers. (This previously included exotic blood handling, thus the removal) - Slightly optimized human rendering by removing inbetween overlay holders for clothing when they're not needed. - Blood-transmitted diseases will now get added to many more decals than before. - Cleaned up and partially refactored replica pods, fixed an issue where monkeys/manipulators were unable to harvest mindless pods. - Exotic bloodtype on species now automatically assigns their blood reagent, without the need to assign them separately. - Clown mobs now bleed (with colorful reagent instead of blood during april fools), and so do vatbeasts (lizard blood) - Implemented generic procs for handling bleeding checks, all sorts of scanners now also correctly call your blood for what it is. - Podpeople's guts are now lime-green like their organs, instead of being weirdly greyish like their water-blood. (Their bleeding overlays are still grey, as they're bleeding water) - Slimepeople now can bleed. Their jelly is pale purple in color, but their wound overlays copy their body color. - Injecting/spraying/splashing/etc mob with a reagent preserves its data, so you could theoretically recycle fine wines from someone's bloodstream - Fixed burdened chaplain's sect never actually giving a blessing when applying effects, and giving a blessing when nothing can be healed. Inverted check strikes again. - Closes #91039 #### Examples A lot of blood here has dried, visually the blood colors are almost exactly the same as before either of the blood refactors.   |
||
|
|
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) /🆑 |
||
|
|
96976c0b9a |
Regal Rat cleanup & minor changes (#91012)
## About The Pull Request Since #90505 added another entry to it the Regal Rat Riot ability, which turns maintenance creatures into versions loyal to the rat, has become sort of unmanageable (and to be honest it was a bit gross to start with). Instead of having a big if/else list (which was making the same range check multiple times...) that sets stats on a bunch of mobs, I delegated it to the mobs themselves and instead of changing some stats of the existing mobs we just turn them into a new mob which can be spawned or placed separately by mappers or admins if they want. Other stuff I changed: Riot (the ability which transforms mobs into minions) no longer spawns a mouse if it fails to find anything. Instead you have a chance to fish mice out of disposals bins while digging out trash and items. Domain is now a toggle which activates itself every 6 seconds rather than a button you manually click every 6 seconds. Riot makes a visual effect when used. Rare Pepe randomisation is done via a random spawner instead of the mob modifying a bunch of its own properties in Initialise. A bunch of mobs now automatically follow you after being tamed. I wrote this assuming I was going to add it to the rioted mobs but then didn't end up doing that because you might want them to immediately attack someone. My rule of thumb is that if I think you'd want the mob to attack someone the moment it is befriended I didn't add this and if you wouldn't I did. I changed some of the regal rat minion names, and some of them can now spawn from gold slime which couldn't before. ## Why It's Good For The Game This proc sucked and now it's nicer. As for the other changes; - A tamed mob immediately following you is nice feedback and saves you a click as it's likely to be your first action. Also removes some admin panel shitcode I added. - I changed Domain to a toggle because you generally want to use it on cooldown and someone suggested it on this PR and it sounded like a good idea. - I saw someone in Discord complaining that the previous flow of recruiting rats by hitting Riot with nothing around to summon one, waiting, hitting it again to convert one rat, and waiting again was tedious and annoying which I agree with. This method improves the quality of life by separating these two actions but _also_ as a side effect reduces a regal rat's ability to secretly stockpile 50 rats in a hidden maintenance room because most disposal bins are in slightly more visible areas, they'll actually need to go and make a mess somewhere someone can see them. ## Changelog 🆑 balance: Regal Rats can now grab mice out of disposal bins, and no longer spawn them with the Riot ability. balance: The Riot ability no longer needs to be used once for each slightly different kind of mob in your radius. balance: The Regal Rat Domain ability is now toggled on and off. balance: Several kinds of mob will immediately start following you once tamed. balance: Rats, hostile frogs, and evil snails can be created via gold slime reaction. /🆑 |
||
|
|
d19b8de989 |
Most fleshy mobs are vulnerable to stamina and stuns (#90675)
## About The Pull Request This PR enables most mobs to take stamina damage, become slowed as a result of taking stamina damage. It also gives most mobs CANSTUN which not only allows them to enter stamcrit from taking stamina damage but also makes them vulnerable to mechanics like stun batons. Mobs which already took stamina damage (Spiders and Space Dragons) still work the same way. Mechanical or artificial mobs, mining mobs, simple xenomorphs, ghosts, and most kinds of mob closely associated with antagonists still don't take stamina damage. ## Why It's Good For The Game A new player armed with a disabler will probably try and use it on aggressive animals and be disappointed, but I don't think there is any _reason_ for them to be disappointed when it's already something they are doing merely to delay being attacked rather than to kill the target. It's not intuitive for these mechanics not to function against simple mobs when they do against humans, _especially_ the kinds of mobs which look like humans, and there isn't any technical reason why it _couldn't_ work against most mobs which it looks like they should work against. While this reduces the threat level of some mobs against Security players I think the greater interaction with the sandbox is beneficial. I'm hopeful it doesn't have that much effect on many of the most common places you encounter dangerous mobs like Space Ruins or Gateways as they are also places where you can't reliably recharge your energy-based stamina weapons as most that don't require energy do require getting into melee and endangering yourself. ## Changelog 🆑 balance: Most biological mobs are now slowed by taking stamina damage, and can be stunned. Mechanical mobs, mining mobs, and several other special kinds (chiefly those invoked by antagonists) are unaffected. If this seems to effect any mob it probably shouldn't, please report it as a bug. /🆑 |
||
|
|
6a34515318 |
Fix: Minebot command text for activating lights (#90799)
## About The Pull Request Due to the wrong path being specified, if you try to order the minebot to turn on its lights, it'll talk about dumping ore instead. The actual functionality is fine, but the feedback isn't. This fixes that. ## Why It's Good For The Game The current bug just makes things confusing. Fewer sources of confusion in this game is better. ## Changelog 🆑 fix: Made it so minebot commands don't talk about dumping ore when you're toggling the lights. /🆑 |
||
|
|
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. /🆑 |
||
|
|
f205e48ef5 |
[no gbp] fixes being able to tell animals to commit atrocious acts (#88754)
## About The Pull Request closes #88743 . the issue is while they'd ignore ur command since its impossible, the emote would still appear, which i now realize was a mistake ## Why It's Good For The Game fixes being able to tell animals to commit atrocious acts ## Changelog 🆑 fix: radial pet commanding emotes will now not appear if the command is impossible to execute /🆑 |
||
|
|
91719a400a |
516 Compile Compatibility (#88611)
Renames all uses of caller, as they (currently) shadow the new byond var and will in future error Ups our "wan if compiled after" experiement compile version to 516 Adds an alternate 516 unit test |
||
|
|
efe62c5a72 |
Pet Commands QOL . makes pet commands easier to use (#88495)
## About The Pull Request this PR improves the UX of pet commands a bit. i decided to expand on their radial menu. You can now hold shift and hover over your pet to display a menu of commands which you can choose from. alternatively, you can still type out commands in chat https://github.com/user-attachments/assets/9da7f7ea-58a3-4fd6-b040-45cc05cda51d ## Why It's Good For The Game makes pet commands easier to give out when you're managing more than 1 pet. also fixes the fishing command not working. ## Changelog 🆑 qol: holding shift and hovering over your pet will display a list of commands you can click from fix: fixes the fishing pet command not working /🆑 |
||
|
|
dd37b953fe |
Melee cooldown on actions is defined as 0, not overriden everywhere (#87599)
## About The Pull Request Actions have null melee cooldown by default. The code checks if so, and gives the action the same melee cd as the action's cd. This means you can't take any melee action for that duration. Since this is dumb as shit, 95% of actions in the game override it. But some don't, which leads to all sorts of 'janky' feeling combat, most noticeably being that of venus man eaters, which literally cannot attack until their tangle action is off cooldown. There's some others like it - legion skull throws for example. This simply makes it so that the cooldown is, by default, zero, and can be overriden to null on types which lets it copy the cooldown, if the coder so chooses. As a necessary byproduct this affects... pretty much every action in the game. I found-and-replaced all usages of melee cd = 0 because that's now redundant, but it's not so easy to check for every action which doesn't override the value - this means this will likely have some side-effects on some abilities that aren't meant to be immediately followed up with a melee attack, but I couldn't find any. i cant believe there were 3 gorillion actions overridding melee cd to zero thats embarrassing. ## Why It's Good For The Game if every subtype overrides a timer variable to the same value then just maybe the value should be default. Fixes ALL action melee jank. Perhaps too well! ## Changelog 🆑 refactor: Actions will no longer by default apply a melee cooldown equal to action cooldown. fix: Fixed various abilities causing melee jank, most noticeably venus man eaters /🆑 --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
2438ff0213 |
removes alot of click-related self registering signals on basic mobs (#87220)
## About The Pull Request there was no real benefit of using signals over proc overrides for many of these cases. ## Why It's Good For The Game registering signals on self when we can just override the proc is un-necessary, im responsible for most of these so im just confronting the sins of my past ## Changelog 🆑 /🆑 |
||
|
|
6897f33767 |
AI controllers interactions refactor (#86492)
## About The Pull Request refactors all behaviors to work through clicking. also removes some now redundant behaviors. in the future ill try to generalize more of these behaviors ## Why It's Good For The Game makes AI controllers work through clicks which may help with swing combat implementation ## Changelog 🆑 refactor: basic mob AI interactions has been refactored. please report any bugs /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
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 /🆑 |
||
|
|
8486f2f7e2 |
Storage / table interactions at the bottom of the interaction chain (#85512)
Because the wings were in fact made of wax ## About The Pull Request Storage goes to the very bottom of the interaction chain, hardcoded in on `/atom`. This is not preferred, obviously, but it ends up being a lot less snowflaking overall. Tables also go at the very bottom by extending `base_item_interaction`. Fixes #83742 Fixes #84434 Fixes #83982 Fixes #85516 Fixes #84990 Fixes #84890 Closes #85036 Closes #84025 (RMB places it on the table.) Closes #86616 Other changes: Refactored pod storage to be less jank. Patches some exploits around it. ## Why It's Good For The Game Should make a lot more interactions a lot more reliable... hopefully ## Changelog 🆑 Melbert refactor: Storage and Tables are now a lower priority action, meaning some uses of items on storage should work... better, now. Here's hoping at least, report any oddities. refactor: Note: For an overwhelming majority of items, **combat mode** will attempt to attack/insert into the target, while **non-combat-mode** will attempt to use on a target. This means screwdrivering or emagging a MODsuit must be done on non-combat-mode, as combat mode will simply put the screwdriver or emag into its storage. Same applies to tables, though when in doubt, RMB may help (for things which are also weapons, like mops). refactor: Refactored escape pod storage, now they actually properly show as unlocked on red alert and above. /🆑 |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
fec946e9c0 |
/Icon/ Folder cleansing crusade part, I think 4; post-wallening clean-up. (#85823)
Hello everybuddy, your number three rated coder-failure here to clean up some mess. This PR accomplishes some of the more major structural clean up changes I wanted to do with /obj/ folder, but decided to wait on until wallening gets merged, and so, time has come. Several things to still be done, although I know these cleaning PR's are quite a load, so will wait for this one to get done with first. ## Why It's Good For The Game Saner spriters, better sprites, less annoyance. Also deleted a whole load of redundancy this time around, a lot of sprites which existed simultaniously in two places now got exit their quantum superposition. |
||
|
|
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> |
||
|
|
bab0287356 |
Mining headset upgrade - Callouts and volume boosters (#85008)
## About The Pull Request  Shift + middle clicking while wearing a mining headset will open a callout radial, after moving your mouse over one of the options a callout emote will appear where you pointed (No need to click on the radial button). Callouts have a 3 second cooldown to prevent spam and glow in the dark due to how dark lavaland is (normal point emotes do not) There are 6 options: pointing, danger, attack, mine, defend and reposition. Your callouts are colored in your runechat color. This is done via a component so later if needed it could be added to other headsets/mobs/items. Callouts also can initiate basic mob orders, being a better way to command your minebots in combat. Additionally, they also boost your speech back to normal levels in low-pressure environments, ensuring that your runechat is still nice and readable. ## Why It's Good For The Game This would make coop mining much more enjoyable, as stopping to type mid-fight is more often than not a death sentence on lavaland. With arcmining's vents cooperating is actually beneficial, and I feel like we should incentivize miners to do it more often by providing them with tools for it. ## Changelog 🆑 add: Mining headsets now allow you to make callouts via pointing. You can use them to communicate with fellow miners or order your army of bots and raptors! add: Mining headsets keep your voice loud and clear in low-pressure environments (not vacuum!) /🆑 |
||
|
|
3093328757 |
Minebots will no longer attempt to stop you from committing suicide by killing you (#83919)
## About The Pull Request The `/datum/pet_command/protect_owner` behaviour did not have any validation for if the person who attacked you was yourself. The three mobs which used this behaviour would sometimes be capable of seeing you accidentally slap yourself with a burrito and decide that this meant that you needed to be protected from this hideous and violent aggressor (yourself), and would then start trying to kill you. If you had multiple minebots they would then start attacking each other in a fit of jealous and protective rage, which I think was quite funny but isn't supposed to be how the game works. |
||
|
|
ff6b41aa07 |
Afterattack is dead, long live Afterattack (#83818)
## About The Pull Request - Afterattack is a very simple proc now: All it does is this, and all it's used for is for having a convenient place to put effects an item does after a successful attack (IE, the attack was not blocked)  - An overwhelming majority of afterattack implementations have been moved to `interact_with_atom` or the new `ranged_interact_with_atom` I have manually tested many of the refactored procs but there was 200+ so it's kinda hard ## Why It's Good For The Game Afterattack is one of the worst parts of the attack chain, as it simultaneously serves as a way of doing random interactions NOT AT ALL related to attacks (despite the name) while ALSO serving as the defacto way to do a ranged interaction with an item This means careless coders (most of them) may throw stuff in afterattack without realizing how wide reaching it is, which causes bugs. By making two well defined, separate procs for handing adjacent vs ranged interactions, it becomes WAY WAY WAY more easy to develop for. If you want to do something when you click on something else and you're adjacent, use `interact_with_atom` If you want to do something when you click on something else and you're not adjacent, use 'ranged_interact_with_atom` This does result in some instances of boilerplate as shown here:  But I think it's acceptable, feel free to oppose if you don't I'm sure we can think of another solution ~~Additionally it makes it easier to implement swing combat. That's a bonus I guess~~ ## Changelog 🆑 Melbert refactor: Over 200 item interactions have been refactored to use a newer, easier-to-use system. Report any oddities with using items on other objects you may see (such as surgery, reagent containers like cups and spray bottles, or construction devices), especially using something at range (such as guns or chisels) refactor: Item-On-Modsuit interactions have changed slightly. While on combat mode, you will attempt to "use" the item on the suit instead of inserting it into the suit's storage. This means being on combat mode while the suit's panel is open will block you from inserting items entirely via click (but other methods such as hotkey, clicking on the storage boxes, and mousedrop will still work). refactor: The detective's scanner will now be inserted into storage items if clicked normally, and will scan the storage item if on combat mode /🆑 |
||
|
|
bc00c6d91b |
Fixes Minebots ordered through cargo being stuck in idle mode (#83482)
## About The Pull Request - Presumably due to being spawned off-station on (I believe) the centcomm Z-level, Minebots ordered via points and that are delivered by the shuttle are stuck with their AI in the idle state. Rather than override a bunch of base-level AI code, I made clicking on them set their status to active. Right-clicking will set this without opening the bot's UI, while left-clicking will do both. Examine text now gives users a hint about this. - Removed text about feeding the mining bot ore to befriend it, as this functionality was removed in an earlier PR. ## Why It's Good For The Game Bugfix. ## Changelog 🆑 fix: Minebots purchased via mining points are no longer stuck in idle mode. Clicking on them will activate their AI. spellcheck: Removed the examine text about feeding ore to minebots; this functionality was removed already. /🆑 |
||
|
|
1e78db8471 | Refactors how basic ais do their success/failures (#82643) | ||
|
|
8e3f635b98 |
Alt click refactor (#82656)
## About The Pull Request Rewrites how alt click works. Based heavily on #82625. What a cool concept, it flows nicely with #82533. Fixes #81242 (tm bugs fixed) Fixes #82668 <details><summary>More info for devs</summary> Handy regex used for alt click s&r: `AltClick\((.*).*\)(\n\t.*\.\.\(\))?` `click_alt($1)` (yes I am aware this only copies the first arg. there are no other args!) ### Obj reskins No reason for obj reskin to check on every single alt click for every object. It applies to only a few items. - Moved to obj/item - Made into signal - Added screentips ### Ventcrawling Every single atmospherics machine checked for ventcrawling capability on alt click despite only 3 objects needing that functionality. This has been moved down to those individual items. </details> ## Why It's Good For The Game For players: - Alt clicking should work more logically, not causing double actions like eject disk and open item window - Added context menus for reskinnable items - Removed adjacency restriction on loot panel For devs: - Makes alt click interactions easier to work with, no more click chain nonsense and redundant guard clauses. - OOP hell reduced - Pascal Case reduced - Glorious snake case ## Changelog 🆑 add: The lootpanel now works at range. add: Screentips for reskinnable items. fix: Alt click interactions have been refactored, which may lead to unintentional changes to gameplay. Report any issues, please. /🆑 |
||
|
|
411d4269b3 |
[nogbp] fixes minebots bombing each other (#82655)
## About The Pull Request minebots will no longer be able to explode each other through landmines. also fixes regenerative shield overlays appearing pitch black in lower z levels. ## Why It's Good For The Game fixes #82396 ## Changelog 🆑 fix: minebots no longer bomb each other (and other miners) through landmines fix: minebot shields will no longer lose color in lower z levels /🆑 |
||
|
|
55267e1334 |
minebot buff (#82001)
## About The Pull Request this pr buffs non-sentient minebots a bit to make them more helpful with the new arcmining changes. Minebots now have a better overall AI, they will maintain distance from enemies and shoot while running. they will also plant landmines while theyre running away from enemies. these landmines are carefully programmed by the bot not to trigger when any of its miner friends step on it. u no longer need to feed minebots an ore to get them to listen to you, as they now automatically listen to any miners around. minebots can now repair damaged node drones  they also have a new autodefend feature, which makes them automatically attack any mob that attacks its miner friends or the drone. They also have some new upgrades! First is the regenerative shield, this shield allows minebots to tank a limited amount of hits before breaking. minebots will then need to wait sometime before the shield re-activates. Second is the rocket launcher remote control, this allows players to direct minebots to fire anti-fauna missiles at their target https://github.com/tgstation/tgstation/assets/138636438/3ec3605e-8e11-4a31-acaa-1382bed98294 Also minebots are now highly customizable, you can rename them, change their colors, or program their AI through their new user interface  ## Why It's Good For The Game Improves minebot AI a bit, and makes it a more viable option for mining solo players ## Changelog 🆑 balance: minebots have been buffed and have recieved new upgrades /🆑 |
||
|
|
95b7fa1fb7 |
Add a unit test to check that maploaded simple/basic mobs are in an environment they can survive in. (#82180)
## About The Pull Request I've recently noticed that the maploaded penguins from the snowdin away mission were dying from unsafe atmos/temperature. This sparked the idea of making a (focus only) unit test that would prevent this sort of issues from happening. This PR also implements the usage of the `atmos_requirements` and `body_temp_sensitive` elements for simple animals too, cutting down the copypaste. ## Why It's Good For The Game More unit tests to make sure things are done correctly. ## Changelog 🆑 fix: Made sure that mapped critters (i.e. penguins on the snow cabin away mission) can survive in the environment they're spawned in. /🆑 |
||
|
|
7e907771fb |
Deathmatch modifiers (#81673)
## About The Pull Request This PR adds the base to simple modifiers that the host can select to make the minigame ~~worse~~ more entertaining for everyone. Here's the screenshot of the UI (without a few modifiers I added later):  ## Why It's Good For The Game I've seen this minigame is frankly popular lately, so I thought I could contribute to it. ## Changelog 🆑 add: Added 20+ modifiers to the deathmatch minigame, which can be enabled by the host. /🆑 |
||
|
|
ef714c1c34 |
Overlay Lighting Color/Intensity Pass (#81425)
## About The Pull Request I was looking at screenshots of the game and realized we had a lot of light sources that were really... flat. Medium intensity, not colored at all, cringe. So I went over all the uses of overlay styled lighting (since I've done matrix lighting already) and gave them more unique features. Colors that match the sprite they're used with, intensity to produce vibes, that sort of thing. It's kinda impossible to go one by one cause there's a LOT. I may have gone a bit overboard with a few, I'm messing around with some things like giving bots colors based off their department, etc. We'll see how this all turns out. Oh also I tweaked how the cone of overlay lighting is drawn. It seemed a bit too present to me so I dropped the alpha down from like 200 to 120 at max (so it's roughly half of the mask's alpha so it's less overwhelming ## Why It's Good For The Game Lighting should be impactful, subtle and colorful <details> <summary> Old Lights </summary>           </details> <details> <summary> New Lights </summary>           </details> ## Changelog 🆑 add: Tweaked the saturation, color and intensity of a bunch of lights /🆑 |
||
|
|
70651816c2 |
Fixes complex lights not handling moving well, renames lighting defines (#81423)
## About The Pull Request [Fixes static lights not moving](https://github.com/tgstation/tgstation/commit/ffef43c05a55dae414ef94558ecf9b9df709ded7) Worked fine when the owner moved, but if the owner was inside something else, it would try and trigger an update on the PARENT's lights, which are obviously not us. [Renames MOVABLE_LIGHT and STATIC_LIGHT to better describe what they do](https://github.com/tgstation/tgstation/commit/de73a63bd4d97783c69c95370726d1c253ffb8fe) People keep trying to change the lighting system of lamps and it makes me mad. I choose OVERLAY_LIGHT and COMPLEX_LIGHT here, I couldn't figure out a better name for turf matrix lighting. Suggestions welcome ## Why It's Good For The Game Closes #80005 Hopefully improves understanding of lighting at a glance ## Changelog 🆑 fix: Fixes fancy lights not updating their source location when picked up and moved /🆑 |
||
|
|
dc3b21ed6d |
fixes touching minebots not changing combat mode (#80789)
## About The Pull Request uhh touch with empty hand and off combat mode and they change combat mode now ## Why It's Good For The Game fixes #80584 ## Changelog 🆑 fix: you can use your hand to make minebots go into combat mode again /🆑 |
||
|
|
71a1fee2f1 |
Explodes device.dmi (#80025)
## About The Pull Request I woke up today and thought 'what would be easy thing to do today so I can say I've done something?'. Then I remembered I saw several gangtool usages the time I split radio up, and I could remedy those. 7 hours later, device.dmi is split in a folder of its own, and I've also given unique sprites to door remotes and landing desginators. ## Why It's Good For The Game The device.dmi was kind of a mess. ## Changelog 🆑 /🆑 |
||
|
|
f4535255c0 |
Nukes radio.dmi, adds inhands for somewhat relevant items. (#79792)
## About The Pull Request Third /icon/ cleansing splinter 1. Comments on commits say all it does pretty much.  ## Why It's Good For The Game Inhand for walkietalkie was requested in the project, gets rid of some usecases of old 'gangtool', headset splitoff requested by Fazzie. Inhands reflecting the items they are supposed to represent is nice. ## Changelog 🆑 image: Following now have unique item sprites: syndicate war declaration radio, curator and chief beacon's, chaplain beacon. image: Following now have unique inhand sprites: radio, export scanner, walkie-talkie, syndicate war declaration radio, curator and chief beacon's, chaplain beacon. /🆑 |
||
|
|
9696dd1a1d |
Targeting Datums Renamed (and global) (#79513)
## About The Pull Request [Implements the backend required to make targeting datums global](https://github.com/tgstation/tgstation/commit/6901ead12e419530b7f646ea21094d4432d7385e) It's inconsistent with the rest of basic ai for these to have a high degree of state, plus like, such a waste yaknow? [Implements GET_TARGETING_STRATEGY](https://github.com/tgstation/tgstation/commit/d79c29134d03424a9f8bacd64c08cb41775fe8c0) Regexes used: new.*(/datum/targetting_datum[^,(]*)\(*\)* -> GET_TARGETING_STRATEGY($1) Renamed all instances of targetting to targeting (also targetting datum -> targeting strategy) I've used GET_TARGETING_STRATEGY at the source where the keys are actually used, rather then in the listing. This works out just fine. ## Why It's Good For The Game Not a misspelled name through the whole codebase, very slightly less memory load for basically no downside (slight cpu cost maybe but not a significant one. --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
e03822fe1d |
Standardizes Adding Datum Actions into a proc/define (Bonus AI Support) (Bonus Useless Code Cleanup) (#79389)
## About The Pull Request The way we add multiple actions has been very unstandardized, with several implementations of this code doing certain things wrongly (i.e. not nullchecking `ai_controller`), so let's do something in the vein of #74037 and just make one nice big ol' proc that catches a lot of these cases. There are still a few things that simply can't be done here, but this gets the most generic "give my mob some actions and also maybe tell the AI about it" stuff done. This is only useful in cases where we don't ever need to reference the ability ever again when it's added. In an ideal world we would never need to reference the ability again and it would all be self-contained, but this is not an ideal world. However, a lot of the latticework has been built around certain implementations of this behavior making refactoring it just a bit easier. I also did a lot of auditing on `Destroy()` stuff, because `/datum/action`s listen to signals when their parent is `qdel`ing, so we don't need to neither hold nor clear references on our mob's `Destroy()`. This was all cleaned up now because even if we couldn't use `grant_multiple_actions()` (the new proc I add in this PR), it's just not useful at all and will further hinder efforts to implement this new proc. Also also, I noticed in some places (such as megafauna) that we were initializing a lot of datum actions _in nullspace_. We didn't pass the `src` argument to `New()`. I quickly fixed that, as well as got rid of the useless types we had going on. Also also also, I added a define macro to handle some of the cases that melbert was speaking about in his review down below. All you need to do is invoke the define on the typepath, and you should be good to go from there. There's probably a better way to do it, lmk though. we do the whole `do while` thing in order to prevent code leakages. ## Why It's Good For The Game * Very easy to change the implementation. In case we need to do something different in how we add actions or anything like that, we can simply just edit instances where this proc is located. * Standardizes addition behavior. There's a lot of cases like the aforementioned not-null-checking `ai_controller` that we really need to look out for, so having it all in one accessible proc ensures standard behavior. * Reduces copy-pasta. A lot of mobs had their own individual implementation of this, so let's just clean up all those lines of code. ## Changelog 🆑 refactor: The way mobs get specialized actions (like revenants shocking lights or regal rats summoning rats to their side when you slap them) have been modified, please report any bugs. /🆑 This doesn't touch the following case FTR: * Instances where we need to do work on the `/datum/action` after we `Grant()` it, like if we were to edit some variable on the action or if we need to call procs on said action. I don't like how the current code is so reliant on storing a variable to it, but that's a windmill to attack another time. |
||
|
|
370a38165e |
new syndicate item - bee smoker (#78988)
## About The Pull Request this adds a new item for traitor botanists they can buy for 4 tc. it releases smoke which hypnotizes bees to follow ur every command, it can be used on a single bee or it can be used on a hive to hypnotize all the bees who live there. u can command the bees to enter or exit their beehive, and u can also command them to spiral around u where they will follow u and swirl around u to confuse whichever opponent u are fighting, and u can also command them to attack people. the bee smoker comes with some fuel but u can recharge it by putting cannabis into it. the stronger the weed the more fuel it will provide https://github.com/tgstation/tgstation/assets/138636438/18c9a350-8e24-4c49-abfa-dffb7622502f ## Why It's Good For The Game adds a traitor item which gives a new gameplay alternative for botanist and pacifist players. also i noticed the pet targetting datum was using some copy paste code so i made it a subtpye of the basic targetting datum ## Changelog 🆑 add: added a new syndicate item - the bee smoker /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
0f5d14e68b |
Mook village and basic mook refactor (#78789)
## About The Pull Request refactors mooks into basic mooks and re-adds them to the game ## Why It's Good For The Game this refactors mooks into basic mobs and re adds them to the game. mooks are now a part of lavaland. they come as a part of a random ruin which consist of a entire village of friendly mooks. Mooks will aid players but they will still attack ashwalkers because of some troubled history between them.  mooks are a very diseased specie. nanotrasen discovered a small tribe of mooks and cut a deal with their tribal chief to aid ss13 miners in exchange for medical supplies. tribal chief in his decked out home  male mooks go out and mine and haul ore off back to their village. they will deposit ores into a stand which is managed by another mook. they will all return to their village to rest once a lavastorm comes.  players can use this stand to withdraw any ore they like  female mooks will stay behind in the village to guard it from ashwalkers. they will also heal male mooks when they come back from a long day of work. the tribal chief is a bum and chooses not to go out and mine. he will stay behind in the village and issue commands to his people rather than work the village also has its own bard! he follows player visitors and plays nice music for them while they are in the village (although he is not very talented).  he is still a warrior at heart tho so he will be smashing his guitar over ashwalker skull  ## Changelog 🆑 refactor: mooks are now basic mobs. please report any bugs feature: added mook village to lavaland ruins! /🆑 |