* Readying up and successfully joining the round now gives you a morale
bonus that lasts for 30 minutes.
AI usage disclosure: The code for this was created in-part using GPT 5.6
Sol.
Psychic damage apparently felt toothless, while also being pretty opaque
to players on when it was effecting your skills.
So this PR makes the effects of psychic damage harsher than the opposing
bonuses from positive morale, while also adding new feedback messages to
better indicate to a player what and when psychic damage penalties are
occuring.
I've also taken the time to fill out missing DMdocs comments for the
morale component.
By popular request, this PR adds a new minor skill to the Everyday
category. The "Resolve" skill is relatively straightforwards, providing
a small permanent morale point bonus. Which by virtue of how the Morale
system works, it also does double-duty as a "Psychic Damage Resistance",
since it allows you to take that many extra points of psychic damage
from psirens before the penalties kick in. At maximum ranks in Resolve,
you can take 3 shots from an Omen before the next shot inflicts the
psi-panic condition. Effectively giving a soak pool of 1 hit per rank
bought in the skill.
<img width="1274" height="527" alt="image"
src="https://github.com/user-attachments/assets/ac3da1fd-8053-42d5-97bb-38633d420921"
/>
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
This PR "gently refactors" surgery doafter timers to be deterministic
and variable. Instead of being simply a random number of seconds between
an upper and lower bounds, surgeries now have a base amount of time they
take to perform (in fractional seconds). This doafter time can then be
modified via signal interactions, such as coming from components.
The Morale component, Surgery skill, Anatomy skill, and Xenobiology
skill all have had signal hooks for surgery speed added, while the
latter two are uniquely conditional signal modifiers. Anatomy only
provides its modifier if the target's species matches your own, while
Xenobiology only applies its modifier if the target is an alien. Morale
can situationally either give a bonus or a penalty depending on your
current amount of morale points.
So to offset that this is now significantly more variable and that 4
different sources of bonus surgical speed exist, I've actually made the
base surgery times always on the upper end of what their previous
doafter duration range was, so surgeries are in general slower if you
aren't taking advantage of specializing in it.
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Having had a chance to observe player behavior around morale during
events, it's become clear to me that the current actual mechanical
effects of morale are too small for anyone to notice, as it seems I
undershot their effects too much. Additionally, I realized from
experiencing it myself that the duration of the Leadership buff in
particular was too short to be able to last throughout a single combat
encounter, as there's a surprising amount of downtime in our event
combats. Plus the travel time eats into that timer.
So this PR does a few things to make Morale a bit more impactful and
noticeable. The first is to increase the pre-existing effects (other
than unarmed combat chances) by 50%. Players will never actually have
100% of the modifiers provided by the nature of these math equations,
and they tend to in-practice only go into fights with between 20% and
50% modifiers. The second part of this PR is adding two more
interactions for it, both for Engineering/Science and Hydroponics
characters. These being crafting speed and plant harvesting efficiency.
That should help make the effects more enticing to have for non-combat
characters.
This PR extends the functionality of the Morale Component to also
provide a UI element. Which is dynamically controlled by the component.
Players can click on it to view their current morale modifiers, and what
percentage effect said modifiers are currently providing. Morale is not
actually new, the mechanic has been on the server for over a month now,
though the players had no way of knowing it was there unless they
closely follow along with the github history.
I have extensively tested this over the course of 6 hours of work, and
have attached video proof of said testing.
https://github.com/user-attachments/assets/c0d3ca3a-0a52-46e1-8e46-9d1e5ef46e4f
### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| icons/mob/screen/morale_ui.dmi |
https://github.com/BeeStation/NSV13/commit/b6b1e2bf2cc60455851317d8e82cca8716d9dac1
| CC-BY-SA-3.0 |
Skills being based on "Hard Requirements" absolutely suck, and I wasn't
happy with the surgery code being essentially hardcoded around them. So
this PR refactors surgery to use soft requirement checks, based on
modifiers to the success rate probability. Surgeries still state what
skills (if any) they require and at what level, but rather than blocking
the surgery, it instead imposes a penalty(or bonus) on the success
chance based on how much the user's surgical skill differs from the
required level. This actually stacks with the penalties for "non ideal
tools", so if you're completely unskilled in surgery and you attempt to
make an incision with a shard of glass, you're going to have an
extremely hard time.
Individual surgeries also can define how much the success rate is
modified by "skill diff", with the more advanced "surgeon exclusive"
surgeries having extremely large potential modifiers.
I have also added a signal based check for modifiers, which the Morale
component now hooks into. This can also allow for other components,
implants, drugs, etc to modify the surgery chances in the future.
I have manually tested this PR and verified by examining debug
breakpoints in VSCode that the system correctly applies its modifiers.
This PR is a revisit to the previously derelict PR #20159 that has been
unfinished for sometime now. More details about it in general can be
found here:
https://github.com/orgs/Aurorastation/projects/2?pane=issue&itemId=53167153
For awhile I've been talking about "Things I've been doing but it would
be really nice to do them with a skills system", or "And here's how I
would put this into the skills system when it's done". The main thing
that was stopping me from building it myself was having poor real life
skills in UI code and in DB code. However, I've gotten permission to
resume this PR, which has already completed the steps I would not have
been able to do myself. The rest of the PR fits well into my skillset as
a dev.
I'm opening this PR as a draft so as to enable my dev environment to
locally track all the previously modified files. I'll take this PR out
of draft and give this a full writeup when I have more work to show for
the PR this weekend.
### TODO
- [x] Rework a decent chunk of the currently existing skills to no
longer require hardcoded inserts into other systems. EG, converting from
classical ss13 methods, to modern /tg/-style ECS coding methods that
work off of component-signal patterns.
- [x] Make sure all of the existing skills have actual game
functionality (I won't PR a 2016 Baystation12 situation where 90% of the
skills are fluff only)
- [x] Add the various skills not yet made but are necessary for
completion sake, EG: Pilot (Spacecraft), Gunnery, Pilot (Walkers).
- [x] Examine each existing job in the game and assess whether it should
have a skill made with it in mind, or if it's covered by an existing
skill.
- [x] TO DISCUSS, BUT NOT ESSENTIAL: Additional skill proposals not
currently in the pre-existing TODO list, proposing subcategories.
- [x] Ensure that the previous TODO list is completed.
### Current Skills
The current list of skills, checkmarked for if I've completed them/they
have actual game mechanics. Or if we're just relegating them to separate
PRs. Originally this list was going to be forced to visit for a bare
minimum "does at least one thing" requirement, but now that is being
forgone due to this PR ballooning out of control and in complexity, as
well as development time overruns.
- [x] Bartending
- [x] Cooking
- [x] Gardening
- [x] Entertaining
- [x] Electrical Engineering
- [x] Mechanical Engineering
- [x] Atmospherics Systems
- [x] Reactor Systems
- [x] Medicine
- [x] Surgery
- [x] Pharmacology
- [x] Anatomy
- [x] Forensics
- [x] Robotics
- [x] Pilot: Spacecraft
- [x] Pilot: Exosuits
- [x] Research
- [x] Xenobotany
- [x] Xenoarchaeology
- [x] Xenobiology
- [x] Unarmed Combat
- [x] Armed Combat
- [x] Firearms
- [x] Leadership
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: FabianK3 <21039694+FabianK3@users.noreply.github.com>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>