mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-04 21:56:01 +01:00
ed94de4ddf7edad8694badefc577392e0f762bf5
180 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
4f2227baf3 |
Implements a macro for checking mind traits (#76548)
## About The Pull Request  Seeing this pattern repeated over various sections of code was starting to piss me off ## Why It's Good For The Game Lessens chance to cause errors with mind traits, ensures consistent behavior, makes it easier to change how mind traits work if necessary. ## Changelog hopefully not player facing --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
2600f23ebb |
Coroner Update: Pickle-Eating Morbid Weirdo Obsessed with Death and Perfectionism (#76318)
This PR introduces a whole bunch of Coroner and Morbid related content. Firstly, Morbid is now a mind trait, and specifically, coroners start with it. Coroners also have a liver trait that allows them to heal toxins (very slowly) from eating pickles and drinking pickle juice. They also can...drink formaldehyde. I guess. Dissections is thirsty work. Coroners gain a whole set of special tools specifically for use in any surgeries marked as interests of the Morbid. This is determined by the ``surgery_flag`` called ``SURGERY_MORBID_CURIOSITY``. Currently, these surgeries are included; dissections, autospies, revival surgery, plastic surgery, organ/feature manipulations, amputations To fit the theme, TRAIT_MORBID also applies the reduction to eye snatchers. While using their special tools, and the surgery is a morbid curiosity, the coroner/anyone who is morbid gains a 30% speed boost! This stacks with the dissection speed boost. Otherwise, the tools are just regular tools with a special name (though the scalpel is better at killing undead, because, you know, you're watching over the dead). The coroner's special medkit, which is the only one you can get in a round, can fit their autopsy scanners and tools. Anything that comes standard with their kit can go back into it. Anyone who is morbid can safely retrieve the secrets of the elephant graveyard. The serrated shovel, notably, is a much better tool and notably better at killing organics, but not inorganics (like the dead). (Gives roboticists secure morgue access during skeleton crew pop totals) |
||
|
|
64eae49042 |
Replaces the Reaper Scythe with the Vorpal Scythe (also the Morbid trait) (#75948)
adds the Vorpal Scythe, a special chaplain null rod variant, replacing the Reaper Scythe, a not so special null rod variant. When you choose the vorpal scythe, it comes as a shard that you implant into your arm, similar to a cursed katana. Once implanted, you can draw it at any time like an arm implant. However, sheathing it again presents some problems. (Also, implanting the organ gives you ``TRAIT_MORBID``, which I'll explain in a bit) The Vorpal Scythe has 10 force, one of the weakest null rod variants for force that isn't a joke null rod. However, it has exceptional armor pen and also has 2 tiles of reach. So quite unique. It also has a special beheading ability when you right-click someone. This borrows some code from amputation shears, functioning pretty similarly, except with a few additional ways to speed up the action and restrictions. (It takes 15 seconds baseline to behead someone standing and conscious, and speeds up or slows down based on factors such as incapacitation and whether or not our scythe is already empowered) When you successfully behead someone with a mind, the vorpal scythe gains 20 force and can be safely stowed and drawn for 2 minutes. Performing more death knells like this will reset the timer. If it has not performed its 'death knell', or you haven't hit a living mob, then it will cause severe damage to you if you ever try and stow it (or its forced back into your arm). Just hitting a mob with the scythe will sate it for 4 minutes. Unless it is a non-player monkey. Horrible things. Just hitting mobs does not reset the timer on empowerment. What this means is that the chaplain may be more hesitant to simply draw their weapon on people. It also means that potentially, the chaplain will not always have magic immunity, since they may end up stowing the weapon away and be reluctant to draw it on a whim without either taking damage for sheathing it without hitting something, or dealing with having one less hand up until they can. While empowerment only happens when you behead mobs with a mind, beheading monkeyhumans and other mindless humans subtypes causes their heads to become haunted! It's mostly harmless and largely just SpOoKy. We don't want heads with actual players in them to go floating off to space. (Does not work on monkey heads for sanity reasons) When you have the Morbid trait, you think creepy stuff is cool and hate saving peoples lives. You get a mood boost from graverobbing, autopsies, dissections, amputations (including beheadings with the scythe and amputations with the shears) and revival surgery. However, you get a mood penalty when you tend wounds on the living, as well as a hefty penalty when you perform CPR or defibrillate someone. I was thinking Victor Frankenstein when I was choosing which actions had an associated moodlet, so anything that I might have missed would be appreciated. You also count as potentially cool with regards to haunted objects. Ghosts think you're neat. (Revenants probably will still kill you if they had the chance) |
||
|
|
7d44a4ed94 |
Fixes links to AI doc (#75940)
Arm rewrote this file in
|
||
|
|
ae5a4f955d |
Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request Signals were initially only usable with component listeners, which while no longer the case has lead to outdated documentation, names, and a similar location in code. This pr pulls the two apart. Partially because mso thinks we should, but also because they really aren't directly linked anymore, and having them in this midstate just confuses people. [Renames comp_lookup to listen_lookup, since that's what it does](https://github.com/tgstation/tgstation/commit/102b79694fa8eb57ecf7b36032616a9e368ccced) [Moves signal procs over to their own file](https://github.com/tgstation/tgstation/commit/33d07d01fd336726b4f6f6f1b61bb0b3f11a00dc) [Renames the PREQDELETING and QDELETING comsigs to drop the parent bit since they can hook to more then just comps now](https://github.com/tgstation/tgstation/commit/335ea4ad081ec63c42cfa05856e582cca833af6e) [Does something similar to the attackby comsigs (PARENT -> ATOM)](https://github.com/tgstation/tgstation/commit/210e57051df63f88dac3dd83321236da825aae5e) [And finally passes over the examine signals](https://github.com/tgstation/tgstation/commit/65917658fb8a1e7d28ae23c9437a583d646f0302) ## Why It's Good For The Game Code makes more sense, things are better teased apart, s just good imo ## Changelog 🆑 refactor: Pulled apart the last vestiges of names/docs directly linking signals to components /🆑 |
||
|
|
874ada4278 |
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. /🆑 |
||
|
|
6676702008 |
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. |
||
|
|
54dd3c864a |
basic mobs & co no longer indiscriminately perform close-range actions in the presence of obstacles. (#75687)
## About The Pull Request Currently, we don't have any such thing as a general ai_behavior flag for behaviors that need a check for if the current_movement_target is within reach or not. We could fix it case by case by slapping a `CanReach()` check in the `performBehavior()` definition of every `ai_behavior` datum that warrants it, the general issue will keep resurfacing as long as new behaviors are added to the game anyhow, while there's a lot less copypasta involved easier to apply solution to current and future instances of such issue. Worth mentioning not all ai_behaviors with required_range of 1 have this flag. Some are fairly innocuous, such as the follow command, some others kind of handle it already in a more peculiar or complex way, which is also an argument against making it a hardcoded heck for when the required_range is 1 or 0. This has been tested, though there are some rough edges and oddities also unrelated to his PR that might have evaded scrutiny. ## Why It's Good For The Game This should fix #74823, fix #69254, and fix #74713 (I guess? it could have been phrased better). ## Changelog 🆑 fix: basic mobs & co no longer indiscriminately perform close-range actions in the presence of obstacles such as directional windows between them and their target. fix: Doggos should look at you with longing eyes once again if you dare pick up an edible they are trying to eat. /🆑 |
||
|
|
83723acab0 | Turns Chickens into Basic Mobs (#75592) | ||
|
|
9ae0802ead |
Converts Killer Tomatoes to Basic Mobs (#75516)
Just another lightweight PR porting over a simple animal to the basic mob framework with zero additional AI implementation (it's a killer tomato- it spawns into the world to maul you. how much more intricate does it need to be?). |
||
|
|
e2bc712714 |
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. |
||
|
|
fa0225b05c |
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> |
||
|
|
ed2f04f486 |
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 /🆑 |
||
|
|
43473a4dac |
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> |
||
|
|
403506439f |
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> |
||
|
|
f3f274de5c |
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> |
||
|
|
4c48966ff8 |
Renames delta time to be a more obvious name (#74654)
This tracks the seconds per tick of a subsystem, however note that it is not completely accurate, as subsystems can be delayed, however it's useful to have this number as a multiplier or ratio, so that if in future someone changes the subsystem wait time code correctly adjusts how fast it applies effects regexes used git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i 's/DT_PROB/SPT_PROB/g' git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i 's/delta_time/seconds_per_tick/g' |
||
|
|
17e8000c8e |
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. /🆑 |
||
|
|
73ba9046df |
[Ready] New Cosmic Heretic Path DLC (#73915)
## About The Pull Request This PR adds a new Cosmic Heretic.      Main Paths: - Eternal Gate: Opens up the Path of Cosmos to you. Allows you to transmute a sheet of plasma and a knife into an Cosmic Blade. You can only create two at a time. - Grasp of Cosmos: Your Mansus Grasp will give people a star mark (cosmic ring) and create a cosmic field where you stand. - Cosmic Runes: Grants you Cosmic Runes, a spell that creates two runes linked with eachother for easy teleportation. Only the entity activating the rune will get transported, and it can be used by anyone without a star mark. - Mark of Cosmos: Your Mansus Grasp now applies the Mark of Cosmos. The mark is triggered from an attack with your Cosmic Blade. When triggered, the victim transport back to the Cosmic Diamond, which is the location your mark was applied to them. After getting transported they will be paralyzed for 2 seconds. - Star Touch: Grants you Star Touch, a spell that will give people a star mark (cosmic ring) and create a cosmic field where you stand. People that already have a star mark will be forced to sleep for 4 seconds. When the victim is hit it also creates a beam that deals a bit of fire damage and damages the cells. The beam lasts a minute, until the beam is obstructed or until a new target has been found. Can remove Cosmig Runes and teleport you to your Star Gazer when used in hand. - Star Blast: Fires a projectile that moves very slowly and create a cosmic field on impact. Anyone hit by the projectile will recieve burn damage, a knockdown and a star mark. - Cosmic Blade: our blade now deals damage to peoples cells through cosmic radiation. - Cosmic Expansion: Grants you Cosmic Expansion, a spell that creates a 3x3 area of cosmic fields around you. Nearby beings will also receive a star mark. - Creators's Gift: The ascension ritual of the Path of Cosmos. Bring 3 corpses with bluespacedust in their body to a transmutation rune to complete the ritual. When completed, you become the owner of a Star Gazer. You will be able to command the Star Gazer with Alt+click. You can also give it commands through speech. The Star Gazer is a strong mob that can even break down reinforced walls. Star Touch can now teleport you to your Star Gazer when Star Touch is used in hand." Side Paths: - Ash-Cosmic: Fire Fish: Allows you to transmute a pool of ash, eyes, and a sheet of plasma into a Fire Shark. Fire Sharks are fast and strong in groups, but are bad at combat. - Ash-Cosmic: Curse of The Stars: Allows you to transmute a bluespace crystal, a pool of ash, and a liver to cast a Curse of The Stars on a crew member. While cursed, the victim will recieve a star mark that lasts for at least 3 minutes. This star mark makes it so that the crew member cannot enter cosmic carpet fields. The victim will also recieve a cosmic carpet trail for at least 3 minutes. - Ash-Cosmic: Eldritch Coin: Allows you to transmute a sheet of plasma, a diamond and eyes to create an Eldritch Coin. The coin will heals when landing on heads and damages when landing on tails. The coin will heal for more, but only for heretics. Extra ability information: - Star Mark: This is a status effect that prevents people from walking into cosmic fields. - Cosmig Fields: Only block entities marked with a star mark, projectiles or throwing items will still work. Lasts only 30 seconds and 5 seconds for the Cosmig Trail trait. Some things I wanted to mention: - Why the Star Gazer is balanced: It has 3000 health and can kill people pretty fast, but at the same time, anyone can space the Star Gazer and lead it away from the heretic if they do not pay attention. - The Cosmic Heretics balancing has been carefully considered. It is relatively weak in group situations but strong in one to one combat. - Balance changes can also be made after the PR gets merged need be, or it can be test merged first. ## Why It's Good For The Game New heretic path means more choice and a different play style. ## Changelog 🆑 add: Adds new Cosmic Heretic. soundadd: Adds Cosmic Heretic sounds. imageadd: Adds Cosmic Heretic sprites. /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
6085e3b5ee |
Reagent soup / Soup rework / Stoves - A kitchen expansion (#74205)
## About The Pull Request  **This PR:** - Reworks most* existing soup into reagents. - Adds Stoves and Ranges. Ranges replace most* existing ovens. - Adds soup pots, to cook soup **How does it work?** In the kitchen you will find a stove now. Stoves act as a "reagent container heater", essentially a chem heater. You can set a pot onto the stove. To make soup, visit the cooking recipe book for a guide. Most recipes are the same as before, just tweaked slightly - Add water to the pot (50 units for 1 batch generally), then add all the corresponding ingredients to the pot. Set the pot out on the stove and right click it to turn it on. If the recipe's correct, shortly it will start to mix and give you soup! One soup recipe will give you roughly 3 servings of soup. You can pour our the soup into a bowl using a ladle or just by pouring it manually. Of note: **All of the reagent contents of the ingredient are transferred into the soup.** Better, more nutrient rich ingredients produces more soup, and poisoned produce will pass it on. If you place the soup into a chem master, you will notice it's roughly half "soup reagent" and half a variety of reagents, including nutriments / proteins. This is your soup! It is recommended you serve your soup with the reagents included, as they make up more nutrition for the customer, however you can separate it out if you're picky. **Todo:** - [x] Fill out the PR body a bit more - [x] Mapping (wait for big merge conflict pr to go past) - [x] Soup colors - [x] Balance pass over for soup recipes - [x] TODOs - [ ] Unit tests - [x] Cullen Skink's recipe is invalid - [x] Try to see if there's an easy way to prevent soup from fattening you up too easy. ## Why it's good for the game Adds some more depth to the kitchen and moves chef away from the click-button-get-food style that exists. Allows for inherently custom soups by the way of making it reagents, so no need to support custom soup food items. ## Changelog 🆑 Melbert, stove and pot sprites by Kryson, ladle sprite by Kinneb add: Kitchens are now stocked with Ranges. add: You can now print (and create) Stoves. add: The dinnerware vendor now dispenses ladles. add: Spoons can now actually spoon... things. add: Soup has been reworked entirely. Soups are now reagents, cooked via a soup pot on a Stove or Range. Simply add water and your required items, then apply heat. Be careful not to boil over! add: Stoves, Ranges, and Griddles will now heat up their surroundings - don't turn them on around plasma! fix: Fixes being able to cook in an Oven while the room is depowered qol: Hitting a customer bot with an incorrect recipe no longer counts as a hostile attack leading to your demise shortly after refactor: Customer bots that request a reagent now use custom orders code: Cut down a lot of code in the crafting menu code, and removes some ugly ispaths del: Soup is no longer food items, so can't appear in random food pools (at least not yet). balance: Virus Food recipe now requires you cool it to 200k. /🆑 |
||
|
|
966b8e5fd8 | March into Mapness: Meateor (#74070) | ||
|
|
e75a1c00aa |
Dogs will no longer harrass if they are buckled to a bed (comfy edition) (#74224)
## About The Pull Request Before, dogs were somehow magically able to drag their bed to you while barking at/chasing you. that's silly, let's fix it by checking if you're buckled, and then aborting course if we're comfy on our little bed ## Why It's Good For The Game  Fixes #74082 the dog is BUCKLED. it can't move. probably a better fix to this somehow on a very deep AI level but that wouldn't allow us to have such a soulful message (as well as potentially rule out a myriad of edge cases), so i'm proposing this one. ## Changelog 🆑 fix: If you buckle a dog to a bed, it will no longer drag its bed as it goes to bark at the mailman. It will instead be comfy and chilling, as expected. /🆑 |
||
|
|
ecbcef778d |
Refactors Regenerate Organs, and a few organ helpers (#74219)
## About The Pull Request Refactors regenerate organs to be slightly more intelligent in handling organ changes and replacements. Noteably: - We don't remove organs that were modified by the owner; such as changing out your heart for a cybernetic - We early break out of the for loop if they aren't supposed to have an organ there and remove it - We check for the organ already being correct, and just healing it and continuing if it is Also changes the names of some of the organ helpers into snake_case ### Mapping March Ckey to receive rewards: N/A ## Why It's Good For The Game ## Changelog --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
0fe4dea03f |
Audits usage of isanimal() vs isanimal_or_basic_mob() (#74029)
## About The Pull Request There's a couple of open issues which fix places where only simple animals were considered, but they are doing it piecemeal. I decided to just go through every instance of `isanimal` or `subtypesof(mob/living/simple_animal)` I could find, identify which should also affect basic mobs, and fix them. I left out the two others which are already in PR, I'm not stealing your GBP. Fixes https://github.com/tgstation/tgstation/issues/68881 ## Why It's Good For The Game Consistency, mostly. As far as I can tell all of these things _should_ have effected basic mobs, but didn't. This fixes a fair number of bugs but also they're bugs that nobody noticed or reported. There are a couple of places I did not update which will need updating in future. These are: - Dextrousness checks, because basic mobs don't have that yet. - The Charge cooldown action, because frankly I couldn't tell what it was trying to do. alright here goes ## Changelog 🆑 fix: Carp will once again be healed from being near carp rifts fix: Sepia slime cores and the rewind camera now work on Ian fix: Sapient ridden carp (or cows) can throw off their riders by shoving them, or by performing the spin emote. fix: Giant Spider AI will be disabled by the timestop spell fix: Ian can eat envirochow fix: Mice, Frogs, and Cockroaches will no longer set off bear traps fix: You can put a macrobomb implant into Cayenne (or Ian) fix: Ian will now recognise that being squeezed by a cyborg is a nice hug fix: The player panel will tell admins if you're currently a corgi fix: The staff of storms deals massive damage to Bileworms and Giant Spiders fix: Ian will whimper if forced to scream fix: Slimes can consume space carp fix: Mice can be captured in xenoballs fix: You can use pacifying potions on Giant Spiders fix: Sgt Araneus can be fitted with a xenobiological radio implant fix: Sapient corgis no longer count as living players for the purpose of highlander escape objectives fix: The random sentience event can now target corgis and sergeant araneus add: The random sentience event can target a wider array of farm animals fix: Petsplosion wizard event can target corgis add: Petsplosion wizard event will now target farm animals and mothroaches fix: The colossus possession crystal can now actually possess the cockroach it spawns, does not kill you instantly upon ending possession /🆑 |
||
|
|
1cdc327a8f |
Station Trait: Spider Infestation (#73893)
## About The Pull Request Hate having your cables eaten by mice? Nanotrasen have heard your complaints and settled on a natural, _organic_, and eco-friendly solution. When this station trait is active, roundstart and event mouse spawns have a chance to instead be replaced with duct spiders (both will exist, it doesn't remove mice). Duct spiders are largely harmless to humans, actively hunt other maintenance creatures (such as mice), and have only one _tiny_ downside.  These mobs can also sometimes be spawned by a minor scrubber clog event. As a side note, all spider basic mobs with AI (except Araneus) will now try to automatically fill a small area around them with webs. Also I made it so that mobs will ignore their random_walking behaviour if they're engaged in a `do_after`, just in case. ## Why It's Good For The Game Adds a little bit of variety to things which can slightly annoy you in maintenance. Spiders will automatically make places they live in look like spiders live there. ## Changelog 🆑 add: A station trait which sometimes populates maintenance with small spiders. You can wear them as a hat if you wanted to have a spider on your head for some reason. add: Spider mobs will automatically start webbing up their environment. /🆑 |
||
|
|
89cfb09378 |
[no gbp] Fixes the dog fetch command (#73516)
## About The Pull Request I broke this in a so-called "refactor" by forgetting to pass an argument. It works again now. ## Why It's Good For The Game It's a fun thing for dogs to do. ## Changelog 🆑 fix: Pet dogs will once again fetch items for you /🆑 |
||
|
|
20a1e1e913 |
Fixes seeing monkey ai examine text if the monkey doesn't have eyes to look primal with. (#73166)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request Refactors ai datum examines to use noticable organ elements. ## Why It's Good For The Game This preserves the original examine on monkeys and allows future examines to be dependent on the state of the species, so the examines are less generic. But if you want generic, it's supported! ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 refactor: Monkey AI descriptions of "primal eyes" no longer show if the monkey is missing eyes. /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> |
||
|
|
7c30d9d746 |
Basic Wumborian Fugu & Fugu Gland (#73415)
## About The Pull Request Fixes #72677 and also converted the "Wumborian Fugu" mob to a basic mob rather than a simple one. I will be totally honest: I didn't need to do that in order to fix the bug. I just didn't like looking at the rest of the code in that file. Also I have some kind of sickness which makes me do this. This ended up being one of those "see something related and fix it as well" ones so there's a couple of only tangentially related changes in here. If you want me to split it up I will but I think this one is _probably_ fine because the wide-ranging changes are pretty simple ones? So what this PR does is: - Refactors simple mob into basic mob. - Cleans up its really ugly ability to work in a hopefully nicer way. - A one line fix to the linked issue above. - Modifies the default cooldown on `basic_melee_attack` and `attack_obstructions` to be a widely used cooldown rather than a random value used by no mob that we have. - Renamed behaviour "try_mob_ability" to "targeted_mob_ability" and added a new AI behaviour called "use_mob_ability", the difference between the two being that the former requires a target and the latter does not. I... don't actually use this because I realised after adding it that I still want a target for this mob, but someone will need it eventually. - Change everywhere that is passing references to abilities to actions to pass weak references instead. - Adds an element to handle "spawn this stuff when a related mob dies". - Found a few places where people were setting `environment_smash ` as if it did anything (including me) and replaced them with the proper ai_controller implementation instead, updated the comment to make it clearer although that won't prevent copy/paste errors. - Registered to the "movement speed updated" signal to ensure that basic mobs actually notice that you have applied a movement speed modifier. ## Why It's Good For The Game Fixes a linked issue. Refactors some code which made me sad whenever I saw it. Restores some mob behaviour which nobody noticed was missing, but was. Fixes some apparently unreliable code I added in a recent PR reliant on basic mobs using movespeed modifiers. Adds element we will definitely need again in the future. ## Changelog 🆑 fix: The Fugu Gland can once more be used on Ian, Carp, Giant Spiders, or other basic mobs. fix: Syndicate mobs will once again attack windows to try to reach you, and space ruin spiders won't. fix: Netherworld-themed mobs will correctly adjust their speed as they take damage. refactor: Made the Wumborian Fugu into a basic mob, which should act largely the same way but may have slightly different speed and reaction times. /🆑 |
||
|
|
cbbf7b3613 |
Basic Mob Spiders III: Sgt. Araneus is no longer a bat (#73350)
## About The Pull Request This PR converts giant spiders into basic mobs and resultingly fixes #37793 They _should_ have the same behaviour as their simple mob versions although I can't verify that their movement speeds are _exactly_ the same. It should at least be pretty close. A quirk of spiders is that they had a pretty large `move_to_delay` which made them slow in the hands of AI (because it would just pause for ages between taking steps) and faster in the hands of players, and they often appear in both forms so I had to implement this as a speed modifier based on player control. Additionally this is the first basic mob which can be set on fire. This is currently implemented as a var on `mob/living/basic` but I know there was some annoyance at adding the environment tolerances as vars on there so if desired I can try and extract it out, I'm just not sure how easy it will be. Something else I noticed is that spiders seem to take stamina damage from bug spray... but stamina damage does nothing to either simple _or_ basic mobs. I have left it in for now in case I am missing something, and rebalancing it to do something else would be more like a balance change. Oh also I killed the `mob/basic/retaliate` folder because that isn't a classification that needs to exist or makes sense. ## Why It's Good For The Game We don't want to use simple mobs any more. Sergeant Araneus can finally actually be a spider, instead of being a bat. ## Changelog 🆑 refactor: Spider code has been refactored and AI-controlled spiders may have slightly different movement or reaction times. fix: Basic mobs can now be slowed when they take stamina damage, however currently only spiders actually _can_ take stamina damage. fix: Spiders should now more reliably disable their AI when controlled by a player. fix: Araneus is no longer considered to be a bat and so cannot fly. fix: Araneus is no longer considered to be a bat and so is no longer frightening to people who are scared of the supernatural. /🆑 |
||
|
|
f1d93b694d |
Basic Mobs can no longer melee attack you from an arbitrary range (#73294)
## About The Pull Request Fixes #73237 So, this seems to be an interaction between targetting and the flag `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION`. When a mob starts the melee attack action it sets up its attack target as its movement target. Once it is in range of its movement target then it starts running attacks on its attack target. If a mob puts a target into crit then it ceases to be a valid target. If `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` is set on a behaviour then it will continue to plan and run other actions. The targetting action will notice that our current attack target is invalid and retarget it _between_ executions of the attack action. The attack action _doesn't_ call setup again at this point, so it does not set the new target as its movement target. The attack action executes, is still next to the current movement target, so continue to attack the attack target even though that target has changed. Result: Carp can attack you from the other side of a room if they have first empowered themselves by consuming the soul of your coworker. There's a few fixes for this but none of them seem... precisely clean. I have gone with the one which I think is most "robust" in that it should fix this case in all future scenarios, but it has its own downsides. That is: Whenever the targetting action acquires a new target it will manually cancel all further queued actions, which forces everything following to call setup again. The obvious downside here is that this means that the AI will acquire a target and not immediately act on it within the same processing loop. It will now have to wait until its turn comes around again to do anything with a newly acquired target, making them slightly slower to react to things based on how often the subsystem is acting. This might be beneficial to players in some ways in that it gives you a moment of grace to react to an AI acquiring you as a target which was present in simple mobs and not basic mobs but probably we do just want them to act as responsively as possible. Alternate ideas were: - Validate the target and range again in the `perform` action. I didn't go with this because it feels like it _should_ be redundant with the controller validating the distance to the movement target already, is much more fragile and easy to miss on an extended or new action, and would need to be done individually in all actions which require a movement target. - I could replace `CancelActions()` here with a new proc which cancels actions and then instantly reruns this mob's behaviour selection and runs the new list of actions. That sounds a little bit scary to me, and might risk a loop? - Refactor movement target to be more tightly controlled by actions and not a property of the AI controller at all. This would be some work, reduce future possibilities (we have some flags to preserve movement target between actions which are just... not currently used) and might not actually solve the bug anyway. - Investigate `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` and figure out if there is some way to ensure it calls setup at an appropriate time. I cannot figure out how this would be possible, because the trigger is essentially "an arbitrary blackboard key has changed value" and the result would probably have the same downside as the current implementation anyway. Being able to change blackboard keys while executing other actions is kind of the point of `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` really. - Remove `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` from the attack behaviour. This would fix it for attacks but potentially remain for other future actions. It would mean that behaviour which relies on this (such as carp fleeing, I think? I don't remember precisely why it's on there only that we wanted to be able to change our minds and stop attacking without coding that specifically into `perform`) would have to be adjusted to add more checks to the attack action, and might result in an eventual proliferation of specific attack actions which exist only to track specific circumstances to interrupt the attack loop, which doesn't seem ideal. If you have any better ideas than this or those listed let me know. ## Why It's Good For The Game When you give a mob the "basic melee attack" behaviour you really expect that to mean that it will attack things that are next to it. ## Changelog 🆑 fix: Hostile Basic Mobs such as carp, rats, and moonicorns will no longer gain the power to bite anyone they can see regardless of distance and intervening obstacles upon defeating their first target in combat. /🆑 |
||
|
|
7e41cd3c0b |
Netherworld Mobs Refractor (#73086)
## About The Pull Request This PR refactors netherworld mobs into basic mobs as best as possible. Also makes some of them run faster when they are getting damaged or deal more damage. Now the mobs might be able to keep up a little with the players. ## Why It's Good For The Game Makes the mobs have better movement and more dynamic movement. Makes the quality of these mobs better. ## Changelog 🆑 add: Added new damage buffs for netherworld mobs refactor: Refactors netherworld mobs into basic mobs /🆑 |
||
|
|
bd81d32080 |
Makes some improvements to how AI can use JPS with movement loops (#72685)
## About The Pull Request This PR makes some changes to how JPS is used in movement loops, as it was causing a variety of issues: - Fixed some code where JPS would fail because the path is still being made. Instead, the movement loop will now wait. - Reduced the subsystem wait for the pathfinder subsystem from 2 seconds to 0.1 seconds. @LemonInTheDark told me that this is better, I'll update this with a better explanation once I squeeze it out of him :D - Allows you to provide an initial path to the movement loop, in case you pre-calculated one while making a plan. ## Why It's Good For The Game Makes working with JPS a bit easier when making AI. --------- Co-authored-by: Capybara <Capybara@CapybaraMailingServices.com> Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
c097f167b1 |
Completely removes do_mob and do_after_mob (#73117)
## About The Pull Request This is a remake of #70242 Replaces all instances of ``do_mob`` and ``do_after_mob`` with ``do_after``. ## Why It's Good For The Game All 3 of these are just copy pastes of eachother but some miss some features (like do_after not checking for target loc change, which helps towards fixing https://github.com/tgstation/tgstation/issues/66874 though it doesn't because mechs are setting ``do_after`` on the mob in the mech) and signals only being used on ``do_after``. ## Changelog 🆑 fix: Mechs should now cancel out of drilling when they move. /🆑 |
||
|
|
66cb9133c4 |
Dominate & Lazarus Inject basic mobs. Lazarus Injected mobs don't fight each other. (#72440)
## About The Pull Request Fixes #72404 The Lazarus Injector doesn't currently work on basic mobs, but should. Problem: The EMPed state of the Lazarus Injector is intended to make a revived mob hostile to everyone except you, including other mobs you have revived wtih an EMPed Lazarus Injector. This is trivial to achieve for Simple Mobs which essentially all share the same AI, but I could not think of a single workable solution for Basic Mobs which don't, or at least any which didn't come with a tedious requirement to closely consider this niche item when programming any additional AI. Solution: Change the default behaviour of the Lazarus Injector so this is not a problem. If all it does it make the mob loyal to you _and_ friendly to other mobs which are loyal to you, then it's pretty easy because we can just use the existing faction flags. This is unambiguously a buff to using the item for nefarious purposes as now if you revive four ice drakes and fulton them onto the station they won't kill each other until only one is left, but is the only workable solution I could really think of. A lot of the very dangerous mining fauna can't be dragged so transporting your army to the station still poses a question. The alternate solution was just to replace the AI controller of any emp-revived basic mob with a "zombie" AI controller, but this has the problem that A- It would now make things like cows and dogs into hostile creatures when they previously weren't. B- It loses any interesting behaviour the mob previously had and for cases like Bileworms doesn't even make any sense (they'd try to walk and just get stuck in place). This ultimately leads to needing to make bespoke versions for various mobs, which doesn't seem desirable from a maintainability standpoint. As a side note it's still not a great idea to revive Bileworms _anyway_ as, their ability to move is tied to their ability to attack so once they don't have a target they will just kind of sit there and if they _do_ get a target their attempts to help you fight are difficult to distinguish from attempts to kill you... but at least being able to revive them makes it easier to make one sapient if you really want to trap a player's mind inside a body which is incapable of leaving lavaland. Additional edit: At Fikou's suggestion I've also added a sentience comparison proc to `mob/living` and removed some code duplication which dealt with this problem in the sentience/mind transfer potions, as well as added it to the Dominate spell. ## Why It's Good For The Game This device is meant to revive mobs and it shouldn't be required for players to memorise an arbitrary list of which mobs it does and doesn't work on. Especially as the goal is eventually that all simple mobs should be basic mobs. This way of working is more intuitive, even if it is also stronger. I was surprised when I used EMPed injectors and my "new minions" just killed each other. ## Changelog 🆑 fix: You can now revive 'basic mobs' with a Lazarus Injector, such as dogs, cows, axolotls, or carp. fix: The same category of mobs can also now be effected by the Runic Golem Dominate spell. fix: Basic Mobs will switch target if they can no longer attack their current target; meaning that if you become a Bileworm's friend it will stop attacking you. balance: Mobs injected with the Lazarus Injector while it is EMPed will no longer attack other mobs revived by EMPed Lazarus Injectors. /🆑 |
||
|
|
4c50e64fb8 |
Merge skew mondays second merge skew (#72908)
This #72799 skewed with one of the AI PRs MERGE SKEW MONDAYSSSSS Shit also just shouldnt register signals in a getter Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
98f6e678b2 |
Fixes monkey humans having their AI turned on when revived (and having a client) (#72799)
## About The Pull Request Stops on_stat_changed turning on AI with a client makes monkey humans not wack ## Why It's Good For The Game fixes #72432 ## Changelog 🆑 fix: Monkey Humans no longer have their AI turned on upon revival /🆑 |
||
|
|
b485ad1e47 |
New Mob [Garden Gnomes] (#72672)
## About The Pull Request Garden gnomes can go into the ground when they stand still for a while. If they are damaged and underground they will heal. If they are underground they will also gain damage resistance. They can make people trip when underground and deal some damage. They are available through golden slime cores or you can collect them from cargo with an emag. If one of them gets damaged they will all retaliate against the attacker. They have a very realistic colour pallet based on online gathered data. Depending on their colour pallets some of them have a very low chance of spawning. ## Why It's Good For The Game These new garden gnomes come with expanding the world building of space station 13. These gnomes will add more variety to the game play and use an interesting AI and behavior that interacts with the player.   ## Changelog 🆑 add: Adds garden gnomes. imageadd: Adds garden gnome sprites. /🆑 |
||
|
|
c500ccb9ea |
Replaces outdated AI guide with a new one (#72724)
## About The Pull Request replaces and updates the old guide ## Why It's Good For The Game This one's better! |
||
|
|
4fe99fbf1e |
Basic mobs won't shoot walls / Basic mobs won't leave permanent bullet casings (#72494)
## About The Pull Request Basic mobs using the generic ranged attack behaviour will now not attempt to shoot a target which they can no longer see. If they can still see you through a window that's fine because shooting in your direction will probably break the window eventually, but a mob knowing you're on the other side of a wall and pointlessly firing at it isn't useful. Additionally, adds a component to bullet casings fired by basic mobs which deletes them after 30 seconds. https://user-images.githubusercontent.com/7483112/211012442-027455c7-2846-426e-89fb-c8c89d891e4f.mp4 Here's a demonstration but sped up so they vanish after 5 seconds instead. ## Why It's Good For The Game  We're not actually sure that's where these 75,000 bullet casings came from (it's probably related to that pAI down there) but it's one way it could happen. Players with limited ammo leaving persistent bullet casings should rarely be a problem, mobs have infinite ammo and so should not be able to generate infinite debris. Having them just sort of disappear after 30 seconds is... less than immersive, but I feel like it's better than the alternative. You can attach the element to other things to thanos snap them if you want. ## Changelog 🆑 fix: Syndicate mobs will no longer attempt to shoot you through walls, building up massive piles of empty bullet casings in the process. qol: Bullet casings from "weapons" fired by certain mobs will clean themselves up after 30 seconds. /🆑 |
||
|
|
8dc3fb19f2 |
Some tweaks to mobs running away (#72529)
## About The Pull Request Mice running away behaviour wasn't working quite how it was supposed to due to a couple of bugs. First of all, the action was written as if it would `perform` every tick, which it doesn't. This means that the code checking if you had left line of sight didn't function, meaning mobs would continue fleeing you even when they couldn't see you any more. Secondly, mobs spent an awful lot of time pathing into walls which was especially noticeable on mice who just would _not_ stop repeatedly squeaking in a way that is kind of funny but gets old when you keep hearing it. Now the pathing stops if it hits a barrier. I'm not... totally fond of this solution because it has a few assumptions baked in (that we want to try and path through doors even if they're dense for one) but I can't for the moment think of a better "path away from" implementation that isn't way more complicated, and this doesn't really need to be complicated. For good measure I noticed a couple of other actions weren't passing a `source_atom` into `is_blocked_turf` so rats were potentially attacking "obstacles" they could simply walk over. Additionally a couple of places were setting `controller.movement_target` directly instead of using the helper method which has a minor risk of runtiming under certain conditions. ## Why It's Good For The Game Mice will stop constantly screaming if they can see someone, and should repath once they have a different escape route more quickly rather than dedicating themselves to trying to burrow through an iron wall. Rats won't bite at tables and racks they can just climb over. ## Changelog 🆑 fix: Mice won't try to path through walls to escape from sight and constantly squeak. fix: Mice will stop running away from you if they can't see you any more. fix: Rats won't bite racks and tables while passing over them. /🆑 |
||
|
|
d650a1a7cb |
Basic mobs don't become dense upon death (#72554)
## About The Pull Request In #72260 what was previously a var became a flag, which was a sensible change, however this inverted the default behaviour. In virtually all cases we want dead mobs to _stop_ being dense, this added a requirement for the flag to be present for that to happen and then didn't add the flag to any mobs. Rather than add this to every mob I inverted the function of the flag. My reasoning here is that _simple_ mobs seemingly never required this behaviour, basic mobs are probably going to need it rarely if ever, and including it in `basic_mob_flags` by default seems messy and easy to leave off when setting other flags (plus #72524 implies to me we want to avoid adding more default values). Setting this manually on each mob seems kind of silly as a requirement going forward and I can't think of a way we'd unit test for people forgetting. For the same reason I did the same thing with the `STOP_ACTING_WHILE_DEAD` flag I added to the AI controller in a recent PR, the flag should denote unusual behaviour not the default. ## Why It's Good For The Game It looks really odd when you're constantly shuffling places with dead mobs, they're not supposed to do that. It's tedious to add `STOP_ACTING_WHILE_DEAD` to every AI controller when that should be an obvious default assumption. ## Changelog 🆑 fix: Dead basic mobs are no longer "dense" objects and can be stepped on. /🆑 |
||
|
|
40a3363525 |
Basic Faithless Mob (#72479)
## About The Pull Request Turns the faithless mob into a basic mob with unique behaviors, it will now break lights and drag around victims bodies. Can also punch open airlocks if they can be opened. ## Why It's Good For The Game Now the faithless mob has its own unique behavior and it is cool to see more AI variety. ## Changelog 🆑 add: Faithless will now also break lights and drag victims around refactor: Faithless into basic mob /🆑 |
||
|
|
6200bc2360 |
Basic Mob Carp IX: Carp Rifts & Migration (#72265)
## About The Pull Request The almost-final part of the much larger PR I tried to make a month ago (there's actually one more thing but I'm waiting on a dog PR to get merged first). This adds _new_ behaviour and abilities to carp. Now when a Carp Migration occurs, all of the space carp who are spawned are given a path through the station. Specifically, each carp which shares a z level will try to path to a specific station area, then back out into space. https://www.youtube.com/watch?v=0KtTI4_7a0c Here in this video we follow one carp and its friends as it attempts to navigate "Kilo Station" in order to return to its ancestral spawning grounds, via the dormitories. Why are there walls underneath those windows? That's a question nature has no answer for. In order to ensure that they don't destroy Arrivals, Departures, and anywhere else with windows in the process of trying to get inside they have also gained a new "Lesser Carp Rift" ability. This allows carp to teleport a short distance once per minute, leaving a rift at their exit point. Any other mob can enter the rift to travel to a similar location to the space carp (within the same 3x3 area). https://user-images.githubusercontent.com/7483112/209584254-afb5839b-a1cd-4c5a-b701-dbb47a024272.mp4 Teleporting puts their attack on a one second cooldown so you won't be _immediately_ bitten for 20 damage out of nowhere. Their AI has been updated appropriately and they will use these abilities: - If they're trying to migrate through the station and encounter an obstacle. - If they're trying to atack something and encounter an obstacle. - If they're trying to run away, as soon as possible. https://user-images.githubusercontent.com/7483112/209584287-4402bf5b-3c41-4603-9205-5c4da8b4cd1c.mp4 That last point includes the HoS's pet Lia, who is an occasional target of traitor objectives, which can either work in your favour (scaring her to a less secure location) or against it (wait, where did she go?). Also this fixes an embarassing bug where space carp weren't spaceproof but I am going to pull that out into its own PR so it can be merged without also needing to review this. ## Why It's Good For The Game Carp are an iconic space animal but also quite boring, which this hopefully remedies. In the current game the Carp Migration event announces itself to the crew and usually advertises to ghosts that a cool shark mob has spawned and this changes essentially nothing about the round, the only people Carp will usually attack are people who go out to set up the solars, and the occasional wandering curator or lone operative. This should make the announcement mean something, as suddenly it means a belligerent animal might unexpectedly try to pass through your workplace. Non-magical space carp are weak enough that even an unarmed spaceman can take on one or two at a time (and even being mildly armed with makeshift weapons you have around makes them fairly non-threatening) but it can give you a bit of excitement. The ability for Carp to teleport allows them to do this without causing _too much_ property damage or breaching the station, in my tests they will _generally_ find a way in which doesn't involve them busting windows open en masse. Also it just makes them a bit more interesting. Traitors with dehydrated carp are not much able to make use of the Carp Rift ability as there isn't any way to get them to do it on demand, but you could spawn one which is not allied to you and then try to scare it in an appropriate direction which I think is a fun use of the item. This undoubtedly will make Space Dragon player-controlled carp more dangerous in a way which is difficult to predict, but it also makes playing as them more fun and might encourage some guerilla tactics and cooperation which wasn't previously possible. ## Changelog 🆑 add: Space Carp seem to have begun associating the station with food and attempting to enter from the outside, rather than simply congregating around solar panels. Employees are advised that these are wild animals, and should not be fed. add: Space Carp can intermittently teleport short distances, leaving a short lived rift which other nearby carp will be attracted to follow them through. /🆑 Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
c5399a64c5 |
Prevent basicmobs from attacking mobs inside indestructible objects (#72353)
## About The Pull Request Targetting datum for basicmobs now calls targets inside indestructibles invalid ## Why It's Good For The Game Fixes #72250 ## Changelog 🆑 fix: Basicmobs can no longer shoot mobs inside indestructibles /🆑 |
||
|
|
eb6c0eb37c |
Dogs use the Pet Command system (#72045)
About The Pull Request Chiefly this refactors dogs to use the newer component/datum system for "pet which follows instructions". It also refactors it a little bit because I had better ideas while working on this than I had last week. Specifically, instead of passing around keys we just stick a weakref to our currently active behaviour in the blackboard. Basically the same but skipping an unecessary step. Additionally it adds a component for the previous "befriending a mob by clicking it repeatedly" behaviour which hopefully we won't use too much because it's not very exciting (I am planning on replacing it for dogs some time after Christmas). The biggest effort in here was making the Fetch command more generic, which includes multiple behaviours (which might be used on their own?) and another component (for holding an item without hands). Additionally I noticed that dogs would keep following my instructions after they died. This seems unideal, and would be unideal for virtually any AI controller, so I added it as an AI_flag just in case there's some circumstance where you do want to process AI on a dead mob. Finally this should replicate all behaviour Ian already had plus "follow" (from rats) and a new bonus easter egg reaction, however I noticed that the fetch command is supposed to have Ian eat any food that you try to get him to fetch. This has been broken for some time and I will be away from my desk for a couple weeks pretty soon, so I wrote the behaviour for this but left it unused. I will come back to this in the future, once I figure out a way to implement it which does not require adding the "you can hit this" flag to every edible item. Also I had to refit the recent addition of dogs barking at felinids to fit into this, with a side effect that now dogs won't get mad at a Felinid they are friends with. This... feels like intended behaviour anyway? Why It's Good For The Game It's good for these to work the same way instead of reimplementing the same behaviour in multiple files. Being able to have Ian (or other dogs) follow you around the station is both fun and cute, and also makes him significantly more vulnerable to being murdered. Changelog cl add: Ian has learned some new tricks, tell him what a good boy he is! add: Ian will come on a walk with you, if you are his friend. refactor: Ian's tricks work the same way as some other mobs' tricks and should be extendable to future mobs. fix: Dogs no longer run at the maximum possible speed for a mob at all times. add: When Ian gets old, he also slows down. Poor little guy. add: Dogs will no longer dislike the presence of Felinids who have taken the time to befriend them. /cl |
||
|
|
e7d788348f |
Frog Basic Mob Refactor (#72044)
## About The Pull Request Refactors the frog into a basic mob. The frog now does the same as the old frog and can now properly be commanded by the regal rats. ## Why It's Good For The Game ## Changelog 🆑 refactor: Refractors the frog into a basic mob /🆑 |
||
|
|
3daf3b0643 |
fixes silly stuff about basic mobs (#72260)
## About The Pull Request makes basic mob attacks call their default attacks when done by a player, rather than calling simple mob attacks makes basic mob attacks call simple animal attacks by default, until we remove simplemobs moves some stuff off to procs and flags, fixes some stuff ## Why It's Good For The Game im moving holoparasites to basic mobs and i literally cant give them secondary click attacks ## Changelog 🆑 fix: fixes moonicorns not applying pax /🆑 |
||
|
|
2f0abeda30 |
Dogs now bark at felinids and mailmen (#72134)
## About The Pull Request AI dogs can now rarely bark and paw at nearby felinids and people wearing mailman clothing. Also fixes dog harass/attack AI to now only close within 3 tiles of a target before stopping, and only attacking if the target approaches them (or the dog is pushed into them I guess) like originally intended. ## Why It's Good For The Game Adds more little fun moments and life to the game. also grrr cats ## Changelog 🆑 Ryll/Shaps add: Dogs will now occasionally bark at their two mortal enemies: felinids and mailmen fix: Dogs set to attack will now only close within 3 tiles of their target, and must be approached further by their target (or pushed next to their target) to actually attack /🆑 |
||
|
|
b174af7661 |
Basic Mob Carp Part VIII: Basic Mob Carp (#72073)
## About The Pull Request Wow we're finally here. This turns carp into Basic Mobs instead of Simple Animals. They use a variety of behaviours added in previous PRs to act in a marginally more interesting way than they used to. But don't worry there's still 2 or 3 PRs to follow this one until I'm done with space fish. Changes in this PR: Carp will try to run away if they get below 50% health, to make use of their "regenerate if not attacked" component. Magicarp have different targetting behaviour for spells depending on their spell; - Ressurecting Carp will try to ressurect allied mobs. - Animating Carp will try to animate nearby objects. - Door-creating Carp will try to turn nearby walls into doors. You can order Magicarp to cast their spell on something if you happen to manage to tame one. The eating element now has support for "getting hurt" when you eat something. Carp eating can rings and hating it was too soulful not to continue supporting. ## Why It's Good For The Game Carp are iconic beasts and I think they should be more interesting. Also we just want to turn mobs into basic mobs anyway. ## Changelog 🆑 add: Carp will now run away if their health gets low, meaning they may have a chance to regenerate. add: Lia will now fight back if attacked instead of letting herself get killed, watch out! balance: Magicarp will now aim their spells more intelligently. add: Tame Magicarp can be ordered to use their spells on things. refactor: Carp are now "Basic Mobs" instead of "Simple Mobs" fix: Dehydrated carp no longer give you a bad feeling when they're your friend and a good feeling when they're going to attack you. balance: Tamed carp are now friendly only to their tamer rather than their whole faction, which should make dehydrated carp more active. Order them to stay or follow you if you want them to behave around your friends. /🆑 |
||
|
|
100cb71111 |
Turned most syndicate mobs (+ viscerators) into basicmobs (#71871)
## About The Pull Request Turns the syndicate simpleanimals into basicmobs: (+ stormtrooper, + space variants) Base Mob, Knife syndies, pistol syndies, SMG syndies,shotgun syndies, viscerators also changes some instances of the simple_animal path into the basicmob ones Removes civillian syndicates which were useless and also completely unused Also removes mech pilots:  Also, makes the basic targetting datums health check configurable basic attack behavior can now fire in bursts https://user-images.githubusercontent.com/70376633/206766607-cf2e3659-0c5e-4117-9af7-e573e35bdf80.mp4 https://user-images.githubusercontent.com/70376633/206766630-15b4469f-68be-44c7-9394-1f2b6fe07811.mp4 https://user-images.githubusercontent.com/70376633/206766613-69b42457-a03b-449d-a1b8-a5aa556c76e5.mp4 https://user-images.githubusercontent.com/70376633/206766619-5560a178-8d2f-4b22-adf1-22ace6f63a51.mp4 https://user-images.githubusercontent.com/70376633/206766627-e671d064-fd9e-4204-b823-aa2e07f7fc26.mp4 https://user-images.githubusercontent.com/70376633/206766633-108c1574-3554-4bc1-a9ac-8faed0ec4062.mp4 ## Why It's Good For The Game simpleanimal stinks basic mob good syndicate AI was really bad to begin with so here we are ## Changelog 🆑 code: Turned most syndicate mobs into basicmobs, making their AI better and (possibly) more deadlier! del: Removed syndicate mech pilots and syndicate civvies /🆑 Co-authored-by: kawoppi <94711066+kawoppi@users.noreply.github.com> |