Add data structures, it requires tons of refactor but it's more or less working
This commit is contained in:
157
pkg/data/area/area.go
Normal file
157
pkg/data/area/area.go
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
package area
|
||||||
|
|
||||||
|
type Area int
|
||||||
|
|
||||||
|
func (a Area) IsTown() bool {
|
||||||
|
switch a {
|
||||||
|
case RogueEncampment, LutGholein, KurastDocks, ThePandemoniumFortress, Harrogath:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
Abaddon Area = 125
|
||||||
|
AncientTunnels Area = 65
|
||||||
|
ArcaneSanctuary Area = 74
|
||||||
|
ArreatPlateau Area = 112
|
||||||
|
ArreatSummit Area = 120
|
||||||
|
Barracks Area = 28
|
||||||
|
BlackMarsh Area = 6
|
||||||
|
BloodMoor Area = 2
|
||||||
|
BloodyFoothills Area = 110
|
||||||
|
BurialGrounds Area = 17
|
||||||
|
CanyonOfTheMagi Area = 46
|
||||||
|
CatacombsLevel1 Area = 34
|
||||||
|
CatacombsLevel2 Area = 35
|
||||||
|
CatacombsLevel3 Area = 36
|
||||||
|
CatacombsLevel4 Area = 37
|
||||||
|
Cathedral Area = 33
|
||||||
|
CaveLevel1 Area = 9
|
||||||
|
CaveLevel2 Area = 13
|
||||||
|
ChaosSanctuary Area = 108
|
||||||
|
CityOfTheDamned Area = 106
|
||||||
|
ClawViperTempleLevel1 Area = 58
|
||||||
|
ClawViperTempleLevel2 Area = 61
|
||||||
|
ColdPlains Area = 3
|
||||||
|
Crypt Area = 18
|
||||||
|
CrystallinePassage Area = 113
|
||||||
|
DarkWood Area = 5
|
||||||
|
DenOfEvil Area = 8
|
||||||
|
DisusedFane Area = 95
|
||||||
|
DisusedReliquary Area = 99
|
||||||
|
DrifterCavern Area = 116
|
||||||
|
DryHills Area = 42
|
||||||
|
DuranceOfHateLevel1 Area = 100
|
||||||
|
DuranceOfHateLevel2 Area = 101
|
||||||
|
DuranceOfHateLevel3 Area = 102
|
||||||
|
DurielsLair Area = 73
|
||||||
|
FarOasis Area = 43
|
||||||
|
FlayerDungeonLevel1 Area = 88
|
||||||
|
FlayerDungeonLevel2 Area = 89
|
||||||
|
FlayerDungeonLevel3 Area = 91
|
||||||
|
FlayerJungle Area = 78
|
||||||
|
ForgottenReliquary Area = 96
|
||||||
|
ForgottenSands Area = 134
|
||||||
|
ForgottenTemple Area = 97
|
||||||
|
ForgottenTower Area = 20
|
||||||
|
FrigidHighlands Area = 111
|
||||||
|
FrozenRiver Area = 114
|
||||||
|
FrozenTundra Area = 117
|
||||||
|
FurnaceOfPain Area = 135
|
||||||
|
GlacialTrail Area = 115
|
||||||
|
GreatMarsh Area = 77
|
||||||
|
HallsOfAnguish Area = 122
|
||||||
|
HallsOfPain Area = 123
|
||||||
|
HallsOfTheDeadLevel1 Area = 56
|
||||||
|
HallsOfTheDeadLevel2 Area = 57
|
||||||
|
HallsOfTheDeadLevel3 Area = 60
|
||||||
|
HallsOfVaught Area = 124
|
||||||
|
HaremLevel1 Area = 50
|
||||||
|
HaremLevel2 Area = 51
|
||||||
|
Harrogath Area = 109
|
||||||
|
HoleLevel1 Area = 11
|
||||||
|
HoleLevel2 Area = 15
|
||||||
|
IcyCellar Area = 119
|
||||||
|
InfernalPit Area = 127
|
||||||
|
InnerCloister Area = 32
|
||||||
|
JailLevel1 Area = 29
|
||||||
|
JailLevel2 Area = 30
|
||||||
|
JailLevel3 Area = 31
|
||||||
|
KurastBazaar Area = 80
|
||||||
|
KurastCauseway Area = 82
|
||||||
|
KurastDocks Area = 75
|
||||||
|
LostCity Area = 44
|
||||||
|
LowerKurast Area = 79
|
||||||
|
LutGholein Area = 40
|
||||||
|
MaggotLairLevel1 Area = 62
|
||||||
|
MaggotLairLevel2 Area = 63
|
||||||
|
MaggotLairLevel3 Area = 64
|
||||||
|
MatronsDen Area = 133
|
||||||
|
Mausoleum Area = 19
|
||||||
|
MonasteryGate Area = 26
|
||||||
|
MooMooFarm Area = 39
|
||||||
|
NihlathaksTemple Area = 121
|
||||||
|
None Area = 0
|
||||||
|
OuterCloister Area = 27
|
||||||
|
OuterSteppes Area = 104
|
||||||
|
PalaceCellarLevel1 Area = 52
|
||||||
|
PalaceCellarLevel2 Area = 53
|
||||||
|
PalaceCellarLevel3 Area = 54
|
||||||
|
PitLevel1 Area = 12
|
||||||
|
PitLevel2 Area = 16
|
||||||
|
PitOfAcheron Area = 126
|
||||||
|
PlainsOfDespair Area = 105
|
||||||
|
RiverOfFlame Area = 107
|
||||||
|
RockyWaste Area = 41
|
||||||
|
RogueEncampment Area = 1
|
||||||
|
RuinedFane Area = 98
|
||||||
|
RuinedTemple Area = 94
|
||||||
|
SewersLevel1Act2 Area = 47
|
||||||
|
SewersLevel1Act3 Area = 92
|
||||||
|
SewersLevel2Act2 Area = 48
|
||||||
|
SewersLevel2Act3 Area = 93
|
||||||
|
SewersLevel3Act2 Area = 49
|
||||||
|
SpiderCave Area = 84
|
||||||
|
SpiderCavern Area = 85
|
||||||
|
SpiderForest Area = 76
|
||||||
|
StonyField Area = 4
|
||||||
|
StonyTombLevel1 Area = 55
|
||||||
|
StonyTombLevel2 Area = 59
|
||||||
|
SwampyPitLevel1 Area = 86
|
||||||
|
SwampyPitLevel2 Area = 87
|
||||||
|
SwampyPitLevel3 Area = 90
|
||||||
|
TalRashasTomb1 Area = 66
|
||||||
|
TalRashasTomb2 Area = 67
|
||||||
|
TalRashasTomb3 Area = 68
|
||||||
|
TalRashasTomb4 Area = 69
|
||||||
|
TalRashasTomb5 Area = 70
|
||||||
|
TalRashasTomb6 Area = 71
|
||||||
|
TalRashasTomb7 Area = 72
|
||||||
|
TamoeHighland Area = 7
|
||||||
|
TheAncientsWay Area = 118
|
||||||
|
ThePandemoniumFortress Area = 103
|
||||||
|
TheWorldstoneChamber Area = 132
|
||||||
|
TheWorldStoneKeepLevel1 Area = 128
|
||||||
|
TheWorldStoneKeepLevel2 Area = 129
|
||||||
|
TheWorldStoneKeepLevel3 Area = 130
|
||||||
|
ThroneOfDestruction Area = 131
|
||||||
|
TowerCellarLevel1 Area = 21
|
||||||
|
TowerCellarLevel2 Area = 22
|
||||||
|
TowerCellarLevel3 Area = 23
|
||||||
|
TowerCellarLevel4 Area = 24
|
||||||
|
TowerCellarLevel5 Area = 25
|
||||||
|
Travincal Area = 83
|
||||||
|
Tristram Area = 38
|
||||||
|
UberTristram Area = 136
|
||||||
|
UndergroundPassageLevel1 Area = 10
|
||||||
|
UndergroundPassageLevel2 Area = 14
|
||||||
|
UpperKurast Area = 81
|
||||||
|
ValleyOfSnakes Area = 45
|
||||||
|
MapsAncientTemple Area = 137
|
||||||
|
MapsDesecratedTemple Area = 138
|
||||||
|
MapsFrigidPlateau Area = 139
|
||||||
|
MapsInfernalTrial Area = 140
|
||||||
|
MapsRuinedCitadel Area = 141
|
||||||
|
)
|
||||||
24
pkg/data/belt.go
Normal file
24
pkg/data/belt.go
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package game
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
|
const (
|
||||||
|
HealingPotion PotionType = "HealingPotion"
|
||||||
|
ManaPotion PotionType = "ManaPotion"
|
||||||
|
RejuvenationPotion PotionType = "RejuvenationPotion"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Belt []Item
|
||||||
|
|
||||||
|
func (b Belt) GetFirstPotion(potionType PotionType) (Position, bool) {
|
||||||
|
for _, i := range b {
|
||||||
|
// Ensure potion is in row 0 and one of the four columns
|
||||||
|
if strings.Contains(string(i.Name), string(potionType)) && i.Position.Y == 0 && (i.Position.X == 0 || i.Position.X == 1 || i.Position.X == 2 || i.Position.X == 3) {
|
||||||
|
return i.Position, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Position{}, false
|
||||||
|
}
|
||||||
|
|
||||||
|
type PotionType string
|
||||||
205
pkg/data/data.go
Normal file
205
pkg/data/data.go
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
package game
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hectorgimenez/d2go/pkg/data/area"
|
||||||
|
"github.com/hectorgimenez/d2go/pkg/data/skill"
|
||||||
|
"github.com/hectorgimenez/d2go/pkg/data/stat"
|
||||||
|
"github.com/hectorgimenez/d2go/pkg/data/state"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// since stat.MaxLife is returning max life without stats, we are setting the max life value that we read from the
|
||||||
|
// game memory, overwriting this value each time it increases. It's not a good solution but it will provide
|
||||||
|
// more accurate values for the life %. This value is checked for each memory iteration.
|
||||||
|
var maxLife = 0
|
||||||
|
var maxLifeBO = 0
|
||||||
|
|
||||||
|
const (
|
||||||
|
goldPerLevel = 10000
|
||||||
|
|
||||||
|
// Monster Types
|
||||||
|
MonsterTypeNone MonsterType = "None"
|
||||||
|
MonsterTypeChampion MonsterType = "Champion"
|
||||||
|
MonsterTypeMinion MonsterType = "Minion"
|
||||||
|
MonsterTypeUnique MonsterType = "Unique"
|
||||||
|
MonsterTypeSuperUnique MonsterType = "SuperUnique"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Data struct {
|
||||||
|
AreaOrigin Position
|
||||||
|
Corpse Corpse
|
||||||
|
Monsters Monsters
|
||||||
|
// First slice represents X and second Y
|
||||||
|
CollisionGrid [][]bool
|
||||||
|
PlayerUnit PlayerUnit
|
||||||
|
NPCs NPCs
|
||||||
|
Items Items
|
||||||
|
Objects Objects
|
||||||
|
AdjacentLevels []Level
|
||||||
|
Rooms []Room
|
||||||
|
OpenMenus OpenMenus
|
||||||
|
Roster Roster
|
||||||
|
}
|
||||||
|
|
||||||
|
type Room struct {
|
||||||
|
Position
|
||||||
|
Width int
|
||||||
|
Height int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Room) GetCenter() Position {
|
||||||
|
return Position{
|
||||||
|
X: r.Position.X + r.Width/2,
|
||||||
|
Y: r.Position.Y + r.Height/2,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Room) IsInside(p Position) bool {
|
||||||
|
if p.X >= r.X && p.X <= r.X+r.Width {
|
||||||
|
return p.Y >= r.Y && p.Y <= r.Y+r.Height
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d Data) MercHPPercent() int {
|
||||||
|
for _, m := range d.Monsters {
|
||||||
|
if m.IsMerc() {
|
||||||
|
// Hacky thing to read merc life properly
|
||||||
|
maxLife := m.Stats[stat.MaxLife] >> 8
|
||||||
|
life := float64(m.Stats[stat.Life] >> 8)
|
||||||
|
if m.Stats[stat.Life] <= 32768 {
|
||||||
|
life = float64(m.Stats[stat.Life]) / 32768.0 * float64(maxLife)
|
||||||
|
}
|
||||||
|
|
||||||
|
return int(life / float64(maxLife) * 100)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type RosterMember struct {
|
||||||
|
Name string
|
||||||
|
Area area.Area
|
||||||
|
Position Position
|
||||||
|
}
|
||||||
|
type Roster []RosterMember
|
||||||
|
|
||||||
|
func (r Roster) FindByName(name string) (RosterMember, bool) {
|
||||||
|
for _, rm := range r {
|
||||||
|
if strings.EqualFold(rm.Name, name) {
|
||||||
|
return rm, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return RosterMember{}, false
|
||||||
|
}
|
||||||
|
|
||||||
|
type Level struct {
|
||||||
|
Area area.Area
|
||||||
|
Position Position
|
||||||
|
}
|
||||||
|
|
||||||
|
type Class string
|
||||||
|
|
||||||
|
type Corpse struct {
|
||||||
|
Found bool
|
||||||
|
IsHovered bool
|
||||||
|
Position Position
|
||||||
|
}
|
||||||
|
|
||||||
|
type Position struct {
|
||||||
|
X int
|
||||||
|
Y int
|
||||||
|
}
|
||||||
|
|
||||||
|
type PlayerUnit struct {
|
||||||
|
Name string
|
||||||
|
Area area.Area
|
||||||
|
Position Position
|
||||||
|
Stats map[stat.Stat]int
|
||||||
|
Skills map[skill.Skill]int
|
||||||
|
States state.States
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pu PlayerUnit) MaxGold() int {
|
||||||
|
return goldPerLevel * pu.Stats[stat.Level]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pu PlayerUnit) HPPercent() int {
|
||||||
|
_, found := pu.Stats[stat.MaxLife]
|
||||||
|
if !found {
|
||||||
|
return 100
|
||||||
|
}
|
||||||
|
|
||||||
|
if maxLifeBO == 0 && maxLife == 0 {
|
||||||
|
maxLife = pu.Stats[stat.MaxLife]
|
||||||
|
maxLifeBO = pu.Stats[stat.MaxLife]
|
||||||
|
}
|
||||||
|
|
||||||
|
if pu.States.HasState(state.Battleorders) {
|
||||||
|
if maxLifeBO < pu.Stats[stat.Life] {
|
||||||
|
maxLifeBO = pu.Stats[stat.Life]
|
||||||
|
}
|
||||||
|
return int((float64(pu.Stats[stat.Life]) / float64(maxLifeBO)) * 100)
|
||||||
|
}
|
||||||
|
|
||||||
|
if maxLife < pu.Stats[stat.Life] {
|
||||||
|
maxLife = pu.Stats[stat.Life]
|
||||||
|
}
|
||||||
|
|
||||||
|
return int((float64(pu.Stats[stat.Life]) / float64(maxLife)) * 100)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pu PlayerUnit) MPPercent() int {
|
||||||
|
return int((float64(pu.Stats[stat.Mana]) / float64(pu.Stats[stat.MaxMana])) * 100)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pu PlayerUnit) HasDebuff() bool {
|
||||||
|
debuffs := []state.State{
|
||||||
|
state.Amplifydamage,
|
||||||
|
state.Attract,
|
||||||
|
state.Confuse,
|
||||||
|
state.Conversion,
|
||||||
|
state.Decrepify,
|
||||||
|
state.Dimvision,
|
||||||
|
state.Ironmaiden,
|
||||||
|
state.Lifetap,
|
||||||
|
state.Lowerresist,
|
||||||
|
state.Terror,
|
||||||
|
state.Weaken,
|
||||||
|
state.Convicted,
|
||||||
|
state.Conviction,
|
||||||
|
state.Poison,
|
||||||
|
state.Cold,
|
||||||
|
state.Slowed,
|
||||||
|
state.BloodMana,
|
||||||
|
state.DefenseCurse,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, s := range pu.States {
|
||||||
|
for _, d := range debuffs {
|
||||||
|
if s == d {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
type PointOfInterest struct {
|
||||||
|
Name string
|
||||||
|
Position Position
|
||||||
|
}
|
||||||
|
|
||||||
|
type OpenMenus struct {
|
||||||
|
Inventory bool
|
||||||
|
LoadingScreen bool
|
||||||
|
NPCInteract bool
|
||||||
|
NPCShop bool
|
||||||
|
Stash bool
|
||||||
|
Waypoint bool
|
||||||
|
MapShown bool
|
||||||
|
}
|
||||||
9
pkg/data/difficulty/difficulty.go
Normal file
9
pkg/data/difficulty/difficulty.go
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package difficulty
|
||||||
|
|
||||||
|
const (
|
||||||
|
Normal = "normal"
|
||||||
|
Nightmare = "nightmare"
|
||||||
|
Hell = "hell"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Difficulty string
|
||||||
60
pkg/data/item/class.go
Normal file
60
pkg/data/item/class.go
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
package item
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
|
var classMapping = map[string][]string{
|
||||||
|
"Axes": {"HandAxe", "Axe", "DoubleAxe", "MilitaryPick", "WarAxe", "LargeAxe", "BroadAxe", "BattleAxe", "GreatAxe", "GiantAxe", "Hatchet", "Cleaver", "TwinAxe", "Crowbill", "Naga", "MilitaryAxe", "BeardedAxe", "Tabar", "GothicAxe", "AncientAxe", "Tomahawk", "SmallCrescent", "EttinAxe", "WarSpike", "BerserkerAxe", "FeralAxe", "SilverEdgedAxe", "Decapitator", "ChampionAxe", "GloriousAxe"},
|
||||||
|
"Wands": {"Wand", "YewWand", "BoneWand", "GrimWand", "BurntWand", "PetrifiedWand", "TombWand", "GraveWand", "PolishedWand", "GhostWand", "LichWand", "UnearthedWand"},
|
||||||
|
"Clubs": {"Club", "SpikedClub", "Cudgel", "BarbedClub", "Truncheon", "TyrantClub"},
|
||||||
|
"Scepters": {"Scepter", "GrandScepter", "WarScepter", "RuneScepter", "HolyWaterSprinkler", "DivineScepter", "MightyScepter", "SeraphRod", "Caduceus"},
|
||||||
|
"Maces": {"Mace", "MorningStar", "Flail", "FlangedMace", "JaggedStar", "Knout", "ReinforcedMace", "DevilStar", "Scourge"},
|
||||||
|
"Hammers": {"WarHammer", "Maul", "GreatMaul", "BattleHammer", "WarClub", "MartelDeFer", "LegendaryMallet", "OgreMaul", "ThunderMaul"},
|
||||||
|
"Swords": {"ShortSword", "Scimitar", "Sabre", "Falchion", "CrystalSword", "BroadSword", "LongSword", "WarSword", "TwoHandedSword", "Claymore", "GiantSword", "BastardSword", "Flamberge", "GreatSword", "Gladius", "Cutlass", "Shamshir", "Tulwar", "DimensionalBlade", "BattleSword", "RuneSword", "AncientSword", "Espandon", "DacianFalx", "TuskSword", "GothicSword", "Zweihander", "ExecutionerSword", "Falcata", "Ataghan", "ElegantBlade", "HydraEdge", "PhaseBlade", "ConquestSword", "CrypticSword", "MythicalSword", "LegendSword", "HighlandBlade", "BalrogBlade", "ChampionSword", "ColossusSword", "ColossusBlade"},
|
||||||
|
"Daggers": {"Dagger", "Dirk", "Kris", "Blade", "Poignard", "Rondel", "Cinquedeas", "Stiletto", "BoneKnife", "MithrilPoint", "FangedKnife", "LegendSpike"},
|
||||||
|
"ThrowingKnifes": {"ThrowingKnife", "BalancedKnife", "BattleDart", "WarDart", "FlyingKnife", "WingedKnife"},
|
||||||
|
"ThrowingAxes": {"ThrowingAxe", "BalancedAxe", "Francisca", "Hurlbat", "FlyingAxe", "WingedAxe"},
|
||||||
|
"Javelins": {"Javelin", "Pilum", "ShortSpear", "Glaive", "ThrowingSpear", "WarJavelin", "GreatPilum", "Simbilan", "Spiculum", "Harpoon", "HyperionJavelin", "StygianPilum", "BalrogSpear", "GhostGlaive", "WingedHarpoon"},
|
||||||
|
"Spears": {"Spear", "Trident", "Brandistock", "Spetum", "Pike", "WarSpear", "Fuscina", "WarFork", "Yari", "Lance", "HyperionSpear", "StygianPike", "Mancatcher", "GhostSpear", "WarPike"},
|
||||||
|
"Polearms": {"Bardiche", "Voulge", "Scythe", "Poleaxe", "Halberd", "WarScythe", "LochaberAxe", "Bill", "BattleScythe", "Partizan", "BecDeCorbin", "GrimScythe", "OgreAxe", "ColossusVoulge", "Thresher", "CrypticAxe", "GreatPoleaxe", "GiantThresher"},
|
||||||
|
"Staves": {"ShortStaff", "LongStaff", "GnarledStaff", "BattleStaff", "WarStaff", "JoStaff", "QuarterStaff", "CedarStaff", "GothicStaff", "RuneStaff", "WalkingStick", "Stalagmite", "ElderStaff", "Shillelagh", "ArchonStaff"},
|
||||||
|
"Bows": {"ShortBow", "HuntersBow", "LongBow", "CompositeBow", "ShortBattleBow", "LongBattleBow", "ShortWarBow", "LongWarBow", "EdgeBow", "RazorBow", "CedarBow", "DoubleBow", "ShortSiegeBow", "LargeSiegeBow", "RuneBow", "GothicBow", "SpiderBow", "BladeBow", "ShadowBow", "GreatBow", "DiamondBow", "CrusaderBow", "WardBow", "HydraBow"},
|
||||||
|
"Crossbows": {"LightCrossbow", "Crossbow", "HeavyCrossbow", "RepeatingCrossbow", "Arbalest", "SiegeCrossbow", "Ballista", "ChuKoNu", "PelletBow", "GorgonCrossbow", "ColossusCrossbow", "DemonCrossBow"},
|
||||||
|
"Helms": {"Cap", "SkullCap", "Helm", "FullHelm", "GreatHelm", "Crown", "Mask", "BoneHelm", "WarHat", "Sallet", "Casque", "Basinet", "WingedHelm", "GrandCrown", "DeathMask", "GrimHelm", "Shako", "Hydraskull", "Armet", "GiantConch", "SpiredHelm", "Corona", "DemonHead", "BoneVisage"},
|
||||||
|
"Armors": {"QuiltedArmor", "LeatherArmor", "HardLeatherArmor", "StuddedLeather", "RingMail", "ScaleMail", "ChainMail", "BreastPlate", "SplintMail", "PlateMail", "FieldPlate", "GothicPlate", "FullPlateMail", "AncientArmor", "LightPlate", "GhostArmor", "SerpentskinArmor", "DemonhideArmor", "TrellisedArmor", "LinkedMail", "TigulatedMail", "MeshArmor", "Cuirass", "RussetArmor", "TemplarCoat", "SharktoothArmor", "EmbossedPlate", "ChaosArmor", "OrnatePlate", "MagePlate", "DuskShroud", "Wyrmhide", "ScarabHusk", "WireFleece", "DiamondMail", "LoricatedMail", "Boneweave", "GreatHauberk", "BalrogSkin", "HellforgePlate", "KrakenShell", "LacqueredPlate", "ShadowPlate", "SacredArmor", "ArchonPlate"},
|
||||||
|
"Shields": {"Buckler", "SmallShield", "LargeShield", "KiteShield", "TowerShield", "GothicShield", "BoneShield", "SpikedShield", "Defender", "RoundShield", "Scutum", "DragonShield", "Pavise", "AncientShield", "GrimShield", "BarbedShield", "Heater", "Luna", "Hyperion", "Monarch", "Aegis", "Ward", "TrollNest", "BladeBarrier"},
|
||||||
|
"Gloves": {"LeatherGloves", "HeavyGloves", "ChainGloves", "LightGauntlets", "Gauntlets", "DemonhideGloves", "SharkskinGloves", "HeavyBracers", "BattleGauntlets", "WarGauntlets", "BrambleMitts", "VampireboneGloves", "Vambraces", "CrusaderGauntlets", "OgreGauntlets"},
|
||||||
|
"Boots": {"Boots", "HeavyBoots", "ChainBoots", "LightPlatedBoots", "Greaves", "DemonhideBoots", "SharkskinBoots", "MeshBoots", "BattleBoots", "WarBoots", "WyrmhideBoots", "ScarabshellBoots", "BoneweaveBoots", "MirroredBoots", "MyrmidonGreaves"},
|
||||||
|
"Belts": {"Sash", "LightBelt", "Belt", "HeavyBelt", "PlatedBelt", "DemonhideSash", "SharkskinBelt", "MeshBelt", "BattleBelt", "WarBelt", "SpiderwebSash", "VampirefangBelt", "MithrilCoil", "TrollBelt", "ColossusGirdle"},
|
||||||
|
"Circlets": {"Circlet", "Coronet", "Tiara", "Diadem"},
|
||||||
|
"AssassinKatars": {"Katar", "WristBlade", "HatchetHands", "Cestus", "Claws", "BladeTalons", "ScissorsKatar", "Quhab", "WristSpike", "Fascia", "HandScythe", "GreaterClaws", "GreaterTalons", "ScissorsQuhab", "Suwayyah", "WristSword", "WarFist", "BattleCestus", "FeralClaws", "RunicTalons", "ScissorsSuwayyah"},
|
||||||
|
"SorceressOrbs": {"EagleOrb", "SacredGlobe", "SmokedSphere", "ClaspedOrb", "JaredsStone", "GlowingOrb", "CrystallineGlobe", "CloudySphere", "SparklingBall", "SwirlingCrystal", "HeavenlyStone", "EldritchOrb", "DemonHeart", "VortexOrb", "DimensionalShard"},
|
||||||
|
"AmazonBows": {"StagBow", "ReflexBow", "AshwoodBow", "CeremonialBow", "MatriarchalBow", "GrandMatronBow"},
|
||||||
|
"AmazonSpears": {"MaidenSpear", "MaidenPike", "CeremonialSpear", "CeremonialPike", "MatriarchalSpear", "MatriarchalPike"},
|
||||||
|
"AmazonJavelins": {"MaidenJavelin", "CeremonialJavelin", "MatriarchalJavelin"},
|
||||||
|
"DruidHelms": {"WolfHead", "HawkHelm", "Antlers", "FalconMask", "SpiritMask", "AlphaHelm", "GriffonHeaddress", "HuntersGuise", "SacredFeathers", "TotemicMask", "BloodSpirit", "SunSpirit", "EarthSpirit", "SkySpirit", "DreamSpirit"},
|
||||||
|
"BarbarianHelms": {"JawboneCap", "FangedHelm", "HornedHelm", "AssaultHelmet", "AvengerGuard", "JawboneVisor", "LionHelm", "RageMask", "SavageHelmet", "SlayerGuard", "CarnageHelm", "FuryVisor", "DestroyerHelm", "ConquerorCrown", "GuardianCrown"},
|
||||||
|
"PaladinShields": {"Targe", "Rondache", "HeraldicShield", "AerinShield", "CrownShield", "AkaranTarge", "AkaranRondache", "ProtectorShield", "GildedShield", "RoyalShield", "SacredTarge", "SacredRondache", "KurastShield", "ZakarumShield", "VortexShield"},
|
||||||
|
"NecromancerShields": {"PreservedHead", "ZombieHead", "UnravellerHead", "GargoyleHead", "DemonHeadShield", "MummifiedTrophy", "FetishTrophy", "SextonTrophy", "CantorTrophy", "HierophantTrophy", "MinionSkull", "HellspawnSkull", "OverseerSkull", "SuccubusSkull", "BloodlordSkull"},
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsClass(itemClass string) bool {
|
||||||
|
for class := range classMapping {
|
||||||
|
if strings.EqualFold(itemClass, class) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func ClassForItemName(itemName string) (string, bool) {
|
||||||
|
for class, itemNames := range classMapping {
|
||||||
|
for _, name := range itemNames {
|
||||||
|
if strings.EqualFold(itemName, name) {
|
||||||
|
return class, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
677
pkg/data/item/name.go
Normal file
677
pkg/data/item/name.go
Normal file
@@ -0,0 +1,677 @@
|
|||||||
|
package item
|
||||||
|
|
||||||
|
const (
|
||||||
|
ScrollOfTownPortal = "ScrollOfTownPortal"
|
||||||
|
ScrollOfIdentify = "ScrollOfIdentify"
|
||||||
|
TomeOfTownPortal = "TomeOfTownPortal"
|
||||||
|
TomeOfIdentify = "TomeOfIdentify"
|
||||||
|
Key = "Key"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetNameByEnum(itemNumber uint) Name {
|
||||||
|
return Name(available[itemNumber])
|
||||||
|
}
|
||||||
|
|
||||||
|
type Name string
|
||||||
|
|
||||||
|
var available = []string{
|
||||||
|
"HandAxe",
|
||||||
|
"Axe",
|
||||||
|
"DoubleAxe",
|
||||||
|
"MilitaryPick",
|
||||||
|
"WarAxe",
|
||||||
|
"LargeAxe",
|
||||||
|
"BroadAxe",
|
||||||
|
"BattleAxe",
|
||||||
|
"GreatAxe",
|
||||||
|
"GiantAxe",
|
||||||
|
"Wand",
|
||||||
|
"YewWand",
|
||||||
|
"BoneWand",
|
||||||
|
"GrimWand",
|
||||||
|
"Club",
|
||||||
|
"Scepter",
|
||||||
|
"GrandScepter",
|
||||||
|
"WarScepter",
|
||||||
|
"SpikedClub",
|
||||||
|
"Mace",
|
||||||
|
"MorningStar",
|
||||||
|
"Flail",
|
||||||
|
"WarHammer",
|
||||||
|
"Maul",
|
||||||
|
"GreatMaul",
|
||||||
|
"ShortSword",
|
||||||
|
"Scimitar",
|
||||||
|
"Sabre",
|
||||||
|
"Falchion",
|
||||||
|
"CrystalSword",
|
||||||
|
"BroadSword",
|
||||||
|
"LongSword",
|
||||||
|
"WarSword",
|
||||||
|
"TwoHandedSword",
|
||||||
|
"Claymore",
|
||||||
|
"GiantSword",
|
||||||
|
"BastardSword",
|
||||||
|
"Flamberge",
|
||||||
|
"GreatSword",
|
||||||
|
"Dagger",
|
||||||
|
"Dirk",
|
||||||
|
"Kris",
|
||||||
|
"Blade",
|
||||||
|
"ThrowingKnife",
|
||||||
|
"ThrowingAxe",
|
||||||
|
"BalancedKnife",
|
||||||
|
"BalancedAxe",
|
||||||
|
"Javelin",
|
||||||
|
"Pilum",
|
||||||
|
"ShortSpear",
|
||||||
|
"Glaive",
|
||||||
|
"ThrowingSpear",
|
||||||
|
"Spear",
|
||||||
|
"Trident",
|
||||||
|
"Brandistock",
|
||||||
|
"Spetum",
|
||||||
|
"Pike",
|
||||||
|
"Bardiche",
|
||||||
|
"Voulge",
|
||||||
|
"Scythe",
|
||||||
|
"Poleaxe",
|
||||||
|
"Halberd",
|
||||||
|
"WarScythe",
|
||||||
|
"ShortStaff",
|
||||||
|
"LongStaff",
|
||||||
|
"GnarledStaff",
|
||||||
|
"BattleStaff",
|
||||||
|
"WarStaff",
|
||||||
|
"ShortBow",
|
||||||
|
"HuntersBow",
|
||||||
|
"LongBow",
|
||||||
|
"CompositeBow",
|
||||||
|
"ShortBattleBow",
|
||||||
|
"LongBattleBow",
|
||||||
|
"ShortWarBow",
|
||||||
|
"LongWarBow",
|
||||||
|
"LightCrossbow",
|
||||||
|
"Crossbow",
|
||||||
|
"HeavyCrossbow",
|
||||||
|
"RepeatingCrossbow",
|
||||||
|
"RancidGasPotion",
|
||||||
|
"OilPotion",
|
||||||
|
"ChokingGasPotion",
|
||||||
|
"ExplodingPotion",
|
||||||
|
"StranglingGasPotion",
|
||||||
|
"FulminatingPotion",
|
||||||
|
"DecoyGidbinn",
|
||||||
|
"TheGidbinn",
|
||||||
|
"WirtsLeg",
|
||||||
|
"HoradricMalus",
|
||||||
|
"HellforgeHammer",
|
||||||
|
"HoradricStaff",
|
||||||
|
"StaffOfKings",
|
||||||
|
"Hatchet",
|
||||||
|
"Cleaver",
|
||||||
|
"TwinAxe",
|
||||||
|
"Crowbill",
|
||||||
|
"Naga",
|
||||||
|
"MilitaryAxe",
|
||||||
|
"BeardedAxe",
|
||||||
|
"Tabar",
|
||||||
|
"GothicAxe",
|
||||||
|
"AncientAxe",
|
||||||
|
"BurntWand",
|
||||||
|
"PetrifiedWand",
|
||||||
|
"TombWand",
|
||||||
|
"GraveWand",
|
||||||
|
"Cudgel",
|
||||||
|
"RuneScepter",
|
||||||
|
"HolyWaterSprinkler",
|
||||||
|
"DivineScepter",
|
||||||
|
"BarbedClub",
|
||||||
|
"FlangedMace",
|
||||||
|
"JaggedStar",
|
||||||
|
"Knout",
|
||||||
|
"BattleHammer",
|
||||||
|
"WarClub",
|
||||||
|
"MartelDeFer",
|
||||||
|
"Gladius",
|
||||||
|
"Cutlass",
|
||||||
|
"Shamshir",
|
||||||
|
"Tulwar",
|
||||||
|
"DimensionalBlade",
|
||||||
|
"BattleSword",
|
||||||
|
"RuneSword",
|
||||||
|
"AncientSword",
|
||||||
|
"Espandon",
|
||||||
|
"DacianFalx",
|
||||||
|
"TuskSword",
|
||||||
|
"GothicSword",
|
||||||
|
"Zweihander",
|
||||||
|
"ExecutionerSword",
|
||||||
|
"Poignard",
|
||||||
|
"Rondel",
|
||||||
|
"Cinquedeas",
|
||||||
|
"Stiletto",
|
||||||
|
"BattleDart",
|
||||||
|
"Francisca",
|
||||||
|
"WarDart",
|
||||||
|
"Hurlbat",
|
||||||
|
"WarJavelin",
|
||||||
|
"GreatPilum",
|
||||||
|
"Simbilan",
|
||||||
|
"Spiculum",
|
||||||
|
"Harpoon",
|
||||||
|
"WarSpear",
|
||||||
|
"Fuscina",
|
||||||
|
"WarFork",
|
||||||
|
"Yari",
|
||||||
|
"Lance",
|
||||||
|
"LochaberAxe",
|
||||||
|
"Bill",
|
||||||
|
"BattleScythe",
|
||||||
|
"Partizan",
|
||||||
|
"BecDeCorbin",
|
||||||
|
"GrimScythe",
|
||||||
|
"JoStaff",
|
||||||
|
"QuarterStaff",
|
||||||
|
"CedarStaff",
|
||||||
|
"GothicStaff",
|
||||||
|
"RuneStaff",
|
||||||
|
"EdgeBow",
|
||||||
|
"RazorBow",
|
||||||
|
"CedarBow",
|
||||||
|
"DoubleBow",
|
||||||
|
"ShortSiegeBow",
|
||||||
|
"LargeSiegeBow",
|
||||||
|
"RuneBow",
|
||||||
|
"GothicBow",
|
||||||
|
"Arbalest",
|
||||||
|
"SiegeCrossbow",
|
||||||
|
"Ballista",
|
||||||
|
"ChuKoNu",
|
||||||
|
"KhalimsFlail",
|
||||||
|
"KhalimsWill",
|
||||||
|
"Katar",
|
||||||
|
"WristBlade",
|
||||||
|
"HatchetHands",
|
||||||
|
"Cestus",
|
||||||
|
"Claws",
|
||||||
|
"BladeTalons",
|
||||||
|
"ScissorsKatar",
|
||||||
|
"Quhab",
|
||||||
|
"WristSpike",
|
||||||
|
"Fascia",
|
||||||
|
"HandScythe",
|
||||||
|
"GreaterClaws",
|
||||||
|
"GreaterTalons",
|
||||||
|
"ScissorsQuhab",
|
||||||
|
"Suwayyah",
|
||||||
|
"WristSword",
|
||||||
|
"WarFist",
|
||||||
|
"BattleCestus",
|
||||||
|
"FeralClaws",
|
||||||
|
"RunicTalons",
|
||||||
|
"ScissorsSuwayyah",
|
||||||
|
"Tomahawk",
|
||||||
|
"SmallCrescent",
|
||||||
|
"EttinAxe",
|
||||||
|
"WarSpike",
|
||||||
|
"BerserkerAxe",
|
||||||
|
"FeralAxe",
|
||||||
|
"SilverEdgedAxe",
|
||||||
|
"Decapitator",
|
||||||
|
"ChampionAxe",
|
||||||
|
"GloriousAxe",
|
||||||
|
"PolishedWand",
|
||||||
|
"GhostWand",
|
||||||
|
"LichWand",
|
||||||
|
"UnearthedWand",
|
||||||
|
"Truncheon",
|
||||||
|
"MightyScepter",
|
||||||
|
"SeraphRod",
|
||||||
|
"Caduceus",
|
||||||
|
"TyrantClub",
|
||||||
|
"ReinforcedMace",
|
||||||
|
"DevilStar",
|
||||||
|
"Scourge",
|
||||||
|
"LegendaryMallet",
|
||||||
|
"OgreMaul",
|
||||||
|
"ThunderMaul",
|
||||||
|
"Falcata",
|
||||||
|
"Ataghan",
|
||||||
|
"ElegantBlade",
|
||||||
|
"HydraEdge",
|
||||||
|
"PhaseBlade",
|
||||||
|
"ConquestSword",
|
||||||
|
"CrypticSword",
|
||||||
|
"MythicalSword",
|
||||||
|
"LegendSword",
|
||||||
|
"HighlandBlade",
|
||||||
|
"BalrogBlade",
|
||||||
|
"ChampionSword",
|
||||||
|
"ColossusSword",
|
||||||
|
"ColossusBlade",
|
||||||
|
"BoneKnife",
|
||||||
|
"MithrilPoint",
|
||||||
|
"FangedKnife",
|
||||||
|
"LegendSpike",
|
||||||
|
"FlyingKnife",
|
||||||
|
"FlyingAxe",
|
||||||
|
"WingedKnife",
|
||||||
|
"WingedAxe",
|
||||||
|
"HyperionJavelin",
|
||||||
|
"StygianPilum",
|
||||||
|
"BalrogSpear",
|
||||||
|
"GhostGlaive",
|
||||||
|
"WingedHarpoon",
|
||||||
|
"HyperionSpear",
|
||||||
|
"StygianPike",
|
||||||
|
"Mancatcher",
|
||||||
|
"GhostSpear",
|
||||||
|
"WarPike",
|
||||||
|
"OgreAxe",
|
||||||
|
"ColossusVoulge",
|
||||||
|
"Thresher",
|
||||||
|
"CrypticAxe",
|
||||||
|
"GreatPoleaxe",
|
||||||
|
"GiantThresher",
|
||||||
|
"WalkingStick",
|
||||||
|
"Stalagmite",
|
||||||
|
"ElderStaff",
|
||||||
|
"Shillelagh",
|
||||||
|
"ArchonStaff",
|
||||||
|
"SpiderBow",
|
||||||
|
"BladeBow",
|
||||||
|
"ShadowBow",
|
||||||
|
"GreatBow",
|
||||||
|
"DiamondBow",
|
||||||
|
"CrusaderBow",
|
||||||
|
"WardBow",
|
||||||
|
"HydraBow",
|
||||||
|
"PelletBow",
|
||||||
|
"GorgonCrossbow",
|
||||||
|
"ColossusCrossbow",
|
||||||
|
"DemonCrossBow",
|
||||||
|
"EagleOrb",
|
||||||
|
"SacredGlobe",
|
||||||
|
"SmokedSphere",
|
||||||
|
"ClaspedOrb",
|
||||||
|
"JaredsStone",
|
||||||
|
"StagBow",
|
||||||
|
"ReflexBow",
|
||||||
|
"MaidenSpear",
|
||||||
|
"MaidenPike",
|
||||||
|
"MaidenJavelin",
|
||||||
|
"GlowingOrb",
|
||||||
|
"CrystallineGlobe",
|
||||||
|
"CloudySphere",
|
||||||
|
"SparklingBall",
|
||||||
|
"SwirlingCrystal",
|
||||||
|
"AshwoodBow",
|
||||||
|
"CeremonialBow",
|
||||||
|
"CeremonialSpear",
|
||||||
|
"CeremonialPike",
|
||||||
|
"CeremonialJavelin",
|
||||||
|
"HeavenlyStone",
|
||||||
|
"EldritchOrb",
|
||||||
|
"DemonHeart",
|
||||||
|
"VortexOrb",
|
||||||
|
"DimensionalShard",
|
||||||
|
"MatriarchalBow",
|
||||||
|
"GrandMatronBow",
|
||||||
|
"MatriarchalSpear",
|
||||||
|
"MatriarchalPike",
|
||||||
|
"MatriarchalJavelin",
|
||||||
|
"Cap",
|
||||||
|
"SkullCap",
|
||||||
|
"Helm",
|
||||||
|
"FullHelm",
|
||||||
|
"GreatHelm",
|
||||||
|
"Crown",
|
||||||
|
"Mask",
|
||||||
|
"QuiltedArmor",
|
||||||
|
"LeatherArmor",
|
||||||
|
"HardLeatherArmor",
|
||||||
|
"StuddedLeather",
|
||||||
|
"RingMail",
|
||||||
|
"ScaleMail",
|
||||||
|
"ChainMail",
|
||||||
|
"BreastPlate",
|
||||||
|
"SplintMail",
|
||||||
|
"PlateMail",
|
||||||
|
"FieldPlate",
|
||||||
|
"GothicPlate",
|
||||||
|
"FullPlateMail",
|
||||||
|
"AncientArmor",
|
||||||
|
"LightPlate",
|
||||||
|
"Buckler",
|
||||||
|
"SmallShield",
|
||||||
|
"LargeShield",
|
||||||
|
"KiteShield",
|
||||||
|
"TowerShield",
|
||||||
|
"GothicShield",
|
||||||
|
"LeatherGloves",
|
||||||
|
"HeavyGloves",
|
||||||
|
"ChainGloves",
|
||||||
|
"LightGauntlets",
|
||||||
|
"Gauntlets",
|
||||||
|
"Boots",
|
||||||
|
"HeavyBoots",
|
||||||
|
"ChainBoots",
|
||||||
|
"LightPlatedBoots",
|
||||||
|
"Greaves",
|
||||||
|
"Sash",
|
||||||
|
"LightBelt",
|
||||||
|
"Belt",
|
||||||
|
"HeavyBelt",
|
||||||
|
"PlatedBelt",
|
||||||
|
"BoneHelm",
|
||||||
|
"BoneShield",
|
||||||
|
"SpikedShield",
|
||||||
|
"WarHat",
|
||||||
|
"Sallet",
|
||||||
|
"Casque",
|
||||||
|
"Basinet",
|
||||||
|
"WingedHelm",
|
||||||
|
"GrandCrown",
|
||||||
|
"DeathMask",
|
||||||
|
"GhostArmor",
|
||||||
|
"SerpentskinArmor",
|
||||||
|
"DemonhideArmor",
|
||||||
|
"TrellisedArmor",
|
||||||
|
"LinkedMail",
|
||||||
|
"TigulatedMail",
|
||||||
|
"MeshArmor",
|
||||||
|
"Cuirass",
|
||||||
|
"RussetArmor",
|
||||||
|
"TemplarCoat",
|
||||||
|
"SharktoothArmor",
|
||||||
|
"EmbossedPlate",
|
||||||
|
"ChaosArmor",
|
||||||
|
"OrnatePlate",
|
||||||
|
"MagePlate",
|
||||||
|
"Defender",
|
||||||
|
"RoundShield",
|
||||||
|
"Scutum",
|
||||||
|
"DragonShield",
|
||||||
|
"Pavise",
|
||||||
|
"AncientShield",
|
||||||
|
"DemonhideGloves",
|
||||||
|
"SharkskinGloves",
|
||||||
|
"HeavyBracers",
|
||||||
|
"BattleGauntlets",
|
||||||
|
"WarGauntlets",
|
||||||
|
"DemonhideBoots",
|
||||||
|
"SharkskinBoots",
|
||||||
|
"MeshBoots",
|
||||||
|
"BattleBoots",
|
||||||
|
"WarBoots",
|
||||||
|
"DemonhideSash",
|
||||||
|
"SharkskinBelt",
|
||||||
|
"MeshBelt",
|
||||||
|
"BattleBelt",
|
||||||
|
"WarBelt",
|
||||||
|
"GrimHelm",
|
||||||
|
"GrimShield",
|
||||||
|
"BarbedShield",
|
||||||
|
"WolfHead",
|
||||||
|
"HawkHelm",
|
||||||
|
"Antlers",
|
||||||
|
"FalconMask",
|
||||||
|
"SpiritMask",
|
||||||
|
"JawboneCap",
|
||||||
|
"FangedHelm",
|
||||||
|
"HornedHelm",
|
||||||
|
"AssaultHelmet",
|
||||||
|
"AvengerGuard",
|
||||||
|
"Targe",
|
||||||
|
"Rondache",
|
||||||
|
"HeraldicShield",
|
||||||
|
"AerinShield",
|
||||||
|
"CrownShield",
|
||||||
|
"PreservedHead",
|
||||||
|
"ZombieHead",
|
||||||
|
"UnravellerHead",
|
||||||
|
"GargoyleHead",
|
||||||
|
"DemonHeadShield",
|
||||||
|
"Circlet",
|
||||||
|
"Coronet",
|
||||||
|
"Tiara",
|
||||||
|
"Diadem",
|
||||||
|
"Shako",
|
||||||
|
"Hydraskull",
|
||||||
|
"Armet",
|
||||||
|
"GiantConch",
|
||||||
|
"SpiredHelm",
|
||||||
|
"Corona",
|
||||||
|
"DemonHead",
|
||||||
|
"DuskShroud",
|
||||||
|
"Wyrmhide",
|
||||||
|
"ScarabHusk",
|
||||||
|
"WireFleece",
|
||||||
|
"DiamondMail",
|
||||||
|
"LoricatedMail",
|
||||||
|
"Boneweave",
|
||||||
|
"GreatHauberk",
|
||||||
|
"BalrogSkin",
|
||||||
|
"HellforgePlate",
|
||||||
|
"KrakenShell",
|
||||||
|
"LacqueredPlate",
|
||||||
|
"ShadowPlate",
|
||||||
|
"SacredArmor",
|
||||||
|
"ArchonPlate",
|
||||||
|
"Heater",
|
||||||
|
"Luna",
|
||||||
|
"Hyperion",
|
||||||
|
"Monarch",
|
||||||
|
"Aegis",
|
||||||
|
"Ward",
|
||||||
|
"BrambleMitts",
|
||||||
|
"VampireboneGloves",
|
||||||
|
"Vambraces",
|
||||||
|
"CrusaderGauntlets",
|
||||||
|
"OgreGauntlets",
|
||||||
|
"WyrmhideBoots",
|
||||||
|
"ScarabshellBoots",
|
||||||
|
"BoneweaveBoots",
|
||||||
|
"MirroredBoots",
|
||||||
|
"MyrmidonGreaves",
|
||||||
|
"SpiderwebSash",
|
||||||
|
"VampirefangBelt",
|
||||||
|
"MithrilCoil",
|
||||||
|
"TrollBelt",
|
||||||
|
"ColossusGirdle",
|
||||||
|
"BoneVisage",
|
||||||
|
"TrollNest",
|
||||||
|
"BladeBarrier",
|
||||||
|
"AlphaHelm",
|
||||||
|
"GriffonHeaddress",
|
||||||
|
"HuntersGuise",
|
||||||
|
"SacredFeathers",
|
||||||
|
"TotemicMask",
|
||||||
|
"JawboneVisor",
|
||||||
|
"LionHelm",
|
||||||
|
"RageMask",
|
||||||
|
"SavageHelmet",
|
||||||
|
"SlayerGuard",
|
||||||
|
"AkaranTarge",
|
||||||
|
"AkaranRondache",
|
||||||
|
"ProtectorShield",
|
||||||
|
"GildedShield",
|
||||||
|
"RoyalShield",
|
||||||
|
"MummifiedTrophy",
|
||||||
|
"FetishTrophy",
|
||||||
|
"SextonTrophy",
|
||||||
|
"CantorTrophy",
|
||||||
|
"HierophantTrophy",
|
||||||
|
"BloodSpirit",
|
||||||
|
"SunSpirit",
|
||||||
|
"EarthSpirit",
|
||||||
|
"SkySpirit",
|
||||||
|
"DreamSpirit",
|
||||||
|
"CarnageHelm",
|
||||||
|
"FuryVisor",
|
||||||
|
"DestroyerHelm",
|
||||||
|
"ConquerorCrown",
|
||||||
|
"GuardianCrown",
|
||||||
|
"SacredTarge",
|
||||||
|
"SacredRondache",
|
||||||
|
"KurastShield",
|
||||||
|
"ZakarumShield",
|
||||||
|
"VortexShield",
|
||||||
|
"MinionSkull",
|
||||||
|
"HellspawnSkull",
|
||||||
|
"OverseerSkull",
|
||||||
|
"SuccubusSkull",
|
||||||
|
"BloodlordSkull",
|
||||||
|
"Elixir",
|
||||||
|
"INVALID509",
|
||||||
|
"INVALID510",
|
||||||
|
"INVALID511",
|
||||||
|
"INVALID512",
|
||||||
|
"StaminaPotion",
|
||||||
|
"AntidotePotion",
|
||||||
|
"RejuvenationPotion",
|
||||||
|
"FullRejuvenationPotion",
|
||||||
|
"ThawingPotion",
|
||||||
|
"TomeOfTownPortal",
|
||||||
|
"TomeOfIdentify",
|
||||||
|
"Amulet",
|
||||||
|
"AmuletOfTheViper",
|
||||||
|
"Ring",
|
||||||
|
"Gold",
|
||||||
|
"ScrollOfInifuss",
|
||||||
|
"KeyToTheCairnStones",
|
||||||
|
"Arrows",
|
||||||
|
"Torch",
|
||||||
|
"Bolts",
|
||||||
|
"ScrollOfTownPortal",
|
||||||
|
"ScrollOfIdentify",
|
||||||
|
"Heart",
|
||||||
|
"Brain",
|
||||||
|
"Jawbone",
|
||||||
|
"Eye",
|
||||||
|
"Horn",
|
||||||
|
"Tail",
|
||||||
|
"Flag",
|
||||||
|
"Fang",
|
||||||
|
"Quill",
|
||||||
|
"Soul",
|
||||||
|
"Scalp",
|
||||||
|
"Spleen",
|
||||||
|
"Key",
|
||||||
|
"TheBlackTowerKey",
|
||||||
|
"PotionOfLife",
|
||||||
|
"AJadeFigurine",
|
||||||
|
"TheGoldenBird",
|
||||||
|
"LamEsensTome",
|
||||||
|
"HoradricCube",
|
||||||
|
"HoradricScroll",
|
||||||
|
"MephistosSoulstone",
|
||||||
|
"BookOfSkill",
|
||||||
|
"KhalimsEye",
|
||||||
|
"KhalimsHeart",
|
||||||
|
"KhalimsBrain",
|
||||||
|
"Ear",
|
||||||
|
"ChippedAmethyst",
|
||||||
|
"FlawedAmethyst",
|
||||||
|
"Amethyst",
|
||||||
|
"FlawlessAmethyst",
|
||||||
|
"PerfectAmethyst",
|
||||||
|
"ChippedTopaz",
|
||||||
|
"FlawedTopaz",
|
||||||
|
"Topaz",
|
||||||
|
"FlawlessTopaz",
|
||||||
|
"PerfectTopaz",
|
||||||
|
"ChippedSapphire",
|
||||||
|
"FlawedSapphire",
|
||||||
|
"Sapphire",
|
||||||
|
"FlawlessSapphire",
|
||||||
|
"PerfectSapphire",
|
||||||
|
"ChippedEmerald",
|
||||||
|
"FlawedEmerald",
|
||||||
|
"Emerald",
|
||||||
|
"FlawlessEmerald",
|
||||||
|
"PerfectEmerald",
|
||||||
|
"ChippedRuby",
|
||||||
|
"FlawedRuby",
|
||||||
|
"Ruby",
|
||||||
|
"FlawlessRuby",
|
||||||
|
"PerfectRuby",
|
||||||
|
"ChippedDiamond",
|
||||||
|
"FlawedDiamond",
|
||||||
|
"Diamond",
|
||||||
|
"FlawlessDiamond",
|
||||||
|
"PerfectDiamond",
|
||||||
|
"MinorHealingPotion",
|
||||||
|
"LightHealingPotion",
|
||||||
|
"HealingPotion",
|
||||||
|
"GreaterHealingPotion",
|
||||||
|
"SuperHealingPotion",
|
||||||
|
"MinorManaPotion",
|
||||||
|
"LightManaPotion",
|
||||||
|
"ManaPotion",
|
||||||
|
"GreaterManaPotion",
|
||||||
|
"SuperManaPotion",
|
||||||
|
"ChippedSkull",
|
||||||
|
"FlawedSkull",
|
||||||
|
"Skull",
|
||||||
|
"FlawlessSkull",
|
||||||
|
"PerfectSkull",
|
||||||
|
"Herb",
|
||||||
|
"SmallCharm",
|
||||||
|
"LargeCharm",
|
||||||
|
"GrandCharm",
|
||||||
|
"INVALID606",
|
||||||
|
"INVALID607",
|
||||||
|
"INVALID608",
|
||||||
|
"INVALID609",
|
||||||
|
"ElRune",
|
||||||
|
"EldRune",
|
||||||
|
"TirRune",
|
||||||
|
"NefRune",
|
||||||
|
"EthRune",
|
||||||
|
"IthRune",
|
||||||
|
"TalRune",
|
||||||
|
"RalRune",
|
||||||
|
"OrtRune",
|
||||||
|
"ThulRune",
|
||||||
|
"AmnRune",
|
||||||
|
"SolRune",
|
||||||
|
"ShaelRune",
|
||||||
|
"DolRune",
|
||||||
|
"HelRune",
|
||||||
|
"IoRune",
|
||||||
|
"LumRune",
|
||||||
|
"KoRune",
|
||||||
|
"FalRune",
|
||||||
|
"LemRune",
|
||||||
|
"PulRune",
|
||||||
|
"UmRune",
|
||||||
|
"MalRune",
|
||||||
|
"IstRune",
|
||||||
|
"GulRune",
|
||||||
|
"VexRune",
|
||||||
|
"OhmRune",
|
||||||
|
"LoRune",
|
||||||
|
"SurRune",
|
||||||
|
"BerRune",
|
||||||
|
"JahRune",
|
||||||
|
"ChamRune",
|
||||||
|
"ZodRune",
|
||||||
|
"Jewel",
|
||||||
|
"MalahsPotion",
|
||||||
|
"ScrollOfKnowledge",
|
||||||
|
"ScrollOfResistance",
|
||||||
|
"KeyOfTerror",
|
||||||
|
"KeyOfHate",
|
||||||
|
"KeyOfDestruction",
|
||||||
|
"DiablosHorn",
|
||||||
|
"BaalsEye",
|
||||||
|
"MephistosBrain",
|
||||||
|
"TokenofAbsolution",
|
||||||
|
"TwistedEssenceOfSuffering",
|
||||||
|
"ChargedEssenceOfHatred",
|
||||||
|
"BurningEssenceOfTerror",
|
||||||
|
"FesteringEssenceOfDestruction",
|
||||||
|
"StandardOfHeroes",
|
||||||
|
}
|
||||||
31
pkg/data/item/quality.go
Normal file
31
pkg/data/item/quality.go
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package item
|
||||||
|
|
||||||
|
type Quality int
|
||||||
|
|
||||||
|
const (
|
||||||
|
QualityNormal Quality = 0x02
|
||||||
|
QualitySuperior Quality = 0x03
|
||||||
|
QualityMagic Quality = 0x04
|
||||||
|
QualitySet Quality = 0x05
|
||||||
|
QualityRare Quality = 0x06
|
||||||
|
QualityUnique Quality = 0x07
|
||||||
|
)
|
||||||
|
|
||||||
|
func (q Quality) ToString() string {
|
||||||
|
switch q {
|
||||||
|
case QualityNormal:
|
||||||
|
return "Normal"
|
||||||
|
case QualitySuperior:
|
||||||
|
return "Superior"
|
||||||
|
case QualityMagic:
|
||||||
|
return "Magic"
|
||||||
|
case QualitySet:
|
||||||
|
return "Set"
|
||||||
|
case QualityRare:
|
||||||
|
return "Rare"
|
||||||
|
case QualityUnique:
|
||||||
|
return "Unique"
|
||||||
|
}
|
||||||
|
|
||||||
|
return "UnknownItemQuality"
|
||||||
|
}
|
||||||
45
pkg/data/items.go
Normal file
45
pkg/data/items.go
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
package game
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hectorgimenez/d2go/pkg/data/item"
|
||||||
|
"github.com/hectorgimenez/d2go/pkg/data/stat"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Items struct {
|
||||||
|
Belt Belt
|
||||||
|
Inventory Inventory
|
||||||
|
Shop []Item
|
||||||
|
Ground []Item
|
||||||
|
Equipped []Item
|
||||||
|
}
|
||||||
|
|
||||||
|
type Inventory []Item
|
||||||
|
type UnitID int
|
||||||
|
|
||||||
|
type Item struct {
|
||||||
|
UnitID
|
||||||
|
Name item.Name
|
||||||
|
Quality item.Quality
|
||||||
|
Position Position
|
||||||
|
Ethereal bool
|
||||||
|
IsHovered bool
|
||||||
|
Stats map[stat.Stat]int
|
||||||
|
Identified bool
|
||||||
|
IsVendor bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i Item) IsPotion() bool {
|
||||||
|
return i.IsHealingPotion() || i.IsManaPotion() || i.IsRejuvPotion()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i Item) IsHealingPotion() bool {
|
||||||
|
return strings.Contains(string(i.Name), string(HealingPotion))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i Item) IsManaPotion() bool {
|
||||||
|
return strings.Contains(string(i.Name), string(ManaPotion))
|
||||||
|
}
|
||||||
|
func (i Item) IsRejuvPotion() bool {
|
||||||
|
return strings.Contains(string(i.Name), string(RejuvenationPotion))
|
||||||
|
}
|
||||||
115
pkg/data/npc.go
Normal file
115
pkg/data/npc.go
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
package game
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hectorgimenez/d2go/pkg/data/npc"
|
||||||
|
"github.com/hectorgimenez/d2go/pkg/data/stat"
|
||||||
|
)
|
||||||
|
|
||||||
|
type NPC struct {
|
||||||
|
ID npc.ID
|
||||||
|
Name string
|
||||||
|
Positions []Position
|
||||||
|
}
|
||||||
|
|
||||||
|
type MonsterType string
|
||||||
|
|
||||||
|
type Monster struct {
|
||||||
|
UnitID
|
||||||
|
Name npc.ID
|
||||||
|
IsHovered bool
|
||||||
|
Position Position
|
||||||
|
Stats map[stat.Stat]int
|
||||||
|
Type MonsterType
|
||||||
|
}
|
||||||
|
|
||||||
|
type Monsters []Monster
|
||||||
|
type NPCs []NPC
|
||||||
|
|
||||||
|
func (n NPCs) FindOne(npcid npc.ID) (NPC, bool) {
|
||||||
|
for _, np := range n {
|
||||||
|
if np.ID == npcid {
|
||||||
|
return np, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NPC{}, false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Monsters) FindOne(id npc.ID, t MonsterType) (Monster, bool) {
|
||||||
|
for _, monster := range m {
|
||||||
|
if monster.Name == id {
|
||||||
|
if t == MonsterTypeNone || t == monster.Type {
|
||||||
|
return monster, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Monster{}, false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Monsters) Enemies(filters ...MonsterFilter) []Monster {
|
||||||
|
monsters := make([]Monster, 0)
|
||||||
|
for _, mo := range m {
|
||||||
|
if !mo.IsMerc() {
|
||||||
|
monsters = append(monsters, mo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, f := range filters {
|
||||||
|
monsters = f(monsters)
|
||||||
|
}
|
||||||
|
|
||||||
|
return monsters
|
||||||
|
}
|
||||||
|
|
||||||
|
type MonsterFilter func(m Monsters) []Monster
|
||||||
|
|
||||||
|
func MonsterEliteFilter() MonsterFilter {
|
||||||
|
return func(m Monsters) []Monster {
|
||||||
|
var filteredMonsters []Monster
|
||||||
|
for _, mo := range m {
|
||||||
|
if mo.Type == MonsterTypeMinion || mo.Type == MonsterTypeUnique || mo.Type == MonsterTypeChampion || mo.Type == MonsterTypeSuperUnique {
|
||||||
|
filteredMonsters = append(filteredMonsters, mo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return filteredMonsters
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func MonsterAnyFilter() MonsterFilter {
|
||||||
|
return func(m Monsters) []Monster {
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Monsters) FindByID(id UnitID) (Monster, bool) {
|
||||||
|
for _, monster := range m {
|
||||||
|
if monster.UnitID == id {
|
||||||
|
return monster, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Monster{}, false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Monster) IsImmune(resist stat.Resist) bool {
|
||||||
|
for st, value := range m.Stats {
|
||||||
|
// We only want max resistance
|
||||||
|
if value < 100 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if resist == stat.ColdImmune && st == stat.ColdResist {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Monster) IsMerc() bool {
|
||||||
|
if m.Name == npc.Guard {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
740
pkg/data/npc/npc.go
Normal file
740
pkg/data/npc/npc.go
Normal file
@@ -0,0 +1,740 @@
|
|||||||
|
package npc
|
||||||
|
|
||||||
|
type ID int
|
||||||
|
|
||||||
|
const (
|
||||||
|
Skeleton ID = iota
|
||||||
|
Returned
|
||||||
|
BoneWarrior
|
||||||
|
BurningDead
|
||||||
|
Horror
|
||||||
|
Zombie
|
||||||
|
HungryDead
|
||||||
|
Ghoul
|
||||||
|
DrownedCarcass
|
||||||
|
PlagueBearer
|
||||||
|
Afflicted
|
||||||
|
Tainted
|
||||||
|
Misshapen
|
||||||
|
Disfigured
|
||||||
|
Damned
|
||||||
|
FoulCrow
|
||||||
|
BloodHawk
|
||||||
|
BlackRaptor
|
||||||
|
CloudStalker
|
||||||
|
Fallen
|
||||||
|
Carver
|
||||||
|
Devilkin
|
||||||
|
DarkOne
|
||||||
|
WarpedFallen
|
||||||
|
Brute
|
||||||
|
Yeti
|
||||||
|
Crusher
|
||||||
|
WailingBeast
|
||||||
|
GargantuanBeast
|
||||||
|
SandRaer
|
||||||
|
Marauder
|
||||||
|
Invader
|
||||||
|
Infel
|
||||||
|
Assailant
|
||||||
|
Gorgon
|
||||||
|
Gorgon2
|
||||||
|
Gorgon3
|
||||||
|
Gorgon4
|
||||||
|
Ghost
|
||||||
|
Wraith
|
||||||
|
Specter
|
||||||
|
Apparition
|
||||||
|
DarkShape
|
||||||
|
DarkHunter
|
||||||
|
VileHunter
|
||||||
|
DarkStalker
|
||||||
|
BlackRogue
|
||||||
|
FleshHunter
|
||||||
|
DuneBeast
|
||||||
|
RockDweller
|
||||||
|
JungleHunter
|
||||||
|
DoomApe
|
||||||
|
TempleGuard
|
||||||
|
MoonClan
|
||||||
|
NightClan
|
||||||
|
BloodClan
|
||||||
|
HellClan
|
||||||
|
DeathClan
|
||||||
|
FallenShaman
|
||||||
|
CarverShaman
|
||||||
|
DevilkinShaman
|
||||||
|
DarkShaman
|
||||||
|
WarpedShaman
|
||||||
|
QuillRat
|
||||||
|
SpikeFiend
|
||||||
|
ThornBeast
|
||||||
|
RazorSpine
|
||||||
|
JungleUrchin
|
||||||
|
SandMaggot
|
||||||
|
RockWorm
|
||||||
|
Devourer
|
||||||
|
GiantLamprey
|
||||||
|
WorldKiller
|
||||||
|
TombViper
|
||||||
|
ClawViper
|
||||||
|
Salamander
|
||||||
|
PitViper
|
||||||
|
SerpentMagus
|
||||||
|
SandLeaper
|
||||||
|
CaveLeaper
|
||||||
|
TombCreeper
|
||||||
|
TreeLurker
|
||||||
|
RazorPitDemon
|
||||||
|
Huntress
|
||||||
|
SaberCat
|
||||||
|
NightTiger
|
||||||
|
HellCat
|
||||||
|
Itchies
|
||||||
|
BlackLocusts
|
||||||
|
PlagueBugs
|
||||||
|
HellSwarm
|
||||||
|
DungSoldier
|
||||||
|
SandWarrior
|
||||||
|
Scarab
|
||||||
|
SteelWeevil
|
||||||
|
AlbinoRoach
|
||||||
|
DriedCorpse
|
||||||
|
Decayed
|
||||||
|
Embalmed
|
||||||
|
PreservedDead
|
||||||
|
Cadaver
|
||||||
|
HollowOne
|
||||||
|
Guardian
|
||||||
|
Unraveler
|
||||||
|
HoradrimAncient
|
||||||
|
BaalSubjectMummy
|
||||||
|
ChaosHorde
|
||||||
|
ChaosHorde2
|
||||||
|
ChaosHorde3
|
||||||
|
ChaosHorde4
|
||||||
|
CarrionBird
|
||||||
|
UndeadScavenger
|
||||||
|
HellBuzzard
|
||||||
|
WingedNightmare
|
||||||
|
Sucker
|
||||||
|
Feeder
|
||||||
|
BloodHook
|
||||||
|
BloodWing
|
||||||
|
Gloam
|
||||||
|
SwampGhost
|
||||||
|
BurningSoul
|
||||||
|
BlackSoul
|
||||||
|
Arach
|
||||||
|
SandFisher
|
||||||
|
PoisonSpinner
|
||||||
|
FlameSper
|
||||||
|
SperMagus
|
||||||
|
ThornedHulk
|
||||||
|
BrambleHulk
|
||||||
|
Thrasher
|
||||||
|
Spikefist
|
||||||
|
GhoulLord
|
||||||
|
NightLord
|
||||||
|
DarkLord
|
||||||
|
BloodLord
|
||||||
|
Banished
|
||||||
|
DesertWing
|
||||||
|
Fiend
|
||||||
|
Gloombat
|
||||||
|
BloodDiver
|
||||||
|
DarkFamiliar
|
||||||
|
RatMan
|
||||||
|
Fetish
|
||||||
|
Flayer
|
||||||
|
SoulKiller
|
||||||
|
StygianDoll
|
||||||
|
DeckardCain
|
||||||
|
Gheed
|
||||||
|
Akara
|
||||||
|
Chicken
|
||||||
|
Kashya
|
||||||
|
Rat
|
||||||
|
Rogue
|
||||||
|
HellMeteor
|
||||||
|
Charsi
|
||||||
|
Warriv
|
||||||
|
Andariel
|
||||||
|
Bird
|
||||||
|
Bird2
|
||||||
|
Bat
|
||||||
|
DarkRanger
|
||||||
|
VileArcher
|
||||||
|
DarkArcher
|
||||||
|
BlackArcher
|
||||||
|
FleshArcher
|
||||||
|
DarkSpearwoman
|
||||||
|
VileLancer
|
||||||
|
DarkLancer
|
||||||
|
BlackLancer
|
||||||
|
FleshLancer
|
||||||
|
SkeletonArcher
|
||||||
|
ReturnedArcher
|
||||||
|
BoneArcher
|
||||||
|
BurningDeadArcher
|
||||||
|
HorrorArcher
|
||||||
|
Warriv2
|
||||||
|
Atma
|
||||||
|
Drognan
|
||||||
|
Fara
|
||||||
|
Cow
|
||||||
|
SandMaggotYoung
|
||||||
|
RockWormYoung
|
||||||
|
DevourerYoung
|
||||||
|
GiantLampreyYoung
|
||||||
|
WorldKillerYoung
|
||||||
|
Camel
|
||||||
|
Blunderbore
|
||||||
|
Gorbelly
|
||||||
|
Mauler
|
||||||
|
Urdar
|
||||||
|
SandMaggotEgg
|
||||||
|
RockWormEgg
|
||||||
|
DevourerEgg
|
||||||
|
GiantLampreyEgg
|
||||||
|
WorldKillerEgg
|
||||||
|
Act2Male
|
||||||
|
Act2Female
|
||||||
|
Act2Child
|
||||||
|
Greiz
|
||||||
|
Elzix
|
||||||
|
Geglash
|
||||||
|
Jerhyn
|
||||||
|
Lysander
|
||||||
|
Act2Guard
|
||||||
|
Act2Vendor
|
||||||
|
Act2Vendor2
|
||||||
|
FoulCrowNest
|
||||||
|
BloodHawkNest
|
||||||
|
BlackVultureNest
|
||||||
|
CloudStalkerNest
|
||||||
|
Meshif
|
||||||
|
Duriel
|
||||||
|
UndeadRatMan
|
||||||
|
UndeadFetish
|
||||||
|
UndeadFlayer
|
||||||
|
UndeadSoulKiller
|
||||||
|
UndeadStygianDoll
|
||||||
|
DarkGuard
|
||||||
|
DarkGuard2
|
||||||
|
DarkGuard3
|
||||||
|
DarkGuard4
|
||||||
|
DarkGuard5
|
||||||
|
BloodMage
|
||||||
|
BloodMage2
|
||||||
|
BloodMage3
|
||||||
|
BloodMage4
|
||||||
|
BloodMage5
|
||||||
|
Maggot
|
||||||
|
MummyGenerator
|
||||||
|
Radament
|
||||||
|
FireBeast
|
||||||
|
IceGlobe
|
||||||
|
LightningBeast
|
||||||
|
PoisonOrb
|
||||||
|
FlyingScimitar
|
||||||
|
Zakarumite
|
||||||
|
Faithful
|
||||||
|
Zealot
|
||||||
|
Sexton
|
||||||
|
Cantor
|
||||||
|
Heirophant
|
||||||
|
Heirophant2
|
||||||
|
Mephisto
|
||||||
|
Diablo
|
||||||
|
DeckardCain2
|
||||||
|
DeckardCain3
|
||||||
|
DeckardCain4
|
||||||
|
SwampDweller
|
||||||
|
BogCreature
|
||||||
|
SlimePrince
|
||||||
|
Summoner
|
||||||
|
Tyrael
|
||||||
|
Asheara
|
||||||
|
Hratli
|
||||||
|
Alkor
|
||||||
|
Ormus
|
||||||
|
Izual
|
||||||
|
Halbu
|
||||||
|
WaterWatcherLimb
|
||||||
|
RiverStalkerLimb
|
||||||
|
StygianWatcherLimb
|
||||||
|
WaterWatcherHead
|
||||||
|
RiverStalkerHead
|
||||||
|
StygianWatcherHead
|
||||||
|
Meshif2
|
||||||
|
DeckardCain5
|
||||||
|
Navi
|
||||||
|
BloodRaven
|
||||||
|
Bug
|
||||||
|
Scorpion
|
||||||
|
RogueScout
|
||||||
|
Rogue2
|
||||||
|
Rogue3
|
||||||
|
GargoyleTrap
|
||||||
|
ReturnedMage
|
||||||
|
BoneMage
|
||||||
|
BurningDeadMage
|
||||||
|
HorrorMage
|
||||||
|
RatManShaman
|
||||||
|
FetishShaman
|
||||||
|
FlayerShaman
|
||||||
|
SoulKillerShaman
|
||||||
|
StygianDollShaman
|
||||||
|
Larva
|
||||||
|
SandMaggotQueen
|
||||||
|
RockWormQueen
|
||||||
|
DevourerQueen
|
||||||
|
GiantLampreyQueen
|
||||||
|
WorldKillerQueen
|
||||||
|
ClayGolem
|
||||||
|
BloodGolem
|
||||||
|
IronGolem
|
||||||
|
FireGolem
|
||||||
|
Familiar
|
||||||
|
Act3Male
|
||||||
|
NightMarauder
|
||||||
|
Act3Female
|
||||||
|
Natalya
|
||||||
|
FleshSpawner
|
||||||
|
StygianHag
|
||||||
|
Grotesque
|
||||||
|
FleshBeast
|
||||||
|
StygianDog
|
||||||
|
GrotesqueWyrm
|
||||||
|
Groper
|
||||||
|
Strangler
|
||||||
|
StormCaster
|
||||||
|
Corpulent
|
||||||
|
CorpseSpitter
|
||||||
|
MawFiend
|
||||||
|
DoomKnight
|
||||||
|
AbyssKnight
|
||||||
|
OblivionKnight
|
||||||
|
QuillBear
|
||||||
|
SpikeGiant
|
||||||
|
ThornBrute
|
||||||
|
RazorBeast
|
||||||
|
GiantUrchin
|
||||||
|
Snake
|
||||||
|
Parrot
|
||||||
|
Fish
|
||||||
|
EvilHole
|
||||||
|
EvilHole2
|
||||||
|
EvilHole3
|
||||||
|
EvilHole4
|
||||||
|
EvilHole5
|
||||||
|
FireboltTrap
|
||||||
|
HorzMissileTrap
|
||||||
|
VertMissileTrap
|
||||||
|
PoisonCloudTrap
|
||||||
|
LightningTrap
|
||||||
|
Kaelan
|
||||||
|
InvisoSpawner
|
||||||
|
DiabloClone
|
||||||
|
SuckerNest
|
||||||
|
FeederNest
|
||||||
|
BloodHookNest
|
||||||
|
BloodWingNest
|
||||||
|
Guard
|
||||||
|
MiniSper
|
||||||
|
BonePrison
|
||||||
|
BonePrison2
|
||||||
|
BonePrison3
|
||||||
|
BonePrison4
|
||||||
|
BoneWall
|
||||||
|
CouncilMember
|
||||||
|
CouncilMember2
|
||||||
|
CouncilMember3
|
||||||
|
Turret
|
||||||
|
Turret2
|
||||||
|
Turret3
|
||||||
|
Hydra
|
||||||
|
Hydra2
|
||||||
|
Hydra3
|
||||||
|
MeleeTrap
|
||||||
|
SevenTombs
|
||||||
|
Decoy
|
||||||
|
Valkyrie
|
||||||
|
Act2Guard3
|
||||||
|
IronWolf
|
||||||
|
Balrog
|
||||||
|
PitLord
|
||||||
|
VenomLord
|
||||||
|
NecroSkeleton
|
||||||
|
NecroMage
|
||||||
|
Griswold
|
||||||
|
CompellingOrbNpc
|
||||||
|
Tyrael2
|
||||||
|
DarkWanderer
|
||||||
|
NovaTrap
|
||||||
|
SpiritMummy
|
||||||
|
LightningSpire
|
||||||
|
FireTower
|
||||||
|
Slinger
|
||||||
|
SpearCat
|
||||||
|
NightSlinger
|
||||||
|
HellSlinger
|
||||||
|
Act2Guard4
|
||||||
|
Act2Guard5
|
||||||
|
ReturnedMage2
|
||||||
|
BoneMage2
|
||||||
|
BaalColdMage
|
||||||
|
HorrorMage2
|
||||||
|
ReturnedMage3
|
||||||
|
BoneMage3
|
||||||
|
BurningDeadMage2
|
||||||
|
HorrorMage3
|
||||||
|
ReturnedMage4
|
||||||
|
BoneMage4
|
||||||
|
BurningDeadMage3
|
||||||
|
HorrorMage4
|
||||||
|
HellBovine
|
||||||
|
Window
|
||||||
|
Window2
|
||||||
|
SpearCat2
|
||||||
|
NightSlinger2
|
||||||
|
RatMan2
|
||||||
|
Fetish2
|
||||||
|
Flayer2
|
||||||
|
SoulKiller2
|
||||||
|
StygianDoll2
|
||||||
|
MephistoSpirit
|
||||||
|
TheSmith
|
||||||
|
TrappedSoul
|
||||||
|
TrappedSoul2
|
||||||
|
Jamella
|
||||||
|
Izual2
|
||||||
|
RatMan3
|
||||||
|
Malachai
|
||||||
|
Hephasto
|
||||||
|
WakeOfDestruction
|
||||||
|
ChargedBoltSentry
|
||||||
|
LightningSentry
|
||||||
|
BladeCreeper
|
||||||
|
InvisiblePet
|
||||||
|
InfernoSentry
|
||||||
|
DeathSentry
|
||||||
|
ShadowWarrior
|
||||||
|
ShadowMaster
|
||||||
|
DruHawk
|
||||||
|
DruSpiritWolf
|
||||||
|
DruFenris
|
||||||
|
SpiritOfBarbs
|
||||||
|
HeartOfWolverine
|
||||||
|
OakSage
|
||||||
|
DruPlaguePoppy
|
||||||
|
DruCycleOfLife
|
||||||
|
VineCreature
|
||||||
|
DruBear
|
||||||
|
Eagle
|
||||||
|
Wolf
|
||||||
|
Bear
|
||||||
|
BarricadeDoor
|
||||||
|
BarricadeDoor2
|
||||||
|
PrisonDoor
|
||||||
|
BarricadeTower
|
||||||
|
RotWalker
|
||||||
|
ReanimatedHorde
|
||||||
|
ProwlingDead
|
||||||
|
UnholyCorpse
|
||||||
|
DefiledWarrior
|
||||||
|
SiegeBeast
|
||||||
|
CrushBiest
|
||||||
|
BloodBringer
|
||||||
|
GoreBearer
|
||||||
|
DeamonSteed
|
||||||
|
SnowYeti
|
||||||
|
SnowYeti2
|
||||||
|
SnowYeti3
|
||||||
|
SnowYeti4
|
||||||
|
WolfRer
|
||||||
|
WolfRer2
|
||||||
|
WolfRer3
|
||||||
|
MinionExp
|
||||||
|
SlayerExp
|
||||||
|
IceBoar
|
||||||
|
FireBoar
|
||||||
|
HellSpawn
|
||||||
|
IceSpawn
|
||||||
|
GreaterHellSpawn
|
||||||
|
GreaterIceSpawn
|
||||||
|
FanaticMinion
|
||||||
|
BerserkSlayer
|
||||||
|
ConsumedIceBoar
|
||||||
|
ConsumedFireBoar
|
||||||
|
FrenziedHellSpawn
|
||||||
|
FrenziedIceSpawn
|
||||||
|
InsaneHellSpawn
|
||||||
|
InsaneIceSpawn
|
||||||
|
SuccubusExp
|
||||||
|
VileTemptress
|
||||||
|
StygianHarlot
|
||||||
|
HellTemptress
|
||||||
|
BloodTemptress
|
||||||
|
Dominus
|
||||||
|
VileWitch
|
||||||
|
StygianFury
|
||||||
|
BloodWitch
|
||||||
|
HellWitch
|
||||||
|
OverSeer
|
||||||
|
Lasher
|
||||||
|
OverLord
|
||||||
|
BloodBoss
|
||||||
|
HellWhip
|
||||||
|
MinionSpawner
|
||||||
|
MinionSlayerSpawner
|
||||||
|
MinionBoarSpawner
|
||||||
|
MinionBoarSpawner2
|
||||||
|
MinionSpawnSpawner
|
||||||
|
MinionBoarSpawner3
|
||||||
|
MinionBoarSpawner4
|
||||||
|
MinionSpawnSpawner2
|
||||||
|
Imp
|
||||||
|
Imp2
|
||||||
|
Imp3
|
||||||
|
Imp4
|
||||||
|
Imp5
|
||||||
|
CatapultS
|
||||||
|
CatapultE
|
||||||
|
CatapultSiege
|
||||||
|
CatapultW
|
||||||
|
FrozenHorror
|
||||||
|
FrozenHorror2
|
||||||
|
FrozenHorror3
|
||||||
|
FrozenHorror4
|
||||||
|
FrozenHorror5
|
||||||
|
BloodLord2
|
||||||
|
BloodLord3
|
||||||
|
BloodLord4
|
||||||
|
BloodLord5
|
||||||
|
BloodLord6
|
||||||
|
Larzuk
|
||||||
|
Drehya
|
||||||
|
Malah
|
||||||
|
NihlathakTown
|
||||||
|
QualKehk
|
||||||
|
CatapultSpotterS
|
||||||
|
CatapultSpotterE
|
||||||
|
CatapultSpotterSiegeName
|
||||||
|
CatapultSpotterW
|
||||||
|
DeckardCain6
|
||||||
|
Tyrael3
|
||||||
|
Act5Combatant
|
||||||
|
Act5Combatant2
|
||||||
|
BarricadeWallRight
|
||||||
|
BarricadeWallLeft
|
||||||
|
Nihlathak
|
||||||
|
Drehya2
|
||||||
|
EvilHut
|
||||||
|
DeathMauler
|
||||||
|
DeathMauler2
|
||||||
|
DeathMauler3
|
||||||
|
DeathMauler4
|
||||||
|
DeathMauler5
|
||||||
|
POW
|
||||||
|
Act5Townguard
|
||||||
|
Act5Townguard2
|
||||||
|
AncientStatue
|
||||||
|
AncientStatueNpc2
|
||||||
|
AncientStatueNpc3
|
||||||
|
AncientBarbarian
|
||||||
|
AncientBarbarian2
|
||||||
|
AncientBarbarian3
|
||||||
|
BaalThrone
|
||||||
|
BaalCrab
|
||||||
|
BaalTaunt
|
||||||
|
PutrDefiler
|
||||||
|
PutrDefiler2
|
||||||
|
PutrDefiler3
|
||||||
|
PutrDefiler4
|
||||||
|
PutrDefiler5
|
||||||
|
PainWorm
|
||||||
|
PainWorm2
|
||||||
|
PainWorm3
|
||||||
|
PainWorm4
|
||||||
|
PainWorm5
|
||||||
|
Bunny
|
||||||
|
CouncilMemberBall
|
||||||
|
VenomLord2
|
||||||
|
BaalCrabToStairs
|
||||||
|
Act5Hireling1Hand
|
||||||
|
Act5Hireling2Hand
|
||||||
|
BaalTentacle
|
||||||
|
BaalTentacle2
|
||||||
|
BaalTentacle3
|
||||||
|
BaalTentacle4
|
||||||
|
BaalTentacle5
|
||||||
|
InjuredBarbarian
|
||||||
|
InjuredBarbarian2
|
||||||
|
InjuredBarbarian3
|
||||||
|
BaalCrabClone
|
||||||
|
BaalsMinion
|
||||||
|
BaalsMinion2
|
||||||
|
BaalsMinion3
|
||||||
|
WorldstoneEffect
|
||||||
|
BurningDeadArcher2
|
||||||
|
BoneArcher2
|
||||||
|
BurningDeadArcher3
|
||||||
|
ReturnedArcher2
|
||||||
|
HorrorArcher2
|
||||||
|
Afflicted2
|
||||||
|
Tainted2
|
||||||
|
Misshapen2
|
||||||
|
Disfigured2
|
||||||
|
Damned2
|
||||||
|
MoonClan2
|
||||||
|
NightClan2
|
||||||
|
HellClan2
|
||||||
|
BloodClan2
|
||||||
|
DeathClan2
|
||||||
|
FoulCrow2
|
||||||
|
BloodHawk2
|
||||||
|
BlackRaptor2
|
||||||
|
CloudStalker2
|
||||||
|
ClawViper2
|
||||||
|
PitViper2
|
||||||
|
Salamander2
|
||||||
|
TombViper2
|
||||||
|
SerpentMagus2
|
||||||
|
Marauder2
|
||||||
|
Infel2
|
||||||
|
SandRaer2
|
||||||
|
Invader2
|
||||||
|
Assailant2
|
||||||
|
DeathMauler6
|
||||||
|
QuillRat2
|
||||||
|
SpikeFiend2
|
||||||
|
RazorSpine2
|
||||||
|
CarrionBird2
|
||||||
|
ThornedHulk2
|
||||||
|
Slinger2
|
||||||
|
Slinger3
|
||||||
|
Slinger4
|
||||||
|
VileArcher2
|
||||||
|
DarkArcher2
|
||||||
|
VileLancer2
|
||||||
|
DarkLancer2
|
||||||
|
BlackLancer2
|
||||||
|
Blunderbore2
|
||||||
|
Mauler2
|
||||||
|
ReturnedMage5
|
||||||
|
BurningDeadMage4
|
||||||
|
ReturnedMage6
|
||||||
|
HorrorMage5
|
||||||
|
BoneMage5
|
||||||
|
HorrorMage6
|
||||||
|
HorrorMage7
|
||||||
|
Huntress2
|
||||||
|
SaberCat2
|
||||||
|
CaveLeaper2
|
||||||
|
TombCreeper2
|
||||||
|
Ghost2
|
||||||
|
Wraith2
|
||||||
|
Specter2
|
||||||
|
SuccubusExp2
|
||||||
|
HellTemptress2
|
||||||
|
Dominus2
|
||||||
|
HellWitch2
|
||||||
|
VileWitch2
|
||||||
|
Gloam2
|
||||||
|
BlackSoul2
|
||||||
|
BurningSoul2
|
||||||
|
Carver2
|
||||||
|
Devilkin2
|
||||||
|
DarkOne2
|
||||||
|
CarverShaman2
|
||||||
|
DevilkinShaman2
|
||||||
|
DarkShaman2
|
||||||
|
BoneWarrior2
|
||||||
|
Returned2
|
||||||
|
Gloombat2
|
||||||
|
Fiend2
|
||||||
|
BloodLord7
|
||||||
|
BloodLord8
|
||||||
|
Scarab2
|
||||||
|
SteelWeevil2
|
||||||
|
Flayer3
|
||||||
|
StygianDoll3
|
||||||
|
SoulKiller3
|
||||||
|
Flayer4
|
||||||
|
StygianDoll4
|
||||||
|
SoulKiller4
|
||||||
|
FlayerShaman2
|
||||||
|
StygianDollShaman2
|
||||||
|
SoulKillerShaman2
|
||||||
|
TempleGuard2
|
||||||
|
TempleGuard3
|
||||||
|
Guardian2
|
||||||
|
Unraveler2
|
||||||
|
HoradrimAncient2
|
||||||
|
HoradrimAncient3
|
||||||
|
Zealot2
|
||||||
|
Zealot3
|
||||||
|
Heirophant3
|
||||||
|
Heirophant4
|
||||||
|
Grotesque2
|
||||||
|
FleshSpawner2
|
||||||
|
GrotesqueWyrm2
|
||||||
|
FleshBeast2
|
||||||
|
WorldKiller2
|
||||||
|
WorldKillerYoung2
|
||||||
|
WorldKillerEgg2
|
||||||
|
SlayerExp2
|
||||||
|
HellSpawn2
|
||||||
|
GreaterHellSpawn2
|
||||||
|
Arach2
|
||||||
|
Balrog2
|
||||||
|
PitLord2
|
||||||
|
Imp6
|
||||||
|
Imp7
|
||||||
|
UndeadStygianDoll2
|
||||||
|
UndeadSoulKiller2
|
||||||
|
Strangler2
|
||||||
|
StormCaster2
|
||||||
|
MawFiend2
|
||||||
|
BloodLord9
|
||||||
|
GhoulLord2
|
||||||
|
DarkLord2
|
||||||
|
UnholyCorpse2
|
||||||
|
DoomKnight2
|
||||||
|
DoomKnight3
|
||||||
|
OblivionKnight2
|
||||||
|
OblivionKnight3
|
||||||
|
Cadaver2
|
||||||
|
UberMephisto
|
||||||
|
UberDiablo
|
||||||
|
UberIzual
|
||||||
|
Lilith
|
||||||
|
UberDuriel
|
||||||
|
UberBaal
|
||||||
|
EvilHut2
|
||||||
|
DemonHole
|
||||||
|
PitLord3
|
||||||
|
OblivionKnight4
|
||||||
|
Imp8
|
||||||
|
HellSwarm2
|
||||||
|
WorldKiller3
|
||||||
|
Arach3
|
||||||
|
SteelWeevil3
|
||||||
|
HellTemptress3
|
||||||
|
VileWitch3
|
||||||
|
FleshHunter2
|
||||||
|
DarkArcher3
|
||||||
|
BlackLancer3
|
||||||
|
HellWhip2
|
||||||
|
Returned3
|
||||||
|
HorrorArcher3
|
||||||
|
BurningDeadMage5
|
||||||
|
HorrorMage8
|
||||||
|
BoneMage6
|
||||||
|
HorrorMage9
|
||||||
|
DarkLord3
|
||||||
|
Specter3
|
||||||
|
BurningSoul3
|
||||||
|
)
|
||||||
9
pkg/data/object/interact_type.go
Normal file
9
pkg/data/object/interact_type.go
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package object
|
||||||
|
|
||||||
|
type InteractType uint
|
||||||
|
|
||||||
|
const (
|
||||||
|
InteractTypeNone InteractType = 0x00
|
||||||
|
InteractTypeTrap InteractType = 0x04
|
||||||
|
InteractTypeLocked InteractType = 0x80
|
||||||
|
)
|
||||||
582
pkg/data/object/type.go
Normal file
582
pkg/data/object/type.go
Normal file
@@ -0,0 +1,582 @@
|
|||||||
|
package object
|
||||||
|
|
||||||
|
type Name int
|
||||||
|
|
||||||
|
const (
|
||||||
|
NotApplicable Name = iota - 1
|
||||||
|
TestData1
|
||||||
|
Casket5
|
||||||
|
Shrine
|
||||||
|
Casket6
|
||||||
|
LargeUrn1
|
||||||
|
LargeChestRight
|
||||||
|
LargeChestLeft
|
||||||
|
Barrel
|
||||||
|
TowerTome
|
||||||
|
Urn2
|
||||||
|
Bench
|
||||||
|
BarrelExploding
|
||||||
|
RogueFountain
|
||||||
|
DoorGateLeft
|
||||||
|
DoorGateRight
|
||||||
|
DoorWoodenLeft
|
||||||
|
DoorWoodenRight
|
||||||
|
CairnStoneAlpha
|
||||||
|
CairnStoneBeta
|
||||||
|
CairnStoneGamma
|
||||||
|
CairnStoneDelta
|
||||||
|
CairnStoneLambda
|
||||||
|
CairnStoneTheta
|
||||||
|
DoorCourtyardLeft
|
||||||
|
DoorCourtyardRight
|
||||||
|
DoorCathedralDouble
|
||||||
|
CainGibbet
|
||||||
|
DoorMonasteryDoubleRight
|
||||||
|
HoleAnim
|
||||||
|
Brazier
|
||||||
|
InifussTree
|
||||||
|
Fountain
|
||||||
|
Crucifix
|
||||||
|
Candles1
|
||||||
|
Candles2
|
||||||
|
Standard1
|
||||||
|
Standard2
|
||||||
|
Torch1Tiki
|
||||||
|
Torch2Wall
|
||||||
|
RogueBonfire
|
||||||
|
River1
|
||||||
|
River2
|
||||||
|
River3
|
||||||
|
River4
|
||||||
|
River5
|
||||||
|
AmbientSoundGenerator
|
||||||
|
Crate
|
||||||
|
AndarielDoor
|
||||||
|
RogueTorch1
|
||||||
|
RogueTorch2
|
||||||
|
CasketR
|
||||||
|
CasketL
|
||||||
|
Urn3
|
||||||
|
Casket
|
||||||
|
RogueCorpse1
|
||||||
|
RogueCorpse2
|
||||||
|
RogueCorpseRolling
|
||||||
|
CorpseOnStick1
|
||||||
|
CorpseOnStick2
|
||||||
|
TownPortal
|
||||||
|
PermanentTownPortal
|
||||||
|
InvisibleObject
|
||||||
|
DoorCathedralLeft
|
||||||
|
DoorCathedralRight
|
||||||
|
DoorWoodenLeft2
|
||||||
|
InvisibleRiverSound1
|
||||||
|
InvisibleRiverSound2
|
||||||
|
Ripple1
|
||||||
|
Ripple2
|
||||||
|
Ripple3
|
||||||
|
Ripple4
|
||||||
|
ForestNightSound1
|
||||||
|
ForestNightSound2
|
||||||
|
YetiDung
|
||||||
|
TrappDoor
|
||||||
|
DoorByAct2Dock
|
||||||
|
SewerDrip
|
||||||
|
HealthOrama
|
||||||
|
InvisibleTownSound
|
||||||
|
Casket3
|
||||||
|
Obelisk
|
||||||
|
ForestAltar
|
||||||
|
BubblingPoolOfBlood
|
||||||
|
HornShrine
|
||||||
|
HealingWell
|
||||||
|
BullHealthShrine
|
||||||
|
SteleDesertMagicShrine
|
||||||
|
TombLargeChestL
|
||||||
|
TombLargeChestR
|
||||||
|
Sarcophagus
|
||||||
|
DesertObelisk
|
||||||
|
TombDoorLeft
|
||||||
|
TombDoorRight
|
||||||
|
InnerHellManaShrine
|
||||||
|
LargeUrn4
|
||||||
|
LargeUrn5
|
||||||
|
InnerHellHealthShrine
|
||||||
|
InnerHellShrine
|
||||||
|
TombDoorLeft2
|
||||||
|
TombDoorRight2
|
||||||
|
DurielsLairPortal
|
||||||
|
Brazier3
|
||||||
|
FloorBrazier
|
||||||
|
Flies
|
||||||
|
ArmorStandRight
|
||||||
|
ArmorStandLeft
|
||||||
|
WeaponRackRight
|
||||||
|
WeaponRackLeft
|
||||||
|
Malus
|
||||||
|
PalaceHealthShrine
|
||||||
|
Drinker
|
||||||
|
Fountain1
|
||||||
|
Gesturer
|
||||||
|
DesertFountain
|
||||||
|
Turner
|
||||||
|
Fountain3
|
||||||
|
SnakeWomanShrine
|
||||||
|
JungleTorch
|
||||||
|
Fountain4
|
||||||
|
WaypointPortal
|
||||||
|
DungeonHealthShrine
|
||||||
|
JerhynPlaceHolder1
|
||||||
|
JerhynPlaceHolder2
|
||||||
|
InnerHellShrine2
|
||||||
|
InnerHellShrine3
|
||||||
|
InnerHellHiddenStash
|
||||||
|
InnerHellSkullPile
|
||||||
|
InnerHellHiddenStash2
|
||||||
|
InnerHellHiddenStash3
|
||||||
|
SecretDoor1
|
||||||
|
Act1WildernessWell
|
||||||
|
VileDogAfterglow
|
||||||
|
CathedralWell
|
||||||
|
ArcaneSanctuaryShrine
|
||||||
|
DesertShrine2
|
||||||
|
DesertShrine3
|
||||||
|
DesertShrine1
|
||||||
|
DesertWell
|
||||||
|
CaveWell
|
||||||
|
Act1LargeChestRight
|
||||||
|
Act1TallChestRight
|
||||||
|
Act1MediumChestRight
|
||||||
|
DesertJug1
|
||||||
|
DesertJug2
|
||||||
|
Act1LargeChest1
|
||||||
|
InnerHellWaypoint
|
||||||
|
Act2MediumChestRight
|
||||||
|
Act2LargeChestRight
|
||||||
|
Act2LargeChestLeft
|
||||||
|
TaintedSunAltar
|
||||||
|
DesertShrine5
|
||||||
|
DesertShrine4
|
||||||
|
HoradricOrifice
|
||||||
|
TyraelsDoor
|
||||||
|
GuardCorpse
|
||||||
|
HiddenStashRock
|
||||||
|
Act2Waypoint
|
||||||
|
Act1WildernessWaypoint
|
||||||
|
SkeletonCorpseIsAnOxymoron
|
||||||
|
HiddenStashRockB
|
||||||
|
SmallFire
|
||||||
|
MediumFire
|
||||||
|
LargeFire
|
||||||
|
Act1CliffHidingSpot
|
||||||
|
ManaWell1
|
||||||
|
ManaWell2
|
||||||
|
ManaWell3
|
||||||
|
ManaWell4
|
||||||
|
ManaWell5
|
||||||
|
HollowLog
|
||||||
|
JungleHealWell
|
||||||
|
SkeletonCorpseIsStillAnOxymoron
|
||||||
|
DesertHealthShrine
|
||||||
|
ManaWell7
|
||||||
|
LooseRock
|
||||||
|
LooseBoulder
|
||||||
|
MediumChestLeft
|
||||||
|
LargeChestLeft2
|
||||||
|
GuardCorpseOnAStick
|
||||||
|
Bookshelf1
|
||||||
|
Bookshelf2
|
||||||
|
JungleChest
|
||||||
|
TombCoffin
|
||||||
|
JungleMediumChestLeft
|
||||||
|
JungleShrine2
|
||||||
|
JungleStashObject1
|
||||||
|
JungleStashObject2
|
||||||
|
JungleStashObject3
|
||||||
|
JungleStashObject4
|
||||||
|
DummyCainPortal
|
||||||
|
JungleShrine3
|
||||||
|
JungleShrine4
|
||||||
|
TeleportationPad1
|
||||||
|
LamEsensTome
|
||||||
|
StairsL
|
||||||
|
StairsR
|
||||||
|
FloorTrap
|
||||||
|
JungleShrine5
|
||||||
|
TallChestLeft
|
||||||
|
MephistoShrine1
|
||||||
|
MephistoShrine2
|
||||||
|
MephistoShrine3
|
||||||
|
MephistoManaShrine
|
||||||
|
MephistoLair
|
||||||
|
StashBox
|
||||||
|
StashAltar
|
||||||
|
MafistoHealthShrine
|
||||||
|
Act3WaterRocks
|
||||||
|
Basket1
|
||||||
|
Basket2
|
||||||
|
Act3WaterLogs
|
||||||
|
Act3WaterRocksGirl
|
||||||
|
Act3WaterBubbles
|
||||||
|
Act3WaterLogsX
|
||||||
|
Act3WaterRocksB
|
||||||
|
Act3WaterRocksGirlC
|
||||||
|
Act3WaterRocksY
|
||||||
|
Act3WaterLogsZ
|
||||||
|
WebCoveredTree1
|
||||||
|
WebCoveredTree2
|
||||||
|
WebCoveredTree3
|
||||||
|
WebCoveredTree4
|
||||||
|
Pillar
|
||||||
|
Cocoon
|
||||||
|
Cocoon2
|
||||||
|
SkullPileH1
|
||||||
|
OuterHellShrine
|
||||||
|
Act3WaterRocksGirlW
|
||||||
|
Act3BigLog
|
||||||
|
SlimeDoor1
|
||||||
|
SlimeDoor2
|
||||||
|
OuterHellShrine2
|
||||||
|
OuterHellShrine3
|
||||||
|
PillarH2
|
||||||
|
Act3BigLogC
|
||||||
|
Act3BigLogD
|
||||||
|
HellHealthShrine
|
||||||
|
Act3TownWaypoint
|
||||||
|
WaypointH
|
||||||
|
BurningBodyTown
|
||||||
|
Gchest1L
|
||||||
|
Gchest2R
|
||||||
|
Gchest3R
|
||||||
|
GLchest3L
|
||||||
|
SewersRatNest
|
||||||
|
BurningBodyTown2
|
||||||
|
SewersRatNest2
|
||||||
|
Act1BedBed1
|
||||||
|
Act1BedBed2
|
||||||
|
HellManaShrine
|
||||||
|
ExplodingCow
|
||||||
|
GidbinnAltar
|
||||||
|
GidbinnAltarDecoy
|
||||||
|
DiabloRightLight
|
||||||
|
DiabloLeftLight
|
||||||
|
DiabloStartPoint
|
||||||
|
Act1CabinStool
|
||||||
|
Act1CabinWood
|
||||||
|
Act1CabinWood2
|
||||||
|
HellSkeletonSpawnNW
|
||||||
|
Act1HolyShrine
|
||||||
|
TombsFloorTrapSpikes
|
||||||
|
Act1CathedralShrine
|
||||||
|
Act1JailShrine1
|
||||||
|
Act1JailShrine2
|
||||||
|
Act1JailShrine3
|
||||||
|
MaggotLairGooPile
|
||||||
|
Bank
|
||||||
|
WirtCorpse
|
||||||
|
GoldPlaceHolder
|
||||||
|
GuardCorpse2
|
||||||
|
DeadVillager1
|
||||||
|
DeadVillager2
|
||||||
|
DummyFlameNoDamage
|
||||||
|
TinyPixelShapedThingie
|
||||||
|
CavesHealthShrine
|
||||||
|
CavesManaShrine
|
||||||
|
CaveMagicShrine
|
||||||
|
Act3DungeonManaShrine
|
||||||
|
Act3SewersMagicShrine1
|
||||||
|
Act3SewersHealthWell
|
||||||
|
Act3SewersManaWell
|
||||||
|
Act3SewersMagicShrine2
|
||||||
|
Act2BrazierCeller
|
||||||
|
Act2TombAnubisCoffin
|
||||||
|
Act2Brazier
|
||||||
|
Act2BrazierTall
|
||||||
|
Act2BrazierSmall
|
||||||
|
Act2CellerWaypoint
|
||||||
|
HarumBedBed
|
||||||
|
IronGrateDoorLeft
|
||||||
|
IronGrateDoorRight
|
||||||
|
WoodenGrateDoorLeft
|
||||||
|
WoodenGrateDoorRight
|
||||||
|
WoodenDoorLeft
|
||||||
|
WoodenDoorRight
|
||||||
|
TombsWallTorchLeft
|
||||||
|
TombsWallTorchRight
|
||||||
|
ArcaneSanctuaryPortal
|
||||||
|
Act2HaramMagicShrine1
|
||||||
|
Act2HaramMagicShrine2
|
||||||
|
MaggotHealthWell
|
||||||
|
MaggotManaWell
|
||||||
|
ArcaneSanctuaryMagicShrine
|
||||||
|
TeleportationPad2
|
||||||
|
TeleportationPad3
|
||||||
|
TeleportationPad4
|
||||||
|
DummyArcaneThing1
|
||||||
|
DummyArcaneThing2
|
||||||
|
DummyArcaneThing3
|
||||||
|
DummyArcaneThing4
|
||||||
|
DummyArcaneThing5
|
||||||
|
DummyArcaneThing6
|
||||||
|
DummyArcaneThing7
|
||||||
|
HaremDeadGuard1
|
||||||
|
HaremDeadGuard2
|
||||||
|
HaremDeadGuard3
|
||||||
|
HaremDeadGuard4
|
||||||
|
HaremEunuchBlocker
|
||||||
|
ArcaneHealthWell
|
||||||
|
ArcaneManaWell
|
||||||
|
TestData2
|
||||||
|
Act2TombWell
|
||||||
|
Act2SewerWaypoint
|
||||||
|
Act3TravincalWaypoint
|
||||||
|
Act3SewerMagicShrine
|
||||||
|
Act3SewerDeadBody
|
||||||
|
Act3SewerTorch
|
||||||
|
Act3KurastTorch
|
||||||
|
MafistoLargeChestLeft
|
||||||
|
MafistoLargeChestRight
|
||||||
|
MafistoMediumChestLeft
|
||||||
|
MafistoMediumChestRight
|
||||||
|
SpiderLairLargeChestLeft
|
||||||
|
SpiderLairTallChestLeft
|
||||||
|
SpiderLairMediumChestRight
|
||||||
|
SpiderLairTallChestRight
|
||||||
|
SteegStone
|
||||||
|
GuildVault
|
||||||
|
TrophyCase
|
||||||
|
MessageBoard
|
||||||
|
MephistoBridge
|
||||||
|
HellGate
|
||||||
|
Act3KurastManaWell
|
||||||
|
Act3KurastHealthWell
|
||||||
|
HellFire1
|
||||||
|
HellFire2
|
||||||
|
HellFire3
|
||||||
|
HellLava1
|
||||||
|
HellLava2
|
||||||
|
HellLava3
|
||||||
|
HellLightSource1
|
||||||
|
HellLightSource2
|
||||||
|
HellLightSource3
|
||||||
|
HoradricCubeChest
|
||||||
|
HoradricScrollChest
|
||||||
|
StaffOfKingsChest
|
||||||
|
YetAnotherTome
|
||||||
|
HellBrazier1
|
||||||
|
HellBrazier2
|
||||||
|
DungeonRockPile
|
||||||
|
Act3DungeonMagicShrine
|
||||||
|
Act3DungeonBasket
|
||||||
|
OuterHellHungSkeleton
|
||||||
|
GuyForDungeon
|
||||||
|
Act3DungeonCasket
|
||||||
|
Act3SewerStairs
|
||||||
|
Act3SewerStairsToLevel3
|
||||||
|
DarkWandererStartPosition
|
||||||
|
TrappedSoulPlaceHolder
|
||||||
|
Act3TownTorch
|
||||||
|
LargeChestR
|
||||||
|
InnerHellBoneChest
|
||||||
|
HellSkeletonSpawnNE
|
||||||
|
Act3WaterFog
|
||||||
|
DummyNotUsed
|
||||||
|
HellForge
|
||||||
|
GuildPortal
|
||||||
|
HratliStartPosition
|
||||||
|
HratliEndPosition
|
||||||
|
BurningTrappedSoul1
|
||||||
|
BurningTrappedSoul2
|
||||||
|
NatalyaStartPosition
|
||||||
|
StuckedTrappedSoul1
|
||||||
|
StuckedTrappedSoul2
|
||||||
|
CainStartPosition
|
||||||
|
StairSR
|
||||||
|
ArcaneLargeChestLeft
|
||||||
|
ArcaneCasket
|
||||||
|
ArcaneLargeChestRight
|
||||||
|
ArcaneSmallChestLeft
|
||||||
|
ArcaneSmallChestRight
|
||||||
|
DiabloSeal1
|
||||||
|
DiabloSeal2
|
||||||
|
DiabloSeal3
|
||||||
|
DiabloSeal4
|
||||||
|
DiabloSeal5
|
||||||
|
SparklyChest
|
||||||
|
PandamoniumFortressWaypoint
|
||||||
|
InnerHellFissure
|
||||||
|
HellMesaBrazier
|
||||||
|
Smoke
|
||||||
|
ValleyWaypoint
|
||||||
|
HellBrazier3
|
||||||
|
CompellingOrb
|
||||||
|
KhalimChest1
|
||||||
|
KhalimChest2
|
||||||
|
KhalimChest3
|
||||||
|
SiegeMachineControl
|
||||||
|
PotOTorch
|
||||||
|
PyoxFirePit
|
||||||
|
ExpansionChestRight
|
||||||
|
ExpansionWildernessShrine1
|
||||||
|
ExpansionWildernessShrine2
|
||||||
|
ExpansionHiddenStash
|
||||||
|
ExpansionWildernessFlag
|
||||||
|
ExpansionWildernessBarrel
|
||||||
|
ExpansionSiegeBarrel
|
||||||
|
ExpansionWoodChestLeft
|
||||||
|
ExpansionWildernessShrine3
|
||||||
|
ExpansionManaShrine
|
||||||
|
ExpansionHealthShrine
|
||||||
|
BurialChestLeft
|
||||||
|
BurialChestRight
|
||||||
|
ExpansionWell
|
||||||
|
ExpansionWildernessShrine4
|
||||||
|
ExpansionWildernessShrine5
|
||||||
|
ExpansionWaypoint
|
||||||
|
ExpansionChestLeft
|
||||||
|
ExpansionWoodChestRight
|
||||||
|
ExpansionSmallChestLeft
|
||||||
|
ExpansionSmallChestRight
|
||||||
|
ExpansionTorch1
|
||||||
|
ExpansionCampFire
|
||||||
|
ExpansionTownTorch
|
||||||
|
ExpansionTorch2
|
||||||
|
ExpansionBurningBodies
|
||||||
|
ExpansionBurningPit
|
||||||
|
ExpansionTribalFlag
|
||||||
|
ExpansionTownFlag
|
||||||
|
ExpansionChandelier
|
||||||
|
ExpansionJar1
|
||||||
|
ExpansionJar2
|
||||||
|
ExpansionJar3
|
||||||
|
ExpansionSwingingHeads
|
||||||
|
ExpansionWildernessPole
|
||||||
|
AnimatedSkullAndRockPile
|
||||||
|
ExpansionTownGate
|
||||||
|
SkullAndRockPile
|
||||||
|
SiegeHellGate
|
||||||
|
EnemyCampBanner1
|
||||||
|
EnemyCampBanner2
|
||||||
|
ExpansionExplodingChest
|
||||||
|
ExpansionSpecialChest
|
||||||
|
ExpansionDeathPole
|
||||||
|
ExpansionDeathPoleLeft
|
||||||
|
TempleAltar
|
||||||
|
DrehyaTownStartPosition
|
||||||
|
DrehyaWildernessStartPosition
|
||||||
|
NihlathakTownStartPosition
|
||||||
|
NihlathakWildernessStartPositionName
|
||||||
|
IceCaveHiddenStash
|
||||||
|
IceCaveHealthShrine
|
||||||
|
IceCaveManaShrine
|
||||||
|
IceCaveEvilUrn
|
||||||
|
IceCaveJar1
|
||||||
|
IceCaveJar2
|
||||||
|
IceCaveJar3
|
||||||
|
IceCaveJar4
|
||||||
|
IceCaveJar5
|
||||||
|
IceCaveMagicShrine
|
||||||
|
CagedWussie
|
||||||
|
AncientStatue3
|
||||||
|
AncientStatue1
|
||||||
|
AncientStatue2
|
||||||
|
DeadBarbarian
|
||||||
|
ClientSmoke
|
||||||
|
IceCaveMagicShrine2
|
||||||
|
IceCaveTorch1
|
||||||
|
IceCaveTorch2
|
||||||
|
ExpansionTikiTorch
|
||||||
|
WorldstoneManaShrine
|
||||||
|
WorldstoneHealthShrine
|
||||||
|
WorldstoneTomb1
|
||||||
|
WorldstoneTomb2
|
||||||
|
WorldstoneTomb3
|
||||||
|
WorldstoneMagicShrine
|
||||||
|
WorldstoneTorch1
|
||||||
|
WorldstoneTorch2
|
||||||
|
ExpansionSnowyManaShrine1
|
||||||
|
ExpansionSnowyHealthShrine
|
||||||
|
ExpansionSnowyWell
|
||||||
|
WorldstoneWaypoint
|
||||||
|
ExpansionSnowyMagicShrine2
|
||||||
|
ExpansionWildernessWaypoint
|
||||||
|
ExpansionSnowyMagicShrine3
|
||||||
|
WorldstoneWell
|
||||||
|
WorldstoneMagicShrine2
|
||||||
|
ExpansionSnowyObject1
|
||||||
|
ExpansionSnowyWoodChestLeft
|
||||||
|
ExpansionSnowyWoodChestRight
|
||||||
|
WorldstoneMagicShrine3
|
||||||
|
ExpansionSnowyWoodChest2Left
|
||||||
|
ExpansionSnowyWoodChest2Right
|
||||||
|
SnowySwingingHeads
|
||||||
|
SnowyDebris
|
||||||
|
PenBreakableDoor
|
||||||
|
ExpansionTempleMagicShrine1
|
||||||
|
ExpansionSnowyPoleMR
|
||||||
|
IceCaveWaypoint
|
||||||
|
ExpansionTempleMagicShrine2
|
||||||
|
ExpansionTempleWell
|
||||||
|
ExpansionTempleTorch1
|
||||||
|
ExpansionTempleTorch2
|
||||||
|
ExpansionTempleObject1
|
||||||
|
ExpansionTempleObject2
|
||||||
|
WorldstoneMrBox
|
||||||
|
IceCaveWell
|
||||||
|
ExpansionTempleMagicShrine
|
||||||
|
ExpansionTempleHealthShrine
|
||||||
|
ExpansionTempleManaShrine
|
||||||
|
BlacksmithForge
|
||||||
|
WorldstoneTomb1Left
|
||||||
|
WorldstoneTomb2Left
|
||||||
|
WorldstoneTomb3Left
|
||||||
|
IceCaveBubblesU
|
||||||
|
IceCaveBubblesS
|
||||||
|
RedBaalsLairTomb1
|
||||||
|
RedBaalsLairTomb1Left
|
||||||
|
RedBaalsLairTomb2
|
||||||
|
RedBaalsLairTomb2Left
|
||||||
|
RedBaalsLairTomb3
|
||||||
|
RedBaalsLairTomb3Left
|
||||||
|
RedBaalsLairMrBox
|
||||||
|
RedBaalsLairTorch1
|
||||||
|
RedBaalsLairTorch2
|
||||||
|
CandlesTemple
|
||||||
|
TempleWaypoint
|
||||||
|
ExpansionDeadPerson1
|
||||||
|
TempleGroundTomb
|
||||||
|
LarzukGreeting
|
||||||
|
LarzukStandard
|
||||||
|
TempleGroundTombLeft
|
||||||
|
ExpansionDeadPerson2
|
||||||
|
AncientsAltar
|
||||||
|
ArreatSummitDoorToWorldstone
|
||||||
|
ExpansionWeaponRackRight
|
||||||
|
ExpansionWeaponRackLeft
|
||||||
|
ExpansionArmorStandRight
|
||||||
|
ExpansionArmorStandLeft
|
||||||
|
ArreatsSummitTorch2
|
||||||
|
ExpansionFuneralSpire
|
||||||
|
ExpansionBurningLogs
|
||||||
|
IceCaveSteam
|
||||||
|
ExpansionDeadPerson3
|
||||||
|
BaalsLair
|
||||||
|
FrozenAnya
|
||||||
|
BBQBunny
|
||||||
|
BaalTorchBig
|
||||||
|
InvisibleAncient
|
||||||
|
InvisibleBase
|
||||||
|
BaalsPortal
|
||||||
|
ArreatSummitDoor
|
||||||
|
LastPortal
|
||||||
|
LastLastPortal
|
||||||
|
ZooTestData
|
||||||
|
KeeperTestData
|
||||||
|
BaalsPortal2
|
||||||
|
FirePlaceGuy
|
||||||
|
DoorBlocker1
|
||||||
|
DoorBlocker2
|
||||||
|
|
||||||
|
// Added manually
|
||||||
|
GoodChest Name = 580
|
||||||
|
NotSoGoodChestName = 581
|
||||||
|
)
|
||||||
58
pkg/data/objects.go
Normal file
58
pkg/data/objects.go
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
package game
|
||||||
|
|
||||||
|
import "github.com/hectorgimenez/d2go/pkg/data/object"
|
||||||
|
|
||||||
|
type Object struct {
|
||||||
|
Name object.Name
|
||||||
|
IsHovered bool
|
||||||
|
Selectable bool
|
||||||
|
InteractType object.InteractType
|
||||||
|
Position Position
|
||||||
|
}
|
||||||
|
|
||||||
|
type Objects []Object
|
||||||
|
|
||||||
|
func (o Objects) FindOne(name object.Name) (Object, bool) {
|
||||||
|
for _, obj := range o {
|
||||||
|
if obj.Name == name {
|
||||||
|
return obj, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Object{}, false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Object) IsWaypoint() bool {
|
||||||
|
return o.Name == object.WaypointPortal || o.Name == object.Act2Waypoint || o.Name == object.Act3TownWaypoint || o.Name == object.PandamoniumFortressWaypoint || o.Name == object.ExpansionWaypoint
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Object) IsPortal() bool {
|
||||||
|
return o.Name == object.TownPortal
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Object) IsRedPortal() bool {
|
||||||
|
return o.Name == object.PermanentTownPortal
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Object) IsChest() bool {
|
||||||
|
switch o.Name {
|
||||||
|
case 1, 3, 5, 6, 50, 51, 53, 54, 55, 56, 57, 58, 79, 87, 88, 89, 125, 126, 127, 128, 139, 140, 141, 144, 146, 147,
|
||||||
|
148, 154, 155, 158, 159, 169, 171, 174, 175, 176, 177, 178, 181, 182, 183, 185, 186, 187, 188, 198, 203, 204, 205,
|
||||||
|
223, 224, 225, 240, 241, 242, 243, 244, 247, 248, 266, 268, 270, 271, 272, 274, 284, 314, 315, 316, 317, 326, 329,
|
||||||
|
330, 331, 332, 333, 334, 335, 336, 354, 355, 356, 360, 371, 372, 380, 381, 383, 384, 387, 388, 389, 390, 391, 397,
|
||||||
|
405, 406, 407, 413, 416, 420, 424, 425, 430, 431, 432, 433, 454, 455, 463, 466, 485, 486, 487, 501, 502, 504, 505,
|
||||||
|
518, 524, 525, 526, 529, 530, 531, 532, 533, 534, 535, 540, 541, 544, 545, 556, 580, 581:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Object) IsSuperChest() bool {
|
||||||
|
switch o.Name {
|
||||||
|
case 104, 105, 106, 107, 181, 183, 580, 397, 387, 389, 390, 391, 455:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
365
pkg/data/skill/skills.go
Normal file
365
pkg/data/skill/skills.go
Normal file
@@ -0,0 +1,365 @@
|
|||||||
|
package skill
|
||||||
|
|
||||||
|
type Skill int16
|
||||||
|
|
||||||
|
const (
|
||||||
|
AttackSkill Skill = iota
|
||||||
|
Kick
|
||||||
|
Throw
|
||||||
|
Unsummon
|
||||||
|
LeftHandThrow
|
||||||
|
LeftHandSwing
|
||||||
|
MagicArrow
|
||||||
|
FireArrow
|
||||||
|
InnerSight
|
||||||
|
CriticalStrike
|
||||||
|
Jab
|
||||||
|
ColdArrow
|
||||||
|
MultipleShot
|
||||||
|
Dodge
|
||||||
|
PowerStrike
|
||||||
|
PoisonJavelin
|
||||||
|
ExplodingArrow
|
||||||
|
SlowMissiles
|
||||||
|
Avoid
|
||||||
|
Impale
|
||||||
|
LightningBolt
|
||||||
|
IceArrow
|
||||||
|
GuidedArrow
|
||||||
|
Penetrate
|
||||||
|
ChargedStrike
|
||||||
|
PlagueJavelin
|
||||||
|
Strafe
|
||||||
|
ImmolationArrow
|
||||||
|
Decoy
|
||||||
|
Evade
|
||||||
|
Fend
|
||||||
|
FreezingArrow
|
||||||
|
Valkyrie
|
||||||
|
Pierce
|
||||||
|
LightningStrike
|
||||||
|
LightningFury
|
||||||
|
FireBolt
|
||||||
|
Warmth
|
||||||
|
ChargedBolt
|
||||||
|
IceBolt
|
||||||
|
FrozenArmor
|
||||||
|
Inferno
|
||||||
|
StaticField
|
||||||
|
Telekinesis
|
||||||
|
FrostNova
|
||||||
|
IceBlast
|
||||||
|
Blaze
|
||||||
|
FireBall
|
||||||
|
Nova
|
||||||
|
Lightning
|
||||||
|
ShiverArmor
|
||||||
|
FireWall
|
||||||
|
Enchant
|
||||||
|
ChainLightning
|
||||||
|
Teleport
|
||||||
|
GlacialSpike
|
||||||
|
Meteor
|
||||||
|
ThunderStorm
|
||||||
|
EnergyShield
|
||||||
|
Blizzard
|
||||||
|
ChillingArmor
|
||||||
|
FireMastery
|
||||||
|
Hydra
|
||||||
|
LightningMastery
|
||||||
|
FrozenOrb
|
||||||
|
ColdMastery
|
||||||
|
AmplifyDamage
|
||||||
|
Teeth
|
||||||
|
BoneArmor
|
||||||
|
SkeletonMastery
|
||||||
|
RaiseSkeleton
|
||||||
|
DimVision
|
||||||
|
Weaken
|
||||||
|
PoisonDagger
|
||||||
|
CorpseExplosion
|
||||||
|
ClayGolem
|
||||||
|
IronMaiden
|
||||||
|
Terror
|
||||||
|
BoneWall
|
||||||
|
GolemMastery
|
||||||
|
RaiseSkeletalMage
|
||||||
|
Confuse
|
||||||
|
LifeTap
|
||||||
|
PoisonExplosion
|
||||||
|
BoneSpear
|
||||||
|
BloodGolem
|
||||||
|
Attract
|
||||||
|
Decrepify
|
||||||
|
BonePrison
|
||||||
|
SummonResist
|
||||||
|
IronGolem
|
||||||
|
LowerResist
|
||||||
|
PoisonNova
|
||||||
|
BoneSpirit
|
||||||
|
FireGolem
|
||||||
|
Revive
|
||||||
|
Sacrifice
|
||||||
|
Smite
|
||||||
|
Might
|
||||||
|
Prayer
|
||||||
|
ResistFire
|
||||||
|
HolyBolt
|
||||||
|
HolyFire
|
||||||
|
Thorns
|
||||||
|
Defiance
|
||||||
|
ResistCold
|
||||||
|
Zeal
|
||||||
|
Charge
|
||||||
|
BlessedAim
|
||||||
|
Cleansing
|
||||||
|
ResistLightning
|
||||||
|
Vengeance
|
||||||
|
BlessedHammer
|
||||||
|
Concentration
|
||||||
|
HolyFreeze
|
||||||
|
Vigor
|
||||||
|
Conversion
|
||||||
|
HolyShield
|
||||||
|
HolyShock
|
||||||
|
Sanctuary
|
||||||
|
Meditation
|
||||||
|
FistOfTheHeavens
|
||||||
|
Fanaticism
|
||||||
|
Conviction
|
||||||
|
Redemption
|
||||||
|
Salvation
|
||||||
|
Bash
|
||||||
|
BladeMastery
|
||||||
|
AxeMastery
|
||||||
|
MaceMastery
|
||||||
|
Howl
|
||||||
|
FindPotion
|
||||||
|
Leap
|
||||||
|
DoubleSwing
|
||||||
|
PolearmMastery
|
||||||
|
ThrowingMastery
|
||||||
|
SpearMastery
|
||||||
|
Taunt
|
||||||
|
Shout
|
||||||
|
Stun
|
||||||
|
DoubleThrow
|
||||||
|
IncreasedStamina
|
||||||
|
FindItem
|
||||||
|
LeapAttack
|
||||||
|
Concentrate
|
||||||
|
IronSkin
|
||||||
|
BattleCry
|
||||||
|
Frenzy
|
||||||
|
IncreasedSpeed
|
||||||
|
BattleOrders
|
||||||
|
GrimWard
|
||||||
|
Whirlwind
|
||||||
|
Berserk
|
||||||
|
NaturalResistance
|
||||||
|
WarCry
|
||||||
|
BattleCommand
|
||||||
|
FireHit
|
||||||
|
UnHolyBolt
|
||||||
|
SkeletonRaise
|
||||||
|
MaggotEgg
|
||||||
|
ShamanFire
|
||||||
|
MagottUp
|
||||||
|
MagottDown
|
||||||
|
MagottLay
|
||||||
|
AndrialSpray
|
||||||
|
Jump
|
||||||
|
SwarmMove
|
||||||
|
Nest
|
||||||
|
QuickStrike
|
||||||
|
VampireFireball
|
||||||
|
VampireFirewall
|
||||||
|
VampireMeteor
|
||||||
|
GargoyleTrap
|
||||||
|
SpiderLay
|
||||||
|
VampireHeal
|
||||||
|
VampireRaise
|
||||||
|
Submerge
|
||||||
|
FetishAura
|
||||||
|
FetishInferno
|
||||||
|
ZakarumHeal
|
||||||
|
Emerge
|
||||||
|
Resurrect
|
||||||
|
Bestow
|
||||||
|
MissileSkill1
|
||||||
|
MonTeleport
|
||||||
|
PrimeLightning
|
||||||
|
PrimeBolt
|
||||||
|
PrimeBlaze
|
||||||
|
PrimeFirewall
|
||||||
|
PrimeSpike
|
||||||
|
PrimeIceNova
|
||||||
|
PrimePoisonball
|
||||||
|
PrimePoisonNova
|
||||||
|
DiabLight
|
||||||
|
DiabCold
|
||||||
|
DiabFire
|
||||||
|
FingerMageSpider
|
||||||
|
DiabWall
|
||||||
|
DiabRun
|
||||||
|
DiabPrison
|
||||||
|
PoisonBallTrap
|
||||||
|
AndyPoisonBolt
|
||||||
|
HireableMissile
|
||||||
|
DesertTurret
|
||||||
|
ArcaneTower
|
||||||
|
MonBlizzard
|
||||||
|
Mosquito
|
||||||
|
CursedBallTrapRight
|
||||||
|
CursedBallTrapLeft
|
||||||
|
MonFrozenArmor
|
||||||
|
MonBoneArmor
|
||||||
|
MonBoneSpirit
|
||||||
|
MonCurseCast
|
||||||
|
HellMeteor
|
||||||
|
RegurgitatorEat
|
||||||
|
MonFrenzy
|
||||||
|
QueenDeath
|
||||||
|
ScrollOfIdentify
|
||||||
|
TomeOfIdentify
|
||||||
|
ScrollOfTownPortal
|
||||||
|
TomeOfTownPortal
|
||||||
|
Raven
|
||||||
|
PoisonCreeper
|
||||||
|
Werewolf
|
||||||
|
Lycanthropy
|
||||||
|
Firestorm
|
||||||
|
OakSage
|
||||||
|
SummonSpiritWolf
|
||||||
|
Werebear
|
||||||
|
MoltenBoulder
|
||||||
|
ArcticBlast
|
||||||
|
CarrionVine
|
||||||
|
FeralRage
|
||||||
|
Maul
|
||||||
|
Fissure
|
||||||
|
CycloneArmor
|
||||||
|
HeartOfWolverine
|
||||||
|
SummonDireWolf
|
||||||
|
Rabies
|
||||||
|
FireClaws
|
||||||
|
Twister
|
||||||
|
SolarCreeper
|
||||||
|
Hunger
|
||||||
|
ShockWave
|
||||||
|
Volcano
|
||||||
|
Tornado
|
||||||
|
SpiritOfBarbs
|
||||||
|
SummonGrizzly
|
||||||
|
Fury
|
||||||
|
Armageddon
|
||||||
|
Hurricane
|
||||||
|
FireBlast
|
||||||
|
ClawMastery
|
||||||
|
PsychicHammer
|
||||||
|
TigerStrike
|
||||||
|
DragonTalon
|
||||||
|
ShockWeb
|
||||||
|
BladeSentinel
|
||||||
|
BurstOfSpeed
|
||||||
|
FistsOfFire
|
||||||
|
DragonClaw
|
||||||
|
ChargedBoltSentry
|
||||||
|
WakeOfFire
|
||||||
|
WeaponBlock
|
||||||
|
CloakOfShadows
|
||||||
|
CobraStrike
|
||||||
|
BladeFury
|
||||||
|
Fade
|
||||||
|
ShadowWarrior
|
||||||
|
ClawsOfThunder
|
||||||
|
DragonTail
|
||||||
|
LightningSentry
|
||||||
|
WakeOfInferno
|
||||||
|
MindBlast
|
||||||
|
BladesOfIce
|
||||||
|
DragonFlight
|
||||||
|
DeathSentry
|
||||||
|
BladeShield
|
||||||
|
Venom
|
||||||
|
ShadowMaster
|
||||||
|
PhoenixStrike
|
||||||
|
WakeOfDestructionSentry
|
||||||
|
ImpInferno
|
||||||
|
ImpFireball
|
||||||
|
BaalTaunt
|
||||||
|
BaalCorpseExplode
|
||||||
|
BaalMonsterSpawn
|
||||||
|
CatapultChargedBall
|
||||||
|
CatapultSpikeBall
|
||||||
|
SuckBlood
|
||||||
|
CryHelp
|
||||||
|
HealingVortex
|
||||||
|
Teleport2
|
||||||
|
SelfResurrect
|
||||||
|
VineAttack
|
||||||
|
OverseerWhip
|
||||||
|
BarbsAura
|
||||||
|
WolverineAura
|
||||||
|
OakSageAura
|
||||||
|
ImpFireMissile
|
||||||
|
Impregnate
|
||||||
|
SiegeBeastStomp
|
||||||
|
MinionSpawner
|
||||||
|
CatapultBlizzard
|
||||||
|
CatapultPlague
|
||||||
|
CatapultMeteor
|
||||||
|
BoltSentry
|
||||||
|
CorpseCycler
|
||||||
|
DeathMaul
|
||||||
|
DefenseCurse
|
||||||
|
BloodMana
|
||||||
|
monInfernoSentry
|
||||||
|
monDeathSentry
|
||||||
|
sentryLightning
|
||||||
|
fenrisRage
|
||||||
|
BaalTentacle
|
||||||
|
BaalNova
|
||||||
|
BaalInferno
|
||||||
|
BaalColdMissiles
|
||||||
|
MegademonInferno
|
||||||
|
EvilHutSpawner
|
||||||
|
CountessFirewall
|
||||||
|
ImpBolt
|
||||||
|
HorrorArcticBlast
|
||||||
|
deathSentryLtng
|
||||||
|
VineCycler
|
||||||
|
BearSmite
|
||||||
|
Resurrect2
|
||||||
|
BloodLordFrenzy
|
||||||
|
BaalTeleport
|
||||||
|
ImpTeleport
|
||||||
|
BaalCloneTeleport
|
||||||
|
ZakarumLightning
|
||||||
|
VampireMissile
|
||||||
|
MephistoMissile
|
||||||
|
DoomKnightMissile
|
||||||
|
RogueMissile
|
||||||
|
HydraMissile
|
||||||
|
NecromageMissile
|
||||||
|
MonBow
|
||||||
|
MonFireArrow
|
||||||
|
MonColdArrow
|
||||||
|
MonExplodingArrow
|
||||||
|
MonFreezingArrow
|
||||||
|
MonPowerStrike
|
||||||
|
SuccubusBolt
|
||||||
|
MephFrostNova
|
||||||
|
MonIceSpear
|
||||||
|
ShamanIce
|
||||||
|
Diablogeddon
|
||||||
|
DeleriumChange
|
||||||
|
NihlathakCorpseExplosion
|
||||||
|
SerpentCharge
|
||||||
|
TrapNova
|
||||||
|
UnHolyBoltEx
|
||||||
|
ShamanFireEx
|
||||||
|
ImpFireMissileEx
|
||||||
|
FixedSiegeBeastStomp
|
||||||
|
Unset Skill = -1
|
||||||
|
)
|
||||||
10
pkg/data/stat/immune.go
Normal file
10
pkg/data/stat/immune.go
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package stat
|
||||||
|
|
||||||
|
type Resist string
|
||||||
|
|
||||||
|
const (
|
||||||
|
ColdImmune Resist = "cold"
|
||||||
|
FireImmune Resist = "fire"
|
||||||
|
LightImmune Resist = "light"
|
||||||
|
PoisonImmune Resist = "poison"
|
||||||
|
)
|
||||||
1090
pkg/data/stat/stats.go
Normal file
1090
pkg/data/stat/stats.go
Normal file
File diff suppressed because it is too large
Load Diff
206
pkg/data/state/states.go
Normal file
206
pkg/data/state/states.go
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
package state
|
||||||
|
|
||||||
|
type States []State
|
||||||
|
|
||||||
|
func (s States) HasState(state State) bool {
|
||||||
|
for _, st := range s {
|
||||||
|
if st == state {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
type State uint
|
||||||
|
|
||||||
|
const (
|
||||||
|
None State = iota
|
||||||
|
Freeze
|
||||||
|
Poison
|
||||||
|
Resistfire
|
||||||
|
Resistcold
|
||||||
|
Resistlightning
|
||||||
|
Resistmagic
|
||||||
|
Playerbody
|
||||||
|
Resistall
|
||||||
|
Amplifydamage
|
||||||
|
Frozenarmor
|
||||||
|
Cold
|
||||||
|
Inferno
|
||||||
|
Blaze
|
||||||
|
Bonearmor
|
||||||
|
Concentrate
|
||||||
|
Enchant
|
||||||
|
Innersight
|
||||||
|
SkillMove
|
||||||
|
Weaken
|
||||||
|
Chillingarmor
|
||||||
|
Stunned
|
||||||
|
Spiderlay
|
||||||
|
Dimvision
|
||||||
|
Slowed
|
||||||
|
Fetishaura
|
||||||
|
Shout
|
||||||
|
Taunt
|
||||||
|
Conviction
|
||||||
|
Convicted
|
||||||
|
Energyshield
|
||||||
|
Venomclaws
|
||||||
|
Battleorders
|
||||||
|
Might
|
||||||
|
Prayer
|
||||||
|
Holyfire
|
||||||
|
Thorns
|
||||||
|
Defiance
|
||||||
|
Thunderstorm
|
||||||
|
Lightningbolt
|
||||||
|
Blessedaim
|
||||||
|
Stamina
|
||||||
|
Concentration
|
||||||
|
Holywind
|
||||||
|
Holywindcold
|
||||||
|
Cleansing
|
||||||
|
Holyshock
|
||||||
|
Sanctuary
|
||||||
|
Meditation
|
||||||
|
Fanaticism
|
||||||
|
Redemption
|
||||||
|
Battlecommand
|
||||||
|
Preventheal
|
||||||
|
Conversion
|
||||||
|
Uninterruptable
|
||||||
|
Ironmaiden
|
||||||
|
Terror
|
||||||
|
Attract
|
||||||
|
Lifetap
|
||||||
|
Confuse
|
||||||
|
Decrepify
|
||||||
|
Lowerresist
|
||||||
|
Openwounds
|
||||||
|
Dopplezon
|
||||||
|
Criticalstrike
|
||||||
|
Dodge
|
||||||
|
Avoid
|
||||||
|
Penetrate
|
||||||
|
Evade
|
||||||
|
Pierce
|
||||||
|
Warmth
|
||||||
|
Firemastery
|
||||||
|
Lightningmastery
|
||||||
|
Coldmastery
|
||||||
|
Blademastery
|
||||||
|
Axemastery
|
||||||
|
Macemastery
|
||||||
|
Polearmmastery
|
||||||
|
Throwingmastery
|
||||||
|
Spearmastery
|
||||||
|
Increasedstamina
|
||||||
|
Ironskin
|
||||||
|
Increasedspeed
|
||||||
|
Naturalresistance
|
||||||
|
Fingermagecurse
|
||||||
|
Nomanaregen
|
||||||
|
Justhit
|
||||||
|
Slowmissiles
|
||||||
|
Shiverarmor
|
||||||
|
Battlecry
|
||||||
|
Blue
|
||||||
|
Red
|
||||||
|
DeathDelay
|
||||||
|
Valkyrie
|
||||||
|
Frenzy
|
||||||
|
Berserk
|
||||||
|
Revive
|
||||||
|
Itemfullset
|
||||||
|
Sourceunit
|
||||||
|
Redeemed
|
||||||
|
Healthpot
|
||||||
|
Holyshield
|
||||||
|
JustPortaled
|
||||||
|
Monfrenzy
|
||||||
|
CorpseNodraw
|
||||||
|
Alignment
|
||||||
|
Manapot
|
||||||
|
Shatter
|
||||||
|
SyncWarped
|
||||||
|
ConversionSave
|
||||||
|
Pregnant
|
||||||
|
State111
|
||||||
|
Rabies
|
||||||
|
DefenseCurse
|
||||||
|
BloodMana
|
||||||
|
Burning
|
||||||
|
Dragonflight
|
||||||
|
Maul
|
||||||
|
CorpseNoselect
|
||||||
|
Shadowwarrior
|
||||||
|
Feralrage
|
||||||
|
Skilldelay
|
||||||
|
Tigerstrike
|
||||||
|
Cobrastrike
|
||||||
|
Phoenixstrike
|
||||||
|
Fistsoffire
|
||||||
|
Bladesofice
|
||||||
|
Clawsofthunder
|
||||||
|
ShrineArmor
|
||||||
|
ShrineCombat
|
||||||
|
ShrineResistLightning
|
||||||
|
ShrineResistFire
|
||||||
|
ShrineResistCold
|
||||||
|
ShrineResistPoison
|
||||||
|
ShrineSkill
|
||||||
|
ShrineManaRegen
|
||||||
|
ShrineStamina
|
||||||
|
ShrineExperience
|
||||||
|
FenrisRage
|
||||||
|
Wolf
|
||||||
|
Bear
|
||||||
|
Bloodlust
|
||||||
|
Changeclass
|
||||||
|
Attached
|
||||||
|
Hurricane
|
||||||
|
Armageddon
|
||||||
|
Invis
|
||||||
|
Barbs
|
||||||
|
Wolverine
|
||||||
|
Oaksage
|
||||||
|
VineBeast
|
||||||
|
Cyclonearmor
|
||||||
|
Clawmastery
|
||||||
|
CloakOfShadows
|
||||||
|
Recycled
|
||||||
|
Weaponblock
|
||||||
|
Cloaked
|
||||||
|
Quickness
|
||||||
|
Bladeshield
|
||||||
|
Fade
|
||||||
|
Summonresist
|
||||||
|
Oaksagecontrol
|
||||||
|
Wolverinecontrol
|
||||||
|
Barbscontrol
|
||||||
|
Debugcontrol
|
||||||
|
Itemset1
|
||||||
|
Itemset2
|
||||||
|
Itemset3
|
||||||
|
Itemset4
|
||||||
|
Itemset5
|
||||||
|
Itemset6
|
||||||
|
Runeword
|
||||||
|
Restinpeace
|
||||||
|
Corpseexp
|
||||||
|
Whirlwind
|
||||||
|
Fullsetgeneric
|
||||||
|
Monsterset
|
||||||
|
Delerium
|
||||||
|
Antidote
|
||||||
|
Thawing
|
||||||
|
Staminapot
|
||||||
|
PassiveResistfire
|
||||||
|
PassiveResistcold
|
||||||
|
PassiveResistltng
|
||||||
|
Uberminion
|
||||||
|
Cooldown
|
||||||
|
Sharedstash
|
||||||
|
Hidedead
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user