Time-weighted staked DOJO balance → XP accrual (pairs with S2P stake in vesting).
Activity rewards (PvP, recruit, upgrades, dine, …) use add_reward_points_xp — same dojo.xp / claim_xp_rewards pool as Fren-style “points.”
PvP wins use xp_from_battle_points_moved so XP scales with BP transferred (Fren: ETH rewards tied to point moves).