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>
- bugfix: "Synthetic external armour now deteriorates with the actual
damage taken. Previously, the calculation led to the armour instead
taking less damage the less it was blocked."
- bugfix: "Fixing the synthetic endoskeleton now fixes the permanent
paincrit effect on IPCs. This was caused by the self preservation status
being toggled when the endoskeleton was destroyed, but it was never
reset when the endoskeleton was fixed."
- bugfix: "Species components are now added and removed properly,
meaning you can switch from IPC to human and back and forth as a
mercenary once more."
- bugfix: "The Bishop internal PDA now uses your actual ID on your
person as its own ID."
- bugfix: "Fixed the endoskeleton welder repair surgery. You can do this
surgery by using a welder while aiming chest and after having opened the
chest fully."
- bugfix: "The endoskeleton now takes damage from EMPs as well. This
should make them A LOT more effective against IPCs."
- qol: "The posibrain will now show up in diagnostics."
- rscadd: "Posibrains can now be destroyed by hitting them. This will
completely kill the IPC's consciousness!"
Co-authored-by: Matt Atlas <liermattia@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>
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.
https://www.youtube.com/watch?v=9mPvZ96pHJI
A pull request commissioned by the Synthetic Lore Team to
comprehensively rework synthetics (read: IPCs) and how they work in
Aurora. The objective is to make IPCs as unique as possible from humans,
upgrading the robotic feel and atmosphere, while also preserving a good
sense of balance in-game.
Key features:
- A comprehensive expansion of synthetic organs, all of which now
fulfill a purpose: hydraulics, cooling units, power systems, actuators,
diagnostics units.
- Customizable organs with benefits and drawbacks, such as with cooling
units and power systems.
- Unique ways to repair the organs and more involved steps.
- Unique damage mechanics - every organ has wiring and electronics which
affect its functioning, and they are defended by plating which provides
natural armour.
- Improved and immersive diagnostics.
- Unique features, benefits, and drawbacks for every IPC frame.
- A rework of the positronic brain, which can be either destroyed or
shut down, alongside effects caused by low integrity.
- A rework of how EMPs affect IPC organs.
- Non-binary damage states for each organ.
To-do:
- [x] Finish the unique features for each frame.
- [x] Look into if mechanical synthskin is possible.
- [x] Power system.
- [x] Posibrain mechanics.
- [ ] Passive cooling expansion.
- [x] EMP mechanics.
- [x] Repair mechanics.
- [x] Mob weight mechanics.
- [ ] Gurney for heavy mobs.
- [x] New augments.
- [ ] IPC tag scanning and flashing.
---------
Signed-off-by: Werner <1331699+Arrow768@users.noreply.github.com>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: Geeves <22774890+Geevies@users.noreply.github.com>
Co-authored-by: Werner <1331699+Arrow768@users.noreply.github.com>
* Fixed welding tools using fuel in prosthetic repairs during the check
to see if it CAN do the surgery. Instead, the fuel when be consumed once
the surgery completes.
I _think_ this fixes the issue where welding fuel usage for prosthetic
surgery is bonkers, but I wasn't able to reproduce the bug on my local,
so keep an eye out for it still.
* i alone am the honoured one
* THROUGHOUT HEAVEN AND EARTH I ALONE AM THE HONOURED ONE
* hollow point
* nanana
* ssss
* tgsay final touches
* stuff
* tgui inputs
* help
* carpal tunnel syndrome
* ffff
* again and again and again and again
* hehehehe
* dsada
* readd sanitize
* whoops
* dsad
* nah fuck that
* sd
* fix
* ow
* remove prefs for testmerging
* oops
* oops 2
* fix that
* f
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
This PR will lead us towards the Promised Day, for in its wake there shall be much celebration and ecstasy as this world becomes a world suitable for developer hegemony. The first strike is thusly;
All << is converted into to_chat().
* 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#1790Fixes#1791
Fixes a number of issues with robot sprites, chem master machine, and surgery steps
The issue with borg sprites was caused by duplicate calls to ..()
Ive standardised robot module parent calls to the top of the function
Fixed the chemmaster not depositing pills in bottles properly. I added a new add_to_storage proc to storage.dm which is just a simple, safe means of putting stuff in stuff. it handles the checking.
Fixed some issues with surgery. A few surgery steps had incorrect "open" var ranges defined which was causing organ repair surgery to be interfered with
Also removed screwdriver from the list of bone mending tools, and added duct tape instead as the ghetto alternative. And allowed energyswords + chainswords to be used for cutting open ribs. theyre already useable for amputation
Fixed an incorrect return var for surgery that was making surgeons able to attack their patients on help intent. Shouldnt happen anymore
And also fixed the experimental welder being un-makeable at the protolathe.
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.