Part 3 of the Mob Destroy Refactor, this time going through the entire
list of every ref stored up to a mob/human, and (attempting) to verify
and cleanup every possible circular ref. This PR also fixes some
mistakes made with cleaning up UI elements, namely that tgui's really
don't like it when you qdel them, and screen objects also weren't always
clearing their own references if Qdel'ed directly. There were several
niche situations too where circle refs might be retained by a mob. I
also found an issue where static lights were only cleaned up on
/atom/movable/ but actually existed farther up the chain on /atom. I
don't know if any /atoms that aren't /atom/movable ever get static
lights, but the fact that they can be needs to be correctly accounted
for.
I can't possibly have gotten all of them, but this is every single one I
could find after 3 hours of work.
So after a long time spent digging really deep into the code, and going
over numbers passing into this with a fine comb, I discovered that this
entire time, Mobs were being affected by a bug that was largely
unnoticed for over a year due to mobs not doing anything that would
directly interact with said bug. Right up until I started refactoring
organs.
Seconds_per_tick that was being passed to mobs was actually
ticks_per_second, it was inverted for mobs and only for mobs, everything
else worked just fine with time deltas. But when I started making organs
use time deltas, I got blindsided by organs doing nonsensical things
that seemingly did not match up with what my models were predicting.
Case in point, livers.
So you can now get drunk again with this PR. I've actually gone around
and tested this PR too.
<img width="527" height="114" alt="image"
src="https://github.com/user-attachments/assets/a9f92233-fe2a-406d-9ddd-104c069bbc3d"
/>
<img width="601" height="165" alt="image"
src="https://github.com/user-attachments/assets/6f6877f3-edd2-441b-9ea2-a29d816558ee"
/>
And verifying in a dev environment that brain math is now sensible
again:
<img width="1474" height="814" alt="image"
src="https://github.com/user-attachments/assets/07634d23-bfaa-477e-a64f-322bb0a3f3ec"
/>
This PR fixes an issue where characters were experiencing brain damage
at rates that were sometimes inconsistent depending on player population
and server performance. To accomplish this, it makes it so that brain
damage taken is no longer a random amount per second that fluctuates
based on server performance, and is instead an amount of damage per
second that scales with the previous conditions, but is "tick
invariant", meaning it no longer changes if for instance you have 75
players online causing server lag.
The benefit of this is particularly noticeable in the extreme ends of
lowpop as well as high pop. It'll no longer cause brain-damage at
hyperspeed if theres' only 10 people online.
Refactored hitby to be in line with TG's version.
Refactored item weight defines to a more clear naming scheme, also in
line with TG's version.
Refactored how the movement bumps are handled, ported signals to handle
them, in preparation for the movement update.
Fixed disposal hit bouncing the hitting atom on the wall.
Items do not push other items anymore if they are tiny.
* Tweaked some messages to be based on time since last message, instead
of being based on probability. This includes low blood messages,
infected liver messages, fever messages, and some drug messages.
This PR adds several sprites for assisted organs, which previously
lacked any sprites at all. In addition, this adds an assisted brain,
which is now available to pick in character creation. Long-term, I'd
like to look into adding assisted implants into the medical gameplay
loop, but for now these are character-creation only. "Mechanical"
prosthetic brains are not possible, and have been excised entirely.
### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| --- | --- | --- |
| icons/obj/organs/organs.dmi | Mechoid (Polaris) | CC-BY-SA |
---------
Co-authored-by: Cody Brittain <cbrittain10@live.com>
* Update the codebase to 515.
* edit that
* WHOOPS
* maor
* maybe works
* libcall and shit
* do that too
* remove that
* auxtools isnt updated so get rid of it
* actually remove auxtools lol
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Pain message/status displaying has been unified into custom_pain. This might cause some weirdness with when people go unconscious or get paralysis from excessive pain.
Oxyloss has been fixed and so has the oxygen damage overlay, which is now back. I'm not sure of the actual impact this has on damage.
Also added a fullscreen BIG RED overlay when you have BIG PAIN.
rscadd: "Added three new gamemodes: Tower Defense, Bughunt, Spy vs. Spy."
rscadd: "Bughunt, mercenary and borer, needs twenty required players and five required enemies."
tweak: "Borers have received some miscellaneous fixes and tweaks across the board. They should overall work better now."
rscadd: "Borers can now awaken psionics in their hosts. Maybe it's not a bad idea to get a brain slug after all..."
rscadd: "Spy vs. Spy, traitor and renegade, needs four required players."
tweak: "Changed how renegades work a bit. You're not traitors! You're paranoid people who smuggled a gun to work and are working to keep themselves safe."
rscadd: "Tower Defense, mercenary, heist and ninjas, needs thirty required players and ten required enemies. Good luck!"