mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-21 12:08:55 +01:00
docker-build
197
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ca2cc70322 |
Organ damage refactor/cleanup (#93436)
## About The Pull Request So, my original goal was just a refactor for the emissive overlays of eyes, as a way to implement the specular emissive introduced by smartkar some time ago, but somehow I found myself dragged into a bigger refactor or cleanup of organ damage, thresholds, failures. One of the main problem was that there were no procs called when a organ suffered enough damage to fail or when recovering from failure. It'd just enable or disable a bitflag, leaving it up to subtypes to decide how to tackle organ failure their own ways: diverse, funky and sometimes incompatible. More often than not relying on their very own "update_thingamajig" kinda procs that run whenever the organ takes damage, rather than just when the threshold is reached (low, high, failure. There are however a couple organs with their own quirky thresholds, I let those slide). There's also a bit of old code, especially for ears, with the `AdjustEarDamage` and temporary deafness both predating the framework for organ damage as far as I know. It really needed a coat of fresh paint. Oh, there were also more than a handful of organs that still heavily relied on some ORGAN_TRAIT source instead of the `organ_traits` list and the two add/remove procs `add_organ_trait` or `remove_organ_trait`. This include organs that lose or gain specific traits when failing et viceversa. ~~Lastly, felinids (and the halloween ghost species) having reflective eyes. It's just a nod to the tapetum lucidum that animals with night vision often have (including cats), which is why their eyes are a bit brighter in the dark. Felinids however, do not have night vision (nor do ghosts). This is merely cosmetic.~~ Cut out for the time being due to issues with the specular emissive... ## Why It's Good For The Game Refactoring / cleaning up old organ code. ## Changelog 🆑 refactor: Refactored organ damage code a little. Hopefully there won't be issues (otherwise report them). /🆑 |
||
|
|
157d88d39d | Visual and balance changes to brimdust sacks and rush glands (#93323) | ||
|
|
0204ab8fdd |
Canreach refactor (#93165)
## About The Pull Request ports https://github.com/DaedalusDock/daedalusdock/pull/1144 ports https://github.com/DaedalusDock/daedalusdock/pull/1147 full credit to @Kapu1178 for the juice instead of `reacher.CanReach(target)` we now do `target.CanBeReachedBy(reacher)`, this allows us to give special behavior to atoms which we want to reach, which is exactly what I need for a feature I'm working on. ## Why It's Good For The Game allows us to be more flexible with reachability ## Changelog 🆑 refactor: refactored how reaching items works, report any oddities with being unable to reach something you should be able to! /🆑 |
||
|
|
975d3d47ae |
Fixes certain broken icons in the outfit editor, stripping menu and multiple others (#93319)
## About The Pull Request ``icon2base64`` does not like animated icons and will display an atlas in TGUI when one is passed into it <img width="239" height="220" alt="JKneqDL9NH" src="https://github.com/user-attachments/assets/47e0ffdf-c155-4c84-94ce-c23203281012" /> Additionally added some padding between the icon and the slot name in the outfit editor because it annoyed me ## Changelog 🆑 fix: Fixed certain broken icons in the outfit editor, stripping menu and multiple others /🆑 |
||
|
|
5f3c85eee0 | Unifies mob, megafauna and boss crusher loot and achievements (#93068) | ||
|
|
5227e3e333 |
Reworks the mining MODsuit (#92948)
## About The Pull Request Slightly reworks the mining MODsuit to be more distinct from other mining gear and have its own designated role as an exploration and mining tool. - Base armor (when covered in ash) has been reduced to 50 from 60, being equal to that of an explorer suit with two goliath plates attached. However, entering the sphere mode will grant additional 20 armor, bumping it up to 70 (equal to that of a H.E.C.K. suit) - Integrated drill no longer mines instantly by default, instead having a delay of 0.25 seconds. However, when entering the sphere mode, the drill will overcharge and get back its instamine, as well as get halved power consumption. Currently, those two are mutually exclusive, and the drill cannot be used in the sphere mode. - Mining bomb cooldown has been reduced to 1s from 1.25s. They also now detonate much faster, and the detonation time matches their animation. The digging radius has been reduced back to 3x3 from 5x5, and their damage has been reduced to 28 from 48 to compensate increase in firing speed and reduced detonation delay making them much easier to use (functional DPS has been reduced from 36 to 28) - Rewrote ore bag a bit to try and make sure it doesn't break when depositing ores into the ORM. I only have faint suspicions of this being possibly being caused by ore getting deleted and leaving a null in the list, so removing it should hopefully? stop the bag from breaking. - The 0.25 slowdown is back, but it should be less of a problem considering that the sphere mode now is a much more viable traversal tool and not an utter joke aside from lava traversal. - The MODsuit now comes pre-equipped with a magnetic harness, which is now capable of stowing kinetic crushers in addition to guns. This should make using the sphere mode less of a pain in the ass, as you won't drop your weapon whenever you enter the sphere mode before you remember to put it in your suit storage slot. The delay on harnesses has also been reduced to 0.5 seconds, which should make them more comfortable to use, while still allowing someone to grab your gun if you're not careful. - The sphere mode can no longer traverse lava roundstart, instead requiring to be upgraded with two pieces of bileworm skin to get lava-resistant plating. This is meant to work together with #92877, being a part of ongoing effort to bring mining back in terms of speed and action level, reducing mining and exploration speeds in favor of higher ore spawns and more focus on gear and equipment progression. <img width="92" height="98" alt="image" src="https://github.com/user-attachments/assets/740ab28d-210d-4832-ba07-00dbd8680491" /> Additionally, both the mining drill and green raptor bumpmining has been nerfed (technically fixed, practically nerfed) by removing the diagonal movement... thing which allowed you to mine thrice as quickly and ignore the one-tick movement delay due to how diagonal movement works. https://github.com/user-attachments/assets/711e895f-e7e7-4cd9-b484-d7d11ff597af Its still fast and comfortable to use, just not absurdly fast. ## Why It's Good For The Game The mining MODsuit is in a very weird place both balance and progression wise. Its very easy to get if you ignore vents, it has good armor stats, it allows you to partly ignore being set on fire (or fully if you get the regulator module, but that requires more effort). I don't think that the buff was very needed, it was very strong as-is when used properly (with a yellow or green raptor mount) which not a lot of people seem to have realized. However, its still in a pretty pitiful state as its core feature (sphere mode) is nigh useless as the drill only works outside of it, and mines themselves are extremely clunky and uncomfortable to use. This leaves it only being useful for its cheap armor (without needing to kill goliaths), free GPS and ore bag that don't occupy your pockets, and ability to ignore environmental hazards. The solution I've decided to go with is reworking the MODsuit to be focused on mining and exploration rather than combat, being a good equipment piece for newer players and miners less interested in hunting megafauna. This carves the MODsuit its own niche rather than being weirdly slotted between base suits and contending with drake armor in terms of stats/effects. Roundstart lava crossing capabilities removal alongside bumpmining nerf is somewhat unrelated to the rest of the changes, it is a part of the exploration rework alongside #92877, which is intended to force miners to engage in combat more. Without the nerf, the suit is as fast as a yellow raptor, which lets it go through lavaland at absurd speeds when moving diagonally. (Yes, diagonal zig-zag movement ignoring the bump delay allows you to outspeed someone moving cardinally) More details about the project can be found in this [design doc](https://hackmd.io/@smart-kar/HkUINgBtke). The instamine ability of the sphere will likely get slightly nerfed in the future with the main batch of ore spread buffs and mining speed nerfs, but I've left it as powerful as a green raptor to not make the suit useless when compared to other options in the meantime. ## Changelog 🆑 add: Mining MODsuit has gained a magnetic harness for all of your crusher stowing needs. balance: Magnetic harnesses now take only 0.5 seconds to pick up your gun, and can pick up crushers. balance: Mining MODsuit has regained it small slowdown, and lost 10 melee armor. balance: Mining drill MODule is no longer instant (outside of the sphere mode of a mining MOD) balance: The mining sphere MODule now can break rocks when rolling into them, gives 20 melee and bomb armor when active, and has a shorter bomb cooldown, but bombs themselves have reduced damage and mining AOE. balance: Mining sphere MODule now requires an upgrade in form of two pieces of bileworm skin to be able to traverse lava, as opposed to being able to do so innately. fix: Fixed MODsuit ore bag sometimes breaking permanently when depositing ores into the ORM. /🆑 |
||
|
|
7601d66a96 |
Refactors immerse element to use alpha filters instead of static overlays (#93038)
## About The Pull Request Immerse element now uses an alpha filter rather than a vis_contents object, which allows them to be much more smooth and seamless. There's no longer a visible contour on fully opaque liquids, nor a janky effect when you move in a liquid. This also fixes the broken fluid animation, so now it actually has a bit of a wave to it. <img width="179" height="183" alt="dreamseeker_PDjP1zyMRl" src="https://github.com/user-attachments/assets/7c1bbefe-0e97-456e-a303-c34e6a1a238a" /> <img width="177" height="180" alt="dreamseeker_hGjKOyBL8f" src="https://github.com/user-attachments/assets/6c3bc33f-a22c-452a-beb0-9dd44b080a7c" /> <img width="152" height="162" alt="dreamseeker_Et3eRd3NF6" src="https://github.com/user-attachments/assets/1478aaba-d345-44de-8baa-9d0da0bc9d1c" /> <img width="185" height="182" alt="dreamseeker_5Iok1lUni2" src="https://github.com/user-attachments/assets/4ac5fea4-24a7-46c2-b475-4445a43493b4" /> The code is immensely cursed in some places, ideally this should not have to use vis_contents whatsoever but BYOND seems to be intent on causing memory leaks whenever you try to set mutable's render_target to an interpolated string, so I'm using a VIS_HIDE object as a relay for the filter for the time being. I've ended up changing some mob pixel_y offsets to pixel_z (as they should've been from the start) to account for this (the logic is being that pixel_y is "physical" position on the turf, while pixel_z is how high above the turf something is) ## Why It's Good For The Game The effect is less jank and looks cool. ## Changelog 🆑 refactor: Refactors immerse element to use alpha filters instead of static overlays. It should look much prettier now. /🆑 |
||
|
|
a35e236268 | Adds glowing bits and pieces to a bunch of lavaland mobs (#92730) | ||
|
|
e545a0ae93 |
Fixes raptor pixel offsets (#92719)
## About The Pull Request <img width="166" height="118" alt="dreamseeker_37t0MNU5jA" src="https://github.com/user-attachments/assets/24b1e04e-b14d-429a-b0c1-204146b07a8d" /> <img width="136" height="125" alt="dreamseeker_HoBk2zzy9b" src="https://github.com/user-attachments/assets/2e1139fe-7051-4085-8c76-859495bea134" /> <img width="145" height="134" alt="dreamseeker_KNIWzKUX1c" src="https://github.com/user-attachments/assets/aeeff869-4331-47d8-9199-a021858175fd" /> Currently raptor pixel offsets are completely broken and result in you sometimes being visually on the tile next to you, and are inconsistent between east and west rotation. This makes it nigh impossible to determine which tile you're on. ## Changelog 🆑 fix: Fixed raptors and their riders having weird/confusing pixel offsets /🆑 |
||
|
|
db9e3cf9dd |
red raptors are now able to attack while ridden (#92455)
## About The Pull Request red raptors will now be able to retaliate against mobs adjacent to it while ridden. ## Why It's Good For The Game red raptors dont have much use compared to its colleagues. this gives it a bit of a unique purpose and makes it a viable option to have out on the field ## Changelog 🆑 balance: red raptors are now able to attack while ridden /🆑 |
||
|
|
dd37687c59 |
Fixes a couple more mob-related hard dels + fixes a balloon alert race condition from brimdemon fang (#92498)
## About The Pull Request Tin, some more hard dels that were found. Additionally there was a balloon alert meant to display phrases like "Kapow!" "Bam!" etc but it is runtiming before it can do so because the mob gets deleted before the balloon alert gets displayed. (solution for these sorts of issues is to display the balloon alert on the `loc` instead. ## Why It's Good For The Game Less chug, and a bugfix. ## Changelog Probably nothing worth mentioning |
||
|
|
64376e2899 |
Refactors reagent transfer operations (#92213)
## About The Pull Request - Fixes #92198 - Fixes #92298 **1) Replaces reagent `on_transfer()` with its corresponding `expose()` proc variants** This PR replaces all known implementations of `/datum/reagent/on_transfer()` with `/datum/reagent/expose_mob()`. We use `expose_mob()` & not the other `expose()` variants because all known implementations were targeting living beings so this was the correct replacement This has 2 benefits - `expose_mob()` gets called correctly when an impure reagent is converted to it's inverse variant like for Cryostylane & Cryogeldia. This isn't the case for `on_transfer()` so we get correct behaviour which fixes the above bug - Removing `on_transfer()` makes the proc `/datum/reagents/trans_to()` much faster performance wise because we aren't calling `update_total()` per reagent transfered now but only once at the end after all reagents are transferred Also there was little to no functional difference between the 2 procs, `expose()` works correctly in comparison & this won't confuse devs when deciding which proc to use. One proc to cover all scenarios **2) Removes unused expose signals** `COMSIG_ATOM_AFTER_EXPOSE_REAGENTS` & `COMSIG_REAGENTS_EXPOSE_ATOM` are not used anywhere in the codebase i.e. no listeners. They can be discarded as dead code **3) Fixes wrong transfer amount passed to `/datum/reagent/intercept_reagents_transfer()` & `/datum/reagents/expose()`** The wrong transfer `amount` was passed when it fact it should use `transfer_amount` which contains the multiplier & proportional multiplier applied. Also the reagent volumes exposed was computed incorrectly resulting in the 2nd issue listed above. Blood transferred to mobs now go to `blood_volume` directly instead of getting added to the mobs reagent holder as long as it's less than `BLOOD_VOLUME_MAXIMUM` level ## Changelog 🆑 fix: reagent intercept operations use correct volumes e.g. ph buffers fix: impure cryostylane now has inverse cryogeldia effects when applied on mods fix: exposing reagents now uses correct volumes i.e. injecting blood into mobs don't increase it exponentially and stops when max levels are reached. Exposure affects of all reagents are lessened upon continuous exposure refactor: refactors how reagent affects are applied on mobs. Report bugs on github /🆑 |
||
|
|
5a263b77a3 |
Changes to crusher trophies and mining AOE, adds a new raptor-sourced trophy (#92241)
## About The Pull Request - Rebuke effect (from god's eye and lobstrocity claw trophy) now works on basicmobs, increasing the cooldown on their ranged attacks just like it does for simplemobs. - Bileworm spewlet trophy shots no longer hit your allied mobs, as previously this would cause you to constantly hit your own raptor/minebots/NODE drones, making it actively detrimental in some situations. Its shots now deals brute damage instead of burn, as otherwise its damage was reduced by 70% due to innate projectile resistance of lavaland mobs, making it deal measely 6 damage every 10 seconds. - MOD sphere module bombs now properly aggro lavaland mobs, as previously they only worked on simplemobs (also fixed a direct assignment to the blackboard in legionnaire spine code). - They also no longer deal damage to minebots and NODE drones. - Afterimages from the ice demon and their trophy can now be passed through, although hostile AI would attempt to avoid doing so. This way the trophy should no longer be an active detriment to players, and demons themselves should be less jank to fight. And if you're a heartless enough bastard, you can kill and butcher your raptor to get a new raptor feather crusher trophy, which allows your destabilizer shots to phase through your allied mobs similarly to passthrough mods for PKA. <img width="174" height="125" alt="Aseprite_3Olcd7oyVJ" src="https://github.com/user-attachments/assets/99d7eebb-e36d-428b-aa48-f1261a173ca1" /> ## Why It's Good For The Game These changes should make vent defense more bearable, as right now its very easy to accidentally damage and kill your own drone due to them being hit by all AOEs in miner arsenal. - Rebuke - should probably work on basicmobs as only remaining simplemobs on lavaland are megafauna - Bileworm spewlet - its a joke of a trophy at 6 damage as it has a 10 second cooldown, and it hitting your allies made vent defense much harder than it should've been - Sphere changes - should make bombs not kill your NODE/mining drones, aggro helps prevent cheese. - Afterimages - the trophy can end up bodyblocking you, this change should make it less of a pain in the ass to use the trophy and to fight the demons themselves. - Raptor feather - useful for vent defense when you're using minebots or have dismounted your raptor, right now its a pain for reasons mentioned above ## Changelog 🆑 add: Added a raptor feather crusher trophy which makes your crusher shots go through your allied mobs. balance: Rebuke effect from lobster claw trophy and the eye of god now applies to basicmob attacks balance: Bileworm spewlet's damage is no longer reduced by 70% when hitting lavaland fauna, and it no longer can hit allied mobs balance: Sphere MODule bombs no longer hit NODE drones and minebots balance: Ice demon/ice demon cube afterimages can now be walked through by players fix: Sphere MODule bombs now aggro basicmobs hit by their explosions /🆑 |
||
|
|
e3dee6810e | Most hostile mobs can no longer be trapped by closets, chairs, and aggro grabs (#91652) | ||
|
|
57624ca1e2 |
Rebalances wound determination values, wounding escalation and wound armor to hopefully be less explosive (#91099)
## About The Pull Request This is a big one so please bear with me, wounds are complicated ### Max Potential Wound Rolls We've decreased the max contributed damage to wound rolls from 35 to 25. This results, after the exponent, a max possible wound roll of 1 to 91 before any modifiers (assuming the attack, after armor, is 25 or above). The minimum value to wound is still 5. ### Wound Escalation Penalties Most wounds were contributing significant numbers per wound type to the potential for a new wound to occur. Getting wounded once meant you were getting wound a lot, but actually getting past that first wounding may be the tricky part. We have significantly reigned in the wound penalty that having a wound contributes, and instead utilize the series wound penalty to allow same type wounds to escalate themselves faster as a priority. Having wounds still makes you more wound vulnerable, just not to such an extreme degree. The priority here for what wounds matter most for contributing to overall wounding vulnerability is ``Infected BURNS > BURNS > SLASH|PIERCE > BLUNT.`` ### Wound Armor Wound armor, unlike all other kinds of armor, was used as a additive value to the wound roll modifiers rather than a multiplicative value. We have reworked how wound armor is determined by changing how wound modifiers are calculated. Firstly, we're passing our entire injury roll into the ``check_woundings_mod()`` proc, as we're not treating this as a proc that just adds values anymore. Secondly, bare wound bonus only applies if there is no potential wound protection from any source, as expected. But it comes last in the calculations. Thirdly, wound protection is applied to the injury roll last, after wound bonuses from the attack, wound bonuses from other wounds and wound bonuses from a disabled limb are applied. This does not include serial wound bonuses, which are determined outside of this proc. Wound protection comes from two sources. Clothing and limb wound resistance. Your chest and head have an amount of wound resistance so long as they are not mangled in any fashion. Being mangled means having either a hairline fracture or a weeping avulsion wound. Wound protection reduces the final injury roll by a percentage. Say our roll is 50, and we have effectively 50% wound protection. The final roll would be 25. ### ~~Wound Armor on Clothing~~ Reverted ~~Most clothing have had their wound armor values changed. As a loose rule, I used the highest of melee or bomb armor, except where that value was 100, in which case I used the lowest instead. I'm basing this decision on how embeds are calculated, which is attack type agnostic.~~ ~~Some armor have inconsistent values because they are alternative armors to an existing armor type or are hyperspecialized armor. Ablative, bulletproof and security vests all share a value of 35, despite the former two not having decent melee or bomb armor.~~ ~~Some clothing missing wound armor that should have had them now have wound armor.~~ ~~This may need a bit of scrutiny in case one or two seem weirdly high. Some have maybe become too low. Its a bit hard to say.~~ ### The ``bare_wound_bonus`` variable I changed it to ``exposed_wound_bonus`` to better represent when it applies. You can be naked and still not be affected by this bonus if the limb has wound resistance. ## Why It's Good For The Game I'm not promising anything with this PR, but this is an attempt to sanity check the values on wounds so that we're not seeing what the data that determined the removal of beheading presented. An extreme over-representation of tier 3 wounds. ~~And, from that, maybe I can argue for beheadings coming back. That's my goal. I think beheadings happened so much because the numbers were in need of work.~~ Well okay I just wanna make wounds a bit more workable actually more than I want beheadings. Why is it that tier 3 wounds were so over-represented? Because wounds will often force more severe wounds of other types by merit of any wounds existing at all on a limb. Having **_a_** wound makes you more wound prone for any kind of wound, and not just making you more likely to suffer a more severe type of the same wound. The threshold mechanic was intended to simulate making a wound worse, but oddly just made a limb broadly more prone to getting worse from any kind of attack to such a degree that future wound rolls of different types were often going to start at the threshold necessary to be a tier 3 wound. Dismemberment, mind you, requires you to suffer a flesh wound while you have a bone wound of tier 2 or higher (with tier 3 giving a bonus to this). You can do this readily via just a sharp weapon, because having a mangled limb causes the wound to turn into a bone wound. Technically, this is meant to be less likely as the effective damage for this wound is halved. But the wound bonus from having a flesh wound was almost always significant enough to kick your new bone wound up to a tier 3. In other words; its not surprising that you saw so many beheadings, because the system wanted to behead you as fast as it possibly can thanks to all these escalating values. Wound armor was only applied as a flat reduction on the roll. The average for wound armor was 10. After receiving a single wound, you can expect wound rolls to reach upwards of 100, even if the actual damage roll was not particularly high, due to wound stacking bonuses form being wounded. This meant that wounds, if they happened, came thick and fast after the first, regardless of what your protection might be to wounds. It was just a matter of getting past the initial bump. This is why effects that forced wounds were so powerful. They basically made a given limb more prone to taking a wound without having to deal with the protection problem first. Finally, this is just a broad flaw with the system that is not its fault. It is actually a problem that isn't a problem. Most people in the game are not wearing helmets that protect their head. So most people are going to suffer from a higher proclivity of being wounded if people are aiming for the head. There is this...kind of cargo cult belief that aiming for the head means you do more damage, or can stun someone if you're lucky or what have you. It's entirely nonsense, but it has a grain of truth in that people rarely wear, or even have access too, headwear that provides wound protection or any protection at all. People have jumpsuits, which are universally wound protected, but that isn't true of the head. Look, the point is, they're not aiming at the head because it is usually less armored, its for other reasons but it just so happens to become true due to wounds and how wounds roll their type. To soften this issue, I've decided to treat wound resistance as armor until the limb suffers a tier 3 wound. This way, hits to the head MAY not necessarily escalate to tier 3 instantly as they would on live even from relatively low power weapons. Some weapons have very low force, but have extreme bare wound bonuses. This should be less likely after this change. I doubt this will necessarily make high damage high wound weapons like energy swords any less prone to cutting you clean open, but it might thanks to the reduction to contributed damage to the injury roll. The system is now _a bit more random_. ## Changelog 🆑 balance: Wounds do not make you as vulnerable to suffering wounds of all types as before. Instead, wounds make you more vulnerable to suffering worse versions of themselves as a priority. balance: Wound armor is now more impactful when protecting you from wounds when you have already been wounded. balance: Your head and chest are more difficult to wound until they have been mangled; either from suffering from a weeping avulsion or a hairline fracture. code: Changed the variable for bare_wound_bonus to exposed_wound_bonus to better explain what that variable is doing. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
b4061f1800 |
[MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
## About The Pull Request Refactors most of blood handling code untouched by #90593 and completely rewrites all blood decals, components and reagents. - Blood types now have behavioral flags which allow them to control where they leave decals/DNA/viruses. Oil no longer transfers DNA and viruses with it, while podpeople water-blood doesn't leave visible decals on turfs and items, but still can be picked up by DNA scanners. - Multiple blood types have received unique handling - liquid electricity blood now glows in the dark, oil trails are flammable and lube ones are slippery. Oil blood can be restored with fuel, lube with silicon and slime with stable plasma (as normal plasma already passively regenerates their blood), instead of everything using iron. Saline solution only supplements on iron-based blood and won't do anything to help with bloodloss for species who rely on different blood types. (Roundstart this applies only to Ethereals) - All blood logic has been moved away from the blood reagent itself into a blood element that is assigned to the blood reagent by default, and to any reagent that's drawn from a mob as their "blood" (in ``transfer_blood_to``). This means that blood you draw from lizards will be green and have lizard's blood description instead of mentioning red blood cells, Ethereal "blood" will actually contain their DNA and genes, etc. - Refactored all blood decals. Blood states are no more, everything is now handled via blood DNA. Credits to MrMelbert and Maplestation, as a significant amount of code has been taken from https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his followup PRs. Oil and xenomorph splatters are now subtypes of blood, blood drying is now animated, blood trails now curve and can be diagonal. - Rewrote bloodysoles and bloody_spreader components, credits to Melbert again for the former, while latter now makes more sense with its interactions. Bloody soles no longer share blood DNA with your hands. - Ported Melbert's bloody footprint sprites and bot-blood-spreading functionality. - Removed all species-side reagent interactions, instead they're handled by said species' livers. (This previously included exotic blood handling, thus the removal) - Slightly optimized human rendering by removing inbetween overlay holders for clothing when they're not needed. - Blood-transmitted diseases will now get added to many more decals than before. - Cleaned up and partially refactored replica pods, fixed an issue where monkeys/manipulators were unable to harvest mindless pods. - Exotic bloodtype on species now automatically assigns their blood reagent, without the need to assign them separately. - Clown mobs now bleed (with colorful reagent instead of blood during april fools), and so do vatbeasts (lizard blood) - Implemented generic procs for handling bleeding checks, all sorts of scanners now also correctly call your blood for what it is. - Podpeople's guts are now lime-green like their organs, instead of being weirdly greyish like their water-blood. (Their bleeding overlays are still grey, as they're bleeding water) - Slimepeople now can bleed. Their jelly is pale purple in color, but their wound overlays copy their body color. - Injecting/spraying/splashing/etc mob with a reagent preserves its data, so you could theoretically recycle fine wines from someone's bloodstream - Fixed burdened chaplain's sect never actually giving a blessing when applying effects, and giving a blessing when nothing can be healed. Inverted check strikes again. - Closes #91039 #### Examples A lot of blood here has dried, visually the blood colors are almost exactly the same as before either of the blood refactors.   |
||
|
|
cb51a652a9 |
Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
## About The Pull Request Revival of https://github.com/tgstation/tgstation/pull/86482, which is even more doable now that we have rustg iconforge generation. What this PR does: - Sets up every single GAGS icon in the game to have their own preview icon autogenerated during compile. This is configurable to not run during live. The icons are created in `icons/map_icons/..` - This also has the side effect of providing accurate GAGS icons for things like the loadout menu. No more having to create your own previews.  <details><summary>Mappers rejoice!</summary>   </details> <details><summary>Uses iconforge so it does not take up much time during init</summary>  </details> --- ### Copied from https://github.com/tgstation/tgstation/pull/86482 as this still applies: Note for Spriters: After you've assigned the correct values to vars, you must run the game through init on your local machine and commit the changes to the map icon dmi files. Unit tests should catch all cases of forgetting to assign the correct vars, or not running through init. Note for Server Operators: In order to not generate these icons on live I've added a new config entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in the config.txt ## Why It's Good For The Game No more error icons in SDMM and loadout. ## Changelog 🆑 refactor: preview icons for greyscale items are now automatically generated, meaning you can see GAGS as they actually appear ingame while mapping or viewing the loadout menu. /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
5261efb67f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
## About The Pull Request Melee attack chain now has a list passed along with it, `attack_modifiers`, which you can stick force modifiers to change the resulting attack This is basically a soft implementation of damage packets until a more definitive pr, but one that only applies to item attack chain, and not unarmed attacks. This change was done to facilitate a baton refactor - batons no longer hack together their own attack chain, and are now integrated straight into the real attack chain. This refactor itself was done because batons don't send any attack signals, which has been annoying in the past (for swing combat). ## Changelog 🆑 Melbert refactor: Batons have been refactored again. Baton stuns now properly count as an attack, when before it was a nothing. Report any oddities, particularly in regards to harmbatonning vs normal batonning. refactor: The method of adjusting item damage mid-attack has been refactored - some affected items include the Nullblade and knives. Report any strange happenings with damage numbers. refactor: A few objects have been moved to the new interaction chain - records consoles, mawed crucible, alien weeds and space vines, hedges, restaurant portals, and some mobs - to name a few. fix: Spears only deal bonus damage against secure lockers, not all closet types (including crates) /🆑 |
||
|
|
96976c0b9a |
Regal Rat cleanup & minor changes (#91012)
## About The Pull Request Since #90505 added another entry to it the Regal Rat Riot ability, which turns maintenance creatures into versions loyal to the rat, has become sort of unmanageable (and to be honest it was a bit gross to start with). Instead of having a big if/else list (which was making the same range check multiple times...) that sets stats on a bunch of mobs, I delegated it to the mobs themselves and instead of changing some stats of the existing mobs we just turn them into a new mob which can be spawned or placed separately by mappers or admins if they want. Other stuff I changed: Riot (the ability which transforms mobs into minions) no longer spawns a mouse if it fails to find anything. Instead you have a chance to fish mice out of disposals bins while digging out trash and items. Domain is now a toggle which activates itself every 6 seconds rather than a button you manually click every 6 seconds. Riot makes a visual effect when used. Rare Pepe randomisation is done via a random spawner instead of the mob modifying a bunch of its own properties in Initialise. A bunch of mobs now automatically follow you after being tamed. I wrote this assuming I was going to add it to the rioted mobs but then didn't end up doing that because you might want them to immediately attack someone. My rule of thumb is that if I think you'd want the mob to attack someone the moment it is befriended I didn't add this and if you wouldn't I did. I changed some of the regal rat minion names, and some of them can now spawn from gold slime which couldn't before. ## Why It's Good For The Game This proc sucked and now it's nicer. As for the other changes; - A tamed mob immediately following you is nice feedback and saves you a click as it's likely to be your first action. Also removes some admin panel shitcode I added. - I changed Domain to a toggle because you generally want to use it on cooldown and someone suggested it on this PR and it sounded like a good idea. - I saw someone in Discord complaining that the previous flow of recruiting rats by hitting Riot with nothing around to summon one, waiting, hitting it again to convert one rat, and waiting again was tedious and annoying which I agree with. This method improves the quality of life by separating these two actions but _also_ as a side effect reduces a regal rat's ability to secretly stockpile 50 rats in a hidden maintenance room because most disposal bins are in slightly more visible areas, they'll actually need to go and make a mess somewhere someone can see them. ## Changelog 🆑 balance: Regal Rats can now grab mice out of disposal bins, and no longer spawn them with the Riot ability. balance: The Riot ability no longer needs to be used once for each slightly different kind of mob in your radius. balance: The Regal Rat Domain ability is now toggled on and off. balance: Several kinds of mob will immediately start following you once tamed. balance: Rats, hostile frogs, and evil snails can be created via gold slime reaction. /🆑 |
||
|
|
d19b8de989 |
Most fleshy mobs are vulnerable to stamina and stuns (#90675)
## About The Pull Request This PR enables most mobs to take stamina damage, become slowed as a result of taking stamina damage. It also gives most mobs CANSTUN which not only allows them to enter stamcrit from taking stamina damage but also makes them vulnerable to mechanics like stun batons. Mobs which already took stamina damage (Spiders and Space Dragons) still work the same way. Mechanical or artificial mobs, mining mobs, simple xenomorphs, ghosts, and most kinds of mob closely associated with antagonists still don't take stamina damage. ## Why It's Good For The Game A new player armed with a disabler will probably try and use it on aggressive animals and be disappointed, but I don't think there is any _reason_ for them to be disappointed when it's already something they are doing merely to delay being attacked rather than to kill the target. It's not intuitive for these mechanics not to function against simple mobs when they do against humans, _especially_ the kinds of mobs which look like humans, and there isn't any technical reason why it _couldn't_ work against most mobs which it looks like they should work against. While this reduces the threat level of some mobs against Security players I think the greater interaction with the sandbox is beneficial. I'm hopeful it doesn't have that much effect on many of the most common places you encounter dangerous mobs like Space Ruins or Gateways as they are also places where you can't reliably recharge your energy-based stamina weapons as most that don't require energy do require getting into melee and endangering yourself. ## Changelog 🆑 balance: Most biological mobs are now slowed by taking stamina damage, and can be stunned. Mechanical mobs, mining mobs, and several other special kinds (chiefly those invoked by antagonists) are unaffected. If this seems to effect any mob it probably shouldn't, please report it as a bug. /🆑 |
||
|
|
339616ae78 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
## About The Pull Request People can now pet held mothroaches and pugs if they want to, or use items on them, hopefully without causing many issues. After all, it only took about a couple dozen lines of code to make... ...Oh, did the 527 files changed or the 850~ lines added/removed perhaps catch your eye? Made you wonder if I accidentally pushed the wrong branch? or skewed something up big time? Well, nuh uh. I just happen to be fed up with the melee attack chain still using stringized params instead of an array/list. It was frankly revolting to see how I'd have had to otherwise call `list2params` for what I'm trying to accomplish here, and make this PR another tessera to the immense stupidity of our attack chain procs calling `params2list` over and over and over instead of just using that one call instance from `ClickOn` as an argument. It's 2025, honey, wake up! I also tried to replace some of those single letter vars/args but there are just way too many of them. ## Why It's Good For The Game Improving old code. And I want to be able to pet mobroaches while holding them too. ## Changelog 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
5c08ae27ed | Adds "deep water" that you can drown in (#90587) | ||
|
|
809eab4258 |
Replace basic mob attack telegraph with slower reaction times (#90585)
## About The Pull Request This PR removes the `basic_mob_attack_telegraph` component from all mobs which were using it and instead implements an attack delay directly into the basic melee AI behaviour. This delay simulates "moving your mouse into position", human reaction times, and the fact that the previous implentation of simple mobs would only try to melee attack on a predictable timer you could "juke" around. The way that this delay works is that it starts as soon as the mob enters melee range and resets if you are ever out of the mob's reach, so there will be no delay if you are foolish enough (or unfortunately preventing from doing otherwise) to continue standing next to a mob but there is enough of a one to duck in and out of melee range with a goliath while using a crusher without getting hit, although trying to run past one usually won't work. This delay defaults to 0.3 seconds which in my testing experience was roughly enough to dip in and out of range without getting hit but not enough to run all the way past a mob without getting hit. It can be overriden via the blackboard, although currently no mob does this. I _was_ testing this locally with no latency though so I guess we'll listen out to see if miners start yelling. ## Why It's Good For The Game The visible attack broadcast is very cool but its visibility made melee combat with any mob that had it significantly easier to such a degree that any mob with it on could not really be expected to do melee damage to any character that wasn't suffering some kind of immobilisation effect which was never really the intention. Removing it also removes any additional handicap that was applied to sapient versions of these mobs, which was never really necessary or intended in the first place. I did not remove the component entirely from the game for two reasons: - Out of the hope that there is some use for it somewhere, because I think it's cool, but more importantly: - Because it's still being used by simple mob megafauna as a workaround for a bug we couldn't figure out. ## Changelog 🆑 balance: Most mobs will now hesitate for a moment before attacking rather than instantly hitting anything that enters melee range, to better simulate human behaviour. Please report if this delay seems too short, or too long. balance: Most mobs which telegraphed their basic attacks on you now will not do that /🆑 |
||
|
|
7c81098d33 |
Cain & Abel (new mining loot) (#89455)
## About The Pull Request adds the Cain & Abel to the lootpool of the colossus!  these are a set of angelic twinblades bound together by some chains. The long chains allow u to attack mobs from a distance (2 tiles max) and at very FAST speed, and come with a few new mechanics: -Attacking a mob with the cain and abel grants you a special whisp that follows your character. these whisps empower ur next melee attacks u can collect a maximum of up to 6 whisps, (their bonuses stack), after which they reset. If u get hit by a mob once, you'll lose ur whisps (and ur melee bonus), so ull have to regain them by rebuilding up ur combo. u can also choose to sacrifice ur whisps by firing them at mobs (by right clicking them) for some hefty damage (this again means u'll lose them) https://github.com/user-attachments/assets/0a1738db-9fa4-4226-ac80-334f5e97cfa5 -u can also choose to hurl one of ur daggers at enemies, there's 2 throw modes u can toggle between by pressing Z while holding ur weapon. 1- On launch mode, u can throw one of ur daggers at a tile, afterwhich the chains will rapidly pull u towards it, making for some cool getaways in tense situations. this puts throw mode on a 7 second cooldown 2- On crystal mode, u can hurl a dagger at an enemy or at a tile. Spiked crystals will errupt on nearby floors, dealing some damage to nearby mobs and stunning them for 2 seconds (bosses dont get stunned tho). puts throw mode on a 15 second cooldown https://github.com/user-attachments/assets/665b9cf4-c5a1-4263-a36b-86e3f35d0ae5 -Lastly is the swing ability. This will swing ur daggers around u, dealing AOE damage to nearby mobs, and makes u block all melee attacks, tentacle attacks, and deflect incoming projectile attacks (could for example be used to deflect the colossus' shotgun blast back to it). ull only block attacks while the animation is active, which lasts a good 1.75 seconds, and is at a 20 second cooldown. https://github.com/user-attachments/assets/073e5324-af5b-45ab-912e-5bcaa13fc728 Here's a short clip of me using them to fight a colossus and a bubblegum https://www.youtube.com/watch?v=kp5Hu16dHPQ&ab_channel=Kobsa ## Why It's Good For The Game adds a new fun weapon with a few deep mechanics to the game. also makes taking down colossi alot more rewarding. ## Changelog 🆑 add: adds the cain and abel to the colossus lootpool! /🆑 |
||
|
|
d3d3a12540 |
The big fix for pixel_x and pixel_y use cases. (#90124)
## About The Pull Request 516 requires float layered overlays to be using pixel_w and pixel_z instead of pixel_x and pixel_y respectively, unless we want visual/layering errors. This makes sense, as w,z are for visual effects only. Sadly seems we were not entirely consistent in this, and many things seem to have been using x,y incorrectly. This hopefully fixes that, and thus also fixes layering issues. Complete 1:1 compatibility not guaranteed. I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming inside apply_overlays), and this is still included in the PR to flash out possible issues in a TM (Plus I will need someone to grep the runtimes for me after the TM period to make sure nothing was missed). After this is done I'll remove all these extra checks. Lints will probably be failing for a bit, got to wait for [this update](https://github.com/SpaceManiac/SpacemanDMM/commit/4b77cd487d0a7b6a069df20356b701af5b20489d) to them to make it into release. Or just unlint the lines, though that's probably gonna produce code debt ## Why It's Good For The Game Fixes this massive 516 mess, hopefully. closes #90281 ## Changelog 🆑 refactor: Changed many of our use cases for pixel_x and pixel_y correctly into pixel_w and pixel_z, fixing layering issues in the process. /🆑 --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: SmArtKar <master.of.bagets@gmail.com> |
||
|
|
cf131db497 |
Cleans up mood and mood-related code (#90162)
## About The Pull Request One of my upcoming PRs affects a significant chunk of the codebase so I'm cleaning up messes that I've found along the way. This PR adds wrappers for adjusting sanity/checking if a mob already has a certain moodlet, fixes an oversight where attempting to set sanity over passed maximum would abort the change outright (instead of actually capping it out), moved jolly and depression processing into quirks themselves (instead of having dedicated traits for them used solely by said quirks and nothing else that are constantly checked for by mood datums), and rewrote how blessings return their results to move omen's deletion on blessing effect from constantly checking mood for a blessing moodlet to a comsig. ## Why It's Good For The Game Less jank handling of certain mechanics, we ***really*** shouldn't be checking for blessings every time mood of all things is updated. ## Changelog 🆑 fix: Adjusting sanity over the allowed maximum will no longer completely halt the change, and instead actually cap it at the maximum value. code: Cleaned up mood and mood-adjacent code. /🆑 |
||
|
|
1406210b6e |
Improves the "Check mood" printout, reworks the "Check self" printout, minor embed changes (#89854)
## About The Pull Request 1. Reformats "Check Mood" Basically just cleaning it up. - Moodlets are bullet pointed. - Hunter is displayed here now. - Quirks are displayed here now. - It now tells you how drunk you feel. Sample  2. Reworks "Check self" Big reworks done here. - Organs now don't outright say "Your hear is hurty" "Your lugs are hurty". Now they'll say something like, "Your chest feels tight" - Unless you're self aware, then it will say "Your heart is hurty". - Check self no longer reports wounds with 100% accuracy. You get an approximate of what the wound is like - "Your chest has an open cut". More severe wounds will still be bolded, though. Sample   3. Embed tweaks Embeds can be hidden, and thus will only show up on health analyzers. This means you can't rip them out by hand. Right now only bullet shrapnel and explosion shrapnel is hidden. ## Why It's Good For The Game 1. Just some cleanup, largely. Stuff like quirks and hunger make more sense when checking your mental rather than checking your body. Though this might be weird for if mood is config-disabled, I might have to revisit htat. 2. I always found that clicking on yourself and just getting a print out of "Your liver's non-functional, your chest has a weeping avulsion, etc" is pretty lame... it kind of diminishes diagnosis / doctor's job. Ultimately, the goal of this is to open up a little more doctor gameplay - primarily I think it'll allow for some fully roleplay moments, like "Doc my chest hurts a lil" "You have 7 bullets and broken ribs bro" 3. Adds more punch to some embeds. Mostly for larp though. ## Changelog 🆑 Melbert add: Your mood printout (clicking on the mood face) has been reformatted, and should generally be cleaner. add: Self examining was reworked, and overall gives you a lot less perfect information, unless you are self-aware. add: Bullet and grenade shrapnel is now hidden from examining - it's skin deep. You can't rip them out with your hands, but hemostats / wirecutters still suffice if you know they're there. Health analyzers still pick them up too. qol: Ghosts aren't notified about NPCs getting appendicitis /🆑 |
||
|
|
fcf80d20e9 |
few raptor taming minigame difficulty tweaks (#89925)
## About The Pull Request ive heard from a few players that the game is a bit too difficult, especially when there's lag. this makes the minigame generally much easier, and takes ping into account. ive also made the difficulty depend on a few factors: - the raptor's personality affects the difficulty, where raptors with the cowardly trait will be slightly harder to tame - Settlers will have a much easier time taming raptors (ive also moved the minigame into its own file) ## Why It's Good For The Game the game was a bit too unforgiving, this makes it easier for people to win. And the dynamic difficulty gives the feature some personality. ## Changelog 🆑 add: tweaks the raptor taming minigame to be fairer add: the taming minigame's difficulty now relies on the raptor's personality as well as the rider's quirks /🆑 |
||
|
|
79b06c344f |
Fixes goliath harddels (#89731)
## About The Pull Request Closes #88374 ## Changelog No player facing changes |
||
|
|
4972c88044 | Partially reverts #87936; the mech PKA AOE only harms mining mobs, reduces the damage and increases the attack cooldown (#89619) | ||
|
|
e6483bb529 |
Fixes befriend related hard del (#89582)
## About The Pull Request Attempts to fix this hard del.  https://github.com/tgstation/tgstation/pull/74791 took care of most of the AI blackboard hard dels by adding tracking but there is nothing to stop something that's already been qdeleted from being added to some of these lists. This PR makes sure nothing like that gets added to the blackboard. ## Why It's Good For The Game Less CI failures |
||
|
|
bb05cfc67b |
Hides two do_afters which should be invisible (#89460)
## About The Pull Request and also Why It's Good For The Game Lately I noticed that watchers display the do_after "working" cog while channeling their "look away" ability, which looks silly because it already has its own indicator. That should be hidden.  Actually now I look at this gif again the offset on the cog is fucked up, probably need to update that for larger-than-usual mobs... While I was at it I also added "hidden" to mob basic attack forecasts. I can't think it's _likely_ that anyone will add a mob with a > 1 second forecast (they are only displayed if the length is at least one second) but it's not totally impossible. ## Changelog 🆑 image: Watchers won't display an animated cog at the same time as using their gaze attack. /🆑 |
||
|
|
ffd97819c1 |
Pixel adjustments to mobs are now sourced / Refactors riding (#89320)
## About The Pull Request Fixes #85980 - Pixel adjustments are now sourced When tweaking a mob's pixel w, x, y, z, is is now done via `add_offsets` and must have a source string associated - Refactors riding Refactors how riding component selects the offsets to use. It's now all done via the getter rather than a weird mix of a var, a cache, and a getter. - Moves a bunch of animations to use `pixel_w` / `pixel_z` Largely to prevent conflicts with adjustments to a mob's pixel position, but also as many animations are not actual movements, but visual movements. Floating is one such example. ## Why It's Good For The Game It just works ## Changelog 🆑 Melbert fix: Fixed grab offsets not showing for anything but passive grab fix: Fix jank with mob offsets when riding things refactor: Refactored riding component, particularly how it selects layer and offsets. Report any oddities refactor: Refactored pixel offsets of mobs. Report any oddities /🆑 |
||
|
|
f1d3994c95 |
Apply AI Controller Admin Verb (#89375)
## About The Pull Request Melbert asked me to make this and I thought it'd be relatively easy and plausibly useful so I did. This PR adds a feature to the VV menu for mobs which allows you to apply and configure an AI controller from a list of templates. It's not as versatile as coding one would be, but it should be able to accomodate a lot of generic scenarios. Some examples of basic stuff you can set it up to do: - Give Ian a machine gun he will fire at nearby people while staying within a specified min/max range. - Have Poly fire brimstone beams on cooldown at whoever is nearby (although she won't bother trying to line up cardinally). - Assign a gorilla to be someone's personal bodyguard which will follow them around and attack anyone who hurts them. I have also made an executive decision to remove the restriction that basic ai controllers can only be placed on basic mobs. We've removed _most_ non-basic simple mobs from the game, and also have more recently updated most AI behaviours to work agnostically of whether they are assigned to a basic mob or not... which means that they'll largely work on carbons. Coincidentally, this feature makes sure to ask if you want an AI controller to remain active on a mob which already has a client. Assigning an active AI controller to a live player which forces their character to automatically attempt to run away from whoever the last person to attack them was is ~~not recommended behaviour because it's largely untested~~ highly recommended behaviour because I think it's very funny (makes it very hard to play though). I'm gonna do another PR some time which cleans up `random_speech` so it's configurable and then let you slap that on whoever as well. ## Why It's Good For The Game Enables a greater level of admin abuse. ## Changelog 🆑 admin: Added easier tooling for admins to add or change the AI controllers on mobs /🆑 |
||
|
|
a13470f260 |
Fixes persisting brimbeams (#89318)
## About The Pull Request If a brimdemon gets destroyed instantly, their beams would persist because of a runtime here as owner in actions can be null. Fixes https://github.com/tgstation/tgstation/issues/81994 ## Changelog 🆑 fix: Fixed an issue with persisting brimbeams /🆑 |
||
|
|
851c5a5df9 |
Convert all traits given by status effects to use TRAIT_STATUS_EFFECT(id) (#89291)
## About The Pull Request This makes (almost?) all traits given by status effects use `TRAIT_STATUS_EFFECT(id)` as their source, rather than the previous mix of `id`, `type`, `REF(src)`, or some bespoke thing. ## Why It's Good For The Game Consistency is good. ## Changelog No user-facing changes |
||
|
|
4c2a76ede3 |
Fix a large number of typos (#89254)
Fixes a very large number of typos. A few of these fixes also extend to variable names, but only the really egregious ones like "concious". |
||
|
|
940e2d31cf |
tgstation is back online and you are a horrible goose (#89204)
## About The Pull Request Converts geese to basic mobs. Nobody else did this one because two separate other developers have said they started and then examining what the goose does made them feel mildly ill, but I am stronger. I will admit though I wasn't 100% committed to making it work exactly the same way, I rewrote the entire system to use interfaces I like more (read: I put all this shit in a status effect which means any mob can be given the ability to vomit out everything in its contents) and if that means the behaviour is only "inspired by" that didn't bother me that much. **Geese:** - Wander randomly around. - Peck people who attack them. - Occasionally start pecking other nearby animals for absolutely no reason. - Eat any food they randomly wander within one tile of, but don't seek it out further than that. - Eat anything made of plastic that they randomly wander within one tile of. - Choke to death over 30 seconds if they eat anything made of plastic. - Vomit out whatever it was that they choked on when they die. - Honk (this is new). The more famous subtype of goose is Birdboat. Birdboat is a unique goose present on several maps with some additional behaviour. **Birdboat:** - Is chill and doesn't start pecking people for no reason. - Is occasionally possessed by ghosts. - Builds up an internal vomit-meter as he eats things. Moving around and just sort of generally hanging will start rolling dice to find out when Birdboat's tummy gets upset. - May start vomiting instead of choking to death on plastic, thereby saving his own life. - Vomits out everything that he just ate while running around, making a mess of the floor. - Starts eating everything he just vomited out again. Unlike regular geese who just eat your food and it's gone, Birdboat's miraculous digestion preserves all of the food he eats so if he consumes the entire kitchen counter it will eventually come back out again the way it went in. Although you might not want to eat it any more. The precise way in which this manifests may be slightly different, but largely this is also what these animals did before. Other stuff: I noticed a bunch of find/set behaviours were not setting a search range? I think that means they were never finding anything? I did not actually test any of them to see if they were broken, but it's possible that a bunch of broken AI behaviours like "climbing trees" may now actually start triggering because they have a search radius greater than an orange of 0. I added "keep this in contents instead of deleting it" as a parameter for generic eating and slapped it on the goldgrub, as it is used in two places and may end up being used in more. ## Why It's Good For The Game This kills off the last user of the `retaliate` subtype and makes our list so so much closer to finish. It's like... a couple of bots, a handful of oddballs (I'll probably handle these soon), and then just the mining bosses and minibosses to go. If you give a human the vomit goose ability (now that I made it work on any mob) they will eject all their organs and body parts via the mouth until they die, if you don't do the brain or heart first you can vomit your own head off. ## Changelog 🆑 refactor: Geese have been moved to the basic mob subsystem, please report any unusual behaviour. /🆑 --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> |
||
|
|
01620b9c46 |
fixes goliaths being untamable (#88779)
<!-- 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 <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> you can now tame goliaths again! ## 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. --> closes #88761 ## 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 its 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. --> 🆑 fix: goliaths can now be tamed /🆑 <!-- 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. --> |
||
|
|
13b729c71e |
fixes corgi pop skyrocketing (#88896)
## About The Pull Request this prevents corgi pop, as well as some other animals like cats, from skyrocketing. there were some measures against this in the ai behavior code, but they werent working properly. ## Why It's Good For The Game fixes corgi pop skyrocketing, for the sake of performance ## Changelog 🆑 fix: corgi's population will no longer exponentially grow /🆑 |
||
|
|
f205e48ef5 |
[no gbp] fixes being able to tell animals to commit atrocious acts (#88754)
## About The Pull Request closes #88743 . the issue is while they'd ignore ur command since its impossible, the emote would still appear, which i now realize was a mistake ## Why It's Good For The Game fixes being able to tell animals to commit atrocious acts ## Changelog 🆑 fix: radial pet commanding emotes will now not appear if the command is impossible to execute /🆑 |
||
|
|
91719a400a |
516 Compile Compatibility (#88611)
Renames all uses of caller, as they (currently) shadow the new byond var and will in future error Ups our "wan if compiled after" experiement compile version to 516 Adds an alternate 516 unit test |
||
|
|
e8877f792c |
Buffs the proto-kinetic crusher and cleans up the code a little bit (#88171)
## About The Pull Request Buffs the crusher: - Mining with the crusher gives mining XP - If you mine with the crusher, your mining level will reduce the charge time (more skilled miners can mine faster) - Shooting the kinetic blast (crusher right click) no longer puts your click on cooldown For the mark, it now has a delay of 0.8 seconds. So even though the click delay from shooting the mark is gone, you'll still have to wait for it to be ready to detonate it. Adds code support for the crusher projectile to have effects on hitting a mob/mineral - Buffs the bileworm trophy to give it AOE mining radius Reorganizes all the crusher code + trophies to be in its own folder + documents it somewhat ## Why It's Good For The Game Crusher code is a bit outdated so I wanted to clean it up a bit while I gave it the buffs I wanted. I feel like it can afford to be better as a mining tool so I gave it access to mining XP. I also gave it AOE mining from the bileworm trophy so it can keep up with the other mining tools (pka/pc) ## Changelog 🆑 add: Bileworm crusher trophy now gives you AOE mining balance: The pk crusher no longer has click delay after shooting the projectile balance: The pk crusher gives mining XP when it mines rocks balance: the pk crusher charges faster when you mine rocks based on your skill as a miner code: cleaned up some of the kinetic crusher code /🆑 |
||
|
|
efe62c5a72 |
Pet Commands QOL . makes pet commands easier to use (#88495)
## About The Pull Request this PR improves the UX of pet commands a bit. i decided to expand on their radial menu. You can now hold shift and hover over your pet to display a menu of commands which you can choose from. alternatively, you can still type out commands in chat https://github.com/user-attachments/assets/9da7f7ea-58a3-4fd6-b040-45cc05cda51d ## Why It's Good For The Game makes pet commands easier to give out when you're managing more than 1 pet. also fixes the fishing command not working. ## Changelog 🆑 qol: holding shift and hovering over your pet will display a list of commands you can click from fix: fixes the fishing pet command not working /🆑 |
||
|
|
4b77c6f7c0 |
Decouples "Is this affected by a mop" from layer var (#88465)
## About The Pull Request Rather than checking for object layer if we can clean something, has a trait which accomplishes this This better allows us to pick and choose what objects we want to clean when mopping Note: I didn't apply the trait to everything it previously affected Currently, it cleans stuff like pipes and plumbing, which I deemed not necessary to carry over since they can't get dirty anyways I can re-add this if desired though Fixes #88445 Fixes #88150 ## Changelog 🆑 Melbert fix: Gibs get bulk cleaned if you clean the turf again refactor: Changed how things determine "I can be bulk cleaned if I clean the turf underneath me", let me know if you notice anything not getting bulk cleaned or weird things getting bulk cleaned /🆑 |
||
|
|
028244ef03 |
u can now hand-feed animals. like cats and raptors (#88173)
## About The Pull Request this PR does 2 things, firstly it allows u to directly feed animals from ur hand instead of having to drop it on the floor and relying on their AI to go eat it. So you can now directly feed ore to raptors or wheat to cows by simply clicking on them with the item. secondly, it links the tameable component and the eating element together, as now the former relies on signals sent by the latter. ## Why It's Good For The Game Small QOL for pet owners when it comes to feeding their animals. ## Changelog 🆑 qol: u can now directly feed animals from ur hands, like raptors or cats, by clicking on them with their preferred food. balance: u can now heal ur raptors mid or post battles by hand feeding them ores /🆑 |
||
|
|
3c40876f15 |
Fix itchy skillchip status effect "Curse of Mundanity", adds unit test for effects set to "Curse of Mundanity" (and missing IDs) (#88240)
## About The Pull Request Fixes a lot of status effects having the default alert, adds a unit test to check that status effects don't forget to change it I chose a test rather than just making the default "no alert" because I think people making status effects should think about whether it should have an alert Also I added a test for effects which did not set an ID because that's kind of important, I applied the same mindset here to account for abstract types but admittedly less sold on this one. ## Changelog 🆑 Melbert fix: You should be afflicted by the "Curse of Mundanity" far, far less /🆑 |
||
|
|
fe7c8e1fde |
Adds some Fish Content (#88213)
## About The Pull Request Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire sharks. Aquatic mobs can be hooked by fishing rods, even without a jawed fishing hook installed. The carp and fish infusion sets now give the infusee the aquatic biotype. Added support for infusions adding a biotype. You can check for a fish's pulse with a stethoscope, which will tell you its status even without fishing skill. Refined fish health status checks to be more precise. Added 'Fishy' Reagent, a version of strange reagent that only works for fish or aquatic biotype mobs. It's made with omnizine, saltwater, and carpotoxin or tetrodotoxin. Added a lifish chemical reaction that creates fish. ## Why It's Good For The Game Fish content fish content fish content > Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire sharks. We were really missing this one by now. > Aquatic mobs can be hooked by fishing rods, even without a jawed fishing hook installed. > The carp and fish infusion sets now give the infusee the aquatic biotype. Added support for infusions adding a biotype. I want to reel in fish people. This is going to be hilarious. > You can check for a fish's pulse with a stethoscope, which will tell you its status even without fishing skill. Fish doctor content - also lets you see the exact status of a fish's health even if you haven't interacted w/ fishing that shift. > Added 'Fishy' Reagent, a version of strange reagent that only works for fish or aquatic biotype mobs. It's made with omnizine, saltwater, and carpotoxin or tetrodotoxin. A somewhat easier to get version of strange reagent, purely for fish, as they die very easily and the road to making SR is a large diversion. I might add this to cargo, maybe? > Added a lifish chemical reaction that creates fish. Fish. fish fish fish fish fish. @Ghommie ## Changelog 🆑 add: Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire sharks. add: Aquatic mobs can be hooked by fishing rods, even without a jawed fishing hook installed. add: The carp and fish infusion sets now give the infusee the aquatic biotype. Added support for infusions adding a biotype. add: You can check for a fish's pulse with a stethoscope, which will tell you its status even without fishing skill. qol: Refined fish health status checks to be more precise. add: Added 'Fishy' Reagent, a version of strange reagent that only works for fish or aquatic biotype mobs. It's made with omnizine, saltwater, and carpotoxin or tetrodotoxin. add: Added a lifish chemical reaction that creates fish. /🆑 --------- Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
20b9208300 |
fixes raptors breaking their troughs, removes troublesome raptors and you can now rename ur raptors (#88153)
## About The Pull Request after my PR removing most self-registering attack signals, raptors would sometimes break their troughs after interacting with it, this fixes that. Also, removes the troublesome trait from raptors. raptors with this trait would go out and harm other raptors everyonce in a while, but ive discovered that this can be annoying to deal with when you have many of them, so ive removed it and im going to replace it with something less annoying in the future. Also you can now give your raptors pet collars, effectively allowing u to rename them ## Why It's Good For The Game fixes raptors breaking their trough and provides some QOL to raptor ranching ## Changelog 🆑 fix: raptors no longer break their trough upon interacting with it balance: removed the troublesome trait from raptors, they now wont go out to attack their colleagues. add: you can now give pet collars to ur raptors to rename them /🆑 |
||
|
|
bbb7a41743 |
Guncode Agony 4: The Great Projectile Purge (#87740)
## About The Pull Request ~~Kept you waitin huh!~~ The projectile refactor is finally here, 4 years later. This PR (almost) completely rewrites projectile logic to be more maintainable and performant. ### Key changes: * Instead of moving by a fixed amount of pixels, potentially skipping tile corners and being performance-heavy, projectiles now use raymarching in order to teleport through tiles and only visually animate themselves. This allows us to do custom per-projectile animations and makes the code much more reliable, sane and maintainable. You (did not) serve us well, pixel_move. * Speed variable now measures how many tiles (if SSprojectiles has default values) a projectile passes in a tick instead of being a magical Kevinz Unit™️ coefficient. pixel_speed_multiplier has been retired because it never had a right to exist in the first place. __This means that downstreams will need to set all of their custom projectiles' speed values to ``pixel_speed_multiplier / speed``__ in order to prevent projectiles from inverting their speed. * Hitscans no longer operate with spartial vectors and instead only store key points in which the projectile impacted something or changed its angle. This should similarly make the code much easier to work with, as well as fixing some visual jank due to incorrect calculations. * Projectiles only delete themselves the ***next*** tick after impacting something or reaching their maximum range. Doing so allows them to finish their impact animation and hide themselves between ticks via animation chains. This means that projectiles no longer disappear ~a tile before hitting their target, and that we can finally make impact markers be consistent with where the projectile actually landed instead of being entirely random. <details> <summary>Here is an example of how this affects our slowest-moving projectile: Magic Missiles.</summary> Before: https://github.com/user-attachments/assets/06b3a980-4701-4aeb-aa3e-e21cd056020e After: https://github.com/user-attachments/assets/abe8ed5c-4b81-4120-8d2f-cf16ff5be915 </details> <details> <summary>And here is a much faster, and currently jankier, disabler SMG.</summary> Before: https://github.com/user-attachments/assets/2d84aef1-0c83-44ef-a698-8ec716587348 After: https://github.com/user-attachments/assets/2e7c1336-f611-404f-b3ff-87433398d238 </details> ### But how will this affect the ~~trout population~~ gameplay? Beyond improved visuals, smoother movement and a few minor bugfixes, this should not have a major gameplay impact. If something changed its behavior in an unexpected way or started looking odd, please make an issue report. Projectile impacts should now be consistent with their visual position, so hitting and dodging shots should be slightly easier and more intuitive. This PR should be testmerged extensively due to the amount of changes it brings and considerable difficulty in reviewing them. Please contact me to ensure its good to merge. Closes #71822 Closes #78547 Closes #78871 Closes #83901 Closes #87802 Closes #88073 ## Why It's Good For The Game Our core projectile code is an ungodly abomination that nobody except me, Kapu and Potato dared to poke in the past months (potentially longer). It is laggy, overcomplicated and absolutely unmaintaineable - while a lot of decisions made sense 4 years ago when we were attempting to introduce pixel movement, nowadays they are only acting as major roadblocks for any contributor who is attempting to make projectile behavior that differs from normal in any way. Huge thanks to Kapu and Potato (Lemon) on the discord for providing insights, ideas and advice throughout the past months regarding potential improvements to projectile code, almost all of which made it in. ## Changelog 🆑 qol: Projectiles now visually impact their targets instead of disappearing about a tile short of it. fix: Fixed multiple minor issues with projectile behavior refactor: Completely rewrote almost all of our projectile code - if anything broke or started looking/behaving oddly, make an issue report! /🆑 |