diff --git a/pkg/data/data.go b/pkg/data/data.go index c30fc1c..285b613 100644 --- a/pkg/data/data.go +++ b/pkg/data/data.go @@ -41,6 +41,7 @@ type Data struct { OpenMenus OpenMenus Roster Roster HoverData HoverData + TerrorZones []area.Area } type Room struct { diff --git a/pkg/memory/game_reader.go b/pkg/memory/game_reader.go index d3f6824..0a81d4b 100644 --- a/pkg/memory/game_reader.go +++ b/pkg/memory/game_reader.go @@ -31,14 +31,15 @@ func (gd *GameReader) GetData() data.Data { hover := gd.hoveredData() d := data.Data{ - Corpse: corpse, - Monsters: gd.Monsters(pu.Position, hover), - PlayerUnit: pu, - Items: gd.Items(pu, hover), - Objects: gd.Objects(pu.Position, hover), - OpenMenus: gd.openMenus(), - Roster: roster, - HoverData: hover, + Corpse: corpse, + Monsters: gd.Monsters(pu.Position, hover), + PlayerUnit: pu, + Items: gd.Items(pu, hover), + Objects: gd.Objects(pu.Position, hover), + OpenMenus: gd.openMenus(), + Roster: roster, + HoverData: hover, + TerrorZones: gd.TerrorZones(), } if playerUnitPtr == 0 { diff --git a/pkg/memory/terrorzones.go b/pkg/memory/terrorzones.go new file mode 100644 index 0000000..d9b07da --- /dev/null +++ b/pkg/memory/terrorzones.go @@ -0,0 +1,18 @@ +package memory + +import ( + "github.com/hectorgimenez/d2go/pkg/data/area" +) + +func (gd *GameReader) TerrorZones() (areas []area.Area) { + tz := gd.moduleBaseAddressPtr + 0x299E2D8 + + for i := 0; i < 7; i++ { + tzArea := gd.ReadUInt(tz+uintptr(i*Uint32), Uint32) + if tzArea != 0 { + areas = append(areas, area.Area(tzArea)) + } + } + + return +}