* port 35190
* HungerProduction
* SolutionProducer
* update
* move to server
* small tweak for Shearable
* fix
* ProductionAttemptEvent
* EntityProducer
* update EggLayer
* EntityTable
* no more actions on EggLayer
* move popups to comp
* kill EggLayer
* new locale
* rename field
* upd
* SatiationType
* rename to SatiationProduction and lil docs
* EntityQuery
* more docs for god of docs
* small fix
* more queries
* ready
* oop forgot the HUD stuff
* woooo examinable generalized tooooo
* oop I forgot to rename the files
* bungled the merge, I guess
* this is called hubris
* Verin's comments
* PR comments
how did I use `ProtoId<> Hunger` in more than a few spots but then just say "thirst can stay a literal :^)"?
also changed a few spots to my beloved
```
functionInvocation(
one
param
per
line
)
```
```
* Satiation effect condition now with ADDED FUNCTIONALITY?? :o
* tfw you trust the markov chain recommendation because long generic type names are tough q-q
* TFW YOU TRUST THE MARKOV CHAIN BUT IT DOESN'T UNDERSTAND THE DIFFERING SEMANTICS OF MAX AND MIN AHHHHH
* tfw you think to yourself "i need to fix the effects", but then forget to and the code doesn't even compile.
* centralize satiation constants
* other small comments
* The enum is dead.
But at what cost?
* oop
* like 12 more ooperses
* green checks are mine by right; I have performed the rites; I have done my part; you will not deny me this succor
* oops I changed the semantics from `<=` to just `<` and didn't update the tests :)
* serialization has bested me :agony:
also PR comments
* never trust the auto merge :agony:
* literally just this
* force engine back to master because idk why it's different
* fix randomness and update master
* submodule fuckery
* fall before my might
* okay I ran the linter, ARE YOU HAPPY??
* cursed ovis, trouble me no more
* protoman stuff
* inb4 linter bonks me
* break non-critical stuff from the main satiation proto
* 
inb4 this breaks something somewhere lmao
* my two greatest PRs COLLIDE
I wonder why robust says it's changed :hmmclueless
* sanity is at an all-time low
* serialization, I guess
* I don't believe you
* field deltas on class \w*satiation\w*components
* PR comments
* 我做泥團子 😔
* doc + kill one property that's trivially accessible after the threshold caching changes
* fixes
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: AJCM-git <ajcm_mail@disroot.org>
* Adds sheep
Ported from TG.
* Expands the wooly system to allow wooly creatures to be sheared.
Shearing creates cotton, with a ratio to match the nutritional value of the fibre reagent.
Look, there's no wool item and I don't want to add them, they're generically modified space sheep that grow cotton, what do you want from me??
* Add shears icon
* Switch to better icon
* Decouple shearing system from wooly system.
* Add cutting quality to barber scissors.
Means they can now shear animals and cut wires.
* Add toggled wool to sheep
* Move wooly layer handling to wooly system.
Otherwise it wouldn't account for wooly mobs that can't be sheared, which I think would be a problem.
* Fix incorrect message when there's not enough solution to shear off, but there's more than 0.
* Add shearing on left-click.
* Add dead wool sprite
Unused for now
* I installed a formatter teehee
* Disable wooly layer when the mob dies.
* No need to check life state at two places.
* Moving to shared for prediction or something
* Completes transition to shared, adds some more comments.
* Switch to SharedSolutionContainer to fix merge conflict?
* Fix accidental paste.
* Moved sheep spawner into animals.yml
* Move shearable system to Animals (plural)
* Switch visuals layer to new ToggleableVisuals
* Fixes serialization error.
Solution should not have been a DataField.
Also fixes a typo.
* Re-arrange a little for clarity.
* Resolve serialisation error, better formatting and sheep default to having 25 wool.
* Added space sheep. Sprite by Aleksh, comissioned by Baa.
* Make Jetpack fields modifiable.
Useful for adding jetpack effects to mobs
* Space sheep now fly, glow and produce jetpack effects
* Clarifying one comment and removing an un-used value.
* Remove unused space sheep sprite.
* Remove unused sprite and add space sheep dead.
* SpaceSheep inherits from sheep instead of duplicating yaml
* Re-arrange and rename sprites for consistency and clarity.
And also add a space sheep spawner.
* Add an optional description addon for the shearable component.
* Move all shearable system into shared.
No longer spawns stacks of things and doesn't require stackable objects to be defined.
* Add rainbow sheep and sheep base.
Inheriting the parent of sheep was breaking spacesheep so now they all inherit from this sort of sub-sheep thing.
* Sheep plushies, sprites pending.
* Sheep plushies
Please don't eat them ;q;
* Rainbow Sheep spawner
* BAAAAA
* Working shearable layer.
* Remove ShearableVisualsComponent, move details into ShearableComponent
* Update license definition.
I'm just saying, the website says it has no dashes.
* Re-use pre-existing mobstate enum instead of re-writing it.
* Remove unused return enum
* Clean up ShearableSystem and fix calculation bug.
* Trim silence from sheep SFX and add reverbed space sheep versions
Space Sheep now generate Durathread and use new shearable layer.
* I don't like the word floofy
* Sheep crates and wooly spawner
* Rename "sheared" to "shearable" because it didnt' make sense.
* Remove extra space
* Fix YAML errors.
* Sheep base should be abstract
* Remove ActiveJetpack from spacesheep (crying)
* Set SpaceSheep price to 600
* Revert Active Jetpack changes.
* Fix every file ending
* Revert changes to WoolySystem
No need to cause additional merge conflicts
* Missed a line
* Missed another line
* Fix tool selection so null actually works for no tools.
Also uses object instead of string.
Same for shearing strings.
* Requested formatting changes, plus some comment fixes.
* Remove extra spaces
* Make shearing icon customisable
* Slightly dither spawned items for exciting fun
This implementation works flawlessly without any issues and it's even predicted.
* No longer spawns in walls
* Space Sheep now grow two dura-thread every 2 minutes.
* The REST of the requested changes ❤️
* Make the shearing verb customisable.
It's used in some strings, or might be one day.
* Bunch of requested changes, also adds popup when wrong tool used.
But i'll probably end up removing it because it happens for other clicks, like feeding the sheep.
* Remove weird solution entity caching and instead return it from CheckShear.
* Requested changes.
* Used proper random spawning prediction.
Thanks to #39661
* Requested changes
Fixed param name shearingSolutionEnt.
Removed unused popup line, leave comment.
Verb is now always added but disabled when appropriate. TODO look into weird butcher verb.
* Re-arrange AddShearVerb a bit to remove a redundant null check.
* Remove uneeded check.
* Switch from TryIndex to Index when checking ToolQuality
* Make shearable markup text nullable and null by default.
* Switch MaximumProductsSpawned to int
* Revert woolyComponent changes.
I've decided it's out-of-scope and I don't want to cause mergeconflicts with any pending changes to wooly.
* One more change removed.
* Add newline
* Switch to FixedPoint2.Min and re-do shearing forumula documentation.
* Make shearable spawn offset configurable.
* Fix everything wrong with shearingSolutionToRemove
It was calculated twice.
One of the calculations just didn't work.
The comment was mostly right but I clarrified some parts and also made sure it was correct.
How confident am I? If I was advising stock trading I would call this description "Financial Advice" and then collect a large paycheck.
* Add overload functions for ChearShear and switch to propert ent<T> syntax
* Simplify UpdateShearingLayer calculation
Clarity suggestion.
* Add sheep plushies to fun places.
* Fix missing line end
* Convert CheckShear to return a boolean instead of an enum.
* Add missing documentation.
* Update Food to Edible
* Update random calculations.
Can still be replaced once PredictedRandom is in engine
* Rename CheckShear to CanShear
* Fix sheep being deleted when a moth eats their wool
Fix attempting to shear sheep with all objects.
Add speech verbs and sounds for sheep.
* Use some NotNullWhen statements to a void some additional codies <3
Remove a few other redundant things.
* Add missing emote sounds for sheep.
* Removed unsued shearingSolutionState out var.
* Requested YAML adjustments
* Adjust documentation of CanShear to reduce duplication.
* I missed a comma and it didn't read right
* Suggested simplification of examine function
* New tool quality just for shearing
Add shearing to wirecutters, barber's scissors, cowcutters, and plant clippers (these can all shear sheep).
* Correct ShearedProductId syntax.
Removed an unused variable.
* Rework CanShear() function to reduce number of out vars and overide varients. for simplicity.
* Update to new solutions system <3
* test
* Fix compiler warnings with partial class and readonly dependencies.
* Completely rework shearing algorithm so it makes sense.
The entirety of the previous calculation was borne from my misunderstanding of what FixedPoint2 is and does and how it works.
Now it's simple and actually makes sense.
* Rebalance sheep materials to match the solutions inside the product.
* Yaml fix
* Documentation tweaks
* Fix any item being used to shear sheep.
I don't know why that was false
* Switch to Loc.TryGetString, fix warning message name reference, upgrade message to warning severity from debug, add earlier return for shearable checks.
* Make TargetSolutionName a required datafield.
---------
Co-authored-by: Beck Thompson <beck-thompson-kde@outlook.com>
* Shelve
* 22 file diff
* What if it was just better
* Hold that thought
* Near final Commit, then YAML hell
* 95% done with cs
* Working Commit
* Final Commit (Before reviews tear it apart and kill me)
* Add a really stupid comment.
* KILL
* EXPLODE TEST FAILS WITH MY MIND
* I hate it here
* TACTICAL NUCLEAR STRIKE
* Wait what the fuck was I doing?
* Comments
* Me when I'm stupid
* Food doesn't need solutions
* API improvements with some API weirdness
* Move non-API out of API
* Better comment
* Fixes and spelling mistakes
* Final fixes
* Final fixes for real...
* Kill food and drink localization files because I hate them.
* Water droplet fix
* Utensil fixes
* Fix verb priority (It should've been 2)
* A few minor localization fixes
* merge conflict and stuff
* MERGE CONFLICT NUCLEAR WAR!!!
* Cleanup
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
* parrotMemory is onGetVerbs now in shared
* code review
* code review popup on client rename parrotMemoryComponent
* code rev create client system
* forgot usings
* is server now
* Separate udder hunger examine into ExamineableHunger
* Fluent grammar improvements
* Add ExamineableHunger to chickens and ducks.
* Use starving message as "dead" message
* Changed comments to be more clear and uniform.
EggLayer uses NextGrowth instead of frame accumulation.
Egglayer uses much less energy to make eggs, and lay time is randomized for player and AI chicken.
* UdderComponent ReagentId can be changed now
UdderSystem and WoolySystem use SharedSolutionContainerSystem now
* Entities with udders can be examined to see a rough hunger level
udders and wooly stop reagent generation/extra nutrient usage once the solution container is full
* Moved stuff to Shared
AutoPausedField now
* Cleanup moving stuff to Shared
* Oops. Make UdderSystem sealed instead of abstract.
* Switch PopupEntity for PopupClient
* Didn't mean to delete Access
* new() instead of default! prototype
revert egglayer balance change
NextGrowth += timespan in egglayer
* forgot [Datafield] for NextGrowth
* forgot NetworkedComponent again...
* Renaming Shared Animal to Shared Animals to match Server
Hopefully also resolve merge conflicts.
* Fix incorrect filename
* Update with requested changes
Put UdderSystem dependencies in alphabetical order.
Initialise NextGrowth for Udder and Wooly components on MapInitEvent.
Clean-up EggLayerSystem a little.
Re-write OnExamine function for UdderSystem, improving clarity.
Add full stops to end of udder examine locales.
And more :)
* Add some additional descriptions for cow hunger levels.
* Add Udder and Wooly quantity to AutoNetworkedField
* Account for less than starving threshold.
---------
Co-authored-by: sirionaut <sirionaut@gmail.com>
Co-authored-by: Sirionaut <148076704+Sirionaut@users.noreply.github.com>
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>