Jump to content

Recommended Posts

@Sanohi

The symbols are set to a certain render layer order based on the animation the player is playing and has been predetermined during the animation compilation phase.

Symbols are effectively a set of images the entity has which are a subset of every image the entity has.

There's a couple of functions for the AnimState to swap these render layers around on the fly dynamically, but for your case you're wanting the effect of having head in front of arm, and hand+object in front of head conditionally for when the player is facing 'up'.

 

Unfortunately the AnimState's SetSymbolExchange + SetMultiSymbolExchange doesn't really present a way to arbitrarily force z-layer rendering order numbers, let alone conditionally on animation, so the only real way I could see this being feasibly done is with some kludge workarounds.

 

If you feel up for spending time to sink into testing things for yourself, then here are the list of player symbols you'd be touching:

<Note> These lists may not be exhaustive, they're just a compilation I have of them at this time. </Note>

The symbols for the player:

Spoiler

swap_object
headbase_hat
BEARD
arm_upper_3
SWAP_BODY
arm_upper_skin
SWAP_BODY_TALL
hairfront
leg
swap_hat
tail
arm_upper_skin_3
skirt
LANTERN_OVERLAY
HAT
face
arm_lower
hair
tail_2
tail_3
tail_4
tail_5
SWAP_FACE
ARM_normal
foot
arm_lower_cuff
ARM_carry
hairpigtails
HAIR_HAT
hand
headbase
torso
torso_pelvis
wilson
arm_upper

 

And the symbols for the player while on a beef:

Spoiler

hand_2
swap_object
headbase_hat
beefalo_body_heat
BEARD
beefalo_hoof_3
beefalo_eye
leg
beefalo_tail
arm_upper_skin
SWAP_BODY_TALL
tail
hairfront
wilsonbeefalo
beefalo_facebase
SWAP_BODY
swap_hat
beefalo_headbase
skirt
lantern_OVERLAY
beefalo_hoof_2
swap_saddle
HAT
face
arm_lower
hair
tail_2
tail_3
tail_4
tail_5
SWAP_FACE
ARM_normal
foot
arm_lower_cuff
HEAT
beefalo_antler
hairpigtails
HAIR_HAT
beefalo_body
hand
headbase
torso
torso_pelvis
ARM_carry
arm_upper
beefalo_hoof
beefalo_mouthmouth

 

With the end goal being some way to detect if the client-side player is facing 'up', then setting the appropriate symbol overrides.  Which will break some things because there's no arbitrary render layers, you effectively swap around the layers rather than creating new ones.  For instance, using SWAP_BODY_TALL on the swap_object symbol will make the item replace the layer for the one-man-band and slurtle shell items.  It will also make it render in front of the player's hand, so the 'hand' symbol would also need adjusted.

I'm sorry I can't help further than this as anything more is getting out of my knowledge on how animations work for DST, and I can't allocate the time currently to delve deeper.

  • Like 2
5 hours ago, CarlZalph said:
  Hide contents


swap_object
headbase_hat
BEARD
arm_upper_3
SWAP_BODY
arm_upper_skin
SWAP_BODY_TALL
hairfront
leg
swap_hat
tail
arm_upper_skin_3
skirt
LANTERN_OVERLAY
HAT
face
arm_lower
hair
tail_2
tail_3
tail_4
tail_5
SWAP_FACE
ARM_normal
foot
arm_lower_cuff
ARM_carry
hairpigtails
HAIR_HAT
hand
headbase
torso
torso_pelvis
wilson
arm_upper

 

 

 

A small correction to the symbol names
wilson is the bank name for the default player bank
wilsonbeefalo is the bank name for when riding a beefalo

This list is the symbols names in the bank but not all of them exist in the root folder.
The game automatically filters _# as being sub symbols, stuff like tail_2, arm_upper_3 are not symbols you an specifically override or follow using the lua functions available.

ARM_normal, ARM_carry are symbol groups and don't have symbol folders, while you can follow them for follow symbol. I am pretty sure you cannot override them without overriding the rest of the arm and hand symbols. Interaction for symbol groups uses AnimState:Hide or Show where as hiding specific symbol folders uses AnimState:HideSymbol or ShowSymbol

The full list of common symbol folders used by wilson bank in alphabetical order:

  • arm_lower
  • arm_lower_cuff
  • arm_upper
  • arm_upper_skin
  • BEARD
  • cheeks
  • face
  • foot
  • hair
  • hair_hat
  • hair_front
  • hairpigtails
  • hand
  • headbase
  • headbase_hat
  • lantern_overlay
  • leg
  • skirt
  • swap_body
  • swap_body_tall
  • SWAP_FACE
  • swap_hat
  • swap_object
  • tail
  • torso
  • torso_pelvis

note some symbols like cheeks only show up in common animations like blowdarts or eating, some symbols like swap_object may be hidden if the ARM_carry group is also hidden in some animations.

There is a further complication with symbol exchanges, SetSymbolExchange only exchanges the first instance of those symbols where as SetMultiSymbolExchange will try to match the 1st with the 1st, 2nd with the 2nd and so on. Atm
SetSymbolExchange is mostly used for torso tucking in the skinner component.
SetMultiSymbolExchange is used by legs and feet tucking in the skinner component.

I have had compatibility issues in the past attempting to swap z indexes more than once with these functions. So I am not sure if you can even call these functions when wearing skins that call these functions.

  • Like 2
  • Thanks 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...