Skip to content

Allow editing a Pal's XP value - #217

Open
bvoo wants to merge 2 commits into
EternalWraith:mainfrom
bvoo:feat/edit-pal-xp
Open

Allow editing a Pal's XP value#217
bvoo wants to merge 2 commits into
EternalWraith:mainfrom
bvoo:feat/edit-pal-xp

Conversation

@bvoo

@bvoo bvoo commented Aug 25, 2026

Copy link
Copy Markdown

Summary

  • adds an editable cumulative XP field below the Pal level
  • shows current XP progress, XP remaining, and level/XP mismatches
  • adds buttons for the current level's minimum XP, maximum XP, and deriving level from XP
  • keeps XP in the save's signed IntProperty range and synchronizes XP when level changes

Motivation

PalEdit already updates XP automatically when changing a Pal's level, but it does not let users inspect or set the exact cumulative XP value. The progress tools make deliberate mismatches visible without blocking raw XP edits.

Changes

  • add GetExp and SetExp to PalEntity
  • route level-based XP updates through SetExp
  • add an XP entry that commits on Enter or focus loss
  • calculate cumulative progress and XP remaining for levels 1 through 80
  • warn when XP falls outside the selected level's valid range
  • add Level minimum, Level maximum, and Level from XP controls
  • document cumulative XP editing and add regression tests

Test plan

  • python -m unittest discover -v (7 tests)
  • python -m compileall -q PalEdit.py palworld_pal_edit tests
  • PyInstaller build completes
  • source application starts successfully with python PalEdit.py
  • independent staged-diff review passed with no security or logic findings

Notes for reviewers

The existing one-file PyInstaller output still cannot start without bundling the vendored ooz native module. The source application startup smoke test passes, and this PR does not change packaging.

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