mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-29 02:51:41 +00:00
ff6b41aa07443065bbfa9bb956de698bd8b09021
142 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
57744f6622 |
Icemoon Comms agent (#83404)
<!-- 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 Adds a comms agent to icemoon, similar to the one that can spawn in space <details> <summary>Image (spoilers, kind of)</summary>  </details> <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game Icemoon is sorely lacking on ghost roles, this should help with that somewhat. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## 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. --> 🆑 add: NT reports indicate that the Syndicate have increased listening activities on Icemoon, crew is advised to watch out for possible communication interference. /🆑 <!-- 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. --> |
||
|
|
707b5ef744 |
Minor Spider Rebalance (#83554)
## About The Pull Request Breacher and Viper player-controlled Spiders have swapped castes; Vipers now come from Abnormal Eggs, while Breachers will now come from Enriched Eggs. This means that Vipers may be seen more, while Breachers require the Nest to acquire at least a single kill to wrap and create an Enriched Egg from. Nurse Spiders also perform their heal action much faster, at the cost of a bit less healing. It was very difficult to heal others due to the long do_after and thus we saw very few Nurse Spiders. Breacher Spiders also are now NOT immune to cold, and will die if they try to space a room or go into space. ## Why It's Good For The Game Breacher Spiders are in kind of a difficult spot, both in theming and balance; their space resistance made them able to vent the station in multiple places by breaking key walls, and they had no need to commit to their sieges because they could escape into space at all times. It also broke part of the dynamic of Spiders wanting to keep the atmosphere in the station, and disincentivizing Breachers from venting the station also makes them more coherently a part of the Nest because they won't reduce the Nest's habitable area. Viper Spiders were seen quite little instead of the other options in the Enriched Egg; now, hopefully we'll see more. Likewise, the Breacher is quite powerful for being an Abnormal Egg, so perhaps now we'll see more focus on cocooning to unlock the powerful Breachers, or just overall less of them, which will help even the odds. Nurse Spiders were VERY underutilized despite their power— the do_after for their healing just felt obnoxiously long, and especially in tense situations, you'd have shuffle and Spiders yelling at one another because two of them have to Space Hulk the hallway for a semi-extended period of time. Now, Nurses will be able to heal and move on a bit faster. I don't believe this will create too many issues, balance-wise, as the time-to-kill on Spiders is still quite low for all but the tankiest against lasers and even welders. ## Changelog 🆑 Jane balance: Spider Breachers and Vipers have swapped castes. Breachers come from Enriched Eggs while Vipers come from Abnormals! Breachers can no longer survive in spaced rooms/temperatures. The Nurse wraps wounds faster, but with less damage healed per wrap. /🆑 |
||
|
|
2c7fe7b8cd |
Returns medical jumpsuits for medical doctors and CMO (#83191)
## About The Pull Request Gives medical doctors and CMOs back their jumpsuits. Additionally removes their surgery cap from their starting gear. Surgical scrubs and surgery caps are still available in vending machines and in other places. Coroner still has their scrubs. ## Why It's Good For The Game The scrubs have never made sense to be as part of a medical doctor's starting gear. Scrubs are meant to be put on for one surgery and replaced afterwards, not to be worn 24/7. Also, in my opinion, they look goofy as hell. Especially when doctors are wearing lab coats over them. [_Being a medical doctor does not inherently mean you're doing surgeries either._](https://www.youtube.com/watch?v=8byiwOY5XM0) ## Changelog 🆑 image: Medical doctors and CMOs now start with their jumpsuits rather than surgery scrubs and caps. /🆑 |
||
|
|
0cc5cfb178 |
Random Name Generation refactor, generate random names based on languages (for species without name lists, like Felinids and Podpeople) (#83021)
## About The Pull Request This PR moves random name generation for species onto their languages. What does this mean? - For species with a predefined name list, such as Lizards and Moths, nothing. - For species without predefined name lists, such as Felinids, their names will now be randomly generated from their language's syllables.   (In the prefs menu:)  Why? - Well, we actually had some dead code that did this. All I did was fix it up and re-enable it. - Generates some pretty believable in-universe names for various languages that are lacking name lists. Obviously defined lists would be preferred, but until they are added, at least. - Moves some stuff off of species, which is always nice. - Also hopefully makes it a tad easier to work with name generation. There's now a standard framework for getting a random name for a mob, and for getting a random name based on a species. Misc: - Adds a generic `species_prototype` global, uses it in a lot of places in prefs code. - Makes `GLOB.species_list` init via the global defines - Deletes Language SS - Alphabetizes some instances of admin tooling using the list of all species IDs - Docs language stuff - Deletes random_skin_tone, it does pretty much nothin ## Changelog 🆑 Melbert refactor: Random Name Generation has been refactored. Report any instances of people having weird (or "Unknown") names. qol: Felinids, Slimepeople, Podpeople, and some other species without defined namelists now automatically generate names based on their primary language(s). qol: More non-human names can be generated in codewords (and other misc. areas) than just lizard names. /🆑 |
||
|
|
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 /🆑 |
||
|
|
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 /🆑 |
||
|
|
af6cabda32 |
Venus Human Traps have an orbit menu category, recieve antag datum on spawn (#81411)
## About The Pull Request Venus Human Traps now have their own category in the orbit menu. It is a pleasant shade of green, just like vines are.  Venus Human Traps are also now given their antagonist datum upon spawning from a flower. The datum isn't really anything special but it's consistent with the other antag spawners. This also makes the spawner piece of the VHT flower bud invisible. It's an abstract object meant to handle the logic for spawning, and only the structure should be visible. This currently manifests as there being two, identical flower buds on the same tile when a flower bud spawns. I did not want to get into untangling the two objects in this PR. ## Why It's Good For The Game Venus human traps being lumped in with the humans in the "Alive" menu is WEIRD. Now ghosts can give a gigantic vine infestation the attention it truly deserves. Fixes a minor visual incongruity found while doing all this. ## Changelog 🆑 Rhials qol: Venus Human Traps are now visible in the orbit menu. Cool! fix: Spawning as a Venus Human Trap now properly gives you an antag datum/objective. fix: Venus human trap flowers no longer have a second, identical flower under themselves. /🆑 |
||
|
|
d0a19bdd92 |
Spider egg radial menus now require proximity (#81209)
## About The Pull Request Spider radial menus now require proximity, and will close if you move away from them.  ## Why It's Good For The Game Clicking the egg and not picking anything leaves the radial open. If you try to use any other eggs the menu will not open until you track down the radial menu and close it properly. If you aren't aware of this, it'll feel like all of the eggs are broken and lead to confusion. This has happened to myself and others. ## Changelog 🆑 Rhials qol: Spider eggs will now close their spawn menu when you move away from them. /🆑 |
||
|
|
0c89bfde44 |
Wendigo Cave Ruin & Domain Aesthetic Refresh + Wendigo Corpse Fix (#80334)
## About The Pull Request Updates the Wendigo Cave ruin on Ice Box and it's domain to be more detailed, without changing the shape of the arena too much. Also fixes the Wendigo attacking corpses,   And the domain!  ## Why It's Good For The Game Makes the Wendigo arena and the surrounding area more varied visually, as well as stopping the Wendigo from attacking the decorative corpses used in the domain. (Previous Arena for reference)  ## Changelog 🆑 qol: Wendigo Cave ruin gets an aesthetic refresh fix: Wendigos (Wendigi?) no longer attack corpses /🆑 |
||
|
|
54ab1e3936 |
Organ movement refactor *Un-nullspaces your organs* (#79687)
<!-- 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. --> closes #53931, #70916, #53931 ## About The Pull Request Organs were previously stored in nullspace. Now they are stored in their prospective bodyparts. Bodyparts are now stored in the mob. I've also had to refactor a lot of code concerning organ movement. Previously, organs were only moved into bodyparts once the bodyparts were removed. To accomodate this change, two major distinctions have been made: **Bodypart removal/insertion** Called only when an organ is taken out of a bodypart. Bodypart overlays, damage modifiers or other changes that should affect a bodypart itself goes here. **Mob insertion/removal** Called when an organ is removed from a mob. This can either be directly, by taking the organ out of a mob, or by removing the bodypart that contains the organ. This lets you add and remove organ effects safely without having to worry about the bodypart. Now that we controle the movement of bodyparts and organs, we can fuck around with them more. Summoning someones head or chest or heart will actually kill them now (and quite violently I must say (chest summoning gibs lol)). https://github.com/tgstation/tgstation/assets/7501474/5efc9dd3-cfd5-4ce4-b70f-d0d74894626e I´ve also added a unit test that violently tears apart and reconstructs a person in different ways to see if they get put toghether the right way This will definitely need a testmerge. I've done a lot of testing to make sure interactions work, but more niche stuff or my own incompetence can always slip through. ## Why It's Good For The Game <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> A lot of organ work is quite restricted. You can't C4 someones heart, you cant summon their organs and a lot of exceptions have to be made to keep organs in nullspace. This lets organs (and bodyparts) play more nicely with the rest of the game. This also makes it a lot easier to move away from extorgans since a lot of their unique movement code has been removed and or generalized. I don't like making PRs of this size (I'm so sorry reviewers), but I was in a unique position to replace the entire system in a way I couldn't have done conveniently in multiple PRs ## 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: Your organs are now inside your body. Please report any issues with bodypart and organ movement, including exotic organ, on github and scream at me fix: Cases of unexpected organ movement, such as teleporting bodyparts and organs with spells, now invokes a proper reaction (usually violent death) runtime: Fixes HARS runtiming on activation/deactivation fix: Fixes lag when species swapping /🆑 <!-- 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. --> |
||
|
|
f8b41f9442 |
Changes occurrences of recieve in code to receive (#80065)
## About The Pull Request I've stumbled across this enough to finally go through the entire codebase and fix it. I left out changelogs simply because rewriting history logs is bad. ## Why It's Good For The Game I find it pretty annoying because I stumble across words that are misspelled for a few seconds, and I'm likely not the only one who feels like this. Less spelling mistakes in code are better. ## Changelog 🆑 spellcheck: Occurrences of "recieve" has been changed to "receive". /🆑 |
||
|
|
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. /🆑 |
||
|
|
bbe440b3d6 |
More standardization for ghost notifications (READY) (#79596)
## About The Pull Request I'm still not satisfied with how ghost notifications work. This gives every notification with a source (99% of all notifications, in other words) a link to jump/orbit. Currently, notifications with "play" interactions would only get the interact link, so jumping to the source was pretty annoying. It removes posting the entire message in the alert tooltip, as some got pretty lengthy and it didn't seem to fit. To replace this, they will always use headers After:    NOTIFY_JUMP and NOTIFY_ORBIT have been merged, since the only difference seems to be whether it's a turf. The result shaves off some redundant lines of code, since most-every usage of notify_ghosts uses NOTIFY_ORBIT. ## Why It's Good For The Game More standardization for the ghost notification system. Adds a few alert headers that never had them. All in all, makes it easier for creators to throw alerts at ghosts ## Changelog 🆑 qol: Nearly every ghost alert should now feature a "VIEW" button, even those with click interaction. del: Ghost alerts no longer show the entire message in the tooltip, instead have been replaced with titles. /🆑 |
||
|
|
3c7005a37c |
Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls (#79320)
## About The Pull Request This helps clean up my favorite helper proc in the whole codebase, `notify_ghosts()`. The notify_suiciders, ignore_mapload, and flashwindow args are GONE. They have been replaced with the notify_flags bitflag argument. This was intended to make deadchat announcements a bitflag argument too, but those got reverted right before I originally wanted to submit this PR. The on-screen popup now shows the notification body when you hover it with your mouse again. The format is now `[notify_ghosts message] -- [click action (orbit/jump/play)]` Every single `notify_ghosts()` call has been changed to multiline format and has been given trailing commas. Pretty! ## Why It's Good For The Game Cleans up a proc that is very popular and going through a lot of changes at the time. Allows for further flexibility when this proc inevitably gets tweaked or improved. 12 -> 10 args is an improvement, and it doesn't impact the helper's flexibility at all. ## Changelog 🆑 Rhials code: The notify_ghosts proc has been cleaned up. Please report any abnormal changes in deadchat notification behavior. qol: The on-screen deadchat popups now contain the notification blurb when hovered with your mouse again. /🆑 |
||
|
|
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. |
||
|
|
34e488acf5 |
Spider Infestation Balance Rebalance Expansion Part 2 (#78705)
## About The Pull Request Balances 1. Spiders now slow down equivalent to their health 2. Tarantulas can no longer put web passages or solid webs and destroy walls outside of charge attack 3. Young spiders now cant pull objects do to being too weak and become slower outside of webs as they should be 4. Makes pneumatic airlock seal unable to be destroyed by spiders 5. All Broodmother eggs now have a cooldown timer Normal Eggs: 20 seconds Abnormal Eggs: 180 Seconds Enriched Eggs: 60 seconds Expansions 1. Added a new abnormal egg category 2. Broodmothers can now lay abnormal eggs 3. 2 new spiders added 6. A new web type: Reflective silk screen # Breacher    - Low damaging with High wound bonuses meant to debilitate enemies to take ground for the nest - Has the ability to breach areas by destroying walls with menson vision to map out strategic breachings - Immune to harsh environments with the ability to lay solid webs to protect the nest environment - Can send in warnings for the entire nest to hear Will Help the nest get out of being closed off by small construction attempts and fix some space breaches plus some back up by making enemies slower and scarring them off with some bloodloss # Tank   - Extremely low damaging build to absorb damage to hold ground for the nest - With the ability to lay down silk screen reflectors to protect the nest from missile attacks - Can heal itself at a slow rate Will provide great support to keep the nest at bay from range attacks at some extent and act as a damage absorber in dier situations # Abnormal Eggs   - They can only be made once every 180 Seconds - Hold the two new spider types ## Why It's Good For The Game New spiders to contribute to the general spider antag team dynamic, balances for spiders are always good making them funner to play against and bringing up challenges on their gameplay making them act less like murdering simple mobs and more like an actual nest trying to survive in the station. How? 1. **Cooldown egg laying:** broodmothers now have to be more strategic on where they place their eggs with an average of 3 eggs per minute per broodmother 2. **Spider slowdown on damage:** Spiders now will become slower the longer they stay out of the nest in battle making them have to retreat back to the nest shortening their time out murdering giving incentives to expand the nest 3. **Spider More Brute Damage:** Gives a reason to use melee against spiders although more dangerous it gives more reward due to the higher damage outputs since spiders are pretty much big bugs with delicate bodies no bones no good structural consistency equal more damage to blunt attacks 4. **Tarantula Nerfs:** Tarantulas shouldnt be able to destroy this many walls at this rate and be able to lay so many defensive webs I don't know why they had this abilities but their strong enough as is ## Changelog 🆑 add: Added Abnormal Eggs add: Added Two new spiders del: Some Tarantula abilities balance: Spiders speed are now connected to health balance: Spiders now take more brute damage balance: All egg laying now has a cooldown /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
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. /🆑 |
||
|
|
153e06dc04 |
Partially reverts ghost announcements (#79221)
## About The Pull Request #79139 turned out to be quite annoying, it wasn't taken into account that these alerts can stack (ie: spiders). Of course, I poked around the code and found some inconsistencies in the process. For instance, there were usages of Topic for custom action behavior which could've been consolidated. There were other instances where jump (the default action) doesn't give a link at all, which I think it should anyway, since the screen toast gives you this. I've standardized it more, meaning you can use "NOTIFY_PLAY" without writing a custom link and topic handler (for instance, MMIs) ## Why It's Good For The Game Fixes #79198 Fixes #79195 ## Changelog 🆑 fix: Ghost alerts have been tuned down a bit. /🆑 |
||
|
|
847514310d |
Fixes a runtime with AI targeting code, refactors faction checking to be at the atom/movable level (#78803)
## About The Pull Request Saw this in CI.  ~~Quick fix for it--because turrets are not mobs trying to call this proc on them will runtime. So let's give them their own implementation of the proc.~~ Just kidding, let's refactor faction checking entirely ## Why It's Good For The Game Fixes an issue with basic mob AI targeting and turrets. ## Changelog 🆑 fix: basic mobs will no longer runtime when trying to check the faction of a porta turret refactor: faction checking is now done at the atom/movable level /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
9cf089361e |
Abandoned Domains: Adds two new psyker-oriented virtual domains (#78892)
## About The Pull Request _Really? Bitrunning maps are so simple you could do them with your eyes closed? Hmmmmm..._ This adds two new medium-difficulty virtual domains to the pool -- Crate Chaos and Infected Domain. These two domains take you to neglected corners of the virtual world. These are unstable, bizarre locales that do not support the bitrunning machine's visual display, and must be traversed using echolocation. **_These domains have been designed around you being a psyker, and will turn your bitrunner avatar into a psyker until they leave the domain._** _**Crate Chaos:** Low cost, medium reward._ Sneak into an abandoned virtual domain, where they store all of the loot crates. There's about 40-ish crates in this space, and one of them (RANDOM) is the encrypted cache we're looking for. The crates must be manually inspected, requiring you to drop your weapon for a few moments, but that shouldn't be a problem. There's no hostiles, just a bunch of crates... right? This one has very few shenanigans or threats in it. It's meant to be an introductory experience to interfacing with things as a psyker, and getting the rhythm down for moving between visual pulses. _**Infected Domain:** Medium cost, high reward._ Enter another abandoned virtual domain. This one was sealed off from the digital world after the cyber-police failed to contain a virus that zombified its inhabitants, leaving it to grow unstable and full of holes. Fortunately, you're provided with the single best tool for arming yourself against zombies in any video game, ever -- Your very own Mystery Box. Get armed with (basically) whatever gun you want, and go put those wacky psyker abilities to use against those zombies. This one is a lot meaner. Many chasms, landmines, and zombies. Walk slowly, stay with your fellow bitrunners, and if it's too hard, there's no shame in going back and rolling for a better gun! The domains themselves are VERY simple, since there's little need for decor or particularly complex layouts. The idea is that you should be able to see everything you need to see in a given room/area with a single vision pulse. Here's what one of the maps looks like:  Err, uh, I mean... This is what the maps look like: <details> <summary>SPOILERS BEWARE</summary> <br>   (You wanna find out if there's something cool under those red lines? Go there yourself!) </details> These two psyker maps come with their own psyker safehouse too -- The Bathroom. It's gross, the medical supplies are kind of just sitting there on the floor... It looks a little bit better when you're blind, I guess.  ## Why It's Good For The Game I like psykers a lot more than I'm willing to admit. Unfortunately, the jankiness of echolocation provides such a disadvantage at times, that any "real" conflict is usually over before the psyker is even aware they're taking damage. Fortunately, the controlled environments that bitrunning maps are perfect for psykers. They give the opportunity to craft an experience around the player being blind, rather than forcing them to play blind through a seeing mans world. These two domains should present players with a unique challenge that is designed around playing as a psyker, with slightly higher-than-usual rewards for their trouble. More importantly -- They're fun! ## Changelog 🆑 Rhials add: Two new psyker-oriented virtual domains -- Crate Chaos and Infected Domain. add: Map helper for cyber-police corpse spawn. add: Map helper for swapping the encrypted crate in an area with a random crate from that same area. /🆑 |
||
|
|
eb28d04f08 |
Watcher Nest Lavaland Ruin (#78790)
## About The Pull Request Adds a small new lavaland ruin, the Watchers' Grave.   You will need to figure out yourself how to find a way through the walls surrounding it (it's not very hard). This is mostly just atmospheric but also serves as a delivery vehicle for a unique item; an orphaned Watcher egg. (That's kind of it in terms of loot, unless you count a handful of lavaland mob corpses and mushrooms). You can either eat this (it's an egg), throw it at someone to spawn an angry watcher, or keep hold of it for a while and see what happens. <details>  That's right it's your very own baby watcher. It orbits your head and shoots at lavaland creatures for unimpressive damage. It won't ever intentionally shoot a player but they might walk in front of it, as it doesn't hurt very much they will probably forgive you. If you die it will continue circling your corpse to guard it against predation. </details> In creating this ruin I also added a new component called "corpse description". It provides some extra examine text to a corpse which is removed permanently if the mob is revived. There's a field you can varedit on corpse spawners (or make a subtype) which will automatically apply it to spawned corpses. You can use it for environmental storytelling. Or admins can use it to make fun of how you died. Also I fixed basic mobs runtiming when examined by ghosts. ## Why It's Good For The Game More variety in map generation. It's cute. Adds a tool that mappers might like. ## Changelog 🆑 add: Adds a new lavaland ruin where you can find a unique egg. /🆑 |
||
|
|
191c9380f4 |
venus human traps are basicmobs + ""balance"" (#78749)
## About The Pull Request theyre basicmobs now, tangling is an ability and also applies a leash for the duration of the beam they now have 100 HP also when theyre not within 2 tiles range of space vines every Life tick they take 20 damage(they have 100 max hp) if they are in range however they heal 10 damage theyre slightly slower too, and they deal 10-20 damage, from the previous guaranteed 20 damage also their attack cooldown is 0.2 seconds slower the tangling does not automatically pull people but for the duration of the tangle the victim is leashed to you which means they cannot go out of range of you, so you can move backwards to pull them closer (as seen in video) https://github.com/tgstation/tgstation/assets/70376633/aed77f81-c564-4fcc-879e-7dd8a9b5c787 ## Why It's Good For The Game basicmob good also fighting these dudes unprepared is a death sentence and being caught unprepared is easy if kudzu decides to spawn in the middle of fucking nowhere and rolls flowering, then absolutely does not listen to the protect kudzu part and goes from the middle of nowhere to medbay to murderbone hopefully this should make them less proficient at shredding people and make them actually defend kudzu instead of murderboning ## Changelog 🆑 refactor: venus human traps are basicmobs now balance: venus human traps have 100 health balance: venus human traps take damage out of range of kudzu, heal near kudzu, are slightly slower, attack slower, and their damage output is slightly more random balance: also venus human trap tangle ability now needs you to actually move backwards to pull victims /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
3e554bdab3 |
Flesh Spiders Regenerate + QoL (#78704)
## About The Pull Request Replaces the Healing Touch component on Changeling-spawned Flesh Spiders with the Regenerator component, as the comment helpfully suggests. Flesh Spiders can no longer touch themselves to heal, instead they automatically begin regenerating their health if they go four seconds without taking damage. It takes 6 seconds to fully regenerate, so 10 seconds to fully heal from the edge of death (less if you're not that injured).  Also I changed the sprite for flesh spider eggs to a different one we already had rather than regular spider eggs tinted red, just because I felt like it. Would be cool to give the spiders their own sprite some time, but that's for another PR.  _Additionally_ the flavour text for flesh spiders was kind of messed up by being shoved into the objectives box and claiming that it was a directive from a spider queen you don't have, so I gave them their own slightly different antag datum to compensate. It also actually mentions how you heal yourself, which previously was down to trial and error or codediving. In the course of doing this I decided to just... move flesh spiders to their own type path. It _sort of_ made sense for them to be part of the giant spider typepath, but they keep being modified by changes targetted at "balancing the Giant Spiders antagonist" which this mob isn't related to and doesn't have any reason to follow. The fact that a mob has similar stats to another one isn't automatically a reason to share a typepath, and now that I have looked a little at this mob I'm sort of interested in branching it further away from "it's a spider mob but spawned a different way" in the future. Finally, this spider egg cluster and the midwife one would prompt ghosts with a radial menu with a single option on it... that's a bit pointless, so we'll bypass that menu if there is only one possible outcome. ## Why It's Good For The Game Currently Flesh Spiders heal by clicking on themselves and standing still for two seconds, restoring 50% of their HP. This means they can fully regenerate over 4 seconds unless you stun them, and with 90 HP you're not _that_ likely to kill one during the channel time. This just feels like an odd way for the creature to operate, regenerating instead gives it a hit-and-run strategy and adds more use to their webs (maybe we should give them meatier or bloody webs at some point? Might be cool). Also clicking yourself to heal is just unintuitive and I suspect several players just didn't realise they could do it in the first place. ## Changelog 🆑 balance: Flesh Spiders heal automatically over time if they go a short time without taking damage, instead of healing large chunks by clicking themselves and waiting two seconds. qol: Spider egg clusters which only hatch into one kind of spider don't ask you to select that one type from a radial menu with one option on it. qol: As a Flesh Spider, the game now tells you how you can heal yourself. /🆑 |
||
|
|
d6f79f4427 |
Refactor gib code to use bitflags and have documentation (#78754)
## About The Pull Request This takes all the gib related procs: - `gib()` - `spawn_gibs()` - `spill_organs()` - `spread_bodyparts()` And adds heavy documentation that communicates what the procs are used for and how the different bitflags affect them. The difference is noticeable: `gib(TRUE, FALSE, FALSE, null)` vs `gib(DROP_ORGANS|DROP_BODYPARTS)` The code is now much more legible which is important considering it's used in a lot of places! Another robust change, is that we had several places in the code where there were double negatives like so: ``` /mob/living/carbon/spill_organs(no_brain, no_organs, no_bodyparts) if(!no_bodyparts) // DOUBLE NEGATIVES ARE BAD M'KAY?!? // do stuff here ``` This is a mindfuck to untangle. I inverted a lot of these parts so we don't lose our sanity. Last thing that was changed was a big `if()` loop in the `spill_organ()` proc. This was refactored to just be a simple `for` loop with `continue` statements where we needed to skip enabled bitflags. It's now shorter and cleaner than before. The only slight gameplay change this affects is that gibbing a mob now guarantees to drop all items unless the `DROP_ITEMS` bitflag is deliberately omitted. Some places like admin gib self, we don't want this to happen. ## Why It's Good For The Game Gib code is very old. (~15 years) People kept adding more arguments to the procs when it should have been a bitflag initially. By doing it this way, there is more flexibility and readability when it comes to adding new code in the future. ## Changelog 🆑 refactor: Refactor gib code to be more robust. qol: Gibbing a mob will result in all items being dropped instead of getting deleted. There are a few exceptions (like admin gib self) where this will not take place. /🆑 |
||
|
|
13cfcdad6b |
Ashwalkers team stores players_spawned via ckeys rather than keys now (#78688)
## About The Pull Request So this just changes some instances of `key` to `ckey`. There is a reason for it I swear! So when ashwalkers get spawned their mob gets added to the `team.players_spawned` list via their `key` var. --- However, we have this as part of sacrifice code: Here the `deliverykey` var is set to `fingerprintslast`, which is a ckey. |
||
|
|
f861532d24 | Basic Legion & Hivelord (#78624) | ||
|
|
d436cf433d |
Gives maint drones random designations (#78573)
## About The Pull Request Right now, drone ghost spawners give all drones the name "drone." This makes it difficult to differentiate drones, both as a drone in drone chat and as a non-drone. This gives all drones a unique identifier like posibrains. Also changes a couple of 1s to TRUEs ## Why It's Good For The Game It's good to be able to identify drones, and for drones to be able to identify each other. ## Changelog 🆑 Tattle qol: drones now have individual names, instead of just "drone" /🆑 Co-authored-by: tattle <article.disaster@gmail.com> |
||
|
|
a3849062b8 |
Feature: bitrunner, a new supply role (READY) (#77259)
## About The Pull Request [Design doc](https://hackmd.io/@shadowh4nd/r1P7atPjn) Adds a new supply role centered on short dungeon-esque runs with a focus on unifying the job with the fun part. Some virtual domains are combat related, some are silly, some focus on "objectives". Avatar health is linked to your physical presence and retries are limited. <details> <summary>Photos, WIP</summary> Net pod stasis  Server loaded  Server cooldown  the quantum console UI  Cyber police antag page  A safehouse  Domain info page, every domain gets this (and sometimes help text)  Me getting steamrolled in one of the missions  Ghost roles getting notified that server is kicking them out  Players enjoying the new combat missions  Players exploring some of the virtual maps  (Not part of the PR, but)  New bitrunner vendor  </details> ## Why It's Good For The Game Content, firstly, and moreso being supply department content. The framework that this implements is a great (preauthorized) replacement for two systems which are collecting dust: BEPIS and the gateway. They integrate into this system and it's a direct upgrade. This adds a way for the players on station to generate materials (if that remains). The nice part about it is that I can throw balance and believability to the wind, as unlike its unrelated predecessor VR or away missions, bitrunning entirely washes its hands of the map and mobs each reboot. It offers a very expandable map framework to add content and it's all fairly well documented. I'd like to add a feature that represents the idea that jobs don't have to be mundane and "external" jobs can stay tied to the main gameplay loop. ## Changelog jlsnow301, kinneb, mmmiracles, ical92, spockye 🆑 add: Adds Bitrunning to supply department- a semi-offstation role that rewards teamwork. add: Adds new machines to complement the job- net pod, quantum server, quantum consoles, and the nexacache vendor. add: Adds several new maps which can be loaded and unloaded at will. add: Some flair for the new bitrunning vendor. add: Adds a new antagonist for the virtual domain only. Short lived ghost role that fights bitrunners. del: Removes the BEPIS machine, moves its tech into the Bitrunning vendor. /🆑 <!-- 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. --> --------- Co-authored-by: MMMiracles <lolaccount1@hotmail.com> Co-authored-by: Ical <wolfsgamingtips@gmail.com> Co-authored-by: spockye <79304582+spockye@users.noreply.github.com> Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> |
||
|
|
ff480386cd |
Fixed snow legion corpse spawning. (#78147)
## About The Pull Request Resolves #77973 Due to a pair of oversights, snow legions erroneously drop two corpses when killed, and both of these corpses use the spawnlists for Lavaland legions. The duplicate has been removed, and the snow legion corpse spawner is no longer a subtype of the regular one - which was causing the issue. Now the new corpses will actually spawn. ## Why It's Good For The Game Makes #76898 actually work. ## Changelog 🆑 fix: Snow legions now drop only one corpse, and no longer drop Lavaland corpses. /🆑 |
||
|
|
7f25d8d47e |
[NO GBP] Fixing a small issue with chasm fishing (#78111)
## About The Pull Request The default spawnables from chasms are spawned on top of the chasm rather than on the user's turf, and that can be an issue. ## Why It's Good For The Game This will fix #77982. ## Changelog 🆑 fix: fixed fishing skeleton mob spawners that immediately crumble back into the void of whatever chasm you fished them from. /🆑 |
||
|
|
69f51c6c65 |
Fixes typo 'transfered', olive oil reaction repath (#78064)
## About The Pull Request Transferred. ## Why It's Good For The Game How did this get to be in 71 files?! This bothers me. Also changes 'quality_oil' typepath in the reactions to 'olive_oil' to match its rename post-foodening. ## Changelog N/A |
||
|
|
a56270cb05 |
Fixes issue where role banned players can still play roles they're banned from. (#77738)
## About The Pull Request `is_banned_from(...)` expects a ckey. `/obj/effect/mob_spawn/ghost_role/attack_ghost(...)` checks for role bans by using key instead. This can lead to players whose keys and ckeys are different being able to evade certain ghost role bans; by accident or otherwise. This PR takes a two-pronged approach. The first fixes ghost roles passing in the key instead of the ckey to is_banned_from. This fixes the bug, and makes it consistent with all other cases of `is_banned_from(...)` being called. The second is to redefine the behaviour of `is_banned_from(...)` to accept either a ckey OR a key, since converting from key to canonical key should be a fairly trivial operation. This prevents this specific bug from ever occuring again, by making it intended functionality to pass either key or ckey similar to how the roles param accepts either a string role or a list of roles. ### ***Please review the code carefully, my changes to `is_banned_from(...)` have not been tested. No logical flow should have been changed.*** ## Why It's Good For The Game Ban systems working good. ## Changelog 🆑 fix: Fixes an issue where role banned players would be able to accept certain ghost roles they're meant to be banned from. /🆑 |
||
|
|
3b494ffa8f |
[no gbp] Removes a source of self-ling (#77941)
## About The Pull Request The protection from allowing a possessing mob to lay changeling eggs of the dead headslug corpses present in the meateor ruin was a post-creation variable edit rather than an immutable property of the typepath, so if for instance you had some kind of item of clothing which allows you to turn yourself into an instance of a mob via its typepath you could use them to turn into a headslug, bite a monkeyman, commit suicide, and then become a changeling. An unintended consequene of two things added by the same developer? Starting to stop looking like a coincidence, someone should investigate this guy... ## Why It's Good For The Game This is undesirable, which is exactly why nobody reported it even though they knew they could do it. |
||
|
|
5ba19ee746 |
Gives IceBox legions their own, separate corpse-drops. (#76898)
## About The Pull Request Noticed one of these snowmen drop an ash walker earlier today, and thought I would have that fixed for consistency's sake, as there's no ash walkers on icemoon. After I done that, I felt weird for just cutting out a thing like that, so figured a replacement: eskimos. So yeah. ## Why It's Good For The Game Consistency: There's no more ash walker corpses in legions on Icemoon, as there's no, and never was, any living ones. Fluff: Eskimos that replace them make much more sense. ## Changelog 🆑 add: Gave snow legions a separate corpse-drop pool: ash walkers excluded, but eskimos included. /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
7e21f2fbce |
Add policy for sentient mobs that were revived by lazarus injector (#77515)
## About The Pull Request There's two policies: * Normal lazarus injector gives you the 'friendly revived mob' policy since it normally makes mobs friendly to everyone, * Default text: "The lazarus injector has brought you back to life! You are now friendly to everyone." * EMPed lazarus injector gives you the 'slaved revived mob' policy since it normally makes mobs only friendly to you, * Default text: "You have been revived by a malfunctioning lazarus injector! You are now enslaved by whoever revived you." * The EMPed lazarus injector now also enslaves the mob to the person who revived them, giving them the text: "Serve [reviver], and assist [reviver.p_them()] in completing [reviver.p_their()] goals at any cost." Suggestions for default text welcome, ## Why It's Good For The Game There's currently no policy for lazarus revived mobs, so can be confusing. See https://tgstation13.org/phpBB/viewtopic.php?f=33&t=34538 Now it's more clear what they should do. Admins can also change the text if they want. ## Changelog 🆑 add: Add policy for sentient mobs that were revived by lazarus injector (depends on config) add; Sentient mobs that were revived by malfunctioning lazarus injector now get enslaved to whoever revived them. fix: Servant golems get their master's real name (Won't be serving "Unknown" if their master is wearing a mask) /🆑 |
||
|
|
47718914e4 |
More Suits resprites (Bonus: Chef/Bartender updates!) (#77558)
## About The Pull Request Finally, my ultimate goal: All Lawyer suits are now under suits.dmi. Having some suits in suits.dmi and some in civilian.dmi was just really really weird and confusing. Also updated some more Service stuff, specifically the Chef and Bartender. Their uniform is the generic Service Buttondown, and their other gear has been updated. The Bartender, notably, now has a new item, the bowtie! Full changelog: - Adds Bowtie (and yes, it's in relevant vendors) - Adds a greyscale Formal Jacket (the lawyer jackets but greyscaled) - Removes `/obj/item/clothing/under/rank/civilian/chef` and `/obj/item/clothing/under/rank/civilian/bartender`; replaces them with `/obj/item/clothing/under/costume/buttondown/slacks/service` - **Moves all Lawyer suit sprites to the suits.dmi** - Converted `/obj/item/clothing/under/rank/civilian/lawyer/bluesuit` to use the same GAGS configs as the buttondown (path unchanged) - Resprited all Lawyer suits (except galaxy ones) - Resprited the Lawyer jackets to match (including a currently unused GAGS-palette one) - Resprited the Chef Apron-Jacket and Hat - Resprited the Botanist Overalls (and made them Greyscale) - Updated the shirt on the Cook Jorts to be more up-to-date instead of being new pants on a super crusty old shirt sprite. - Puts stuff into vendors ## Why It's Good For The Game Sprote updates yahoo! Chef/Bartender showed their age, and essentially had the same uniform. Now they look much more at home.  GAGS Suit jacket yippee!  This jacket was put into to the Bartender's vendor for the sake of allowing them their own gimmicks, such as this:  New greyscale overalls wahooo! Since they're greyscaled they're also in the clothesmate for anybody who really wants them.  The Lawyer suits just used an entirely different type of shading and it made them stick out weird... I'm not quite sure on reshaping their jackets but figured it's better to start with this and update them if requested.  As for moving Lawyer suits to suits.dmi... I just don't like them being split up. It makes it annoying to prevent duplicates or keep them all updated. ## Changelog 🆑 add: Added the Bowtie! Bartenders start with one on, but they can also be found in the Bardrobe, Autodrobe, and Clothesmate. No need to tie it either, it's just a clip-on. add: Added a Greyscale "Formal Jacket" of the style that most suits use, for crew who want to make their own using the buttondown shirt. del: Removed the generic Cook/Bartender uniforms and changed them to use the Service buttondown w/ slacks. image: updated the majority of Lawyer suit sprites, along with the Cook's Apron-Jacket and Hat, and updated/greyscaled Botany's Overalls! Also the Overalls are available in the clothesmate, and the Cook Jorts' shirt is less crusty. /🆑 |
||
|
|
497f18ea32 |
Spiders don't automatically grant an antag datum (#77523)
## About The Pull Request Fixes #77501 Spider egg ghost role spawners grant the spider antag datum, rather than the act of being a spider. This means that gold core, mapstart, polymorph belt, and other spiders will not have an antagonist datum. While doing this I also made a new abstract `mob/living/basic/spider` type which all three kinds of spider life stage (`spiderling`, `young`, `giant`) extend from, because there was a gross amount of copied code. Now there isn't. Also the Flesh Spider and Event Midwife eggs now simply hatch adult spiders instead of child ones. This is because there is no reason for either of these to have a two minute wait time before they get going. Midwife spiders spawned by the event should just start spidering immediately, and Flesh Spiders are made by changelings and shouldn't be effected by measures introduced to balance the spider gamemode. Eggs which are laid during a round and _can_ hatch into midwife spiders still hatch baby spiders. Also I swapped some white pixels on the animation of the ambush spiderling for a different colour because they looked bad. ## Why It's Good For The Game While the policy is always "if you turn yourself into something, you're not an antagonist" the presence of the antag datum still confuses people. Plus that code was gross and I didn't like it. ## Changelog 🆑 fix: Giant Spiders only have an antag datum if created by the round event. balance: Flesh spider eggs hatch into adult spiders instead of baby spiders. balance: The eggs spawned by the start of the spider infestation event hatch into adult Midwife spiders instead of baby ones. /🆑 |
||
|
|
8957eb763c |
Spider Evolution - Young Spiders [Ready] (#76692)
## About The Pull Request This pr adds a young spiders that appear between spiderlings and adult spiders. Now spiders have a stage where they are squishy but can also spin webs and do some other things early depending on the spider type. Spiderling stage takes 40 seconds and young spider stage take 1 minute, ealier for spiderling this was 1 minute. Also adds a new wizard spider sprite and makes the spider form usable. Gives Wizard Spider version has better immunity against fire since it can kill a wizard very fast it they are not paying attention. Makes tangle spider get more health but makes the self-healing worse. This is done because spider is a team antag except for the flesh (changeling spider), making it so solo-playing as tangle is less encouraged. Scout spiderling gets thermal vision also. It cannot communicate, but it can already start scouting now. Viper deals bonus damage when an enemy is on low health. Toxins don't kill humans anymore, and since the viper spider only deals 5 damage now it deals more so it can actually take down enemies at low health. They also have a little more health since they always die very fast. Viper can also change between a defensive/slow mode with more armor or a offensive/speed mode with less armor. Nurse spider heals for 25 instead of 20, since 25 is one laser shot, it makes more sense for the nurse spider to be able to heal that amount. Flesh spider grows faster since they are a solo antag and spawn killing isn't cool. Tarantula spider can now tear down walls by clicking them instead of needing to use their charge attack. They can also build wall webs and passage webs. Their damage coeffs also got the regular burn factor for spider so their health also increased a bit.   ## Why It's Good For The Game Now there is a smooth transition between the tiny spiderling and the bigger spider stage. This will promote people to help the hive at an earlier stage while not being too powerful yet. It is also realistic and adds extra flavor to the spider antag. The other balance changes are improvements to the game. ## Changelog 🆑 add: Young Spiders that appear between spiderlings and adult spiders. balance: Wizard Spider version has better immunity against temp damage and can lay webs faster. balance: Tangle Spider sucks more with self-healing but has more health. balance: Scout spiderling gets thermal vision. balance: Viper deals bonus damage when an enemy is below 20% health. /🆑 |
||
|
|
327fe56563 |
Areas created with the "land claim" are no longer hazardous to free golems (#77357)
## About The Pull Request New areas created by standard blueprints are not safe for golems, which is why I'm touching blueprints and create_area code and making the blueprints found in the free golem ship an actual subtype rather than a map-edited instance. ## Why It's Good For The Game This will fix #77354. ## Changelog 🆑 fix: Areas created with the "land claim" blueprints are no longer hazardous to free golems. /🆑 |
||
|
|
e51e808f77 |
Fix duplicate sentence in space comms agent flavor text (#76880)
## About The Pull Request Fix duplicate sentence in space comms agent flavor text ## Why It's Good For The Game spelling fix ## Changelog 🆑 spellcheck: Fix duplicate sentence in space comms agent flavor text /🆑 |
||
|
|
fb10121022 |
Icons folder cleaning wave two (#76788)
## About The Pull Request Further continous organizing and cleaning the Icons folder. There are still some minior nitpicks left to do, but I reached my daily sanity expenses limit again, and the faster these get in the less issues for both me and others later. Also cleans some mess I caused by my blindness last PR. ## Why It's Good For The Game Saner spriters = better sprites |
||
|
|
16cecf864d |
Goliath basic mob (#76754)
## About The Pull Request Converts Goliaths to the basic mob framework and gives them some new moves because I can't leave things well enough alone. I am planning on touching all the lavaland fauna and then maybe even the icebox ones if I haven't got bored. The Golaith is the first because it is iconic. https://www.youtube.com/watch?v=JNcKvMwT4-Q Here's me getting killed by one as a demonstration. Despite my poor performance I would contend that they aren't a _lot_ more dangerous, but they are a little more dangerous. The chief difference here is that they have two new attacks which they will only use in response to being attacked. If fired at from range, they will target the attacker with a line of tentacles (it doesn't track you, so is easily sidestepped). If attacked in melee, they will surround _themselves_ with tentacles, on a longer cooldown. Something else you may notice in this video: I discovered that basic mobs are actually _too smart_ to be Lavaland fauna. Typically (unlike their old form) a mob on our new AI system is smart enough to attack someone _the moment they come into range_ rather than only checking on predictable ticks, which would make using the Crusher an essentially unviable prospect. To counteract this, Goliaths now have a delayed attack component which gives you a visual warning and short duration to get out of range before they swing at you. I will probably put this on all mining fauna that get reworked, it wouldn't be a terrible thing to put on other mobs to be honest. Other changes: The goliath stun is now a status effect with _buckles_ you to the tentacle as if grabbed, as well as its previous effects. While this seems purely worse, any nearby helpers can now help-click on you to instantly remove the debuff. Experiencing the effect of a Lobstrosity Rush Gland makes you immune to being grabbed by tentacles and an implanted one will automatically trigger and free you if you are hit, and the explosive effect of Brimdust also causes the tentacle to retract (although you'd need to take damage for this to happen). Using the tools of the land, you can make these creatures less threatening. The ability for a Goliath to chain-apply the ability has now also been reduced, it won't refresh its duration if you are hit when already buckled. When not occupied hounding miners, Goliaths will intermittently dig up the asteroid sand and eat any worms that this produces. I also made some new sprites for riding a Goliath because they've been broken since the Lavaland mob update and also kind of were ugly before then anyway:  Other code changes: - I made an element which only lets an attached object move every x seconds. This is because Goliaths are far too slow to use the speed system (the glide just looks bugged as hell) but one thing I am invested in when converting these is to make sure that they share the same behaviour when player or AI controlled. This is disabled while you're riding them because it was interminably slow. - The Goliath tentacle trail uses a supertype object now shared with the Meteor Heart which did something kind of similar. ## Why It's Good For The Game It begins the process of moving one of our larger subsets of NPCs onto the newer framework for NPC behaviour. It adds a little bit more life to an iconic but slightly uninteresting foe which mostly just walked at you slowly. This PR contains a few components I expect to apply more widely to other mobs in the future. ## Changelog 🆑 refactor: Goliaths now use the Basic Mob framework, please report any unusual behaviour. add: Goliaths learned a couple of new attacks which they will use in self-defence. balance: Help-clicking a miner grabbed by Goliath tentacles will immediately free them, as will the effect of several items you can scavenge from around Lavaland. image: New sprites for the Goliath saddle. /🆑 |
||
|
|
a373b4cb08 |
Icon folder cleaning wave one (#76703)
## About The Pull Request Due to a mental breakdown caused by unfathomable abomination that is icons folder, I swore to myself to one day clean it. Today is kind of that day. Been at it for around 6, you gotta understand I need a rest. I tracked most changes in descriptions of commits if you are looking for details. ## Why It's Good For The Game Saner spriters make better sprites. And also, just helps keep track of things. ## Changelog 🆑 image: added sprites for different variants of scrolls. image: modified couple posters with ghost pixels. /🆑 --------- Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com> |
||
|
|
8c1e35e1c0 |
Refactors mind language holders into non-existent, fixes new languages being deleted on species swap + tests (#76612)
## About The Pull Request This PR refactors mind language holders into non-existence As a result, `update_atom_languages` is no longer necessary Mind-bound languages are transferred via `/mind/proc/transfer_to` Species changing no longer deletes and re-creates the mob's language holder, allowing them to keep any languages they have. Species languages are sourced from `LANGUAGE_SPECIES` now, meaning they are removed when they change species. If the mob is not a human with a species datum, these are effectively just atom level languages. Makes a bunch of unit tests to ensure language transfer over certain events works as intended ## Why It's Good For The Game Mobs with minds having two independent language holders results in a good few bugs, and simply doesn't make sense when we have sources (`LANGUAGE_MIND`). Instead of tracking two language holders, we can simply use sources better and only track one. This means that the language holder you start with is your language holder, period. It doesn't get deleted or re-instantiated or whatever. ## Changelog 🆑 Melbert refactor: Refactored language holders, making species changes not delete all of your known languages /🆑 |
||
|
|
48cc57010d |
Various spider fixes (#76528)
## About The Pull Request Fixes #76484 Then I noticed some weird stuff which slipped through the PR and poked at that too. - Spiderlings and Spiders once more have names ending in (###) - Removed an unused property on Spiderlings. - Rewrote the descriptions for a bunch of web-abilities and web-objects to be clearer and have better capitalisation. - Refactored the "Web Carcass" ability to not extend from "lay web" as it didn't need to perform most of that behaviour. - Also I renamed it and made the description give you a hint about why you would want to instantly spawn a statue. - The web effigy now despawns at the same rate as the ability cools down so you're not dumping spider statues all over the place. - I made spiderlings move at about the same speed as humans except if they're on webs in which case they're still pretty fast. To be honest I am not certain an instant statue spawning button is great to begin with and I didn't even know it was added to the game but I am not interested in messing much with the balance for now. This made me look at spiderlings enough that I'm going to try and make a new sprite for them that isn't awful. ## Why It's Good For The Game Lets you differentiate individual spiders a little bit. Makes usage of abilities clearer. ## Changelog 🆑 balance: Guard spider web statues despawn as the ability comes back off cooldown. balance: Spiderlings now only move at light speed if they're on webs, stay safe little guys. fix: Spiders once again have random numbers after their names. /🆑 |
||
|
|
5fdb5fa0f0 |
Mob spawners now return their created mob after create_from_ghost (#76371)
<!-- 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 create_from_ghost() now returns the body it produces. This should fix the pirate/fugitive ghost orbit notifications, since they expect to have a mob returned by this proc. Since the mob they expect to be returned is used as the subject for the ghost orbit popup, the popup would have no source and end up being blank. <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game Players selected to play pirate/fugitive will now have a functioning orbit popup. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> <!-- 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. --> |
||
|
|
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) |
||
|
|
803658dc30 |
Deadchat Announcement Variety Pack 2 and also some fixes to other popups (#76053)
## About The Pull Request This adds ghost orbit popups for the following: - Macrobombs (or stacked microbombs) being triggered. - HFR Meltdowns. - Living players about to be gored by an emagged organ harvester. - Nuclear devices being armed. - Doomsday devices. - Blob hosts bursting. This also modifies the following ghost orbit popups: - Toy hot potatoes will no longer cause a popup when armed. - Normal spider eggs will not flash the byond window, only special egg types. ## Why It's Good For The Game Gives more gathering spots/information to deadchat. Let no entertaining moment in this game go unobserved. Spider eggs flashing your window for every single egg produced makes alt-tabbing suck. I saw some guy on the forums complaining about it and thought "huh yeah I guess he's got a point that pisses me off too" so here we are. ## Changelog 🆑 Rhials qol: Basic spider eggs no longer flash the byond window when ready to hatch. qol: Toy hot potatoes no longer give a ghost notification. qol: Deadchat will be notified in the event of an imminent macrobomb detonation, HFR meltdown, organ harvesting, qol: Deadchat will be notified when a nuclear/doomsday device is activated, as well as when a blob-infection bursts. /🆑 |
||
|
|
abc0820466 |
Gives Fugitive Hunters credible IDs, access restricts the hunter shuttles, minor hunter shuttle improvements (#75913)
## About The Pull Request This standardizes fugitive hunter IDs, making all hunter packs use the same subtype and giving them to hunters who would spawn with no ID at all. The badass flaming ID color that the OG Bounty Hunter team got are now the standard for fugitive hunter IDs. Additionally, these IDs now come with a radical skull trim. (Spacepol Officers don't get the badass flaming skull ID, and instead get a more modest Police Officer ID). **These IDs come with access, too. Airlocks, bolt buttons, shuttle controls, and shutters on all of the hunter shuttles now require a hunter's ID to operate.** While I was in the area doing mapping stuff to get the accesses in place, I made a few other very minor changes to the shuttles. These include: - The Bounty Hunter shuttle now has an oxygen dispenser. Two walls have been moved to make space. - The Russian Hunter shuttle now gets enough oxygen tanks to share with everyone. - The Psyker Hunter spawners now have proper spawner menu text. This was due to duplicate-but-not-really subtypes existing, and me mistakenly putting the wrong ones there in a previous PR. - The cut ai wire helpers from the Russian/Psyker shuttles have been extended to the Bounty/Spacepol shuttles. - Every hunter shuttle now has a shuttle pinpointer on it somewhere, and is no longer exclusive to a single Bounty Hunter's loadout. ## Why It's Good For The Game Some of the hunter IDs would spawn without trims or coloration, and some hunters wouldn't spawn with IDs at all. Now, everyone gets a credible, cool-looking ID that lets everyone know what you're here to do at a glance. One of these is a crazed larper with an unregistered firearm, the other is a certified bounty hunter. As for the hunter access, it's pretty nonsensical that anyone can just walk into the hunter ship and set up shop. At least the pirates get turrets! Not to mention, it's hard to balance or give hunters new equipment in good conscience when their entire domain is public-access and anything they can't carry is considered forfeit to the crew. Now it can be used as a base of operations, storage area, etc. more securely. Locking down the shuttle with accesses isn't going to stop a determined gamer with a toolset, but it'll at least make it more interesting and an actual risk. If the fugitives want to try and loot/hijack the shuttle, it will require the effort of taking down one of their hunters first. While hunters stand out for the differences/imbalances between each group, I don't see the shuttle pinpointer as something that contributes positively to the OG bounty hunter's uniqueness. There's no reason why the other hunters shouldn't also be able to track their ship. |
||
|
|
a1d58490c5 |
Turns Changeling Headslugs into a Basic Mob (#75601)
<!-- 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 Short and simple, just converts the changeling's headslug (that ability they get that lets them infest another body) into a basic mob. Also touches up some of the code, as well as split up the code such that the headslug resides in the basic mobs folder, while the eggs are in the changeling's antagonist folder, rather than one megafile for both. No AI because this is 100% a player-controlled mob, it never exists in any other context. No UpdatePaths for the same reason as well, this shouldn't (and really doesn't) exist on maps because its sole purpose is player-driven. <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game Knocks another one off the list, potentially clears up some janky code with how this operated and just beautifies it overall. I also standardized the name "headslug" in any applicable context because the name "headcrab" is quite confusing. Some other code still refers to it as headcrab/crab, but that's whatever, at least the paths are a-okay now. Also opens the door in case someone really wants these to be AI-powered? That sounds really weird and I don't really support that idea, but it's indeed possible.  Grow and regrow, the life cycle. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## 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: Headslugs (the really small slug-like changeling form) are now basic mobs. They only wander around aimlessly now instead of attacking corpses all the time, and examining will let you know what type. Should probably still smash them before they suddenly gain sapience... /🆑 <!-- 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. --> |