mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-30 11:32:20 +00:00
ba5c112a86bb2845df830df81d59cd54ca8ac99f
76 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
2b60c77e55 |
Yet another mirror batch (#27314)
* A skub-related station trait. Reduced weight of annoyingly frequent neutral traits. (#81388) ## About The Pull Request This PR introduces a new station trait that lets people choose if they want to be pro-skub or anti-skub (or neither, really). It works the same lobby buttons that job-related station traits also use. Depending on whether you chose to be pro or anti skub, you'll spawn in with a special box that contains the (bulky) skub and a pro-skub shirt, or an anti-skub shirt. EDIT: Both also receive a number of stickers to propagate their causes. Kudos to @Fikou for coding the lobby buttons to be accessible by any station trait rather than only job-related ones when you made the Cargorilla station trait. Another thing this PR also halves the exaggerated weight of low-cost traits such as scarves, wallets and glitched PDAs, which I clearly underestimated. ## Why It's Good For The Game We've learned that low-cost, high weight traits are a bit of a design mistake, because they tend to tip the scales toward themselves over and over and over, leveling the diverseness of the feature and therefore making it shallow and boring. Beside, I've been thinking of the popular [skub comic strip](https://pbfcomics.com/comics/skub/) lately. ## Changelog 🆑 add: Added a Skub-related station trait. You can now choose if you want to be pro-skub or anti-skub, complete of shirt and stickers. Please don't shank each other over it. balance: Halved the weight of station traits such as scarves, wallets and glitched PDAs. /🆑 * Fix some slime species subtypes not having burn resistance (#82164) ## About The Pull Request All slime species limb subtypes now inherent from the parent `/jelly` subtype, giving them all their proper burn resistance. ## Changelog 🆑 Melbert fix: Slimepeople and Luminescents are now 50% burn resistant like Stargazers /🆑 * There we go * FIX: Makes Hatsune mi-go a (friendly) gold slime mob (#82251) ## About The Pull Request: The hatsune mi-go is now a friendly gold slime mob. This means it won't try and kill you. It also now doesn't make your ears hurt, and drops a keyboard synth on death (you monster.)  ## Why It's Good For The Game So in making my resprited mi-go and subsequent speedmerge, I failed to realize that there are only 10 possible migo spawnpoints - 5 in snowdin gateway, 3 on ceres whiteship, and 2 on kilo whiteship. This means at most eight can exist on anyround, with a decent likelyhood of 0. This, combined with the fact the hatsune migo is banned from spawning outside of roundstart locations, along with the fact people seem to love the thing, made it feel _too_ rare, even for a shiny mob. You still have to roll the random odds with the life chem or friendly gold slime pools, but you should actually see them outside of two mutually exclusive space ruins and a gateway now. Also, they don't try and kill you now, because it would have been wrong to add a hostile creature to the friendly pool. 🆑 fix: Hatsune mi-go now is a friendly gold slime mob, and doesn't hurt your ears. add: Hatsune mi-go drops a keyboard synth on death (you monster.) /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> * [THE QUIRKENING] Adds customization options to Organ Prosthetic, Junkie, Smoker, and Alcoholic! (#82051) ## About The Pull Request Lets people pick: - The shitty organ they spawn with (still has the restrictions of not being possible to get heart when you are a plasmamen, for example) - Their favorite alcohol to blackout with - Their favorite brand of cigs - Their favorite brand of drugs! A lot of the code was taken from a downstream, made by @Floofies, i already had my own implementation but it was buggy and not nearly as clean, then i was made aware of theirs. ## Why It's Good For The Game Character Customization is good and fun and lets people have more choice in their roleplay. ## Changelog 🆑 add: Prosthetic organ users are now allowed to pick what they want to start with. add: Junkie of all kinds, including smokers and alcoholics, are also able to pick their favorite type. /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> * [NO GBP] Fixes the "Drop Pod: Syndies" deathmatch modifier. (#82216) ## About The Pull Request I've had false memories of `pick_weight` working with assoc-value-less lists. ## Why It's Good For The Game This will fix an issue with deathmatch modifiers. ## Changelog 🆑 fix: Fixed the "Drop Pod: Syndies" deathmatch modifier. /🆑 * Fix robocontrol access runtime (#82242) ## About The Pull Request  `check_access` expects an item, such as an ID card, to... check access. Not a mob. We can circumvent this entirely by using `allowed`. But this has an averse effect in that `allowed` will only check the user's ID, not the ID in the mod PC. So we need to run a separate check of `check_access` for the computer ID card. ## Changelog 🆑 Melbert fix: Robocontrol should work better. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> * Adds a photobooth (#82105) ## About The Pull Request Adds a photobooth machine to the HoP line which can be used to update your security records photo. It updates the records of the person's name, which means hiding your identity and wearing an ID will let you change other people's photos. If you aren't hiding your identity and are wearing someone else's ID, it won't update at all because it will be unable to find your record. There's 2 variants of this machine, one at the HoP line that's tied behind Law Office access (so Lawyers have an extra thing they can help out with if no one's available, but maybe it would be better behind Library access since Curators are our "photographer" role?), and the Security one that requires Security access. The Security one has a special feature that it adds a height chart behind the player.  This machine is used by either right-clicking on it or by pressing a button, so the HoP can do it remotely from their line (except on Tram where it's in the library), and after a few delays it'll update your records automatically to how you look like. Emagging the machine will remove its access restrictions but every time it updates your photos it will spam camera flashing and blind you. Sprites Open  Closed  Security version on the left, has a red tint on it  Video demonstration (old sprites): https://github.com/tgstation/tgstation/assets/53777086/a2e59f08-2d58-4f5b-b081-e137c7606d35 ## Why It's Good For The Game Current security records has no way to change your photo ID, something that was a feature before it was moved to TGUI. The only alternative is to fully delete your record and make a new one with a photo and the same name, but this shares a major issue with the HTML UI: You're immediately sold out by the fact you have a background. No matter how well you try to cover your tracks, any security officer looking at records will see you are the only photo on the manifest that has a background and even a camera in your hand, which makes it impossible to get away with it unless security essentially takes pity on you. This opens up the ability to fully mask yourself in records, finally. This is also better even for non antagonists because you can now properly update your photos to match what you look like in the event of an appearance change or even just a job change, which makes it a benefit for HoPs who likes to keep records as up-to-date as possible. ## Changelog 🆑 JohnFulpWillard, Twox add: Added a new photobooth machine to the HoP's line. fix: Things checking for access now checks your off hand, too. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> * Converts slimes to basic mobs (#82176) After months of preparation, and further months of work, I am finally done. Please bear with me, as this is a massive refactor, but I have already atomized everything I could. This is now ready for review. General - The hilbert hotel slimes are now a subtype instead of a varedit. - The `use_mob_ability` subtree now also accepts non cooldown abilities. If set_behaviours is set up properly, mobs won't keep continously triggering it as if it were a 0 second cooldown action. The alternative would have been turning the slime abilities into cooldown abilities. - Wrestling off a slime now signs up to the `COMSIG_ATOM_ATTACK_HAND` signal, instead of being part of attack_hand. - Adds datum/ai_controller/controller as a fourth, optional argument to `/datum/ai_behavior/find_hunt_target/valid_dinner()` to make it possible to access blackboard keys. - Slimes no longer attack windows if they would accidentally move into them (when the conditions are met), since random walk behaviour ignores tiles they can't go in. It was also not worth to keep. Did you know this was the sole override of `ObjBump()`? - Examine was made less snowflaky/bespoke. Also added a new element: `/datum/element/basic_health_examine`, which is a simple bespoke element that prints out a custom message based on how damaged the basic mob it is attached to is. - Slimes only perform knockdown instead of paralysis, as they can attack more often now, and paralysis is not that fun. - LAssailant has been removed due being archaic code. To befriend a slime, you have to spawn a monkey with the slime console, or feed them a sheet of plasma. Simple grabbing the monkey or stuffing them in disposals do not work anymore. Slime console spawned monkeys will have a visible status effect, with pheromones coming off them to make this clearer. Actions - Feeding, reproduction and evolution is no longer a verb. - Slime feeding is no longer an action button. You have to use right click, or as previously, mousedrop. Slimes can always unbuckle from mobs they are attached to. Hunger - Instead randomly changing the starvation and max nutrition values while growing up, evolution costs 200 nutrion. This makes the code more readable, and behaviour more predictable, while still giving the intended time between evolving and splitting. As a result, I could also turn these into defines. - Added a component that handles doing an effect over time while buckled to a mob, until the mob dies or you get unbuckled. - Slimes gained nutrition is no longer randomly multiplied by the damage config value, but rather gain nutrition equal to twice the damage dealt. You'll have to eat one monkey to evolve, just as before. - Slimes do not heal passively. They only heal from eating. It was a rather miniscule value that did not have much effect. - Slimes generate electricity from hunger threshold, instead of the random amount of hunger threshold + 100. Environment - Slimes take 15 damage from cold every second, instead of using a complex formula (that also decreased the damage up to a point?). - Slimes still heal from burn damage, but this is now set on the damage coefficient list. - Slimes instead of getting stunned by the cold, freeze in an ice cube. BZ instead of setting them unconscious, calls the stasis status effect, allowing you to safely stash your hungry slimes for later. They also no longer slow down from the cold, as they are already slowed down by the damage they get. Conversely they no longer get a speed up from a random amount of temperature. I could be convinced to readd this either as part of the basic sensitive component, or a similar one. AI - Removed the attacked_stacks system. Slimes will just perform regular retaliation if you hit them in a harmful manner. - Slimes now use the pet orders component. They will interrupt their feeding when given a command by their master. - Slimes have their own subtrees. I tried to replicate as much as I could from the old code, dividing ancient code artifacts and intentional stuff, so there might be some weirdness. - Slime speech has been almost fully reduced to basic blorbing, as you can not even understand them anymore, and most of them require the slime to loop through all of their surroundings. - Discipline does not have stacks either. Disciplined baby slimes have a chance to clear their attack and hunt blackboard keys. All slimes will stop feeding on the target otherwise. - Since discipline is not a stack, rabidity instead gets removed at a 10% chance per disciplining. - Slimes faces are a bit more randomly picked now. - We want to convert all simple animals to basic mobs. Old slime code was also very strange, and had some systems that have been replicated by components. - Slimes fully paralyzing you is not fun at all. Knockdown should give you a fighting chance when a slime would like to eat you. - Slimes slow down from the heavy damage they get from the cold, so I don't think they need extra slowdown, nor do they need to speed up from warmth, as they are already fast. - Slimes turning into an icecube instead of becoming paralyzed from the cold is more fun for the slimes, as they can break out for a few moments. It is also funny. - Slimes entering proper stasis from BZ is not just a visual indicator of a slime that is safe to approach, but also keeps the slimes's hunger value in check, allowing it to not starve while stopped. They can also look around and blorble, instead of staring at a black screen, if player controlled. - The attack_stack and discipline_stack behaviours were rather overcomplicated, and the xenobio mains I talked with didn't even know it was a thing, so I argue it needed simplification. - The bespoke friendship system of slimes was also too complicated. Slimes slowly gained levels of trust, and at certain levels commands costed friendship, and other levels, they did not. The binary friend/not friend system that everything else in the game uses is much more sensible. - Using right click for feeding is much more sensible than using an action, and then picking someone from a dropdown. - Slime speech was very soulful but not only did it loop through everything in sight, you couldn't even understand it unless you spoke slime. Maybe it can be readded later in a different form. - Slime's passive healing was miniscule, and having them rely on feeding is more interesting. also fixes #81463 🆑 refactor: Slimes are now basic mobs. Please report any strange behaviours! balance: Slimes only stun you for two seconds when they shock you, the rest of the duration is a knockdown. balance: Slimes are not stunned from the cold, but rather, get frozen in a freon icecube. BZ also puts them in complete stasis, instead of making them unconscious. Their speed is likewise unchanged by temperatures. balance: Slimes do not passively heal, they instead rely on feeding. fix: Slimes can use the buckling screen alert to unbuckle and stop feeding, along with clicking on the mob they are riding /🆑 * Oh, right. * Fixes AI verb Jump To Network (#70016) * check for camera loc to not be a silicon * check for z=0 instead * Update code/modules/mob/living/silicon/ai/ai.dm Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com> * evil touch * redundancy Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com> * Removes camera assembly structures (#81656) Removes the camera assembly structure middleman between the camera wallframe and camera machine. All its behavior has been instead moved to the camera, and I've tried to keep as much of the behavior the same as before. This also fixes the issue that camera assemblies had where, upon the construction being finished, it would move itself into the newly finished camera machine, therefore taking itself off a wall, therefore deconstructing itself. This resulted in 2 piece of iron being in each camera machine (except roundstart ones), and because camera machines rely on the assembly inside of them for upgrades and such, upgrading didn't work at all. I've also made camera nets use defines (not in map) so it's easier to find a list of them all, and tried to add autodoc comments to nearly every var in camera code. Removes copy paste and spaghetti code between structure and machine camera, thus making it easier to work around with. Closes https://github.com/tgstation/tgstation/issues/79019 🆑 fix: Cameras built in-round can be upgraded again. fix: Deconstructing cameras now more consistently return to you the upgrades inside of the camera. fix: RD's telescreen can now properly see Ordnance cameras again. fix: [Deltastation] Library art gallery no longer has an invisible camera. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> * [MDB Ignore] Combines Cargobus consoles with Dept. Order Consoles, freeing all departments of 1 whole tile of space (#82210) ## About The Pull Request - Departmental orders are now an NTOS app - To download, they require `ACCESS_COMMAND`. - To use, they require one access from the department. - This means you cannot order things from not-your-department unless you have an ID. - When newly downloading the app, it will prompt a head of staff to insert an ID, to determine which department to be linked to. - Changes chat room overlay from the kind that AI uploads use to a new icon. - Minor refactors to department order in general.   ## Why It's Good For The Game These two computers are surprising waste spacers for two things which are tied together. So why not combine them? The lesser used cargobus chat is still there, and departmental orders are front and center. This gives mappers a ton more leeway when mapping departments out and is overall less clutter. ## Changelog 🆑 Melbert qol: Cargobus chat console and Departmental Order console are now combined into one. qol: Mod PCs active on the "chat client" apps no longer look like AI uploads (and now have their own sprite) refactor: Departmental order consoles were refactored a bit, report any oddities. /🆑 * This should cut it. * Was it really just skub? * [No GBP] Fixes slow slime feed (#82284) ## About The Pull Request Slimes were supposed to gain the same amount of nutrition as the damage they dealt while feeding. However, I have accidentally multiplied this again by `seconds_between_ticks` a second time. This meant that locally slimes fed normally, but on the server they got about the third nutrition they were supposed to, probably due to having more ticks per second then my machine. This PR fixes that. Also raised the nutrition gained by slimes by 20%, after careful testing, one monkey wasn't always enough. ## Why It's Good For The Game Fixes #82283 ## Changelog 🆑 fix: Slimes now feed faster, and should only need one monkey to reach their next lifestage. /🆑 * [No GBP] Fixes a slime speed config and ai controller null error in slime nutrition handling (#82330) ## About The Pull Request Someone has linked the runtimes logs of round 226376 to show off a runtime, and I took a look, and found some unrelated runtimes in slime code. - The config file for slime slowdown was still using the simple_animal path. This has been fixed. - Somehow, a grey slime has lost its AI controller, and when it got hungry, it runtimed. For now, a coalesce operator has been put in place. Later, an investigation is needed to figure out where did its AI controller go. ## Why It's Good For The Game Runtimes bad. ## Changelog 🆑 fix: Slime properly load their slowdown values from the config files. fix: Slimes who lose their AI controller will no longer runtime when they get hungry. /🆑 * [No GBP] Slime stasis fixes (#82304) ## About The Pull Request `handle_environment` is never called when the target was in stasis, so slimes stayed in stasis forever. This PR fixes that, albeit in an ugly way. It also makes slimes actually not get hungry while in stasis. ## Why It's Good For The Game Fixes #82300 I also claimed slimes can be safely kept in stasis, but I didn't actually put a stasis check before handle_nutrition. This is fixed now. ## Changelog 🆑 fix: Slimes stop being in stasis when taken out of a BZ filled environment fix: Slimes no longer become hungry while in stasis /🆑 * Add a unit test to check that maploaded simple/basic mobs are in an environment they can survive in. (#82180) 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. More unit tests to make sure things are done correctly. 🆑 fix: Made sure that mapped critters (i.e. penguins on the snow cabin away mission) can survive in the environment they're spawned in. /🆑 * This all is going to suck. * A step further * Is this hell over? * I hope it is. * Autosort I suppose * This should cut it for VoidRaptor * And Blueshift * Revert "Autosort I suppose" This reverts commit 9100de67c30514fc25db3ba29df81d1b0ac54e24. * Dear god, the chicken. * I fucking hate mapping * fixes gas analyzers (#82278) ## About The Pull Request #82180 accidentally messed up air analyzers being able to read or send readouts to the chat. ## Why It's Good For The Game air analyzer good ## Changelog 🆑 fix: air analyzers work again /🆑 * [NO GBP]Grind & juice fixes (#82272) - Fixes #82266. Anything that has reagents can be either grinded or juiced - If something doesn't have reagents but has grind results it can still be grinded but not juiced 🆑 fix: anything that has reagents can be either grinded or juiced fix: stuff that does not have reagents but has grind results can still be grinded but not juiced /🆑 * Birdshot Engineering Retrofitting (#81840) Warning: Nanotrasen Confidential Proprietary Information (NCPI) must only be accessed and viewed within a Nanotrasen Virtual Environment (NVE, vNTOS-3). Employees in violation of this information ordnance will have their wages A) garnished, and B) sent to a labour camp up to a maximum of ten (10y) years. Questions regarding policies related to NCPI should be directed towards departmental heads or your sector Central Command Information Authority (CCIA) personnel. ## About The Pull Request Credentials Confirmed The Birdshot Engineering Revitalization Plan (formerly proposal Blindfold, now BERP) is a procurement effort to address growing maintenance liabilities and costs on the Skitter-MDR Class Orbital Station located in the Spinward Stellar Cluster (SSC, Sector 28-7b). Over the course of the previous year, ongoing analysis data has provided vital feedback since the station was once again brought into operation after 17 years of abandonment; and using this data, 4 options were outlined for the Blindfold Proposal. 1) Abandonment - No Cost. Operations on Birdshot will cease. 28-7b operations will be moderately impacted. 2) Procurement - Medium Cost. Replace offending station sections completely with low-cost, working alternatives. Operational gains in 28-7b expected. 3) Do Nothing - No Cost. Moderate long-term impacts to operations in 28-7b. 4) >>>_Was removed_ Option 2 was selected for BERP. Procurement efforts identified 3 solutions and later narrowed it down to 1. Following the selection process architects were brought in to draft up low-impact refits to the designated hulk. 5 selections made it past initial drafting, with 3 ultimately being selected for engineering board review. Penultimately draft proposal 3 was selected for the project and now awaits engineering certification. The draft plan is provided on the next page:  Following board certification, implementation of the plan will be commenced by 28-7b Nanotrasen Enigneering Corps. (NECs). Construction time-frame pending Project Foremans review. ## Why It's Good For The Game Birdshot Engineering is where this whole station began. Back then, things were going to look closer to Birdboat Station, but that became looser and more ill-defined as progress was made on the overall station. While I was satisfied of the decrepit feel of Birdshot Enigneering initially, I knew that at some point, it would require modification to better play into Birdshots strengths. I've had a long laundry list of a roadmap that I've wanted to implement since the station was added, and this was the top item. Tier Zero. Problema Numero Uno. You get the idea. This has been a year of drafting, redrafting, and redrafting everything until it fit Birdshot right. With this, we're nearly there. I see this being the definitive Engineering Department for this station for quite some time to come. However, this is still a draft and some elements are subject to change as I begin to work out some of the more minor kinks in the draft such as pipe locations and transit tubes. Presently Atmospherics is completely rebuilt from the bottom up. There is more space, enough to do projects, but you'll have to tear down some windows and walls to gain it. Nothing ventured, nothing gained. You also have most of the gas distro line outside. I'm a firm believer in enabling whatever antics ANY lunatic may have. Atmos techs can rest assured that outside lines are completely reconfigurable (and powered) enabling some... unique project prospects. You also gained an inside HFR and Spare burn chamber. Enjoy. The Engineering Common Areas are now inside the department proper instead of the satellite treatment in the original implementation. Security gets an actual outpost and engineers now have a proper office to file engineering documentation. They say that office colleagues can form tight bonds so let's see whose is stronger: Purples or Yellows? The Supermatter Engine is more of an upgrade over the previous model (Leaky SM is here to stay so deal with it). The room is larger with less rock, allowing some manner of greater customization, but I believe engineers will be more than happy to find that they now have a Burn Chamber of their own. I have zero clue of what they'll do with it, but I think any enterprising CE will be able to create something that even god should fear. Finally we have maint improvements. Nothing really to see here though maybe there's the beginning of something for the future if you care to speculate. I couldn't really keep the meandering maint of the previous rock, so instead we now have some pseudo dead-ends. It's all connected by transit tubes to the north (not shown) so you can slowly get around if you will it. Of course there's plenty of cut-throughs, not-so-finished sections, and opportunity for those who need it. Caution to the blind, this whole rock is spicy. Overall I'm happy with this and want to open it up in Draft Mode for initial thoughts. I have a rough timeline on finishing this that stretches out to the weekend, so the earlier comments are, the more likely I'll be able to MAYBE do something about it. Thanks for the patience and hopefully this is a doozy of an update for all our players. Previous Engineering Provided for Point of Reference:  closes #75590 ## Changelog 🆑 qol: Wholesale Revamp of Birdshots Engineering Department fix: Some Birdshot Amtospherics Concerns fix: Some Birdshot Engine Concerns /🆑 * Bumps `dependencies.sh` to 515.1633 Stable (#82138) ## About The Pull Request Two reasons for this. 1. It's the stable branch, so let's move it up. This PR will detect any issues that we might have with the latest 515.1633 as far as the codebase is concerned (the servers have been running 1633 for at least a week now). 2. ~~I'm fucking sick of seeing the Lua Scripting Notice in CI even though it was fixed a few days ago in #82074 ( |
||
|
|
2ed6af479c |
[MIRROR] [NO GBP] Fixes even more AI related CI runtimes [MDB IGNORE] (#25682)
* [NO GBP] Fixes even more AI related CI runtimes (#80262) ## About The Pull Request Consider this a continuation of https://github.com/tgstation/tgstation/pull/80202  ~~It seems I missed a few.~~ Edit: Modified per request to handle this more broadly. If a pawn gets `qdel`'d, the ai controller should be set to off and get removed from the list of active controllers, and all their actions should be canceled. Also adds some qdeleted checks to `finish_action()`, which can still run after the pawn gets qdeleted as part of the `CancelActions()` chain. ## Why It's Good For The Game Less spurious CI failures. ## Changelog Nothing player facing really. * [NO GBP] Fixes even more AI related CI runtimes * Update _ai_controller.dm --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
c2520730a5 |
[MIRROR] Fixes a bunch of AI related CI runtimes [MDB IGNORE] (#25552)
* Fixes a bunch of AI related CI runtimes (#80202) ## About The Pull Request <details><summary>A bunch of the numerous CI issues </summary>   </details> You can view the full list of them here https://github.com/Skyrat-SS13/Skyrat-tg/actions/runs/7148986054/job/19470671408. What seems to be happening is, the `ai_controller` `fire()`s, and at some point the the `pawn` var has become null from qdeletion. Many of the `SelectBehaviors()` procs make use of that var, and then try to access it without any safeties whatsoever. I believe it is mainly happening because of long `do_after()`s and other procs that sleep. This PR just adds those safeties. I probably didn't get them all, but this should fix the ones I have seen in CI. There may be a better solution to cover all future cases of this but I will wait on feedback to proceed. See below comments: --- I don't know if you would rather this to always be checked at the controller level instead (or in `able_to_plan()` perhaps?) but I could do that if it's wanted. I wasn't sure if there were certain things that depended on `SelectBehaviors()` running for cleanup so I opted against that. On that note, shouldn't we just be qdeleting the `ai_controller` when the pawn gets qdeleted? Is that not already happening? And if not, is there a reason for it? That would probably be the best way to handle it... ## Why It's Good For The Game I would like to stop seeing so many random CI failures, wouldn't you? ## Changelog 🆑 fix: fixes some AI runtimes that were caused by the pawn becoming null /🆑 * Fixes a bunch of AI related CI runtimes --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
7dd661f342 |
[MIRROR] basic cats and mini kitchen helpers [MDB IGNORE] (#25330)
* basic cats and mini kitchen helpers (#79800) ## About The Pull Request this pr transforms cats into basic pets! cats now have some new behavior. they can carry fish and hunted mice in their mouths to deliver it to kittens, and kittens will eat them.   if a kitten sees you holding food, it will point at you and meow loudly until u give it the food. becareful when putting male cats near each other, there is a small chance they get into a heated argument and meow loudly at each other until one of them flees. also added a new small cat house for cats. cats will use these homes if u build one near them (using 5 wood planks)  Chefs can craft the cake cat and breadcat. these are useful cats because they can help the chef around in the kitchen. they will turn stoves and grills off when food is ready, so they dont burn. and the cake cat will help the chef decorate his donuts ## Why It's Good For The Game refactors cats into basic mobs and gives them a deeper ai ## Changelog 🆑 refactor: cats are now basic pets. please report any bugs. add: the cake cat and bread cat can now help the chef around in the kitchen /🆑 * basic cats and mini kitchen helpers * Modular --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
2f4010c992 |
[MIRROR] Removes final remnants of 'targetted' [MDB IGNORE] (#24927)
* Removes final remnants of 'targetted' (#79626) ## About The Pull Request Finishing what https://github.com/tgstation/tgstation/pull/79513/ started, removes 'targetted' typo from code. Also updates the basic mob guide with the new updated var names. ## Why It's Good For The Game Typos bad. Accurate guides good. ## Changelog 🆑 code: gets rid of the rest of the instances of 'targetted' typo from code /🆑 * Removes final remnants of 'targetted' --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
bbd547ec95 |
[MIRROR] Targeting Datums Renamed (and global) [MDB IGNORE] (#24885)
* Targeting Datums Renamed (and global) (#79513) ## About The Pull Request [Implements the backend required to make targeting datums global]( |
||
|
|
a4c123c212 |
[MIRROR] new wizard ability and basic leaper refactor [MDB IGNORE] (#24805)
* new wizard ability and basic leaper refactor * Update riding_mob.dm * Modular --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
e501a5c02e |
[MIRROR] Converts traders to basic mobs [MDB IGNORE] (#24673)
* Converts traders to basic mobs (#79187) ## About The Pull Request This PR converts the two trader mobs into basic mobs, these being the basic debug trader that buys ectoplasm and sells ghost burgers, and Mr Bones, who buys empty milk cartons and bones, and sells bone relate paraphernalia. Traders now use dynamic appearance generation. The old sprites still exist as hallucinations, and as shop signs. Trader UI is now summoned via `COMSIG_ATOM_ATTACK_HAND`, which properly cancels the attack chain, so there is no longer need to put it on Interact. I kept most of the original behaviour, but moved them off into a component. I have also cached all the images generated for the radials, I hope I have not overengineered it. I have also created a new datum, which stores the trader's wares, needs, and speech patterns. Admins can put the component along with the trader data on any living mobs with an AI controller, turning them into traders. Keep in mind that most AI has random idle movement, meaning they have a chance to walk off, closing your trader radial.  The trader AI consists of the following, first, when a trader sees someone, they will deploy their shop, if one does not already exists. The shop consists of a chair, and a holographic sign. If you attack them, they will chase you with their weapons, and then return to their chair when victorious. If the chair is somehow destroyed, they will create a new shop when they see a new potential customer.  Mr Bones uses a variant of the AI, where they will run at you, and deploy their shop when they reach you. I call this the jumpscare variant. Below you can see me getting actually jumpscared because Mr Bones has stepped on a yelling frog when I opened the maintenance door.  I have also made an element that toggles an ai controlled combat mode when it gains a target, and when it loses it. I am using it to make Traders unable to trade while they are trying to kill a robber. To aid this, I a have made `/datum/ai_controller/proc/sig_remove_from_blackboard` send the `COMSIG_AI_BLACKBOARD_KEY_CLEARED` signal, in case the trader kills a mob that deletes itself on death. This means I could remove a signup `/datum/component/appearance_on_aggro` was doing towards Qdeleting. Below you can see Mr Bones shooting me with candy corn.   Traders actually only shoot you until you are conscious, so I survived here in crit. Most mobs don't have crit state, so they just die, so I am sticking by this voice line. Thank you @ CoiledLamb for help with the sale sign! ## Why It's Good For The Game Two more mobs off the list. The AI and Componentized behaviours allows us to set up new kind of traders. ## Changelog 🆑 refactor: Traders are basic mobs now. Please alert us of any strange behaviours! code: If there is only one option, radial lists will autopick it. This behaviour can be turned off via a new argument. /🆑 * Converts traders to basic mobs --------- Co-authored-by: Profakos <profakos@gmail.com> |
||
|
|
c056f4dac9 |
[MIRROR] Nanotrasen basic mobs. [MDB IGNORE] (#24573)
* Nanotrasen basic mobs. (#78917) ## About The Pull Request First and foremost, converts all Nanotrasen simplemobs into basic mobs. To avoid messy and redundant code, or god forbid, making Nanotrasen mobs a subtype of Syndicate ones, I've made Syndicate, Russian, and Nanotrasen mobs all share a unified "Trooper" parent. This should have no effect on their behaviors, but makes things much easier to extend further in the future. While most of this PR is pretty cut-and-dry, I've done a couple notable things. For one, all types of ranged trooper will now avoid friendly fire, instead of shooting their friends in the back. Even the Russians have trigger discipline. I've also created a new AI subtree that allows mobs to call for reinforcements. I've hopefully made this easy to extend, but the existing version works as follows: - A mob with this subtree that gains a target that is also a mob will call out to all mobs within 15 tiles. - If they share a faction, mobs receiving the call will have the target added to their retaliate list, and have a new key set targeting the calling mob. - If they have the correct subtree in their AI controller, called-to mobs will then run over to help out. Sadly, this behavior is currently used only by a few completely unused Nanotrasen mobs, so in practice it will not yet be seen. Finally, I've fixed a minor issue where melee Russian mobs punch people to death despite holding a knife. They now use the proper effects for stabbing instead of punching. ## Why It's Good For The Game Removes 8 more simple animals from the list. As said above, making all "trooper" type mobs share a common parent cuts down on code reuse, ensures consistency of behavior, and makes it much easier to add new troopers not affiliated with these groups. I expect that I'll make pirates share this same parent next. The new "reinforcements" behavior, though extremely powerful, opens up exciting new opportunities in the future. There aren't many existing behaviors that allow basic mobs to work _together_ in interesting ways, and I think adding some enemy teamwork could be fun. ## Changelog 🆑 refactor: Hostile Nanotrasen mobs now use the basic mob framework. This should make them a little smarter and more dangerous. Please report any bugs. fix: Russian mobs will now actually use those knives they're holding. /🆑 * Nanotrasen basic mobs. * Modular --------- Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
6e2fcee00b |
[MIRROR] Basic Constructs: Artificer [MDB IGNORE] (#24456)
* Basic Constructs: Artificer (#79015) ## About The Pull Request Really getting into the meat of the constructs now. Artificers have become basic mobs. On the whole, this was a pretty rote conversion, with no significant gameplay changes other than the switch to using healing hands rather than a unique heal ability. The player experience as an artificer is more or less identical. The _interesting_ part comes with the AI for the seldom-used "hostile" variant. Hostile artificers, being squishy and laughably weak, are now a dedicated "medic" role for constructs. They will perform triage, always seeking the most wounded construct (or shade!) to give healing to. They will not attack at all, but they _will_ flee with great speed if attacked and not busy healing. If they are healing another construct, they will remain even if they are beaten to death. I've added some more AI functionality that may come in handy in the future, and done some refactoring to keep things from getting out of hand: - A planning subtree for finding targets that will always select the most heavily wounded living target that the mob can see (or rather, the one with the least health). Useful again for medical triage, or for making a particularly cruel mob that always attacks whoever is easiest to kill. I plan to use this for NPC wraith constructs when I convert them. - Targeting datums can now check a blackboard key to see if they should only target wounded mobs. This is particularly useful for "medic" type mobs such as this one. - I've refactored the "minimum stat" behavior of targeting datums to be stored in a blackboard key. This removes the need to have unique subtypes for each different minimum stat we might want. Which... for the most part, weren't even used, leading to proliferation of several completely identical targeting datums in a bunch of different files. Hopefully this change will make things cleaner. In addition, this PR fixes a pair of bugs from #78807 that I didn't catch: - Healing constructs can now actually heal shades. Turns out I forgot to add the correct biotype. - Healing hands, when set to print the target's remaining health, no longer does so as a visible message. The one thing I didn't do that I kind of wanted to is make NPC artificers heal themselves when wounded and not busy doing something else, but it ended up being kind of annoying to make a mob willingly target itself. NPC artificers never had this behavior before, so I consider it okay, but maybe I'll circle back to it later. ## Why It's Good For The Game Another basic conversion, another 5 items off the checklist. Very little should change in-game, though I think the new NPC AI could make for interesting challenges in ruins or bitrunning or something. ## Changelog 🆑 refactor: Artificer constructs have been converted to the basic mob framework. This should change very little about them, but please report any bugs. NPC artificers are now smarter, and will focus on healing nearby wounded constructs - if you see them, take them out first! /🆑 * Basic Constructs: Artificer * Modular * Modular paths * Modular paths --------- Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
0d5a0c0bb9 |
[MIRROR] Goats will randomly attack you [MDB IGNORE] (#24312)
* Goats will randomly attack you (#78930) ## About The Pull Request We accidentally lost this behaviour when we converted goats to basic mobs. _Formerly_ (and now again) goats had a 0.5% chance per second to simply decide to attack you for no reason at all. While attacking you they also have a 10% chance per second to get bored of doing that and stop. Additionally, we were outputting a fluff message every time you attacked a goat which would spam chat if you were trying to fist fight each other. I added a 20 second cooldown onto it. As is often the case, implementing this led me down a bit of a rabbit hole. We were previously bypassing faction checks via a mixture of flags on AI behaviours and blackboard keys. I have moved this _entirely_ to the blackboard now, rather than making targetting subtypes just to skip faction checks. This entails having one blackboard key which is "by default do we care about factions?" and another which is "are we currently ignoring factions for some other reason?" Retaliatory AI will generally enable the second flag, so you can get pissed off at someone you would usually not mind hanging out with if they start something with you. Certain mobs which want to hunt other mobs but not be hunted in return just ignore factions entirely all the time and use the former. The upshot of this is that the default behaviour for expected default retaliatory AI shouldn't require you to set any specific kind of targetting datum and will Just Work. In a similar vein because I was touching largely the same mobs I made the "flee when injured" component apply its "don't flee because not injured" flag instantly upon application rather than needing to manually set it in the blackboard definition, so that also Just Works. ## Changelog 🆑 fix: Pete's anger management training has worn off, and he will once again sometimes pick a fight with you for absolutely no reason. qol: Attacking a goat will not spam messages so frequently. /🆑 --------- Co-authored-by: san7890 <the@ san7890.com> * Goats will randomly attack you --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: san7890 <the@ san7890.com> |
||
|
|
b2ccdeab8b |
[MIRROR] Basic Mob Gorillas [MDB IGNORE] (#24284)
* Basic Mob Gorillas (#78918) ## About The Pull Request Now we can make basic mobs with hands easily so I did, they don't actually use their hands for anything with AI. In the future we can come back and share the monkey AI where they pick up items to hit people with, but frankly few weapons are more deadly than a gorilla's fists. IIRC I didn't really change their behaviour much, this is mostly just a straight conversion. Main difference is that they will prioritise eating nearby bananas and fruit salads over punching people. When I make these conversions nowadays I need to decide between "does this attack at the speed that it did as an NPC mob or the speed it did as a player?" I am arbitrarily deciding that gorillas are usually not players and electing for the former, but tell me if you disagree. I also made "show basic inhand sprites" into a component shared by Gorillas, Drones, and Dextrous Guardians (all also now available to become basic, once I get around to it), And I added an AI behaviour to run a basic emote. This is similar but different to "random speech", which kind of sucks and needs rewriting anyway. Gorillas don't speak, only ooga. ## Why It's Good For The Game https://www.youtube.com/watch?v=npuuTBlEb1U ## Changelog 🆑 refactor: Gorillas now use the basic mob framework. Please report any unusual side effects. /🆑 * Basic Mob Gorillas * Modular paths --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
3869212f81 |
[MIRROR] Mook village and basic mook refactor [MDB IGNORE] (#24269)
Mook village and basic mook refactor Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> |
||
|
|
fd1d9e4ee8 |
[MIRROR] Fixes fleeing behaviour [MDB IGNORE] (#24223)
* Fixes fleeing behaviour (#78821) ## About The Pull Request This PR does three things: - Fixes fleeing, I broke it in a recent PR so mobs would walk to a location then sort of stand there doing nothing. This is due to using `>=` instead of `>`. - Makes lobstrosities stop running and charge at you more responsively (when they detect they can charge). - Inverts the `BB_BASIC_MOB_FLEEING` blackboard key to `BB_BASIC_MOB_STOP_FLEEING` so that the default behaviour is "to perform the behaviour that you put on the mob" instead of to not do that. ## Why It's Good For The Game Makes commonly used behaviour work properly. Removes footgun we hand to ai developers. ## Changelog 🆑 fix: Cowardly mobs will consistently run away from you instead of getting tired and just sort of standing there after an initial burst of movement. /🆑 * Fixes fleeing behaviour --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
ade3fb2813 |
[MIRROR] ice demon basic mobs [MDB IGNORE] (#24188)
* ice demon basic mobs * Modular updates * Modular updates --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
f6577ec049 |
[MIRROR] Refactors Sloths into Basic Mobs [MDB IGNORE] (#24171)
* Refactors Sloths into Basic Mobs (#78752) ## About The Pull Request Hey there, This just refactors sloths to the basic mob framework. Nothing new should be added beyond them seeming a bit more sluggish and being a bit smarter about the fights they pick/running away. ## Why It's Good For The Game Three more subtypes off the list, we are now sub-200 simple animals left to refactor. If people want to play catch with their sloth it should be much easier to fit that in now. ## Changelog 🆑 refactor: Sloths are now basic mobs, however their overall sluggish behavior shouldn't have changed much- let us know if anything is broken. /🆑 * Refactors Sloths into Basic Mobs * Modular path --------- Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
08f914ed28 |
[MIRROR] Basic Heretic Mobs: The Rest of Them [MDB IGNORE] (#24155)
* Basic Heretic Mobs: The Rest of Them * Update tgstation.dme --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
58c20a99fb |
[MIRROR] Basic blob mobs [MDB IGNORE] (#23938)
* Basic blob mobs * Update blackmesa.dmm * Modular update --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
37a8f73ae3 |
[MIRROR] Basic Legion & Hivelord [MDB IGNORE] (#23964)
* Basic Legion & Hivelord * Update modular + fix diffs * Fixing diffs * More diffs * Adds an AI behavior to replace the 'wander = 0' varedit for the hivelord gate guardians --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
f5781b2aa1 |
[MIRROR] Add new sounds for animals, basic animals make sound on audible emote [MDB IGNORE] (#23917)
* Add new sounds for animals, basic animals make sound on audible emote (#78499) ## About The Pull Why It's Good For The Game Request More sound immersion. Also just makes sense for sounds to play when an animal is both saying something and using an audible emote. Crab click: https://freesound.org/people/JarredGibb/sounds/263882/ Chitter: https://freesound.org/people/ForSoundDesign/sounds/687302/ Chicks: https://pixabay.com/sound-effects/chicks-very-young-56075/ Chicken: https://freesound.org/people/Breviceps/sounds/456803/ https://github.com/tgstation/tgstation/assets/66640614/29cd4e8e-b9c3-4f71-be0d-8c3f3de40eba https://github.com/tgstation/tgstation/assets/66640614/9a24c1a8-0707-43ad-adec-b7ce1eddb5f6 https://github.com/tgstation/tgstation/assets/66640614/21cc37ae-c49c-461a-83c5-271f6d577fc6 ## Changelog 🆑 tattle qol: Basic animals now make sounds for audible emotes sound: Added new sound effects for chicks, chickens, crabs, and insects /🆑 Co-authored-by: tattle <article.disaster@ gmail.com> * Add new sounds for animals, basic animals make sound on audible emote * Sound path changes --------- Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: tattle <article.disaster@ gmail.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
df0d2b6ab4 |
[MIRROR] [no gbp] fixes blackboard speech error [MDB IGNORE] (#23901)
* [no gbp] fixes blackboard speech error (#78551) ## About The Pull Request i changed initial to list() ## Why It's Good For The Game  ## Changelog i dont think runtimes are playerfacing --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com> * [no gbp] fixes blackboard speech error --------- Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com> |
||
|
|
3836aaad45 |
[MIRROR] basicmob clowns [MDB IGNORE] (#23867)
* basicmob clowns (#78448) ## About The Pull Request this is a mostly 1 to 1 port of simpleanimal clowns to basicmob clowns this means they have 1 more brain cell and they waddle https://github.com/tgstation/tgstation/assets/70376633/0c5f01c7-fea2-4d8c-9fc1-764c1557e1b8 ## Why It's Good For The Game  ## Changelog 🆑 refactor: clowns are basicmobs now /🆑 --------- Co-authored-by: san7890 <the@ san7890.com> Co-authored-by: Jacquerel <hnevard@ gmail.com> * basicmob clowns --------- Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com> Co-authored-by: san7890 <the@ san7890.com> Co-authored-by: Jacquerel <hnevard@ gmail.com> |
||
|
|
7509292edd |
[MIRROR] Basic Mob Brimdemon [MDB IGNORE] (#23863)
* Basic Mob Brimdemon (#78424) ## About The Pull Request Fixes #71330 The brimdemon was basically already perfect (well, it has a novel means of attacking) so I didn't get too fancy with this one, it's _largely_ just a straightforward conversion. Following this change it's a little slower to back off, but better at lining up with people in order to blast them. Additionally, its beam is now a mob ability so you can give it to other mobs if you so desire. Because I can't help doing a _little_ tinkering, Brimdemons now explode 2.5 seconds after they die, after a brief warning animation. ## Why It's Good For The Game Simple mobs must die ## Changelog 🆑 add: Brimdemon corpses release an explosion shortly after death, just to keep you on your toes. refactor: Brimdemons now use the basic mob framework which (should) improve their pathfinding somewhat. Please bug report any unusual behaviour. admin: The brimdemon's beam ability can be given to any mob, for your Binding of Isaac event /🆑 * Basic Mob Brimdemon * Modular --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
c2639c816b |
[MIRROR] Synchronise AI and Player basic mob melee behaviours [MDB IGNORE] (#23780)
* Synchronise AI and Player basic mob melee behaviours (#78337) ## About The Pull Request I like for things that mobs do to be consistent regardless of whether they are controlled by a player or by the AI. One big offender of this is the melee behaviour cooldown. Basic mobs piloted by AI have arbitrary melee attack cooldowns which are not reflected when they are controlled by players who can generally attack much faster (but in _two_ instances, slower). To remedy this I added `melee_attack_cooldown` as a var on `living/basic` (sinful) and the ai now uses NextMove to not click too often, meaning that players can only bite things as often as the AI can and also that if you VV the cooldown it can speed the AI up (or slow it down) as well as a player. This also gets rid of a lot of subtypes of that datum, as we mostly made them to change the cooldown. I also hunted down a few places where there was behaviour placed inside an AI behaviour which wasn't easily replicable by a player piloting the same mob, preferably a player should be able to do everything that the AI can. Fixing this was largely a simple case of moving code from `ai_behaviour/melee_attack/perform` to `basic/mob_subtype/melee_attack` and also adding an element for one thing shared by three different mobs. Strictly speaking I didn't need the element that much because a player is perfectly capable of clicking on something they attack to drag it, but it's nice for it to be automatic? ## Why It's Good For The Game If you see a mob do something then you should also be able to do it. Mobs shouldn't have significantly different capabilities when controlled by a player (aside from usually being smarter). ## Changelog 🆑 balance: Player-controlled basic mobs attack as fast as those mobs can when controlled by the AI balance: Player-controlled Faithless can paralyse people they attack, like the AI does balance: Player-controlled Star Gazers (if an admin felt like making one) apply the star mark on attack and deal damage to everything around them, like the AI does /🆑 * Synchronise AI and Player basic mob melee behaviours --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
1b2f0289e4 |
[MIRROR] fix basic mobs retaliate target not filtering targets [MDB IGNORE] (#23767)
* fix basic mobs retaliate target not filtering targets (#78359) ## About The Pull Request basic mobs retaliate targeting would try to target players that they cant attack anymore, ## Why It's Good For The Game fixes basic mobs retaliate targeting would try to target players that they cant attack anymore, ## Changelog 🆑 fix: basic mobs retaliate targetting now selects targets they can attack /🆑 * fix basic mobs retaliate target not filtering targets --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> |
||
|
|
3acc1b2b4a |
[MIRROR] Removes watcher overwatch ability [MDB IGNORE] (#23710)
* Removes watcher overwatch ability (#78292) ## About The Pull Request Removes the "overwatch" ability from Watchers, allowing them to use their "look away" ability at any health threshold instead (but only if it's been fighting you for at least 5 seconds or if you attack it). Drops the cooldown on the gaze a little bit to compensate. Also fixes some weird behaviour I noticed while testing: - It won't cancel its own ability by trying to back away from you. - It will look at you when it shoots you. ## Why It's Good For The Game I was cooking too hard with this one. - Two abilities overcomplicates what are supposed to be a pretty simple mob you fight in packs. - It wasn't obvious what you were actually supposed to do when targetted. - Doing it wrong could be very punishing in groups. - Doing it _right_ was still kind of unexciting. This is an ability to give to an elite, not a random trash mob. ## Changelog 🆑 balance: Watchers will no longer put you at gunpoint. /🆑 * Removes watcher overwatch ability --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
57272c8d22 |
[MIRROR] Basic Watchers & Basilisks [MDB IGNORE] (#23137)
* Basic Watchers & Basilisks (#77630) ## About The Pull Request This one is a double feature because Watchers and Basilisks share the same typepath. You might see a couple more of those. As is tradition I decided to fuck with them rather than just port them. Here's what's up. **Basilisks**   - Have a new soulless sprite which looks less like a living blue hedge. - Walk at you and shoot you while you are not in range (just like before). - Become supercharged if they become "heated" by lava, lasers, or temperature weapons. This was a feature they also previously had but they would never encounter lava, so now it also works if you use the wrong gun on them. - Lose their supercharge if you cool them down. - Otherwise pretty normal mobs. **Watchers** https://www.youtube.com/watch?v=kOq_Bf78k5A Here's a traditional video of me intentionally getting hit by mechanics (trust me its definitely on purpose) - They glow emmissively a little bit so you can see them from further away. - Their eyes light up about 0.5 seconds before they are able to shoot at you. - No longer melee attack, instead try to stay out of melee. - Will occasionally put you into "Overwatch", meaning they will shoot you rapidly if you move or act while they're staring at you for a brief time period (after which you become immune for 12 seconds, and during which other watchers will play fair and stop shooting at you). - If they start taking damage they will also start using their "Gaze" attack, look away or suffer some kind of negative effect! - - Normal watcher gaze flashes and confuses you. - - Magmawing watcher gaze obviously burns (and briefly stuns) you. - - Icewing watcher gaze freezes you and throws you backwards. - Magnetically attract and eat diamonds. They also used to do this, but just if they happened to coincidentally walk past some. **Other accompanying changes** All basic mobs will now adopt the "stop gliding" trait if they get slowed down too much. I moved behaviour for "fire a projectile from this atom" into a helper proc because I was using it in three places and I will probably use it in more places. There are probably other places in the existing code which could be using this. I think I made the basic mob melee attack forecast default a little more forgiving, they were fucking me up too much and I am the playtester. ## Why It's Good For The Game Another one off the list. New tricks for old dogs. Framework for making mobs with ranged attacks "fairer" (you can see when they are ready to shoot you). More (hopefully) versatile AI behaviours which we will reuse later (I hope I'm not duplicating one someone already made). If our players "enjoy" them enough we can give more mobs "don't look at me" mechanics. Removes some soul sprites. ## Changelog 🆑 refactor: Basilisks and Watchers now use the basic mob framework. Please bug report any unusual behaviour. sprite: Basilisks have new sprites. add: Basilisks will go into a frenzy if heated by energy weapons or temperature beams as well as by lava. add: Watcher eyes will be illuminated briefly when they are ready to fire at you. add: Watchers can now briefly put you into "Overwatch" and penalise you for moving while they can see you. add: Wounded watchers will occasionally punish players who look at them. balance: Unusual watcher variants are more likely to appear. /🆑 * Basic Watchers & Basilisks * Modular paths --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
b967c2787c |
[MIRROR] Give basic mob ranged attacks a cooldown [MDB IGNORE] (#23062)
* Give basic mob ranged attacks a cooldown (#77575) ## About The Pull Request Atomised change from a different PR I am working on. This changes the basic mob ranged attacks element into a component so that it can also track an attack cooldown on the mob, preventing it from firing until the cooldown is complete. This was possible with simple mobs but wasn't kept going forwards when converting things to basic ones. ## Why It's Good For The Game Ideally player and mob behaviour should be unified as much as is realistically possible. Currently mobs which are designed to fire a powerful weapon slowly can blast as rapidly as the click cooldown if placed under control of a player, which is not ideal. This isn't currently aligned for melee attacks either but I will look at that later. ## Changelog 🆑 fix: Player-controlled basic mobs with ranged attacks can now only fire about as fast as AI-controlled ones. /🆑 * Give basic mob ranged attacks a cooldown * Modular update --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
b4989ba05b |
[MIRROR] Unit Tests for AI Planning Subtrees not having required element/component [MDB IGNORE] (#23047)
* Unit Tests for AI Planning Subtrees not having required element/component (#77539)
## About The Pull Request
Hey there,
I've personally fallen for this stupid thing twice (in #77503 and #75627
(
|
||
|
|
377bf92754 |
[MIRROR] Basic Lobstrosity [MDB IGNORE] (#22827)
* Basic Lobstrosity (#77253) ## About The Pull Request I'm slowly chipping away at mining mobs. These ones also got some new sprites because the old ones were a bit weird except when facing South.  Arctic Lobstrosities are now hairy to give them a little more visual distinction from Lavaland ones. In terms of behaviour, they're now a little faster and can charge you from further away. They will _only_ attack players who are incapacitated in some way (primarily from being hit by their charge, but could be from a Goliath or something too) and will otherwise keep their distance until they can charge again. They move slower for a short duration after charging though, so you have time to slap them a bit. If a Lobstrosity downs you then it will try to snip off one of your arms, then retreat in order to eat it. Obviously nobody likes losing an arm, but this does give you an opportunity to get away while it is distracted? Funnily enough the way our health system works means that sometimes losing that arm actually takes you out of soft crit so you can stumble back to the station for a replacement (or try to wrestle yours back?) All of these things are achievable also by a player if you make one sapient, they will pull arms off mobs they attack which are in crit and can eat arms if they see them lying around if they want. I added an element to let you dismember people with your bare hands, maybe someone evil can use it to add a beheading attack some day. Here's a video of their new behaviours: https://www.youtube.com/watch?v=9eKxsH7hD7Q ## Why It's Good For The Game Gives mobs more character. Reduces our list of frozen simple mobs. Replaces some ugly side sprites. Medbay enrichment? ## Changelog 🆑 refactor: Lobstrosities are now basic mobs and have different AI behaviour. Please report anything which seems like it shouldn't be happening. add: Lobstrosities will now only opportunistically attack things they have knocked over with their charge, and are otherwise timid. add: Lobstrosities are hungry for fingers and will steal one of your arms if they defeat you in combat, although this gives you time to crawl away. sprite: New sprites for Lobstrosities. /🆑 * Basic Lobstrosity * Modular paths --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
a50b093a90 |
[MIRROR] Fixes a large amount of spelling and grammatical errors in the Exploration Drones section. Also fixes an angry pine tree quip. [MDB IGNORE] (#22796)
* Fixes a large amount of spelling and grammatical errors in the Exploration Drones section. Also fixes an angry pine tree quip. (#77095) ## About The Pull Request Title ## Why It's Good For The Game It bothered me ## Changelog 🆑 Licks-The-Crystal spellcheck: Corrected a large quantity of spelling, grammatical and phrasing errors with Exploration Drone content. /🆑 --------- Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com> * Fixes a large amount of spelling and grammatical errors in the Exploration Drones section. Also fixes an angry pine tree quip. --------- Co-authored-by: zeckle/licks-the-crystal <79835169+mikederkan@users.noreply.github.com> Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com> |
||
|
|
3fa227223a |
[MIRROR] convert the bear to a basic mobster [MDB IGNORE] (#22751)
* convert the bear to a basic mobster * Merge conflicts * Fixing the diffs * Merge conflicts * Update mob.dm * Update VoidRaptor.dmm * why is this pr so cursed --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
e0ab5a3328 |
[MIRROR] Converting crabs to basic mobs [MDB IGNORE] (#22710)
* Converting crabs to basic mobs (#77109) ## About The Pull Request Exactly what it reads on the tin. As a bonus, they will flee from attacking targets, hunt tiny critters (crabs are now small-sized) and actually move sideways (it's an element that covers both client and basic movement) ## Why It's Good For The Game Another simple to basic mob refactor. ## Changelog 🆑 refactor: Crabs refactored into basic mobs. They now hunt tiny critters and flee from attackers. fix: Fixed crabs not crab-walking. /🆑 * Converting crabs to basic mobs * UpdatePaths * More path changes * Update simple_animal_freeze.dm --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
da26dabf3c |
[MIRROR] add pony [MDB IGNORE] (#22607)
* add pony (#76955) * add pony --------- Co-authored-by: scriptis <scriptif@proton.me> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
49f61b14a9 |
[MIRROR] make the pinguen a basic animal [MDB IGNORE] (#22568)
* makes the pinguin a basic animal (#76790) ## About The Pull Request the penguin now is a basic animal and also now he can go and layed penguin eggs to make penguin babys also the baby have a new behavier he will now go and looked for his mom and when he found his mom he will went to her and be happy when he close to his mom or if he mom is died he will went to her body and he will be sad and also i putted this behavier in the baby chicken. also now the pinguen mom will go and looked for her eggs and when she find a egg she will putted it in the middile of her legs and walked with it  ## Why It's Good For The Game the pinguen now is a advance ai ## Changelog the pinguen now have a more advance 🆑 refactor: the penguin is a basic animal add: the penguin now layed eggs add: the penguin and the chicken babys will go look for adult penguin or chicken and be happy when he is near the adult /🆑 * make the pinguen a basic animal --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> |
||
|
|
ed294532c6 |
[MIRROR] transform the paper wizard from a simple to a basic [MDB IGNORE] (#22452)
* transform the paper wizard from a simple to a basic (#76688) ## About The Pull Request i transfered paper wizard from simple to a basic and i also gaved him new fetures he can go and do. now when he will go and walked when he walks there will be a paper effects when he goes to walk. also he will he will now go to look for paperes on the floor and then he will write stuff inside the paper, so a player can maybe distracted the wizard with a paper because the wizard will stop atacked him for a bit until he finished writted stuff inside the paper. i follow the instrucions in the learn-ai md to maked this to a new ai subtree behavier. ## Why It's Good For The Game the paper wizard is now a basic so he is a better ai and he also have more feture to gaved him depth mechanics ## Changelog 🆑 refactor: paper wizard have been refactored, please report any bugs/unintended behavior refactor: refacted the datum/elememt/trial to an bespoken element add: paper wizard now have effects when he walking and he will now go and look for paperes and write stuff in them /🆑 * transform the paper wizard from a simple to a basic --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> |
||
|
|
e6b03254ce |
[MIRROR] Converts foxes to basic mobs. [MDB IGNORE] (#22358)
* Converts foxes to basic mobs. (#76662) ## About The Pull Request As the title says, foxes are now basic mobs. Foxes have a few new behaviors now, rather than the zero behaviors they had before. Foxes, being very skittish animals, will flee from anything that damages them. Additionally, they now have hunting behavior, tracking down and killing anything of their size or smaller - regardless of faction. They will not, however, hunt as long as someone is watching them - which is to say, if any living humans are within 7 tiles of them. Don't leave a fox and a chicken together while you're transporting your grain to Lavaland! Also, make sure you don't leave Renault and Ian on their play date unsupervised...  ## Why It's Good For The Game Gets rid of another simple animal. We grow ever closer to ascension. Also, makes foxes a little more interesting rather than simply another animal that does literally nothing. Renault will now flee from anyone trying to kill her, for instance. Also opens up unique avenues of pet murder if you want to make it look like an accident. ## Changelog 🆑 refactor: Foxes are more crafty now. They will run from danger, and hunt small prey when no one is keeping an eye on them. Don't leave Renault alone with Ian! /🆑 * Converts foxes to basic mobs. * Run UpdatePaths * Fixes a renalt objective modular override --------- Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com> Co-authored-by: Giz <vinylspiders@gmail.com> |
||
|
|
19d04376e6 |
[MIRROR] Refactors chicks into basic mobs [MDB IGNORE] (#21602)
* Refactors chicks into basic mobs (#75663) ## About The Pull Request On the tin. They have pretty much nothing in common with chickens, so no subtyping. They are in the same folder to keep that whole thing tidy, though. Also includes fixes to `growth_and_differentiation` element that I made for spiderlings, since some stuff was yorked without me realizing. It pretty much worked flawlessly for these chicks otherwise though. It all works fine now. ## Why It's Good For The Game More verbose naming scheme (instead of "holo", we get "permanent" chicks), smarter AI for chicks, knocks them off the list, etc. etc. One thing that I wanted to do was to have chicks recognize their mother (if they had one), but that would be way out of scope for this simple port PR. I'll dwell on adding something cool for that in the future. ## Changelog 🆑 refactor: Chicks are now a bit smarter, be careful not to squish them! /🆑 Let me know if the whole "COMPONENT_KILL" thing is cringe, I couldn't figure out a better way to do it without abusing `GetComponent()` to `qdel()` it that way. * Refactors chicks into basic mobs * fix --------- Co-authored-by: san7890 <the@san7890.com> Co-authored-by: ghost sheep <sheepwiththemask@gmail.com> |
||
|
|
e4583c5fb2 |
[MIRROR] Refactors Ant into Basic Mob [MDB IGNORE] (#21601)
* Refactors Ant into Basic Mob (#75662) ## About The Pull Request On the tin. No new fancy AI wheels or anything, just a simple port. ## Why It's Good For The Game Knocks another one off the list, just really light stuff. They're a bit smarter now too, I think the intention was them for them to be pet-like as well (according to the code). Should be really rather easy to give them the pet-like behaviors and elements if someone really wants to in the future, just sorta paving the way for more work to be done to make mobs more intricate/interesting. ## Changelog 🆑 refactor: Giant ants are now more capable of distinguishing friend and foe. /🆑 * Refactors Ant into Basic Mob --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
d52445f5df |
[MIRROR] Turns Chickens into Basic Mobs [MDB IGNORE] (#21414)
* Turns Chickens into Basic Mobs (#75592) * Turns Chickens into Basic Mobs * modular * Update VoidRaptor.dmm --------- Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com> |
||
|
|
29cf77f8b8 |
[MIRROR] Converts Lizards to Basic Mobs [MDB IGNORE] (#21291)
* Converts Lizards to Basic Mobs (#75515) This was pretty simple since they didn't have too much custom behavior, and whatever they did have already had AI behavior. I got really burned out the last two times I wrote intricate AI action/decision behaviors so I'm just taking it light and doing the bare minimum. one day our shackles will be free of the simple animal scourge. they're also a bit more intelligent, and i daresay a bit cuter too now. also that lizard gib animation has been sitting there for god knows how long completely unseen, so let's actually hook it into the mob. * Converts Lizards to Basic Mobs * update modular * TEGU * me when I update Maps --------- Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
3696b1eb88 |
[MIRROR] Converts Killer Tomatoes to Basic Mobs [MDB IGNORE] (#21301)
* Converts Killer Tomatoes to Basic Mobs * skyrat modular changes --------- Co-authored-by: san7890 <the@san7890.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
7028b1d32e |
[MIRROR] Converts Spiderlings from Structures to Basic Mobs [MDB IGNORE] (#20852)
* Converts Spiderlings from Structures to Basic Mobs (#75001) If I could've made this more atomic, I would have in a heartbeat, trust me. ## About The Pull Request Hey there. People were mocking us for having spiderlings still be a subtype of `/obj/structure`. I decided to take a lot of time to fix that. A lot of behavior it was implementing was just pseudo-mob stuff, so it was actually easier than it looked for the raw conversion. A lot of the footwork on spider stuff in the basic framework was already done previously by Jacquerel, so that was pretty nice. However, there are two new things that weren't introduced in the code that had to be put in. A) A component to handle growth and differentiation into a mob. This may have already existed, no clue. If it does (and it's NOT evolutionary_leap), let me know. B) AI Behavior to handle seeking out a vent, entering a vent, and then exiting out of a different vent. I may have gone a bit wacky on the code, but it certainly works as expected (spiderling goes in one vent, exits the other). Let me know if you can think of a way it can be better optimized, but it was deliberately written to be very failsafey in case shit goes yonkers. One fundamental difference between structure spiderlings and basic mob spiderlings (beyond the AI and not just a random prob() check for movement) is the fact that they had vent movement coded in... but we _really_ don't need stuff like that for our intents and purposes. If the range turns out to be too OP in the current framework, we can always change it up a bit, but also there's a _lot_ of vents we can end up in the station (my testing had one spiderling end up in the AI sat to get obliterated). ## Why It's Good For The Game Spiderlings aren't structures! They behave like a mob should! Players can possess spiderlings! They work seamlessly with differentiating into a giant spider! Better AI! More room for people to add into this very under-utilized buggers! ## Changelog 🆑 refactor: Spiderlings are now basic mobs, report any complete weirdness/deviation from known behavior. They should be a lot more intelligent now though. add: AI Spiderlings are super fragile, but they're also super fast, especially when they get into a vent. Once they're in circulation, they could end up everywhere! Maybe in the armory, maybe in a locked closet in maintenance. Be sure to be vigilant and splat them whenever you can to save the station from a whole lotta heartache! /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> * Converts Spiderlings from Structures to Basic Mobs --------- Co-authored-by: san7890 <the@san7890.com> Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> |
||
|
|
e6f66d3a4a |
[MIRROR] Experiment with replacing weakrefs in AI blackboard with deleting signals, ideally making it easier to work with and harder to cause hard deletes [MDB IGNORE] (#20719)
* Experiment with replacing weakrefs in AI blackboard with deleting signals, ideally making it easier to work with and harder to cause hard deletes (#74791) ## About The Pull Request Replaces weakref usage in AI blackboards with deleting signals All blackboard var setting must go through setters rather than directly ## Why It's Good For The Game This both makes it a ton easier to develop AI for, and also makes it harder for hard deletes to sneak in, as has been seen with recent 515 prs showing hard deletes in AI blackboards (To quantify "making it easier to develop AI", I found multiple bugs in existing AI code due to the usage of weakrefs.) I'm looking for `@ Jacquerel` `@ tralezab` 's opinions on the matter, also maybe `@ LemonInTheDark` if they're interested ## Changelog 🆑 Melbert refactor: Mob ai refactored once again /🆑 * Experiment with replacing weakrefs in AI blackboard with deleting signals, ideally making it easier to work with and harder to cause hard deletes --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
8164175aa2 |
[MIRROR] Turns Deer into Basic Mob - They Freeze At The Sight of Vehicles [MDB IGNORE] (#20711)
* Turns Deer into Basic Mob - They Freeze At The Sight of Vehicles (#74784) ## About The Pull Request deers only show up in the BEPIS but i decided that they would be easy enough to turn into a basic mob (they were). it was so easy in fact that i decided to dip my toes into coding AI behavior, and made them freeze up whenever they see a vehicle. this required a lot of code in a bunch of places that i was quite unfamiliar with before starting this project, so do let me know if i glonked up anywhere and i can work on smoothing it out. ## Why It's Good For The Game one less simple animal on the list. deers staring at headlights is pretty cool i think, neato interaction for when you do get them beyond the joke the bepis makes i'm also amenable to dropping the whole "deer in headlights" code if you don't like that for w/e reason- just wanted to make them basic at the very least ## Changelog 🆑 add: If you ever happen upon a wild deer, try not to ride your fancy vehicles too close to it as it'll freeze up like a... you know where I'm going with this. /🆑 --------- Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> * Turns Deer into Basic Mob - They Freeze At The Sight of Vehicles --------- Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> |
||
|
|
7cd65785c5 |
[MIRROR] Farm Sounds DLC (basic mobs can make sounds when speaking) [MDB IGNORE] (#20704)
* Farm Sounds DLC (basic mobs can make sounds when speaking) (#74906) ## About The Pull Request https://user-images.githubusercontent.com/66640614/233747544-aac153b9-a100-486c-9a7a-4a436b8303b8.mov Cows, pigs, and sheep make noise when their AI makes them speak. ~~Also House Flipper Farm DLC came out but that's incidental.~~ ## Why It's Good For The Game It's funny, also more sound effects are fun. Gives basic mob creators more customizability. ## Changelog 🆑 Tattle qol: basicmobs can now make sounds when their speech is triggered qol: pigs will now make sounds and emote on their own sound: cows, pigs, and sheep have new sound effects! /🆑 --------- Co-authored-by: tattle <article.disaster@ gmail.com> Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> * Farm Sounds DLC (basic mobs can make sounds when speaking) --------- Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: tattle <article.disaster@ gmail.com> Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> |
||
|
|
92f3327227 |
[MIRROR] refactors poles and trees into basic mobs [MDB IGNORE] (#20649)
* refactors poles and trees into basic mobs (#74812) ## About The Pull Request refactors poles and trees into basic mobs. If trees now see you holding a chainsaw, hatchet, or some wood they will get angry and knock you out for longer. Poles will run around giving some of their charge to APCs they find along the way. i did them both in this PR coz poles were a subtype of trees. ## Why It's Good For The Game refactor ## Changelog 🆑 refactor: refactors trees into basic mobs refactor: refactors poles into basic mobs add: If trees now see you holding a chainsaw, hatchet, or some wood they will get angry and knock you out for longer add: Poles will run around giving some of their charge to APCs they find along the way fix: cells charged by the pole will now have their icon correctly updated to reflect their charge /🆑 --------- Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> * refactors poles and trees into basic mobs --------- Co-authored-by: SMOSMOSMOSMOSMO <95004236+SmoSmoSmoSmok@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> |
||
|
|
9a594755f3 |
[MIRROR] Renames delta time to be a more obvious name [MDB IGNORE] (#20507)
* Renames delta time to be a more obvious name * updates to our code --------- Co-authored-by: oranges <email@oranges.net.nz> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> |
||
|
|
470baf671d |
[MIRROR] Reduce carp migration devastation [MDB IGNORE] (#20445)
* Reduce carp migration devastation (#74608) ## About The Pull Request I'm not totally satisfied with the amount of random destruction caused by space carp wandering around, they should certainly be dangerous and annoying but the random nature of their spawning and pathfinding means that they would trap themselves in random rooms and then smash all of the machinery in there. Because they could attack any dense object they perceived as being in their way that could result in venting random gas canisters, breaking terminals, or I even once saw them destroy the supermatter cooling loop by eating the thermomachines. While the latter is pretty funny, arbitrary destruction of machines simply caused because a fish teleported into a room without you knowing isn't really very engaging and doesn't create very interesting stories. This ultimately isn't meant to be a heavily destructive event and its probability to run isn't tuned as if it is. So, a couple of changes: I reduced both the range and cooldown of the carp teleporting ability. This means that AI carp can use it to pathfind past obstacles pretty reliably and don't spend so much time smashing things, and also reduces the chances of them getting the drop on you from a location you can't see. I also added a short click cooldown to carp travelling through other carp rifts so people being teleported _to_ have more of an advantage over people ambushing them (this was already true for the carp creating the rift). Additionally I added an optional whitelist to the "attack obstacles to your pathfinding" AI script, and heavily culled the kind of obstacles that carp will attack to be ones which are mostly replaceable. They will still cause a mess and might even vent a room, but they won't smash vital infrastructure. Finally I replaced a couple of instances of `get_ranged_target_turf` with `get_ranged_target_turf_direct` for better precision, and player carp using the ability can now just click anywhere on the screen and it will jaunt in that rough direction. With the reduced range, having to click within its radius was pretty annoying. With these changes I ran the event 10 times in a row on kilo and then watched JoJo's bizzarre adventure for 90 minutes and when I came back the level of destruction seemed pretty reasonable (aside from the big hole where one of them ran into the supermatter and delaminated it, but if there were players around that wouldn't happen). ## Why It's Good For The Game This event was still just a little bit _too_ annoying. If something destroys important machines it should have happened on purpose via an event which was supposed to do that, rather than through chance. Or preferably just be player-driven. ## Changelog 🆑 balance: Carp can't teleport as far, but can do it more frequently. People who piggyback through their rifts will be blocked from attacking for a short duration (the same as the normal attack cooldown). balance: AI controlled carp will now be more selective about which objects they smash. Player controlled carp (or carp directly instructed to attack objects by people who have tamed them) can still attack whatever they like. /🆑 * Reduce carp migration devastation --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
a560da119f |
[MIRROR] [Ready] New Cosmic Heretic Path DLC [MDB IGNORE] (#20416)
[Ready] New Cosmic Heretic Path DLC Co-authored-by: Comxy <tijntensen@gmail.com> |