<img width="1549" height="857" alt="image"
src="https://github.com/user-attachments/assets/3830233d-0635-4942-b2aa-024651e6cffa"
/>
Limbs make up roughly half of the "Per additional player" processing
overhead, while Organs make up most of the other half.
Not every organ is an easy candidate for "Event-only processing", but
external limbs are significantly easier to do so.
So this PR makes it so that External Limbs no longer require Processing
unless an event happens that would justify them requiring processing.
Which SIGNIFICANTLY reduces the overall additional cost to the
Processing subsystem per player that joins the server.
Oh and I also made the Appendix and Kidneys not require constant
processing. The Appendix will only process if it is hit by an
Appendicitis event, and the Kidneys will only process if they are either
damaged, or you get poisoned.
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>
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>
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.
Enabled new opendream pragmas
Fixed some runtime access check operators (`:`) around the codebase (not
all, some are unfixable as they're used in macros)
No player facing changes (hopefully)
Converts reagents to use typepaths instead of IDs.
Centralises reagent spawning in a lot of places to use reagents_to_add instead of a variety of custom methods or initialise overrides.
tweak: "Security's base nonlethal equipment - tasers and rubbers - is now a bit better."
bugfix: "Fixed teargas doing practically nothing."
bugfix: "Fixed a lot of stuff not applying pain damage. Ow."
bugfix: "Fixed undefined values on the CMC."
bugfix: "Fixed dionae not regenerating damage."
* Base work for the unathi robot subspecies.
* Adds metabolism species, kidney vars, and the robot unathi organs.
* Moves some action buttons to organs, pretty much a bay port right now. Todo: the unathi and alien stuff should also go here.
* First autakh implant power.
* Fixes the organs action button this time.
* Finishes more implants, and interactions with flashs and vaurca.
* Prepare for great changes.
* Drops the real bomb, boss.
* He who fights with monsters.
* Far more work into augments and limb removing powers.
* Limb verbs should be good now.
* A LOT of work into the assited organ, allowing it to bleed and etc, as well adding a new chem that will stop bleeding in their case.
* Probably the last work on implants.
* Some extra touches.
* Some tweaks to the species.
* More fixes and adds kyre's sprites.
* More runtime fixes.
* Fixes the species name too.
* Fixes travis.
* Updates this file too to work with the new tools procs.
* Adds changelog
* Fixed changelog.
* Unathi hair and lore description.
* Some tweaks to this too.
* Locks away them for now, they will be released after we got all the events and etc done.
* Changes this chemical.
* Fixes an airlock runtime.
* Adds the non scan flag to the autakh, mostly due to some bizzare interactions with changelings and cloning.
* Organs removal changes; can't take out the organ if it is too damage.
* Restricts them back again.
* Robotic organs now have the proper icons and names.
* Adds sprites for their organs and some extra tweaks.
* Fixes this missing icon.
* emp should also now hurt assited organs.
* Tweaks more organ related things.
* Fixes the head not being properly set as well.
* Fixes their flags.
* fixes the flag for real this time.
* Poze's review.
* Changes the au'takh organ buttons to don't be animated.
* Helps with adminbus or something.
* Fowl's requested changes.
* Fixes a typo.
* Robotic limb's brute and burn mods are now controlled by the limb model.
* Fowl's changes once more.
* Stops some spam.
* More grammar.
* No eal.
* Skull's review.
Fixes the tools/indentation.awk script to not demand a comma at the end of perfectly valid comments.
Makes it report unnecessary commas in lists.
Readds it to the Travis build list.
Vaurca filtration bit organ added. When destroyed or removed, oxygen becomes poisonous to the Vaurca.
Vaurca lungs have been made organic.
Vaurca take 3x toxin damage, as a result of their rather alien biology.
Vaurca lose additional blood when an opportunity to lose blood presents itself, due to their open-circulatory system.
Vaurca organs are no longer all robotic, except for the neural socket and filtration bit.
Vaurca organ surgery is now possible.