feat: worn equipment visible on other players — layered anim + paperdoll (#18) #132
No reviewers
Labels
No labels
alpha:wave-0
alpha:wave-1
alpha:wave-2
alpha:wave-3
area:assets
area:combat
area:ecology
area:infra
area:render
area:scripting
area:ui
area:world
enhancement
epic
migration
post-alpha
roadmap
tech-debt
type:bug
type:chore
type:design
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
marco/IsoMmo!132
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/worn-gear-on-others"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ok
Summary
Other players now show what they're wearing — the "layered paperdoll" from #18 — built directly
on the appearance-state foundation from #112.
PlayerAppearancenow carriesEquipment(layer +kind);
PlayerJoinedcarries it (a player entering your AoI shows their gear immediately) andPlayerAppearanceChangedreconciles equip/unequip within AoI. The item domain pushes theworn-gear projection onto the wearer instance on equip/unequip/restore (act on the instance)
and marks the appearance dirty;
World.Equip/Unequipstay thin delegates. Protocol bumped to 8.correct draw order — so a sword and platemail render together, consistent across all 8
facings, and both show on the paperdoll. (Server unchanged for the render; the client keys off
the appearance.)
item's tiledata
AnimID(broadsword0x026A, platemail0x020F), packed asequip/<kind>/<action>_<dir>. New extractor tooling:findart(find an art id by name fromtiledata.mul— the authoritative way to locate an AnimID) andanimdump(eyeball a body'sframes). Documented in
docs/asset-extraction.md.Note: the armor's backpack icon is still a placeholder (no
item_armorstatic extracted yet) —its world equip anim and paperdoll gump are the real UO art. This PR does not close
the broader #16 (all equip art); it lays the pipeline + the first two pieces.
Closes #18.
Screenshots / recording
Captured via the debug harness (
docs/debug-harness.md) from a fresh DB,login debug,/give sword+/give armor, equipped one of each by double-clicking them in the backpack, thengoto-ing around to face each direction:The world sprite shows the platemail body + the held sword together; both stay correct as the
character turns (mirrored facings included).
How it was tested
just test— all green (190 GameServer incl. a newEquipping_SurfacesWornGear_InTheTickAppearancetest, 72 Client.Core, 54 Shared, 17 AssetExtractor, 12 Auth, 4 Assets).
just lint— build succeeds, 0 warnings.assets.isoafrom~/Games/UO(classic.mul); confirmedequip/sword+equip/armorpresent.
Checklist
just lintpasses (CSharpier + analyzers, zero warnings)just testis green