Skip to content

DressUp: Fix client freeze on invalid face replacements, More face ID, and transition help menu to UI window#2545

Open
voliathon wants to merge 2 commits into
Windower:devfrom
voliathon:du-pr2
Open

DressUp: Fix client freeze on invalid face replacements, More face ID, and transition help menu to UI window#2545
voliathon wants to merge 2 commits into
Windower:devfrom
voliathon:du-pr2

Conversation

@voliathon
Copy link
Copy Markdown

Description: This PR addresses a fatal client crash bug, expands available Face ID presets, and replaces the chat-spamming help commands with a clean, draggable in-game UI. It was difficult to understand the previous help that displayed in the console. More instructions meant losing view of addon help in the console.

Key Changes:

  1. Client Crash Prevention: Fixed an infinite loop in the //du replacements face command parser. When users entered an invalid face identifier (e.g., //du replacements face 3b 9a), the while #_models ~= 2 loop would run indefinitely, completely freezing and crashing the PlayOnline/FFXI client. Adding validation and immediate returns resolves this.

  2. Face ID Mapping Additions: Added explicit lowercased keys for all standard faces. Extends the face ID selection ranges inside DressUp past the standard 1-16 (1a-8b), Fomor (29), and mannequin (30) options to support raw Face IDs up to 35 (e.g., matching the extended HumeM face lists and other expanded models available in the Place section).
    Importance: Corrects a critical client-crashing bug. Previously, supplying a raw value higher than the FFXI client limits or outside the hardcoded ranges could cause the model engine to panic, triggering a client crash. This code caps raw inputs safely at 35 and yields an error message if an out-of-bounds ID is supplied, allowing players to safely utilize all available client face assets.
    //du self face 1-35 <--Allows for more faces to display in game beyond mannequin and fomor.

  3. UI Help Window: Replaced the heavy console printout for //du or //du help with a draggable on-screen text box using the Windower texts library. Toggling the help command now shows/hides this window, leaving the player's active chat log clean.

voliathon added 2 commits June 6, 2026 12:11
Expanded Face ID Range Selection
Face ID Infinite Loop Crash Fix
1. Client Crash Prevention: Fixed an infinite loop in the //du replacements face <old> <new> command parser. When users entered an invalid face identifier (e.g., //du replacements face 3b 9a), the while #_models ~= 2 loop would run indefinitely, completely freezing and crashing the PlayOnline/FFXI client. Adding validation and immediate returns resolves this.
2. Face ID Mapping Additions: Added explicit lowercased keys for all standard faces, as well as fomor (Face 29) and mannequin (Face 30) inside static_variables.lua to expand character model styling options.
3. UI Help Window: Replaced the heavy console printout for //du help with a draggable on-screen text box using the Windower texts library. Toggling the help command now shows/hides this window, leaving the player's active chat log clean.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant