From 923f44d46a9d2f7c52a1a4c548f2e44accf2da21 Mon Sep 17 00:00:00 2001 From: adpist Date: Sat, 18 Oct 2025 13:36:39 +0200 Subject: [PATCH] Do not erase learned skill by a skill with charges --- pkg/memory/player.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pkg/memory/player.go b/pkg/memory/player.go index d2267fe..16d1b9f 100644 --- a/pkg/memory/player.go +++ b/pkg/memory/player.go @@ -133,10 +133,20 @@ func (gd *GameReader) getSkills(skillListPtr uintptr) map[skill.ID]skill.Points quantity := gd.Process.ReadUInt(skillPtr+0x40, Uint16) charges := gd.Process.ReadUInt(skillPtr+0x48, Uint16) - skills[skill.ID(skillTxt)] = skill.Points{ - Level: lvl, - Quantity: quantity, - Charges: charges, + shouldSetSkill := true + existingSkill, exists := skills[skill.ID(skillTxt)] + if exists { + if existingSkill.Charges == 0 && charges > 0 { + shouldSetSkill = false + } + } + + if shouldSetSkill { + skills[skill.ID(skillTxt)] = skill.Points{ + Level: lvl, + Quantity: quantity, + Charges: charges, + } } skillPtr = uintptr(gd.Process.ReadUInt(skillPtr+0x08, Uint64))