Silhouette: broadened the armour's shoulder pads (inflate Shoulder_L/R-weighted pad caps about the
shoulder joint, smooth falloff, arms untouched) + beefed the boots -> Silhouette_Armour.asset (built
idempotently from the stock Synty armour). Bind pose is a T-pose, so broadening is by BONE WEIGHT, not
raw X (a naive |X| threshold would grab the outstretched arms).
Drift fix: baked the correct assignments into the tools so a re-run no longer reverts them -
BuildBathynautPlayer now does the brass/undersuit split + swaps the armour to Silhouette_Armour;
AttachBathynautKit assigns gunmetal tanks / warm beacon / Mark-V brass-gunmetal-glass (3 submeshes).
Full rebuild chain re-run clean + verified live: identical correct diver, reproducible.
(replace_method stripped the [MenuItem] attrs -> re-added; see the swallow-adjacent-line gotcha.)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The approved staging character is now in the shipping animated Player.prefab:
- Re-exported the skinned kit FBX dome-less + the Synty Mark-V helmet skinned to the Head bone (3
submeshes brass/gunmetal/glass); replaced the old fused dome.
- Split materials: brass armour, dark-teal undersuit, gunmetal tank pack, warm shoulder beacon, teal
porthole glow.
- ★ per-instance _BaseColor gotcha: the hit-flash system sets URPMaterialPropertyBaseColor=(1,1,1) on
every player render child, which REPLACES the material _BaseColor -> flat-color materials washed
cream. Fix = drive color via a solid-color _BaseColorMap texture (DiverTex/), not _BaseColor.
Verified live in DevSandbox from the game camera: copper Mark-V + brass armour + teal undersuit +
gunmetal tanks + warm beacon, animated, reads at true game scale.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Re-exported the skinned kit from the ONE master .blend with the reshaped diving helmet, grouped into
Metal/Beacon/Porthole SMRs. Darkened the helmet (M_Diver_Metal_Skinned flat gunmetal - the AnimatedLitShader
was multiplying the tint by the gold PaletteAtlas sample, so the atlas map is cleared to force the flat dark
base), kept the warm shoulder-lamp beacon, dimmed the porthole (M_Diver_PortholeGlow_Skinned), shifted the body
to a cool diver tone. Rebuilt Player.prefab via the proven PlayerRigTools graft chain. Verified live in
DevSandbox from the game camera: the gold-dome lamp is gone. Remaining full-match gap (brass-armour/teal-
undersuit split + the shoulder/boot silhouette edits) needs the Synty body replaced by the .blend body.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
WeaponGripAnchor under Hand_R in Player.prefab carries the actual axe
mesh as an EditorOnly preview (baker skips it; play-verified single axe)
so grip manipulation is the real model live in the prefab stage;
AttachMeleeWeapon reads the anchor (consts = seed/fallback). Includes
the operator's first gizmo-tuned grip (rebaked mesh matches expected
radius exactly). PlayerRigTools also carries the heavy-lock clip
re-speeds (1.0/0.85/0.88) consumed by the next commit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New PlayerRigTools.BuildBathynautPlayer (menu: ProjectM/Animation) - forks the
proven EnemyRigTools recipe: strips the Synty-soldier skeleton+SMRs from
Player.prefab IN PLACE (GUID preserved; ghost/authoring/CC/Animator/
RigDefinitionAuthoring untouched), flattens the SpaceSoldier_HelmetArmor suit
body under the root, keeps the -0.90 feet offset, re-slots
M_SuitFrame_Bathynaut_Animated on every SMR, adopts the shared CharactersAvatar
(AC_PlayerTopDown muscle clips retarget). 17 inactive Synty variant SMRs stripped.
Both frames share this visual until per-frame models land; the brass-dome/tank
kitbash attachments are a follow-up /art-dev export.
Play-verified in DevSandbox: suit renders + idles correctly under the LANTERN
murk, Rukhanka rig baked with all 9 drive params, dev overlay alive in the
renamed scene, no console errors.
=> Movement/animation tuning is now UNBLOCKED (the operator's next priority).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
BLENDER (5 new/re-authored clips, all full-body, mirrored-left-arm axes
FIXED - Synty L shoulders mirror X/twist vs R, verified by axis probes):
- A_Swing_R2L / A_Swing_L2R (0.47s): horizontal slash + backhand with real
anticipation (torso wound 25 deg), 2-frame strikes, follow-through past
the target.
- A_Swing_Finisher (0.60s): overhead crash with a crouch drop into impact.
- A_Special_Slam (0.53s): two-handed ground slam - the Warrior cone finally
LOOKS like a cone attack.
- A_Fire_OneHand re-authored punchier (cock -> full-extension thrust with
torso commit -> recoil kick).
Export lesson: Blender 4.4 slotted actions - reassigning animation_data.
action does NOT bind the slot; force animation_data.action_slot before
export/render or you bake a stale pose.
CONTROLLER: MeleeSwing (one clip for everything) replaced by Swing1/2/3
keyed on new ComboStep int param (replicated MeleeCombo.Step); Fire gated
!IsCone (Ranger shot), new SpecialSlam state on IsFiring+IsCone (Warrior).
DRIVE SYSTEM: writes ComboStep from the replicated combo step and IsCone
from the replicated AbilityRef -> AbilityDatabase blob archetype (works for
remote teammates too).
SWORD: SM_Wep_Sword_01 (SciFiSpace - same pack/atlas as the soldier) as a
mesh-sub-asset child of Hand_R, grip rot (90,0,0) tuned live against the
running entity. Required RigDefinitionAuthoring boneEntityStrippingMode
Automatic -> None so the hand bone entity exists + is posed (stripped bones
never animate attachments). Play-verified: the energy blade rides the fist.
456/456 EditMode.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>