Appendage part-buttons check part_unlocked before equipping, but the palette dropdown doesn't. editor_apply_to_spec writes spec.palette is pal_w.selected unconditionally (src/editor.eigs:210-212), so all 5 palettes are always applicable regardless of game.unlocked_palettes (the bitmask at src/editor.eigs:196, grown by palette part-drops). Collecting palette drops is therefore meaningless.
Fix: gate palette selection against unlocked_palettes — either skip/disable locked entries in the ed_palette dropdown (src/editor.eigs:87), or in editor_apply_to_spec only accept pal_w.selected when that palette's bit is unlocked (else keep the current palette).
Acceptance: a locked palette can't be applied, unlocked ones can; make test green.
Self-contained editor logic. See CONTRIBUTING.md.
Appendage part-buttons check
part_unlockedbefore equipping, but the palette dropdown doesn't.editor_apply_to_specwritesspec.palette is pal_w.selectedunconditionally (src/editor.eigs:210-212), so all 5 palettes are always applicable regardless ofgame.unlocked_palettes(the bitmask atsrc/editor.eigs:196, grown by palette part-drops). Collecting palette drops is therefore meaningless.Fix: gate palette selection against
unlocked_palettes— either skip/disable locked entries in theed_palettedropdown (src/editor.eigs:87), or ineditor_apply_to_speconly acceptpal_w.selectedwhen that palette's bit is unlocked (else keep the current palette).Acceptance: a locked palette can't be applied, unlocked ones can;
make testgreen.Self-contained editor logic. See CONTRIBUTING.md.