diff --git a/src/CommandFormats.hh b/src/CommandFormats.hh index a5c81fb9..667275c6 100644 --- a/src/CommandFormats.hh +++ b/src/CommandFormats.hh @@ -4431,7 +4431,7 @@ struct G_Unknown_6x57 { struct G_LobbyAnimation_6x58 { G_ClientIDHeader header; le_uint16_t animation_number = 0; - le_uint16_t flags = 0; // Only lowest bit appears to be used + le_uint16_t flags = 0; // 0 = normal, 1 = use opposite gender's animation } __packed_ws__(G_LobbyAnimation_6x58, 8); // 6x59: Pick up item diff --git a/src/ReceiveSubcommands.cc b/src/ReceiveSubcommands.cc index e95723d1..341bac53 100644 --- a/src/ReceiveSubcommands.cc +++ b/src/ReceiveSubcommands.cc @@ -1149,12 +1149,12 @@ uint32_t Parsed6x70Data::convert_player_flags(uint32_t player_flags, bool to_v3) // be able to convert between the two. What's known about these bits (? indicates meaning/behavior is unverified): // V1/V2 V3/V4 // 00000001 00000001 = player hold is set (see notes on 6x2C and 6x2D in CommandFormats.hh) - // 00000002 00000002 ? = unknown (TODO: related to player holds; client sends 6x2D when this is set) + // 00000002 00000002 = player hold is set for the purpose of dropping an item // 00000004 00000004 = is on a different floor from the local player (or is loading into game) - // 00000008 00000008 ? = unknown (TODO) + // 00000008 00000008 ? = unknown (TODO: appears to be entirely unused, at least in v3) // 00000010 00000010 = player has sent any update command (position, attack, etc.) this frame - // 00000020 00000020 ? = unknown (TODO) - // 00000040 00000040 ? = unknown (TODO) + // 00000020 00000020 ? = unknown (TODO: appears to be entirely unused, at least in v3) + // 00000040 00000040 ? = unknown (TODO: appears to be entirely unused, at least in v3) // 00000080 00000080 = is in windup animation for technique or PB // 00000100 -------- ? = unknown (TODO) // 00000200 00000100 = chat, pause, or quick menu is open (suppresses action palette) @@ -1164,7 +1164,7 @@ uint32_t Parsed6x70Data::convert_player_flags(uint32_t player_flags, bool to_v3) // 00002000 00000400 = action palette is disabled by p_action_disable or one of the TObjQuestColA* objects // 00004000 00000800 = is about to return to Pioneer 2 after a death (TODO: also set by p_return_guild) // 00008000 00001000 = cannot use telepipe / Ryuker (e.g. boss warps set this flag when the player is nearby) - // 00010000 00002000 ? = unknown (TODO) + // 00010000 00002000 ? = unknown (TODO: appears to be entirely unused, at least in v3) // 00020000 00004000 = is teleporting as a result of 6x24 (set only briefly after appearing at destination) // 00040000 00008000 = is dead NPC (set by e.g. npc_crptalk_id when regsA[4] == 1) // 00080000 -------- ? = unknown (TODO) @@ -1172,7 +1172,7 @@ uint32_t Parsed6x70Data::convert_player_flags(uint32_t player_flags, bool to_v3) // 00200000 00020000 = equipped items are invisible / intangible (e.g. in Pioneer 2) // 00400000 00040000 = is loading / changing floors (set by 6x22 and at game join, cleared by 6x23) // 00800000 00080000 = player data is in the process of being exported to save file format - // 01000000 00100000 = initial free-play cutscene with the Principal has started in offline free-play single-mode + // 01000000 00100000 = initial cutscene with the Principal has started in offline free-play single-mode // 02000000 00200000 = is visible (set shortly after warping into a floor; remains set until next warp) // 04000000 00400000 = position is valid (therefore player can be rendered) // 08000000 00800000 = player is invisible if not local, but items are still visible (TODO: what about on BB?) @@ -1181,7 +1181,8 @@ uint32_t Parsed6x70Data::convert_player_flags(uint32_t player_flags, bool to_v3) // -------- 04000000 = is sitting in lobby chair // -------- 08000000 = using male animations / poses in lobby chair // -------- 10000000 = using alternate lobby chair pose (X+B instead of X+A on GC, for example) - // -------- 20000000 ? = is doing lobby animation? (TODO: verify this) + // -------- 20000000 ? = if set, the player will freeze when attempting any lobby animation (TODO: what does this + // actually do? it doesn't appear to be set anywhere normally) // -------- 40000000 ? = unknown (TODO: used in offline multi-player Challenge mode; see tree from 3OE1:801BE594) if (to_v3) {