mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-22 06:56:31 +00:00
0d2ce3cd87d3d47efeeac2b9475fc0c6d79fa45f
199 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
55c41fb9ad |
basic honkbots (#81920)
## About The Pull Request this refactors honkbots into basic mobs. its mostly a faithful 1:1 refactor but i couldnt keep my hands to myselves so i gave them some new behaviors. honkbots now love playing with clowns, they will go seek out for clowns and celebrate around them. also, if the honkbot finds a banana peel or a slippery item near it, it will actively drag people onto them honkbots will now go out of theirway to mess with secbots and annoy them ## Why It's Good For The Game refactors hinkbots into basic bots and also undoes some of the silliness i did in the previous basic bot prs. i also added lazylist support to remove_thing_from_list. ## Changelog 🆑 refactor: honkbots are now basic mobs, please report any bugs add: honkbots will try to slip people on banana peels /🆑 |
||
|
|
8442124bcd |
Gondolas are now basic mobs (#83451)
## About The Pull Request This PR turns gondolas into basic mobs and does some fiddling with gondola pods Their verbs are now action buttons which they lose upon delivering. If set to stay, they won't have their abilities afterwards (or wont get them in the first place if the delivery is already done). Lets them survive without a pod requirement in case admins want to spawn one for their own stuff, so I also removed it from the snowflake checks to exclude them from stuff. Also replaced the hardcoded "cant speak" with simply giving the mute trait, so admins can make gondolas speak if they want to for any reason. ## Why It's Good For The Game The pet level of simple animals can finally be killed off, also gives admins more control over gondola-related stuff if they so wish. ## Changelog 🆑 refactor: Gondolas (including gondola pods) are now basic mobs. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
761b14ef7c |
lavaland raptors (#82537)
## About The Pull Request adds raptors to lavaland. these are creatures that have been created through countless xenobiological experiments by nanotrasen to breed an animal that can withstand the harsh conditions of lavaland and aid miners. theres now a new ranch miners can access bottom right to the mining base  this ranch starts somewhat empty as most raptors have escaped containment and are now scattered all across lavaland, u can find them and return them to ur ranch. in order to tame a raptor, u first need to prove to it that ur a capable master. when u try to ride it, a little minigame prompt will pop up  in this game, the bird's icon rapidly changes direction and u have to quickly click the arrow thats OPPOSITE to the direction its facing several times before the direction changes. if you fail 3 times itll knock you off and run away, however if u win it will deem u a suitable master and listen to your orders. There's many different breeds of raptors you can find across lavaland, all with different capabilities: red raptors: these excel at combat and can be very useful for dealing with lavaland mobs or defending the node drone yellow raptors: are very speedy mounts, theyll get u from point A to point B in record time green raptors: they are the tankiest type of raptor and are very good miners. while mounted, they will clear any rock walls in their path purple raptors: can store items in them. they have a decent storage size allowing players to carry more items across trips white raptors: are able to heal other injured raptors. having one in ur party would be very useful as they can nurse the combat raptors back to full health when they need it blue raptors: produce very nutritious milk with healing capabilities. having 1 or 2 of these back at ur ranch would be very useful black raptors: by far the rarest breed, its very unlikely that ull be able to get one of these, but in the case u do, they have the combat capabilities of the red raptor, speed of the yellow raptor, and tankiness of the green raptor. Breeding different colored raptors together can net u an entirely new colored raptor. each breed has atleast 1 guaranteed combination of parents that it will result out of. you will also need to maintain a good friendship bond with ur raptors, this is done by feeding them, grooming them, and petting them. u can see the strength of ur bond by SHIFT clicking them. more hearts indicate a stronger bond  having higher friendship bonds means ur raptors will perform better in combat, and in the case of blue raptors, they will produce more milk. Maintaining friendship bonds with baby raptors and keeping them happy will also encourage them to grow faster U can also analyze raptors using the new raptor-dex device available at ur ranch  the inherit modifiers indicate how strong this raptor's offspring will be. raptors inherit attack and health stats from both their parents, breeding raptors with higher inherit modifiers means the offspring will be stronger. raptors will also inherit some traits from their parents that will change how they will act around u and around other raptors, some of them being: Playful: raptors will play with their masters and tease them motherly: raptors will care for baby raptors, this will encourage baby raptors to grow quicker depressed: means its hard to keep this raptor happy and friendship bonds will deteriorate faster if not given enough care. coward: makes them flee combat if severly injured, ditching u to the wolves trouble maker: makes them attack other raptors at the ranch. however, trouble maker raptors will not attack other trouble maker raptors, instead they will form posses and bully raptors together. it might be a good idea to isolate them from the other raptors raptors primarily consume ores. to feed raptors, you need to place ore into the food troughs at the ranch. they are too civilized to eat ores off the ground or directly from ur hand, they will only eat it if its in their trough  beautiful raptor sprites by spessmenart! (rest are codersprites) ## Why It's Good For The Game adds a new layer to lavaland mobs, and gives miners new interesting tools and ways to tackle the challenges of lavaland. ## Changelog 🆑 sheets, spacemenart, ben10omintrix, goofball, infrared baron, aofie add: adds lavaland raptors and the raptor ranch /🆑 --------- Co-authored-by: Iamgoofball <iamgoofball@gmail.com> |
||
|
|
430896b5cf |
Blueprints tgui (#82565)
## About The Pull Request Blueprints now use a TGUI panel instead of the old HTML one. Also did general code improvement and maintaining to blueprints in general and also destroyed the ``areaeditor`` level, repathing it to just 'blueprints'. Also adds a sound when you look at structural data cause why not Video demonstration: https://github.com/tgstation/tgstation/assets/53777086/861773fd-3d57-472d-bc94-d67b0d4f1dbd The 4 blueprint types:  ## Why It's Good For The Game Another HTML menu dead underground. This is more responsive and doesn't require constant updating to see which area you're in, feels less OOC (instead of saying "the blueprints say", just say it, you ARE the blueprints). Like, come on  Look at all this wasted space  ## Changelog 🆑 refactor: Blueprints now use TGUI. qol: Blueprints can now be used while lying down. /🆑 |
||
|
|
5bef7fadcf |
GAGSifies the jester costume (#82339)
## About The Pull Request Updates the jester costume to support GAGS.  ## Why It's Good For The Game More freedom for players to customise their jestering. ## Changelog 🆑 image: The jester costume now supports GAGS /🆑 |
||
|
|
b20c982404 |
Converts slimes to basic mobs (#82176)
## About The Pull Request 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. ## Why It's Good For The Game - 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 ## Changelog 🆑 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 /🆑 |
||
|
|
2163f60527 |
Simple animal xenos are now basic animal xenos (#82187)
## About The Pull Request We currently have 2 types of xenos in the codebase, simple animal and carbon. I'd like to unite them both under basic, and I thought I should go for simple animal first since it's more of a conversion than a remake. This helps set a base for a future basic-only xeno, which would require the following: - Basic mobs (or just anything than Carbon) to have Organs, which we can then use for things like referring to their plasma sac for egg-laying, etc. - All xeno types having a basic mob variant, preferably with an AI so they would work without a player. - Something be done about larva, either we'd split basic xenos into "larva" and "adult" (like carbon) or have it be a separate path that can also have organs so they can still have hivemind. Everything else seems to have been done overtime as simple animals have been converted to basic (HUDs and holding things now seem possible, etc.) Even if this doesn't work out, at least this cuts off a good chunk of the remaining simple animals to convert to basic. Sprites used (for mapping helpers): Fire medkit Toxin medkit Oingo Boingo punch face (i tried to shrink it down) ## Why It's Good For The Game This helps advance us move away from simple animals, and helps move carbon xenos to basic mob later too if that's what we want to go for. ## Changelog 🆑 refactor: Xenomorphs (Lavaland & Oldstation ones) are now basic mobs. /🆑 |
||
|
|
409527e3e3 |
New GaGs clothing: Part 1 - 'Dress'ing up! (#81785)
## About The Pull Request I'm going to keep this simple, I have added four GaGs configs and the sprites for some outfits, I intend to expand on the recolouring abilities, so you will be able to use more than just spraycans. The outfits are as follows; The Cardigan skirt (formerly named black skirt), the Evening gown (It's no longer the 'RED' gown, since it can be any colour), the striped dress and the sailor dress.     ## Why It's Good For The Game Customisation is always good, allowing players to express their character how they want isn't a bad thing! ## Changelog 🆑 image: added gags sprites for; Sailor dress, Evening gown, Cardigan skirts and striped dresses. /🆑 |
||
|
|
9d9da3a790 |
Spider web graphics (#81839)
## About The Pull Request Here is what webs look like. It looks like pure ass and I hate seeing it.  Here's my attempt at making them look nicer.  Notes: Genetics Power webs now have a slight purple tint to differentiate them from regular spider webs, so spiders aren't confused about why they can't cross these ones. On the backend I condensed a lot of these typepaths to inherit from each other instead of not doing that. In the future I am going to use this to cut down on the excessive amount of action buttons we have for these too. Here's (most of) what the action buttons look like. this screenshot also demonstrating that we have a serious problem with how many buttons we give to spiders.  After this is merged I will embark on two further projects: - Wallening version - Reworking spider web placement to not be a function of having 15 action buttons, it's _so bad_. While I was working on this I noticed that AI spiders would not automatically place webs on certain crossable tiles, because we forgot to pass an argument to a proc. I fixed that too. Oh also final change I almost forgot to document:  I made you jiggle if you get stuck in a web. ## Why It's Good For The Game The previous sprites looked bad and these look less bad. ## Changelog 🆑 fix: AI-controlled spiders can correctly recognise where they can place webs. image: New sprites for most kinds of spider web /🆑 |
||
|
|
88bdabe53b |
Adds a small cafeteria behind the right wing shutters of the museum. (#81465)
## About The Pull Request I was thinking to contribute something to the new away mission map to make it better. Mapping and all takes too much time for me, so I could do little. Though it comes with its own unique gimmicks. To reach the cafeteria, one has to complete a couple puzzles. The first set is opened by inputing the correct PIN on the password panel beside it. There're several clues to help you guess this fairly easy puzzle, in the form of several number graffitis, a scrapped piece of paper full of numbers, and a board filled with colored dots also found just beside the panel. The second one is opened by a keycard, and is generally lazier. To find it, you'll need to do a bit of (toilet) searching. As for the unique things this PR adds: - A fire extinguisher... that actually contains welding fuel - A (dirt-cheap) hotdog vending machine* - A completely ornamental maneki-neko (that's the name of the luck-bringing, paw-waving cat figurine) - A piggy bank that carries money between rounds. It has a cap of 10k credits worth of holochips, cash and coins, which is pretty high, but I'm confident people will just destroy it for its contents the moment they find it. His name is Pigston Swinelord VI. - More, totally legit and not actually fake bombable walls :^) *By the by, you can also find it during the national hotdog day. Screenshots of the new location:   ## Why It's Good For The Game You know how most away missions are not that special at all? Yeah, @mc-oofert set an example of a pretty decent one actually, if not a tad small. I thought it could use a touch of another mind actually contributing to it too, because it deserves it. Also, this sets the basis for other persistent piggy banks. I don't think they should all have that 10k cap like this one, perhaps 1k is enough. Beside, the code that mothblocks did for json database datum is pretty good, so there is not a whole lot of shitcode here. ## Changelog 🆑 add: Added a cafeteria to the museum away mission, with a few special things to it. To reach it, you'll have to complete a couple puzzles however. map: The museum away mission now has a couple restrooms. add: Hotdog vending machines may spawn during the National Hot Dog Day. /🆑 |
||
|
|
df2ce692ee |
General maintenance for all things boulder related. (#81358)
## About The Pull Request **1. Qol** - Adds screen tips & examines for screwdriver & crowbar acts on BRM, Refinery & Smelter - Adds examines to display number of boulders stored inside a refinery & maximum number of boulders it can hold. Right click screentip to remove boulders - Adds examines to display maximum number of boulders than can be teleported by a BRM & screentips for interacting with wires - More audio & visual feedback for refinery processing. If a boulder requires multiple steps you will get a balloon alert saying "crushing" for refineries & "smelting" for smelters along with a sound per process tick(which is every 2 seconds so no need for cooldown) giving you a better idea of what's happening in the pipeline - BRM now will display all lights when the "Automatic boulder retrieval" is on & turn off the lights when disabled along with examines giving you a visual indicator of its state **2. Code Improvements** - Splits types of boulders into its own file `boulder_types.dm` for easy maintainability - Moves beacon for refinery machines into its own file `boulder_processing/beacon.dm` for easy maintainability - Moves the cooldown for processing a boulder `processing_cooldown` into the refinery machine itself. Since 100's of boulders can be created per round this var can take up memory quickly so by moving them into the refinery machine it gives us some savings - Compressed & merged procs such as `create_mineral_contents()` , `flavour_boulder()` etc with the vent code. These procs were only used by the vent 1 time & by merging the code we removed if conditions to check if a parent vent was passed or not(since now that's always the case). Helped in removing boilder plate code **3. Fixes** - **Fixes vents always spawning "Small size boulders" & not medium, nor large boulders.** Once a vent generates a boulder it calls `flavour_boulder()` |
||
|
|
16009a3ccf | [MDB Ignore] Converts random bedsheets to spawners + 3 bedsheets I made long time ago. (#81435) | ||
|
|
0207210990 |
MuleBOT UI/ID Fixes (#81380)
## About The Pull Request - Fixes https://github.com/tgstation/tgstation/issues/81363 - Fixes unable to set MuleBOT home from control panel - Fixes missing MuleBOT ID from Botkeeper PDA app - Adds input validation for changing MuleBOT ID from control panel - Removes hardcoding of MuleBOT IDs and home destinations - MuleBOT will now automatically set its home to the navigation beacon on its initialization turf ## Changelog 🆑 LT3 fix: MULEbot will correctly display its loaded cargo on BotKeeper fix: MULEbot home beacon can be set from control panel code: MULEbot home location is automatically set on init /🆑 |
||
|
|
084f56938c |
[MDB IGNORE] Adds a map lint against using dir-var and icon-var edited windoors (#81272)
## About The Pull Request Title. Another big updatepaths PR thats been on my radar for awhile. The dir banned var edit is self explanatory. However, I banned icon_state from them as well as there are a big handful of windoors that are either regular, and look like security doors, OR are their mirrored counter part (a south right door var edited to look like a south left door). ## Why It's Good For The Game Avoid mapping sins like this  ## Changelog N/A to players |
||
|
|
af67bd7490 |
basic cleanbots refactor and new janitor skillchip (#80128)
## About The Pull Request this pr refacotrs cleanbots into basic bots. also adds a new skillchip for janitrs. this skillchip will allow janitors to communicate with cleanbots and order them around, like pointing at something and telling them to clean it. also now the cleanbot has an inbuilt mop which it will use to smack mice and cockroaches ## Why It's Good For The Game refactors cleanbots into basic bots and fixes them getting stuck sometimes while patrolling. also janitors being able to order them around can make them a bit more useful as tools for the janitor ## Changelog 🆑 refactor: cleanbots are refactored into basic bots. please report all bugs fix: fixes cleanbots getting stuck sometimes while patrolling add: janitors get a new skillchip which allow them to communicate with cleanbots /🆑 |
||
|
|
bb781627ab |
The maintenance crate spawning crate is now a spawner (#80083)
## About The Pull Request `/obj/structure/closet/crate/maint` was a type of crate that spawned a completely different crate, and then deleted itself. I have decided to swap this out for an actual spawning effect. I have also did some subtypery to remove some duplicate code that handled randomly opening the spawned closet/crate (through I am not that satisfied with `/obj/effect/spawner/random/structure/closet_empty/crate/with_loot` as a sensible typepath name, I would like to ask for suggestions). I also removed a loot define, because it was no longer needed as its contents were used on a single page. ## Why It's Good For The Game Things that act like spawners should be spawners. Maybe this fixes the CI issue on northstar where a mousetrap box gets deleted before it initializes during create and destroy? It was placed above a spawner that spawned one of these self deleting crates. I am unsure, I could not replicate this issue during testing. ## Changelog Nothing player facing. |
||
|
|
a3c24dd74e |
Basic bots (medibots) (#79955)
## About The Pull Request refactors bots into basic bots. i decided to do medibots first because they were the most complex bots and wanted to get them out of the way first. if this pr gets merged then i will be rolling out the rest of the bot refactors over the next months medibots can now wear any type of hats! some of these hats can trigger unique new recorded voicelines and interactions!   ## Why It's Good For The Game converts medbots into basic medbots. they are now a bit more responsive than before but overall they should act similarly to how they did. also adds the basic bot ai framework which has all the generic bot behaviors that the next bots may or may not need to have in their ai. i tried my best to improve their code and turned some of their bitflags into define bitfields. this pr may need a careful review because i did it from scratch as the old bot project branch was too outdated for me to use ## Changelog 🆑 refactor: medbots are now basic bots. please report any bugs add: medbots can wear hats! /🆑 |
||
|
|
87f32e149f |
Patches Up Gifts In Anticipation Of The Holidays (#80035)
## About The Pull Request I decided to look at why everyone loves (and I despise) Christmas too much, and was met with a lot of smelly code. In fact, some of it was completely busted! Let's fix several things. * We no longer use a GLOB for "every possible item you can cram into a gift box", we now use static lists scoped to the proc. That saves us some pollution for something that really didn't need it (and only was set up that way for cacheing I believe). We also static-cache stuff that we weren't doing previously, to save even more work (in anticipation for entropic heat death of universe). * Repaths `/obj/item/a_gift` to `/obj/item/gift`. I never liked the old path and this new one is cleaner. This also uncovered a bug. * Mappers would var-edit gifts to have a unique mapped-in type, but the code never respected this. I fixed it so the behavior should now respect that rather than override the variable on Initialize(). Now the goat plushie gift will always have said goat plushie rather than just any toy. * Procs should now have the proper arg nomenclature. * Also just cleans up a lot of single letter variables and the like. There was some cooked shit that's now alphabetized and nicely multilined. ## Why It's Good For The Game Ho ho ho. ## Changelog 🆑 fix: Some mapped-in gifts that were supposed to guarantee a certain gift weren't spawning that exact gift type, this has been patched to reflect the mapper's intent. /🆑 |
||
|
|
ce6f2724cd |
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 /🆑 |
||
|
|
99ca59271a |
Makes the Bitrunning Den area a cargo subtype (#79907)
## About The Pull Request Converts the bitrunning areas from a station area subtype to a cargo area subtype. `/area/station/bitrunning -> /area/station/cargo/bitrunning` `/area/station/bitrunning/den -> /area/station/cargo/bitrunning/den` This includes an updatepaths script. Neat! ## Why It's Good For The Game It's a cargo role, and it's always located within cargo. I think it's a cargo area. Unity for _all_ jobs under the great Cargonian umbrella! ## Changelog 🆑 Rhials code: Bitrunning/Bitrunning Den areas are now cargo area subtypes, rather than station area subtypes. /🆑 |
||
|
|
4b4ada0339 |
Slime type datum, and cleans up slime related code (#79852)
## About The Pull Request I have decided to help out with basic mobbing slimes, and found out, that this code is ancient and crusty. So I have decided to refactor and tweak things bit but but, until the moment I will hit AI related stuff. I might have gone a bit overboard, and performed a melange of fixes. I have done the following in order: - Slime colour, core type and mutation list are now held by a single `slime_type datum`. This means the slime's core is no longer spawned using text operations on the slime's colour, and the slime's mutation is no longer a single large switch statement that returns an exactly four element length array. Icons are still based on the slime's colour define, but that is now more changeable. - Autodocced all the slime procs and vars I could find, while also renamed them to be more descriptive. Also made Booleans actual booleans. Also added code to confused code segments. For example, did you know that slimes would forgive all its stacks of Feeling Very Attack Right Now, if it has exactly one level of Discipline? I didn't, and I almost turned the 1 in the check into a TRUE before I had a second look. - Added defines to the slime hunger checks - Cleaned up a lot of single letter vars in all code that referenced the now changed variables. - Large amount of if-chain pyramids have been turned into early returns. More readable. - Made the xenobiology camera shortcuts and actions always do the same thing, though the action buttons still loop through all of the conents. In addition, after seeing a comment lamenting about varied load orders, I have made autolinking the monkey recycler is now done in LateInitialize, which didn't exist when it was made. - I have included an UpdatePath that changes the colours of premapped slimes, but I did not do anything for the other values. - I noticed slimes were unable to attack pacifist humans, due to trait checking the human instead of the attacking slime. This has been fixed. - The slime scanner has an examine block, and it now describes your slimes' "mutation attempt chance", instead of like, performing math in case the slime's current colour is one of the mutations, or hiding it if it has none. This value is needed to breed rainbow slimes. This has been an extremely large scrubbing. I am willing to try rip it up into smaller chunks, even if most of it is just single letter vars and if pyramids. ## Why It's Good For The Game If code is more readable and expandable, it will aid in further refactors. ## Changelog 🆑 refactor: Slimes's colour, core type and mutation list is now held in a slime type datum code: Slime's variables have been documented, and renamed a bit to add clarity. Please report bugs that might stem from renaming. fix: Slimes are not longer prevented from attacking pacifist humans. qol: Slime scans now display the actual amount of genetic instability, instead of hiding it if a slime doesn't mutate further, or tweaking it if it might mutate back into itself. This will make it easier to parse which slime to breed further to get a rainbow slime. /🆑 |
||
|
|
0141f96a13 |
Refactor icemoon wolves into basic mobs and add taming + pack behavior (#79736)
## About The Pull Request Ports icemoon wolves over to the basic mob framework with a bit of extra stuff: - Wolves call for help when attacked within a decently large radius. Because you know, pack animals. - Wolves can now be tamed with a slab of meat - When tamed, wolves can be ridden like goliath mounts. Ride wolf, life good. Pretend you're playing ARK and start shivering to death in thatch huts for that High Roleplay experience. - Tamed wolves have access to a bunch of pet commands (following, point fetching, point attacking, play dead, etc) and will also defend their owners vehemently if they're attacked. You can probably tame multiple if you wanted to. ## Why It's Good For The Game What part about riding wolves isn't entertaining? I don't really play /tg/ that much so I can't argue too much about the balance implications this might pose, but it's undoubtedly a stupid little gimmick and is likely to be used by bored assistants and miners with too much time on their hands. Especially robust individuals will probably find a million things to do with a basic mob capable of fetching, attacking on command and generally being able to defend themselves decently well. ## Changelog 🆑 yooriss refactor: Icemoon wolves now use the basic mob framework and should act more intelligently, defending their pack. add: Icemoon wolves can be tamed with slabs of meat and can be ridden as mounts once friendly. Being rather large dogs, they also have access to most of the pet commands you'd expect, such as fetching things, and violently mauling people their owners point at. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
b251b9dbb0 | Refactors Parrots into Basic Mobs (ft. Ben10Omintrix/Kobsamobsa) (#79762) | ||
|
|
2893b7fb97 | TGUI for Safes and Secure briefcases (Safes are now a structure, too) (#79594) | ||
|
|
7a44f10993 |
basic gutlunchers and ashwalker ranching (#79508)
## About The Pull Request this pr transforms gutlunchers into basic mobs and gives them a small ranch that ashwalkers can manage. gutlunches come in various colors and sizes! female gutlunches will come in different shades of red and males will come in shades of blue. the child born will have a mix of his parent's colors.  female gutlunches can make various healing milk and medicine from its udder. but it will need to consume ores before it can start making milk, u can either feed it by hand or u can put ores in the wooden trough and they will go eat from it whenever they get hungry. feeding it gold or bluespace ore will improve the healing quality of the milk for a short while  the male gutlunchers are obedient pets. their stats vary from one another in speed, attack and health. a male gutlunchers stats will depend on the stats of his parents, the higher his parent's stats are the better chances he has at rolling higher stats. so u can selectively breed them to make sure they have the best stats possible. they will listen to all ur commands and can mine walls or attack enemies if given the command. also i wanted the farm to have wood fences so i added them to the game, they cost 5 wood planks to make ## Why It's Good For The Game refactors gutlunches into basic mobs. also i turned breeding into a component so it can be applied to all animals and created a breed command, pets that have this command and the component will go breed with a partner u point at. ## Changelog 🆑 refactor: gutlunches have been refactored into basic mobs. please report any bugs add: ashwalkers have a small ranch they can manage fix: wall tearer compnent wont runtime when interacting with mineral walls /🆑 |
||
|
|
a1e46c5d31 |
Basic Guardians/Holoparasites (#79473)
## About The Pull Request Fixes #79485 Fixes #77552 Converts Guardians (aka Holoparasites) into Basic Mobs. Changes a bunch of their behaviours into actions or components which we can reuse. Replaces some verbs it would give to you and hide in the status panel with action buttons that you may be able to find more quickly. They _**should**_ work basically like they did before but a bit smoother. It is not unlikely that I made some changes by accident or just by changing framework though. My one creative touch was adding random name suggestions. The Wizard federation have a convention of naming their arcane spirit guardians by combining a colour and a major arcana of the tarot. The Syndicate of course won't truck with any of that mystical claptrap and for their codenames use the much more sensible construction of a colour and a gamepiece. This lets you be randomly assigned such creative names as "Sparkling Hermit", "Bloody Queen", "Blue World", or "Purple Diamond". You can of course still ignore this entirely and type "The Brapmaster" into the box if so desired. I made _one_ other intentional change, which is to swap to Mothblocks' nice leash component instead of instantly teleporting guardians back to you when they are pulled out of the edge of their range. They should now be "dragged" along behind you until they can't path, at which point they will teleport. This should make the experience a bit less disorienting, you have the recall button if you _want_ to instantly catch up. This is unfortunately a bumper-sized PR because it did not seem plausible to not do all of it at once, but I can make a project branch for atomisation if people think this is too much of a pain in the ass to review. Other changes: - Some refactoring to how the charge action works so I could individually override "what you can hit" and "what happens when you hit" instead of those being the same proc - Lightning Guardian damage chain is now a component - Explosive Guardian explosive trap is now a component - Added even more arguments to the Healing Touch component to allow it to heal tox/oxy damage and require a specific click modifier - Life Link component which implements the Guardian behaviour of using another mob as your health bar - Moved some stuff about deciding what guardians look and are described like into a theming datum - Added a generic proc which can return whether your mob is meant to apply some kind of damage multiplier to a certain damage type. It's not perfect because I couldn't figure out how ot cram limb modifiers in there, which is where most of it is on carbons. Oh well. - Riders of vehicles now inherit all movement traits of those vehicles, so riding a charging holoparasite will let you cross chasms. Also works if you piggyback someone with wings, probably. ## Changelog 🆑 refactor: Guardians/Powerminers/Holoparasites now use the basic mob framework. Please report any unexpected changes or behaviour. qol: The verbs used to communicate with, recall, or banish your Guardian are now action buttons. balance: If (as a Guardian) your host moves slightly out of range you will now be dragged back into range if possible, rather than being instantly teleported to them. balance: Protectors now have a shorter leash range rather than a longer one, in order to more easily take advantage of their ability to drag their charge out of danger. balance: Ranged Guardians can now hold down the mouse button to fire automatically. balance: People riding vehicles or other mobs now inherit all of their movement traits, so riding a flying mob (or vehicle, if we have any of those) will allow you to cross chasms and lava safely. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
a5fabd8819 |
Changes to the lore of Knock (#79542)
## About The Pull Request This PR renames Knock to Lock, and changes most of the knowledge gain lore. ## Why It's Good For The Game The Knock Lore, is based on the Knock Principle from Cultist Simulator, with the path description being copied from the wiki. Many other keywords and concepts are fully lifted from that game (Locksmith's Secret, Mother Of Ants, etc). In my vision, if a heretic path has to be based on a principle from cultist simulator, it should have its own spin, and also, the knowledge gain texts should tell a story. For example, Ash tells the story of a watchman burning down their city after being betrayed, and Cosmic is a love story between a knowledge seeker and a monster from the beyond. So I have decided to reflavour Knock. I have changed the name to Lock, so at least it would feel similar, just like how Blade is akin to Edge. Many powers also block people or confuse their paths instead of opening new ways, and thus, I feel a path whose name implies that it *both* opens and closes would be more self describing. I have changed most of its lore to be about the Locked Labyrinth, where knowledge seekers willingly trap themselves and submit themselves to servitude to find ultimate freedom by progressing through its trials. These are the Stewards, who are basically workers in an infinite and malicious hotel in their dreams. Consider them assistants if you will (this wasn't my intention when I wrote the lore, but thinking about it in retrospect, it honestly fits). In the implied story, the heretic joins their ranks, but keeps getting closer to the more corrupt members, along with parasitic spirits. Ultimately, they manage to open the Labyrinth's core, letting out the Stewards, allowing them to manifest in the forms of heretic summon creatures. The side path spells and the lock knowledge ritual I have not touched, they were fine. Some items have been renamed and repathed. I have kept the distinctive sound effect for using the Grasp, as its unique enough. Though if someone did have a nice sound effect for turning a lock and added some filters, I would add it. **DB Issue** I have renamed the achievement's define to MEDAL_LOCK_ASCENSION but kept the value as "Knock", as I don't know how trigger a change in the DB. If this is a blocking change, I'll try to figure out how to make a migration file. **Future improvements** I would also come back later with another PR, that hands out names to the eldritch beings spawned by the portal, based on the Stewards in the knowledge gain lore that I added, along with some new ones that fit the theme, and some jokey ones like Minotaur. ## Changelog 🆑 spellcheck: Renamed Knock to Locks, and changed most of the flavor text of knowledge gain, and renamed some items and knowledges from the path. /🆑 |
||
|
|
07f2214ac4 |
Basic Wizards (#79476)
## About The Pull Request Makes NPC wizard mobs into basic mobs. These aren't actually used anywhere, since their away mission was removed, so I figured I'd have some fun with them.  Noteworthy changes are as follows: - Wizard mobs can now wear any of the four basic colors of wizard robe and hat. Rarely, they will wear the witch ("Marisa") outfit instead. There was going to be a rare Tape Wizard spawn too, but the outfit doesn't work correctly for some reason (see comments below). - Wizard mobs no longer have a set spell loadout. Instead, they always receive a random **targeted, primary spell**, a random **untargeted, secondary spell**, and the spell **Blink**. - Wizard subtypes (or var-edited wizards) can have any of the above specified rather than random. - Wizard AI will try to avoid ever being in melee, and will fire off spells whenever possible with the priority order of primary > secondary > blink. There is a mandatory 1-second waiting period between casts. - Wizard mobs use "lesser" versions of Fireball and Blink. Lesser Fireball does a little less damage and has a smaller explosion, though it is still extremely dangerous. Lesser Blink simply has a smaller blink radius so that wizard mobs don't just decide to leave. Depending on their spell loadout, wizards can be _incredibly_ dangerous mobs - stunning you with tesla blasts, shooting you with fireballs, and more. Even weakened, fireball is the nastiest of these by far, able to set you on fire or remove your limbs if you aren't properly protected. Watch out! The random lists have been kept pretty small, since I only wanted to use spells that I know for sure work. Spell cards is pretty weak in AI hands, since they don't take advantage of the fact that a human player can spam it, but I wanted there to be a little variety in primary attacks. I included an UpdatePaths script here in case a downstream is using these, but I doubt it was necessary. ## Why It's Good For The Game Removes another simplemob. The actual impact of this change is negligible, since this is an unused mob, but it's possible that this lays the groundwork for these actually being used - particularly since mappers can make them as powerful or weak as they want by specifying a spell loadout. Wizards may make for a tough boss challenge for a ruin or away mission, or a very mean surprise for an admin to drop on an unsuspecting station. ## Changelog As this is an unused mob, there are no player-facing changes. |
||
|
|
a35fd68910 |
Renames simple to basic proteon UpdatePaths script (#79467)
## About The Pull Request Tin. Make sure you guys check the filenames for these! This the second one I've caught. PR # for ref: https://github.com/tgstation/tgstation/pull/79425 ## Changelog Nothing player facing |
||
|
|
08274f8343 |
Basic Constructs: Proteon (#79425)
## About The Pull Request Last one! Makes proteons into a basic mob, and completely removes the simple_animal construct supertype. Proteons aren't really designed to be played by a player, instead being a nuisance mapped into various ruins and traps. As such, they don't really have any special abilities. Instead, the hostile variant has a somewhat unique behavior. They'll viciously attack anyone who comes close, but, being frail little cowards, if a proteon takes damage it will immediately flee. After a random period between 2 and 4 seconds, it will stop fleeing and come back for more. In addition to this, a few other things have been done, some only related because they're in files I touched. - Moved proteons from the file for the Cleric's Den to their own file in the basic constructs folder. Given that they're used in several different ruins, they might as well not just be in the file for one. - Simple constructs have been cut, and with them the procs for healing/repairing on shades and cult structures, as those are no longer needed. - Because I was touching it anyway, I touched up the file for trap structures. They no longer use any one-letter variable names, and time is now universally listed in seconds rather than deciseconds in that file. - I removed a completely unused blackboard key from ice demons. This is something I noticed due to a change I ended up not making while working on proteon AI, but I figured I might as well leave it gone. ## Why It's Good For The Game Kills the last three simple construct typepaths, bringing us to the destined 19 removed. Huzzah! The proteon AI routine should inject a little spice into fighting proteons, especially for the unprepared - unlike many mobs, they won't stand there and take it if you decide to fight back, but you can never safely ignore them when they run away. They still aren't particularly dangerous. ## Changelog 🆑 refactor: Proteon constructs now use the basic mob framework. The ones encountered in ruins are a bit flightier now, and will briefly flee combat if attacked - only so that they can return and menace you again soon after. Please report any bugs. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
bc18450afe |
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. /🆑 |
||
|
|
0036e13af0 |
Basic Constructs: Wraith (#79235)
## About The Pull Request Converts wraith constructs to basic mobs. The last of the "mainline" constructs, though there's still one to go after this. Wraiths are pretty much the same as they've always been - speedy constructs that pack a bit of a punch, built around doing hit-and-run tactics with their ability to ethereal jaunt. Notably, I've converted their ability to recharge their jaunts with attacks into a new component, `recharging_attacks`. This can be placed on any basic mob to let them recharge a cooldown action by landing hits, which could possibly be useful in the future. NPC wraiths are pretty straightforward, with a twist - they will always chase down and beat to death the lowest-hp mob they can see. Happening upon one of these while wounded will end very badly! While I originally wanted them to be more flighty and use hit-and-run tactics, I couldn't figure out a way to do this that didn't look kind of silly and make them less effective overall. In addition to the wraiths, I've done some much-needed cleanup to basic constructs as a whole, improving some things and covering some things I missed along the way. - Ectoplasm drop types from constructs is now properly based on their theme. I _believe_ I've done this in a way that will pass unit tests this time, but we'll see if my local tests were being honest with me. - Player-controlled constructs now attack faster. I didn't realize that being basic mobs capped them to attacking once every 2 seconds, which is a gigantic nerf over the simple animal version. I cut this to just 1 second, which should be much closer to how it originally was. - Artificers actually seek out and heal the most damaged ally they can find, instead of the least damaged. Turns out the sort was doing the exact opposite order from what I thought, which became much more obvious when using the same targeting behavior on wraiths. - I put the PR number in the juggernaut update script, which I somehow missed on that one. - Removed the extraneous "noncult" construct subtypes that didn't do anything. The Artificer one, which does something, is still around. ## Why It's Good For The Game For the same reasons as the previous three. 5 more simple animals gone, and only one construct to go until I can nuke simple constructs from the codebase entirely. Other than that, the new component could possibly come in handy in future designs, and the NPC behavior should hopefully be a little scary - even if just a little. ## Changelog 🆑 refactor: Wraith constructs have been converted to the basic mob framework. NPC wraiths are now extra cruel and will attack the lowest-health mob they can see at any given time. Make sure this isn't you! Please report any bugs. fix: Artificers and juggernauts no longer attack significantly more slowly than intended. /🆑 |
||
|
|
9e18c6575a |
Basic Pirate NPCs (#79284)
## About The Pull Request Converts hostile pirate NPCs to basic mobs - specifically, a subtype of trooper. As their behavior is not meaningfully distinct from other troopers, this conversion mostly just sticks them on the existing AI behavior while keeping the rest the same. Pirates do have one new thing going for them, though, to differentiate them from other troopers. They use the new **plundering attacks** component, which means that every time they land a melee attack, they steal money from the bank account of whoever they hit. This requires the target to be wearing an ID with a linked bank account, so it's not the hardest thing in the world to hide your money from them - but it's still something to be wary of! If killed, any mob with this component will drop everything they've stolen in a convenient holochip. ## Why It's Good For The Game Takes down 5 more simplemobs, and (I think) converts the last remaining trooper-type enemy to be a basic trooper. (It's possible there's more I've forgotten that could use the same AI, though.) The money-stealing behavior is mostly good because I think it's funny, but it also makes the pirates something a little distinct from "yet another mob that runs at you and punches you until you die". They still do that, but now there's a little twist! This can be placed on other mobs too, if we want to make any other sorts of thieves or brigands. ## Changelog 🆑 refactor: Pirate NPCs now use the basic mob framework. They'll be a little smarter in combat, and if you're wearing your ID they'll siphon your bank account with every melee attack! Beware! Please report any bugs. /🆑 |
||
|
|
5f923b097f |
Light-Eaten objects can no longer emit light after being turned off and then back on (#79240)
## About The Pull Request #67676 described a bug where PDAs can apparently emit a small amount of light after being affected by the light eater. As it turns out, the bug is even worse than that. It doesn't work for just PDAs, it works for basically any light source that can be turned off and on. Even flashlights. In the following pictures, a flashlight has been light-eaten and then turned off and on again:  Observe how the nightmare jaunt is available, as it should be. However, one step closer to the flashlight:  The nightmare jaunt can no longer be used, because the flashlight is still emitting light. This PR just fixes that behavior. Light-eaten objects will now be totally dark again, even after being power cycled. Closes #67676. ## Why It's Good For The Game Bugs bad. ## Changelog 🆑 fix: Light-Eaten objects can no longer emit light after being turned off and then back on. code: Flashlights now use light_on instead of defining their own variable. Please report buggy behavior. /🆑 |
||
|
|
db2b00bf8f |
Renames the juggernaut UpdatePaths script (#79242)
## About The Pull Request Tin. It did not have the correct PR number in its filename. PR # was #79170 for reference ## Why It's Good For The Game People in downstreams will have an easier time finding it now. ## Changelog Nothing player facing |
||
|
|
b65f729901 |
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. /🆑 |
||
|
|
6dde9e4c4e |
Basic Constructs: Juggernaut (#79170)
## About The Pull Request Converts juggernaut constructs to basic mobs. These guys are really simple, so this is a pretty straightforward one. The one notable thing about this PR is that I got annoyed that projectile reflection code was copy-pasted in two different places (the main one for things like the ablative trenchcoat, and right here on the juggernaut). So, trenchcoat-style reflection is now a proc on `/obj/projectile`, which is used in both places. AI-controlled juggernauts are as simple as befits these big lugs, doing nothing but slowly walking toward mobs and beating them to death with their giant fists. ## Why It's Good For The Game Removes another 5 simple animals. Not too much else to say about this one, but it's easier to make projectiles bounce off of things now if anyone wants to do that. ## Changelog 🆑 refactor: Juggernaut constructs now use the basic mob framework. Please report any bugs. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
9e6cbf2538 |
Basic skeletons (#79206)
## About The Pull Request Turns skeletons (the simple animal version) into basic mobs. This was another incredibly simple conversion, since skeletons don't really do anything but walk at you and beat you to death. Because I thought it was funny, though, skeletons will now seek out cartons of milk and drink them. Real milk will heal them for a significant amount, but soymilk, being false milk, will deal them grievous injury instead! Skeletons beware... I didn't add any other sorts of milk due to limited ability with existing AI behaviors to identify milk containers (they actually only look for the carton items). Other than that, I've done some flavor adjustment for skeletons' attacks - their effects and sounds will now suit the weapon they're actually holding - for example, skeleton templars now actually use their swords instead of slashing you with their horrible fingers. Along with this I gave the basic skeletons a normal slashing sound, instead of the weird, impactless hallucination sound they used to use for some reason. I never liked that sound. Finally, I've reflavored the spear-wielding skeleton mobs to "undead settlers", following the naming of the corpses dropped by snow legions as of #76898, rather than being named after an offensive term for Inuit people. These skeletons do, after all, appear in settlements on alien worlds. To enable the flavor of milk drinking, I expanded the `basic_eating` component to allow drinking rather than eating flavor, with a different sound and its own set of verbs. This deletes whatever they drink from, but c'est la vie. ## Why It's Good For The Game Ticks 6 more entries off the simple animal freeze. While skeletons are still extremely simple, being largely-identical mobs that only exist to beat you to death, being basic mobs should make them slightly better at this job. Also, again, I think it's really funny that you can distract skeleton mobs with milk, or even hurt them. ## Changelog 🆑 refactor: Hostile skeleton NPCs now use the basic mob framework. They're a little smarter, and they also have a slightly improved set of attack effects and sounds. They love to drink milk, but will be harmed greatly if any heartless spaceman tricks them into drinking soymilk instead. Please report any bugs. /🆑 |
||
|
|
1b8bcd0365 |
Basic drones (#79109)
## About The Pull Request Fixes #68825 Fixes #72249 Fixes #70184 Converts maintenance drones to use the basic mob framework. As drones don't use AI, this was mostly a perfunctory conversion, but I took the opportunity to clean up drone code a bit and fixed a few bugs. Noteworthy changes: - Drones now have a `can_unhack` field. This is set to FALSE on syndrones, because unhacking them doesn't make them stop being evil but does cause some weirdness. Syndrones are unused right now, but you never know. - Drones use the Dextrous component for hand-having. - Drones no longer have an internal ID card, instead being given all-access with the `simple_access` component. - Picking up drones now works the same as for other mobs, instead of pointlessly copying the code into `attack_hand`. As a consequence, it is now possible to punch drones if you want to for some reason. - Drones can now reboot/cannibalize dead drones without being in combat mode. - Cannibalizing a drone that contains a client no longer runtimes - the client is ghosted ahead of time. - Drones now have TRAIT_ADVANCEDTOOLUSER, allowing them to properly interact with machines. - Trying to screwdriver a dead drone now gives a balloon alert about why you can't do that. In addition to these changes, I cleaned up the code quite a bit, organizing things better and placing more useful comments throughout. And removing a hell of a lot of single-letter variable names. I will note that this PR does _not_ address #72129. The issue there is that sprites for drones-as-hats are entirely nonexistent, and I'm not a spriter. It shouldn't be too hard to fix if someone makes dronehat sprites, though! ## Why It's Good For The Game Kills 8 more simple animals. In addition to that, drones were clearly a bit neglected, so this fixes them up a bit and makes the code a little bit clearer. Maybe not that much clearer, but it's something. It certainly leaves them in a better place for further work if anyone wants to do that. Plus, a bunch of bugs and other jankiness are fixed now, which is nice. ## Changelog 🆑 refactor: Maintenance Drones now use the basic mob framework. This shouldn't come with any noticeable gameplay changes, but please report any bugs. fix: Drones can now interact normally with electrified doors. fix: Drones' built-in tools can no longer be placed in storage objects and/or thrown on the floor. fix: Drones can now perform right-click interactions correctly, such as deconstructing reinforced windows. fix: Drones can now reboot or cannibalize other drones without being in combat mode. /🆑 |
||
|
|
1abede91a1 |
Tram door/panel hotfix [NO GBP] (#79093)
## About The Pull Request - The actions to open/close and lock/unlock are supposed to match closets, but I got it backwards. Swaps them around. - The lock now works as expected no matter if your ID card is in hand, in a wallet, or in your PDA. - Moves early return for when welder has no fuel. - There was no indication spoilers were tampered/malfunctioning. Added an overlay, examine text, context hint, and welder action so it's more apparent to players. - Fixing an emagged spoiler is now multitool-weld, to match the overlay. - Added some missing var docs. - Improved the wording of some tram error messages about why it's broken (ie: no power.) - Fixed crossing signals not showing correct status/examine text when broken/no power  ## Changelog 🆑 LT3 fix: Fixed tram cabinet LMB/RMB actions being reversed fix: Tram cabinet can now read IDs inside PDAs and wallets fix: Crossing signals now correctly indicate broken/no power fix: Trying to repair tram (weld) without welding fuel fails fix: You can actually unbolt the tram controller from the wall qol: Tram spoilers now have visual and examine hints about being malfunctioning/emagged qol: Improved some tram error messages /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
9ed4bd202d |
Aquariums now have an internal feed storage. Fish catalogs as 25cr goodies. (#78958)
## About The Pull Request Added a reagent holder to aquarium tanks and some code to enable the fish to be automatically fed at selectable intervals of 1 minute to 7 (default 3). The holder can be accessed and filled by opening the control panel, and emptied with a plunger if necessary. Simple plumbing compatibility has been added as well, in case you think the 6 units of capacity of the reagent holder (enough to feed a fish 60 times) are not enough. The preset fishing tank starts with enough feed to keep its contents alive for 30 minutes. Beside that, I've fixed a small oversight with the fish analyzer goodie pack. It should cost 150, not 500. The fish catalog is now a goodie pack you can get as a goodie for dirt cheap (25 creds) and a subtype of `book/manual`, so there's a slim chance you may find it at the library or somewhere else. Fixed a small oversight inside the fish catalog. Mapped in a single aquarium kit for each station map, in the service hallway/storage room where the techfab and cargo consoles are also found. Aquarium kits are now compatible with slapcrafting. ## Why It's Good For The Game Aquariums require too much maintainance for a gimmick, and it's quite awful to see the fish inside preset aquariums die 5 minutes into the round. Also, you cannot get fish catalogs anywhere but from the aquarium kit crate, which costs 1k credits, though its pertinence with fishing goes beyond aquarium stuff. Lastiy, I think it's good to give the crew a free aquarium kit. The price of the supply pack is a bit out of reach for many, service could use a bit of fisciculture too (I may make it a service pack later, so that it can be ordered through the service console). ## Changelog 🆑 add: Aquariums now have a small internal reagent holder, accessible when the panel is open and used to automatically feed the fishes at selectable intervals, also compatible with plumbing. add: Fish catalogs can now be bought as a goodie pack, for 25 cr, or rarely found at the library or maints. fix: Fixed the prices of fish analyzers. It's supposed to be 150 cr, not 500. map: Added an aquarium kit to each station, found in the room where the service techfab and order console also are. qol: Aquarium kits are now compatible with slapcrafting (crafted by hitting them with the required material without opening the menu). balance: Moved the aquarium kit and fish supply packs from the "General" section to "Service" and "Livestock" respectively, meaning they can be ordered for free from the service orders console. /🆑 |
||
|
|
0c17553a96 |
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! /🆑 |
||
|
|
7626c3bd6c |
Tram v6/Transport Subsystem (#78230)
Co-authored-by: Unit0016 <50649185+unit0016@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> Co-authored-by: Kylerace <kylerlumpkin1@gmail.com> |
||
|
|
cf5c1fa08c | Basic Space Dragon (#78979) | ||
|
|
b414387591 |
Remove tiered canister construction (#78909)
## About The Pull Request In https://github.com/tgstation/tgstation/pull/66210 we removed canister tiers, but didn't change the construction code. Currently you still have to build an unfinished frame with 5 iron, 'upgrade' it to tier 1 with another 5 iron, then complete it. This combines it all into a single 10 iron recipe. ## Why It's Good For The Game Eliminates the extra steps in canister construction, since you can't upgrade above tier 1 any more anyways. ## Changelog 🆑 LT3 qol: Canisters can now be built in one step, no upgrading required /🆑 |
||
|
|
504e6acfa3 |
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. /🆑 |
||
|
|
ec4defe598 |
Basic Constructs: parent type + Harvester (#78807)
## About The Pull Request I kind of hate cult as a whole, but I like these little guys. Let's basic-ize them. This PR begins the process with the harbinger of the Red Harvest, the Harvester! Their actual capabilities have been changed very little, except that most of their unique properties have been moved to components and elements. The basic parent type of constructs has also been set up to make the next bunch of conversions easier. - Constructs capable of repair now receive the healing hands component. Healing hands has been extended, to allow the healing particles to come in custom colors, and to allow it to print the target's health if the target is not a carbon. - Repairing constructs also receive a new element: Structure repair is a lighter-weight variant on healing hands that allows repairing clicked-on atoms of specified types. - Constructs capable of damaging walls, meanwhile, receive the wall smasher element. Harvesters in specific have two special elements: - The existing "amputating limbs" element, making them instantly rip a limb off of any carbon they attack. As before, if they attempt this on a carbon with no arms or legs, the harvester will hear Nar'Sie's call to bring the victim to her. - A new "wall walker" element, allowing them to walk through walls of specified type (cult walls for harvesters) and allowing them to drag any atom through as well. Other than laying the groundwork, there's not much else here. I started with Harvesters specifically because they are only ever player-controlled, which makes things easy. I'm not completely happy with the use of healing hands here - it gets the job done, but currently loses a bit of the previous flavor (a healing beam as a visual; printing the target's health in cult span). I may extend it further to allow this behavior. I've included an UpdatePaths script, even if these things shouldn't be mapped, just in case something fucky is going on on a downstream. You never know. ## Why It's Good For The Game Constructs, currently, occupy _19_ spots on the simple animal list. This is something close to 10% of all the remaining ones. Also, like everything to do with cult, construct code is janky, old, and desperately in need of updating. This is the first step. ## Changelog 🆑 refactor: Harvester constructs have been updated to the basic mob framework. This should have very little impact on their behavior, but please report any issues. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
032419f30f |
ice demon basic mobs (#78539)
## About The Pull Request ice demons are now basic mobs. they still have their behavior where they can teleport around the player, run away from him and shoot him. they now also have a new ability they will only use when they are on their last legs, they will spawn weak and slow afterimage clones of theirselves to attack the player. damaging these clones will also damage the original ice demons. ice demons can also now be very easily countered as they are very afraid of fires. they will run away from you if they see u holding a lit torch/flare/welding tool and while running away they will freeze the floors around them to try to slip u to stop u from chasing them. ice demons now also get a new unique trophy! this trophy will summon 2 friendly spirits that will help you kill ur target, but these spirits will dissappear after a very short while. https://github.com/tgstation/tgstation/assets/138636438/6a48fb15-f447-441a-91c6-48ca120dc22c ## Why It's Good For The Game ## Changelog 🆑 refactor: ice demons have been refactored into basic mbos. please report any bugs add: ice demons now have a unique trophy /🆑 |
||
|
|
82904b766c |
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. /🆑 |
||
|
|
0218d4277d |
adds directional helpers for empty fire axe and mech removal crowbar cabinets (#78722)
## About The Pull Request title. it's mostly so they can be used conveniently in areas you don't want to put fireaxes, but do want an empty cabinet for reasons. ## Why It's Good For The Game more flexible options for mappers, more convenient than making directional variants yourself. it's what the helper is for ## Changelog 🆑 qol: gives empty fireaxe and mech removal crowbars cabinets directional helpers /🆑 |