This PR refactors the Read Mind power to make it much more interactive
with differing levels of Psi-sensitivity. I also fixed issues with
improper sanitization of its inputs by just gently reworking it to use
the modern tgui_input_text(). It no longer has a hardcoded check for the
psi-receiver, since that check has long since been deprecated in favor
of the more modular check_psi_sensitivity().
I needed Hyperbolic Tangent for what I was doing here, so I just added
procs for all the Hyperbolic functions. They exist. Have fun.
This PR adds a feature requested of me by @Fyniiy , adding optional
Filters to the Narrate panel that allow Storytellers to narrate only to
people that meet a set condition. The conditions themselves were
specifically requested to be "Psi Narrates" and "Synth Narrates", with
optional variations on Synth narrates that include people with cranial
implants. While I was touching these files, I've also fixed the improper
message sanitization bug with admin messages in general.
<img width="926" height="536" alt="image"
src="https://github.com/user-attachments/assets/08dcfd2a-5399-48b0-a13d-2bfd3a2c88f0"
/>
Here's a breakdown of the filter options.
1. **Skrell-like Psi-sensitives**: Anyone with a Psi-sensitivity score
of "At least 1". This will include Skrell, anyone with a Psi-receiver,
and people with the High Psi-sensitivity trait. It will exclude people
who are blocked from receiving telepathy for any reason, such as having
a mindshield, mindblanker, or having the psi-suppression power active.
Skrell with the Low Psi-sensitivity trait are counted as "Human-like
Psi-sensitives", and so won't be caught by this filter.
2. **Human-like Psi-sensitives**: Anyone who isn't blocked from
receiving telepathy, and also has a Psi-sensitivity score of "At least
0". This will basically catch "Most people who aren't a Vaurca,
Synthetic, or Diona". It will ignore Humanoids with the Low
Psi-sensitivity trait.
3. **Silicons**: Basically all of the possible robots/IPCs.
4. **Silicons + Implants**: It's fairly common practice during Hivebot
related events for Storytellers to also include characters with brain
implants. This filter automates that by including said brain implant
owners in the "Are you a synthetic?" check.
5. **Hivenet**: Pretty simple, people with the Vaurca language. This
would be Vaurca, plus anyone with the hivenet implants.
The next step in the Psi Reworks is here, this time adding all of the
remaining sources and applications of Psi-sensitivity and Psi-protection
that were on my To-Do list. Aside from a variety of tweaks and bugfixes
to powers, the most player-facing addition is the new Psi-sensitivity
related traits, which are High Psi-sensitivity, and Low Psi-sensitivity.
These traits modify the character's psi-sensitivity, which messes with
their interactions with psionics in a variety of ways.
All of these new sources and interactions with psionics are handled
entirely through components, which operate on the previously added
COMSIG_PSI signals.
Check the changelog file for more specific details on what all was
fixed. I've fixed quite a lot of bugs and issues with the various psi
powers.
I have actually tested this PR and verified that it works as advertised.
<img width="1902" height="1015" alt="image"
src="https://github.com/user-attachments/assets/e922593c-0595-4b63-bee4-36080d9cb8b4"
/>
This has zero reason to exist in our code base. We have no procs or
variables tied to this. I removed it to make future modifications
cleaner.
---------
Signed-off-by: Cody Brittain <1779662+Generalcamo@users.noreply.github.com>
For a robust crafting system, I need a new materials framework.
For a new materials framework, I need to clean up reagents.
To clean up reagents, I need to pare down foods from reagent holders.
To pare down foods from reagent holders, I need to port edibility
components.
To port edibility components, I need to port processing components.
To port processing components, I need to port tool behaviors.
This is all back-end code, no new features or functionality from this.
This makes the Psionic Awakener actually give the user points to spend
in the psionic power shop. This item is strictly limited to the
crew-psionics, so to make it a bit more interesting it gives 3 points
instead of the standard 2. It did not previously give any points,
essentially meaning the user only had telepathy and nothing interesting.
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>
<img width="1701" height="292" alt="image"
src="https://github.com/user-attachments/assets/db1dbc50-1a6a-4549-b9e5-b838ec62f849"
/>
**This is but one of several PRs as part of Project Anabasis, and is a
necessary building-block for a Traits System and a Skills System**
This PR was essentially prompted by recent lore changes to Skrell that
weren't yet existing in the game, so I'm kicking off this as a PR to
start a series of more meaningful psionic reworks. With a focus on
Components and Signals as a way of dramatically increasing the systems
interactivity of psionics. With this PR, mobs have an effective
"Psi-Sensitivity" that can be checked by psionic effects, and influence
a wide variety of interactions.
Psi-Sensitivity is calculated based on a Signal interaction, whereby
multiple responding sources have a chance to respond to the signal and
influence the end result of the calculation. For now there still remains
a cutout specifically for owners of a Psi-Complexus(Which is just Skrell
and Antag Psions), who have a bonus to the psi-sensitivity check equal
to their PSI-RATING. That being 1 for Skrell, and 2 for antag psions.
But eventually in the future this should be replaced with a standalone
component separate from the concept of "Sending"
The other common sources of sensitivity currently are the Psionic
Receiver implant, MindShield, and Mind Blanker implants. With Psionic
Receivers giving a bonus to psi-sensitivity, and the latter two giving a
penalty to psi-sensitivity. Both MindShields and Mind Blankers are now
unified in how they interact with psionics, both using the same system
of Signals without a hardcoded check for the mindshield.
As an important distinction to make, Psi-Sensitivity is NOT the same
thing as being Psionic. Actually Psionic characters like Skrell have a
big bonus to their sensitivity. It's more a measurement of how receptive
a character is to Receiving (separate from Sending) psionic influences.
You can actually be capable of using psionic abilities, but have a
sensitivity of 0, effectively meaning such a character can "Send but not
Receive" psi influences.
- [x] I have tested this PR and have verified that it works, you're
welcome.
This PR unhardcodes the psionic jumpstarter, allowing it to be utilized
by Skrell to upgrade their psionics to the level of an antagonist. To
make use of this new code, I've added a new Psionic Awakener, which is a
variant of the jumpstarter that sets the user to the level of a Skrell
psion. The awakener is significantly cheaper than a full jumpstarter,
and can be purchased using bluecrystals, which reflects its status as a
harmless item given that none of the Sensitive rank powers are overtly
harmful.
This PR "Gently refactors" organs in preparation for adding in new
variant organsas requested by HumanLore. Additionally, it adds in
several organs that were requested by Human Lore, as described in:
https://docs.google.com/document/d/1SLbll969PyJ_H9J1LP8cmdso9OMozUc8MGOVZkY4HbE/mobilebasic
The new augments include: Auxiliary Heart, Platelet Factories, and
Subdermal Carpace
Additionally, all of the new Galatean Bioaugs have been added to the
antag uplink.
The bulk of this PR consists of replacing a majority of all the organ
"Magic Numbers" with variables which could feasibly be modified by any
new kind of organ object. Additionally-- although it's unused in this
PR, here's also a new optional boolean for hearts to create a "Fake
Pulse", which would be useful in the future for event character shells
to be able to fool a pulse check. Finally, the heart systems are
configured to use Signals so that arbitrarily any component can
introduce their own modifiers to the heart statistics.
This PR was requested by Human Lore:
<img width="434" height="290" alt="image"
src="https://github.com/user-attachments/assets/98236886-1c19-4621-958e-c154ae66f2ad"
/>
Sprites have been made by @NobleRow
Extends and reworks how various extended information text (desc_info,
desc_build, desc_upgrades) are handled to make object interactions and
mechanics A.) much more clearly documented in-game and B.) much easier
to support from the back-end.
Almost certainly a candidate for test merge.
Assembly/Disassembly instructions are noticeably sporadic, largely due
to our current lack of a unified framework. That's a future thing I'd
like to attack so that it can be handled programmatically, but for now I
only targeted the biggest culprits as I came across them.
---------
Signed-off-by: Batrachophreno <Batrochophreno@gmail.com>
This PR adds a pair of new "BioAugs" as loadout options for Galatean
characters, called Mind Blanker. They come in two variants, and both are
available exclusively to Galateans. The basic version of the mind
blanker makes its user immune to mind-affecting psionic powers.
The advanced version of it inflicts lethal biofeedback on any psychic
that attempts to enter the user's mind, while also providing the user
with the same protection as the basic version. The advanced version is
more expensive, and is exclusively available to Galatean Consulars.
This PR was requested by Human Lore for their "Galatean Bioaugments"
list.
<img width="739" height="334" alt="image"
src="https://github.com/user-attachments/assets/8dd0e65c-2834-4949-8a03-8966f22eeca4"
/>
---------
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
Added armor defines
Converted raw strings use to defines
Added UT test to ensure people set the armor var correctly (to a list)
No player facing changes
Turned a ton of unmanaged globals into managed globals.
Refactored some UT output.
Removed some unused things, including vars.
Added a test to ensure people don't keep adding new unmanaged vars.
- 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>
Frag grenades projectiles now apply some agony and eyeblur.
Frag grenades projectiles have damage augmented by 3 points (~10%).
Frag grenades projectiles have an augmented chance of leaving a shrapnel
(+30%).
Frag grenades projectiles have a chance to ricochet up to 2 times.
Some code cleanup and removed some procs that were no longer used
(nothing called them anymore) from the projectile refactor.
Resolved some runtimes for mimic turfs on examine.
All examine headers respect the proc signature.
All examine that do not explicitly need not to, passthrough the arglist
to references examine target procs.
Runtime map now has a bunch of new areas / items with often-tested
stuffs, and some hard-to-put-at-runtime stuffs.
Runtime map jobs now are positioned to make it faster to reach the
aforementioned often-tested stuffs.
Runtime map doesn't generate an overmap anymore by default, which speeds
up the process.
Runtime map now loads in ~11 seconds instead of ~40 seconds as it was
before.
Updated the maploader to be faster in parsing maps.
Bapi is not engaged anymore if we're only measuring the map size, which
speeds up the process.
In fastboot we do not generate the codexes anymore, which speeds up the
process.
In fastboot and if exoplanets and away sites are not enabled, we do not
parse the map templates anymore, which speeds up the process.
Updated the icon smoothing to be faster.
Optimized cargo area code.
Other optimizations.
Refactored the projectile code, mostly in line with TG's now.
Refactored various procs that are used or depends on it.
Projectiles can now ricochet if enabled to.
Damage falloffs with distance.
Homing projectiles can now have accuracy falloff with distance.
Projectiles have a maximum range.
Muzzle flash is configurable per projectile.
Impact effect of the projectile is configurable per projectile.
Accuracy decreases with distance.
Projectiles work with signals and emits them, for easy hooking up from
other parts of the code.
Meatshielding is now less effective .
Impact sound is now configurable per projectile.
High risk.
This allows friends to be designated before casting the psi power mirror
shade, so that you and another psychic psycho don't kill each other on
accident.
This fixes borers being permanently mid-ability after first awakening
their host's psionic powers, and thus unable to do anything else for the
remainder of the round.
I also found an issue with the psi ability mirror shade: somehow the
shades target internal borers, including the hosts. I'd like a more
generic fix for this so that they don't attack any internal borers, but
I'm not well versed in mob code.
Also removed an `add_verb` for `write_ambition` that I should've removed
in my last borer-based PR, as it's done above inside a client check, and
could cause RTEs in some circumstances.
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.
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.
I changed add_antag to add_antag_mind in borer/LateLogin because the
former proc re-created the borer, causing it to drop the src/client
reference. The only notable difference I observe is the antag noise
doesn't play, which could be added manually if needed. Alternative
methods to solve this would be welcome, though. I did have an
alternative method
[here](https://github.com/Aurorastation/Aurora.3/commit/5d4157588baa0998f499aba7678bf8c6551247ca),
but that only "fixed" the ghost spawner, not admin possession. I also
say "fixed" because that method does not give the post ghost-spawn
message.
Fixes#18600
- The implant check was only checking for objs, which the borer implant
is not. The borer was also erroneously being removed from the implants
list when releasing control back to their host.
Fixes#18281
- This had a few pain points. psi was null, so it made the callback for
activating powers fail. Once that was fixed, it caused many RTEs when
trying to draw the HUD/screen for the powers. Refactoring a few
encoding/decoding procs fixed that.
Fixing these issues fixed borer monkeys not being able to speak TCB,
which is strange because I thought I'd seen a borer monkey speaking TCB
during a round where the psychic bug existed.
Fixes#9621
- For this, I switched rejuvenate to revive. This lets them move, and
also does not kill them again due to brain damage. If it proves to be
too strong, it can be tweaked, but I did want to get brain devouring
working for this PR.
- There's also the jumpstart verb, which seems will never be used with
this revive in place (or even before, with the rejuvenate). I suppose it
can be used if they die again after reviving.
- Should a message be added to the revive given during the devouring
process? Jumpstart gives one:
`visible_message(SPAN_WARNING("With a hideous, rattling moan, [src]
shudders back to life!"))`
Fixes#9523
Also fixes borers not being able to infest someone they are being held
by.
Existing Issues not addressed by this PR:
- Infesting a monkey does not give you the monkey's health HUD (because
it doesn't exist?). Assuming and releasing control will show it, though.
- Borer antag overlay icons on Mobs seems inconsistent. potentially due
to testing methods with clientless mobs
- Borers cannot use psychic lance while being held
- Psi aura on first receiving powers. Equip first ability and drop to
fix.
---------
Signed-off-by: AlaunusLux <89751433+AlaunusLux@users.noreply.github.com>
Standard examination was in an examine box. This makes it so fluff
examines are also in a box.
Fixes#18438
---------
Co-authored-by: Cody Brittain <cbrittain10@live.com>
Our SSOverlays system is outdated, and is likely the cause of many of
the issues seen in #18895. It has also been linked to a massive server
performance decrease.
This brings an updated system from Baystation, hopefully with speed
increases.
Should be testmerged, ideally with #18895.
---------
Co-authored-by: Cody Brittain <cbrittain10@live.com>
Unified most of the procs into one definition, so there are no duplicate
around the codebase.
Marked some of the above as overridable if a good enough case can be
made for them (eg. external dependency or unlikely to be used).
* SDQL2 update
* fix that verb
* cl
* fix that
* toworld
* this is pointless
* update info
* siiiiick..
* vv edit update
* fix that
* fix editing vars
* fix VV
* Port the /TG/ globals controller.
* part 1
* part 2
* oops
* part 3
* Hollow Purple
* sadas
* bsbsdb
* muda na agaki ta
* ids 1-15
* 16-31
* 41-75
* bring me back to how things used to be before i lost it all
* the strength of mayhem
* final touches
* cl
* protect some vars
* update sdql2 to use glob
* stuff?
* forgot that is not defined there
* whoops
* observ
* but it never gets better
* a
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>