## About The Pull Request
I didn't realize that default aggro range for mobs is 9, so tendrils
would try to attack you with their whips and spikes despite you being
completely out of their range, which looks pretty funny.
I've fixed this by separating out aggro ***grab*** range and aggro
sustain ranges, lowering latter to 5 for tendrils, and adding checks for
target distance for both abilities it has. The Thing also had a similar
behavior but used rather jank code for that (which I don't think even
worked), so I've modified it to use the new system as well.
## Why It's Good For The Game
Stationary mobs probably shouldn't try to attack mobs completely out of
their reach
## Changelog
🆑
fix: Tendrils no longer try to attack you when you're out of their reach
code: Cleaned up The Thing's aggro code
/🆑
## About The Pull Request
Completely removes individual inventory UI handling from mob and HUD
code and moves it to slot datums.
``/datum/inventory_slot`` now is responsible for displaying items on the
player UI and does so through vis_contests as opposed to screen_loc -
which ensures that wide items will display properly rather than be
offset to the right.
Centralized, slot_id based handling allows us to significantly simplify
inventory and HUD code (see how many lines were removed) as you no
longer need to individually track all items for both the HUD owner and
the observer, and makes it easier for us to fully datumize inventory
handling in the future.
Also fixes a bug where observers would see players' storage UI and have
the items linger on-screen after its closed.
## Why It's Good For The Game
Makes working with inventories and HUDs easier, fixes visual issues with
wide items, I need this for human rendering refactors.
## Changelog
🆑
refactor: Refactors inventory UI to be completely datum and
vis_contents-based
fix: Observers should no longer see doubled up inventory UIs
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
## About The Pull Request
Adds a non-patrolling subtype of honkbot for the casino shuttle to use.
Fixes#96201
## Why It's Good For The Game
He's supposed to be spreading joy to the evacuees, not running away roam
the halls.
## Changelog
🆑
fix: The honkbot on the casino emergency shuttle has been told not to
abandon its post.
/🆑
## About The Pull Request
Removes the IC tab in its entirety
- Some mobs (Blob Minion & Lightgeist) had manually removed the "pull"
verb, this replaces it with taking away their pull force.
- Lightgeist had their "Me" verb manually removed, this is replaced by
giving them Emotemute trait (the same that mime's bane gives)
- Floor Changer: You can now RMB the arrow buttons to look in a
direction w/o moving. Added a tip to help with this.
- Exit Hivemind: Already an action button and was removed without
further edits
### Removed entirely
Rest
Resist
Look Up/Down
Move Upwards/Down
Activate Held Object
Open Language Menu
Memories
View Skills
### Moved to command bar (secret verb ooh) because I am biased
Sleep
Navigate
### Martial Arts
Martial Arts had a button to see your current skills & the ability to
cycle between artstyles. This was replaced with 1 action button that
does both of these.
<img width="317" height="148" alt="image"
src="https://github.com/user-attachments/assets/afed910f-b6b6-441d-86cb-dade0e253044"
/>
Name auto-updates as you swap artstyle to whatever help verb the current
style uses. Mention of RMB in the name is only there if you have more
than 1 martial art, but the desc will remain just so players can see it
even if they only have one, for future reference.
## Why It's Good For The Game
Brings greater visibility to Martial Art stuff, and especially since the
stat panel is being made optional we should not be hiding ANYTHING in
there.
This also helps me with my project listed in
https://hackmd.io/443_dE5lRWeEAp9bjGcKYw?view
And also fixes some sorta-removed features due to removing verbs not
matching people's actual powers due to new features like "Custom Me" and
"Ctrl Clicking".
## Changelog
🆑 SirNightKnight (sprites), JohnFulpWillard
del: Deleted the "IC" tab of the stat panel.
fix: Lightgeists can't emote or pull as intended.
fix: Blob minions can't pull again.
qol: Martial Art users now have an action button for their
artstyle-related businesses, rather than it being in the stat panel.
qol: You can now right-click the move up/down UI buttons to look in the
direction without moving.
/🆑
## About The Pull Request
If glimmering residue (revenant ectoplasm) is scattered in the vicinity
of a mirror, the revenant will be trapped inside it instead.
-When mirrors are cursed in this way, the reflections are shifty and
distorted, like the revenant's reflection when it's alive.
-In this state, the revenant may only communicate via telepathy with
people reflected in the mirror (it's more like "standing close to it",
but that's probably ok).
-If the mirror is broken, the revenant will reform. If it's catatonic, a
new candidate will be pulled, much like with ectoplasm reforming.
-If the mirror is destroyed in another way, the revenant will be
destroyed as well.
-There is a 1/500 chance that a mirror will be haunted roundstart
## Why It's Good For The Game
You can now torment the revenant by eternally trapping it if it really
pissed you off
## Changelog
🆑
add: you can now trap dormant revenants in mirrors
add: haunted mirrors may very rarely appear roundstart
/🆑
---------
Co-authored-by: l0 <-->
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
## About The Pull Request
Bileworms now attack by firing a barrage of arcing projectiles at their
target, one guaranteed to hit their turf and the rest spread around
them. Bileworms fire 5 shots and vileworms fire 7 at a faster rate.
The projectiles themselves deal 20/25 burn damage and scale with MELEE
armor (as ACID is mostly for atom armor and not mob) on mobs and ACID on
objects.
Bileworms now have a short jump animation before they burrow, during
which they can be stunned by getting shot or hit (only damaging
projectiles count, so you need to melee with your crusher if you want to
stop a burrow). Doing so prevents them from attacking for 2.4 seconds,
after which they burrow back underground without an animation (as to
avoid chainstunning)
They will not burrow immediatelly after firing, now only repositioning
if their target is 3 or less tiles away from them or if they have been
hit by an attack. Their health has been increased to 110/175 to
compensate for them now being able to be stunned, as those are above
important breakpoints for damage, making them require 1 more swing after
backstab/1 more shot to kill respectively.
When attacking NODE drones bileworms will have 30% less spread, making
them a priority target to take out during vent defense, but not as
dangerous as brimdemons or legions.
https://github.com/user-attachments/assets/9d11959f-c90b-4fd5-b93f-bc514237e9bf
Full video of 7 bileworm/5 vileworm fights with better visuals and no
compression can be seen here: https://streamable.com/6thbmm
(Both underground firing and dead sprite issues have been fixed after
the recording)
Worm jumping sprite/animation by ArcaneMusic, edited by me
## Why It's Good For The Game
Bileworms are not fun to fight for both PKA and PKC users, there is no
counterplay to their burrowing, and they are not engaging during vent
defense. This should address all of these issues, and make them more fun
to fight.
## Changelog
🆑 SmArtKar, ArcaneMusic
balance: Bileworms now fire arcing shots instead of cross patterns, and
can be stunned by hitting them during the burrow animation. Their health
has been slightly buffed to compensate.
/🆑
## About The Pull Request
Adds a little text blurb to the guardian granters (wiz deck of cards,
tot parasite injectors, etc) to show if they've been used.
<img width="635" height="86" alt="img1"
src="https://github.com/user-attachments/assets/0a63600d-803e-49d4-9b52-d180f0cc2666"
/>
<img width="618" height="83" alt="img2"
src="https://github.com/user-attachments/assets/15dcc3fc-225e-4ac5-986b-5ee31d33ba2e"
/>
## Why It's Good For The Game
Currently the only way to check if a granter has been used it to use it
yourself, which in the case of dusty shards, may cause you to become a
walking JoJoke when you just wanted to see if someone took the Golden
Experience for themself.
## Changelog
:cl:Grammi
qol: Guardian granters (holoparasites injectors, dusty shards, etc) now
show if they've been used on examine.
/🆑
---------
Co-authored-by: unknown <Grammi>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
Switches from the holoparasite extinguishing their owner repeatedly
whenever they caught on fire, causing a message about them catching fire
to repeatedly appear, to giving them the `TRAIT_NOFIRE` trait, which
does the same thing.
## About The Pull Request
This Pull Request adds a new logging system that uses a timeline to
track and visualize important events for specific datums.
This is done via a new window in which you can select a datum for
tracking, which adds it to the timeline. If this datum implements the
EVLOGGING macros, it can track important events onto this timeline. As
an example, we can log whenever an AI is deciding to make a new path, if
it decides to generate a new decisionmaking plan, it finishes an action,
or it decides to target someone/something.
We can select these events to see more information, and optionally get a
snapshot of important variables at the time this event was logged (like
the blackboard and current plan for AI controllers).
You can also filter out specific events / track info, which is done via
categories. Each event / piece of track info is given a category and if
you disable a category all events / track info in that category is
hidden. This lets you filter out things you might not care about.
<img width="2346" height="1209" alt="image"
src="https://github.com/user-attachments/assets/0763077c-e349-4c7c-b017-23d29e1d089b"
/>
_whoever thinks we didnt need advanced cleanbot logging is a noob_
In the video below I showcase how this works;
https://file.house/7nsOiqdvmSTxlsk3fs-e8g==.mp4
A cleanbot is roaming the halls, I turn on the event logger, click the
"pick target" button and click on the datum I'd like to track (the
cleanbot). This results in the cleanbot now tracking its events. I spawn
some dirt and the cleanbot decides to clean it, and I go through the
events; You can see theres different events being listed, such as when
the cleanbot starts targetting the dirt, when it cleans plan, when it
makes it JPS path and every time it moves over it.
The macros I've currently implemented are as follows:
**EVLOG_TEXT(DATUM, CATEGORY, INFO)**
Only adds text to the event logger window, no world-visuals
EVLOG_LOCATION(DATUM, CATEGORY, INFO, TURF)
Adds text to the event logger and adds an image to where that turf is.
EVLOG_TURFS(DATUM, CATEGORY, INFO, TURFS)
Adds text to the event logger and adds an image to each turf in the
TURFS list
EVLOG_LINES(DATUM, CATEGORY, INFO, TURF_A, TURF_B)
Adds text to the event logger and adds a line from turf_a to turf_B
EVLOG_PATH(DATUM, CATEGORY, INFO, TURFS)
Adds text to the event logger and visualizes a path from A to B (same
way as the pathfinding debugger, of which I moved the visualization
before to SSPathfinder)
In terms of performance, the logger is a singleton, and events are ONLY
logged if
1. The logger is running
2. The datum has the DF_EVLOGGING flag.
This means most of the time, logging an event is a single var lookup
(Since the runner is off by default). The DF_EVLOGGING flag is off by
default as well and has to be enabled by the event logger, or set
temporarily by a dev in code.
This system can easily be extended with more event types / visualization
types as well. (I'm thinking of datumizing the ones I have now)
The TGUI is still a bit of a mess, I would love some pointers because
I'm not really good at react so I just kind of hit it with a hammer
until it did what I wanted 😎
Also, all of this is based on VisLogging from Unreal Engine, so it will
have some likeness https://unreal-garden.com/tutorials/visual-logger/
## Why It's Good For The Game
This system allows us to debug more complex systems (like basic AI) in
an understandable and clear way. While the implementation cases are not
super common right now, extending this system could make debugging these
systems much more comprehensible, and hopefully lets more developers
help us with improving these systems. (plus, we LOVE timelines)
## Changelog
🆑 CabinetOnFire
refactor: Implements "Event Logging" an improved way for programmers to
debug specific datums.
/🆑
---------
Co-authored-by: Lucy <lucy@absolucy.moe>
## About The Pull Request
Goliaths no longer instantly stun the mobs they hit with their tentacle
for full 10 seconds, instead leashing them to the spot they were grabbed
at or dragging them towards themselves. The ranged tetris-piece attack
has been changed to a full cross which tethers the target preventing
them from moving away more than 1 tile, while the line and the ring
attacks tether the mob directly to the goliath itself and drag them in.
https://github.com/user-attachments/assets/0b566a12-17ae-4a8a-97ac-5734c89c83d4
The tentacles can be manually removed after standing for 6 seconds, or
by hitting them for 75 damage total (3 PKC swings, or 5 bayonet hits).
They also naturally retract after 10/15 (cross/line and ring) seconds
like before.
Goliaths themselves have received a massive speed boost, going from 3
second movement delay to 1.2 seconds (150% buff) and no longer can
friendly fire with their tentacles (and ancient goliaths have their
trophy drop guaranteed)
Brimdemons, lobstrocities, watchers and legions also received some
changes:
- Brimdemons no longer can wound with their beams (they were basically
guaranteed to land a nasty burn wound with the initial blast), but are
now affected by laser armor and their beam DOT (not the initial 25 burn
damage upon firing) has been increased from 5 to 7. Their blasts can now
be interrupted by hitting them from their side or from their back
- Lobstrocities have had their retreat distance decreased from 8 to 6,
making them much less likely to randomly lose aggro on the miner (their
aggro range is 9 tiles, meaning that even a single tile of movement on
miner's part will result in lobsters losing interest in them when on CD)
- Watchers now try to stick to 3-5 (previously 4-6) tiles of distance
between themselves and their target, and legions try to maintain 4-6
tiles of distance as opposed to running away completely. This should
make fighting both of them more interesting and engaging, and make
dealing with them during vents less cancerous.
Sprites for the tentacle item and mob overlay are by thgvr from
https://github.com/shiptest-ss13/Shiptest/pull/2432
## Why It's Good For The Game
Goliaths are extremely outdated in their attack design, 10 second
hardstuns are basically a guaranteed death if there are any other mobs
around and aren't very engaging to fight on their own as they are very
easy to evade with 3 second movement delays.
Change to lobstrocities should just make their AI less jank, and
watcher/legion range changes should make them less slippery when
fighting with PKC or zero range PKA, or during vent defense.
## Changelog
🆑 SmArtKar, thgvr
balance: Goliaths no longer hardstun, but instead bind and drag their
targets in with their tentacles. They are, however, much faster now.
balance: Brimdemon beams can no longer wound, but deal a bit more DOT
damage. Their beams can also be interrupted by hitting them from the
side or back in melee.
balance: Watchers and legions now try to maintain a few tiles of
distance from their targets instead of retreating.
fix: Lobstrocity AI should no longer sometimes flee out of their aggro
range when retreating.
/🆑
## About The Pull Request
Hola, I am Kuricityy, and this is my PR. In this PR, I simply made flesh
spiders 10% slower than your average spessmen, as well as making their
regenerative timer a second shorter (meaning they start to regenerate
health after 3 seconds rather than 4), in compensation for losing their
super speed. I'm open to better suggestions, but this is how I want to
push flesh spiders into a more spider-like antag, meaning nesting rather
than just running around the halls griefing.
## Why It's Good For The Game
As someone who has been both on the receiving end and the giving end,
flesh spiders as they stand are completely boring. Anybody who uses this
ability simply just spams the eggs and stealths around the entire round,
essentially creating an endless horde of speedy spiders who are nothing
but respawning grief antags. I think this is a terrible vision for the
antag, considering how easily they grow in numbers, as well as how much
damage they do and how quick they are. My ultimate goal, is to push
flesh spiders into being more like normal spiders, nesting instead of
running around the halls being incredibly hard to kill. This also
encourages more active play on the changeling side.
## Changelog
🆑
balance: Flesh spiders are now slightly slower than your average
spessmen. (10%)
balance: Flesh spiders now regenerate after 3 seconds of not taking
damage, compared to 4.
/🆑
## About The Pull Request
Raptors are now immune to ice slipping and sliding. Mobs that are
buckled to something no longer can get stunned by slips (required for
former to work, makes no sense to be a thing)
Mining MOD has had its ore digging speed multiplier increased from 1.5
to 2 as it didn't clear the tick threshold previously which was not
intended.
Mining bombs fired in sphere mode have been replaced my a barrage of
homing (useful against lobstrocities) micro missiles, which deal
increased damage to lavaland fauna and dig rocks (just like mining bombs
did before)
https://github.com/user-attachments/assets/13b2f01f-a98b-4c24-b8be-2d04ae0ef941
Neat impact particles included
## Why It's Good For The Game
Raptors aren't very strong on icebox and lack any ice immunity options
that miners normally get (snow shoes, ice miner loot), letting riders be
immune to ice slippage is a nice boost to them.
Mining MOD bombs are very clunky to use and nigh useless most of the
time, as even with my previous buffs its still easier to simply pull out
a PKA due to both how hard it is to land hits, and how little damage
they deal. While previously they could be used to clear out large areas,
that role has been delegated to the mining MOD itself in my rework,
leaving them without a clear purpose. New missiles should provide an
offensive alternative for mining MOD users and let them defend
themselves while exploring or digging in the sphere form.
## Changelog
🆑
add: Mining MOD sphere mode now fires a barrage of micromissiles instead
of a singular delayed explosive
balance: Raptor are now immune to ice slippage
balance: Mining MOD has had its ore digging speed increased
fix: Buckled mobs can no longer "slip" (get stunned) on wet/icy tiles.
/🆑
## About The Pull Request
Introduces a new targeting priority strategy system for basicmob AIs,
which allows controllers to decide which mob to prioritize over others.
Mining mobs will now focus on the NODE drone unless hit, and will pursue
the attacker for 25 seconds before dropping the aggro. They also get
increased aggro if you've attacked other mobs in their view recently,
and after a few hits will have enough aggro to swap to you from the NODE
drone. Ashwalkers get a reduction in aggro because they live there.
Legion broods and brimdemons will immediately target anyone who attacks
their allies rather than waiting for multiple hits. Broods also now
inherit their parent's targets and retaliation/reinforcements lists.
https://github.com/user-attachments/assets/6baaba8a-8b3c-4b2f-ae8b-842f0b1f2b6d
#### This is a bounty for ArcaneMusic
## Why It's Good For The Game
Makes vent defense mob behavior more predictable and easier for players
to manipulate, allowing them to draw aggro from the NODE drone should
make vents more engaging and less of an AI rng fest
## Changelog
🆑
add: Mining mobs now use priority when choosing their target,
prioritizing NODE drones over miners who haven't attacked them or their
allies
/🆑
## About The Pull Request
This is a two-parter but they are part of the same journey; I was fixing
#95715 and noticed the commands didnt work, so I also fixed that #94689
The issue for #95715 was that pets did not have their damage set at all,
so they could not attack on combat mode. Dogs specifically circumvented
this by setting and reverting the damage during behavior, which is not
what ai behavior should do. Now those values are the same. I set it up
as 5 lower and upper by default on pets, but if I need to tweak that let
me know.
For #94689 the issue is that if pointed_at's loc is a turf, it would
override pointed_at to be the turf, so that it could pass the view()
check below. But by setting pointed_at everything after now uses that
for the logic, including the signals. Which means the logic often just
thought you were pointing at the floor. I've fixed this by assigning the
loc to a temp var and not changing pointed_at
## Why It's Good For The Game
Dog-mauling is back, this is a good thing.
## Changelog
🆑 dresseronfire
fix: You can now sic pets onto targets again
fix: Pointing at things no longer sometimes points at the wrong thing
/🆑
## About The Pull Request
Basic Mobs used to always trigger cooldown on clicks. This resulted in
missed attacks causing you to have a delay before you could attack
again, this makes it really punishing to play as a basic mob.
To resolve this I did a mini-refactor on basic mob's attack chain to
allow for the return values to determine whether we go on cooldown or
not. Preventing attacks that did nothing (due to not passing checks, or
simply not having any behavior) from causing cooldown.
This fixes#95605
## Why It's Good For The Game
being able to perform melee with the same rules as /human is only fair
## Changelog
🆑 DresserOnFire
fix: Fixes a bug where player-controlled basic mobs would get a cooldown
when their attacks miss
refactor: basic mob attack chain can now decided whether an attack
resulted in a cooldown or not.
/🆑
## About The Pull Request
this PR refactors beepskies and ED209s into basic mobs. ive also added a
few features for the ed209 because i cant keep my hands to myself:
ED bots can now wear hats! a few hats give them some new unique
dialogue. Putting a cowboy's hat on an ED will have it acting like a
town Sherrif
EDs are now rideable when emagged. theyll still be shooting people while
ridden. youll also have the ability to charge at people full throttle
running them over
ive also added a new Nukie variant, purchasable from the uplink. These
versions come fitted with an LMG and will patrol the station and shoot
all walks of life. If emagged, theyll blow up people with (weaker)
rockets (im still working on balancing this). they are rideable but i
highly suggest against it; youll be caught in the crossfire. (i
understand if ud prefer i atomize this feature)
## Why It's Good For The Game
gives some personality to EDs, as well as updating all these bots to the
cool new ai system
## Changelog
🆑
refactor: beepskies, and ed209s have been refactored. please report any
bugs
add: ed209s can now wear hats! some hats give them new dialogue
add: emagged ed209s are now rideable!
add: added evil versions of the ed209s to the syndie uplink
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Refactor the majority of the current gasmix mole change use cases into a
proc called adjust_gas which simply adds the designated mole count of
the species into the gas mix while also handling asserting the gas and
garbage_collect()
I also added adjust_multiple_gases and convert_gas() for modifying
multiple gases and within a gasmix
## Why It's Good For The Game
Lemon wanted this to be done as part of the air group refactor
## Changelog
🆑
refactor: refactored majority of gas_mix mole change into adjust_gas()
proc
/🆑
## About The Pull Request
Ponies can no longer be one-click dismounted like typical mounts
Instead when you shove a pony (or its rider), there is a chance based on
multiple factors (is already staggered, has stamina damage, is wounded)
that you manage to remove the rider
Successfully disarming a rider this way will knock them down for a very
short duration
This save behavior was applied to the Leaper, though as Leapers cannot
be staggered and are significantly larger, the chance of a successful
dismount is far lower
## Why It's Good For The Game
Being able to be spam clicked to lose your mount is kind of unfortunate
However, being completely immune to dismount is also not ideal
So as a middle ground, a little stability minigame makes sense to me -
it gives both sides agency in avoiding or pursuing a dismount. The rider
can keep a distance to recover stability while the attackers can use
weapons (even batons or disablers) to make it easier to remove the
rider.
## Changelog
🆑 Melbert
balance: You can no longer dismount riders from ponies with a single
click. Instead, there is a chance to dismount the rider on shoving the
pony OR the rider, based on multiple factors (such as stamina + physical
damage and stagger)
balance: The Leaper mount also has this "disarm to dismount" mechanic,
though it is significantly more difficult as they are much sturdier
beasts
/🆑
## About The Pull Request

This PR adds 16 more wands to the game, try and guess what they all do!
I finished coding this PR 6 weeks ago but it turns out I had to sprite
16 wands after that before I could PR it.
<details>
**Wand of Animation**- It's like the Staff of Animation but doesn't
recharge itself, obviously.
**Rod of Babel**- Grants victims a new random spoken language and then
removes all of their other languages.
**Shearing Rod**- It renders you bald. If you are covering your hair
with a helmet, it pops the helmet off (possibly its most useful effect).
If you're already bald, your bald head will shine brightly and blind
nearby people.
**Party Wand**- Fires projectiles that are incredibly alcoholic. Two of
them will destroy the livers of most targets and kill them (although it
gives them a good leadup time to get that fixed before dying of alcohol
toxicity), so try one at a time if you're just there to have fun.
**Wand of Ice**- Freezes people temporarily, making them really cold and
unable to move. It also spawns slippery ice on impacted tiles.
**Wand of Chaos**- Forces targets to hallucinate from a curated list of
hallucinations. It looks and is named sort of like the Staff of Chaos
just in the hopes that people are more likely to believe that the wizard
did actually just instantly kill them, set them on fire, or turn them
into a demon. Even if it doesn't, a lot of these cause you to stop
moving or be temporarily knocked down or in some other way disoriented.
**Lifting Rod**- Removes gravity from a target for two minutes, which
funcionally immobilises them if they're in the middle of a room or you
can use on yourself to cross big pits.
**Rod of Compassion**- Heals you and your target a little bit, and also
gives you both Pacifism for 30 seconds. This gives you time to talk out
your problems, or deliver a monologue.
**Wand of Snacking**- Turns things into pizza. If fired at a mob, will
put some pizza in their hands and force them to start eating it.
Unlikely to be deadly, but it might spawn mouldy pizza, a food they are
allergic to, ethereal battery acid pizza, or pizza which dismembers you.
**Pestilent Wand**- Confers a transmissible plague which causes you to
periodically cough out vermin of various degrees of danger and hostility
depending on disease level, treated via traditional methods of exorcism.
**Wand of Pratfalls**- Slips and pies the target as well as creating
small amounts of lube foam.
**Wand of Rebellion**- Removes a limb from the target, then animates
that limb. Stop hitting yourself.
**Rod of Repulsion**- Throws things you shoot away from you.
**Switching Rod**- Swap places with the hit atom, as with the spell
Swap.
**Restraining Rod**- Summons a tentacle from the ground to grasp the
target, immobilising them for 20 seconds or until someone helps them.
**Wand of Zapping**- Briefly locks up the target's nerves with lightning
(it's secretly a classic ss13 taser).
</details>
They are available to wizards via the new option "Wand Assortment
(Bargain Bin)" which only costs a single spellbook point, but gives you
an assortment of 6 wands picked at random from this list of new wands
and some of the existing ones.
If you buy two or more sets of wands (and are wearing the wand belt from
the first one) then instead of spawning wands in a belt it will spawn
them in a bandolier, which fits into your backpack or can be worn on a
suit slot.
Wand bandoliers in a suit slot will automatically replace an empty wand
you try to fire with a wand that still has ammo in it.
Several of these wands' projectiles are now also possibilities from
firing the Staff of Chaos (making it more chaotic) and some of them also
have their own Magicarp types.
Also I made it so that if you animate an animating weapon then it
focuses on animating more things instead of shooting its animating bolts
at mobs that are already animate. I could do this for more specialty
wands too at some point (door wand projectiles don't exactly hurt
anyone) but if I do that it'll probably be in a different PR.
## Why It's Good For The Game
A good number of these wands come from a downstream antagonist that's
essentially a lower-threat wizard. I thought these were all fun or funny
effects to have in the game upstream but also not ones that people would
typically want to buy as a dedicated spell (or alternately, that would
be pretty good as a dedicated spell but quite boring), so instead
they're limited use spells that you get in bulk for cheap.
I didn't think we'd really want to bulk up the spellbook with several
different kinds of themed bundle though (and frankly, they don't share
themes), so it's a blind box instead.
The bandolier was added to compensate people for buying random wands
multiple times, so they can have more of a wand-based playstyle.
Now you can spend all of your points on 60 wands (maybe more if you take
the gambling trait...) and be a sort of wizard cowboy, or split them
among your apprentices, or just leave them everywhere like candy and see
whether the crew fuck things up for themselves with their new power I
guess.
## Changelog
🆑
add: Adds 16 more wizard wands to the game, which wizards can buy
cheaply but randomly, or are available via Summon Magic.
add: If a wizard buys more than one set of wands they will receive a
"Wand Bandolier" holster which fits in the backpack or, if worn in the
suit slot, will automatically exchange an expended wand for a full one.
balance: Staffs (and wands) of animation that are animated will try to
animate other objects instead of firing at living mobs, which are
already animated.
balance: Animating a wand of nothing will turn it into a wand of
animation (and animate it).
balance: The staff of chaos can now do more things.
balance: Magicarp now additionally come in Babbling, Frigid, Quantum,
and Weightless varieties. Collect them all!
/🆑
## About The Pull Request
<img width="245" height="468" alt="image"
src="https://github.com/user-attachments/assets/e7924766-cf9a-4ca0-b3fb-a668d3d2cec0"
/>
## Why It's Good For The Game
shouldve been removed with the first pr
## Changelog
Removes everything for the caves and snowdin away missions except for
the original caves area because i used that in heretic, whoops.
not player facing there should be no CL
## About The Pull Request
Title. I saw someone shaving Ian and it annoyed me it was using a welder
sound.
## Why It's Good For The Game
Yo ass ain' welding.
## Changelog
🆑
sound: Shaving Ian will no longer sound like you're using a Welder.
/🆑
## About The Pull Request
Bot huds would sometimes dissappear when they're pathing to anything
that arent beacons
## Why It's Good For The Game
Bot huds would sometimes dissappear when they're pathing to anything
that arent beacons
## Changelog
🆑
fix: fixes bot huds randomly dissappearing
/🆑
## About The Pull Request
Changes Guardian HUD to use action buttons instead of HUD elements,
which means their buttons
1. Can now be moved
2. Can be binded
Other Holoparasite HUD changes:
1- Moves some special buttons like explosive's explosion ability to be
where the "Toggle Mode" button typically is, to be consistent with some
other modes (assassin, gas) that also works like their unique ability.
2- Gives non-dextrous holoparasites the ability to move floors, since
they float.
3- Fixes dextrous holoparasites having 2 health HUDs
4- Moves "Check Guardian Type" verb to a new action button meant to
mimick the Antag UI Info button.
Gives Soulscythes a Combat mode indicator
Locks Revenant's combat mode indicator (cause it does nothing)
Adds another hoverable HUD element, basic mobs can now hover over their
healthdoll to see their Health %
<img width="85" height="123" alt="image"
src="https://github.com/user-attachments/assets/ad660ba4-296c-4699-9ec4-03a6e7b97880"
/>
<img width="95" height="101" alt="image"
src="https://github.com/user-attachments/assets/12d4d9d3-cf2c-4c52-81aa-17ce538b9d48"
/>
Adds a Unit Test to ensure all basic mobs have a HUD that shows some
form of health & combat mode (unless unnecessary like Revenants), to not
lose any information from basic mob conversion now that they lose the
stat panel.
## Why It's Good For The Game
This is yet another supplement of
https://github.com/tgstation/tgstation/pull/95383 - Removing stat panel
entries for all basic mobs is a great move towards lessening the
reliance of mobs on the stat panel.
This is also just good QoL for Holoparasites, especially since their
stat panel had 2 entries for "Master HP" and your "Own" HP, despite
Holoparasites not even having their own HP at all.
## Changelog
🆑
qol: Holoparasites' abilities are now action buttons, so you can rebind
or move them.
qol: Holoparasites now have floor change buttons.
fix: Holoparasites and Soulscythes now have a combat mode indicator.
fix: Dextrous holoparasites now have their inventory slot again while
non-dextrous had it taken away (not that they could use it).
/🆑
## About The Pull Request
``/datum/action/proc/Trigger(mob/clicker, trigger_flags)`` has a lot of
children, many of which use mixed ``. = ..()`` or no parent calls at
all.
https://github.com/tgstation/tgstation/blob/d65ee47f6ebd0384d463a1f2a044c321ff2d912f/code/datums/actions/action.dm#L163-L170
This PR attempts to standardize all the children procs to call parent in
a uniform way, or cements that they *shouldnt* call parent for whatever
reason.
## Why It's Good For The Game
Base proc calls are important, yanno?
The base proc has the action button signals and availability proc on it,
so its technically possible for children procs of trigger() to have
check_flags enabled, but never blocked (i.e AB_CHECK_CONSCIOUS,
AB_CHECK_HANDS_BLOCKED).
Some children procs have IsAvailable on them, but its possible they can
be skipped over if a coder is not paying attention. This reduces that
risk.
## About The Pull Request
- Merged a lot of procs into procs `attempt_picture()` and
`interact_with_atom()` reducing proc overhead
- Taking pictures will now always use the cameras internal
`picture_size_x` & `picture_size_y`. It no longer accepts variable sizes
as parameters
- All camera operations are asynchronous and respects checks on if the
target can be captured on camera or not.
- A bunch of other code rearrangement that makes readability easier
- Fixes the following camera bugs. They fall under the same category
- Fixes#95286
- Fixes#95256
## Changelog
🆑
fix: camera devices work again, camera flash turns on in most instances
refactor: camera code has been refactored. Report bugs on github
/🆑
---------
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
## About The Pull Request
Adds a helper `SStts.random_tts_voice(gender)` which attempts to pick an
appropriate voice for the passed gender
## Why It's Good For The Game
Randomization into a completely wrong voice kinda ruins it
## Changelog
🆑 Melbert
qol: TTS voice is more appropriately randomized to gender
qol: Getting randomized through means such as mulligan toxin randomizes
TTS voices
/🆑
---------
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
## About The Pull Request
Reverts space movement being affected by inertia
What is kept:
- Items have a varying force on your drift speed, ie heavier items will
move you faster through space, and smaller items, slower.
- Jetpacks can have varying force of impulse - the effect is applied
directly to the mob's `inertia_move_multiplier`
- Tethers are unreverted - they still stop you from drifting too far
from the tether point, however you can no longer 'swing' with them.
What is removed:
- Multiple impulses in the same angle/direction no longer speeds you up.
Only the fastest impulse in 1 direction is accounted for.
- An impulse in a different angle/direction will completely override any
existing impulses, even if they are faster.
- Jetpack stabilizers are once again perfectly capable of immediately
stopping any active impulses.
TL;DR
If you point yourself in a direction you will now go that direction
## Why It's Good For The Game
The concept was fun and had potential but the fight between impulses vs
tiles was very, very clunky and janky.
Multiple fixes were attempted to reduce the jank but it ultimately
nograv still acts very cumbersome and jetpacks are still very
unappealing to use.
Smartkar gave the go-ahead to revert this a while back so, o7.
## Changelog
🆑 Melbert
del: Zero-gravity drifting is no longer affected by inertia, ie it has
been reverted to what it once was.
/🆑
## About The Pull Request
This is a port/revival of Kapu's
https://github.com/DaedalusDock/daedalusdock/pull/883
By god, please TM this for a while, as HUDs are rather volatile and I
might've missed something (also the original PR had harddel issues, so
we should probably be on the lookout for those)
Instead of being stored in a metric ton of separate variables, all HUD
elements are now kept in a ``key -> element`` assoc list, and separate
category lists have been turned into a single ``group_key -> list of
elements`` assoc list for easier management.
This massively simplifies HUD creation and management, and allows us to
sanely dynamically modify HUDs without having to keep track of our
elements ourselves (harddel fuel)
I've also noticed that plasma vessels had... interesting, to say the
least, way of managing their HUD and in humans were unable to display
it, which I've changed (the element itself is displayed below stamina in
non-aliens, as latter occupies the spot where you'd normally see it)
Also fixes a bunch of minor unlikely to occur issues with HUD not
updating when it should've sometimes.
## Why It's Good For The Game
The two most important results of this is that A) we can fix the issue
with items larger than 32x32 not displaying properly in inventories (in
a separate PR) and B) this paves the way for datumized inventory slots,
although that is a separate nightmare
Some of this code is also actually over a decade old, and is an absolute
nightmare to work with.
## Changelog
🆑
qol: Non-aliens with an implanted plasma vessel now see their plasma
level in their HUD instead of just the stat panel
refactor: Refactored the entirety of HUD management code, report if
anything breaks!
/🆑
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
## About The Pull Request
Adds `/datum/mood_event/splattered_with_blood` to two places you are
explicitly splattered with blood
## Why It's Good For The Game
Consistency
## Changelog
🆑 Melbert
qol: More places causes the "splattered with blood" mood event
/🆑
## About The Pull Request
Increases blue raptors' HP to 300, and makes purple raptors
automatically initiate flight if you are about to fall into a chasm
while wearing one on your back.
Also fixes 2 exploits involving chasms which would render you immune to
that particular chasm.
## Why It's Good For The Game
I've had some feedback on raptors, and more specifically how blue and
purples are rather underwhelming, former only being a single feature
from old raptors and latter not providing much of a benefit to
non-settlers. This should address both of those, making blues a bit
tankier and purples being able to save you from an instant death.
## Changelog
🆑
balance: Blue raptors had their HP increased from 220 to 300
balance: Purple raptors now automatically start flying if the owner is
about to fall into a chasm.
fix: Fixed 2 exploits which would render you immune to falling down a
specific chasm.
/🆑
## About The Pull Request
- The `prosthetic replacement` surgical operation has been reverted to
be closer to how it used to work: The operation is done targeting the
limb that's missing
The change was made out of necessity, as surgical state was tied to
limbs - you had to operate on the chest to re-attach limbs because there
was no limb to operate on.
To circumvent that, I have done the unthinkable of adding stumps when
you are dismembered.
- Missing limbs are now represented as an invisible, un-removable,
un-interactable limb.
Making this change was not as difficult as originally anticipated, and
(at least surface level) seems to have broken very little.
Surprisingly little had to change to make this work.
Direct accesses to `mob.bodyparts` was changed to `mob.get_bodyparts()`
with an optional `include_stumps` argument.
Similarly, `get_bodypart()` had an optional `include_stumps` added.
This means we ultimately barely needed to change anything, and in fact,
some loops/checks were able to be streamlined.
## Why It's Good For The Game
- As mentioned, this change was out of necessity and was easily the
least intuitive part of the broader changes. Reverting it back to how it
used to work should make it far easier for people to pick up on, and
means we can cut out a bunch of bespoke instruction sets that I had to
include.
- The addition of stumps also adds a ton of future potential - code wise
it allows for stuff like better damage tracking (we can transfer damage
between limb <-> stump rather than limb <-> chest), and feature we can
do "fun" stuff like have stumps bleed on dismemberment that you can
bandage.
## Changelog
🆑 Melbert
del: "Add prosthetic limb" surgical operation has been reverted to be a
bit closer to how it used to work - you operate on the missing limb /
limb stump, rather than on the chest.
refactor: Missing limbs are now represented as limb stumps. In practice
this should change nothing (for now), as no features were rewritten to
make use of these besides surgery. Please report any oddities with
missing limbs, however.
/🆑
## About The Pull Request
This adds screentips for scanning raptors - both with the PDA RaptorDex
app, and the standalone handheld version.
Also fixed a bug where the "scanned" balloon alert didn't properly
appear for the, bc it'd try to display the balloon alert to the
raptor...
<img width="329" height="419" alt="2026-03-15 (1773602977)"
src="https://github.com/user-attachments/assets/8a16f5c4-f65b-4931-ac0b-7c165f4781de"
/>
<img width="285" height="349" alt="2026-03-15 (1773603014)"
src="https://github.com/user-attachments/assets/827e2e1a-5243-4763-8532-b4fe2246c745"
/>
## Why It's Good For The Game
I initially didn't realize that you had to _right click_ to scan raptors
with the PDA app, so like, I decided to add screentips to make that
clearer.
also bugfix good.
## Changelog
🆑
qol: Added screentips for scanning raptors with the RaptorDex PDA app
and standalone handheld RaptorDex.
fix: Fixed the handheld RaptorDex not showing the "scanned" balloon
alert when scanning a raptor.
/🆑
## About The Pull Request
Refactors Revenant abilities into a component
Revenant abilities now indicate if they are locked
<img width="419" height="185" alt="image"
src="https://github.com/user-attachments/assets/7223f025-d99c-4c09-883b-b53f29947c36"
/>
<img width="337" height="97" alt="image"
src="https://github.com/user-attachments/assets/321bf64f-df57-4da5-9951-a2795637cea3"
/>
They also more accurately update if they are un/usable (ie, if you enter
a wall, they turn red.)
Also, Revenants are no longer affected by gravity. They already weren't
affected by gravity (as far as I could tell) this just prevents them
from getting the no-grav alert.
## Why It's Good For The Game
- Not all future Revenant abilities need to be an AOE spell
- It makes them easier to parse at a glance (what powers you have /
don't have / can use)
## Changelog
🆑 Melbert
qol: Revenant abilities indicate if they are locked, and better indicate
if they are currently usable
qol: Revenants are no longer alerted that they have no gravity (they
always have gravity)
refactor: Refactored Revenant abilities, report any oddities with them.
/🆑
## About The Pull Request
This lets people ride and tame spiders by feeding them mouse, lizard,
moth, fly, and worm meat. You can only do this when a spider is a
spiderling or young; once it's fully grown, it's no longer possible.
This also refactors some tameable code to use `TRAIT_TAMED` instead of
setting variables on mobs individually.
## Why It's Good For The Game
It looks cool.
<img width="1920" height="1080" alt="dreamseeker_97k7fgzdhv"
src="https://github.com/user-attachments/assets/87d53102-468d-4dd7-b0a7-004f9a98df17"
/>
## Changelog
🆑
add: Spiders can now be tamed and ridden. They eat mouse, lizard, moth,
fly, and worm meat and can only be tamed when they are spiderlings or
young.
code: Refactored tameable code to use TRAIT_TAMED instead of setting
individual variables on each mob.
/🆑
## About The Pull Request
Refactors random reagent spawning to be divided into bitflags. This mean
you can now decide from which random sources a reagent is allowed to
spawn. Rejoice, now maintenance pills can have fun reagents without
having to deal with the balance implications of a botanist producing
1000u of it!
**SO NOW MAINTPILLS CAN HAVE CYBORG NANITES AND XENOMORPH MICROBES!!
REJOICE, MY ABOMINATIONS!!!**
Code stuff:
CAN_SYNTH is now only for copying reagents, which is what it was
originally intended for. A new randomized_spawns var has been added to
reagents that decided where it can spawn.
I've also changed some unsanitary reagent spawners to obey the spawn
flags. This was the beebox kit (which could spawn literally every
reagent in the game, including adminordrazine) and traitor bees, which
now can't spawn the two spider toxins and gatfruit toxin (why do we even
have gatfruit toxin?? shit does nothing).
Balance overview:
- Beeboxes no longer spawn everything
- Traitor bees no longer spawn venom, viper venom and gatfruit toxin
- Maintenance pills now spawn cyborg nanites and xenomorph microbes
When I say maintpills, I mean REAL maintpills. The ones of which only a
few spawn per round in maintenance, and not the fake ones that feature
creepers added to cargo, blackmarket and that got mapped in
## Why It's Good For The Game
We're limited to which reagents we can spawn randomly because sources
like strange seeds, geysers and fake maintpills are infinitely
reproducible, and can be used to get an infinite amount of every random
spawnable reagent in every round (to be fair this is quite labor
intensive, but never underestimate autism).
Only about 3-6 maintenance pills spawn per round and there's about 700
spawnable reagents. There's simply no way to force the odds to get the
reagent you want. I think the crew can have a little maintxenomicrobes
and a little maintpill borgnanites
As to why these two specifically:
borgnanites are already only randomly obtainable, are cured easily and
the effects of it are just one more cyborg player. It's a fun story, and
not particularly disruptive to the round
Xenomicrobes are admin only, so I would not be lessening any other
features. Otherwise it's pretty much gonna cause an incident in-game
when this happens, but who cares!!!
I can make maintpills secretely reroll if the reagents are extracted
instead of eaten to keep these always contained to the person eating
them, but our playerbase so prefers eating over grinding that I think
it's fine
I have not included inverse reagents, blob spores etc because I respect
them as their own features. I would however like to add some new, wacky
maintpill reagents that can lead to some fun stories.
## Changelog
🆑
fix: Fixes beebox and traitor bees not obeying the reagent blacklist
balance: Maintenance pills (the achievement variety that only spawns in
maint) can now generate with xenomorph microbes and cyborg nanites
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Revenants, even while invisible, can be seen in the reflection of
mirrors
<img width="231" height="254" alt="image"
src="https://github.com/user-attachments/assets/135341b8-192c-4f9b-b9c3-0da2c96c6fac"
/>
They have an ethereal, ghostly effect applied to their reflection while
invisible (it's an animation so you can't see it in the picture), this
effect is removed if they become visible. It also doesn't apply when
reflecting in a magic mirror.
Additionally, "Defile" will now break mirrors, though not magic mirrors.
Also, Revenants no longer elevate over tables. They're ghosts after all.
## Why It's Good For The Game
It's a thematically appropriate way for a Revenant to reveal themselves
to the crew without, well, outright revealing themselves.
Also there's a hypothetical world where Medbay puts mirrors everywhere
to catch a Revenant.
## Changelog
🆑 Melbert
add: Revenants are always visible in mirror reflections, even while
invisible.
add: Revenant "Defile" now shatters mirrors.
qol: Revenants no longer elevate over tables.
/🆑