## About The Pull Request
Fixes#85028
Obscured flags and covered flags are tracked on carbons, updated as
items are equipped and unequipped. It's that shrimple.
Closes#92760
Just removes the species exception checks for not making sense
Also refactors handcuffs / legcuffs removal. In all of these situations
they were hardcoded when they could easily just use an inventory proc to
work.
## Why It's Good For The Game
Stops a million excessive calls to `check_obscured_slots`
Makes obscured behavior more consistent
Makes obscured behavior easier to use
Cleans up human rendering (There was some cursed stuff before with
render item -> updated obscured -> update body -> cause side effects)
## Changelog
🆑 Melbert
del: Golems which somehow manage to grow wings and somehow manage to
equip something that covers their jumpsuit can no longer fly.
(Seriously, this will not affect anyone)
refactor: Refactored clothing obscurity entirely. Items should be a
loooot more consistent and what covers what, and should update a lot
snappier. As always, report any oddities, like mysteriously disappearing
articles of clothing, hair, or species parts
refactored: Refactored handcuffs and legcuffs a bit, report any odd
situations with cuffs like getting stuck restrained
/🆑
## About The Pull Request
Alternative to 3️⃣(#92591), which has been fatally shot.
Makes it so that His Grace can be turned into Her Grace via a
xenobiology gender-change potion. Her Grace turns the souls of the
consumed into confetti, creating a nice party atmosphere.
Also adds pronoun helpers for /atom/s, as they weren't there before.
## Why It's Good For The Game
I thought this was a good idea
<img width="934" height="153" alt="image"
src="https://github.com/user-attachments/assets/aff7abe0-86b6-47e1-a8e6-2c233544e9aa"
/>
It's a silly little variation, and it's purely voluntary. Couldn't hurt.
## Changelog
🆑
add: His Grace will now drink gender-change potions
/🆑
---------
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
## About The Pull Request
Fixes#92639
The eyes-in-dark hallucination worked, but dispelled instantly due to
checking "is light" instead of "is dark"
Hallucination tier logic was inverted so it only re-calculated max tiers
for hallucination effects which didn't want them recalculated
## Changelog
🆑 Melbert
fix: Wackier hallucinations should rear their head again
fix: Ghost eyes hallucination works properly
/🆑
## About The Pull Request
We probably shouldn't be doing all of this work for all the stacking
status effects without visuals considering only a single status effect
uses the overlay system as of now.
## Changelog
🆑
code: Stacking status effects without visual overlays will no longer try
to create them and fail to do so.
/🆑
## About The Pull Request
Purged several files inthe theme of misc.dm and broken the contents out
into better organised files.
Incidentally done some minor cleanup by removing an unused global list
referring to a string file that no-longer exists, and removing a useless
proc that replicated the behaviour of file2list().
## Why It's Good For The Game
See #60358 and all its successors
## Changelog
🆑
code: Reduced the number of files named misc.dm or similar by 14%.
/🆑
## About The Pull Request
The Chain of Command can now hasten other mobs when right-click
attacked.
https://github.com/user-attachments/assets/b6c2185e-0edb-45d5-a015-3c7e0a684ffc
It's not a very ample speed boost, but it's enough to make it worth
taking into battle if you have friendlies to buff. Lasts 7 seconds.
Refreshes on hit. You cannot whip yourself.
This only applies to the Chain of Command, not whips nor tailwhips.
There's only one of these bad boys on the station. Use it well.
## Why It's Good For The Game
The chain of command is nice as a ceremonial weapon, but it doesn't
actually see any use in combat. Ever.
Instead of just making it do more damage (boring), I wanted to make it a
support tool. The captain (its owner) should usually be in the backlines
of a fight, after all.
Support tools gives less combat-focused players (or pacifists) a way
contribute meaningfully to a team fight (nukies, revs). Not equipped to
fight the blob with the rest of the team? You can use this to buff your
allies without putting yourself within the blob's reach.
<details>
<summary>The EVIL secret reason I think it's good for the
game...</summary>
It gives people some mechanical incentive to steal the chain of command
for once >:)
</details>
## Changelog
🆑 Rhials
balance: The Chain of Command will give a speed bonus to other players
when right-clicking them.
/🆑
## 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
/🆑
## About The Pull Request

Adds the .38 Flare. It does 20 damage. This round highlights the target
for 2 minutes, and projectiles hitting the target always hit the limb
that the shooter was aiming at. Your shot has effectively perfect limb
accuracy, no matter how far the bullet needs to travel. This also
affects other projectiles hitting the target that aren't the .38 Flare.
To indicate whether or not a round in a magazine is either lead or
laser, I've borrowed the implementation of ammo overlays from the C-20r
toy magazines Now each bullet in the speedloaders for .38 can be a
distinct type visibly. Might be interesting if anyone wants to add
additional unique appearances for some of the other .38 rounds.
Reduces the overall cost of a lot of the ammunition in the sec and
autolathe, such as loose bullets. Also reduces the material quantity
within bullet casings.
## Why It's Good For The Game
> .38 Flare
By popular demand, I've come up with a new idea. And that idea...is an
anti-bullet deviation tool. Most players are probably not conscious of
bullet deviation. But if you're familiar with the mechanic, it's why
sometimes your shots may hit into an arm or a leg even though you were
aiming at the head.
The way this works is that over the course of a bullets flight, it
increases in inaccuracy and the pobability of drifting into a limb. From
my last estimate, shooting somewhere around 5 tiles away will usually
result in bullet drift.
While affected by the flare shot, that does not happen. You shoot at the
head, you hit the head.
To put it into perspective; you could consider bullet deviation a form
of damage loss (its a bit more complicated than this and there are
instances where it is positive), and this projectile eliminates that
problem for everyone shooting the target.
> Ammo cost
Some of these were pretty excessive for the cost, and a notable example
of this include the .357 loose casings, .310 Surplus loose casings, and
most shotgun shells. These should go down to roughly below 3/5th of a
sheet of metal when printed from a fully upgraded lathe.
Meanwhile, a single bullet casing was like a sheet of metal each, which
didn't seem right to me. So they're now by default one fifth of a sheet
of metal on recycle.
## Changelog
🆑
add: .38 Flare, a laser bullet! Available in both .38 speedloader and
BR-38 magazine once Advanced Beam Weaponry is researched.
add: .38 Flare highlights the target in an outline and makes sure your
bullets never accidentally hit any limb except the one you are aiming
at. Never accidentally hit someone in the arm when you were going for a
headshot.
balance: Reduces the printing costs of several ammunition types from the
autolathe and security lathe. Reduces the overall material contents of
said printed ammo/magazines. If you find a material dupe, let a coder
know.
/🆑
---------
Co-authored-by: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
Now when you blackout your drunk-value will be capped at 51 so that your
liver does not die while the drunkard personality is controlling the
body
## Why It's Good For The Game
I saw that liver failure has removed alot of the fun from being blackout
drunk both as the drunkard and the original personality as they die from
liver failure. There will still be consequences from having tons of
alcohol in you but at least you will feel it after the blackout, which i
think is very fitting.
## 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>
## About The Pull Request
This PR aims to clean or bring up to date portions of code about dna,
the dna console and mutations. This includes taking care of or removing
some of the awful choices like the pratically useless
`datum/mutation/human` pathing, or the class variable, in favor of using
sources to avoid potential issues with extraneous sources of a mutation.
The files changed are over a hundred just because I removed the
`datum/mutation/human` path, but the actual bulk of the code is mainly
shared between the datum/dna.dm, _mutations.dm and dna_console.dm.
## Why It's Good For The Game
Mutation shitcode is hurting my future plans for infusions a little.
Also it's a much needed refactor. Drafted 'till I'm sure it works
without issues.
## Changelog
🆑
refactor: Refactored mutation code backend. Report any issue.
/🆑
## About The Pull Request
This has the potential to create a lot of needless mob updates which is
not great. Now should only update a mob's clothing if it was actually
washed.
This PR
1) ensures that all wash() procs return a bitflag.
2) ensures that `wash()` proccalls which result in expensive operations
like icon updates only do so when it is necessary
## Why It's Good For The Game
Updating mob sprites is expensive, and doing it when nothing has been
changed is bad.
## Changelog
Nothing really player facing
## About The Pull Request
Given the existence of basic mobs with hand slots, it feels like
throwing and giving items shouldn't be something exclusive to carbon
mobs, so I've pulled things around to make this happen. The only basic
mobs with hands at time of writing are gorillas and dextrous
holoparasites, but the inability to throw things when you're a gorilla
just doesn't seem right to me.
Some more details about what I've done here:
- Made the dextrous component optionally enable throwing for the mob
it's added to.
- Moved offer/give item functionality to /mob/living (I can't see any
reason why only carbon mobs should have this option)
- Moved throwing and give item hotkeys from carbon to "human" (where all
the other /mob/living hotkeys go) and, as a result, removed carbon
hotkeys (nothing is left in them).
- Moved throwing code and item offering code to its own file because
living.dm is 3000+ lines long and should probably be broken up some day
(I'm not brave enough for that)
- Cleaned up an unused global signal that hasn't been used since dogs
got moved to basic mobs.
- Other miscellaneous cleanup where I noticed it.
- In terms of testing: Tested using gorillas (only checked the dextrous
holoparasite to confirm the button and hotkeys worked). Things that were
working:
- Can throw items if the mob is set up to allow it.
- Can give items as a gorilla to a human, as a human to a gorilla, and
as a human to a human.
- Can give a high five to a gorilla (and the gorilla can receive it).
Gorillas can't give a high five back, though (they don't have the
emote), this already ballooned in scope, someone else can make that
happen.
- There are an alarmingly high amount of niche
emote-into-item-into-giving behaviours I suspect half the playerbase or
more aren't even aware of (does anyone offer their hand to someone to
get them up off of the ground?) and I don't know if I broke any of them
with this, but the fact high fives work gives me some hope they're
probably still fine.
## Why It's Good For The Game
Lets gorillas and dextrous holoparasites throw things and give things,
but most importantly sets up more framework for any future dextrous
basic mobs to also be able to do this. There's no real reason to keep
this functionality confined to carbon mobs when dextrous basic mobs are
a thing.
## Changelog
🆑
add: Gorillas can now throw things and offer items to players.
refactor: Moved throwing and offering item code to be based on living
mobs, not just carbon mobs.
/🆑
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Currently, due to the amount of stamina damage that entering a tile
deal, as well as the amount of stamina damage and the frequency of the
stamina damage inflicted by the swimming status effect, wading into deep
water may be tantamount to suicide without stimulants.
To avoid this problem, we've made some adjustments to how and when we
inflict our swimmer with stamina damage.
Firstly, we've reduced the values for stamina loss and oxygen loss by a
fairly decent margin.
Secondly, we only inflict stamina damage on wading into deep water 30%
of the time. When this happens, we award experience and give our swimmer
the exercised buff.
Thirdly, for a bit of realism, our combined weight class of equipped
items and combined equipped item slowdowns contribute to our stamina
penalty from wading through water. Smaller objects do not affect this,
but things like jumpsuits and backpacks do. Shorts do not contribute to
this weight specifically. You're definitely going to sink if you are
wearing the RD's MODsuit. (though the RD has the strength to move in
that thing anyway)
Fourthly, we increased the tick interval for the swimming status effect
from every second to every five seconds. This better represents long
term swimming exhaustion. However, we don't award athletics skill points
for this. You have to actually move to get skill improvements.
Breath loss from drowning also has been put behind a probability,
because losing breathes is actually pretty severe and we don't want this
increment infinitely quickly.
As an added bonus, we now include athletics boosters to swimming.
Finally, we fixed a runtime in the exercised status effect when assigned
to a mob without a mind.
## Why It's Good For The Game
One time I found an assistant that had drowned in the 1x3 deep water on
Metastation because he didn't know stepping into deep water was
basically asking to die a horrible death. Rather nasty.
Also that other swimming PR reminded me that this needs fixing. It is
hilariously lethal. I just want to go for a swim at the beach!
## Changelog
🆑
balance: Swimming is no longer so hyper lethal, and also benefits from
athletics boosters.
balance: By default, swimming through deep water does a somewhat low but
mounting quantity of stamina damage. Reduced by athletics skill and
athletics boosters.
balance: Your total carried equipment weight (and their slowdowns, if
any) contribute to your stamina loss while swimming. If you fell into
deep water, best start stripping items.
balance: Floating is slightly less lethal, especially if you are
starting to drown.
fix: Fixes a runtime caused by the exercised status effect.
/🆑
## 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.
/🆑
## About The Pull Request
Updating the code, fixing a couple issues steeming from fishing.
## Why It's Good For The Game
This should fix#90594 (I think?!), fix#90712 and fix#88514.
## Changelog
🆑
fix: Fixed moonfish eggs appearing like huge errors inside aquariums.
fix: Fixed starfish suicide sometimes not deleting you.
/🆑
## About The Pull Request
Fixes#90510
I added the overlay when only smites that destroyed the body had the
divine smite flag, then I added the flag to a bunch more things. Oops
## Changelog
🆑 Melbert
fix: Fix divine smites making you glow forever
/🆑
## About The Pull Request
This overhauls nearly all aspects related to heart attacks, making them
more urgent and threatening. It also enables the use of defibrillators
for quicker, less invasive treatment of heart attacks.
They are now a status effect instead of a virus, with a fixed countdown
of about two and a half minutes before full stoppage. As this timer
counts down, symptoms steadily escalate from audio cues to suffocation
and dizziness. Through treatment, the countdown can be wound back and
eventually cured (or you can just swap the heart like usual. Boring!!).
### Treatment
Replacing the heart is no longer the *only* option for treatment. Now,
heart attacks can be cured with the use of a defib. Each shock will
rewind the countdown (and symptoms) heavily, curing it after 2-4 zaps in
quick succession. In lieu of a defib, most other shock sources will
work, albeit much less effectively.
So, if you're in security and *really* don't feel like going to medical,
you can just have your fellow officers taze you back to health!

The emergency penthrite given after the attack has a new icon/message,
and is slightly less forgiving. You can still use it to shock yourself
back to life, still being a very risky move.
The heart attack doesn't manifest on medical HUDs immediately. It only
appears after the victim has reached stage 3 for the first time. At
stage 3, it's pretty apparent to both the victim and anyone around that
they're having a heart attack anyways, but until then it will be on the
victim to identify symptoms. Heart attacks will always be reported on
health analyzer scans, shown as the organ failing due to a myocardial
infarction and a tooltip suggesting defibs/other shocks to treat it.
This also adds two tips, for secoffs and medics, on how to treat a heart
attack.
Defibs also now use up charge for restarting a stopped heart, instead of
only when reviving a corpse.
## Why It's Good For The Game
Making heart attacks more of a threat gives way more weight to something
people should be afraid of, but aren't. Heart attacks fail to emulate
anything resembling a heart attack, to the point that it is lame and
dissapointing. They're an annoyance and a trip to the surgery room for
anyone familiar enough with the game. This iteration may be more
dangerous, but it's also more *exciting* (and can be treated faster).
Broadening the ways to treat a heart attack, or just stave off symptoms,
gives an amount of player agency over this threat. It may be more
urgent, but it doesn't mean it has to be a trip to medbay every time.
You can look for other ways to get zapped (security will help if asked,
I promise) or sandbox up your own solution.
Also, treating heart attacks with defib shocks just makes sense. Why do
we have to trash the whole heart? Usually after a heart attack it still
has like, a year or so of juice left before it quits for good.
More threatening heart attacks also further incentivize synthetic hearts
and working out, or any other clever ways of shielding oneself from an
attack (in case you're paranoid like that).
And lastly, the whole reason I started with this PR in the first place
-- I think it is a bit odd having heart attacks be handled as *diseases*
in the code. Status effects make more sense.
## Changelog
🆑 Rhials
balance: Heart attacks are now more violent and urgent. If you can hear
your own heartbeat and are short of breath, you should probably see a
doctor.
balance: Heart attacks can now be treated and eventually cured with
repeated defibrillation shocks.
balance: Heart attacks can now be treated and eventually cured with
repeated shocks from other sources.
/🆑
## 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)
## 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](4b77cd487d)
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>
## About The Pull Request
This PR adds the fearful component which acts as a unified handler for
terror effects. This currently includes nyctophobia and claustrophobia
quirks, terrified status effect from nightmare's spell, and the
monophobia brain trauma. The component processes terror handler datums
which act both as terror sources and effects - jittering, stuttering,
vomiting, panic attacks, etc.
This means that nyctophobia and claustrophobia now act more like
terrified status/monophobia - causing jitters, stuttering, periodic
panic attacks, etc, and their effects stack (i.e. being in a closet in
the dark will increase your fear much quicker).
Closes#37492Closes#57121Closes#69684
## Why It's Good For The Game
Terrified status is very immersive and its effects perfectly fit
nycto/claustrophobia quirks, enough to be impactful to owner's gameplay,
but not roleplaying for them, which is what we want quirks to be. It
also makes them share their stress, which is how you'd expect them to
act. (I would also love to see monophobia moved from a brain trauma to a
quirk, as it perfectly fits latter instead of former, and acts as a
great incentive to interact with other people instead of doing autism
projects by yourself.)
I haven't moved phobias to this system yet, but it could be done in the
future without too many issues - should make phobias less painful to
deal with, and maybe make people actually interested in playing around
them instead of rushing a lobotomy because of how debilitating they are
(currently only interaction is getting hugged by someone you're afraid
of, which will increase your terror)
## Changelog
🆑
add: Nyctophobia and Claustrophobia quirks now have proper terror
effects instead of making you walk/suffocate. Immersion!
refactor: All sources of "terror"/"fear" now use a common component,
meaning they share their counters.
/🆑
## About The Pull Request
This trainwreck of a PR is (hopefully) a final solution to all rendering
jank stemming from the new filter-based coloring system. I went over
every single instance of RESET_COLOR, either adding KEEP_APART or
rewriting them entirely so they render properly. I've also fixed blood
rendering issues by utilizing alpha filters and adding an abstract
"holder" appearance for worn items, which holds blood overlays on worn
clothing as to avoid coloring it. I've also fixed horrible
inconsistencies with atmos pipe coloring as a result (of getting sucked
down that rabbit hole) and converted all uses of COLOR_VERY_LIGHT_GRAY
in atmos code to ATMOS_COLOR_OMNI to avoid confusion.
MODsuit modules still get colored into MOD unit's color, need to
refactor their rendering for this.
Closes#88989Closes#87526Closes#89837
## Changelog
🆑
refactor: Audited all remaining coloring code - among noticeable
changes, blood should no longer get colored or "leak out" of item
bounds, atmos pipes no longer color weirdly and repairbots are white
again.
/🆑
## About The Pull Request
I slightly refactored the Cortex Imprint bioware - instead of ticking
every 2 seconds, it now just registers `COMSIG_CARBON_GAIN_TRAUMA`, and
blocks any basic resilience trauma from even being added - in addition
to curing all basic resilience traumas upon being gained.
I also added a `COMSIG_CARBON_BLOCK_TRAUMA` value, which is exactly what
it says on the tin, and also pass the resilience arg to
`COMSIG_CARBON_GAIN_TRAUMA`.
## Why It's Good For The Game
this doesn't need to tick i dont think, so, like, why not just use a
signal?
## Changelog
🆑
code: Slightly improved the code for the Cortex Imprint bioware.
/🆑
## About The Pull Request
Jittering has been transitioned to pixel_w/z, so we should use that
instead.
## Changelog
🆑
fix: Fixed jittering resetting the wrong pair of visual offsets
/🆑
## About The Pull Request
1. Hallucination effects are now tiered
Hallucinations now all have tiers, ranging from common to special.
If you are just hallucinating a teeny bit, you will not experience the
more extreme hallucinations, like bubblegum or your mom.
But if you're hallucinating off your butt, you will be a bit more likely
to experience them.
2. Hallucination rate has been tweaked
Default hallucination cooldown is now 20-80 seconds, up from 10-60
seconds.
However the cooldown will *also* vary depending on just how much you're
hallucinating, going down to 10-40 seconds.
3. RDS is now capped a bit lower (meaning you don't see the higher tiers
like bubblegum).
But I added a preference to uncap it. For the people who actually like
bubblegum visits.
4. If a hallucination fails to trigger, the cooldown will partially
reset. (by 75%)
5. "Fake chat" hallucination will pick more viable subjects.
Fake chat will try to find someone who can actually speak your language,
rather than make a monkey speak mothic or something.
(I may revisit this so if you're super-hallucinating it reverts to old
behavior though.)
6. Adds a hallucination: Fake blood
You hallucinate that you start bleeding, very simple.
7. Adds a hallucination: Fake telepathy
You hallucinate a random telepathic message, similar to fake chat.
8. Adds a hallucination: Eyes in the Dark
A nearby dark turf will have a set of glowing red eyes shine through the
dark. A classic.
9. Adds some new sub-hallucination: PDA ringtone (fake sound), summon
guns/magic (fake item)
Funny prank.
10. Makes mindbreaker a bit more effective at combating RDS.
Pretty much does nothing right now unless you gulp like 50u.
## Why It's Good For The Game
Hallucinations are pretty one note if you experience them for longer
than 10 minutes.
This is due to two fold:
- Many hallucinations are goofy, and not subtle
- Hallucinations trigger very rapidly
You will never fall for a hallucination because in between "You see John
Greytide put the blueprints away", you get your mom yelling at you,
everyone looking like syndies (again), and bubblegum
This pr addresses it by
- Limiting the wacky hallucinations for when you're really off your
gourd
- Reducing the period between triggers
- Adding a few hallucinations
If the wackier hallucinations are reserved for when you're really off
your rocker, this lets the more subtle ones sink in over time, leaves
more room for second guessing
## Changelog
🆑 Melbert
add: Adds 4-5 new hallucinations. Collect them all.
balance: If you are only hallucinating a little bit, the game will
prefer to pick more subtle hallucinations. If you are hallucinating a
ton, it will prefer the more wacky hallucinations.
balance: If you are only hallucinating a little bit, the cooldown
between hallucinations is longer. If you are hallucinating a ton, it
will be shorter.
balance: If a hallucination fails to trigger (such as a deaf person
getting a sound hallucination) the next one will be a lot sooner.
balance: RDS hallucination amount is capped at mid tier hallucinations.
This means bubblegum and co. will be a lot rarer, or will even never
show. HOWEVER, there is now a preference allowing you to uncap your RDS
hallucinations.
balance: Mindbreaker toxin is more effective at suppressing RDS.
balance: Some hallucinations effects have been tweaked up or down
according to the new thresholds. Madness mask as an example.
fix: "Fake Fire" Hallucination works again, and now has a unique message
for if you stop-drop-roll that other people see.
/🆑
## About The Pull Request
- Adds `dustself` admin verb
- Adds Dust admin smite
- Does what it says on the tin
- Adds Divine smites
- Variations of smites that come with the prayer sound and special
effects - so you can get the message across that this is a punishment
from god.
https://github.com/user-attachments/assets/1cf89ece-3e89-4135-a984-79ca10c278a6
## Why It's Good For The Game
- Request. Parity for `gibself`
- Request. Parity with "Gib"
- Request. Someone wanted to add some more flair to smites so I obliged.
## Changelog
🆑 Melbert
admin: Adds "Dustself"
admin: Adds "Dust" smite. Does what it says on the tin
admin: Adds "Divine" smites. They are variations of normal smites themed
around divine intervention.
/🆑
## About The Pull Request
Completely refactored how client colors are handled. Now they're similar
to traits, having a source associated with them. Instead of adding and
removing by strict type (which makes client colors prone to getting
duplicated and not cleaned up) you remove a filter associated with a
specific source. Adding another client color with the same source as an
already existing one will replace the existing one if its of a different
type, or do nothing if they're the same (unless force is set to TRUE).
Client colors can also force filter splitting, putting all colors that
come before them, themselves, and all colors after them into separate
filters - this is useful to prevent mixing in filters which are supposed
to remove a certain color.
<details>
<summary>Example of how Perceptomatrix and nightmare vision goggles
combined before this PR:</summary>

And this is after, as you can see nightmare vision effect's red is only
slightly tinted by perceptomatix instead of being literally halved.

</details>
Additionally, added support for custom filters (and not just colors) to
client color code to allow us to work with more colorspaces.
Also fixed weird blindness behavior, so this also
Closes#89787
## Why It's Good For The Game
Makes code less ass to work with, fixes weird color mixing, etc.
## Changelog
🆑
fix: Fixed perceptomatix helmet allowing you to see even when
unconscious
refactor: Refactored how client colors are handled, ensuring that
certain effects like nightmare goggles don't disappear when another
vision-affecting piece of clothing is worn.
/🆑
## About The Pull Request
Inspired by Zomboid, as you get drunker, the moodlet you gain from being
drunk will give more of a bonus, and its message will update.
## Why It's Good For The Game
Lets you get the vibe of just how drunk you are.
## Changelog
🆑 Melbert
add: Your mood will increase further the more drunk you are. Until you
crash out.
/🆑
## About The Pull Request
Drunkness > 50 gives you `TRAIT_FEARLESS`, which helps with phobias and
social anxiety
## Why It's Good For The Game
Liquid courage
## Changelog
🆑 Melbert
add: If you are sufficiently drunk, you can resist your phobias and
social anxiety.
/🆑
## About The Pull Request
Literally every single bit of our code assumes that adjustXLoss returns
the total health delta (old_damage - new_damage), so negative values
when damage was taken and positive when it was healed, ***except***
simplemobs had this inverted for (supposedly) two years. Yeah. This
broke crushers, mending touch and slime feeding - not sure if anything
else was screwed due to this.
Closes#87550
## Why It's Good For The Game

## Changelog
🆑
fix: Fixed inconsistent crusher trophy droprates
/🆑
## About The Pull Request
Finally, I've done it.
You can get plant limbs attached, and those limbs will actually
regenerate in light!
I've done the same for shadow healing for nightmares and shadowpeople.

**Details:**
I've removed the healing/damage from their species, and instead have the
prospective limbs add a new /datum/status_effect/bodypart_effect to the
carbon, which other bodyparts with the same effect merge into.
Plant people in specific also had oxy and tox healing, as well as
nutritional gain. These attributes have been integrated into the
bodyparts aswell, and scaled to the amount of bodyparts you have. You
can take 1 plant limb to get 1/6th of the oxygen and toxin healing of a
normal podperson. Same for nutritional gain. (Fun fact: you need 2 plant
limbs to never lose hunger, 3 to actually be nutrition positive!) Damage
wise, if you have 1 plant limb, you get 1/6th the plant healing but
focused on only the plant limb. (This is hopefully exactly as you'd
expect).
Fun fact: if you remove your lungs and organs and take plant limbs, you
will still die from oxygen loss or toxin loss because the oxy and tox
healing is really weak.
## Why It's Good For The Game
Honestly this is peak sandbox. I remember when transplants got added,
and I took a plant limb, but it didn't heal in light :(
This shattered my immersion and deeply saddened me. Honestly this is why
I started the whole dedatumisation of species tirade.
But it's here. Trans plant plant transplants will heal in light.
Tgstation is saved and all furry downstreams are rebasing.
## Changelog
🆑
add: Taking plant or shadow limbs will now behave as expected! Take a
plant arm, and it will heal in light! Or take plant and shadow limbs and
be in constant agony as you realize this world was not made for you
refactor: Refactors how we handle photosynthesis/nyxosynthesis by moving
it into a new status_effect framework controlled by podyparts
/🆑
## About The Pull Request
Reverts new crusher marks from #88171. Crusher marks now can be
instantly detonated, but firing one puts you on an attack cooldown
again.
I did, however, add a fancy animation to them.
https://github.com/user-attachments/assets/ff09084e-36a9-445e-bb27-d7ba4822e37d
## Why It's Good For The Game
This change caused two major issues:
A) Color-based animation doesn't provide you with a clear hint when the
mark is actually ready to be burst, as it can look green but be just a
tiny bit short. Before, mistimed clicks didn't punish you aside from
potentially getting attacked by entering melee range, while now doing so
puts you on another 0.8 second melee cooldown, which feels ***really***
bad as there's no way to see if a mark is actually ready or not.
B) It also removed the potential co-op nuking of mobs/megafauna that
crusher duos could do, switching betwen applying and bursting marks for
doubled DPS, which while rare, I was kinda fond of.
## Changelog
🆑
balance: Crusher marks now can be instantly detonated, but firing one
puts you on an attack cooldown again
/🆑
## 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
/🆑
## About The Pull Request
Reverts #83361
## Why It's Good For The Game
I PR'd the original with the intent of making disease battling more
engaging by adding warnings and sneeze dodging, but this was rejected
and instead we got a very awkward middle ground where no one is happy
and the original PR didnt accomplish what it set out to accomplish. You
can't dodge the sneeze because it's a shotgun spread and invisible :/.
The sneeze catchers are even somewhat buggy and the sneeze warning leads
to extra chat clutter
## About The Pull Request
Adds slips to the list of existing shove stun methods originally set in
https://github.com/tgstation/tgstation/pull/84640 (wall shoves,
telebaton, mansus grasp), and also reifies this concept as the "dazed"
status effect.
This makes it so that being knocked down from a slip from any source
(e.g. wet floor, clown stuff, lube, foam, oil, butterdog) gives the
dazed visual effect and makes you eligible for being shove stunned. The
status always lasts for 3 seconds even if e.g. slipping on lube knocks
you down for 15, but this can be customized per slip.
## Why It's Good For The Game
Further rewards environmental play and provides another feasible means
of fighting back against better equipped opponents, both in line with
the original PR. Also the visual cue fits well as an immediate signal
that you're dazed and can't get up.
## Changelog
🆑
balance: slips now make you eligible for being shove stunned
/🆑
---------
Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com>
## 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
## About The Pull Request
### _**HEY HUSTLERS**_
Do you want to know all about the station's real GDP **_BREADWINNERS_**
this shift? Well, look no further than the all new GMM SPOTLIGHT. On
select shifts (Where the trait is rolled), the GMM SPOTLIGHT will shine
on who's HUSTLING and GRINDING the hardest so YOU CAN ~~know who has
enough money to try and mug them~~ LEARN THE SECRETS OF THE CREDIT
WHISPERS **AMONG US**.
Don't know where these legendary GRIND-O-HOLICS are this very SECOND?
Well, the GMM will UPDATE the SPOTLIGHT every 5 minutes, with their
IDENTITY MADE KNOWN to all crewmates via the station updates and
economic summary newcaster channels.
WHAT ARE YOU WAITING FOR? ALIEN JIM KRAMER??? UNLEASH THE SECRETS OF THE
HUSTLERS **TODAY**!!!
(The original idea for this station trait was given to me by
xhorian/@YesterdaysPromise a few months back, so big thanks to him for
the inspiration.)
Video of it in action:
https://discord.com/channels/326822144233439242/326831214667235328/1330408517248614432
## Why It's Good For The Game
This is, obviously, a negative station trait. On shifts where players
are working to make lots of personal profit, it can either serve as a
badge of honor, or as a target being painted on your back about who has
the most money. Still, it's somewhat flavorful, and I think it could be
interesting to have happen to a player, where suddenly a beam of light
from above ™️ suddenly appears and starts following you.
I wouldn't be against giving command some kind of control to let them
cancel the effect early by un-subscribing from their newsletter, but it
depends on how people feel about this.
## Changelog
🆑
add: Stations in your sector may start with the GMM spotlight, a massive
economic broadcast spotlight that will follow the wealthiest crewmate on
board until the next paycheck
/🆑
## About The Pull Request
This sets the processing subsystem for
`/datum/status_effect/fire_handler` to use `STATUS_EFFECT_PRIORITY`
(`SSpriority_effects`)
## Why It's Good For The Game
I'd say being on fire is classified under "certain status effects that'd
fuck the player over from lasting much longer due to server load"
## Changelog
🆑
fix: Being on fire or wet should no longer last much longer than
intended while the server is under load.
/🆑
## About The Pull Request
Like #88945 but I am meaner than Goofball.
This PR adjusts Phobias to be a little bit less restricting, rather than
being basically the worst thing in the game.
The way phobias work now is:
***Hearing*** something related to your phobia will make you scream and
give you a minor, minute-long mood penalty, once every 12 seconds.
***Saying*** something related to your phobia has a high chance to make
you either stutter or speak quietly, or both at once.
***Seeing*** something related to your phobia applies a moderate,
four-minute long mood penalty and then gives you stacks of a debuff,
once every 12 seconds, up to 6 stacks.
Each stack of the phobia debuff makes any effects applied by being
scared last longer. Then it applies one of four random effects.
- You scream, which does nothing else... unless you have at least 5
stacks in which case you will also drop whatever you were holding in
your active hand.
- You jump, which immobilises you for a very short period of time
(basically just interrupting your movement).
- You lose your balance, making you briefly move slower and become
staggered (which makes it easier to push you around).
- You feel faint, which makes you dizzy (move occasionally in unwanted
directions) and briefly blurs your vision.
These stacks decay every 30 seconds as long as you're not actively being
scared.
If you have _multiple_ phobias then your general level of fear is
applied globally between them, so even if you just escaped from some
clowns you might still be worked up when you see a spider.
Phobias mostly don't make you jitter any more largely because to be
honest it just looks sort of shit and generally makes your sprite and
animations seem like they are broken not like you are shivering in
fright. It still happens if you hear something scary.
_Also_ I changed carp phobia to a general "fish" phobia, because we have
so much fish-related content now to take advantage of.
_Also_ I fully deleted the Heretic phobia because it's not applied by
Heretics any more and without that context it is also needlessly
specific, with heavy overlap with the Supernatural phobia.
_Also_ I fucked around with the phobia speech dictionaries a little bit
to remove some words I don't think are that funny or appropriate and
also add some more. Your mileage may vary.
_Also_ I made sure people who are scared of aliens are scared of basic
mob xenomorphs, people who are scared of birds are scared of raptors,
and people who are scared of bugs are scared of butterflies
and........... mothroaches.
## Why It's Good For The Game
Phobias are internally classed as a "mild" brain traums, which makes
them relatively easy to acquire and are applied by effects that are
supposed to be bad but not completely debilitating.
Examples of other mild traumas are:
- Stuttering
- Speech impediments
- Your health preview doesn't update
- You occasionally move in a random direction
- Colour blindness
- You don't like dropping objects
Phobias on the other hand are generally considered by most players who
have had one to be _significantly_ disabling. The penalties they apply
tend to be significantly worse to play with than the things listed
above, and can make playing around with a roleplay quirk excessively
miserable.
Unlike Goofball I don't want to make these totally toothless, but I do
want them to be more _mlld_ than they were before.
## Changelog
🆑
balance: Phobias are now somewhat less debilitating, although their
effects get worse the longer you are near a fear trigger.
balance: Carphobes are now afraid of all fish.
del: Remove the Heretic phobia, as it is now basically unused.
/🆑
## About The Pull Request
We have a mob called `simple_animal/hostile/curseblob` which was used
only for the `necropolis_curse` status effect.
From the git history, this seems to have been added in a PR merged eight
years ago where the PR author came up with a cool set of curses to apply
to cursed objects and PRed it to the game as a concept to be used later.
Subsequently, nobody used it.
Well, to be more accurate, _two_ things apply the necropolis curse
debuff right now but they only collectively use three of the four
possibilities.
The fourth, which spawns a mob with weird behaviour, is unused and so
rather than spend my time bringing it up to standard I just removed it.
Because this is dead code.
To be quite honest I am not totally certain that `necropolis_curse`
should be a single status effect either and it would plausibly be better
off being two different status effects for the two different sources it
is currently invoked (helbital overdose, and being sacrificed by a
heretic).
**Fun Fact!**
Being sacrificed by a heretic doses you with 1 minute worth of
_Helgrasp_ which spawns a frightening hand to attack you once per
second, and also applies the Necropolis Curse which spawns a frightening
hand to attack you once per ten seconds. This means that if you have
anything in your mob which affects metabolic rate your sacrificial
experience may be somewhat different, as quite a lot of the danger
actually just comes from a chemical in your body.
One of these effects spawns the hands slightly further away than the
other, and you actually spend _2.5 minutes_ in the spooky hand room, so
in that second (longer) half you'll only be tormented by very occasional
spectral groping. Personally I would not do it this way I think.
However rather than removing and replacing it, which would probably have
some kind of aftereffect on the heretic sacrifice minigame that I would
rather make larger changes to, I just touched up some of the code to
avoid single-letter vars and to use a helper proc we already use in
other heretic-related places.
## Why It's Good For The Game
This wasn't maintained, isn't used, and was on our to-do mob conversion
list.
## Changelog
Not player facing
# About The Pull Request
## Nearsighted Sources
Nearsighted now associates/tracks severity applied by each source.
Previously, nearsighted only used a single variable which had to be
shared by every source, which caused problems for things like scarred
eyes which needed independent behaviour.
This implementation allows sources with different severity levels to
coexist without needing workarounds
There are now two different severity types for nearsightedness:
* Correctable: Can be mitigated with vision correction (like glasses)
* Absolute: Cannot be mitigated from any source, used for scarred eyes
Which can allow nearsighted sources to not be affected by vision
correction.
Also, since there is no more technical conflict between the two quirks,
I've made it so that nearsighted and scarred eye can be selected
together (as a QOL change)
There is also a new unit test for this new behaviour
(nearsighted_effect) that checks application and removal
## status_effect/grouped minor rework
Grouped status effects now have `source_added()` and `source_removed()`
procs, which are called whenever a source is added or removed from the
effect
I did this because the previous implementation was somewhat unwieldy.
Inherited status effects would recieve the _currently existing_ effect
through merge_with_existing, and require them to modify the existing
effect's properties, which is odd and not intuitive to work with (the
proc's `src` was not the existing effect)
It not being called for every source also made users repeat code in
`on_creation()` and `merge_with_existing()` for every source added.
This new interface should prevent repetition and be generally more
intuitive to work with.
# Changelog
🆑
refactor: Nearsighted has been reworked to track severity applied from
each source, as well as allow "non-correctable" nearsightedness (for
things like scarred eyes).
qol: The above being possible now means that you can select the
Nearsighted and Scarred eye quirks together
fix: Any bug that would occur from becoming nearsighted with a scarred
eye should be fixed now
code: status_effect/grouped merging code has been improved (i hope)
/🆑
## 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
/🆑
## About The Pull Request
Adds suicides to fish. Like, a lot of suicides. Almost all of them very
unique. I'm too lazy to make a video, but they've been thoroughly
tested.
Improves the go_away status effect to have no timer - but delete you on
z-level change.
Adds a trait that prevents combat mode changes.
## Why It's Good For The Game
I want to kill myself with fish - and terrify bystanders in the process.
## Changelog
🆑
add: Adds suicides to fish. Like, a lot of suicides. Almost all of them
very unique. I'm too lazy to make a video, but they've been thoroughly
tested.
/🆑
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Technically an improved port of
https://github.com/DaedalusDock/daedalusdock/pull/651, instead of only
storing height over 32 pixels for HUDs we store both pure height and
width for the sake of cutting down on icon operation spam (which is
pretty costly). Should save us a significant amount of time, cuts down
update_health_hud times by 45% and total update_health by 30% which is
pretty good for a somewhat hot proc.
## Why It's Good For The Game
Our health HUDs constantly fetch icons ***twice*** every update_health,
jesus.
## Changelog
🆑 SmArtKar, Kapu
code: Implemented caching for icon sizes which should significantly
improve mob health performance due to HUDs constantly fetching icons
/🆑