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