isle-portable/tools/ncc/skip.yml
foxtacles a9747dec11
Character customization (#8)
* WIP: Add character customization to multiplayer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Refine character customization: fix message buffering, DRY up code, request-based model

- Register NetworkManager with TickleManager via HandleCreate hook in
  LegoOmni::Create(), so packets are processed continuously instead of
  buffering between Connect() and OnWorldEnabled()
- Spawn unspawned remote players in OnWorldEnabled() (created before
  world was ready)
- Switch to request-based customization: HandleROIClick sends
  MSG_CUSTOMIZE to server, server echoes to all peers, HandleCustomize
  applies state and plays effects
- DRY up SwitchVariant to delegate LOD cloning to ApplyHatVariant
- Add ApplyChange helper consolidating the switch-on-changeType pattern
- Fix InitFromActorInfo to derive dependent color parts from independent
  parts (matching Unpack rules)
- Remove dead code: m_hasBeenTicked, ApplyCustomizeChange on
  RemotePlayer, m_localCustomizeState on NetworkManager
- Add null ROI checks in HandleCustomize for unspawned players
- Move MSG_CUSTOMIZE constant to shared protocol.ts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix

* Fix character customization bugs from code review

- BUG-1: Add bounds check in SwitchColor to prevent OOB access from
  unvalidated network input (p_partIndex could exceed array bounds)
- BUG-2: Enforce allowRemoteCustomize on receiver side in HandleCustomize
  (was only checked on sender side, byppassable by malicious client)
- BUG-3: Document stale-state sound asymmetry for remote targets
- OBS-1: Remove unused bodyVariantIndex from CustomizeState (never
  modified, wasted 3 bits per state message)
- NAME-1: Fix p_ prefix convention on ApplyCustomizeChange parameters
2026-03-07 23:20:55 +01:00

82 lines
3.6 KiB
YAML

configureLegoAnimationManager(MxS32): 'DLL exported function'
configureLegoBuildingManager(MxS32): 'DLL exported function'
configureLegoModelPresenter(MxS32): 'DLL exported function'
configureLegoPartPresenter(MxS32, MxS32): 'DLL exported function'
configureLegoROI(int): 'DLL exported function'
configureLegoWorldPresenter(MxS32): 'DLL exported function'
configureMxTransitionManager(TransitionType): 'DLL exported function'
GetNoCD_SourceName(): 'DLL exported function'
m_3dView: 'Allow this variable name'
m_3dManager: 'Allow this variable name'
m_16bitPal: 'Allow this variable name'
m_32bitPal: 'Allow this variable name'
m_HWDesc: 'Allow this variable name'
m_HELDesc: 'Allow this variable name'
p_HWDesc: 'Allow this variable name'
p_HELDesc: 'Allow this variable name'
e_RAMStream: 'Allow this enum constant'
p_RLE: 'Allow this parameter name'
p_milliseconds: 'Probably a bug with function call'
m_increaseAmount: "Can't currently detect member in union"
m_increaseFactor: "Can't currently detect member in union"
delta_rad: "Allow original naming from 1996"
delta_pos: "Allow original naming from 1996"
rot_mat: "Allow original naming from 1996"
new_pos: "Allow original naming from 1996"
new_dir: "Allow original naming from 1996"
p_AnimTreePtr: "Allow original naming from beta"
m_AnimTreePtr: "Allow original naming from beta"
m_BADuration: "Allow original naming from beta"
m_assAnimP: "Allow original naming from beta"
m_disAnimP: "Allow original naming from beta"
i_activity: "Allow original naming from beta"
i_actor: "Allow original naming from beta"
score: "Allow original naming from beta"
c_LOCATIONS_NUM: "Allow original naming from beta"
m_Map_Ctl: "Allow original naming from beta"
m_ColorBook_Bitmap: "Allow original naming from beta"
m_Yellow_Ctl: "Allow original naming from beta"
m_Red_Ctl: "Allow original naming from beta"
m_Blue_Ctl: "Allow original naming from beta"
m_Green_Ctl: "Allow original naming from beta"
m_Gray_Ctl: "Allow original naming from beta"
m_Black_Ctl: "Allow original naming from beta"
m_Shelf_Sound: "Allow original naming from beta"
m_PlaceBrick_Sound: "Allow original naming from beta"
m_GetBrick_Sound: "Allow original naming from beta"
m_Paint_Sound: "Allow original naming from beta"
m_Decal_Sound: "Allow original naming from beta"
m_Decal_Bitmap: "Allow original naming from beta"
m_Decals_Ctl: "Allow original naming from beta"
m_Decals_Ctl1: "Allow original naming from beta"
m_Decals_Ctl2: "Allow original naming from beta"
m_Decals_Ctl3: "Allow original naming from beta"
m_Decals_Ctl4: "Allow original naming from beta"
m_Decals_Ctl5: "Allow original naming from beta"
m_Decals_Ctl6: "Allow original naming from beta"
m_Decals_Ctl7: "Allow original naming from beta"
p_scorehist: "Allow original naming from beta"
ISLE_MMIOINFO: "Re-defined Windows name"
_ISLE_MMIOINFO: "Re-defined Windows name"
dwFlags: "Re-defined Windows name"
cchBuffer: "Re-defined Windows name"
pchBuffer: "Re-defined Windows name"
pchNext: "Re-defined Windows name"
pchEndRead: "Re-defined Windows name"
pchEndWrite: "Re-defined Windows name"
lBufOffset: "Re-defined Windows name"
lDiskOffset: "Re-defined Windows name"
ISLE_MMCKINFO: "Re-defined Windows name"
_ISLE_MMCKINFO: "Re-defined Windows name"
ckid: "Re-defined Windows name"
cksize: "Re-defined Windows name"
fccType: "Re-defined Windows name"
dwDataOffset: "Re-defined Windows name"
fccType: "Re-defined Windows name"
SDL_KeyboardID_v: "SDL-based name"
SDL_MouseID_v: "SDL-based name"
SDL_JoystickID_v: "SDL-based name"
SDL_TouchID_v: "SDL-based name"
Load: "Not a variable but function name"
HandleCreate: "Not a variable but function name"