This commit is contained in:
crazywh1t3
2026-02-14 00:43:12 +02:00
parent 211abf01f0
commit c8842afcc8

View File

@@ -12,7 +12,13 @@ func (gd *GameReader) GetKeyBindings() data.KeyBindings {
blobSkills := gd.ReadBytesFromMemory(gd.moduleBaseAddressPtr+gd.offset.KeyBindingsSkillsOffset, 0x500)
skillsKB := [16]data.SkillBinding{}
// Skills 0-6: slots 14-20
// The skill blob stores 16 skill IDs contiguously at 0x1C stride.
// The key blob stores VK codes in three separate regions:
// F1-F7 at 0x118 (stride 0x14), F8 at 0x384, NUMPAD0-6 at 0x208 (stride 0x14), extra at 0x398.
// The skill blob order is: F1, F2, ..., F7, F8, NUMPAD0, ..., NUMPAD6, extra.
// Skills 0-6: F1-F7 (key region at 0x118, stride 0x14)
for i := 0; i < 7; i++ {
skillsKB[i] = data.SkillBinding{
SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[i*0x1c : i*0x1c+4])),
@@ -22,9 +28,19 @@ func (gd *GameReader) GetKeyBindings() data.KeyBindings {
},
}
}
// Skills 7-13: slots 26-32
// Skill 7: F8 (key at 0x384)
skillsKB[7] = data.SkillBinding{
SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[7*0x1c : 7*0x1c+4])),
KeyBinding: data.KeyBinding{
Key1: [2]byte{blob[0x384], blob[0x385]},
Key2: [2]byte{blob[0x38e], blob[0x38f]},
},
}
// Skills 8-14: NUMPAD0-NUMPAD6 (key region at 0x208, stride 0x14)
for i := 0; i < 7; i++ {
skillIdx := i + 7
skillIdx := i + 8
skillsKB[skillIdx] = data.SkillBinding{
SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[skillIdx*0x1c : skillIdx*0x1c+4])),
KeyBinding: data.KeyBinding{
@@ -33,16 +49,14 @@ func (gd *GameReader) GetKeyBindings() data.KeyBindings {
},
}
}
// Skills 14-15: slots 45-46
for i := 0; i < 2; i++ {
skillIdx := i + 14
skillsKB[skillIdx] = data.SkillBinding{
SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[skillIdx*0x1c : skillIdx*0x1c+4])),
KeyBinding: data.KeyBinding{
Key1: [2]byte{blob[0x384+(i*0x14)], blob[0x385+(i*0x14)]},
Key2: [2]byte{blob[0x38e+(i*0x14)], blob[0x38f+(i*0x14)]},
},
}
// Skill 15: extra slot (key at 0x398)
skillsKB[15] = data.SkillBinding{
SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[15*0x1c : 15*0x1c+4])),
KeyBinding: data.KeyBinding{
Key1: [2]byte{blob[0x398], blob[0x399]},
Key2: [2]byte{blob[0x3a2], blob[0x3a3]},
},
}
belt := [4]data.KeyBinding{}