fetch static data from txt files and properly get all the item stats... maybe?

This commit is contained in:
Héctor Giménez
2024-05-08 21:31:40 +09:00
parent c03c40d385
commit aa2a1aaeb3
34 changed files with 3539 additions and 96663 deletions

View File

@@ -4,8 +4,7 @@ type ID int
type Area struct {
ID
Name string
CanBeTerrorized bool
Name string
}
func (a ID) IsTown() bool {
@@ -17,6 +16,12 @@ func (a ID) IsTown() bool {
return false
}
func (a ID) CanBeTerrorized() bool {
_, canBeTerrorized := CanBeTerrorized[a]
return canBeTerrorized
}
func (a ID) Act() int {
if a < 40 {
return 1

View File

@@ -1,143 +1,143 @@
// Code generated by d2data. DO NOT EDIT.
// source: cmd/d2data/d2data/levels.json
// Code generated by cmd/txttocode. DO NOT EDIT.
// source: cmd/txttocode/txt/levels.txt
package area
var Areas = map[ID]Area{
0: {Name: "", ID: 0, CanBeTerrorized: false},
1: {Name: "Rogue Encampment", ID: 1, CanBeTerrorized: false},
10: {Name: "Underground Passage Level 1", ID: 10, CanBeTerrorized: true},
100: {Name: "Durance of Hate Level 1", ID: 100, CanBeTerrorized: true},
101: {Name: "Durance of Hate Level 2", ID: 101, CanBeTerrorized: false},
102: {Name: "Durance of Hate Level 3", ID: 102, CanBeTerrorized: false},
103: {Name: "The Pandemonium Fortress", ID: 103, CanBeTerrorized: false},
104: {Name: "Outer Steppes", ID: 104, CanBeTerrorized: true},
105: {Name: "Plains of Despair", ID: 105, CanBeTerrorized: true},
106: {Name: "City of the Damned", ID: 106, CanBeTerrorized: true},
107: {Name: "River of Flame", ID: 107, CanBeTerrorized: true},
108: {Name: "Chaos Sanctum", ID: 108, CanBeTerrorized: true},
109: {Name: "Harrogath", ID: 109, CanBeTerrorized: false},
11: {Name: "Hole Level 1", ID: 11, CanBeTerrorized: true},
110: {Name: "Bloody Foothills", ID: 110, CanBeTerrorized: true},
111: {Name: "Rigid Highlands", ID: 111, CanBeTerrorized: true},
112: {Name: "Arreat Plateau", ID: 112, CanBeTerrorized: true},
113: {Name: "Crystalized Cavern Level 1", ID: 113, CanBeTerrorized: true},
114: {Name: "Cellar of Pity", ID: 114, CanBeTerrorized: true},
115: {Name: "Crystalized Cavern Level 2", ID: 115, CanBeTerrorized: true},
116: {Name: "Echo Chamber", ID: 116, CanBeTerrorized: true},
117: {Name: "Tundra Wastelands", ID: 117, CanBeTerrorized: false},
118: {Name: "Glacial Caves Level 1", ID: 118, CanBeTerrorized: true},
119: {Name: "Glacial Caves Level 2", ID: 119, CanBeTerrorized: true},
12: {Name: "Pit Level 1", ID: 12, CanBeTerrorized: true},
120: {Name: "Rocky Summit", ID: 120, CanBeTerrorized: false},
121: {Name: "Nihlathaks Temple", ID: 121, CanBeTerrorized: true},
122: {Name: "Halls of Anguish", ID: 122, CanBeTerrorized: false},
123: {Name: "Halls of Death's Calling", ID: 123, CanBeTerrorized: false},
124: {Name: "Halls of Vaught", ID: 124, CanBeTerrorized: false},
125: {Name: "Hell1", ID: 125, CanBeTerrorized: true},
126: {Name: "Hell2", ID: 126, CanBeTerrorized: true},
127: {Name: "Hell3", ID: 127, CanBeTerrorized: false},
128: {Name: "The Worldstone Keep Level 1", ID: 128, CanBeTerrorized: true},
129: {Name: "The Worldstone Keep Level 2", ID: 129, CanBeTerrorized: false},
13: {Name: "Cave Level 2", ID: 13, CanBeTerrorized: false},
130: {Name: "The Worldstone Keep Level 3", ID: 130, CanBeTerrorized: false},
131: {Name: "Throne of Destruction", ID: 131, CanBeTerrorized: false},
132: {Name: "The Worldstone Chamber", ID: 132, CanBeTerrorized: false},
133: {Name: "Pandemonium Run 1", ID: 133, CanBeTerrorized: false},
134: {Name: "Pandemonium Run 2", ID: 134, CanBeTerrorized: false},
135: {Name: "Pandemonium Run 3", ID: 135, CanBeTerrorized: false},
136: {Name: "Tristram", ID: 136, CanBeTerrorized: false},
14: {Name: "Underground Passage Level 2", ID: 14, CanBeTerrorized: true},
15: {Name: "Hole Level 2", ID: 15, CanBeTerrorized: true},
16: {Name: "Pit Level 2", ID: 16, CanBeTerrorized: false},
17: {Name: "Burial Grounds", ID: 17, CanBeTerrorized: true},
18: {Name: "Crypt", ID: 18, CanBeTerrorized: true},
19: {Name: "Mausoleum", ID: 19, CanBeTerrorized: true},
2: {Name: "Blood Moor", ID: 2, CanBeTerrorized: true},
20: {Name: "Forgotten Tower", ID: 20, CanBeTerrorized: true},
21: {Name: "Tower Cellar Level 1", ID: 21, CanBeTerrorized: false},
22: {Name: "Tower Cellar Level 2", ID: 22, CanBeTerrorized: false},
23: {Name: "Tower Cellar Level 3", ID: 23, CanBeTerrorized: false},
24: {Name: "Tower Cellar Level 4", ID: 24, CanBeTerrorized: false},
25: {Name: "Tower Cellar Level 5", ID: 25, CanBeTerrorized: false},
26: {Name: "Monastery Gate", ID: 26, CanBeTerrorized: false},
27: {Name: "Outer Cloister", ID: 27, CanBeTerrorized: false},
28: {Name: "Barracks", ID: 28, CanBeTerrorized: false},
29: {Name: "Jail Level 1", ID: 29, CanBeTerrorized: true},
3: {Name: "Cold Plains", ID: 3, CanBeTerrorized: true},
30: {Name: "Jail Level 2", ID: 30, CanBeTerrorized: true},
31: {Name: "Jail Level 3", ID: 31, CanBeTerrorized: true},
32: {Name: "Inner Cloister", ID: 32, CanBeTerrorized: true},
33: {Name: "Cathedral", ID: 33, CanBeTerrorized: true},
34: {Name: "Catacombs Level 1", ID: 34, CanBeTerrorized: true},
35: {Name: "Catacombs Level 2", ID: 35, CanBeTerrorized: true},
36: {Name: "Catacombs Level 3", ID: 36, CanBeTerrorized: true},
37: {Name: "Catacombs Level 4", ID: 37, CanBeTerrorized: true},
38: {Name: "Tristram", ID: 38, CanBeTerrorized: true},
39: {Name: "Moo Moo Farm", ID: 39, CanBeTerrorized: true},
4: {Name: "Stony Field", ID: 4, CanBeTerrorized: true},
40: {Name: "Lut Gholein", ID: 40, CanBeTerrorized: false},
41: {Name: "Rocky Waste", ID: 41, CanBeTerrorized: true},
42: {Name: "Dry Hills", ID: 42, CanBeTerrorized: true},
43: {Name: "Far Oasis", ID: 43, CanBeTerrorized: true},
44: {Name: "Lost City", ID: 44, CanBeTerrorized: true},
45: {Name: "Valley of Snakes", ID: 45, CanBeTerrorized: true},
46: {Name: "Canyon of the Magi", ID: 46, CanBeTerrorized: false},
47: {Name: "Sewers Level 1", ID: 47, CanBeTerrorized: true},
48: {Name: "Sewers Level 2", ID: 48, CanBeTerrorized: true},
49: {Name: "Sewers Level 3", ID: 49, CanBeTerrorized: true},
5: {Name: "Dark Wood", ID: 5, CanBeTerrorized: true},
50: {Name: "Harem Level 1", ID: 50, CanBeTerrorized: false},
51: {Name: "Harem Level 2", ID: 51, CanBeTerrorized: false},
52: {Name: "Palace Cellar Level 1", ID: 52, CanBeTerrorized: false},
53: {Name: "Palace Cellar Level 2", ID: 53, CanBeTerrorized: false},
54: {Name: "Palace Cellar Level 3", ID: 54, CanBeTerrorized: false},
55: {Name: "Stony Tomb Level 1", ID: 55, CanBeTerrorized: false},
56: {Name: "Halls of the Dead Level 1", ID: 56, CanBeTerrorized: true},
57: {Name: "Halls of the Dead Level 2", ID: 57, CanBeTerrorized: true},
58: {Name: "Claw Viper Temple Level 1", ID: 58, CanBeTerrorized: true},
59: {Name: "Stony Tomb Level 2", ID: 59, CanBeTerrorized: false},
6: {Name: "Black Marsh", ID: 6, CanBeTerrorized: true},
60: {Name: "Halls of the Dead Level 3", ID: 60, CanBeTerrorized: true},
61: {Name: "Claw Viper Temple Level 2", ID: 61, CanBeTerrorized: true},
62: {Name: "Maggot Lair Level 1", ID: 62, CanBeTerrorized: false},
63: {Name: "Maggot Lair Level 2", ID: 63, CanBeTerrorized: false},
64: {Name: "Maggot Lair Level 3", ID: 64, CanBeTerrorized: false},
65: {Name: "Ancient Tunnels", ID: 65, CanBeTerrorized: true},
66: {Name: "Tal Rasha's Tomb", ID: 66, CanBeTerrorized: true},
67: {Name: "Tal Rasha's Tomb", ID: 67, CanBeTerrorized: false},
68: {Name: "Tal Rasha's Tomb", ID: 68, CanBeTerrorized: false},
69: {Name: "Tal Rasha's Tomb", ID: 69, CanBeTerrorized: false},
7: {Name: "Tamoe Highland", ID: 7, CanBeTerrorized: false},
70: {Name: "Tal Rasha's Tomb", ID: 70, CanBeTerrorized: false},
71: {Name: "Tal Rasha's Tomb", ID: 71, CanBeTerrorized: false},
72: {Name: "Tal Rasha's Tomb", ID: 72, CanBeTerrorized: false},
73: {Name: "Duriel's Lair", ID: 73, CanBeTerrorized: false},
74: {Name: "Arcane Sanctuary", ID: 74, CanBeTerrorized: true},
75: {Name: "Kurast Docktown", ID: 75, CanBeTerrorized: false},
76: {Name: "Spider Forest", ID: 76, CanBeTerrorized: true},
77: {Name: "Great Marsh", ID: 77, CanBeTerrorized: true},
78: {Name: "Flayer Jungle", ID: 78, CanBeTerrorized: true},
79: {Name: "Lower Kurast", ID: 79, CanBeTerrorized: false},
8: {Name: "Den of Evil", ID: 8, CanBeTerrorized: true},
80: {Name: "Kurast Bazaar", ID: 80, CanBeTerrorized: true},
81: {Name: "Upper Kurast", ID: 81, CanBeTerrorized: false},
82: {Name: "Kurast Causeway", ID: 82, CanBeTerrorized: false},
83: {Name: "Travincal", ID: 83, CanBeTerrorized: true},
84: {Name: "Spider Cave", ID: 84, CanBeTerrorized: false},
85: {Name: "Spider Cavern", ID: 85, CanBeTerrorized: true},
86: {Name: "Swampy Pit Level 1", ID: 86, CanBeTerrorized: false},
87: {Name: "Swampy Pit Level 2", ID: 87, CanBeTerrorized: false},
88: {Name: "Flayer Dungeon Level 1", ID: 88, CanBeTerrorized: true},
89: {Name: "Flayer Dungeon Level 2", ID: 89, CanBeTerrorized: true},
9: {Name: "Cave Level 1", ID: 9, CanBeTerrorized: true},
90: {Name: "Swampy Pit Level 3", ID: 90, CanBeTerrorized: false},
91: {Name: "Flayer Dungeon Level 3", ID: 91, CanBeTerrorized: true},
92: {Name: "Sewers Level 1", ID: 92, CanBeTerrorized: false},
93: {Name: "Sewers Level 2", ID: 93, CanBeTerrorized: false},
94: {Name: "Ruined Temple", ID: 94, CanBeTerrorized: true},
95: {Name: "Disused Fane", ID: 95, CanBeTerrorized: true},
96: {Name: "Forgotten Reliquary", ID: 96, CanBeTerrorized: false},
97: {Name: "Forgotten Temple", ID: 97, CanBeTerrorized: false},
98: {Name: "Ruined Fane", ID: 98, CanBeTerrorized: false},
99: {Name: "Disused Reliquary", ID: 99, CanBeTerrorized: false},
0: {Name: "", ID: 0},
1: {Name: "Rogue Encampment", ID: 1},
2: {Name: "Blood Moor", ID: 2},
3: {Name: "Cold Plains", ID: 3},
4: {Name: "Stony Field", ID: 4},
5: {Name: "Dark Wood", ID: 5},
6: {Name: "Black Marsh", ID: 6},
7: {Name: "Tamoe Highland", ID: 7},
8: {Name: "Den of Evil", ID: 8},
9: {Name: "Cave Level 1", ID: 9},
10: {Name: "Underground Passage Level 1", ID: 10},
11: {Name: "Hole Level 1", ID: 11},
12: {Name: "Pit Level 1", ID: 12},
13: {Name: "Cave Level 2", ID: 13},
14: {Name: "Underground Passage Level 2", ID: 14},
15: {Name: "Hole Level 2", ID: 15},
16: {Name: "Pit Level 2", ID: 16},
17: {Name: "Burial Grounds", ID: 17},
18: {Name: "Crypt", ID: 18},
19: {Name: "Mausoleum", ID: 19},
20: {Name: "Forgotten Tower", ID: 20},
21: {Name: "Tower Cellar Level 1", ID: 21},
22: {Name: "Tower Cellar Level 2", ID: 22},
23: {Name: "Tower Cellar Level 3", ID: 23},
24: {Name: "Tower Cellar Level 4", ID: 24},
25: {Name: "Tower Cellar Level 5", ID: 25},
26: {Name: "Monastery Gate", ID: 26},
27: {Name: "Outer Cloister", ID: 27},
28: {Name: "Barracks", ID: 28},
29: {Name: "Jail Level 1", ID: 29},
30: {Name: "Jail Level 2", ID: 30},
31: {Name: "Jail Level 3", ID: 31},
32: {Name: "Inner Cloister", ID: 32},
33: {Name: "Cathedral", ID: 33},
34: {Name: "Catacombs Level 1", ID: 34},
35: {Name: "Catacombs Level 2", ID: 35},
36: {Name: "Catacombs Level 3", ID: 36},
37: {Name: "Catacombs Level 4", ID: 37},
38: {Name: "Tristram", ID: 38},
39: {Name: "Moo Moo Farm", ID: 39},
40: {Name: "Lut Gholein", ID: 40},
41: {Name: "Rocky Waste", ID: 41},
42: {Name: "Dry Hills", ID: 42},
43: {Name: "Far Oasis", ID: 43},
44: {Name: "Lost City", ID: 44},
45: {Name: "Valley of Snakes", ID: 45},
46: {Name: "Canyon of the Magi", ID: 46},
47: {Name: "Sewers Level 1", ID: 47},
48: {Name: "Sewers Level 2", ID: 48},
49: {Name: "Sewers Level 3", ID: 49},
50: {Name: "Harem Level 1", ID: 50},
51: {Name: "Harem Level 2", ID: 51},
52: {Name: "Palace Cellar Level 1", ID: 52},
53: {Name: "Palace Cellar Level 2", ID: 53},
54: {Name: "Palace Cellar Level 3", ID: 54},
55: {Name: "Stony Tomb Level 1", ID: 55},
56: {Name: "Halls of the Dead Level 1", ID: 56},
57: {Name: "Halls of the Dead Level 2", ID: 57},
58: {Name: "Claw Viper Temple Level 1", ID: 58},
59: {Name: "Stony Tomb Level 2", ID: 59},
60: {Name: "Halls of the Dead Level 3", ID: 60},
61: {Name: "Claw Viper Temple Level 2", ID: 61},
62: {Name: "Maggot Lair Level 1", ID: 62},
63: {Name: "Maggot Lair Level 2", ID: 63},
64: {Name: "Maggot Lair Level 3", ID: 64},
65: {Name: "Ancient Tunnels", ID: 65},
66: {Name: "Tal Rasha's Tomb", ID: 66},
67: {Name: "Tal Rasha's Tomb", ID: 67},
68: {Name: "Tal Rasha's Tomb", ID: 68},
69: {Name: "Tal Rasha's Tomb", ID: 69},
70: {Name: "Tal Rasha's Tomb", ID: 70},
71: {Name: "Tal Rasha's Tomb", ID: 71},
72: {Name: "Tal Rasha's Tomb", ID: 72},
73: {Name: "Duriel's Lair", ID: 73},
74: {Name: "Arcane Sanctuary", ID: 74},
75: {Name: "Kurast Docktown", ID: 75},
76: {Name: "Spider Forest", ID: 76},
77: {Name: "Great Marsh", ID: 77},
78: {Name: "Flayer Jungle", ID: 78},
79: {Name: "Lower Kurast", ID: 79},
80: {Name: "Kurast Bazaar", ID: 80},
81: {Name: "Upper Kurast", ID: 81},
82: {Name: "Kurast Causeway", ID: 82},
83: {Name: "Travincal", ID: 83},
84: {Name: "Spider Cave", ID: 84},
85: {Name: "Spider Cavern", ID: 85},
86: {Name: "Swampy Pit Level 1", ID: 86},
87: {Name: "Swampy Pit Level 2", ID: 87},
88: {Name: "Flayer Dungeon Level 1", ID: 88},
89: {Name: "Flayer Dungeon Level 2", ID: 89},
90: {Name: "Swampy Pit Level 3", ID: 90},
91: {Name: "Flayer Dungeon Level 3", ID: 91},
92: {Name: "Sewers Level 1", ID: 92},
93: {Name: "Sewers Level 2", ID: 93},
94: {Name: "Ruined Temple", ID: 94},
95: {Name: "Disused Fane", ID: 95},
96: {Name: "Forgotten Reliquary", ID: 96},
97: {Name: "Forgotten Temple", ID: 97},
98: {Name: "Ruined Fane", ID: 98},
99: {Name: "Disused Reliquary", ID: 99},
100: {Name: "Durance of Hate Level 1", ID: 100},
101: {Name: "Durance of Hate Level 2", ID: 101},
102: {Name: "Durance of Hate Level 3", ID: 102},
103: {Name: "The Pandemonium Fortress", ID: 103},
104: {Name: "Outer Steppes", ID: 104},
105: {Name: "Plains of Despair", ID: 105},
106: {Name: "City of the Damned", ID: 106},
107: {Name: "River of Flame", ID: 107},
108: {Name: "Chaos Sanctum", ID: 108},
109: {Name: "Harrogath", ID: 109},
110: {Name: "Bloody Foothills", ID: 110},
111: {Name: "Rigid Highlands", ID: 111},
112: {Name: "Arreat Plateau", ID: 112},
113: {Name: "Crystalized Cavern Level 1", ID: 113},
114: {Name: "Cellar of Pity", ID: 114},
115: {Name: "Crystalized Cavern Level 2", ID: 115},
116: {Name: "Echo Chamber", ID: 116},
117: {Name: "Tundra Wastelands", ID: 117},
118: {Name: "Glacial Caves Level 1", ID: 118},
119: {Name: "Glacial Caves Level 2", ID: 119},
120: {Name: "Rocky Summit", ID: 120},
121: {Name: "Nihlathaks Temple", ID: 121},
122: {Name: "Halls of Anguish", ID: 122},
123: {Name: "Halls of Death's Calling", ID: 123},
124: {Name: "Halls of Vaught", ID: 124},
125: {Name: "Hell1", ID: 125},
126: {Name: "Hell2", ID: 126},
127: {Name: "Hell3", ID: 127},
128: {Name: "The Worldstone Keep Level 1", ID: 128},
129: {Name: "The Worldstone Keep Level 2", ID: 129},
130: {Name: "The Worldstone Keep Level 3", ID: 130},
131: {Name: "Throne of Destruction", ID: 131},
132: {Name: "The Worldstone Chamber", ID: 132},
133: {Name: "Pandemonium Run 1", ID: 133},
134: {Name: "Pandemonium Run 2", ID: 134},
135: {Name: "Pandemonium Run 3", ID: 135},
136: {Name: "Tristram", ID: 136},
}

View File

@@ -0,0 +1,88 @@
package area
var CanBeTerrorized = map[ID]bool{
BloodMoor: true,
DenOfEvil: true,
ColdPlains: true,
CaveLevel1: true,
PitLevel1: true,
BurialGrounds: true,
Crypt: true,
Mausoleum: true,
StonyField: true,
DarkWood: true,
UndergroundPassageLevel1: true,
UndergroundPassageLevel2: true,
BlackMarsh: true,
HoleLevel1: true,
HoleLevel2: true,
ForgottenTower: true,
JailLevel1: true,
JailLevel2: true,
JailLevel3: true,
InnerCloister: true,
Cathedral: true,
CatacombsLevel1: true,
CatacombsLevel2: true,
CatacombsLevel3: true,
CatacombsLevel4: true,
Tristram: true,
MooMooFarm: true,
RockyWaste: true,
SewersLevel1Act2: true,
SewersLevel2Act2: true,
SewersLevel3Act2: true,
DryHills: true,
HallsOfTheDeadLevel1: true,
HallsOfTheDeadLevel2: true,
HallsOfTheDeadLevel3: true,
FarOasis: true,
LostCity: true,
ValleyOfSnakes: true,
ClawViperTempleLevel1: true,
ClawViperTempleLevel2: true,
AncientTunnels: true,
TalRashasTomb1: true,
TalRashasTomb2: true,
TalRashasTomb3: true,
TalRashasTomb4: true,
TalRashasTomb5: true,
TalRashasTomb6: true,
TalRashasTomb7: true,
ArcaneSanctuary: true,
SpiderForest: true,
SpiderCavern: true,
Travincal: true,
GreatMarsh: true,
FlayerJungle: true,
FlayerDungeonLevel1: true,
FlayerDungeonLevel2: true,
FlayerDungeonLevel3: true,
KurastBazaar: true,
RuinedTemple: true,
DisusedFane: true,
DuranceOfHateLevel1: true,
DuranceOfHateLevel2: true,
DuranceOfHateLevel3: true,
OuterSteppes: true,
PlainsOfDespair: true,
CityOfTheDamned: true,
RiverOfFlame: true,
ChaosSanctuary: true,
BloodyFoothills: true,
FrigidHighlands: true,
Abaddon: true,
GlacialTrail: true,
DrifterCavern: true,
CrystallinePassage: true,
FrozenRiver: true,
ArreatPlateau: true,
PitOfAcheron: true,
TheAncientsWay: true,
IcyCellar: true,
NihlathaksTemple: true,
TheWorldStoneKeepLevel1: true,
TheWorldStoneKeepLevel2: true,
TheWorldStoneKeepLevel3: true,
ThroneOfDestruction: true,
}

View File

@@ -11,6 +11,7 @@ type Description struct {
InventoryHeight int
MinDefense int
MaxDefense int
Type string
}
func (d Description) Tier() Tier {
@@ -24,3 +25,7 @@ func (d Description) Tier() Tier {
return TierNormal
}
func (d Description) GetType() Type {
return ItemTypes[d.Type]
}

File diff suppressed because it is too large Load Diff

211
pkg/data/item/itemtypes.go Normal file
View File

@@ -0,0 +1,211 @@
// Code generated by cmd/txttocode. DO NOT EDIT.
// source: cmd/txttocode/txt/itemtypes.txt
package item
const (
TypeNone = "none"
TypeShield = "shie"
TypeArmor = "tors"
TypeGold = "gold"
TypeBowQuiver = "bowq"
TypeCrossbowQuiver = "xboq"
TypePlayerBodyPart = "play"
TypeHerb = "herb"
TypePotion = "poti"
TypeRing = "ring"
TypeElixir = "elix"
TypeAmulet = "amul"
TypeCharm = "char"
TypeBoots = "boot"
TypeGloves = "glov"
TypeBook = "book"
TypeBelt = "belt"
TypeGem = "gem"
TypeTorch = "torc"
TypeScroll = "scro"
TypeScepter = "scep"
TypeWand = "wand"
TypeStaff = "staf"
TypeBow = "bow"
TypeAxe = "axe"
TypeClub = "club"
TypeSword = "swor"
TypeHammer = "hamm"
TypeKnife = "knif"
TypeSpear = "spea"
TypePolearm = "pole"
TypeCrossbow = "xbow"
TypeMace = "mace"
TypeHelm = "helm"
TypeMissilePotion = "tpot"
TypeQuest = "ques"
TypeBodyPart = "body"
TypeKey = "key"
TypeThrowingKnife = "tkni"
TypeThrowingAxe = "taxe"
TypeJavelin = "jave"
TypeWeapon = "weap"
TypeMeleeWeapon = "mele"
TypeMissileWeapon = "miss"
TypeThrownWeapon = "thro"
TypeComboWeapon = "comb"
TypeAnyArmor = "armo"
TypeAnyShield = "shld"
TypeMiscellaneous = "misc"
TypeSocketFiller = "sock"
TypeSecondHand = "seco"
TypeStavesAndRods = "rod"
TypeMissile = "misl"
TypeBlunt = "blun"
TypeJewel = "jewl"
TypeClassSpecific = "clas"
TypeAmazonItem = "amaz"
TypeBarbarianItem = "barb"
TypeNecromancerItem = "necr"
TypePaladinItem = "pala"
TypeSorceressItem = "sorc"
TypeAssassinItem = "assn"
TypeDruidItem = "drui"
TypeHandtoHand = "h2h"
TypeOrb = "orb"
TypeVoodooHeads = "head"
TypeAuricShields = "ashd"
TypePrimalHelm = "phlm"
TypePelt = "pelt"
TypeCloak = "cloa"
TypeRune = "rune"
TypeCirclet = "circ"
TypeHealingPotion = "hpot"
TypeManaPotion = "mpot"
TypeRejuvPotion = "rpot"
TypeStaminaPotion = "spot"
TypeAntidotePotion = "apot"
TypeThawingPotion = "wpot"
TypeSmallCharm = "scha"
TypeMediumCharm = "mcha"
TypeLargeCharm = "lcha"
TypeAmazonBow = "abow"
TypeAmazonSpear = "aspe"
TypeAmazonJavelin = "ajav"
TypeHandtoHand2 = "h2h2"
TypeMagicBowQuiv = "mboq"
TypeMagicXbowQuiv = "mxbq"
TypeChippedGem = "gem0"
TypeFlawedGem = "gem1"
TypeStandardGem = "gem2"
TypeFlawlessGem = "gem3"
TypePerfectGem = "gem4"
TypeAmethyst = "gema"
TypeDiamond = "gemd"
TypeEmerald = "geme"
TypeRuby = "gemr"
TypeSapphire = "gems"
TypeTopaz = "gemt"
TypeSkull = "gemz"
TypeSwordsandKnives = "blde"
TypeSpearsandPolearms = "sppl"
)
var ItemTypes = map[string]Type{
TypeNone: {ID: 0, Name: "None", Code: "none", Throwable: false, Beltable: false},
TypeShield: {ID: 1, Name: "Shield", Code: "shie", Throwable: false, Beltable: false},
TypeArmor: {ID: 2, Name: "Armor", Code: "tors", Throwable: false, Beltable: false},
TypeGold: {ID: 3, Name: "Gold", Code: "gold", Throwable: false, Beltable: false},
TypeBowQuiver: {ID: 4, Name: "Bow Quiver", Code: "bowq", Throwable: false, Beltable: false},
TypeCrossbowQuiver: {ID: 5, Name: "Crossbow Quiver", Code: "xboq", Throwable: false, Beltable: false},
TypePlayerBodyPart: {ID: 6, Name: "Player Body Part", Code: "play", Throwable: false, Beltable: false},
TypeHerb: {ID: 7, Name: "Herb", Code: "herb", Throwable: false, Beltable: false},
TypePotion: {ID: 8, Name: "Potion", Code: "poti", Throwable: false, Beltable: true},
TypeRing: {ID: 9, Name: "Ring", Code: "ring", Throwable: false, Beltable: false},
TypeElixir: {ID: 10, Name: "Elixir", Code: "elix", Throwable: false, Beltable: true},
TypeAmulet: {ID: 11, Name: "Amulet", Code: "amul", Throwable: false, Beltable: false},
TypeCharm: {ID: 12, Name: "Charm", Code: "char", Throwable: false, Beltable: false},
TypeBoots: {ID: 13, Name: "Boots", Code: "boot", Throwable: false, Beltable: false},
TypeGloves: {ID: 14, Name: "Gloves", Code: "glov", Throwable: false, Beltable: false},
TypeBook: {ID: 15, Name: "Book", Code: "book", Throwable: false, Beltable: false},
TypeBelt: {ID: 16, Name: "Belt", Code: "belt", Throwable: false, Beltable: false},
TypeGem: {ID: 17, Name: "Gem", Code: "gem", Throwable: false, Beltable: false},
TypeTorch: {ID: 18, Name: "Torch", Code: "torc", Throwable: false, Beltable: false},
TypeScroll: {ID: 19, Name: "Scroll", Code: "scro", Throwable: false, Beltable: true},
TypeScepter: {ID: 20, Name: "Scepter", Code: "scep", Throwable: false, Beltable: false},
TypeWand: {ID: 21, Name: "Wand", Code: "wand", Throwable: false, Beltable: false},
TypeStaff: {ID: 22, Name: "Staff", Code: "staf", Throwable: false, Beltable: false},
TypeBow: {ID: 23, Name: "Bow", Code: "bow", Throwable: false, Beltable: false},
TypeAxe: {ID: 24, Name: "Axe", Code: "axe", Throwable: false, Beltable: false},
TypeClub: {ID: 25, Name: "Club", Code: "club", Throwable: false, Beltable: false},
TypeSword: {ID: 26, Name: "Sword", Code: "swor", Throwable: false, Beltable: false},
TypeHammer: {ID: 27, Name: "Hammer", Code: "hamm", Throwable: false, Beltable: false},
TypeKnife: {ID: 28, Name: "Knife", Code: "knif", Throwable: false, Beltable: false},
TypeSpear: {ID: 29, Name: "Spear", Code: "spea", Throwable: false, Beltable: false},
TypePolearm: {ID: 30, Name: "Polearm", Code: "pole", Throwable: false, Beltable: false},
TypeCrossbow: {ID: 31, Name: "Crossbow", Code: "xbow", Throwable: false, Beltable: false},
TypeMace: {ID: 32, Name: "Mace", Code: "mace", Throwable: false, Beltable: false},
TypeHelm: {ID: 33, Name: "Helm", Code: "helm", Throwable: false, Beltable: false},
TypeMissilePotion: {ID: 34, Name: "Missile Potion", Code: "tpot", Throwable: true, Beltable: false},
TypeQuest: {ID: 35, Name: "Quest", Code: "ques", Throwable: false, Beltable: false},
TypeBodyPart: {ID: 36, Name: "Body Part", Code: "body", Throwable: false, Beltable: false},
TypeKey: {ID: 37, Name: "Key", Code: "key", Throwable: false, Beltable: false},
TypeThrowingKnife: {ID: 38, Name: "Throwing Knife", Code: "tkni", Throwable: true, Beltable: false},
TypeThrowingAxe: {ID: 39, Name: "Throwing Axe", Code: "taxe", Throwable: true, Beltable: false},
TypeJavelin: {ID: 40, Name: "Javelin", Code: "jave", Throwable: true, Beltable: false},
TypeWeapon: {ID: 41, Name: "Weapon", Code: "weap", Throwable: false, Beltable: false},
TypeMeleeWeapon: {ID: 42, Name: "Melee Weapon", Code: "mele", Throwable: false, Beltable: false},
TypeMissileWeapon: {ID: 43, Name: "Missile Weapon", Code: "miss", Throwable: false, Beltable: false},
TypeThrownWeapon: {ID: 44, Name: "Thrown Weapon", Code: "thro", Throwable: true, Beltable: false},
TypeComboWeapon: {ID: 45, Name: "Combo Weapon", Code: "comb", Throwable: true, Beltable: false},
TypeAnyArmor: {ID: 46, Name: "Any Armor", Code: "armo", Throwable: false, Beltable: false},
TypeAnyShield: {ID: 47, Name: "Any Shield", Code: "shld", Throwable: false, Beltable: false},
TypeMiscellaneous: {ID: 48, Name: "Miscellaneous", Code: "misc", Throwable: false, Beltable: false},
TypeSocketFiller: {ID: 49, Name: "Socket Filler", Code: "sock", Throwable: false, Beltable: false},
TypeSecondHand: {ID: 50, Name: "Second Hand", Code: "seco", Throwable: false, Beltable: false},
TypeStavesAndRods: {ID: 51, Name: "Staves And Rods", Code: "rod", Throwable: false, Beltable: false},
TypeMissile: {ID: 52, Name: "Missile", Code: "misl", Throwable: false, Beltable: false},
TypeBlunt: {ID: 53, Name: "Blunt", Code: "blun", Throwable: false, Beltable: false},
TypeJewel: {ID: 54, Name: "Jewel", Code: "jewl", Throwable: false, Beltable: false},
TypeClassSpecific: {ID: 55, Name: "Class Specific", Code: "clas", Throwable: false, Beltable: false},
TypeAmazonItem: {ID: 56, Name: "Amazon Item", Code: "amaz", Throwable: false, Beltable: false},
TypeBarbarianItem: {ID: 57, Name: "Barbarian Item", Code: "barb", Throwable: false, Beltable: false},
TypeNecromancerItem: {ID: 58, Name: "Necromancer Item", Code: "necr", Throwable: false, Beltable: false},
TypePaladinItem: {ID: 59, Name: "Paladin Item", Code: "pala", Throwable: false, Beltable: false},
TypeSorceressItem: {ID: 60, Name: "Sorceress Item", Code: "sorc", Throwable: false, Beltable: false},
TypeAssassinItem: {ID: 61, Name: "Assassin Item", Code: "assn", Throwable: false, Beltable: false},
TypeDruidItem: {ID: 62, Name: "Druid Item", Code: "drui", Throwable: false, Beltable: false},
TypeHandtoHand: {ID: 63, Name: "Hand to Hand", Code: "h2h", Throwable: false, Beltable: false},
TypeOrb: {ID: 64, Name: "Orb", Code: "orb", Throwable: false, Beltable: false},
TypeVoodooHeads: {ID: 65, Name: "Voodoo Heads", Code: "head", Throwable: false, Beltable: false},
TypeAuricShields: {ID: 66, Name: "Auric Shields", Code: "ashd", Throwable: false, Beltable: false},
TypePrimalHelm: {ID: 67, Name: "Primal Helm", Code: "phlm", Throwable: false, Beltable: false},
TypePelt: {ID: 68, Name: "Pelt", Code: "pelt", Throwable: false, Beltable: false},
TypeCloak: {ID: 69, Name: "Cloak", Code: "cloa", Throwable: false, Beltable: false},
TypeRune: {ID: 70, Name: "Rune", Code: "rune", Throwable: false, Beltable: false},
TypeCirclet: {ID: 71, Name: "Circlet", Code: "circ", Throwable: false, Beltable: false},
TypeHealingPotion: {ID: 72, Name: "Healing Potion", Code: "hpot", Throwable: false, Beltable: true},
TypeManaPotion: {ID: 73, Name: "Mana Potion", Code: "mpot", Throwable: false, Beltable: true},
TypeRejuvPotion: {ID: 74, Name: "Rejuv Potion", Code: "rpot", Throwable: false, Beltable: true},
TypeStaminaPotion: {ID: 75, Name: "Stamina Potion", Code: "spot", Throwable: false, Beltable: true},
TypeAntidotePotion: {ID: 76, Name: "Antidote Potion", Code: "apot", Throwable: false, Beltable: true},
TypeThawingPotion: {ID: 77, Name: "Thawing Potion", Code: "wpot", Throwable: false, Beltable: true},
TypeSmallCharm: {ID: 78, Name: "Small Charm", Code: "scha", Throwable: false, Beltable: false},
TypeMediumCharm: {ID: 79, Name: "Medium Charm", Code: "mcha", Throwable: false, Beltable: false},
TypeLargeCharm: {ID: 80, Name: "Large Charm", Code: "lcha", Throwable: false, Beltable: false},
TypeAmazonBow: {ID: 81, Name: "Amazon Bow", Code: "abow", Throwable: false, Beltable: false},
TypeAmazonSpear: {ID: 82, Name: "Amazon Spear", Code: "aspe", Throwable: false, Beltable: false},
TypeAmazonJavelin: {ID: 83, Name: "Amazon Javelin", Code: "ajav", Throwable: true, Beltable: false},
TypeHandtoHand2: {ID: 84, Name: "Hand to Hand 2", Code: "h2h2", Throwable: false, Beltable: false},
TypeMagicBowQuiv: {ID: 85, Name: "Magic Bow Quiv", Code: "mboq", Throwable: false, Beltable: false},
TypeMagicXbowQuiv: {ID: 86, Name: "Magic Xbow Quiv", Code: "mxbq", Throwable: false, Beltable: false},
TypeChippedGem: {ID: 87, Name: "Chipped Gem", Code: "gem0", Throwable: false, Beltable: false},
TypeFlawedGem: {ID: 88, Name: "Flawed Gem", Code: "gem1", Throwable: false, Beltable: false},
TypeStandardGem: {ID: 89, Name: "Standard Gem", Code: "gem2", Throwable: false, Beltable: false},
TypeFlawlessGem: {ID: 90, Name: "Flawless Gem", Code: "gem3", Throwable: false, Beltable: false},
TypePerfectGem: {ID: 91, Name: "Perfect Gem", Code: "gem4", Throwable: false, Beltable: false},
TypeAmethyst: {ID: 92, Name: "Amethyst", Code: "gema", Throwable: false, Beltable: false},
TypeDiamond: {ID: 93, Name: "Diamond", Code: "gemd", Throwable: false, Beltable: false},
TypeEmerald: {ID: 94, Name: "Emerald", Code: "geme", Throwable: false, Beltable: false},
TypeRuby: {ID: 95, Name: "Ruby", Code: "gemr", Throwable: false, Beltable: false},
TypeSapphire: {ID: 96, Name: "Sapphire", Code: "gems", Throwable: false, Beltable: false},
TypeTopaz: {ID: 97, Name: "Topaz", Code: "gemt", Throwable: false, Beltable: false},
TypeSkull: {ID: 98, Name: "Skull", Code: "gemz", Throwable: false, Beltable: false},
TypeSwordsandKnives: {ID: 99, Name: "Swords and Knives", Code: "blde", Throwable: false, Beltable: false},
TypeSpearsandPolearms: {ID: 100, Name: "Spears and Polearms", Code: "sppl", Throwable: false, Beltable: false},
}

View File

@@ -1,83 +1,14 @@
package item
import "strings"
var typeMapping = map[string][]string{
"amulet": {"Amulet"},
"gold": {"Gold"},
"ring": {"Ring"},
"jewel": {"Jewel"},
"axe": {"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"},
"wand": {"Wand", "YewWand", "BoneWand", "GrimWand", "BurntWand", "PetrifiedWand", "TombWand", "GraveWand", "PolishedWand", "GhostWand", "LichWand", "UnearthedWand"},
"club": {"Club", "SpikedClub", "Cudgel", "BarbedClub", "Truncheon", "TyrantClub"},
"scepter": {"Scepter", "GrandScepter", "WarScepter", "RuneScepter", "HolyWaterSprinkler", "DivineScepter", "MightyScepter", "SeraphRod", "Caduceus"},
"mace": {"Mace", "MorningStar", "Flail", "FlangedMace", "JaggedStar", "Knout", "ReinforcedMace", "DevilStar", "Scourge"},
"hammer": {"WarHammer", "Maul", "GreatMaul", "BattleHammer", "WarClub", "MartelDeFer", "LegendaryMallet", "OgreMaul", "ThunderMaul"},
"sword": {"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", "ColossalSword", "ColossusBlade"},
"knife": {"Dagger", "Dirk", "Kris", "Blade", "Poignard", "Rondel", "Cinquedeas", "Stiletto", "BoneKnife", "MithrilPoint", "FangedKnife", "LegendSpike"},
"thrownweapon": {"ThrowingKnife", "BalancedKnife", "BattleDart", "WarDart", "FlyingKnife", "WingedKnife"},
"throwingaxe": {"ThrowingAxe", "BalancedAxe", "Francisca", "Hurlbat", "FlyingAxe", "WingedAxe"},
"javelin": {"Javelin", "Pilum", "ShortSpear", "Glaive", "ThrowingSpear", "WarJavelin", "GreatPilum", "Simbilan", "Spiculum", "Harpoon", "HyperionJavelin", "StygianPilum", "BalrogSpear", "GhostGlaive", "WingedHarpoon"},
"spear": {"Spear", "Trident", "Brandistock", "Spetum", "Pike", "WarSpear", "Fuscina", "WarFork", "Yari", "Lance", "HyperionSpear", "StygianPike", "Mancatcher", "GhostSpear", "WarPike"},
"polearm": {"Bardiche", "Voulge", "Scythe", "Poleaxe", "Halberd", "WarScythe", "LochaberAxe", "Bill", "BattleScythe", "Partizan", "BecDeCorbin", "GrimScythe", "OgreAxe", "ColossusVoulge", "Thresher", "CrypticAxe", "GreatPoleaxe", "GiantThresher"},
"staff": {"ShortStaff", "LongStaff", "GnarledStaff", "BattleStaff", "WarStaff", "JoStaff", "QuarterStaff", "CedarStaff", "GothicStaff", "RuneStaff", "WalkingStick", "Stalagmite", "ElderStaff", "Shillelagh", "ArchonStaff"},
"bow": {"ShortBow", "HuntersBow", "LongBow", "CompositeBow", "ShortBattleBow", "LongBattleBow", "ShortWarBow", "LongWarBow", "EdgeBow", "RazorBow", "CedarBow", "DoubleBow", "ShortSiegeBow", "LargeSiegeBow", "RuneBow", "GothicBow", "SpiderBow", "BladeBow", "ShadowBow", "GreatBow", "DiamondBow", "CrusaderBow", "WardBow", "HydraBow"},
"crossbow": {"LightCrossbow", "Crossbow", "HeavyCrossbow", "RepeatingCrossbow", "Arbalest", "SiegeCrossbow", "Ballista", "ChuKoNu", "PelletBow", "GorgonCrossbow", "ColossusCrossbow", "DemonCrossBow"},
"helm": {"Cap", "SkullCap", "Helm", "FullHelm", "GreatHelm", "Crown", "Mask", "BoneHelm", "WarHat", "Sallet", "Casque", "Basinet", "WingedHelm", "GrandCrown", "DeathMask", "GrimHelm", "Shako", "Hydraskull", "Armet", "GiantConch", "SpiredHelm", "Corona", "DemonHead", "BoneVisage"},
"armor": {"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"},
"shield": {"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"},
"belt": {"Sash", "LightBelt", "Belt", "HeavyBelt", "PlatedBelt", "DemonhideSash", "SharkskinBelt", "MeshBelt", "BattleBelt", "WarBelt", "SpiderwebSash", "VampirefangBelt", "MithrilCoil", "TrollBelt", "ColossusGirdle"},
"circlet": {"Circlet", "Coronet", "Tiara", "Diadem"},
"assassinclaw": {"Katar", "WristBlade", "HatchetHands", "Cestus", "Claws", "BladeTalons", "ScissorsKatar", "Quhab", "WristSpike", "Fascia", "HandScythe", "GreaterClaws", "GreaterTalons", "ScissorsQuhab", "Suwayyah", "WristSword", "WarFist", "BattleCestus", "FeralClaws", "RunicTalons", "ScissorsSuwayyah"},
"orb": {"EagleOrb", "SacredGlobe", "SmokedSphere", "ClaspedOrb", "JaredsStone", "GlowingOrb", "CrystallineGlobe", "CloudySphere", "SparklingBall", "SwirlingCrystal", "HeavenlyStone", "EldritchOrb", "DemonHeart", "VortexOrb", "DimensionalShard"},
"amazonbow": {"StagBow", "ReflexBow", "AshwoodBow", "CeremonialBow", "MatriarchalBow", "GrandMatronBow"},
"amazonspear": {"MaidenSpear", "MaidenPike", "CeremonialSpear", "CeremonialPike", "MatriarchalSpear", "MatriarchalPike"},
"amazonjavelin": {"MaidenJavelin", "CeremonialJavelin", "MatriarchalJavelin"},
"pelt": {"WolfHead", "HawkHelm", "Antlers", "FalconMask", "SpiritMask", "AlphaHelm", "GriffonHeaddress", "HuntersGuise", "SacredFeathers", "TotemicMask", "BloodSpirit", "SunSpirit", "EarthSpirit", "SkySpirit", "DreamSpirit"},
"primalhelm": {"JawboneCap", "FangedHelm", "HornedHelm", "AssaultHelmet", "AvengerGuard", "JawboneVisor", "LionHelm", "RageMask", "SavageHelmet", "SlayerGuard", "CarnageHelm", "FuryVisor", "DestroyerHelm", "ConquerorCrown", "GuardianCrown"},
"auricshields": {"Targe", "Rondache", "HeraldicShield", "AerinShield", "CrownShield", "AkaranTarge", "AkaranRondache", "ProtectorShield", "GildedShield", "RoyalShield", "SacredTarge", "SacredRondache", "KurastShield", "ZakarumShield", "VortexShield"},
"voodooheads": {"PreservedHead", "ZombieHead", "UnravellerHead", "GargoyleHead", "DemonHeadShield", "MummifiedTrophy", "FetishTrophy", "SextonTrophy", "CantorTrophy", "HierophantTrophy", "MinionSkull", "HellspawnSkull", "OverseerSkull", "SuccubusSkull", "BloodlordSkull"},
"runes": {"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"},
"ubers": {"KeyOfTerror", "KeyOfHate", "KeyOfDestruction", "DiablosHorn", "BaalsEye", "MephistosBrain"},
"tokens": {"TokenofAbsolution", "TwistedEssenceOfSuffering", "ChargedEssenceOfHatred", "BurningEssenceOfTerror", "FesteringEssenceOfDestruction"},
"chippedgems": {"ChippedAmethyst", "ChippedDiamond", "ChippedEmerald", "ChippedRuby", "ChippedSapphire", "ChippedSkull", "ChippedTopaz"},
"flawedgems": {"FlawedAmethyst", "FlawedDiamond", "FlawedEmerald", "FlawedRuby", "FlawedSapphire", "FlawedSkull", "FlawedTopaz"},
"gems": {"Amethyst", "Diamond", "Emerald", "Ruby", "Skull", "Sapphire", "Topaz"},
"flawlessgems": {"FlawlessAmethyst", "FlawlessDiamond", "FlawlessEmerald", "FlawlessRuby", "FlawlessSapphire", "FlawlessSkull", "FlawlessTopaz"},
"perfectgems": {"PerfectAmethyst", "PerfectDiamond", "PerfectEmerald", "PerfectRuby", "PerfectSapphire", "PerfectSkull", "PerfectTopaz"},
type Type struct {
ID int
Name string
Code string
Throwable bool
Beltable bool
}
var QuestItems = []string{
"TheGidbinn",
"WirtsLeg",
"HoradricMalus",
"HellforgeHammer",
"HoradricStaff",
"StaffOfKings",
"KhalimsFlail",
"AmuletOfTheViper",
"KhalimsEye",
"KhalimsHeart",
"KhalimsBrain",
"KhalimsWill",
"ScrollOfInifuss",
"KeyToTheCairnStones",
"HoradricCube",
"HoradricScroll",
"MephistosSoulstone",
"BookOfSkill",
}
func TypeForItemName(itemName string) (string, bool) {
for t, itemNames := range typeMapping {
for _, name := range itemNames {
if strings.EqualFold(itemName, name) {
return t, true
}
}
}
return "", false
// TODO: Refactor to support parent types
func (t Type) IsType(typeName string) bool {
return t.Code == typeName
}

View File

@@ -56,20 +56,17 @@ type Item struct {
Location item.Location
Ethereal bool
IsHovered bool
Stats []stat.Data
BaseStats []stat.Data
BaseStats stat.Stats
Stats stat.Stats
Identified bool
Type int
}
func (i Item) Desc() item.Description {
return item.Desc[i.ID]
}
func (i Item) TypeAsString() string {
t, _ := item.TypeForItemName(string(i.Name))
return t
func (i Item) Type() item.Type {
return i.Desc().GetType()
}
func (i Item) IsPotion() bool {
@@ -89,22 +86,14 @@ func (i Item) IsRejuvPotion() bool {
}
func (i Item) IsFromQuest() bool {
for _, q := range item.QuestItems {
if strings.EqualFold(string(i.Name), q) {
return true
}
}
return false
return i.Desc().Type == item.TypeQuest
}
func (i Item) FindStat(id stat.ID, layer int) (stat.Data, bool) {
totalStats := append(i.Stats, i.BaseStats...)
for _, s := range totalStats {
if s.ID == id && s.Layer == layer {
return s, true
}
st, found := i.Stats.FindStat(id, layer)
if found {
return st, true
}
return stat.Data{}, false
return i.BaseStats.FindStat(id, layer)
}

View File

@@ -1,164 +1,38 @@
// Code generated by d2data. DO NOT EDIT.
// source: cmd/d2data/d2data/skilldesc.json
// Code generated by cmd/txttocode. DO NOT EDIT.
// source: cmd/txttocode/txt/skilldesc.txt
package skill
var Desc = map[ID]Description{
0: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
1: {Page: 0, Row: 0, Column: 0, ListRow: -1, IconCel: 0},
10: {Page: 3, Row: 1, Column: 1, ListRow: 3, IconCel: 8},
100: {Page: 3, Row: 1, Column: 3, ListRow: 3, IconCel: 8},
101: {Page: 1, Row: 2, Column: 2, ListRow: 1, IconCel: 10},
102: {Page: 2, Row: 2, Column: 2, ListRow: 2, IconCel: 12},
103: {Page: 2, Row: 2, Column: 3, ListRow: 2, IconCel: 14},
104: {Page: 3, Row: 2, Column: 2, ListRow: 3, IconCel: 16},
105: {Page: 3, Row: 2, Column: 3, ListRow: 3, IconCel: 18},
106: {Page: 1, Row: 3, Column: 1, ListRow: 1, IconCel: 20},
107: {Page: 1, Row: 3, Column: 3, ListRow: 1, IconCel: 22},
108: {Page: 2, Row: 3, Column: 1, ListRow: 2, IconCel: 24},
109: {Page: 3, Row: 3, Column: 1, ListRow: 3, IconCel: 38},
11: {Page: 1, Row: 2, Column: 1, ListRow: 1, IconCel: 10},
110: {Page: 3, Row: 3, Column: 3, ListRow: 3, IconCel: 28},
111: {Page: 1, Row: 4, Column: 1, ListRow: 1, IconCel: 40},
112: {Page: 1, Row: 4, Column: 2, ListRow: 1, IconCel: 32},
113: {Page: 2, Row: 4, Column: 1, ListRow: 2, IconCel: 34},
114: {Page: 2, Row: 4, Column: 2, ListRow: 2, IconCel: 36},
115: {Page: 3, Row: 4, Column: 2, ListRow: 3, IconCel: 26},
116: {Page: 1, Row: 5, Column: 1, ListRow: 1, IconCel: 30},
117: {Page: 1, Row: 5, Column: 3, ListRow: 1, IconCel: 42},
118: {Page: 2, Row: 5, Column: 2, ListRow: 2, IconCel: 44},
119: {Page: 2, Row: 5, Column: 3, ListRow: 2, IconCel: 46},
12: {Page: 1, Row: 2, Column: 2, ListRow: 1, IconCel: 12},
120: {Page: 3, Row: 5, Column: 1, ListRow: 3, IconCel: 48},
121: {Page: 1, Row: 6, Column: 2, ListRow: 1, IconCel: 50},
122: {Page: 2, Row: 6, Column: 1, ListRow: 2, IconCel: 52},
123: {Page: 2, Row: 6, Column: 3, ListRow: 2, IconCel: 56},
124: {Page: 3, Row: 6, Column: 2, ListRow: 3, IconCel: 54},
125: {Page: 3, Row: 6, Column: 3, ListRow: 3, IconCel: 58},
126: {Page: 1, Row: 1, Column: 2, ListRow: 1, IconCel: 0},
127: {Page: 2, Row: 1, Column: 1, ListRow: 2, IconCel: 2},
128: {Page: 2, Row: 1, Column: 2, ListRow: 2, IconCel: 4},
129: {Page: 2, Row: 1, Column: 3, ListRow: 2, IconCel: 6},
13: {Page: 2, Row: 2, Column: 2, ListRow: 2, IconCel: 14},
130: {Page: 3, Row: 1, Column: 1, ListRow: 3, IconCel: 8},
131: {Page: 3, Row: 1, Column: 3, ListRow: 3, IconCel: 10},
132: {Page: 1, Row: 2, Column: 1, ListRow: 1, IconCel: 12},
133: {Page: 1, Row: 2, Column: 3, ListRow: 1, IconCel: 14},
134: {Page: 2, Row: 2, Column: 1, ListRow: 2, IconCel: 16},
135: {Page: 2, Row: 2, Column: 2, ListRow: 2, IconCel: 18},
136: {Page: 2, Row: 2, Column: 3, ListRow: 2, IconCel: 20},
137: {Page: 3, Row: 2, Column: 1, ListRow: 3, IconCel: 22},
138: {Page: 3, Row: 2, Column: 2, ListRow: 3, IconCel: 24},
139: {Page: 1, Row: 3, Column: 2, ListRow: 1, IconCel: 26},
14: {Page: 3, Row: 2, Column: 2, ListRow: 3, IconCel: 16},
140: {Page: 1, Row: 3, Column: 3, ListRow: 1, IconCel: 28},
141: {Page: 2, Row: 3, Column: 1, ListRow: 2, IconCel: 30},
142: {Page: 3, Row: 3, Column: 3, ListRow: 3, IconCel: 32},
143: {Page: 1, Row: 4, Column: 1, ListRow: 1, IconCel: 34},
144: {Page: 1, Row: 4, Column: 2, ListRow: 1, IconCel: 36},
145: {Page: 2, Row: 4, Column: 3, ListRow: 2, IconCel: 38},
146: {Page: 3, Row: 4, Column: 1, ListRow: 3, IconCel: 40},
147: {Page: 1, Row: 5, Column: 3, ListRow: 1, IconCel: 42},
148: {Page: 2, Row: 5, Column: 1, ListRow: 2, IconCel: 44},
149: {Page: 3, Row: 5, Column: 2, ListRow: 3, IconCel: 46},
15: {Page: 3, Row: 2, Column: 3, ListRow: 3, IconCel: 18},
150: {Page: 3, Row: 5, Column: 3, ListRow: 3, IconCel: 48},
151: {Page: 1, Row: 6, Column: 1, ListRow: 1, IconCel: 50},
152: {Page: 1, Row: 6, Column: 2, ListRow: 1, IconCel: 52},
153: {Page: 2, Row: 6, Column: 3, ListRow: 2, IconCel: 54},
154: {Page: 3, Row: 6, Column: 1, ListRow: 3, IconCel: 56},
155: {Page: 3, Row: 6, Column: 2, ListRow: 3, IconCel: 58},
156: {Page: 0, Row: 0, Column: 0, ListRow: 4, IconCel: 14},
157: {Page: 0, Row: 0, Column: 0, ListRow: 4, IconCel: 14},
158: {Page: 0, Row: 0, Column: 0, ListRow: 4, IconCel: 18},
159: {Page: 0, Row: 0, Column: 0, ListRow: 4, IconCel: 18},
16: {Page: 1, Row: 3, Column: 3, ListRow: 1, IconCel: 20},
160: {Page: 1, Row: 1, Column: 2, ListRow: 1, IconCel: 0},
161: {Page: 1, Row: 1, Column: 3, ListRow: 1, IconCel: 2},
162: {Page: 2, Row: 1, Column: 1, ListRow: 2, IconCel: 20},
163: {Page: 2, Row: 1, Column: 2, ListRow: 2, IconCel: 52},
164: {Page: 3, Row: 1, Column: 1, ListRow: 3, IconCel: 32},
165: {Page: 1, Row: 2, Column: 1, ListRow: 1, IconCel: 16},
166: {Page: 1, Row: 2, Column: 2, ListRow: 1, IconCel: 6},
167: {Page: 2, Row: 2, Column: 3, ListRow: 2, IconCel: 22},
168: {Page: 3, Row: 2, Column: 1, ListRow: 3, IconCel: 34},
169: {Page: 3, Row: 2, Column: 3, ListRow: 3, IconCel: 36},
17: {Page: 2, Row: 3, Column: 1, ListRow: 2, IconCel: 22},
170: {Page: 1, Row: 3, Column: 3, ListRow: 1, IconCel: 8},
171: {Page: 2, Row: 3, Column: 1, ListRow: 2, IconCel: 54},
172: {Page: 2, Row: 3, Column: 3, ListRow: 2, IconCel: 56},
173: {Page: 3, Row: 3, Column: 1, ListRow: 3, IconCel: 38},
174: {Page: 3, Row: 3, Column: 3, ListRow: 3, IconCel: 40},
175: {Page: 1, Row: 4, Column: 1, ListRow: 1, IconCel: 10},
176: {Page: 1, Row: 4, Column: 2, ListRow: 1, IconCel: 12},
177: {Page: 2, Row: 4, Column: 1, ListRow: 2, IconCel: 24},
178: {Page: 2, Row: 4, Column: 2, ListRow: 2, IconCel: 26},
179: {Page: 3, Row: 4, Column: 2, ListRow: 3, IconCel: 42},
18: {Page: 2, Row: 3, Column: 2, ListRow: 2, IconCel: 24},
180: {Page: 1, Row: 5, Column: 3, ListRow: 1, IconCel: 14},
181: {Page: 2, Row: 5, Column: 2, ListRow: 2, IconCel: 58},
182: {Page: 2, Row: 5, Column: 3, ListRow: 2, IconCel: 28},
183: {Page: 3, Row: 5, Column: 1, ListRow: 3, IconCel: 44},
184: {Page: 3, Row: 5, Column: 2, ListRow: 3, IconCel: 46},
185: {Page: 1, Row: 6, Column: 1, ListRow: 1, IconCel: 4},
186: {Page: 1, Row: 6, Column: 2, ListRow: 1, IconCel: 18},
187: {Page: 2, Row: 6, Column: 1, ListRow: 2, IconCel: 30},
188: {Page: 3, Row: 6, Column: 1, ListRow: 3, IconCel: 50},
189: {Page: 3, Row: 6, Column: 2, ListRow: 3, IconCel: 48},
19: {Page: 3, Row: 3, Column: 1, ListRow: 3, IconCel: 26},
190: {Page: 1, Row: 1, Column: 2, ListRow: 1, IconCel: 0},
191: {Page: 2, Row: 1, Column: 2, ListRow: 2, IconCel: 20},
192: {Page: 2, Row: 1, Column: 3, ListRow: 2, IconCel: 22},
193: {Page: 3, Row: 1, Column: 2, ListRow: 3, IconCel: 40},
194: {Page: 3, Row: 1, Column: 3, ListRow: 3, IconCel: 42},
195: {Page: 1, Row: 2, Column: 1, ListRow: 1, IconCel: 2},
196: {Page: 1, Row: 2, Column: 3, ListRow: 1, IconCel: 4},
197: {Page: 2, Row: 2, Column: 1, ListRow: 2, IconCel: 36},
198: {Page: 3, Row: 2, Column: 1, ListRow: 3, IconCel: 44},
199: {Page: 3, Row: 2, Column: 3, ListRow: 3, IconCel: 46},
2: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 6},
3: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 4},
4: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 12},
5: {Page: 0, Row: 0, Column: 0, ListRow: -1, IconCel: 10},
6: {Page: 1, Row: 1, Column: 2, ListRow: 1, IconCel: 0},
7: {Page: 1, Row: 1, Column: 3, ListRow: 1, IconCel: 2},
8: {Page: 2, Row: 1, Column: 1, ListRow: 2, IconCel: 4},
9: {Page: 2, Row: 1, Column: 3, ListRow: 2, IconCel: 6},
10: {Page: 3, Row: 1, Column: 1, ListRow: 3, IconCel: 8},
11: {Page: 1, Row: 2, Column: 1, ListRow: 1, IconCel: 10},
12: {Page: 1, Row: 2, Column: 2, ListRow: 1, IconCel: 12},
13: {Page: 2, Row: 2, Column: 2, ListRow: 2, IconCel: 14},
14: {Page: 3, Row: 2, Column: 2, ListRow: 3, IconCel: 16},
15: {Page: 3, Row: 2, Column: 3, ListRow: 3, IconCel: 18},
16: {Page: 1, Row: 3, Column: 3, ListRow: 1, IconCel: 20},
17: {Page: 2, Row: 3, Column: 1, ListRow: 2, IconCel: 22},
18: {Page: 2, Row: 3, Column: 2, ListRow: 2, IconCel: 24},
19: {Page: 3, Row: 3, Column: 1, ListRow: 3, IconCel: 26},
20: {Page: 3, Row: 3, Column: 3, ListRow: 3, IconCel: 28},
200: {Page: 1, Row: 3, Column: 1, ListRow: 1, IconCel: 6},
201: {Page: 1, Row: 3, Column: 2, ListRow: 1, IconCel: 8},
202: {Page: 2, Row: 3, Column: 2, ListRow: 2, IconCel: 26},
203: {Page: 2, Row: 3, Column: 3, ListRow: 2, IconCel: 24},
204: {Page: 3, Row: 3, Column: 2, ListRow: 3, IconCel: 50},
205: {Page: 1, Row: 4, Column: 3, ListRow: 1, IconCel: 10},
206: {Page: 2, Row: 4, Column: 1, ListRow: 2, IconCel: 30},
207: {Page: 2, Row: 4, Column: 2, ListRow: 2, IconCel: 38},
208: {Page: 3, Row: 4, Column: 1, ListRow: 3, IconCel: 58},
209: {Page: 3, Row: 4, Column: 3, ListRow: 3, IconCel: 48},
21: {Page: 1, Row: 4, Column: 1, ListRow: 1, IconCel: 30},
210: {Page: 1, Row: 5, Column: 1, ListRow: 1, IconCel: 12},
211: {Page: 1, Row: 5, Column: 2, ListRow: 1, IconCel: 14},
212: {Page: 2, Row: 5, Column: 3, ListRow: 2, IconCel: 34},
213: {Page: 3, Row: 5, Column: 1, ListRow: 3, IconCel: 52},
214: {Page: 3, Row: 5, Column: 3, ListRow: 3, IconCel: 54},
215: {Page: 1, Row: 6, Column: 1, ListRow: 1, IconCel: 16},
216: {Page: 1, Row: 6, Column: 3, ListRow: 1, IconCel: 18},
217: {Page: 2, Row: 6, Column: 1, ListRow: 2, IconCel: 28},
218: {Page: 2, Row: 6, Column: 2, ListRow: 2, IconCel: 32},
219: {Page: 3, Row: 6, Column: 2, ListRow: 3, IconCel: 56},
22: {Page: 1, Row: 4, Column: 2, ListRow: 1, IconCel: 32},
220: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
221: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
222: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
223: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 18},
224: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
225: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
226: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
227: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
228: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
229: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
23: {Page: 2, Row: 4, Column: 3, ListRow: 2, IconCel: 34},
230: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
231: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
24: {Page: 3, Row: 4, Column: 2, ListRow: 3, IconCel: 36},
25: {Page: 3, Row: 4, Column: 3, ListRow: 3, IconCel: 38},
26: {Page: 1, Row: 5, Column: 2, ListRow: 1, IconCel: 40},
27: {Page: 1, Row: 5, Column: 3, ListRow: 1, IconCel: 42},
28: {Page: 2, Row: 5, Column: 1, ListRow: 2, IconCel: 44},
29: {Page: 2, Row: 5, Column: 2, ListRow: 2, IconCel: 46},
3: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 4},
30: {Page: 3, Row: 5, Column: 1, ListRow: 3, IconCel: 48},
31: {Page: 1, Row: 6, Column: 1, ListRow: 1, IconCel: 50},
32: {Page: 2, Row: 6, Column: 1, ListRow: 2, IconCel: 52},
@@ -169,7 +43,6 @@ var Desc = map[ID]Description{
37: {Page: 1, Row: 1, Column: 3, ListRow: 1, IconCel: 2},
38: {Page: 2, Row: 1, Column: 2, ListRow: 2, IconCel: 4},
39: {Page: 3, Row: 1, Column: 2, ListRow: 3, IconCel: 6},
4: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 12},
40: {Page: 3, Row: 1, Column: 3, ListRow: 3, IconCel: 8},
41: {Page: 1, Row: 2, Column: 1, ListRow: 1, IconCel: 10},
42: {Page: 2, Row: 2, Column: 1, ListRow: 2, IconCel: 12},
@@ -180,7 +53,6 @@ var Desc = map[ID]Description{
47: {Page: 1, Row: 3, Column: 2, ListRow: 1, IconCel: 22},
48: {Page: 2, Row: 3, Column: 1, ListRow: 2, IconCel: 24},
49: {Page: 2, Row: 3, Column: 2, ListRow: 2, IconCel: 26},
5: {Page: 0, Row: 0, Column: 0, ListRow: -1, IconCel: 10},
50: {Page: 3, Row: 3, Column: 3, ListRow: 3, IconCel: 28},
51: {Page: 1, Row: 4, Column: 1, ListRow: 1, IconCel: 30},
52: {Page: 1, Row: 4, Column: 3, ListRow: 1, IconCel: 32},
@@ -191,7 +63,6 @@ var Desc = map[ID]Description{
57: {Page: 2, Row: 5, Column: 1, ListRow: 2, IconCel: 42},
58: {Page: 2, Row: 5, Column: 3, ListRow: 2, IconCel: 44},
59: {Page: 3, Row: 5, Column: 1, ListRow: 3, IconCel: 46},
6: {Page: 1, Row: 1, Column: 2, ListRow: 1, IconCel: 0},
60: {Page: 3, Row: 5, Column: 3, ListRow: 3, IconCel: 48},
61: {Page: 1, Row: 6, Column: 2, ListRow: 1, IconCel: 50},
62: {Page: 1, Row: 6, Column: 3, ListRow: 1, IconCel: 52},
@@ -202,7 +73,6 @@ var Desc = map[ID]Description{
67: {Page: 2, Row: 1, Column: 2, ListRow: 2, IconCel: 2},
68: {Page: 2, Row: 1, Column: 3, ListRow: 2, IconCel: 4},
69: {Page: 3, Row: 1, Column: 1, ListRow: 3, IconCel: 6},
7: {Page: 1, Row: 1, Column: 3, ListRow: 1, IconCel: 2},
70: {Page: 3, Row: 1, Column: 3, ListRow: 3, IconCel: 8},
71: {Page: 1, Row: 2, Column: 1, ListRow: 1, IconCel: 10},
72: {Page: 1, Row: 2, Column: 3, ListRow: 1, IconCel: 12},
@@ -213,7 +83,6 @@ var Desc = map[ID]Description{
77: {Page: 1, Row: 3, Column: 3, ListRow: 1, IconCel: 22},
78: {Page: 2, Row: 3, Column: 3, ListRow: 2, IconCel: 24},
79: {Page: 3, Row: 3, Column: 1, ListRow: 3, IconCel: 26},
8: {Page: 2, Row: 1, Column: 1, ListRow: 2, IconCel: 4},
80: {Page: 3, Row: 3, Column: 3, ListRow: 3, IconCel: 28},
81: {Page: 1, Row: 4, Column: 1, ListRow: 1, IconCel: 30},
82: {Page: 1, Row: 4, Column: 2, ListRow: 1, IconCel: 32},
@@ -224,7 +93,6 @@ var Desc = map[ID]Description{
87: {Page: 1, Row: 5, Column: 3, ListRow: 1, IconCel: 42},
88: {Page: 2, Row: 5, Column: 3, ListRow: 2, IconCel: 44},
89: {Page: 3, Row: 5, Column: 1, ListRow: 3, IconCel: 46},
9: {Page: 2, Row: 1, Column: 3, ListRow: 2, IconCel: 6},
90: {Page: 3, Row: 5, Column: 2, ListRow: 3, IconCel: 48},
91: {Page: 1, Row: 6, Column: 2, ListRow: 1, IconCel: 50},
92: {Page: 2, Row: 6, Column: 1, ListRow: 2, IconCel: 52},
@@ -235,4 +103,136 @@ var Desc = map[ID]Description{
97: {Page: 1, Row: 1, Column: 3, ListRow: 1, IconCel: 2},
98: {Page: 2, Row: 1, Column: 1, ListRow: 2, IconCel: 4},
99: {Page: 3, Row: 1, Column: 1, ListRow: 3, IconCel: 6},
100: {Page: 3, Row: 1, Column: 3, ListRow: 3, IconCel: 8},
101: {Page: 1, Row: 2, Column: 2, ListRow: 1, IconCel: 10},
102: {Page: 2, Row: 2, Column: 2, ListRow: 2, IconCel: 12},
103: {Page: 2, Row: 2, Column: 3, ListRow: 2, IconCel: 14},
104: {Page: 3, Row: 2, Column: 2, ListRow: 3, IconCel: 16},
105: {Page: 3, Row: 2, Column: 3, ListRow: 3, IconCel: 18},
106: {Page: 1, Row: 3, Column: 1, ListRow: 1, IconCel: 20},
107: {Page: 1, Row: 3, Column: 3, ListRow: 1, IconCel: 22},
108: {Page: 2, Row: 3, Column: 1, ListRow: 2, IconCel: 24},
109: {Page: 3, Row: 3, Column: 1, ListRow: 3, IconCel: 38},
110: {Page: 3, Row: 3, Column: 3, ListRow: 3, IconCel: 28},
111: {Page: 1, Row: 4, Column: 1, ListRow: 1, IconCel: 40},
112: {Page: 1, Row: 4, Column: 2, ListRow: 1, IconCel: 32},
113: {Page: 2, Row: 4, Column: 1, ListRow: 2, IconCel: 34},
114: {Page: 2, Row: 4, Column: 2, ListRow: 2, IconCel: 36},
115: {Page: 3, Row: 4, Column: 2, ListRow: 3, IconCel: 26},
116: {Page: 1, Row: 5, Column: 1, ListRow: 1, IconCel: 30},
117: {Page: 1, Row: 5, Column: 3, ListRow: 1, IconCel: 42},
118: {Page: 2, Row: 5, Column: 2, ListRow: 2, IconCel: 44},
119: {Page: 2, Row: 5, Column: 3, ListRow: 2, IconCel: 46},
120: {Page: 3, Row: 5, Column: 1, ListRow: 3, IconCel: 48},
121: {Page: 1, Row: 6, Column: 2, ListRow: 1, IconCel: 50},
122: {Page: 2, Row: 6, Column: 1, ListRow: 2, IconCel: 52},
123: {Page: 2, Row: 6, Column: 3, ListRow: 2, IconCel: 56},
124: {Page: 3, Row: 6, Column: 2, ListRow: 3, IconCel: 54},
125: {Page: 3, Row: 6, Column: 3, ListRow: 3, IconCel: 58},
126: {Page: 1, Row: 1, Column: 2, ListRow: 1, IconCel: 0},
127: {Page: 2, Row: 1, Column: 1, ListRow: 2, IconCel: 2},
128: {Page: 2, Row: 1, Column: 2, ListRow: 2, IconCel: 4},
129: {Page: 2, Row: 1, Column: 3, ListRow: 2, IconCel: 6},
130: {Page: 3, Row: 1, Column: 1, ListRow: 3, IconCel: 8},
131: {Page: 3, Row: 1, Column: 3, ListRow: 3, IconCel: 10},
132: {Page: 1, Row: 2, Column: 1, ListRow: 1, IconCel: 12},
133: {Page: 1, Row: 2, Column: 3, ListRow: 1, IconCel: 14},
134: {Page: 2, Row: 2, Column: 1, ListRow: 2, IconCel: 16},
135: {Page: 2, Row: 2, Column: 2, ListRow: 2, IconCel: 18},
136: {Page: 2, Row: 2, Column: 3, ListRow: 2, IconCel: 20},
137: {Page: 3, Row: 2, Column: 1, ListRow: 3, IconCel: 22},
138: {Page: 3, Row: 2, Column: 2, ListRow: 3, IconCel: 24},
139: {Page: 1, Row: 3, Column: 2, ListRow: 1, IconCel: 26},
140: {Page: 1, Row: 3, Column: 3, ListRow: 1, IconCel: 28},
141: {Page: 2, Row: 3, Column: 1, ListRow: 2, IconCel: 30},
142: {Page: 3, Row: 3, Column: 3, ListRow: 3, IconCel: 32},
143: {Page: 1, Row: 4, Column: 1, ListRow: 1, IconCel: 34},
144: {Page: 1, Row: 4, Column: 2, ListRow: 1, IconCel: 36},
145: {Page: 2, Row: 4, Column: 3, ListRow: 2, IconCel: 38},
146: {Page: 3, Row: 4, Column: 1, ListRow: 3, IconCel: 40},
147: {Page: 1, Row: 5, Column: 3, ListRow: 1, IconCel: 42},
148: {Page: 2, Row: 5, Column: 1, ListRow: 2, IconCel: 44},
149: {Page: 3, Row: 5, Column: 2, ListRow: 3, IconCel: 46},
150: {Page: 3, Row: 5, Column: 3, ListRow: 3, IconCel: 48},
151: {Page: 1, Row: 6, Column: 1, ListRow: 1, IconCel: 50},
152: {Page: 1, Row: 6, Column: 2, ListRow: 1, IconCel: 52},
153: {Page: 2, Row: 6, Column: 3, ListRow: 2, IconCel: 54},
154: {Page: 3, Row: 6, Column: 1, ListRow: 3, IconCel: 56},
155: {Page: 3, Row: 6, Column: 2, ListRow: 3, IconCel: 58},
156: {Page: 0, Row: 0, Column: 0, ListRow: 4, IconCel: 14},
157: {Page: 0, Row: 0, Column: 0, ListRow: 4, IconCel: 14},
158: {Page: 0, Row: 0, Column: 0, ListRow: 4, IconCel: 18},
159: {Page: 0, Row: 0, Column: 0, ListRow: 4, IconCel: 18},
160: {Page: 1, Row: 1, Column: 2, ListRow: 1, IconCel: 0},
161: {Page: 1, Row: 1, Column: 3, ListRow: 1, IconCel: 2},
162: {Page: 2, Row: 1, Column: 1, ListRow: 2, IconCel: 20},
163: {Page: 2, Row: 1, Column: 2, ListRow: 2, IconCel: 52},
164: {Page: 3, Row: 1, Column: 1, ListRow: 3, IconCel: 32},
165: {Page: 1, Row: 2, Column: 1, ListRow: 1, IconCel: 16},
166: {Page: 1, Row: 2, Column: 2, ListRow: 1, IconCel: 6},
167: {Page: 2, Row: 2, Column: 3, ListRow: 2, IconCel: 22},
168: {Page: 3, Row: 2, Column: 1, ListRow: 3, IconCel: 34},
169: {Page: 3, Row: 2, Column: 3, ListRow: 3, IconCel: 36},
170: {Page: 1, Row: 3, Column: 3, ListRow: 1, IconCel: 8},
171: {Page: 2, Row: 3, Column: 1, ListRow: 2, IconCel: 54},
172: {Page: 2, Row: 3, Column: 3, ListRow: 2, IconCel: 56},
173: {Page: 3, Row: 3, Column: 1, ListRow: 3, IconCel: 38},
174: {Page: 3, Row: 3, Column: 3, ListRow: 3, IconCel: 40},
175: {Page: 1, Row: 4, Column: 1, ListRow: 1, IconCel: 10},
176: {Page: 1, Row: 4, Column: 2, ListRow: 1, IconCel: 12},
177: {Page: 2, Row: 4, Column: 1, ListRow: 2, IconCel: 24},
178: {Page: 2, Row: 4, Column: 2, ListRow: 2, IconCel: 26},
179: {Page: 3, Row: 4, Column: 2, ListRow: 3, IconCel: 42},
180: {Page: 1, Row: 5, Column: 3, ListRow: 1, IconCel: 14},
181: {Page: 2, Row: 5, Column: 2, ListRow: 2, IconCel: 58},
182: {Page: 2, Row: 5, Column: 3, ListRow: 2, IconCel: 28},
183: {Page: 3, Row: 5, Column: 1, ListRow: 3, IconCel: 44},
184: {Page: 3, Row: 5, Column: 2, ListRow: 3, IconCel: 46},
185: {Page: 1, Row: 6, Column: 1, ListRow: 1, IconCel: 4},
186: {Page: 1, Row: 6, Column: 2, ListRow: 1, IconCel: 18},
187: {Page: 2, Row: 6, Column: 1, ListRow: 2, IconCel: 30},
188: {Page: 3, Row: 6, Column: 1, ListRow: 3, IconCel: 50},
189: {Page: 3, Row: 6, Column: 2, ListRow: 3, IconCel: 48},
190: {Page: 1, Row: 1, Column: 2, ListRow: 1, IconCel: 0},
191: {Page: 2, Row: 1, Column: 2, ListRow: 2, IconCel: 20},
192: {Page: 2, Row: 1, Column: 3, ListRow: 2, IconCel: 22},
193: {Page: 3, Row: 1, Column: 2, ListRow: 3, IconCel: 40},
194: {Page: 3, Row: 1, Column: 3, ListRow: 3, IconCel: 42},
195: {Page: 1, Row: 2, Column: 1, ListRow: 1, IconCel: 2},
196: {Page: 1, Row: 2, Column: 3, ListRow: 1, IconCel: 4},
197: {Page: 2, Row: 2, Column: 1, ListRow: 2, IconCel: 36},
198: {Page: 3, Row: 2, Column: 1, ListRow: 3, IconCel: 44},
199: {Page: 3, Row: 2, Column: 3, ListRow: 3, IconCel: 46},
200: {Page: 1, Row: 3, Column: 1, ListRow: 1, IconCel: 6},
201: {Page: 1, Row: 3, Column: 2, ListRow: 1, IconCel: 8},
202: {Page: 2, Row: 3, Column: 2, ListRow: 2, IconCel: 26},
203: {Page: 2, Row: 3, Column: 3, ListRow: 2, IconCel: 24},
204: {Page: 3, Row: 3, Column: 2, ListRow: 3, IconCel: 50},
205: {Page: 1, Row: 4, Column: 3, ListRow: 1, IconCel: 10},
206: {Page: 2, Row: 4, Column: 1, ListRow: 2, IconCel: 30},
207: {Page: 2, Row: 4, Column: 2, ListRow: 2, IconCel: 38},
208: {Page: 3, Row: 4, Column: 1, ListRow: 3, IconCel: 58},
209: {Page: 3, Row: 4, Column: 3, ListRow: 3, IconCel: 48},
210: {Page: 1, Row: 5, Column: 1, ListRow: 1, IconCel: 12},
211: {Page: 1, Row: 5, Column: 2, ListRow: 1, IconCel: 14},
212: {Page: 2, Row: 5, Column: 3, ListRow: 2, IconCel: 34},
213: {Page: 3, Row: 5, Column: 1, ListRow: 3, IconCel: 52},
214: {Page: 3, Row: 5, Column: 3, ListRow: 3, IconCel: 54},
215: {Page: 1, Row: 6, Column: 1, ListRow: 1, IconCel: 16},
216: {Page: 1, Row: 6, Column: 3, ListRow: 1, IconCel: 18},
217: {Page: 2, Row: 6, Column: 1, ListRow: 2, IconCel: 28},
218: {Page: 2, Row: 6, Column: 2, ListRow: 2, IconCel: 32},
219: {Page: 3, Row: 6, Column: 2, ListRow: 3, IconCel: 56},
220: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
221: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
222: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
223: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 18},
224: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
225: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
226: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
227: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
228: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
229: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
230: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
231: {Page: 0, Row: 0, Column: 0, ListRow: 0, IconCel: 2},
}

View File

@@ -1,316 +1,48 @@
// Code generated by d2data. DO NOT EDIT.
// source: cmd/d2data/d2data/skills.json
// Code generated by cmd/txttocode. DO NOT EDIT.
// source: cmd/txttocode/txt/skills.txt
package skill
var Skills = map[ID]Skill{
0: {Name: "Attack", ID: 0, LeftSkill: true, RightSkill: true},
1: {Name: "Kick", ID: 1, LeftSkill: false, RightSkill: false},
10: {Name: "Jab", ID: 10, LeftSkill: true, RightSkill: true},
100: {Name: "Resist Fire", ID: 100, LeftSkill: false, RightSkill: true},
101: {Name: "Holy Bolt", ID: 101, LeftSkill: true, RightSkill: true},
102: {Name: "Holy Fire", ID: 102, LeftSkill: false, RightSkill: true},
103: {Name: "Thorns", ID: 103, LeftSkill: false, RightSkill: true},
104: {Name: "Defiance", ID: 104, LeftSkill: false, RightSkill: true},
105: {Name: "Resist Cold", ID: 105, LeftSkill: false, RightSkill: true},
106: {Name: "Zeal", ID: 106, LeftSkill: true, RightSkill: true},
107: {Name: "Charge", ID: 107, LeftSkill: true, RightSkill: true},
108: {Name: "Blessed Aim", ID: 108, LeftSkill: false, RightSkill: true},
109: {Name: "Cleansing", ID: 109, LeftSkill: false, RightSkill: true},
11: {Name: "Cold Arrow", ID: 11, LeftSkill: true, RightSkill: true},
110: {Name: "Resist Lightning", ID: 110, LeftSkill: false, RightSkill: true},
111: {Name: "Vengeance", ID: 111, LeftSkill: true, RightSkill: true},
112: {Name: "Blessed Hammer", ID: 112, LeftSkill: true, RightSkill: true},
113: {Name: "Concentration", ID: 113, LeftSkill: false, RightSkill: true},
114: {Name: "Holy Freeze", ID: 114, LeftSkill: false, RightSkill: true},
115: {Name: "Vigor", ID: 115, LeftSkill: false, RightSkill: true},
116: {Name: "Conversion", ID: 116, LeftSkill: true, RightSkill: true},
117: {Name: "Holy Shield", ID: 117, LeftSkill: false, RightSkill: true},
118: {Name: "Holy Shock", ID: 118, LeftSkill: false, RightSkill: true},
119: {Name: "Sanctuary", ID: 119, LeftSkill: false, RightSkill: true},
12: {Name: "Multiple Shot", ID: 12, LeftSkill: true, RightSkill: true},
120: {Name: "Meditation", ID: 120, LeftSkill: false, RightSkill: true},
121: {Name: "Fist of the Heavens", ID: 121, LeftSkill: true, RightSkill: true},
122: {Name: "Fanaticism", ID: 122, LeftSkill: false, RightSkill: true},
123: {Name: "Conviction", ID: 123, LeftSkill: false, RightSkill: true},
124: {Name: "Redemption", ID: 124, LeftSkill: false, RightSkill: true},
125: {Name: "Salvation", ID: 125, LeftSkill: false, RightSkill: true},
126: {Name: "Bash", ID: 126, LeftSkill: true, RightSkill: true},
127: {Name: "Blade Mastery", ID: 127, LeftSkill: false, RightSkill: false},
128: {Name: "Axe Mastery", ID: 128, LeftSkill: false, RightSkill: false},
129: {Name: "Mace Mastery", ID: 129, LeftSkill: false, RightSkill: false},
13: {Name: "Dodge", ID: 13, LeftSkill: false, RightSkill: false},
130: {Name: "Howl", ID: 130, LeftSkill: false, RightSkill: true},
131: {Name: "Find Potion", ID: 131, LeftSkill: false, RightSkill: true},
132: {Name: "Leap", ID: 132, LeftSkill: true, RightSkill: true},
133: {Name: "Double Swing", ID: 133, LeftSkill: true, RightSkill: true},
134: {Name: "Pole Arm Mastery", ID: 134, LeftSkill: false, RightSkill: false},
135: {Name: "Throwing Mastery", ID: 135, LeftSkill: false, RightSkill: false},
136: {Name: "Spear Mastery", ID: 136, LeftSkill: false, RightSkill: false},
137: {Name: "Taunt", ID: 137, LeftSkill: false, RightSkill: true},
138: {Name: "Shout", ID: 138, LeftSkill: false, RightSkill: true},
139: {Name: "Stun", ID: 139, LeftSkill: true, RightSkill: true},
14: {Name: "Power Strike", ID: 14, LeftSkill: true, RightSkill: true},
140: {Name: "Double Throw", ID: 140, LeftSkill: true, RightSkill: true},
141: {Name: "Increased Stamina", ID: 141, LeftSkill: false, RightSkill: false},
142: {Name: "Find Item", ID: 142, LeftSkill: false, RightSkill: true},
143: {Name: "Leap Attack", ID: 143, LeftSkill: true, RightSkill: true},
144: {Name: "Concentrate", ID: 144, LeftSkill: true, RightSkill: true},
145: {Name: "Iron Skin", ID: 145, LeftSkill: false, RightSkill: false},
146: {Name: "Battle Cry", ID: 146, LeftSkill: false, RightSkill: true},
147: {Name: "Frenzy", ID: 147, LeftSkill: true, RightSkill: true},
148: {Name: "Increased Speed", ID: 148, LeftSkill: false, RightSkill: false},
149: {Name: "Battle Orders", ID: 149, LeftSkill: false, RightSkill: true},
15: {Name: "Poison Javelin", ID: 15, LeftSkill: true, RightSkill: true},
150: {Name: "Grim Ward", ID: 150, LeftSkill: false, RightSkill: true},
151: {Name: "Whirlwind", ID: 151, LeftSkill: true, RightSkill: true},
152: {Name: "Berserk", ID: 152, LeftSkill: true, RightSkill: true},
153: {Name: "Natural Resistance", ID: 153, LeftSkill: false, RightSkill: false},
154: {Name: "War Cry", ID: 154, LeftSkill: false, RightSkill: true},
155: {Name: "Battle Command", ID: 155, LeftSkill: false, RightSkill: true},
156: {Name: "Fire Hit", ID: 156, LeftSkill: false, RightSkill: false},
157: {Name: "UnHolyBolt", ID: 157, LeftSkill: false, RightSkill: false},
158: {Name: "SkeletonRaise", ID: 158, LeftSkill: false, RightSkill: false},
159: {Name: "MaggotEgg", ID: 159, LeftSkill: false, RightSkill: false},
16: {Name: "Exploding Arrow", ID: 16, LeftSkill: true, RightSkill: true},
160: {Name: "ShamanFire", ID: 160, LeftSkill: false, RightSkill: false},
161: {Name: "MagottUp", ID: 161, LeftSkill: false, RightSkill: false},
162: {Name: "MagottDown", ID: 162, LeftSkill: false, RightSkill: false},
163: {Name: "MagottLay", ID: 163, LeftSkill: false, RightSkill: false},
164: {Name: "AndrialSpray", ID: 164, LeftSkill: false, RightSkill: false},
165: {Name: "Jump", ID: 165, LeftSkill: false, RightSkill: false},
166: {Name: "Swarm Move", ID: 166, LeftSkill: false, RightSkill: false},
167: {Name: "Nest", ID: 167, LeftSkill: false, RightSkill: false},
168: {Name: "Quick Strike", ID: 168, LeftSkill: false, RightSkill: false},
169: {Name: "VampireFireball", ID: 169, LeftSkill: false, RightSkill: false},
17: {Name: "Slow Missiles", ID: 17, LeftSkill: false, RightSkill: true},
170: {Name: "VampireFirewall", ID: 170, LeftSkill: false, RightSkill: false},
171: {Name: "VampireMeteor", ID: 171, LeftSkill: false, RightSkill: false},
172: {Name: "GargoyleTrap", ID: 172, LeftSkill: false, RightSkill: false},
173: {Name: "SpiderLay", ID: 173, LeftSkill: false, RightSkill: false},
174: {Name: "VampireHeal", ID: 174, LeftSkill: false, RightSkill: false},
175: {Name: "VampireRaise", ID: 175, LeftSkill: false, RightSkill: false},
176: {Name: "Submerge", ID: 176, LeftSkill: false, RightSkill: false},
177: {Name: "FetishAura", ID: 177, LeftSkill: false, RightSkill: false},
178: {Name: "FetishInferno", ID: 178, LeftSkill: false, RightSkill: false},
179: {Name: "ZakarumHeal", ID: 179, LeftSkill: false, RightSkill: false},
18: {Name: "Avoid", ID: 18, LeftSkill: false, RightSkill: false},
180: {Name: "Emerge", ID: 180, LeftSkill: false, RightSkill: false},
181: {Name: "Resurrect", ID: 181, LeftSkill: false, RightSkill: false},
182: {Name: "Bestow", ID: 182, LeftSkill: false, RightSkill: false},
183: {Name: "MissileSkill1", ID: 183, LeftSkill: false, RightSkill: false},
184: {Name: "MonTeleport", ID: 184, LeftSkill: false, RightSkill: false},
185: {Name: "PrimeLightning", ID: 185, LeftSkill: false, RightSkill: false},
186: {Name: "PrimeBolt", ID: 186, LeftSkill: false, RightSkill: false},
187: {Name: "PrimeBlaze", ID: 187, LeftSkill: false, RightSkill: false},
188: {Name: "PrimeFirewall", ID: 188, LeftSkill: false, RightSkill: false},
189: {Name: "PrimeSpike", ID: 189, LeftSkill: false, RightSkill: false},
19: {Name: "Impale", ID: 19, LeftSkill: true, RightSkill: true},
190: {Name: "PrimeIceNova", ID: 190, LeftSkill: false, RightSkill: false},
191: {Name: "PrimePoisonball", ID: 191, LeftSkill: false, RightSkill: false},
192: {Name: "PrimePoisonNova", ID: 192, LeftSkill: false, RightSkill: false},
193: {Name: "DiabLight", ID: 193, LeftSkill: false, RightSkill: false},
194: {Name: "DiabCold", ID: 194, LeftSkill: false, RightSkill: false},
195: {Name: "DiabFire", ID: 195, LeftSkill: false, RightSkill: false},
196: {Name: "FingerMageSpider", ID: 196, LeftSkill: false, RightSkill: false},
197: {Name: "DiabWall", ID: 197, LeftSkill: false, RightSkill: false},
198: {Name: "DiabRun", ID: 198, LeftSkill: false, RightSkill: false},
199: {Name: "DiabPrison", ID: 199, LeftSkill: false, RightSkill: false},
2: {Name: "Throw", ID: 2, LeftSkill: true, RightSkill: true},
20: {Name: "Lightning Bolt", ID: 20, LeftSkill: true, RightSkill: true},
200: {Name: "PoisonBallTrap", ID: 200, LeftSkill: false, RightSkill: false},
201: {Name: "AndyPoisonBolt", ID: 201, LeftSkill: false, RightSkill: false},
202: {Name: "HireableMissile", ID: 202, LeftSkill: false, RightSkill: false},
203: {Name: "DesertTurret", ID: 203, LeftSkill: false, RightSkill: false},
204: {Name: "ArcaneTower", ID: 204, LeftSkill: false, RightSkill: false},
205: {Name: "MonBlizzard", ID: 205, LeftSkill: false, RightSkill: false},
206: {Name: "Mosquito", ID: 206, LeftSkill: false, RightSkill: false},
207: {Name: "CursedBallTrapRight", ID: 207, LeftSkill: false, RightSkill: false},
208: {Name: "CursedBallTrapLeft", ID: 208, LeftSkill: false, RightSkill: false},
209: {Name: "MonFrozenArmor", ID: 209, LeftSkill: false, RightSkill: false},
21: {Name: "Ice Arrow", ID: 21, LeftSkill: true, RightSkill: true},
210: {Name: "MonBoneArmor", ID: 210, LeftSkill: false, RightSkill: false},
211: {Name: "MonBoneSpirit", ID: 211, LeftSkill: false, RightSkill: false},
212: {Name: "MonCurseCast", ID: 212, LeftSkill: false, RightSkill: false},
213: {Name: "HellMeteor", ID: 213, LeftSkill: false, RightSkill: false},
214: {Name: "RegurgitatorEat", ID: 214, LeftSkill: false, RightSkill: false},
215: {Name: "MonFrenzy", ID: 215, LeftSkill: false, RightSkill: false},
216: {Name: "QueenDeath", ID: 216, LeftSkill: false, RightSkill: false},
217: {Name: "Scroll of Identify", ID: 217, LeftSkill: false, RightSkill: true},
218: {Name: "Book of Identify", ID: 218, LeftSkill: false, RightSkill: true},
219: {Name: "Scroll of Townportal", ID: 219, LeftSkill: false, RightSkill: true},
22: {Name: "Guided Arrow", ID: 22, LeftSkill: true, RightSkill: true},
220: {Name: "Book of Townportal", ID: 220, LeftSkill: false, RightSkill: true},
221: {Name: "Raven", ID: 221, LeftSkill: false, RightSkill: true},
222: {Name: "Plague Poppy", ID: 222, LeftSkill: false, RightSkill: true},
223: {Name: "Wearwolf", ID: 223, LeftSkill: false, RightSkill: true},
224: {Name: "Shape Shifting", ID: 224, LeftSkill: false, RightSkill: false},
225: {Name: "Firestorm", ID: 225, LeftSkill: true, RightSkill: true},
226: {Name: "Oak Sage", ID: 226, LeftSkill: false, RightSkill: true},
227: {Name: "Summon Spirit Wolf", ID: 227, LeftSkill: false, RightSkill: true},
228: {Name: "Wearbear", ID: 228, LeftSkill: false, RightSkill: true},
229: {Name: "Molten Boulder", ID: 229, LeftSkill: true, RightSkill: true},
23: {Name: "Penetrate", ID: 23, LeftSkill: false, RightSkill: false},
230: {Name: "Arctic Blast", ID: 230, LeftSkill: true, RightSkill: true},
231: {Name: "Cycle of Life", ID: 231, LeftSkill: false, RightSkill: true},
232: {Name: "Feral Rage", ID: 232, LeftSkill: true, RightSkill: true},
233: {Name: "Maul", ID: 233, LeftSkill: true, RightSkill: true},
234: {Name: "Eruption", ID: 234, LeftSkill: false, RightSkill: true},
235: {Name: "Cyclone Armor", ID: 235, LeftSkill: false, RightSkill: true},
236: {Name: "Heart of Wolverine", ID: 236, LeftSkill: false, RightSkill: true},
237: {Name: "Summon Fenris", ID: 237, LeftSkill: false, RightSkill: true},
238: {Name: "Rabies", ID: 238, LeftSkill: true, RightSkill: true},
239: {Name: "Fire Claws", ID: 239, LeftSkill: true, RightSkill: true},
24: {Name: "Charged Strike", ID: 24, LeftSkill: true, RightSkill: true},
240: {Name: "Twister", ID: 240, LeftSkill: true, RightSkill: true},
241: {Name: "Vines", ID: 241, LeftSkill: false, RightSkill: true},
242: {Name: "Hunger", ID: 242, LeftSkill: true, RightSkill: true},
243: {Name: "Shock Wave", ID: 243, LeftSkill: true, RightSkill: true},
244: {Name: "Volcano", ID: 244, LeftSkill: false, RightSkill: true},
245: {Name: "Tornado", ID: 245, LeftSkill: true, RightSkill: true},
246: {Name: "Spirit of Barbs", ID: 246, LeftSkill: false, RightSkill: true},
247: {Name: "Summon Grizzly", ID: 247, LeftSkill: false, RightSkill: true},
248: {Name: "Fury", ID: 248, LeftSkill: true, RightSkill: true},
249: {Name: "Armageddon", ID: 249, LeftSkill: false, RightSkill: true},
25: {Name: "Plague Javelin", ID: 25, LeftSkill: true, RightSkill: true},
250: {Name: "Hurricane", ID: 250, LeftSkill: false, RightSkill: true},
251: {Name: "Fire Trauma", ID: 251, LeftSkill: true, RightSkill: true},
252: {Name: "Claw Mastery", ID: 252, LeftSkill: false, RightSkill: false},
253: {Name: "Psychic Hammer", ID: 253, LeftSkill: false, RightSkill: true},
254: {Name: "Tiger Strike", ID: 254, LeftSkill: true, RightSkill: true},
255: {Name: "Dragon Talon", ID: 255, LeftSkill: true, RightSkill: true},
256: {Name: "Shock Field", ID: 256, LeftSkill: true, RightSkill: true},
257: {Name: "Blade Sentinel", ID: 257, LeftSkill: true, RightSkill: true},
258: {Name: "Quickness", ID: 258, LeftSkill: false, RightSkill: true},
259: {Name: "Fists of Fire", ID: 259, LeftSkill: true, RightSkill: true},
26: {Name: "Strafe", ID: 26, LeftSkill: true, RightSkill: true},
260: {Name: "Dragon Claw", ID: 260, LeftSkill: true, RightSkill: true},
261: {Name: "Charged Bolt Sentry", ID: 261, LeftSkill: false, RightSkill: true},
262: {Name: "Wake of Fire Sentry", ID: 262, LeftSkill: false, RightSkill: true},
263: {Name: "Weapon Block", ID: 263, LeftSkill: false, RightSkill: false},
264: {Name: "Cloak of Shadows", ID: 264, LeftSkill: false, RightSkill: true},
265: {Name: "Cobra Strike", ID: 265, LeftSkill: true, RightSkill: true},
266: {Name: "Blade Fury", ID: 266, LeftSkill: true, RightSkill: true},
267: {Name: "Fade", ID: 267, LeftSkill: false, RightSkill: true},
268: {Name: "Shadow Warrior", ID: 268, LeftSkill: false, RightSkill: true},
269: {Name: "Claws of Thunder", ID: 269, LeftSkill: true, RightSkill: true},
27: {Name: "Immolation Arrow", ID: 27, LeftSkill: true, RightSkill: true},
270: {Name: "Dragon Tail", ID: 270, LeftSkill: true, RightSkill: true},
271: {Name: "Lightning Sentry", ID: 271, LeftSkill: false, RightSkill: true},
272: {Name: "Inferno Sentry", ID: 272, LeftSkill: false, RightSkill: true},
273: {Name: "Mind Blast", ID: 273, LeftSkill: false, RightSkill: true},
274: {Name: "Blades of Ice", ID: 274, LeftSkill: true, RightSkill: true},
275: {Name: "Dragon Flight", ID: 275, LeftSkill: true, RightSkill: true},
276: {Name: "Death Sentry", ID: 276, LeftSkill: false, RightSkill: true},
277: {Name: "Blade Shield", ID: 277, LeftSkill: false, RightSkill: true},
278: {Name: "Venom", ID: 278, LeftSkill: false, RightSkill: true},
279: {Name: "Shadow Master", ID: 279, LeftSkill: false, RightSkill: true},
28: {Name: "Dopplezon", ID: 28, LeftSkill: false, RightSkill: true},
280: {Name: "Royal Strike", ID: 280, LeftSkill: true, RightSkill: true},
281: {Name: "Wake Of Destruction Sentry", ID: 281, LeftSkill: false, RightSkill: false},
282: {Name: "Imp Inferno", ID: 282, LeftSkill: false, RightSkill: false},
283: {Name: "Imp Fireball", ID: 283, LeftSkill: false, RightSkill: false},
284: {Name: "Baal Taunt", ID: 284, LeftSkill: false, RightSkill: false},
285: {Name: "Baal Corpse Explode", ID: 285, LeftSkill: false, RightSkill: false},
286: {Name: "Baal Monster Spawn", ID: 286, LeftSkill: false, RightSkill: false},
287: {Name: "Catapult Charged Ball", ID: 287, LeftSkill: false, RightSkill: false},
288: {Name: "Catapult Spike Ball", ID: 288, LeftSkill: false, RightSkill: false},
289: {Name: "Suck Blood", ID: 289, LeftSkill: false, RightSkill: false},
29: {Name: "Evade", ID: 29, LeftSkill: false, RightSkill: false},
290: {Name: "Cry Help", ID: 290, LeftSkill: false, RightSkill: false},
291: {Name: "Healing Vortex", ID: 291, LeftSkill: false, RightSkill: false},
292: {Name: "Teleport 2", ID: 292, LeftSkill: false, RightSkill: false},
293: {Name: "Self-resurrect", ID: 293, LeftSkill: false, RightSkill: false},
294: {Name: "Vine Attack", ID: 294, LeftSkill: false, RightSkill: false},
295: {Name: "Overseer Whip", ID: 295, LeftSkill: false, RightSkill: false},
296: {Name: "Barbs Aura", ID: 296, LeftSkill: false, RightSkill: false},
297: {Name: "Wolverine Aura", ID: 297, LeftSkill: false, RightSkill: false},
298: {Name: "Oak Sage Aura", ID: 298, LeftSkill: false, RightSkill: false},
299: {Name: "Imp Fire Missile", ID: 299, LeftSkill: false, RightSkill: false},
3: {Name: "Unsummon", ID: 3, LeftSkill: false, RightSkill: true},
4: {Name: "Left Hand Throw", ID: 4, LeftSkill: true, RightSkill: true},
5: {Name: "Left Hand Swing", ID: 5, LeftSkill: false, RightSkill: false},
6: {Name: "Magic Arrow", ID: 6, LeftSkill: true, RightSkill: true},
7: {Name: "Fire Arrow", ID: 7, LeftSkill: true, RightSkill: true},
8: {Name: "Inner Sight", ID: 8, LeftSkill: false, RightSkill: true},
9: {Name: "Critical Strike", ID: 9, LeftSkill: false, RightSkill: false},
10: {Name: "Jab", ID: 10, LeftSkill: true, RightSkill: true},
11: {Name: "Cold Arrow", ID: 11, LeftSkill: true, RightSkill: true},
12: {Name: "Multiple Shot", ID: 12, LeftSkill: true, RightSkill: true},
13: {Name: "Dodge", ID: 13, LeftSkill: false, RightSkill: false},
14: {Name: "Power Strike", ID: 14, LeftSkill: true, RightSkill: true},
15: {Name: "Poison Javelin", ID: 15, LeftSkill: true, RightSkill: true},
16: {Name: "Exploding Arrow", ID: 16, LeftSkill: true, RightSkill: true},
17: {Name: "Slow Missiles", ID: 17, LeftSkill: false, RightSkill: true},
18: {Name: "Avoid", ID: 18, LeftSkill: false, RightSkill: false},
19: {Name: "Impale", ID: 19, LeftSkill: true, RightSkill: true},
20: {Name: "Lightning Bolt", ID: 20, LeftSkill: true, RightSkill: true},
21: {Name: "Ice Arrow", ID: 21, LeftSkill: true, RightSkill: true},
22: {Name: "Guided Arrow", ID: 22, LeftSkill: true, RightSkill: true},
23: {Name: "Penetrate", ID: 23, LeftSkill: false, RightSkill: false},
24: {Name: "Charged Strike", ID: 24, LeftSkill: true, RightSkill: true},
25: {Name: "Plague Javelin", ID: 25, LeftSkill: true, RightSkill: true},
26: {Name: "Strafe", ID: 26, LeftSkill: true, RightSkill: true},
27: {Name: "Immolation Arrow", ID: 27, LeftSkill: true, RightSkill: true},
28: {Name: "Dopplezon", ID: 28, LeftSkill: false, RightSkill: true},
29: {Name: "Evade", ID: 29, LeftSkill: false, RightSkill: false},
30: {Name: "Fend", ID: 30, LeftSkill: true, RightSkill: true},
300: {Name: "Impregnate", ID: 300, LeftSkill: false, RightSkill: false},
301: {Name: "Siege Beast Stomp", ID: 301, LeftSkill: false, RightSkill: false},
302: {Name: "MinionSpawner", ID: 302, LeftSkill: false, RightSkill: false},
303: {Name: "CatapultBlizzard", ID: 303, LeftSkill: false, RightSkill: false},
304: {Name: "CatapultPlague", ID: 304, LeftSkill: false, RightSkill: false},
305: {Name: "CatapultMeteor", ID: 305, LeftSkill: false, RightSkill: false},
306: {Name: "BoltSentry", ID: 306, LeftSkill: false, RightSkill: false},
307: {Name: "CorpseCycler", ID: 307, LeftSkill: false, RightSkill: false},
308: {Name: "DeathMaul", ID: 308, LeftSkill: false, RightSkill: false},
309: {Name: "Defense Curse", ID: 309, LeftSkill: false, RightSkill: false},
31: {Name: "Freezing Arrow", ID: 31, LeftSkill: true, RightSkill: true},
310: {Name: "Blood Mana", ID: 310, LeftSkill: false, RightSkill: false},
311: {Name: "mon inferno sentry", ID: 311, LeftSkill: false, RightSkill: false},
312: {Name: "mon death sentry", ID: 312, LeftSkill: false, RightSkill: false},
313: {Name: "sentry lightning", ID: 313, LeftSkill: false, RightSkill: false},
314: {Name: "fenris rage", ID: 314, LeftSkill: false, RightSkill: false},
315: {Name: "Baal Tentacle", ID: 315, LeftSkill: false, RightSkill: false},
316: {Name: "Baal Nova", ID: 316, LeftSkill: false, RightSkill: false},
317: {Name: "Baal Inferno", ID: 317, LeftSkill: false, RightSkill: false},
318: {Name: "Baal Cold Missiles", ID: 318, LeftSkill: false, RightSkill: false},
319: {Name: "MegademonInferno", ID: 319, LeftSkill: false, RightSkill: false},
32: {Name: "Valkyrie", ID: 32, LeftSkill: false, RightSkill: true},
320: {Name: "EvilHutSpawner", ID: 320, LeftSkill: false, RightSkill: false},
321: {Name: "CountessFirewall", ID: 321, LeftSkill: false, RightSkill: false},
322: {Name: "ImpBolt", ID: 322, LeftSkill: false, RightSkill: false},
323: {Name: "Horror Arctic Blast", ID: 323, LeftSkill: false, RightSkill: false},
324: {Name: "death sentry ltng", ID: 324, LeftSkill: false, RightSkill: false},
325: {Name: "VineCycler", ID: 325, LeftSkill: false, RightSkill: false},
326: {Name: "BearSmite", ID: 326, LeftSkill: false, RightSkill: false},
327: {Name: "Resurrect2", ID: 327, LeftSkill: false, RightSkill: false},
328: {Name: "BloodLordFrenzy", ID: 328, LeftSkill: false, RightSkill: false},
329: {Name: "Baal Teleport", ID: 329, LeftSkill: false, RightSkill: false},
33: {Name: "Pierce", ID: 33, LeftSkill: false, RightSkill: false},
330: {Name: "Imp Teleport", ID: 330, LeftSkill: false, RightSkill: false},
331: {Name: "Baal Clone Teleport", ID: 331, LeftSkill: false, RightSkill: false},
332: {Name: "ZakarumLightning", ID: 332, LeftSkill: false, RightSkill: false},
333: {Name: "VampireMissile", ID: 333, LeftSkill: false, RightSkill: false},
334: {Name: "MephistoMissile", ID: 334, LeftSkill: false, RightSkill: false},
335: {Name: "DoomKnightMissile", ID: 335, LeftSkill: false, RightSkill: false},
336: {Name: "RogueMissile", ID: 336, LeftSkill: false, RightSkill: false},
337: {Name: "HydraMissile", ID: 337, LeftSkill: false, RightSkill: false},
338: {Name: "NecromageMissile", ID: 338, LeftSkill: false, RightSkill: false},
339: {Name: "MonBow", ID: 339, LeftSkill: false, RightSkill: false},
34: {Name: "Lightning Strike", ID: 34, LeftSkill: true, RightSkill: true},
340: {Name: "MonFireArrow", ID: 340, LeftSkill: false, RightSkill: false},
341: {Name: "MonColdArrow", ID: 341, LeftSkill: false, RightSkill: false},
342: {Name: "MonExplodingArrow", ID: 342, LeftSkill: false, RightSkill: false},
343: {Name: "MonFreezingArrow", ID: 343, LeftSkill: false, RightSkill: false},
344: {Name: "MonPowerStrike", ID: 344, LeftSkill: false, RightSkill: false},
345: {Name: "SuccubusBolt", ID: 345, LeftSkill: false, RightSkill: false},
346: {Name: "MephFrostNova", ID: 346, LeftSkill: false, RightSkill: false},
347: {Name: "MonIceSpear", ID: 347, LeftSkill: false, RightSkill: false},
348: {Name: "ShamanIce", ID: 348, LeftSkill: false, RightSkill: false},
349: {Name: "Diablogeddon", ID: 349, LeftSkill: false, RightSkill: false},
35: {Name: "Lightning Fury", ID: 35, LeftSkill: true, RightSkill: true},
350: {Name: "Delerium Change", ID: 350, LeftSkill: false, RightSkill: false},
351: {Name: "NihlathakCorpseExplosion", ID: 351, LeftSkill: false, RightSkill: false},
352: {Name: "SerpentCharge", ID: 352, LeftSkill: false, RightSkill: false},
353: {Name: "Trap Nova", ID: 353, LeftSkill: false, RightSkill: false},
354: {Name: "UnHolyBoltEx", ID: 354, LeftSkill: false, RightSkill: false},
355: {Name: "ShamanFireEx", ID: 355, LeftSkill: false, RightSkill: false},
356: {Name: "Imp Fire Missile Ex", ID: 356, LeftSkill: false, RightSkill: false},
357: {Name: "Interact", ID: 357, LeftSkill: false, RightSkill: false},
358: {Name: "Loot", ID: 358, LeftSkill: false, RightSkill: false},
359: {Name: "TownPortal", ID: 359, LeftSkill: false, RightSkill: false},
36: {Name: "Fire Bolt", ID: 36, LeftSkill: true, RightSkill: true},
360: {Name: "EmoteWheel", ID: 360, LeftSkill: false, RightSkill: false},
361: {Name: "SwapWeapons", ID: 361, LeftSkill: false, RightSkill: false},
362: {Name: "", ID: 362, LeftSkill: false, RightSkill: false},
363: {Name: "ShowItems", ID: 363, LeftSkill: false, RightSkill: false},
364: {Name: "RunToggle", ID: 364, LeftSkill: false, RightSkill: false},
365: {Name: "MonHolyFreeze", ID: 365, LeftSkill: false, RightSkill: true},
366: {Name: "MonLeap", ID: 366, LeftSkill: false, RightSkill: false},
367: {Name: "MonLeapAttack", ID: 367, LeftSkill: false, RightSkill: false},
368: {Name: "MonHolyFire", ID: 368, LeftSkill: false, RightSkill: true},
369: {Name: "MonHolyShock", ID: 369, LeftSkill: false, RightSkill: true},
37: {Name: "Warmth", ID: 37, LeftSkill: false, RightSkill: false},
370: {Name: "CubeLoot", ID: 370, LeftSkill: false, RightSkill: false},
371: {Name: "Mark of the Bear", ID: 371, LeftSkill: false, RightSkill: false},
372: {Name: "Mark of the Wolf", ID: 372, LeftSkill: false, RightSkill: false},
38: {Name: "Charged Bolt", ID: 38, LeftSkill: true, RightSkill: true},
39: {Name: "Ice Bolt", ID: 39, LeftSkill: true, RightSkill: true},
4: {Name: "Left Hand Throw", ID: 4, LeftSkill: true, RightSkill: true},
40: {Name: "Frozen Armor", ID: 40, LeftSkill: false, RightSkill: true},
41: {Name: "Inferno", ID: 41, LeftSkill: true, RightSkill: true},
42: {Name: "Static Field", ID: 42, LeftSkill: false, RightSkill: true},
@@ -321,7 +53,6 @@ var Skills = map[ID]Skill{
47: {Name: "Fire Ball", ID: 47, LeftSkill: true, RightSkill: true},
48: {Name: "Nova", ID: 48, LeftSkill: false, RightSkill: true},
49: {Name: "Lightning", ID: 49, LeftSkill: true, RightSkill: true},
5: {Name: "Left Hand Swing", ID: 5, LeftSkill: false, RightSkill: false},
50: {Name: "Shiver Armor", ID: 50, LeftSkill: false, RightSkill: true},
51: {Name: "Fire Wall", ID: 51, LeftSkill: false, RightSkill: true},
52: {Name: "Enchant", ID: 52, LeftSkill: false, RightSkill: true},
@@ -332,7 +63,6 @@ var Skills = map[ID]Skill{
57: {Name: "Thunder Storm", ID: 57, LeftSkill: false, RightSkill: true},
58: {Name: "Energy Shield", ID: 58, LeftSkill: false, RightSkill: true},
59: {Name: "Blizzard", ID: 59, LeftSkill: false, RightSkill: true},
6: {Name: "Magic Arrow", ID: 6, LeftSkill: true, RightSkill: true},
60: {Name: "Chilling Armor", ID: 60, LeftSkill: false, RightSkill: true},
61: {Name: "Fire Mastery", ID: 61, LeftSkill: false, RightSkill: false},
62: {Name: "Hydra", ID: 62, LeftSkill: false, RightSkill: true},
@@ -343,7 +73,6 @@ var Skills = map[ID]Skill{
67: {Name: "Teeth", ID: 67, LeftSkill: true, RightSkill: true},
68: {Name: "Bone Armor", ID: 68, LeftSkill: false, RightSkill: true},
69: {Name: "Skeleton Mastery", ID: 69, LeftSkill: false, RightSkill: false},
7: {Name: "Fire Arrow", ID: 7, LeftSkill: true, RightSkill: true},
70: {Name: "Raise Skeleton", ID: 70, LeftSkill: false, RightSkill: true},
71: {Name: "Dim Vision", ID: 71, LeftSkill: false, RightSkill: true},
72: {Name: "Weaken", ID: 72, LeftSkill: false, RightSkill: true},
@@ -354,7 +83,6 @@ var Skills = map[ID]Skill{
77: {Name: "Terror", ID: 77, LeftSkill: false, RightSkill: true},
78: {Name: "Bone Wall", ID: 78, LeftSkill: false, RightSkill: true},
79: {Name: "Golem Mastery", ID: 79, LeftSkill: false, RightSkill: false},
8: {Name: "Inner Sight", ID: 8, LeftSkill: false, RightSkill: true},
80: {Name: "Raise Skeletal Mage", ID: 80, LeftSkill: false, RightSkill: true},
81: {Name: "Confuse", ID: 81, LeftSkill: false, RightSkill: true},
82: {Name: "Life Tap", ID: 82, LeftSkill: false, RightSkill: true},
@@ -365,7 +93,6 @@ var Skills = map[ID]Skill{
87: {Name: "Decrepify", ID: 87, LeftSkill: false, RightSkill: true},
88: {Name: "Bone Prison", ID: 88, LeftSkill: false, RightSkill: true},
89: {Name: "Summon Resist", ID: 89, LeftSkill: false, RightSkill: false},
9: {Name: "Critical Strike", ID: 9, LeftSkill: false, RightSkill: false},
90: {Name: "IronGolem", ID: 90, LeftSkill: false, RightSkill: true},
91: {Name: "Lower Resist", ID: 91, LeftSkill: false, RightSkill: true},
92: {Name: "Poison Nova", ID: 92, LeftSkill: false, RightSkill: true},
@@ -376,4 +103,277 @@ var Skills = map[ID]Skill{
97: {Name: "Smite", ID: 97, LeftSkill: true, RightSkill: true},
98: {Name: "Might", ID: 98, LeftSkill: false, RightSkill: true},
99: {Name: "Prayer", ID: 99, LeftSkill: false, RightSkill: true},
100: {Name: "Resist Fire", ID: 100, LeftSkill: false, RightSkill: true},
101: {Name: "Holy Bolt", ID: 101, LeftSkill: true, RightSkill: true},
102: {Name: "Holy Fire", ID: 102, LeftSkill: false, RightSkill: true},
103: {Name: "Thorns", ID: 103, LeftSkill: false, RightSkill: true},
104: {Name: "Defiance", ID: 104, LeftSkill: false, RightSkill: true},
105: {Name: "Resist Cold", ID: 105, LeftSkill: false, RightSkill: true},
106: {Name: "Zeal", ID: 106, LeftSkill: true, RightSkill: true},
107: {Name: "Charge", ID: 107, LeftSkill: true, RightSkill: true},
108: {Name: "Blessed Aim", ID: 108, LeftSkill: false, RightSkill: true},
109: {Name: "Cleansing", ID: 109, LeftSkill: false, RightSkill: true},
110: {Name: "Resist Lightning", ID: 110, LeftSkill: false, RightSkill: true},
111: {Name: "Vengeance", ID: 111, LeftSkill: true, RightSkill: true},
112: {Name: "Blessed Hammer", ID: 112, LeftSkill: true, RightSkill: true},
113: {Name: "Concentration", ID: 113, LeftSkill: false, RightSkill: true},
114: {Name: "Holy Freeze", ID: 114, LeftSkill: false, RightSkill: true},
115: {Name: "Vigor", ID: 115, LeftSkill: false, RightSkill: true},
116: {Name: "Conversion", ID: 116, LeftSkill: true, RightSkill: true},
117: {Name: "Holy Shield", ID: 117, LeftSkill: false, RightSkill: true},
118: {Name: "Holy Shock", ID: 118, LeftSkill: false, RightSkill: true},
119: {Name: "Sanctuary", ID: 119, LeftSkill: false, RightSkill: true},
120: {Name: "Meditation", ID: 120, LeftSkill: false, RightSkill: true},
121: {Name: "Fist of the Heavens", ID: 121, LeftSkill: true, RightSkill: true},
122: {Name: "Fanaticism", ID: 122, LeftSkill: false, RightSkill: true},
123: {Name: "Conviction", ID: 123, LeftSkill: false, RightSkill: true},
124: {Name: "Redemption", ID: 124, LeftSkill: false, RightSkill: true},
125: {Name: "Salvation", ID: 125, LeftSkill: false, RightSkill: true},
126: {Name: "Bash", ID: 126, LeftSkill: true, RightSkill: true},
127: {Name: "Blade Mastery", ID: 127, LeftSkill: false, RightSkill: false},
128: {Name: "Axe Mastery", ID: 128, LeftSkill: false, RightSkill: false},
129: {Name: "Mace Mastery", ID: 129, LeftSkill: false, RightSkill: false},
130: {Name: "Howl", ID: 130, LeftSkill: false, RightSkill: true},
131: {Name: "Find Potion", ID: 131, LeftSkill: false, RightSkill: true},
132: {Name: "Leap", ID: 132, LeftSkill: true, RightSkill: true},
133: {Name: "Double Swing", ID: 133, LeftSkill: true, RightSkill: true},
134: {Name: "Pole Arm Mastery", ID: 134, LeftSkill: false, RightSkill: false},
135: {Name: "Throwing Mastery", ID: 135, LeftSkill: false, RightSkill: false},
136: {Name: "Spear Mastery", ID: 136, LeftSkill: false, RightSkill: false},
137: {Name: "Taunt", ID: 137, LeftSkill: false, RightSkill: true},
138: {Name: "Shout", ID: 138, LeftSkill: false, RightSkill: true},
139: {Name: "Stun", ID: 139, LeftSkill: true, RightSkill: true},
140: {Name: "Double Throw", ID: 140, LeftSkill: true, RightSkill: true},
141: {Name: "Increased Stamina", ID: 141, LeftSkill: false, RightSkill: false},
142: {Name: "Find Item", ID: 142, LeftSkill: false, RightSkill: true},
143: {Name: "Leap Attack", ID: 143, LeftSkill: true, RightSkill: true},
144: {Name: "Concentrate", ID: 144, LeftSkill: true, RightSkill: true},
145: {Name: "Iron Skin", ID: 145, LeftSkill: false, RightSkill: false},
146: {Name: "Battle Cry", ID: 146, LeftSkill: false, RightSkill: true},
147: {Name: "Frenzy", ID: 147, LeftSkill: true, RightSkill: true},
148: {Name: "Increased Speed", ID: 148, LeftSkill: false, RightSkill: false},
149: {Name: "Battle Orders", ID: 149, LeftSkill: false, RightSkill: true},
150: {Name: "Grim Ward", ID: 150, LeftSkill: false, RightSkill: true},
151: {Name: "Whirlwind", ID: 151, LeftSkill: true, RightSkill: true},
152: {Name: "Berserk", ID: 152, LeftSkill: true, RightSkill: true},
153: {Name: "Natural Resistance", ID: 153, LeftSkill: false, RightSkill: false},
154: {Name: "War Cry", ID: 154, LeftSkill: false, RightSkill: true},
155: {Name: "Battle Command", ID: 155, LeftSkill: false, RightSkill: true},
156: {Name: "Fire Hit", ID: 156, LeftSkill: false, RightSkill: false},
157: {Name: "UnHolyBolt", ID: 157, LeftSkill: false, RightSkill: false},
158: {Name: "SkeletonRaise", ID: 158, LeftSkill: false, RightSkill: false},
159: {Name: "MaggotEgg", ID: 159, LeftSkill: false, RightSkill: false},
160: {Name: "ShamanFire", ID: 160, LeftSkill: false, RightSkill: false},
161: {Name: "MagottUp", ID: 161, LeftSkill: false, RightSkill: false},
162: {Name: "MagottDown", ID: 162, LeftSkill: false, RightSkill: false},
163: {Name: "MagottLay", ID: 163, LeftSkill: false, RightSkill: false},
164: {Name: "AndrialSpray", ID: 164, LeftSkill: false, RightSkill: false},
165: {Name: "Jump", ID: 165, LeftSkill: false, RightSkill: false},
166: {Name: "Swarm Move", ID: 166, LeftSkill: false, RightSkill: false},
167: {Name: "Nest", ID: 167, LeftSkill: false, RightSkill: false},
168: {Name: "Quick Strike", ID: 168, LeftSkill: false, RightSkill: false},
169: {Name: "VampireFireball", ID: 169, LeftSkill: false, RightSkill: false},
170: {Name: "VampireFirewall", ID: 170, LeftSkill: false, RightSkill: false},
171: {Name: "VampireMeteor", ID: 171, LeftSkill: false, RightSkill: false},
172: {Name: "GargoyleTrap", ID: 172, LeftSkill: false, RightSkill: false},
173: {Name: "SpiderLay", ID: 173, LeftSkill: false, RightSkill: false},
174: {Name: "VampireHeal", ID: 174, LeftSkill: false, RightSkill: false},
175: {Name: "VampireRaise", ID: 175, LeftSkill: false, RightSkill: false},
176: {Name: "Submerge", ID: 176, LeftSkill: false, RightSkill: false},
177: {Name: "FetishAura", ID: 177, LeftSkill: false, RightSkill: false},
178: {Name: "FetishInferno", ID: 178, LeftSkill: false, RightSkill: false},
179: {Name: "ZakarumHeal", ID: 179, LeftSkill: false, RightSkill: false},
180: {Name: "Emerge", ID: 180, LeftSkill: false, RightSkill: false},
181: {Name: "Resurrect", ID: 181, LeftSkill: false, RightSkill: false},
182: {Name: "Bestow", ID: 182, LeftSkill: false, RightSkill: false},
183: {Name: "MissileSkill1", ID: 183, LeftSkill: false, RightSkill: false},
184: {Name: "MonTeleport", ID: 184, LeftSkill: false, RightSkill: false},
185: {Name: "PrimeLightning", ID: 185, LeftSkill: false, RightSkill: false},
186: {Name: "PrimeBolt", ID: 186, LeftSkill: false, RightSkill: false},
187: {Name: "PrimeBlaze", ID: 187, LeftSkill: false, RightSkill: false},
188: {Name: "PrimeFirewall", ID: 188, LeftSkill: false, RightSkill: false},
189: {Name: "PrimeSpike", ID: 189, LeftSkill: false, RightSkill: false},
190: {Name: "PrimeIceNova", ID: 190, LeftSkill: false, RightSkill: false},
191: {Name: "PrimePoisonball", ID: 191, LeftSkill: false, RightSkill: false},
192: {Name: "PrimePoisonNova", ID: 192, LeftSkill: false, RightSkill: false},
193: {Name: "DiabLight", ID: 193, LeftSkill: false, RightSkill: false},
194: {Name: "DiabCold", ID: 194, LeftSkill: false, RightSkill: false},
195: {Name: "DiabFire", ID: 195, LeftSkill: false, RightSkill: false},
196: {Name: "FingerMageSpider", ID: 196, LeftSkill: false, RightSkill: false},
197: {Name: "DiabWall", ID: 197, LeftSkill: false, RightSkill: false},
198: {Name: "DiabRun", ID: 198, LeftSkill: false, RightSkill: false},
199: {Name: "DiabPrison", ID: 199, LeftSkill: false, RightSkill: false},
200: {Name: "PoisonBallTrap", ID: 200, LeftSkill: false, RightSkill: false},
201: {Name: "AndyPoisonBolt", ID: 201, LeftSkill: false, RightSkill: false},
202: {Name: "HireableMissile", ID: 202, LeftSkill: false, RightSkill: false},
203: {Name: "DesertTurret", ID: 203, LeftSkill: false, RightSkill: false},
204: {Name: "ArcaneTower", ID: 204, LeftSkill: false, RightSkill: false},
205: {Name: "MonBlizzard", ID: 205, LeftSkill: false, RightSkill: false},
206: {Name: "Mosquito", ID: 206, LeftSkill: false, RightSkill: false},
207: {Name: "CursedBallTrapRight", ID: 207, LeftSkill: false, RightSkill: false},
208: {Name: "CursedBallTrapLeft", ID: 208, LeftSkill: false, RightSkill: false},
209: {Name: "MonFrozenArmor", ID: 209, LeftSkill: false, RightSkill: false},
210: {Name: "MonBoneArmor", ID: 210, LeftSkill: false, RightSkill: false},
211: {Name: "MonBoneSpirit", ID: 211, LeftSkill: false, RightSkill: false},
212: {Name: "MonCurseCast", ID: 212, LeftSkill: false, RightSkill: false},
213: {Name: "HellMeteor", ID: 213, LeftSkill: false, RightSkill: false},
214: {Name: "RegurgitatorEat", ID: 214, LeftSkill: false, RightSkill: false},
215: {Name: "MonFrenzy", ID: 215, LeftSkill: false, RightSkill: false},
216: {Name: "QueenDeath", ID: 216, LeftSkill: false, RightSkill: false},
217: {Name: "Scroll of Identify", ID: 217, LeftSkill: false, RightSkill: true},
218: {Name: "Book of Identify", ID: 218, LeftSkill: false, RightSkill: true},
219: {Name: "Scroll of Townportal", ID: 219, LeftSkill: false, RightSkill: true},
220: {Name: "Book of Townportal", ID: 220, LeftSkill: false, RightSkill: true},
221: {Name: "Raven", ID: 221, LeftSkill: false, RightSkill: true},
222: {Name: "Plague Poppy", ID: 222, LeftSkill: false, RightSkill: true},
223: {Name: "Wearwolf", ID: 223, LeftSkill: false, RightSkill: true},
224: {Name: "Shape Shifting", ID: 224, LeftSkill: false, RightSkill: false},
225: {Name: "Firestorm", ID: 225, LeftSkill: true, RightSkill: true},
226: {Name: "Oak Sage", ID: 226, LeftSkill: false, RightSkill: true},
227: {Name: "Summon Spirit Wolf", ID: 227, LeftSkill: false, RightSkill: true},
228: {Name: "Wearbear", ID: 228, LeftSkill: false, RightSkill: true},
229: {Name: "Molten Boulder", ID: 229, LeftSkill: true, RightSkill: true},
230: {Name: "Arctic Blast", ID: 230, LeftSkill: true, RightSkill: true},
231: {Name: "Cycle of Life", ID: 231, LeftSkill: false, RightSkill: true},
232: {Name: "Feral Rage", ID: 232, LeftSkill: true, RightSkill: true},
233: {Name: "Maul", ID: 233, LeftSkill: true, RightSkill: true},
234: {Name: "Eruption", ID: 234, LeftSkill: false, RightSkill: true},
235: {Name: "Cyclone Armor", ID: 235, LeftSkill: false, RightSkill: true},
236: {Name: "Heart of Wolverine", ID: 236, LeftSkill: false, RightSkill: true},
237: {Name: "Summon Fenris", ID: 237, LeftSkill: false, RightSkill: true},
238: {Name: "Rabies", ID: 238, LeftSkill: true, RightSkill: true},
239: {Name: "Fire Claws", ID: 239, LeftSkill: true, RightSkill: true},
240: {Name: "Twister", ID: 240, LeftSkill: true, RightSkill: true},
241: {Name: "Vines", ID: 241, LeftSkill: false, RightSkill: true},
242: {Name: "Hunger", ID: 242, LeftSkill: true, RightSkill: true},
243: {Name: "Shock Wave", ID: 243, LeftSkill: true, RightSkill: true},
244: {Name: "Volcano", ID: 244, LeftSkill: false, RightSkill: true},
245: {Name: "Tornado", ID: 245, LeftSkill: true, RightSkill: true},
246: {Name: "Spirit of Barbs", ID: 246, LeftSkill: false, RightSkill: true},
247: {Name: "Summon Grizzly", ID: 247, LeftSkill: false, RightSkill: true},
248: {Name: "Fury", ID: 248, LeftSkill: true, RightSkill: true},
249: {Name: "Armageddon", ID: 249, LeftSkill: false, RightSkill: true},
250: {Name: "Hurricane", ID: 250, LeftSkill: false, RightSkill: true},
251: {Name: "Fire Trauma", ID: 251, LeftSkill: true, RightSkill: true},
252: {Name: "Claw Mastery", ID: 252, LeftSkill: false, RightSkill: false},
253: {Name: "Psychic Hammer", ID: 253, LeftSkill: false, RightSkill: true},
254: {Name: "Tiger Strike", ID: 254, LeftSkill: true, RightSkill: true},
255: {Name: "Dragon Talon", ID: 255, LeftSkill: true, RightSkill: true},
256: {Name: "Shock Field", ID: 256, LeftSkill: true, RightSkill: true},
257: {Name: "Blade Sentinel", ID: 257, LeftSkill: true, RightSkill: true},
258: {Name: "Quickness", ID: 258, LeftSkill: false, RightSkill: true},
259: {Name: "Fists of Fire", ID: 259, LeftSkill: true, RightSkill: true},
260: {Name: "Dragon Claw", ID: 260, LeftSkill: true, RightSkill: true},
261: {Name: "Charged Bolt Sentry", ID: 261, LeftSkill: false, RightSkill: true},
262: {Name: "Wake of Fire Sentry", ID: 262, LeftSkill: false, RightSkill: true},
263: {Name: "Weapon Block", ID: 263, LeftSkill: false, RightSkill: false},
264: {Name: "Cloak of Shadows", ID: 264, LeftSkill: false, RightSkill: true},
265: {Name: "Cobra Strike", ID: 265, LeftSkill: true, RightSkill: true},
266: {Name: "Blade Fury", ID: 266, LeftSkill: true, RightSkill: true},
267: {Name: "Fade", ID: 267, LeftSkill: false, RightSkill: true},
268: {Name: "Shadow Warrior", ID: 268, LeftSkill: false, RightSkill: true},
269: {Name: "Claws of Thunder", ID: 269, LeftSkill: true, RightSkill: true},
270: {Name: "Dragon Tail", ID: 270, LeftSkill: true, RightSkill: true},
271: {Name: "Lightning Sentry", ID: 271, LeftSkill: false, RightSkill: true},
272: {Name: "Inferno Sentry", ID: 272, LeftSkill: false, RightSkill: true},
273: {Name: "Mind Blast", ID: 273, LeftSkill: false, RightSkill: true},
274: {Name: "Blades of Ice", ID: 274, LeftSkill: true, RightSkill: true},
275: {Name: "Dragon Flight", ID: 275, LeftSkill: true, RightSkill: true},
276: {Name: "Death Sentry", ID: 276, LeftSkill: false, RightSkill: true},
277: {Name: "Blade Shield", ID: 277, LeftSkill: false, RightSkill: true},
278: {Name: "Venom", ID: 278, LeftSkill: false, RightSkill: true},
279: {Name: "Shadow Master", ID: 279, LeftSkill: false, RightSkill: true},
280: {Name: "Royal Strike", ID: 280, LeftSkill: true, RightSkill: true},
281: {Name: "Wake Of Destruction Sentry", ID: 281, LeftSkill: false, RightSkill: false},
282: {Name: "Imp Inferno", ID: 282, LeftSkill: false, RightSkill: false},
283: {Name: "Imp Fireball", ID: 283, LeftSkill: false, RightSkill: false},
284: {Name: "Baal Taunt", ID: 284, LeftSkill: false, RightSkill: false},
285: {Name: "Baal Corpse Explode", ID: 285, LeftSkill: false, RightSkill: false},
286: {Name: "Baal Monster Spawn", ID: 286, LeftSkill: false, RightSkill: false},
287: {Name: "Catapult Charged Ball", ID: 287, LeftSkill: false, RightSkill: false},
288: {Name: "Catapult Spike Ball", ID: 288, LeftSkill: false, RightSkill: false},
289: {Name: "Suck Blood", ID: 289, LeftSkill: false, RightSkill: false},
290: {Name: "Cry Help", ID: 290, LeftSkill: false, RightSkill: false},
291: {Name: "Healing Vortex", ID: 291, LeftSkill: false, RightSkill: false},
292: {Name: "Teleport 2", ID: 292, LeftSkill: false, RightSkill: false},
293: {Name: "Self-resurrect", ID: 293, LeftSkill: false, RightSkill: false},
294: {Name: "Vine Attack", ID: 294, LeftSkill: false, RightSkill: false},
295: {Name: "Overseer Whip", ID: 295, LeftSkill: false, RightSkill: false},
296: {Name: "Barbs Aura", ID: 296, LeftSkill: false, RightSkill: false},
297: {Name: "Wolverine Aura", ID: 297, LeftSkill: false, RightSkill: false},
298: {Name: "Oak Sage Aura", ID: 298, LeftSkill: false, RightSkill: false},
299: {Name: "Imp Fire Missile", ID: 299, LeftSkill: false, RightSkill: false},
300: {Name: "Impregnate", ID: 300, LeftSkill: false, RightSkill: false},
301: {Name: "Siege Beast Stomp", ID: 301, LeftSkill: false, RightSkill: false},
302: {Name: "MinionSpawner", ID: 302, LeftSkill: false, RightSkill: false},
303: {Name: "CatapultBlizzard", ID: 303, LeftSkill: false, RightSkill: false},
304: {Name: "CatapultPlague", ID: 304, LeftSkill: false, RightSkill: false},
305: {Name: "CatapultMeteor", ID: 305, LeftSkill: false, RightSkill: false},
306: {Name: "BoltSentry", ID: 306, LeftSkill: false, RightSkill: false},
307: {Name: "CorpseCycler", ID: 307, LeftSkill: false, RightSkill: false},
308: {Name: "DeathMaul", ID: 308, LeftSkill: false, RightSkill: false},
309: {Name: "Defense Curse", ID: 309, LeftSkill: false, RightSkill: false},
310: {Name: "Blood Mana", ID: 310, LeftSkill: false, RightSkill: false},
311: {Name: "mon inferno sentry", ID: 311, LeftSkill: false, RightSkill: false},
312: {Name: "mon death sentry", ID: 312, LeftSkill: false, RightSkill: false},
313: {Name: "sentry lightning", ID: 313, LeftSkill: false, RightSkill: false},
314: {Name: "fenris rage", ID: 314, LeftSkill: false, RightSkill: false},
315: {Name: "Baal Tentacle", ID: 315, LeftSkill: false, RightSkill: false},
316: {Name: "Baal Nova", ID: 316, LeftSkill: false, RightSkill: false},
317: {Name: "Baal Inferno", ID: 317, LeftSkill: false, RightSkill: false},
318: {Name: "Baal Cold Missiles", ID: 318, LeftSkill: false, RightSkill: false},
319: {Name: "MegademonInferno", ID: 319, LeftSkill: false, RightSkill: false},
320: {Name: "EvilHutSpawner", ID: 320, LeftSkill: false, RightSkill: false},
321: {Name: "CountessFirewall", ID: 321, LeftSkill: false, RightSkill: false},
322: {Name: "ImpBolt", ID: 322, LeftSkill: false, RightSkill: false},
323: {Name: "Horror Arctic Blast", ID: 323, LeftSkill: false, RightSkill: false},
324: {Name: "death sentry ltng", ID: 324, LeftSkill: false, RightSkill: false},
325: {Name: "VineCycler", ID: 325, LeftSkill: false, RightSkill: false},
326: {Name: "BearSmite", ID: 326, LeftSkill: false, RightSkill: false},
327: {Name: "Resurrect2", ID: 327, LeftSkill: false, RightSkill: false},
328: {Name: "BloodLordFrenzy", ID: 328, LeftSkill: false, RightSkill: false},
329: {Name: "Baal Teleport", ID: 329, LeftSkill: false, RightSkill: false},
330: {Name: "Imp Teleport", ID: 330, LeftSkill: false, RightSkill: false},
331: {Name: "Baal Clone Teleport", ID: 331, LeftSkill: false, RightSkill: false},
332: {Name: "ZakarumLightning", ID: 332, LeftSkill: false, RightSkill: false},
333: {Name: "VampireMissile", ID: 333, LeftSkill: false, RightSkill: false},
334: {Name: "MephistoMissile", ID: 334, LeftSkill: false, RightSkill: false},
335: {Name: "DoomKnightMissile", ID: 335, LeftSkill: false, RightSkill: false},
336: {Name: "RogueMissile", ID: 336, LeftSkill: false, RightSkill: false},
337: {Name: "HydraMissile", ID: 337, LeftSkill: false, RightSkill: false},
338: {Name: "NecromageMissile", ID: 338, LeftSkill: false, RightSkill: false},
339: {Name: "MonBow", ID: 339, LeftSkill: false, RightSkill: false},
340: {Name: "MonFireArrow", ID: 340, LeftSkill: false, RightSkill: false},
341: {Name: "MonColdArrow", ID: 341, LeftSkill: false, RightSkill: false},
342: {Name: "MonExplodingArrow", ID: 342, LeftSkill: false, RightSkill: false},
343: {Name: "MonFreezingArrow", ID: 343, LeftSkill: false, RightSkill: false},
344: {Name: "MonPowerStrike", ID: 344, LeftSkill: false, RightSkill: false},
345: {Name: "SuccubusBolt", ID: 345, LeftSkill: false, RightSkill: false},
346: {Name: "MephFrostNova", ID: 346, LeftSkill: false, RightSkill: false},
347: {Name: "MonIceSpear", ID: 347, LeftSkill: false, RightSkill: false},
348: {Name: "ShamanIce", ID: 348, LeftSkill: false, RightSkill: false},
349: {Name: "Diablogeddon", ID: 349, LeftSkill: false, RightSkill: false},
350: {Name: "Delerium Change", ID: 350, LeftSkill: false, RightSkill: false},
351: {Name: "NihlathakCorpseExplosion", ID: 351, LeftSkill: false, RightSkill: false},
352: {Name: "SerpentCharge", ID: 352, LeftSkill: false, RightSkill: false},
353: {Name: "Trap Nova", ID: 353, LeftSkill: false, RightSkill: false},
354: {Name: "UnHolyBoltEx", ID: 354, LeftSkill: false, RightSkill: false},
355: {Name: "ShamanFireEx", ID: 355, LeftSkill: false, RightSkill: false},
356: {Name: "Imp Fire Missile Ex", ID: 356, LeftSkill: false, RightSkill: false},
357: {Name: "Interact", ID: 357, LeftSkill: false, RightSkill: false},
358: {Name: "Loot", ID: 358, LeftSkill: false, RightSkill: false},
359: {Name: "TownPortal", ID: 359, LeftSkill: false, RightSkill: false},
360: {Name: "EmoteWheel", ID: 360, LeftSkill: false, RightSkill: false},
361: {Name: "SwapWeapons", ID: 361, LeftSkill: false, RightSkill: false},
362: {Name: "Map", ID: 362, LeftSkill: false, RightSkill: false},
363: {Name: "ShowItems", ID: 363, LeftSkill: false, RightSkill: false},
364: {Name: "RunToggle", ID: 364, LeftSkill: false, RightSkill: false},
365: {Name: "MonHolyFreeze", ID: 365, LeftSkill: false, RightSkill: true},
366: {Name: "MonLeap", ID: 366, LeftSkill: false, RightSkill: false},
367: {Name: "MonLeapAttack", ID: 367, LeftSkill: false, RightSkill: false},
368: {Name: "MonHolyFire", ID: 368, LeftSkill: false, RightSkill: true},
369: {Name: "MonHolyShock", ID: 369, LeftSkill: false, RightSkill: true},
370: {Name: "CubeLoot", ID: 370, LeftSkill: false, RightSkill: false},
371: {Name: "Mark of the Bear", ID: 371, LeftSkill: false, RightSkill: false},
372: {Name: "Mark of the Wolf", ID: 372, LeftSkill: false, RightSkill: false},
}

View File

@@ -8,6 +8,18 @@ type Data struct {
Layer int
}
type Stats []Data
func (i Stats) FindStat(id ID, layer int) (Data, bool) {
for _, s := range i {
if s.ID == id && s.Layer == layer {
return s, true
}
}
return Data{}, false
}
const (
Strength ID = iota
Energy
@@ -372,7 +384,7 @@ const (
SkillMissileDamageScale
)
var Stats = []string{
var StringStats = []string{
"strength",
"energy",
"dexterity",
@@ -737,5 +749,5 @@ var Stats = []string{
}
func (s ID) String() string {
return Stats[s]
return StringStats[s]
}