Reverts Aurorastation/Aurora.3#22313
Somehow made a race condition that causes the protolathe to delete
stacks if and only if the stack would have been "finished" by fully
placing the stack in the protolathe.
To clarify I have recently cancelled my subscription to google's coding
agents, so this is my first hard del PR in several weeks that was done
completely by hand. This PR fixes a hard del on Materials (and their
parent Stacks), which was being caused by up to 4 different vars
potentially containing references that were not being cleared during
their Destroy() procs.
I have also tested this by hand, by spawning and deleting stacks, then
waiting to see if the hard del triggers or not.
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
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>
# Summary
This PR fixes material stacks being able to drop into the negative.
Common occurrence are the synthetic fabricators.
## Changes
- Fixed new stack initialization overflow logic.
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.
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>
* Refactored do_after to use a flag-based system for options
* More flags
* Ditto
* Use the HAS_FLAG macro
* do_after pass
* Fix burning paper code
* Resolve issues from Fluffy's code reviews
* .
* Mitigates research recycling exploits by minimizing what can be recycled
* Moves the research design check into a new unit test
* Adds unit test for stack material recipes costs and fixes these costs
* Instead of changing recipes the resulting materials are worth less
* Crap fix
I finally figured out how to make tool inhands and inhand coloring work properly, so custom colors can apply to inhands! (yes, even the stuff from loadout.)
Code-wise, this guts the superfluous our_color variable.
This cuts it out from screwdrivers, wirecutters, cable, and everything else which uses this shit.
I'm pretty sure testing this has taken out a day out of my life.
Also I fixed up the cable examine to be less crappy. (so you can finally see cable descriptions.)
Don't mind the commits, I just built this on top the handcuff noose PR.
Tweaks:
With the gripper, hitting the drop hotkey (Q) now drops the held item. If no item is held, the grabber is put away as normal.
The scientific gripper can now hold slime steroids.
The chemistry gripper can now hold paper.
Bugfixes:
Using the drop hotkey (Q) to put away a module now correctly updates the module list interface. Fixes#4343.
Modules relying on cyborg synthesizers (nanopaste, et al.) now cannot be used when their synthesizer charge is depleted. Fixes#1288.
Injecting a monkey cube held in a gripper no longer places the monkey inside the gripper's internal contents. Fixes#1097.
Cyborgs can now re-lock secured crates. Fixes#4833.
Service borgs can no longer open a portal to infinite grass tiles. Fixes#3814.
Clerical borgs can now browse through paper bundles held in their gripper, and can pick up taped paper. Fixes#4479. Fixes#6501.
Refactors objects.dmi and items.dmi
Adds some more uses to glass jar - now you can use it as a tip jar AND a reagent container!
you can also see reagents inside like a beaker
also improves sprites for wrapping paper and the pocketwatch
This basically makes it easier for future sprite improvements
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().
changes:
Fixed issues with parallax objects not deleting properly due to hanging refs. (this also seems to fix some mob delete failures, like BSTs)
Fixed issues with hyperzine, inaprovaline, and synaptazine not soft-deleting due to hanging modifier references.
Removed coffee overdoses poisoning Tajara at Mofo's request.
Top is a stack over 2/3 full, middle is between 1/3 and 2/3 full, bottom is under 1/3 full.
Also converted stacks to use Initialize().
affected stacks:
Ointment
Bandages
Steel Sheets
Plastic Sheets
Glass Sheets
Plasteel Sheets
Reinforced Glass Sheets
Leather
Wet Leather
Hide
Sprites from /tg/.
Makes a mob/proc/can_use_hand(), which determines whether or not a mob can use a given hand.
Redefined in human.dm to check a hand's status and usability.
Hand usability checks are moved into `mob/living/carbon/human/put_in_l_hand()` and `put_in_r_hand()` respectively. This changes how `obj/item/attack_hand()` functions slightly.
These crystals can be inserted into active uplinks, making it possible to trade them.
Variant of https://github.com/ParadiseSS13/Paradise/pull/3174/files.
The uplink now always shows the description to avoid annoying button shifting.