improve terror zone

This commit is contained in:
vietdungdev
2026-06-08 21:12:58 +07:00
parent 2a899bdfb2
commit e7e82817c4

View File

@@ -5,14 +5,20 @@ import (
) )
func (gd *GameReader) TerrorZones() (areas []area.ID) { func (gd *GameReader) TerrorZones() (areas []area.ID) {
const maxActiveZoneCount = 16
structPtr := gd.moduleBaseAddressPtr + gd.offset.TZ structPtr := gd.moduleBaseAddressPtr + gd.offset.TZ
zonesPtr := uintptr(gd.ReadUInt(structPtr, Uint64)) zonesPtr := uintptr(gd.ReadUInt(structPtr, Uint64))
actualActiveZoneCount := int(gd.ReadUInt(structPtr+0x8, Uint8)) actualActiveZoneCount := int(gd.ReadUInt(structPtr+0x8, Uint8))
if zonesPtr == 0 || actualActiveZoneCount <= 0 || actualActiveZoneCount > maxActiveZoneCount {
return nil
}
for i := 0; i < actualActiveZoneCount; i++ { for i := 0; i < actualActiveZoneCount; i++ {
tzArea := gd.ReadUInt(zonesPtr+uintptr(i*Uint32), Uint32) tzArea := gd.ReadUInt(zonesPtr+uintptr(i*Uint32), Uint32)
if tzArea != 0 { id := area.ID(tzArea)
areas = append(areas, area.ID(tzArea)) if id.CanBeTerrorized() {
areas = append(areas, id)
} }
} }