branchrust_reboot/main/Livestock_animalscancel
528 Commits over 518 Days - 0.04cph!
- Move CoatIndex after the other autosaved syncvars so older livestock saves read the right bytes
- Skip a parent which has a coat the calf prefab has no material for when inheriting, else a stale number wtill be handed down
- Resend the newborn right after its coat is inherited else it change scolour after appearing
- Forget the painted coat in OnDisable rather than OnEnable, pooling runs that after the next occupant has already painted
- Apply the corpse coat from ClientInit alone and drop the syncvar callback that fired before the ragdoll existed
- Compare coat names per index across stages and ragdolls, not just the count
- Move SaveAndRestart in RustTestFixture and SpawnOnNavmesh in AITestFixture and use them from the livestock fixtures
- Reword the InitCoat and save test comments, the isLoadingSave guard only saves a roll the load overwrites anyway
Fix cows only grazing and never resting / idling, or roaming too much
Hook up livestock coats, not yet gene driven, tested networking, saving, corpses, babies
Cherry pick 163070: Fix gen2 AI never updating its position in the brain grid, causing some brain based spatial query to be stale
- Old cows will go to sleep and die peacefully, instead of player the combat death anim when dying of old age
- Cows get slower as they age, they also stay closer to home
- Cows can lie down just to chill, old cows chill more than normal
- When night falls, cows regroup and sleep together, some cows are early risers and some like to wake up late
- Hook sheep and lamb corpses
- Hook the death anims with forward momentum that are played when animals are killed while they are running
- Fix ai.fillHungerlivestock doing the opposite of what it says
- Fix cows never getting hungry or thirsty after feeding or drinking once, or getting full from one single grazing
- Fix cows being unable to find food after grazing once, because they search radius was smaller than the "overgrazed" marking
- Make cows roam less they seemed more like a pack of wolf than chilling cows
Cow get hit animation updates
Cow and sheep animation clip fix's
A few more tweaks to the ragdoll copier to save some clicks
Bull ragdoll
Cow ragdoll joint improvements
- Add a cooldown to the livestock flee trigger so one hit cannot re-fire it through randomIdle or chargeRun
- Back off strayed-from-mother and strayed-from-herd for 15 s after a failed walk back
- Require a reachable trough or barrel before it wins over grass or shore
- Add RegroupSearchRadius so cows can find a herd further than the stray distance
- Only send a staggered bull into flee when the hold-ground rule says he would run
- Sample two rings and take the nearest spot in the grass and water searches
- Record herd distress only when there is an attacker, and spend it on the first charge
- Back off the mate search when nobody is found or the female is unreachable
- Throttle the shore search after a miss, mirroring the grass search
- Collapse graze and drink into shared consume transition and state classes
- Share one speed ramp helper across follow, consume, mating and return walks
- Add IsHerdMate, IsDependent and a centred FindNearestDependent, and use them everywhere
- Wrap the remaining client-compiled FSM members in #if SERVER
Fix cows not fleeing sometimes, add tests for bull and cows behaviour
Fix super fast acceleration on cows and sheep
Bull can kick and charge, protects the herd and moves between you and them. Can play toreador with the bull like with the croc. Herd sticks together when in danger instead of scattering. Fix cows decelerating instantly.
Generate and connect animation montages, add hurt and death behaviours + anims
New RagdollCopyTool, allows us to copy a ragdoll (joints/ragdolls/colliders) from one hierarchy to another
Setup cow corpse/ragdoll, joints are a horror show right now but at least it's setup
Should make copying the setup over to the other rigs faster
Fix NRE when a livestock animal dies
Add an overgrazing mechanic - if too many livestock eat the grass in an area in too short a time they will no longer be able to eat the grass (either take them to some fresh grass or use a trough)
If an animal is in an overgrazed area they will display a label on the popup when looked at
Adapted from the OverfishedArea mechanic, both systems now share a new DepletedArea class which shares the same grid
Updating skinning for bull/calf
New milk item placeholder
If an item id doesn't match the shortname, show an error in the inspector with a fix button
Hooked up fur shader toggle when shearing is ready
Added readytomilk and readytoshear debug commands
ai.showstate now parents it's Ddraw labels, looks a lot smoother
Animals can now eat from a trough, will prioritise that over grazing on grass
Renamed the "Horse Dung" item to just "Dung" (left the prefab/item def names referencing horse, no point changing those)
Hooked up male calf prefab/material
- updated Sheep LODs. added LODs for the Calf. assigned correct material to sheep lod in prefab.
Merge from main (will need codegen)
added more calf texture and material variants and an extra cow variant.
Added calf texture variations. set up with material variants.
AI select/move commands now work on multiple animals
Added ai.selectinrange convar
Added ai.deselectnpc convar
When ordering multiple NPC's to a location they all receive an offset so they don't all pathfind to the exact same spot
Hooked up sale info in-game UI
Create new SellAnimals and AnimalSalePreview dialogue panels
First one lists all nearby animals that are following the player (and can be sold) and the other shows what you will receive for selling that animal
No rewards hooked up yet, just panel flow
Stables_b is now playable in editor
Start of boilerplate animal selling mechanic, just set up NPC and basic conversation for now
Added a drink water need and corresponding behaviour to livestock animals, they can drink from a nearby water container or river/lake
Updated sheep model and prefab to improve lods further. added an opaque sheep fur mat for lods.
Add commands to select and direct a given NPC
ai.selectnpc will select the npc in front of the player
ai.movenpc will make the npc navigate to the point the player is looking at (takes a walk type sneak, walk, jog, run, sprint, fullsprint)
ai.releasenpc stops the debug control
Works on legacy AI and modern FSM based AI, needs to be manually added to every FSM AI but it's a one line change for each type
Imported new sheep lod to help with LOD issue. Updated prefab to help with LOD issue
Add a rename dialog to livestock animals, can only be used while the animal is being led
Infant animals will now stay close to their mother
LIvestock animals now save who their parent is
Added CompletePregnancy convar for debugging