- Refactored multiple bits of saycode to be less eyeburning code
- Radios now properly report special channel messages (binary, hivemind)
- Animals with no speak list no longer show unfiltered messages to
everyone.
- Fun part:
- Improves handling of headsets for the two ear system.
- The right headset will now be talked into if the left headset
reports that it is unable to send the message on the chosen
channel/mode.
- This means that instead of having to swap headsets around, wearing
a headset on either ear will grant you access to all of it's
channels.
- The left headset will take priority, which really only affects when
it's set to a non-standard frequency.
- Refactors action button backend
- Action buttons are no longer checked on Life(), items are responsible
for adding/removing/updating them.
- Item action buttons are no longer a static action_button_name define,
items define actions_types, which is a list of paths.
- Items can now have multiple action buttons.
- This is handled by new arguments to ui_action_click, the first
parameter is the user, the second is the path of the action datum
that was invoked.
- Refactored how internals function
- You may now directly switch internals without breaking anything.
- The internals icon has been updated to be more consistent.
- Added action buttons for jetpacks
- Added action buttons for oxygen tanks
- Uses-based implants now qdel() themselves when they run out of uses.
This is somewhat a buff to traitor implants, but it's such a minor
change. The actual reasoning is so that the action buttons are properly
removed.
- Fixed a bug with the "Boo" spell which resulted in IsAvailable failing
for certain ghosts.
- You can now shift-click on movable HUD elements to reset them to the
proper position (thank fucking christ)
- AI Fixer cannot be screwdrivered if it's normal, or has no power
- AI Fixer can be screwdrivered if it's broken via an explosion with an
AI inside. This, of course, kills the AI