mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-11 08:06:33 +01:00
docker-container
20 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c7e4e90004 |
Adds a new antag, the Blood Worm (#93787)
## LTS Document Check this document before making any significant future changes to blood worms, please. https://hackmd.io/@RikuTheKiller/H1AHQSKNZx ## About The Pull Request THIS PR SHOULD ABSOLUTELY BE TM'D FIRST Blood worms are a new progression antag. When the event runs, 2 candidates are picked from ghosts and spawned in as blood worm hatchlings, which then have to grow up, do a couple objectives and take over the station. Hatchlings are weak outside of a host, while juveniles can stand their own reasonably well. Adults have high offensive power and can only be dealt with using the right gear or a lot of luck and robustness. They're meant to be a moment of glory for achieving maximum progression and they can bootstrap the next hatchlings by gathering corpses before cocooning. Each growth stage requires 30 seconds in a cocoon, which can only be created after consuming a lot of blood. There's a falloff curve on a per-blood-type basis, meaning you can't drain the same person over and over again to reach adulthood. The medbay freezer is a priority target for the blood worms and can get one of them to the juvenile stage if fully ransacked. It takes 500 blood to mature from hatchling to juvenile, and 1500 blood to mature from juvenile to adult. You can only get up to 1000 blood from synthetic sources like monkeys, and consuming synthetic blood is 30% less efficient. Blood worms can also examine living targets to see how much blood a target has, and how much growth the blood worm would gain for consuming that blood. Blood worms spawn in vents and have night vision for maneuvering in maintenance. Hatchlings can ventcrawl, while juveniles can move around by breaking things. Optionally, you can take over a host with a lot of access like the Captain to go basically anywhere, especially if nobody knows you killed the captain. Behind the scenes, host-taking kicks the host's original mind to a backseat mob. This needs the most testing in practice, but it's confirmed that it returns the host's mind back to their body, at least in testing. All mob, ability and action sprites are made by INFRARED_BARON. Legal rights were transferred to me after I paid for the commission. Note, I've been working on this massive PR for quite a while, so documenting every small change is really hard! Apologies for anything I've missed. There's a lot. Final note, admins can spawn these by either: A. Trigger the midround event via the dynamic-panel verb, under the Rulesets tab. B. Giving someone the Blood Worm antag datum via the Traitor Panel in the Player Panel for the target player. This will transform their mob into a valid Blood Worm, with all of the associated objectives and such. ### Active Abilities 1. Leech Blood (No Host) - Lets the blood worm drain blood from living targets and reagent containers. Uses an aggressive grab to restrain living targets until leeching is over, which takes around a second to initiate. Causes oxyloss during the leeching. NPC monkeys can't escape from this and it floors targets as well. 2. Spit Blood (Both) - Multi-function ability, lets the blood worm fire ranged corrosive blood spit at targets, melt restraints on their hosts by right-clicking, and as an adult, shoot a burst of blood spit at a target by right-clicking. Note of the right-click abilities, shooting bursts can't be done while in a host. (to avoid unfair stealth kills) Shooting a burst has a much longer cooldown than shooting normally. All spit types cost blood to use. 3. Invade Corpse (No Host) - Lets the blood worm take a host for themselves, consuming all of the host's blood and in essence, "becoming" the host. Any bloodloss inflicted on the host is taken as damage to the blood worm, and the blood worm retains its weakness to fire even in this state. Burn damage itself no longer has any extra damage, though. 4. Leave Host (Host) - Title, literally just leaves the host after a delay. Notably works even while the host is moving, dead, incapacitated or otherwise fucked up in any way, shape or form. 5. Inject Blood (Host) - Lets the blood worm heal its host. The potency of this increases as the worm grows up, but so does the cooldown and blood consumption. This works on organ damage, injuries, etc. 6. Mature (No Host) - Makes the blood worm enter a cocoon for 30 seconds, emerging as the next growth stage. Requires an increasing amount of consumed blood / growth as the blood worm uses it. 7. Reproduce (No Host, Adult Only) - Makes the blood worm enter a cocoon for 30 seconds, with 4 hatchlings emerging out of it, including the original blood worm, now reverted back into a hatchling as well. 8. Revive Host (Host) - If the host is in a viable state to be revived, revives them after an animation sequence plays out. ### Passive Abilities 1. Space Immunity - Blood worms are immune to the cold, low pressures and a lack of oxygen. Only the immunity to a lack of oxygen carries on to hosts from this. 2. Organ Insertion - Blood worms can insert organs into their hosts by right-clicking on them with the organ in-hand. This mainly exists to deal with hosts that lack organs, and avoids the gotcha where an adult blood worm ends up gutting their host by hitting them too hard, as they can simply fix it on the spot. 3. Life Support - Blood worm hosts don't need a heart, lungs or a liver to survive. Lungs are useful for speaking, and a liver is necessary to process reagents. 4. Regeneration - Blood worms slowly heal over time. This is nowhere near enough to overcome bleeding or heat damage, since it's 0.3 hp/s for a hatchling, 0.4 hp/s for a juvenile and 0.5 hp/s for an adult. 5. Night Vision - Blood worms can see in the dark. This doesn't extend to hosts. 6. Ventcrawling - Hatchling blood worms can ventcrawl. 7. Doorcrawling - Hatchling and juvenile blood worms can slide under doors. Doing so takes 3 seconds for a hatchling and 5 seconds for a juvenile. 8. HUD - Blood worms can tell how much blood targets have at a glance, via a blood HUD bar exclusive to them. They can also tell apart other blood worm hosts from normal people via an antag HUD. There's also an examine message they can use on living targets for even more info. ### Weaknesses 1. Heat and Fire - Blood worms quickly die to heat, their bodies are flammable and their blood will burn up if their host's core temperature is too high. The main counter to this is getting a host with flame-resistant gear. 2. Bleeding - While in a host, bleeding wounds will directly damage the blood worm itself. How much a host needs to bleed before the worm dies depends on their growth stage. Blood worm hosts keep bleeding even while dead, so just keep hitting them and they'll die. Blood worms automatically leave their hosts when they hit 10% health or lower, and their hosts bleed 50% faster than normal people. 3. Stuns - Blood worms have no way of dealing with a stunned host other than getting out. They can deal with any restraints by melting them, though. 4. Testing - Security can order a blood worm testing crate from cargo, either for a 20 minute cooldown via the security cargo interface console, or for 10000 credits via the supply console. It contains 4 single-use testers that hurt a bit when applied, but are instant to use and 100% accurate. The stopgap is that they're really fucking expensive and only work once per item. ### Screenshot <img width="280" height="132" alt="image" src="https://github.com/user-attachments/assets/00d22361-997e-4347-a0bf-aa240de40727" /> ## Why It's Good For The Game Antagonist variety, mainly. This is basically Cortical Borers 2: Electric Boogaloo. Currently, we lack any antagonists with mind control abilities. That really sucks! I've also gotten a lot of positive feedback about the antagonist while working on it. This antagonist also has great potential for roleplay, as they can take over hosts, surprise attack people by getting out of a dead corpse, talk to each other using Wormspeak, etc. I think we're also itching for variety on "pest" antagonists. Right now we just have spiders and xenos. Everybody knows these two, so why not mix it up a bit? And as for balance? Blood worms are relatively easy to dispatch when you know their weaknesses, which are extremely clear. Bleeding for hosts, fire for either one, lasers for the worms themselves. As long as you get the host in crit and keep hitting, you've pretty much won, and they can't keep spamming Inject Blood forever since they'll quickly run out of blood to use. ## Changelog 🆑 add: Added a new heavy roundstart/midround antagonist, the Blood Worm. Credit to INFRARED_BARON for the sprites! fix: Removing traits based on a source no longer causes issues with trait signals. fix: High-priority effects no longer double-trigger due to subsystem issues. fix: Weighted averaging in reagent merging code has been band-aid fixed. It's not the best, but it works. /🆑 |
||
|
|
337ab7f2c3 |
Refactors status effects to be based on subsystem ticks, among a few other minor status effect fixes/refactors (#93694)
## About The Pull Request Refactors status effects to track their durations and tick intervals using counters. In effect, [var/duration] now directly refers to how many deciseconds are left on the status effect. I've also moved the old [var/tick_interval] [world.time] implementation to a tick-based [var/time_until_next_tick] counter. There are a couple, less noteworthy changes in here as well. The main one is that there was an unused bit of bloat code for setting tick intervals based on a random lower and upper threshold, but that can be done in tick() now so it's completely redundant, and I thus removed it entirely. That makes parts of [proc/process] much easier to read. I added/modified some unit tests (which I expect to fail) to verify that [var/duration] and [var/tick_interval] are both multiples of the subsystem wait assigned to the status effect. If the programmer wants a duration of 2.5 seconds, they expect it to work that way, but it won't because SSfastprocess only ticks once every 0.2 seconds, which 2.5 is not a multiple of. This becomes way more apparent when a status effect is set to use SSprocessing. The final, perhaps most important unit test I've added, is one that verifies that the overall tick count and overall accumulated [seconds_between_ticks] are equal to "[var/duration] / [var/tick_interval]" and "[var/duration]" respectively. ## Why It's Good For The Game The main thing this PR fixes is timing inconsistencies. Before this PR, durations and tick intervals were tracked using world.time, while the [proc/tick] call timing was dependent on the wait time of the subsystem the status effect was processing on. Thing is, SSfastprocess and SSprocessing rarely run completely in one tick during real gameplay. This led to a continuous desync where status effects were consistently inconsistent in their overall tick count. This is a big problem as [seconds_between_ticks] is constant and thus doesn't account for this difference in tick count. As an example, Changeling's Fleshmend has a duration of 10 seconds, a tick interval of 1 second and a healing rate of 4 brute per tick. Previously, if the server was lagging even slightly and it only ticked 8 times over the course of 10 seconds, you would heal 32 health rather than the 40 that a full Fleshmend would give you. The total effect potency of a status effect being reliant on server lag is incredibly stupid, especially for status effects that have an associated cost. (like the aforementioned Fleshmend) As for the refactors, they make status effect code easier to read and debug. Unit tests also make verifying things are working as intended much easier. ## Changelog 🆑 fix: Status effects now tick consistently, with Fleshmend and such giving a consistent total healing amount. Report any oddities. refactor: Status effect code is now easier to read and makes more sense. Again, report any oddities, the changes are major. /🆑 |
||
|
|
3ea7b03369 |
Accentuate the positive with **Personality**: A (soft) mood rework (#92941)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
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 /🆑 |
||
|
|
4ee5cb9dcc |
Allows setting tick_interval on status effects to 0, effectively passing process() straight to tick() (#90248)
## About The Pull Request Adds STATUS_EFFECT_AUTO_TICK, a define with a value of 0 that just makes process() call tick() every time. ## Why It's Good For The Game An unambiguous way to make tick() consistent with process() is quite nice. Sometimes you just have a status effect that only needs to run every 0.2s or every 2s. (past cases downstream) Other times you have a status effect that is reliant on being in sync with process() (my case downstream that started this PR) |
||
|
|
cc80029518 | Process certain status effects using a new "priority effects" subsystem (#89076) | ||
|
|
13705da08d |
fixes a few issues with the chipped quirk (#87764)
<!-- 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! --> the text displayed when this quirk's gained would include the skillchip's typepath rather than its name. this fixes that. also fixes an issue with how the callback timer was being handled, which would lead to a runtime whenever the quirk was removed (since addtimer returns the id and not the callback itself). also fixes the scratch effect never actually working because an organ slot was being provided to `get_organ_by_type` rather than the type. also fixes the itchy effect not going away after the skillchip is removed (it gets added again if the skillchip is reimplanted). ## 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. --> fixes a few issues with the chipped quirk ## 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: fixes the chipped quirk displaying the skill chip's typepath rather than its name fix: fixes chipped quirk's itchy effect not working fix: the chipped quirk's itchy effect now goes away when the skillchip is removed /🆑 <!-- 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: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
239797a4ee |
Deletes misleading infinite define, adds defines for clearer status effect durations (#87842)
## About The Pull Request 1. Deletes `INFINTIE`, it is misleading and not at all a big number and causes bugs 2. Adds `STATUS_EFFECT_PERMANENT` and `STATUS_EFFECT_NO_TICK` to make it clearer what infinite status effects are |
||
|
|
11843651f5 |
Allows status effects with alerts to display their duration (on the alert), adds it to a select handful (#83211)
## About The Pull Request Plainly: Expands the status effect API so their alerts can showcase duration remaining. https://github.com/tgstation/tgstation/assets/51863163/02eaad84-ebb7-4af9-9895-977c6e71acc4 ## Why It's Good For The Game I figure there are some status effects out there which really want the player to know how long the duration is. And right now, for 95% of them, you have to code dive to find out. This is rather punishing for players who... don't code dive. At the same time, there are effects which *do* tell you how long they last, which leaves it up to the player to intuit when it'll run out. This can get a bit silly during lag, and again, punishes new players. That's not to say I think every status effect should report how much duration is left: **For very common effects, like sleeping, it should be left up to the player to guess.** Otherwise we lose a lot of paranoia and feeling of helplessness. (Also keep in mind this only applies to status effects with alerts associated.) Hence why I only added it, largely, to the more "gamified" buffs and debuffs - Things from (generally) one or two sources and with a static duration, (or things which already informed the player how long they last). Notable ones include Fleshmend, Convulsing (from emag defib), Regen core. ## Changelog 🆑 Melbert qol: Some alerts, such as Fleshmend's, show their remaining duration on their icon. /🆑 |
||
|
|
d1afd66508 |
The Curse Of The Slot Machine - Now Clone-less (#77841)
## About The Pull Request Hey there, I think it's commonly held that clone damage sucks and is overused. One of the last places where it was in slot machine code as a type of "immutable" damage that would cause you to die if you didn't leave and get medical attention. It had a lot of silliness and I'm not sure if a lot of it was meant to work the way it was, but here we are. So, what's the changes? * The Cursed Slot Machine will give you a status effect that will "curse" you with repeated damage. After five curses, you get gibbed (similar to the old behavior of the machine). Each curse has it's own change to the status effect, with a lot of depth included. Let me know if the fluff messages about the status effect change sucks, I think it's neat though. * A person with the curse will smoke. I wanted this to look a bit more "steamy" or grey, but I think it's a decent way of communicating that shit is fucked up with that dude. * You also get a branded wound after your first failure at the slot machine. Ouchers. Should get it looked at by a doctor. * We also throw a nice screen alert and all of that jazz. * I also cleaned up all of the code relating to the slot machine (including a stupid double and), and did some tinkering with the status effects framework to get the desired effect I wanted. I hope you enjoy it as much as I did making it. We use cooldowns and stuff between slot machine pulls. * If _anyone_ wins on the slot machine, all curses/brands are lifted. Lucky jackpot! * A lot of the stuff in this code has a lot of vars that might not be modified codewise in case admins still want to jank with this for events. ## Why It's Good For The Game Clone damage stinks, and I don't really like it as a way to subvert the whole "oh you can't use legion cores to get your way". It's a cursed slot machine, and it should do long term damage so that even if you expend all of the resources on the station, it might all be for naught. It's a horrible price to pay in your search for that d20. I think the negative side effects are pretty OK as far as balance, earlier iterations of this concept had you die _way_ too fast. All in all, it's just way more of an interesting interaction than "you take damage and then go to medbay and then come back in the hopes of gambling a d20". ## Changelog 🆑 add: The Lavaland Cursed Slot Machine of Greed suddenly seems a lot more sinister... refactor: Instead of taking clone damage from the cursed slot machine, you now get a status effect with a number of curses associated with it. There's some interesting florid language associated with the status effect as a nicety until your eventual gibbing from chasing that prize. /🆑 I remain undecided if I should keep the curse limit uncapped (but have the damages increase rapidly after the 5-curse threshold), so I left it as the `gib()` from the old code. Let me know your thoughts, but I really don't like the thought that getting the fabled d20 is easy. --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
3645fa7d89 |
Replaces slime clone damage with a "Covered in Slime" status effect (#77569)
## About The Pull Request This PR replaces clone damage dealt by slimes with a new status effect, "Covered in Slime". The status effect is applied when you wrestle a slime off. The status effect has a chance of not applying if your biohazard protection on your head and chest is good enough. It deals brute damage over time and gets removed when you stand under the shower for about 10 seconds or when you are about to enter softcrit. As a direct consequence of adding this feature I added showers to the North Star and Birdshot Xenobiology Labs. I'm sorry, I'm sure you wanted to make a statement with this, but we kind of require them in there now. ## Why It's Good For The Game One source of clone damage eliminated whilst hopefully keeping a "unique" interaction when dealing with slimes. No other source of clone damage has been touched. Clone damage is a damage type that shouldn't exist anymore, it's a relic left from the era of cloning and it's so specific of a damage type that it rarely gets used as a result. It really should be a type of affliction (wound etc) instead of its own damage counter. However, some things in the game still depend on clone damage being around, so those needs to be addressed first. We start off with slimes in this PR. This status effect either lets you either continue with your work if you react fast enough or it forces you to medbay, giving a victim more control over the situation, as opposed to just being dealt a rare damage type that always forces you to go to medbay if you want it healed. ## Changelog 🆑 distributivgesetz add: Replaced slime clone damage with a "Covered in Slime" status effect that deals brute damage over time and can be washed off by standing under a shower. add: Northstar and Birdshot Xenobiology have been outfitted with a new shower. code: Replaced the magic strings in slime code with macros. Also included some warnings to anyone daring to touch the macros. /🆑 |
||
|
|
eea20b83e3 |
Kills seconds_per_tick from status effect tick, replaces it with seconds_between_ticks to clarify some things (#77219)
## About The Pull Request https://github.com/tgstation/tgstation/pull/66573#discussion_r861157216 `status_effect/proc/tick(seconds_per_tick)` is wildly misleading and I feel like I should address it For a majority of status effects, they process on fast processing but do not tick every fastprocessing tick This means that using `seconds_per_tick` here is not giving you the seconds between status effect ticks, it's giving you seconds between processing ticks (`0.2`) This is how it's misleading - If you have a tick interval of `1 SECONDS`, you'd think `seconds_per_tick` is, well, one. But it's actually one-fifth. So all of your effects are now 80% weaker. I have replaced the use of `seconds_per_tick` in tick with `seconds_between_ticks`. This number is, quite simply, the initial tick interval of the status effect divided by ten. An effect with the tick interval of `1 SECONDS` has a `seconds_between_ticks` of 1. As a consequence, some things which were inadvertently made weaker, such as fire and some heretic things (at a glance), are now a little stronger. ## Why It's Good For The Game See above. Makes it more clear what you're doing when working with effects. ## Changelog 🆑 Melbert code: Updated some status effect tick code to be more clear of how long is elapsing between ticks. Some effects that were inadvertently weakened are now stronger as a result (fire and some heretic effects). /🆑 |
||
|
|
4c48966ff8 |
Renames delta time to be a more obvious name (#74654)
This tracks the seconds per tick of a subsystem, however note that it is not completely accurate, as subsystems can be delayed, however it's useful to have this number as a multiplier or ratio, so that if in future someone changes the subsystem wait time code correctly adjusts how fast it applies effects regexes used git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i 's/DT_PROB/SPT_PROB/g' git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i 's/delta_time/seconds_per_tick/g' |
||
|
|
0d4b56435b |
Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars (#71950)
## About The Pull Request You know the deal by now. - Drowsiness is now tracked via status effect. - Eye blue is now tracked via status effect. In converting these over, cleaned up a bit of code relating to some other effects. Attempts to unify behavior between some of them, namely certain biotypes or mob types shouldn't be experiencing certain effects. ## Why It's Good For The Game More stuff moved to status effects, slightly more cleaner and better to work with code. Allows for all mobs that can sleep to be able to get drowsy, too. ## Changelog 🆑 Melbert refactor: Drowsiness and Blurred Eyes are now tracked via status effect. /🆑 |
||
|
|
cffce8de2c |
Status effect process has SHOULD NOT OVERRIDE (#71594)
## About The Pull Request Adds `SHOULD_NOT_OVERRIDE` to status effect process. Nothing currently does it but another PR attempted it which is incorrect. ## Why It's Good For The Game Status effect subtypes shouldn't extend or override process. They can be `qdel`ed at the end, and not everything will handle it properly. Adding processed effects should be done in `tick`, with a set `tick_interval`. ## Changelog Not necessary |
||
|
|
79ffefa06d |
Allows Fully Heal to be passed a series of flags, fixes Adminordrazine being horrible (#71123)
## About The Pull Request - Fully heal can be passed a series of flags detailing what all is healed by the proc. This allows for things to provide almost-but-not-quite fully heals. - Uses this in Adminordrazine, so that it stops being a pain to update every time fully heal is updated. This includes some small balance changes which i'll go over, nothing extremely noticable. ## Why It's Good For The Game Allows for more precise control over full heals. ## Changelog 🆑 Melbert refactor: Fully heal can be passed a series of flags. As a result, some things which previously did a full heal might heal slightly less, or some things which did partial full heals might do slightly more. fix: Adminordrazine will no longer completely break every facet of a person admin: Ahealing a changeling will refill all of their chems. /🆑 |
||
|
|
07496cf652 | Fixes two status effect related hard deletes (#70026) | ||
|
|
442ef897bc |
Refactors firestacks into status effects (#66573)
This PR refactors firestacks into two status effects: fire_stacks, which behave like normal firestacks you have right now, and wet_stacks, which are your negative fire stacks right now. This allows for custom fires with custom behaviors and icons to be made. Some fire related is moved away from species(what the fuck was it even doing there) into these as well. Oh and I fixed the bug where monkeys on fire had a human fire overlay, why wasn't this fixed already, it's like ancient. Also changed some related proc names to be snake_case like everything should be. This allows for custom fire types with custom behaviours, like freezing freon fire or radioactive tritium fire. Removing vars from living and moving them to status effects for modularity is also good. Nothing to argue about since there's nothing player-facing |
||
|
|
074da65fc7 |
Converts drunkness and dizziness to status effects. Refactors status effect examine text (and, subsequently, stabilized black extracts). (#66340)
* Refactors dizziness into a status effect * Refactors the dizziness setter to use the new kind * Drunkness. - Should drunk continue to work off of a magic value or be swapped to duration? I've not yet decided: For understandability it's preferabale for "drunk" to use a timer (they are drunk for 3 more minutes), but both adding drunk and decreasing drunk currently use weird calculations which would be difficult to carry over. - Ballmer is a liver trait * Dizzy was a setter, not an adjuster * Does all the drunk effects over - refactors examine text fully - refactors stabilized blacks because of this * Removed * repaths, fixes some issues * Minor fixes * Some erroneous changes * Fixes some dizziness errors * Consistency thing * Warning * Undoes this change, I dont like its implementation * max_duration * Max amount * Should be a negative * max duration * drunk doesn't tick on death * Rework dizziness strength * Erroneous dizzy change * Fixes return type |
||
|
|
61e45109cc |
Auto-docs + code improvements + splits up status_effect.dm (#66362)
* Code improvements for status effects in general * Does this for now * Throws in a qdeleted check * A return * comment tweak * Missed some ref()s * Wrong var * Comment clarifications * Some more comment clarifications |