There should be an opportunity cost to proning, which at the moment
there isn't and can't really be. When counting the amount of issues this
feature creates (making you artificially harder to it, looking extremely
silly, various layering issues...) it just needs to go at this point.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
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.
Refactoring the entire destroy proc path from Mob Human all the way down
to Atom while trying to find the causes for the damn mob human hard
deletes. This PR comprehensively reorganizes every single stray
snowflake var used by /atom/ all the way to /mob/living/carbon/human,
and makes sure that every var that COULD store a reference, is now
cleared during the entirety of the Mob Destroy() parent hierarchy.
This may very well be the end of the lag war.
In total, I've hunted down and cleared 39 hanging references between
/atom and /mob/living/carbon/human
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
* Please describe the intent of your changes in a clear fashion.
This PR addresses the "bad usr: proc name: get status tab items" error
(SERVER-PROD-CK).
The root cause was identified as the `statpanel(S.panel)` call within
`/mob/proc/get_status_tab_items()` (code/modules/mob/mob.dm:1449). The
`statpanel()` built-in implicitly relies on `usr` to determine which
stat panel is active. However, `get_status_tab_items()` is frequently
called by the `statpanels` subsystem's background update loop, where
`usr` is `null`.
To fix this, the `!statpanel(S.panel)` condition has been removed from
the `if` statement. This eliminates the call to the `usr`-dependent
built-in in a context where `usr` is null, resolving the runtime error.
The `statpanel()` check was unnecessary as the web-based stat panel
handles its own display logic, making this server-side filtering
redundant.
* Please make sure that, in the case of mapping changes, you include
images of these changes in the PR's description.
* Please make sure to mark your PR as wip or review required by making a
comment with !wip or !review required
* If you include sprites/sounds/... (assets) that you have not created
yourself specify the license and original author below.
* Ensure that you also credit them in the appropriate location /
changelog as specified in the contributor guidelines
### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| --- | --- | --- |
| icons/example.dmi | ExamplePerson (Example Station) | CC0 |
Fixes SERVER-PROD-CK
---------
Co-authored-by: sentry[bot] <39604003+sentry[bot]@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
Just removing a few ancient 2008-era vars that were on every mob
globally, but were completely unused in the modern code. I thought about
removing the Mutations too, but since the Hulk mutation is actually used
by a tiny handful of things, I would probably have to do that in a
separate PR by turning the Hulk code into an Element instead.
fixes#22249
- bugfix: "Leaning on the north side of a wall now correctly hides your
lower body behind the wall instead of drawing you on top of it."
- code_imp: "Adds a COMSIG_MOB_LYING_DOWN signal, sent when a mob
transitions into lying down."
Cutout was previously only cutting out the base because KEEP_TOGETHER
wasn't being applied. Adds the flag on lean, removes it on stop_lean.
Animated the cutout while here. Applies a mask to the whole sprite, then
animates it upwards in step with the lean itself, so the feet
progressively disappear as they should.
https://github.com/user-attachments/assets/fec0a852-247a-4570-a6d1-60dda6fe6a3c
Repaths obj/machinery to obj/structure/machinery. **Note for
reviewers:** the only meaningful changed code exists within
**code/game/objects/structures.dm** and
**code/game/objects/structures/_machinery.dm**, largely concerning
damage procs. With the exception of moving airlock defines to their own
file, ALL OTHER CHANGES ARE STRICTLY PATH CHANGES.
Objects, _categorically_, are largely divided between those you can hold
in your hand/inventory and those you can't. Machinery objects are
already subtypes of Structures behaviorally, this PR just makes their
pathing reflect that, and allows for future work (tool actions, more
health/destruction functionality) to be developed without unnecessary
code duplication.
I have tested this PR by loading up the Horizon and dismantling various
machines and structures with tools, shooting guns of various types
throughout the ship, and detonating a bunch of explosions throughout the
ship.
Moves all HUD screen object icon files from various scattered locations
to icons/hud. No changes made to any icon_states in this PR, no
player-facing changes. Part of larger icon organization work and in
preparation for action button rework.
Changes the message that appears when you respawn - given an update ot
the rules, it was slightly out of date.
---------
Signed-off-by: Fyni <itsfyni@gmail.com>
Another and hopefully my last fix for the Observer hard dels. This
probably but might not also clear the Storyteller harddel since they're
an observer child. But I dunno. I have actually tested this.
<img width="670" height="435" alt="image"
src="https://github.com/user-attachments/assets/41e75448-211d-429b-b694-43b9d025e996"
/>
These changes are intended to prevent red grabs (neck grabs) being
broken so easily.
It also makes blue grabs very slightly harder to break, by stopping
people from pulling grabbed mobs.
Firstly, the grabbed mobs were not being moved along with their grabber
sometimes.
This happened when the grabber was force moved (such as by a pull, or
another grab or being walked into on harm intent), in which case the
grab that breaks was resolved purely by which had Process called on it
first.
Secondly, you can now no longer pull either the grabber, or the grabbed
mob. This prevents blue-grabs being broken by someone walking up and
pulling either person away, bypassing the Resist mechanic.
Thirdly, a red-grabbed mob cannot be pulled or grabbed by anyone else.
This means the only way to break a red-grab is to disarm the grabber,
stun the grabber, or throw the grabber more than 2 tiles.
https://github.com/user-attachments/assets/9d392229-4544-4546-ae8d-bdfc835fda19
I touched mob, living and mob_movement for this, because the grab checks
were so spread out. I'm not particularly comfortable with having done
that!
I've tested pretty extensively and it seems like nothing broke, but it's
hard to find edge cases without lots of clients and lots of grabs.
Ports screen alerts from CM13. This enables an immediate reference to
whether you are cuffed or buckled. It also provides an easy way to get
out of said situation by simply clicking on the alert.
<img width="430" height="454" alt="image"
src="https://github.com/user-attachments/assets/0c20abf2-0901-49e0-ac29-492ba7c6dbe5"
/>
### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| --- | --- | --- |
| icons/mob/screen_alert.dmi (buckle, succumb) | CM13Devs (CM-13) |
CC-BY-SA 3.0 |
title
I was lied to by the incapacitation proc (it does not actually check
incapacitation necessarily)
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Instead of middle clicking to lie down, you now simply rest. You can
also now do it with your gun in your hand. Removes all code related to
bespoke lying down.
To-do:
- [x] Add a signal to make firearm accuracies update on lying down.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Replace /datum/gas_mixture/proc/return_pressure with XGM_PRESSURE(xgm)
macro. Having such a relatively simple statement contributing proc
overhead to procs called millions of times is ridiculous
Rename /datum/gas_mixture/proc/zburn to react, deleting the old react
which was just an alias for it. Free proc overhead
Turn check_combustibility into a macro CHECK_COMBUSTIBLE(is_cmb, xgm).
also rewrite it slightly so that it only needs to do one pass. Its a bit
nasty so I apologize for that, but speeeeed.
Delete most powernet and obj/machinery/power procs for handling power,
replacing them with macros. The fact that we were unironically calling a
draw_power() on APCs to call draw_power() on their terminals to call
draw_power() on their powernet every single process tick was insane.
Turn `between` into a macro alias for clamp() since the param order is
different
turn `Percent` into a macro AS_PCT
Rewrite significant chunks of update_canmove so its not quite as
horrifying of a proc and hopefully doesn't eat the entire mob subsystem
every movement now
Finally tracked this rat bastard down; requisite trait assignment was
removed from mobs at some point.
Drifting in zero-gravity works again (including throwing things to
change speed and direction).
Area text blurbs work again (my band-aid fix adding them to status
window has been removed).
Random ambience sounds now play again.
Ship hum works again while on the Horizon.
Probably fixes more stuff that its removal broke.
V2 of [previous music playing
PR](https://github.com/Aurorastation/Aurora.3/pull/21466). TLDR no
longer uses the connect_range component for implementation because it
turned out a bit too inflexible for overlapping music players.
Removes a NanoUI template for the [TGUI
update](https://github.com/Aurorastation/Aurora.3/pull/21046).
New changelog:
- refactor: "Ported Jukebox's NanoUI interface to TGUI."
- refactor: "Ported Jukebox audio playing functionality to a component."
- refactor: "Sound keys refactored from singletons to datums, along with
larger breakout of sound.dm to allow for easier SFX updates in future."
- code_imp: "Expanded track datums to include track lengths."
- code_imp: "Reorganized music file folders for more intuitive access."
- rscadd: "Earphone status feedback text now includes track length."
- rscadd: "Added autoplay functionality to earphones."
- bugfix: "Fixed earphones' 'Previous Song' verb not sending you to the
end of the playlist when used while the first track is selected."
- bugfix: "Fixed gain adjustment for 'Konyang-1' (-23 dB -> standard
-9.8 dB)."
- bugfix: "Fixed y-offset of audioconsole-running overlay animation to
line up with the actual screen."
---------
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
This PR includes several changes to bring our wound code up to date with
baystation, nebula, and modern standards. Highlights include:
- The usage of integers between 0 and 100 for ratios (expressed as a
percentage), instead of 0.0 to 1.0. Small decimal values are prone to
floating point precision errors, but by moving to a percentage instead,
we can reduce the impact of this.
- The untangling of damage flags and injury flags, which were used
interchangably in the code. This could have caused issues should we
expand any of these.
- Larger embedded objects now halt bleeding in wounds, until they are
pulled out. In exchange however, embedded objects will halt healing in
wounds (it is difficult to close an open wound that currently has a rod
stuck in it)
- A lot of data, such as implanted objects and organs, are now stored in
amputated limbs.
Fixes https://github.com/Aurorastation/Aurora.3/issues/21509
**Summary:**
Cleans up a lot of old Greimorian egg implantation code- rewrote the
actual worker injection behavior to use the organ/internal/parasite code
we have, instead of creating effects with their loc set to the organ
itself.
This largely means that not only is Greimorian implantation able to be
treated pharmaceutically (as you'd expect, with them being parasitic and
medicine including antiparasitics), but it also means that 'greimorian
eggs' also get the same treatment as nerve flukes, etc. That is to say,
antags can now purchase Greimorian Clade Kits from the uplink and inject
people or monkeys with them to cause Unhappy Tidings.
This code is also fairly easy to modify, if one wanted to create more
implantable parasites that burst out of people, unrelated to
Greimorians.
**Changes:**
- refactor: "Refactors the egg injection of Greimorian Workers to use
parasite code; it can now be treated with anti-parasitic medicines in
addition to amputation of the affected limb. Works on all playable
species, and monkeys."
- rscadd: "New reagent 'Greimorian Eggs' creates an egg cluster parasite
in a random organ when metabolized in the bloodstream. It also has very
mild soporific effects."
- balance: "Greimorian Workers and playable Greimorian Servants/Queen
now inject Greimorian Eggs instead of Soporific."
- rscadd: "Greimorian Clade Kit now available in Uplink under Bioweapons
section (Greimorians now able to be introduced to ship by egg cluster or
injectable reagent)."
- balance: "All parasite kit bioweapons have had their vial reagent
count increased from 2 -> 5."
- balance: "Helmizole no longer treats K'ois Mycosis, Black K'ois
Mycosis, Zombification, or Tumors (Benign or Malignant)."
- code_imp: "Updates a lot of code documentation to dmdocs."
Destroys a ton of sources of lag:
- /obj/machinery/biogenerator/interact and
/obj/machinery/computer/rdconsole/attack_hand
Both of these call REF(src) constantly on their UI update, which also
happens constantly. Death by a thousand cuts
- /obj/machinery/button/ignition/attack_hand and
/obj/machinery/button/switch/holosign/attack_hand
Sleeps rather than timers, iterating the entire machinery list rather
than just storing the IDs we need at roundstart
- /obj/machinery/telecomms/update_icon and /obj/machinery/meter/process
Calling overlay updates WAY TOO MUCH. UpdateOverlays is a significant
overhead for the server at this point and the two of these combined are
responsible for a little over 20% of updates. They now should only
update overlays when necessary rather than every tick.
- NEW! /obj/machinery/disposal/proc/update and
/obj/machinery/portable_atmospherics/hydroponics/update_icon
These two were also offenders, worse than telecomms but better than
meters. They have also been brought into line.
- /mob/living/carbon/slime
Hard-del'd if grinded into slime extract less than two minutes after
being "born". Fixed by adding TIMER_DELETE_ME flag.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Currently, only Preferences Verbs use subcategories. As a result, all
other Verb tabs are only organized alphabetically, meaning that a single
mechanic (ie. languages) has its governing Verbs scattered rather than
grouped together.
Verb organization by Tab handles broad organization - IC, OOC, Objects,
etc.- highly effectively but requires the user to click-navigate to
other Tabs to access any other verbs.
Verb organization within a Tab can be handled by A.) subcategories and
B.) Verb name prefixes (such as Earphones - *****). The first option is
the clearest and cleanest, but consumes additional vertical space. The
second option conserves vertical space at the cost of visual clarity.
This PR attempts to reorganize Verbs by their Tabs, Subcategories, and
prefixes with the following priorities in mind:
- Minimal disruption; any radical change must be justified (don't move
shit around just for the sake of moving shit around.)
- Verbs which share common functions (such as Languages) should be
grouped together.
- Maintainability. Contributors should not need to memorize an
excessively convoluted Subcategories list; Subcategories must be
intuitive and simple.
- Subcategories should be used judiciously when grouping Verbs to
conserve vertical space. Example: Instead of creating a Subcategory for
Emotes, just rename Audible Emote and Visual Emote to Emote (Audible)
and Emote (Visual).
- Subcategories should highlight uncommon or unusual verbs when
reasonable. Example: There are several animal husbandry-related Verbs,
and because most characters will not have access to those verbs
regularly, we can be less conservative with space (because they'll be
gone most of the time) for the sake of emphasizing their availability.
This PR covers the IC, OOC, and Object Tabs.
Subcategories:
OOC.Chat (Chat functions)
- AOOC
- LOOC
- Devsay (moved from Special Verbs)
- Dsay (moved from Special Verbs)
- OOC
OOC.Debug (Fix shit)
- Fit viewport
- Fix chat
- Refresh TGUI
OOC.Round (Round information)
- Check Gamemode Probability
- Check Round Info
- Custom Event Info
- Vote
IC.Antag (Antag verbs w/o their own tab)
- Invite to the Loyalists
- Invite to the Revolutionaries
- Set Ambition
IC.Critters (More critter stuff than you'd expect there to be)
- Befriend Carp (Previous name 'Become Friends')
- Befriend Cat (Previous name 'Become Friends')
- Befriend Dog
- Befriend Ives
- Name Alien Species
- Name Animal
IC.Language (Language-related stuff)
- Check Default Language
- Check Known Languages
- Set Default Language
IC.Maneuver (Movement, positioning, etc.)
- Adjust walk speed
- Do Pushup
- Face Direction
- Look Down
- Look Up
- Move Downwards
- Move Upwards
- Rest
Object.Equipped (Equipped object stuff, mostly for drip)
- Adjust Badge
- Adjust Bag Straps (Backpacks)
- Adjust Goggles
- Adjust Mask
- Adjust Welding Goggles
- Adjust Welding Mask
- Change Glasses Layer
- Change Pants Layer
- Change Wrist Radio Layer
- Change Wristwear Layer
- Check Time
- Flip Badge
- Flip Belt
- Flip Eyepatch
- Flip Hat
- Flip ID card (ID card)
- Flip Radio (Clip-on radio)
- Flip Wristwear
- Fold Collar
- Lock Antenna(e)
- Point At Watch
- Raise Shroud
- Roll Up Cape Mantle
- Roll Up/Down Jumpsuit
- Roll Up/Down Sleeves
- Switch Belt Layer
- Switch ID Layer
- Switch Lanyard Layer
- Switch Shoe Layer
- Toggle Aviators (Like a dozen variants)
- Toggle Ceremonial Garment Lights
- Toggle Coat Buttons
- Toggle Coat Zipper
- Toggle Hair Coverage (For hats helmets etc)
- Toggle Hair Coverage (FOR BABY CARP!!!!!)
- Toggle Helmet Camera
- Toggle Hood
- Toggle Lyodsuit Mask
- Toggle Poncho Tail Coverage
- Toggle Shirt Buttons
- Toggle Suit Sensors
- Toggle Visor (Pilot helmet)
- Toggle Waistcoat Buttons
- Transform Holoclothing
- Voidsuit - Eject Suit Cooler
- Voidsuit - Eject Tank
- Voidsuit - Toggle Helmet
Object.Held (If you're HOLDING it, its probably relevant to you rn)
- Activate Held Object (Silicons; moved from IC)
- Alter Beacon's Signal (Radio beacon)
- Change Bite Size (Utensils)
- Change Pen Colour
- Choose Colour (Paint sprayer)
- Choose Decal (Paint sprayer)
- Choose Direction (Paint sprayer)
- Choose Preset Colour (Paint sprayer)
- Describe Prototype
- Draw Boot Knife
- Empty Bee Net
- Empty Spray Bottle
- Holster
- Name Gun
- Name Prototype
- Plant Flag (Flags)
- Print Plant Report
- Remove Chopsticks
- Remove Top
- Set Detector High-Bound (Light meter)
- Set Detector Low-Bound (Light meter)
- Set Hailer Message (Hailer)
- Set Timer (Timer igniter)
- Set Valve Pressure (Pneumatic cannon)
- Show Held Item
- Spin Cylinder (Revolvers)
- Switch Verbosity (Health analyzer)
- Toggle Chainsaw Power (Chainsaw)
- Toggle Flashlight Brightness (Flashlights)
- Toggle Gun Safety
- Toggle Hazard Vest
- Toggle Pinpointer Mode (Pinpointer)
- Toggle Mister (Backpack water tank. Goes into/out of hands)
- Twist Cap
- Use Scope
- Wield Pick/Drill
- Wield Two-Handed Weapon (Two-handed weapons)
Object.Cards (I fucking hate cards!!!)
- Deck - Deal
- Deck - Draw
- Deck - Pick
- Hand - Pick
- Turn Hand Into Deck
Object.Earphones (Enough here to separate out)
- Eject Music Cartridge
- Change Volume
- Next Song
- Pause/Unpause
- Play/Stop
- Previous Song
Object.Jetpack (This is probably really important to see quickly)
- Toggle Jetpack
- Toggle Jetpack Stabilization
Object.Tape Recorder (Enough here to separate out)
- Start Recording
- Stop Recording
- Clear Memory
- Playback Memory
- Print Transcript
- Eject Portable Storage
**IC tab example:**
<img width="1061" height="277" alt="Screenshot 2025-08-09 101813"
src="https://github.com/user-attachments/assets/a2afe92d-34fd-4160-bf68-b459a4195e26"
/>
**Objects tab example:**
<img width="1100" height="472" alt="Screenshot 2025-08-09 101807"
src="https://github.com/user-attachments/assets/a36e4c76-594e-4569-93ba-ffcda57e8760"
/>
1. Look up now follows your mob (no more auto-removal when you move,
only when you go below a solid tile). Maybe add a hotkey?
2. Made the codebase work with the latest version of spacemandmm lint.
3. Advanced kits don't work on robotic limbs.
4. Density shifting should now always use set_density. Ported
TRAIT_UNDENSE from CM to better control the density of living mobs.
Fixes weird shifting behaviour with wall leaning -- what was happening
is that mob density was getting reset to TRUE because the mob wasn't
lying down.
5. TGUI say light prefs actually save.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Refactored (second passage) how movement works, now it's mostly in line
with TG handling and avoids calling 3 gazillion Cross() Uncross() etc.
on every atom in a turf.
Fixed EMP protection from species not actually protecting (this includes
the surge prevention for IPCs).
Fixed EMP 3D calculation runtiming because I forgot to make the value
absolute and it was doing the square root of a negative number.
It's now possible to queue the round to start with the Start Round verb
even while the system is initializing, for an even faster pain train to
enter the round and test things.
Removed the use of deprecated parameter icon-size.
Uniformed all clients to use fit to screen.
Fit to viewport is automatically attempted at login.
Statusbar is now hidden by default, giving more screen space.
Toggle fullscreen now works as expected, for even more screen space.
---------
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: realmattatlas <liermattia@gmail.com>
- bugfix: "Fixed PDAs not being automatically updated by the Force
Change Name admin action."
- bugfix: "Announcements from non-Horizon ships drifting into hazards no
longer spawn observer chat. You will only get the announcements if you
are on the same z-level. The Horizon will still send its announcements
globally."
- bugfix: "Offships no longer send newscaster announcements."
- bugfix: "Fixed ling stings not working. Again."
- bugfix: "The robotics core console no longer reverts into a normal R&D
console when disassembled and reassembled."
- bugfix: "The robotics core console now has its own circuit that can be
made through R&D."
- bugfix: "Fixed the message that simple mobs print when they step on a
trap."
- bugfix: "Fixed the foam sword sprite."
- bugfix: "Fixed damaged wall overlays."
- bugfix: "Fixed the INDRA field getting messed up by pointing at it."
- bugfix: "Apple pies now count for the pie bounty."
- bugfix: "Changeling chameleon claws no longer spawn in the warehouse."
- bugfix: "Admin click-drag to possess has been fixed."
- bugfix: "Added a minimum damage threshold to delimb, in order to stops
ridiculously small damage from taking off limbs. The threshold is the
organ's max damage divided by 3."
- bugfix: "The Pull psionic ability no longer pulls anchored objects."
Fixes#17739Fixes#17369Fixes#19535Fixes#19166Fixes#20184Fixes#20165Fixes#20164Fixes#20117Fixes#19961Fixes#20231Fixes#20277Fixes#20346
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
What it says on the can; now we can better compensate for processing
spikes by queueing and accounting for verb times (assuming we actually
use this framework to invoke the bulk of them). I have added its use to
some of them, more can be ported as time goes on, eventually everything
but the most trivial ones should go through this.
No player facing changes. Hopefully.
Praise be the omnissiah.
Added various events to the dcs system in regards to click handling.
Refactored various mouse related procs.
Fixed MUI mask.
Fixed AI jump on double click.
Fixed some runtimes with the click handler system.
Updated the click handler system.
Fixed fireman carry.
Refactored mousedrag procs, added signals, some safeguards, did some
cleanups around, renamed them to make a little more sense. Mostly put in
line with TG's code.
Fast clicking and releasing with a drag, depending on the grace period
and how fast it is done, can be counted as clicks, to aid in combat
scenarios where you spamclick.
https://forums.aurorastation.org/topic/20198-mission-briefing-auroras-gamemode-revolution
To-do:
- [x] Finish storyteller verbs.
- [x] Storyteller landmarks.
- [x] Proper storyteller spawning. Right now the gamemode system is
happy with just picking one storyteller and no actors.
- [x] Antagonist whitelists code.
- [x] Adding the Storyteller whitelist.
- [x] Mission map loading code.
- [x] Map in a bunch of missions.
- [ ] Storyteller adminhelps.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: DreamySkrell <>
- rscadd: "Adds a new species trait, NO_EQUIP_SLOWDOWN. Ignores slowdown
effects from equipment and dragging things. G2s, Vaurca Bulwarks, and
Tajara Teslas."
Note that ignoring slowdown effects also ignores negative slowdown
(speed up), but it's so rare that it's probably negligible.
May or may not horrendously break balance.
Reasonably, these species are huge, slow, and strong to compensate.
They *reasonably* shouldn't be slowed down by pushing lockers and
carrying dufflebags.
Vaurca Bulwarks especially are gated from wearing a lot of clothing from
the get-go so the only change will be being able to not slowed down to
all hell trying to push a locker somewhere.
---------
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
Refactored all the builtin text procs to use string interpolation
instead.
Added a linting for the above.
This is based on, and should only be merged after, #19847
Refactored Life() to receive seconds per tick and times fired as
parameters.
Life() now cannot be slept in, turned various sleepings into async calls
procs.
Optimized mob AI subsystems, gave them new priorities levels and flags.
Grab upgrades are now elaborated asynchronously, tweaked them to avoid
stacking multiple upgrades.
Fixed plains tyrants keeping sending messages about stomping even if
dead.
Removed the gelf logging infrastructure.
Refactored the various logging procs to be a direct call in light of the
above.
Removed ancilliary UDP related things.
Sandstorm damage now respects armor, and will not damage Vaurca and IPCs
as much.
Ponchos, mantles, straw hats, Unathi robes, and hoods now protect
against weather.
Sandstorms can now cause pain and impair vision if a mob's eyes are
unprotected.
Adds protective gear to Wasteland ghostroles who didn't already have it.
---------
Signed-off-by: RustingWithYou <63625389+RustingWithYou@users.noreply.github.com>
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
Ported SSThrowing from TG, to handle throwings.
Updated movement system to the latest iteration, made it a datum as per
latest iteration.
Updated pass/hit handling of atoms, introduced pass_flag_self to
determine what atoms allow to pass.
Moved procs and defines around to make them more organized.
Fixed srom not working properly.
Fixed a runtime with translators implants.
Aligned runechat correctly in srom mobs.
Turned the srom entry points into a GLOB list.
Fixes#19207
This allows certain alien species (Currently Vaurcae, IPCs and Dionae)
to sleep while standing, and gives them a verb to let them choose to
sleep indefinitely.
It also adds custom messages for enter sleep and examining, as well as
changing the snoring emote for the above aliens too.
---------
Signed-off-by: Sparky. <ben.polwart@gmail.com>
Co-authored-by: Llywelwyn <82828093+Llywelwyn@users.noreply.github.com>