1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2025-02-02 22:57:04 -05:00

d2core/d2records: fix some fieldalignment lints

This commit is contained in:
gucio321 2021-06-13 17:47:47 +02:00
parent 798131326f
commit e42727e868
9 changed files with 472 additions and 726 deletions

View File

@ -80,8 +80,8 @@ type RecordManager struct {
Unique struct {
Appellations UniqueAppellations
Mods MonsterUniqueModifiers
Constants MonsterUniqueModifierConstants
Super SuperUniques
Constants MonsterUniqueModifierConstants
}
Name struct {
Prefix UniqueMonsterAffixes
@ -101,21 +101,21 @@ type RecordManager struct {
Placements MonsterPlacements
}
Level struct {
AutoMaps
Warp LevelWarps
Details LevelDetails
Maze LevelMazeDetails
Presets LevelPresets
Sub LevelSubstitutions
Types LevelTypes
Warp LevelWarps
AutoMaps
}
Character struct {
Classes PlayerClasses
Events
Classes PlayerClasses
Experience ExperienceBreakpoints
MaxLevel ExperienceMaxLevels
Modes PlayerModes
Stats CharStats
Events
}
Animation struct {
Data *d2animdata.AnimationData
@ -128,8 +128,8 @@ type RecordManager struct {
}
}
Hireling struct {
Details Hirelings
Descriptions HirelingDescriptions
Details Hirelings
}
Calculation struct {
Skills Calculations
@ -174,95 +174,95 @@ type RecordManager struct {
func (r *RecordManager) init() error { // nolint:funlen // can't reduce
loaders := []struct {
path string
loader recordLoader
path string
}{
{d2resource.LevelType, levelTypesLoader},
{d2resource.LevelPreset, levelPresetLoader},
{d2resource.LevelWarp, levelWarpsLoader},
{d2resource.ObjectType, objectTypesLoader},
{d2resource.ObjectDetails, objectDetailsLoader},
{d2resource.ObjectMode, objectModesLoader},
{d2resource.Weapons, weaponsLoader},
{d2resource.Armor, armorLoader},
{d2resource.Misc, miscItemsLoader},
{d2resource.Books, booksLoader},
{d2resource.Belts, beltsLoader},
{d2resource.Colors, colorsLoader},
{d2resource.ItemTypes, itemTypesLoader}, // WARN: needs to be after weapons, armor, and misc
{d2resource.UniqueItems, uniqueItemsLoader},
{d2resource.Missiles, missilesLoader},
{d2resource.SoundSettings, soundDetailsLoader},
{d2resource.MonStats, monsterStatsLoader},
{d2resource.MonStats2, monsterStats2Loader},
{d2resource.MonPreset, monsterPresetLoader},
{d2resource.MonProp, monsterPropertiesLoader},
{d2resource.MonType, monsterTypesLoader},
{d2resource.MonMode, monsterModeLoader},
{d2resource.MagicPrefix, magicPrefixLoader},
{d2resource.MagicSuffix, magicSuffixLoader},
{d2resource.ItemStatCost, itemStatCostLoader},
{d2resource.ItemRatio, itemRatioLoader},
{d2resource.StorePage, storePagesLoader},
{d2resource.Overlays, overlaysLoader},
{d2resource.CharStats, charStatsLoader},
{d2resource.Gamble, gambleLoader},
{d2resource.Hireling, hirelingLoader},
{d2resource.Experience, experienceLoader},
{d2resource.Gems, gemsLoader},
{d2resource.QualityItems, itemQualityLoader},
{d2resource.Runes, runewordLoader},
{d2resource.DifficultyLevels, difficultyLevelsLoader},
{d2resource.AutoMap, autoMapLoader},
{d2resource.LevelDetails, levelDetailsLoader},
{d2resource.LevelMaze, levelMazeDetailsLoader},
{d2resource.LevelSubstitutions, levelSubstitutionsLoader},
{d2resource.CubeRecipes, cubeRecipeLoader},
{d2resource.SuperUniques, monsterSuperUniqeLoader},
{d2resource.Inventory, inventoryLoader},
{d2resource.Skills, skillDetailsLoader},
{d2resource.SkillCalc, skillCalcLoader},
{d2resource.MissileCalc, missileCalcLoader},
{d2resource.Properties, propertyLoader},
{d2resource.SkillDesc, skillDescriptionLoader},
{d2resource.BodyLocations, bodyLocationsLoader},
{d2resource.Sets, setLoader},
{d2resource.SetItems, setItemLoader},
{d2resource.AutoMagic, autoMagicLoader},
{d2resource.TreasureClass, treasureClassLoader},
{d2resource.TreasureClassEx, treasureClassExLoader},
{d2resource.States, statesLoader},
{d2resource.SoundEnvirons, soundEnvironmentLoader},
{d2resource.Shrines, shrineLoader},
{d2resource.ElemType, elemTypesLoader},
{d2resource.PlrMode, playerModesLoader},
{d2resource.PetType, petTypesLoader},
{d2resource.NPC, npcLoader},
{d2resource.MonsterUniqueModifier, monsterUniqModifiersLoader},
{d2resource.MonsterEquipment, monsterEquipmentLoader},
{d2resource.UniqueAppellation, uniqueAppellationsLoader},
{d2resource.MonsterLevel, monsterLevelsLoader},
{d2resource.MonsterSound, monsterSoundsLoader},
{d2resource.MonsterSequence, monsterSequencesLoader},
{d2resource.PlayerClass, playerClassLoader},
{d2resource.MonsterPlacement, monsterPlacementsLoader},
{d2resource.ObjectGroup, objectGroupsLoader},
{d2resource.CompCode, componentCodesLoader},
{d2resource.MonsterAI, monsterAiLoader},
{d2resource.RarePrefix, rareItemPrefixLoader},
{d2resource.RareSuffix, rareItemSuffixLoader},
{d2resource.Events, eventsLoader},
{d2resource.ArmorType, armorTypesLoader}, // anim mode tokens
{d2resource.WeaponClass, weaponClassesLoader}, // anim mode tokens
{d2resource.PlayerType, playerTypeLoader}, // anim mode tokens
{d2resource.Composite, compositeTypeLoader}, // anim mode tokens
{d2resource.HitClass, hitClassLoader}, // anim mode tokens
{d2resource.UniquePrefix, uniqueMonsterPrefixLoader},
{d2resource.UniqueSuffix, uniqueMonsterSuffixLoader},
{d2resource.CubeModifier, cubeModifierLoader},
{d2resource.CubeType, cubeTypeLoader},
{d2resource.HirelingDescription, hirelingDescriptionLoader},
{d2resource.LowQualityItems, lowQualityLoader},
{levelTypesLoader, d2resource.LevelType},
{levelPresetLoader, d2resource.LevelPreset},
{levelWarpsLoader, d2resource.LevelWarp},
{objectTypesLoader, d2resource.ObjectType},
{objectDetailsLoader, d2resource.ObjectDetails},
{objectModesLoader, d2resource.ObjectMode},
{weaponsLoader, d2resource.Weapons},
{armorLoader, d2resource.Armor},
{miscItemsLoader, d2resource.Misc},
{booksLoader, d2resource.Books},
{beltsLoader, d2resource.Belts},
{colorsLoader, d2resource.Colors},
{itemTypesLoader, d2resource.ItemTypes}, // WARN: needs to be after weapons, armor, and misc
{uniqueItemsLoader, d2resource.UniqueItems},
{missilesLoader, d2resource.Missiles},
{soundDetailsLoader, d2resource.SoundSettings},
{monsterStatsLoader, d2resource.MonStats},
{monsterStats2Loader, d2resource.MonStats2},
{monsterPresetLoader, d2resource.MonPreset},
{monsterPropertiesLoader, d2resource.MonProp},
{monsterTypesLoader, d2resource.MonType},
{monsterModeLoader, d2resource.MonMode},
{magicPrefixLoader, d2resource.MagicPrefix},
{magicSuffixLoader, d2resource.MagicSuffix},
{itemStatCostLoader, d2resource.ItemStatCost},
{itemRatioLoader, d2resource.ItemRatio},
{storePagesLoader, d2resource.StorePage},
{overlaysLoader, d2resource.Overlays},
{charStatsLoader, d2resource.CharStats},
{gambleLoader, d2resource.Gamble},
{hirelingLoader, d2resource.Hireling},
{experienceLoader, d2resource.Experience},
{gemsLoader, d2resource.Gems},
{itemQualityLoader, d2resource.QualityItems},
{runewordLoader, d2resource.Runes},
{difficultyLevelsLoader, d2resource.DifficultyLevels},
{autoMapLoader, d2resource.AutoMap},
{levelDetailsLoader, d2resource.LevelDetails},
{levelMazeDetailsLoader, d2resource.LevelMaze},
{levelSubstitutionsLoader, d2resource.LevelSubstitutions},
{cubeRecipeLoader, d2resource.CubeRecipes},
{monsterSuperUniqeLoader, d2resource.SuperUniques},
{inventoryLoader, d2resource.Inventory},
{skillDetailsLoader, d2resource.Skills},
{skillCalcLoader, d2resource.SkillCalc},
{missileCalcLoader, d2resource.MissileCalc},
{propertyLoader, d2resource.Properties},
{skillDescriptionLoader, d2resource.SkillDesc},
{bodyLocationsLoader, d2resource.BodyLocations},
{setLoader, d2resource.Sets},
{setItemLoader, d2resource.SetItems},
{autoMagicLoader, d2resource.AutoMagic},
{treasureClassLoader, d2resource.TreasureClass},
{treasureClassExLoader, d2resource.TreasureClassEx},
{statesLoader, d2resource.States},
{soundEnvironmentLoader, d2resource.SoundEnvirons},
{shrineLoader, d2resource.Shrines},
{elemTypesLoader, d2resource.ElemType},
{playerModesLoader, d2resource.PlrMode},
{petTypesLoader, d2resource.PetType},
{npcLoader, d2resource.NPC},
{monsterUniqModifiersLoader, d2resource.MonsterUniqueModifier},
{monsterEquipmentLoader, d2resource.MonsterEquipment},
{uniqueAppellationsLoader, d2resource.UniqueAppellation},
{monsterLevelsLoader, d2resource.MonsterLevel},
{monsterSoundsLoader, d2resource.MonsterSound},
{monsterSequencesLoader, d2resource.MonsterSequence},
{playerClassLoader, d2resource.PlayerClass},
{monsterPlacementsLoader, d2resource.MonsterPlacement},
{objectGroupsLoader, d2resource.ObjectGroup},
{componentCodesLoader, d2resource.CompCode},
{monsterAiLoader, d2resource.MonsterAI},
{rareItemPrefixLoader, d2resource.RarePrefix},
{rareItemSuffixLoader, d2resource.RareSuffix},
{eventsLoader, d2resource.Events},
{armorTypesLoader, d2resource.ArmorType}, // anim mode tokens
{weaponClassesLoader, d2resource.WeaponClass}, // anim mode tokens
{playerTypeLoader, d2resource.PlayerType}, // anim mode tokens
{compositeTypeLoader, d2resource.Composite}, // anim mode tokens
{hitClassLoader, d2resource.HitClass}, // anim mode tokens
{uniqueMonsterPrefixLoader, d2resource.UniquePrefix},
{uniqueMonsterSuffixLoader, d2resource.UniqueSuffix},
{cubeModifierLoader, d2resource.CubeModifier},
{cubeTypeLoader, d2resource.CubeType},
{hirelingDescriptionLoader, d2resource.HirelingDescription},
{lowQualityLoader, d2resource.LowQualityItems},
}
for idx := range loaders {

View File

@ -6,22 +6,16 @@ type Runewords map[string]*RuneRecord
// RuneRecord is a representation of a single row of runes.txt. It defines
// runewords available in the game.
type RuneRecord struct {
Name string
RuneName string // More of a note - the actual name should be read from the TBL files.
Complete bool // An enabled/disabled flag. Only "Complete" runewords work in game.
Server bool // Marks a runeword as only available on ladder, not single player or tcp/ip.
// The item types for includsion/exclusion for this runeword record
Name string
RuneName string
ItemTypes struct {
Include []string
Exclude []string
}
// Runes slice of ID pointers from Misc.txt, controls what runes are
// required to make the rune word and in what order they are to be socketed.
Runes []string
Runes []string
Properties []*RunewordProperty
Complete bool
Server bool
}
// RunewordProperty is a representation of a stat possessed by this runeword

View File

@ -5,95 +5,23 @@ type SetItems map[string]*SetItemRecord
// SetItemRecord represents a set item
type SetItemRecord struct {
// SetItemKey (index)
// string key to item's name in a .tbl file
SetItemKey string
// SetKey (set)
// string key to the index field in Sets.txt - the set the item is a part of.
SetKey string
// ItemCode (item)
// base item code of this set item (matches code field in Weapons.txt, Armor.txt or Misc.txt files).
ItemCode string
// Rarity
// Chance to pick this set item if more then one set item of the same base item exist,
// this uses the common rarity/total_rarity formula, so if you have two set rings,
// one with a rarity of 100 the other with a rarity of 1,
// then the first will drop 100/101 percent of the time (
// 99%) and the other will drop 1/101 percent of the time (1%),
// rarity can be anything between 0 and 255.
Rarity int
// QualityLevel (lvl)
// The quality level of this set item, monsters, cube recipes, vendors,
// objects and the like most be at least this level or higher to be able to drop this item,
// otherwise they would drop a magical item with twice normal durability.
QualityLevel int
// RequiredLevel ("lvl req")
// The character level required to use this set item.
RequiredLevel int
// CharacterPaletteTransform (chrtransform)
// Palette shift to apply to the the DCC component-file and the DC6 flippy-file (
// whenever or not the color shift will apply is determined by Weapons.txt,
// Armor.txt or Misc.txt). This is an ID pointer from Colors.txt.
CharacterPaletteTransform int
// InventoryPaletteTransform (invtransform)
// Palette shift to apply to the the DC6 inventory-file (
// whenever or not the color shift will apply is determined by Weapons.txt,
// Armor.txt or Misc.txt). This is an ID pointer from Colors.txt.
Properties [numPropertiesOnSetItem]*SetItemProperty
SetPropertiesLevel2 [numBonusPropertiesOnSetItem]*SetItemProperty
SetPropertiesLevel1 [numBonusPropertiesOnSetItem]*SetItemProperty
InvFile string
ItemCode string
UseSound string
DropSound string
SetKey string
FlippyFile string
SetItemKey string
InventoryPaletteTransform int
// InvFile
// Overrides the invfile and setinvfile specified in Weapons.txt,
// Armor.txt or Misc.txt for the base item.
// This field contains the file name of the DC6 inventory graphic (without the .dc6 extension).
InvFile string
// FlippyFile
// Overrides the flippyfile specified in Weapons.txt, Armor.txt or Misc.txt for the base item.
// This field contains the file name of the DC6 flippy animation (without the .dc6 extension).
FlippyFile string
// DropSound
// Overrides the dropsound (the sound played when the item hits the ground) specified in Weapons.
// txt, Armor.txt or Misc.txt for the base item. This field contains an ID pointer from Sounds.txt.
DropSound string
// DropSfxFrame
// How many frames after the flippy animation starts playing will the associated drop sound start
// to play. This overrides the values in Weapons.txt, Armor.txt or Misc.txt.
DropSfxFrame int
// UseSound
// Overrides the usesound (the sound played when the item is consumed by the player) specified in
// Weapons.txt, Armor.txt or Misc.txt for the base item.
// This field contains an ID pointer from Sounds.txt.
UseSound string
// CostMult ("cost mult")
// The base item's price is multiplied by this value when sold, repaired or bought from a vendor.
CostMult int
// CostAdd ("cost add")
// After the price has been multiplied, this amount of gold is added to the price on top.
CostAdd int
// AddFn ("add func")
// a property mode field that controls how the variable attributes will appear and be functional
// on a set item. See the appendix for further details about this field's effects.
AddFn int
// Properties are a propert code, parameter, min, max for generating an item propert
Properties [numPropertiesOnSetItem]*SetItemProperty
// SetPropertiesLevel1 is the first version of bonus properties for the set
SetPropertiesLevel1 [numBonusPropertiesOnSetItem]*SetItemProperty
// SetPropertiesLevel2 is the second version of bonus properties for the set
SetPropertiesLevel2 [numBonusPropertiesOnSetItem]*SetItemProperty
CharacterPaletteTransform int
DropSfxFrame int
CostMult int
CostAdd int
AddFn int
QualityLevel int
Rarity int
RequiredLevel int
}

View File

@ -5,29 +5,15 @@ type Sets map[string]*SetRecord
// SetRecord describes the set bonus for a group of set items
type SetRecord struct {
// index
// String key linked to by the set field in SetItems.
// txt - used to tie all of the set's items to the same set.
Key string
// name
// String key to item's name in a .tbl file.
Key string
StringTableKey string
// Version 0 for vanilla, 100 for LoD expansion
Version int
// Level
// set level, perhaps intended as a minimum level for partial or full attributes to appear
// (reference only, not loaded into game).
Level int
// Properties contains the partial and full set bonus properties.
Properties struct {
Properties struct {
PartialA []*SetProperty
PartialB []*SetProperty
Full []*SetProperty
}
Version int
Level int
}
// SetProperty represents a property possessed by the set

View File

@ -15,119 +15,119 @@ func skillDescriptionLoader(r *RecordManager, d *d2txt.DataDictionary) error {
for d.Next() {
record := &SkillDescriptionRecord{
d.String("skilldesc"),
d.Number("SkillPage"),
d.Number("SkillRow"),
d.Number("SkillColumn"),
d.Number("ListRow"),
d.String("ListPool"),
d.Number("IconCel"),
d.String("str name"),
d.String("str short"),
d.String("str long"),
d.String("str alt"),
d.String("str mana"),
d.String("descdam"),
parser.Parse(d.String("ddam calc1")),
parser.Parse(d.String("ddam calc2")),
d.String("p1dmelem"),
parser.Parse(d.String("p1dmmin")),
parser.Parse(d.String("p1dmmax")),
d.String("p2dmelem"),
parser.Parse(d.String("p2dmmin")),
parser.Parse(d.String("p2dmmax")),
d.String("p3dmelem"),
parser.Parse(d.String("p3dmmin")),
parser.Parse(d.String("p3dmmax")),
d.String("descatt"),
d.String("descmissile1"),
d.String("descmissile2"),
d.String("descmissile3"),
d.String("descline1"),
d.String("desctexta1"),
d.String("desctextb1"),
parser.Parse(d.String("desccalca1")),
parser.Parse(d.String("desccalcb1")),
d.String("descline2"),
d.String("desctexta2"),
d.String("desctextb2"),
parser.Parse(d.String("desccalca2")),
parser.Parse(d.String("desccalcb2")),
d.String("descline3"),
d.String("desctexta3"),
d.String("desctextb3"),
parser.Parse(d.String("desccalca3")),
parser.Parse(d.String("desccalcb3")),
d.String("descline4"),
d.String("desctexta4"),
d.String("desctextb4"),
parser.Parse(d.String("desccalca4")),
parser.Parse(d.String("desccalcb4")),
d.String("descline5"),
d.String("desctexta5"),
d.String("desctextb5"),
parser.Parse(d.String("desccalca5")),
parser.Parse(d.String("desccalcb5")),
d.String("descline6"),
d.String("desctexta6"),
d.String("desctextb6"),
parser.Parse(d.String("desccalca6")),
parser.Parse(d.String("desccalcb6")),
d.String("dsc2line1"),
d.String("dsc2texta1"),
d.String("dsc2textb1"),
parser.Parse(d.String("dsc2calca1")),
parser.Parse(d.String("dsc2calcb1")),
d.String("dsc2line2"),
d.String("dsc2texta2"),
d.String("dsc2textb2"),
parser.Parse(d.String("dsc2calca2")),
parser.Parse(d.String("dsc2calcb2")),
d.String("dsc2line3"),
d.String("dsc2texta3"),
d.String("dsc2textb3"),
parser.Parse(d.String("dsc2calca3")),
parser.Parse(d.String("dsc2calcb3")),
d.String("dsc2line4"),
d.String("dsc2texta4"),
d.String("dsc2textb4"),
parser.Parse(d.String("dsc2calca4")),
parser.Parse(d.String("dsc2calcb4")),
d.String("dsc3line1"),
d.String("dsc3texta1"),
d.String("dsc3textb1"),
parser.Parse(d.String("dsc3calca1")),
parser.Parse(d.String("dsc3calcb1")),
d.String("dsc3line2"),
d.String("dsc3texta2"),
d.String("dsc3textb2"),
parser.Parse(d.String("dsc3calca2")),
parser.Parse(d.String("dsc3calcb2")),
d.String("dsc3line3"),
d.String("dsc3texta3"),
d.String("dsc3textb3"),
parser.Parse(d.String("dsc3calca3")),
parser.Parse(d.String("dsc3calcb3")),
d.String("dsc3line4"),
d.String("dsc3texta4"),
d.String("dsc3textb4"),
parser.Parse(d.String("dsc3calca4")),
parser.Parse(d.String("dsc3calcb4")),
d.String("dsc3line5"),
d.String("dsc3texta5"),
d.String("dsc3textb5"),
parser.Parse(d.String("dsc3calca5")),
parser.Parse(d.String("dsc3calcb5")),
d.String("dsc3line6"),
d.String("dsc3texta6"),
d.String("dsc3textb6"),
parser.Parse(d.String("dsc3calca6")),
parser.Parse(d.String("dsc3calcb6")),
d.String("dsc3line7"),
d.String("dsc3texta7"),
d.String("dsc3textb7"),
parser.Parse(d.String("dsc3calca7")),
parser.Parse(d.String("dsc3calcb7")),
Name: d.String("skilldesc"),
SkillPage: d.Number("SkillPage"),
SkillRow: d.Number("SkillRow"),
SkillColumn: d.Number("SkillColumn"),
ListRow: d.Number("ListRow"),
ListPool: d.String("ListPool"),
IconCel: d.Number("IconCel"),
NameKey: d.String("str name"),
ShortKey: d.String("str short"),
LongKey: d.String("str long"),
AltKey: d.String("str alt"),
ManaKey: d.String("str mana"),
Descdam: d.String("descdam"),
DdamCalc1: parser.Parse(d.String("ddam calc1")),
DdamCalc2: parser.Parse(d.String("ddam calc2")),
P1dmelem: d.String("p1dmelem"),
P1dmmin: parser.Parse(d.String("p1dmmin")),
P1dmmax: parser.Parse(d.String("p1dmmax")),
P2dmelem: d.String("p2dmelem"),
P2dmmin: parser.Parse(d.String("p2dmmin")),
P2dmmax: parser.Parse(d.String("p2dmmax")),
P3dmelem: d.String("p3dmelem"),
P3dmmin: parser.Parse(d.String("p3dmmin")),
P3dmmax: parser.Parse(d.String("p3dmmax")),
Descatt: d.String("descatt"),
Descmissile1: d.String("descmissile1"),
Descmissile2: d.String("descmissile2"),
Descmissile3: d.String("descmissile3"),
Descline1: d.String("descline1"),
Desctexta1: d.String("desctexta1"),
Desctextb1: d.String("desctextb1"),
Desccalca1: parser.Parse(d.String("desccalca1")),
Desccalcb1: parser.Parse(d.String("desccalcb1")),
Descline2: d.String("descline2"),
Desctexta2: d.String("desctexta2"),
Desctextb2: d.String("desctextb2"),
Desccalca2: parser.Parse(d.String("desccalca2")),
Desccalcb2: parser.Parse(d.String("desccalcb2")),
Descline3: d.String("descline3"),
Desctexta3: d.String("desctexta3"),
Desctextb3: d.String("desctextb3"),
Desccalca3: parser.Parse(d.String("desccalca3")),
Desccalcb3: parser.Parse(d.String("desccalcb3")),
Descline4: d.String("descline4"),
Desctexta4: d.String("desctexta4"),
Desctextb4: d.String("desctextb4"),
Desccalca4: parser.Parse(d.String("desccalca4")),
Desccalcb4: parser.Parse(d.String("desccalcb4")),
Descline5: d.String("descline5"),
Desctexta5: d.String("desctexta5"),
Desctextb5: d.String("desctextb5"),
Desccalca5: parser.Parse(d.String("desccalca5")),
Desccalcb5: parser.Parse(d.String("desccalcb5")),
Descline6: d.String("descline6"),
Desctexta6: d.String("desctexta6"),
Desctextb6: d.String("desctextb6"),
Desccalca6: parser.Parse(d.String("desccalca6")),
Desccalcb6: parser.Parse(d.String("desccalcb6")),
Dsc2line1: d.String("dsc2line1"),
Dsc2texta1: d.String("dsc2texta1"),
Dsc2textb1: d.String("dsc2textb1"),
Dsc2calca1: parser.Parse(d.String("dsc2calca1")),
Dsc2calcb1: parser.Parse(d.String("dsc2calcb1")),
Dsc2line2: d.String("dsc2line2"),
Dsc2texta2: d.String("dsc2texta2"),
Dsc2textb2: d.String("dsc2textb2"),
Dsc2calca2: parser.Parse(d.String("dsc2calca2")),
Dsc2calcb2: parser.Parse(d.String("dsc2calcb2")),
Dsc2line3: d.String("dsc2line3"),
Dsc2texta3: d.String("dsc2texta3"),
Dsc2textb3: d.String("dsc2textb3"),
Dsc2calca3: parser.Parse(d.String("dsc2calca3")),
Dsc2calcb3: parser.Parse(d.String("dsc2calcb3")),
Dsc2line4: d.String("dsc2line4"),
Dsc2texta4: d.String("dsc2texta4"),
Dsc2textb4: d.String("dsc2textb4"),
Dsc2calca4: parser.Parse(d.String("dsc2calca4")),
Dsc2calcb4: parser.Parse(d.String("dsc2calcb4")),
Dsc3line1: d.String("dsc3line1"),
Dsc3texta1: d.String("dsc3texta1"),
Dsc3textb1: d.String("dsc3textb1"),
Dsc3calca1: parser.Parse(d.String("dsc3calca1")),
Dsc3calcb1: parser.Parse(d.String("dsc3calcb1")),
Dsc3line2: d.String("dsc3line2"),
Dsc3texta2: d.String("dsc3texta2"),
Dsc3textb2: d.String("dsc3textb2"),
Dsc3calca2: parser.Parse(d.String("dsc3calca2")),
Dsc3calcb2: parser.Parse(d.String("dsc3calcb2")),
Dsc3line3: d.String("dsc3line3"),
Dsc3texta3: d.String("dsc3texta3"),
Dsc3textb3: d.String("dsc3textb3"),
Dsc3calca3: parser.Parse(d.String("dsc3calca3")),
Dsc3calcb3: parser.Parse(d.String("dsc3calcb3")),
Dsc3line4: d.String("dsc3line4"),
Dsc3texta4: d.String("dsc3texta4"),
Dsc3textb4: d.String("dsc3textb4"),
Dsc3calca4: parser.Parse(d.String("dsc3calca4")),
Dsc3calcb4: parser.Parse(d.String("dsc3calcb4")),
Dsc3line5: d.String("dsc3line5"),
Dsc3texta5: d.String("dsc3texta5"),
Dsc3textb5: d.String("dsc3textb5"),
Dsc3calca5: parser.Parse(d.String("dsc3calca5")),
Dsc3calcb5: parser.Parse(d.String("dsc3calcb5")),
Dsc3line6: d.String("dsc3line6"),
Dsc3texta6: d.String("dsc3texta6"),
Dsc3textb6: d.String("dsc3textb6"),
Dsc3calca6: parser.Parse(d.String("dsc3calca6")),
Dsc3calcb6: parser.Parse(d.String("dsc3calcb6")),
Dsc3line7: d.String("dsc3line7"),
Dsc3texta7: d.String("dsc3texta7"),
Dsc3textb7: d.String("dsc3textb7"),
Dsc3calca7: parser.Parse(d.String("dsc3calca7")),
Dsc3calcb7: parser.Parse(d.String("dsc3calcb7")),
}
records[record.Name] = record

View File

@ -8,117 +8,117 @@ type SkillDescriptions map[string]*SkillDescriptionRecord
// SkillDescriptionRecord is a single row from skilldesc.txt and is used for
// generating text strings for skills.
type SkillDescriptionRecord struct {
Name string // skilldesc
SkillPage int // SkillPage
SkillRow int // SkillRow
SkillColumn int // SkillColumn
ListRow int // ListRow
ListPool string // ListPool
IconCel int // IconCel
NameKey string // str name
ShortKey string // str short
LongKey string // str long
AltKey string // str alt
ManaKey string // str mana
Descdam string // descdam
DdamCalc1 d2calculation.Calculation // ddam calc1
DdamCalc2 d2calculation.Calculation // ddam calc2
P1dmelem string // p1dmelem
P1dmmin d2calculation.Calculation // p1dmmin
P1dmmax d2calculation.Calculation // p1dmmax
P2dmelem string // p2dmelem
P2dmmin d2calculation.Calculation // p2dmmin
P2dmmax d2calculation.Calculation // p2dmmax
P3dmelem string // p3dmelem
P3dmmin d2calculation.Calculation // p3dmmin
P3dmmax d2calculation.Calculation // p3dmmax
Descatt string // descatt
Descmissile1 string // descmissile1
Descmissile2 string // descmissile2
Descmissile3 string // descmissile3
Descline1 string // descline1
Desctexta1 string // desctexta1
Desctextb1 string // desctextb1
Desccalca1 d2calculation.Calculation // desccalca1
Desccalcb1 d2calculation.Calculation // desccalcb1
Descline2 string // descline2
Desctexta2 string // desctexta2
Desctextb2 string // desctextb2
Desccalca2 d2calculation.Calculation // desccalca2
Desccalcb2 d2calculation.Calculation // desccalcb2
Descline3 string // descline3
Desctexta3 string // desctexta3
Desctextb3 string // desctextb3
Desccalca3 d2calculation.Calculation // desccalca3
Desccalcb3 d2calculation.Calculation // desccalcb3
Descline4 string // descline4
Desctexta4 string // desctexta4
Desctextb4 string // desctextb4
Desccalca4 d2calculation.Calculation // desccalca4
Desccalcb4 d2calculation.Calculation // desccalcb4
Descline5 string // descline5
Desctexta5 string // desctexta5
Desctextb5 string // desctextb5
Desccalca5 d2calculation.Calculation // desccalca5
Desccalcb5 d2calculation.Calculation // desccalcb5
Descline6 string // descline6
Desctexta6 string // desctexta6
Desctextb6 string // desctextb6
Desccalca6 d2calculation.Calculation // desccalca6
Desccalcb6 d2calculation.Calculation // desccalcb6
Dsc2line1 string // dsc2line1
Dsc2texta1 string // dsc2texta1
Dsc2textb1 string // dsc2textb1
Dsc2calca1 d2calculation.Calculation // dsc2calca1
Dsc2calcb1 d2calculation.Calculation // dsc2calcb1
Dsc2line2 string // dsc2line2
Dsc2texta2 string // dsc2texta2
Dsc2textb2 string // dsc2textb2
Dsc2calca2 d2calculation.Calculation // dsc2calca2
Dsc2calcb2 d2calculation.Calculation // dsc2calcb2
Dsc2line3 string // dsc2line3
Dsc2texta3 string // dsc2texta3
Dsc2textb3 string // dsc2textb3
Dsc2calca3 d2calculation.Calculation // dsc2calca3
Dsc2calcb3 d2calculation.Calculation // dsc2calcb3
Dsc2line4 string // dsc2line4
Dsc2texta4 string // dsc2texta4
Dsc2textb4 string // dsc2textb4
Dsc2calca4 d2calculation.Calculation // dsc2calca4
Dsc2calcb4 d2calculation.Calculation // dsc2calcb4
Dsc3line1 string // dsc3line1
Dsc3texta1 string // dsc3texta1
Dsc3textb1 string // dsc3textb1
Dsc3calca1 d2calculation.Calculation // dsc3calca1
Dsc3calcb1 d2calculation.Calculation // dsc3calcb1
Dsc3line2 string // dsc3line2
Dsc3texta2 string // dsc3texta2
Dsc3textb2 string // dsc3textb2
Dsc3calca2 d2calculation.Calculation // dsc3calca2
Dsc3calcb2 d2calculation.Calculation // dsc3calcb2
Dsc3line3 string // dsc3line3
Dsc3texta3 string // dsc3texta3
Dsc3textb3 string // dsc3textb3
Dsc3calca3 d2calculation.Calculation // dsc3calca3
Dsc3calcb3 d2calculation.Calculation // dsc3calcb3
Dsc3line4 string // dsc3line4
Dsc3texta4 string // dsc3texta4
Dsc3textb4 string // dsc3textb4
Dsc3calca4 d2calculation.Calculation // dsc3calca4
Dsc3calcb4 d2calculation.Calculation // dsc3calcb4
Dsc3line5 string // dsc3line5
Dsc3texta5 string // dsc3texta5
Dsc3textb5 string // dsc3textb5
Dsc3calca5 d2calculation.Calculation // dsc3calca5
Dsc3calcb5 d2calculation.Calculation // dsc3calcb5
Dsc3line6 string // dsc3line6
Dsc3texta6 string // dsc3texta6
Dsc3textb6 string // dsc3textb6
Dsc3calca6 d2calculation.Calculation // dsc3calca6
Dsc3calcb6 d2calculation.Calculation // dsc3calcb6
Dsc3line7 string // dsc3line7
Dsc3texta7 string // dsc3texta7
Dsc3textb7 string // dsc3textb7
Dsc3calca7 d2calculation.Calculation // dsc3calca7
Dsc3calcb7 d2calculation.Calculation // dsc3calcb7
Desccalcb3 d2calculation.Calculation
Dsc3calca7 d2calculation.Calculation
Dsc3calcb5 d2calculation.Calculation
Dsc3calca5 d2calculation.Calculation
Dsc3calcb7 d2calculation.Calculation
Dsc3calcb4 d2calculation.Calculation
Dsc3calcb6 d2calculation.Calculation
Dsc3calca4 d2calculation.Calculation
Dsc3calcb3 d2calculation.Calculation
Dsc3calca3 d2calculation.Calculation
Dsc3calcb2 d2calculation.Calculation
Dsc3calca2 d2calculation.Calculation
Dsc3calcb1 d2calculation.Calculation
DdamCalc1 d2calculation.Calculation
DdamCalc2 d2calculation.Calculation
Dsc3calca1 d2calculation.Calculation
P1dmmin d2calculation.Calculation
P1dmmax d2calculation.Calculation
Dsc2calcb4 d2calculation.Calculation
P2dmmin d2calculation.Calculation
P2dmmax d2calculation.Calculation
Dsc2calca4 d2calculation.Calculation
P3dmmin d2calculation.Calculation
P3dmmax d2calculation.Calculation
Dsc2calcb3 d2calculation.Calculation
Dsc2calca3 d2calculation.Calculation
Dsc2calcb2 d2calculation.Calculation
Dsc2calcb1 d2calculation.Calculation
Dsc2calca1 d2calculation.Calculation
Desccalcb6 d2calculation.Calculation
Desccalca6 d2calculation.Calculation
Desccalca1 d2calculation.Calculation
Desccalcb1 d2calculation.Calculation
Dsc3calca6 d2calculation.Calculation
Desccalcb5 d2calculation.Calculation
Desccalca5 d2calculation.Calculation
Desccalca2 d2calculation.Calculation
Desccalcb2 d2calculation.Calculation
Desccalcb4 d2calculation.Calculation
Desccalca4 d2calculation.Calculation
Dsc2calca2 d2calculation.Calculation
Desccalca3 d2calculation.Calculation
Desctextb3 string
Descline4 string
Desctexta4 string
Desctextb4 string
Desctexta3 string
Descline3 string
Descline5 string
Desctexta5 string
Desctextb5 string
Desctextb2 string
Desctexta2 string
Descline2 string
Desctexta6 string
Desctextb6 string
Desctextb1 string
Desctexta1 string
Dsc2line1 string
Dsc2texta1 string
Dsc2textb1 string
Descline1 string
Descmissile3 string
Dsc2line2 string
Dsc2texta2 string
Dsc2textb2 string
Descline6 string
Descmissile2 string
Dsc2line3 string
Dsc2texta3 string
Dsc2textb3 string
Descmissile1 string
Descatt string
Dsc2line4 string
Dsc2texta4 string
Dsc2textb4 string
P3dmelem string
P2dmelem string
Dsc3line1 string
Dsc3texta1 string
Dsc3textb1 string
P1dmelem string
Descdam string
Dsc3line2 string
Dsc3texta2 string
Dsc3textb2 string
ManaKey string
AltKey string
Dsc3line3 string
Dsc3texta3 string
Dsc3textb3 string
LongKey string
ShortKey string
Dsc3line4 string
Dsc3texta4 string
Dsc3textb4 string
NameKey string
ListPool string
Dsc3line7 string
Dsc3texta5 string
Dsc3textb5 string
Dsc3texta7 string
Dsc3textb7 string
Dsc3line6 string
Dsc3texta6 string
Dsc3textb6 string
Name string
Dsc3line5 string
ListRow int
SkillColumn int
SkillRow int
SkillPage int
IconCel int
}

View File

@ -12,66 +12,66 @@ type SkillDetails map[int]*SkillRecord
// SkillRecord is a row from the skills.txt file. Here are two resources for more info on each field
type SkillRecord struct {
Skill string
Charclass string
Skilldesc string
Passivecalc1 d2calculation.Calculation
DmgSymPerCalc d2calculation.Calculation
ToHitCalc d2calculation.Calculation
Prgcalc1 d2calculation.Calculation
Prgcalc2 d2calculation.Calculation
Prgcalc3 d2calculation.Calculation
Srvmissile string
Srvmissilea string
Srvmissileb string
Srvmissilec string
Srvoverlay string
Aurastate string
Auratargetstate string
Calc4 d2calculation.Calculation
Calc3 d2calculation.Calculation
Calc2 d2calculation.Calculation
Calc1 d2calculation.Calculation
Perdelay d2calculation.Calculation
Skpoints d2calculation.Calculation
ELenSymPerCalc d2calculation.Calculation
Auralencalc d2calculation.Calculation
Aurarangecalc d2calculation.Calculation
Aurastat1 string
Cltcalc3 d2calculation.Calculation
Aurastatcalc1 d2calculation.Calculation
Aurastat2 string
Cltcalc2 d2calculation.Calculation
Aurastatcalc2 d2calculation.Calculation
Aurastat3 string
Cltcalc1 d2calculation.Calculation
Aurastatcalc3 d2calculation.Calculation
Aurastat4 string
Sumsk5calc d2calculation.Calculation
Aurastatcalc4 d2calculation.Calculation
Aurastat5 string
Sumsk4calc d2calculation.Calculation
Aurastatcalc5 d2calculation.Calculation
Aurastat6 string
EDmgSymPerCalc d2calculation.Calculation
Aurastatcalc6 d2calculation.Calculation
Auraevent1 string
Auraevent2 string
Auraevent3 string
Auratgtevent string
Auratgteventfunc string
Passivestate string
Passiveitype string
Passivestat1 string
Passivecalc1 d2calculation.Calculation
Passivestat2 string
Passivecalc2 d2calculation.Calculation
Passivestat3 string
Passivecalc3 d2calculation.Calculation
Passivestat4 string
Passivecalc4 d2calculation.Calculation
Passivestat5 string
Sumsk3calc d2calculation.Calculation
Sumsk2calc d2calculation.Calculation
Sumsk1calc d2calculation.Calculation
Petmax d2calculation.Calculation
Passivecalc5 d2calculation.Calculation
Passivecalc4 d2calculation.Calculation
Passivecalc3 d2calculation.Calculation
Passivecalc2 d2calculation.Calculation
Sumskill4 string
Passivestat2 string
Passivestat1 string
Passivestat3 string
Passiveitype string
Passivestat4 string
Passivestate string
Passivestat5 string
Auratgteventfunc string
Passiveevent string
Passiveeventfunc string
Summon string
Pettype string
Petmax d2calculation.Calculation
Auratgtevent string
Summode string
Sumskill1 string
Sumsk1calc d2calculation.Calculation
Skill string
Auraevent3 string
Sumskill2 string
Sumsk2calc d2calculation.Calculation
Auraevent2 string
Sumskill3 string
Sumsk3calc d2calculation.Calculation
Sumskill4 string
Sumsk4calc d2calculation.Calculation
Auraevent1 string
Aurastat6 string
Aurastat5 string
Sumskill5 string
Sumsk5calc d2calculation.Calculation
Aurastat4 string
Sumoverlay string
Stsound string
Stsoundclass string
@ -90,9 +90,9 @@ type SkillRecord struct {
Cltmissileb string
Cltmissilec string
Cltmissiled string
Cltcalc1 d2calculation.Calculation
Cltcalc2 d2calculation.Calculation
Cltcalc3 d2calculation.Calculation
Aurastat3 string
Aurastat2 string
Aurastat1 string
Range string
Itypea1 string
Itypea2 string
@ -104,35 +104,35 @@ type SkillRecord struct {
Itypeb3 string
Etypeb1 string
Etypeb2 string
Anim d2enum.PlayerAnimationMode
Auratargetstate string
Seqtrans string
Monanim string
ItemCastSound string
ItemCastOverlay string
Skpoints d2calculation.Calculation
Aurastate string
Reqskill1 string
Reqskill2 string
Reqskill3 string
State1 string
State2 string
State3 string
Perdelay d2calculation.Calculation
Calc1 d2calculation.Calculation
Calc2 d2calculation.Calculation
Calc3 d2calculation.Calculation
Calc4 d2calculation.Calculation
ToHitCalc d2calculation.Calculation
DmgSymPerCalc d2calculation.Calculation
Srvoverlay string
Srvmissilec string
Srvmissileb string
Srvmissilea string
Srvmissile string
Skilldesc string
Charclass string
EType string
EDmgSymPerCalc d2calculation.Calculation
ELenSymPerCalc d2calculation.Calculation
Sumskill1 string
Anim d2enum.PlayerAnimationMode
ID int
Srvstfunc int
Srvdofunc int
Srvprgfunc1 int
Srvprgfunc2 int
Srvprgfunc3 int
Prgdam int
CostMult int
Aurafilter int
Auraeventfunc1 int
Auraeventfunc2 int
@ -212,7 +212,7 @@ type SkillRecord struct {
ELevLen3 int
Aitype int
Aibonus int
CostMult int
Prgdam int
CostAdd int
Prgstack bool
Decquant bool
@ -222,7 +222,7 @@ type SkillRecord struct {
Weaponsnd bool
Warp bool
Immediate bool
Enhanceable bool
Kick bool
Noammo bool
Durability bool
UseAttackRate bool
@ -252,5 +252,5 @@ type SkillRecord struct {
General bool
Scroll bool
InGame bool
Kick bool
Enhanceable bool
}

View File

@ -5,235 +5,73 @@ type States map[string]*StateRecord
// StateRecord describes a body location that items can be equipped to
type StateRecord struct {
// Name of status effect (Line # is used for ID purposes)
State string
// Exact usage depends on the state and how the code accesses it,
// overlay1 however is the one you should generally be using.
Overlay1 string
Overlay2 string
Overlay3 string
Overlay4 string
// Overlay shown on target of progressive skill when chargeup triggers.
PgOverlay string
// Overlay displayed when the state is applied initially
// (later replaced by overlay1 or whatever applicable by code).
CastOverlay string
// Like castoverlay, just this one is displayed when the state expires.
RemOverlay string
// Primary stat associated with the state, mostly used for display purposes
// (you should generally use skills.txt for assigning stats to states).
Stat string
// The missile that this state will utilize for certain events,
// how this is used depends entirely on the functions associated with the state.
Missile string
// The skill that will be queried for this state in some sections of code,
// strangely enough this contradicts the fact states store their assigner skill anyway
// (via STAT_MODIFIERLIST_SKILL)
Skill string
// What item type is effected by this states color change.
ItemType string
// The color being applied to this item
// (only going to have an effect on alternate gfx, inventory gfx isn't effected).
ItemTrans string
// Sound played respectively when the state is initially applied
OnSound string
// and when it expires
OffSound string
// States can be grouped together, so they cannot stack
Group int
// Clientside callback function invoked when the state is applied initially.
SetFunc int
// Clientside callback function invoked when the state expires or is otherwise removed.
RemFunc int
// The color priority for this states color change, the, this can range from 0 to 255,
// the state with the highest color priority will always be used should more then
// one co-exist on the unit. If two states exist with the same priority the one with the
// lowest id is used (IIRC).
ColorPri int
// Index for the color shift palette picked from the *.PL2 files.
ColorShift int
// Change the color of the light radius to what is indicated here,
// (only has an effect in D3D and glide of course).
LightR int
// Change the color of the light radius to what is indicated here,
// (only has an effect in D3D and glide of course).
LightG int
// Change the color of the light radius to what is indicated here,
// (only has an effect in D3D and glide of course).
LightB int
// What unit type is used for the disguise gfx
// (1 being monsters, 2 being players, contrary to internal game logic).
GfxType int
// The unit class used for disguise gfx, this corresponds with the index
// from monstats.txt and charstats.txt
GfxClass int
// When 'gfxtype' is set to 1, the "class" represents an hcIdx from MonStats.txt.
// If it's set to 2 then it will indicate a character class the unit with this state will be
// morphed into.
// Clientside event callback for this state
// (likely very inconsistent with the server side events, beware).
CltEvent string
// Callback function invoked when the client event triggers.
CltEventFunc int
// CltDoFunc called every frame the state is active
CltEvent string
Overlay1 string
Overlay2 string
Overlay3 string
Overlay4 string
PgOverlay string
CastOverlay string
RemOverlay string
Stat string
Missile string
Skill string
ItemType string
ItemTrans string
OnSound string
OffSound string
State string
SetFunc int
RemFunc int
ColorPri int
ColorShift int
LightR int
LightG int
LightB int
GfxType int
GfxClass int
Group int
CltEventFunc int
CltActiveFunc int
// Srvdofunc called every frame the state is active
SrvActiveFunc int
// If a monster gets hit, the state will be dispelled
RemHit bool
// Not yet analyzed in detail
NoSend bool
// Whenever a state transforms the appearance of a unit
Transform bool
// Aura states will stack on-screen. Aura states are dispelled when a monster is
// affected by conversion
Aura bool
// Can a heal enabled npc remove this state when you talk to them?
Cureable bool
// Curse states can't stack. Controls duration reduction from cleansing, and curse resistance.
// When a new curse is applied, the old one is removed.
Curse bool
// State has a StateActiveFunc associated with it. The active func is called every frame while
// the state is active.
Active bool
// State restricts skill usage (druid shapeshift)
Restrict bool
// State makes the game load another sprite (use with Transform)
Disguise bool
// State applies a color change that overrides all others
Blue bool
// Control when attack rating is displayed in blue
AttBlue bool
// Control when damage is displayed in blue
DmgBlue bool
// Control when armor class is displayed in blue
ArmBlue bool
// Control when fire resistance is displayed in blue
RfBlue bool
// Control when lightning resistance is displayed in blue
RlBlue bool
// Control when cold resistance is displayed in blue
RcBlue bool
// Control when poison resistance is displayed in blue
RpBlue bool
// Control when attack rating is displayed in red
AttRed bool
// Control when damage is displayed in red
DmgRed bool
// Control when armor class is displayed in red
ArmRed bool
// Control when fire resistance is displayed in red
RfRed bool
// Control when lightning resistance is displayed in red
RlRed bool
// Control when cold resistance is displayed in red
RcRed bool
// Control when poison resistance is displayed in red
RpRed bool
// Control when stamina bar color is changed to blue
StamBarBlue bool
// When a unit effected by this state kills another unit,
// the summon owner will receive experience
Exp bool
// Whenever the state is removed when the player dies
PlrStayDeath bool
// Whenever the state is removed when the monster dies
MonStayDeath bool
// Whenever the state is removed when the boss dies. Prevents bosses from shattering?
Curse bool
NoSend bool
Transform bool
Aura bool
Cureable bool
RemHit bool
Active bool
Restrict bool
Disguise bool
Blue bool
AttBlue bool
DmgBlue bool
ArmBlue bool
RfBlue bool
RlBlue bool
RcBlue bool
RpBlue bool
AttRed bool
DmgRed bool
ArmRed bool
RfRed bool
RlRed bool
RcRed bool
RpRed bool
StamBarBlue bool
Exp bool
PlrStayDeath bool
MonStayDeath bool
BossStayDeath bool
// When the unit dies, the corpse and death animation will not be drawn
Hide bool
// Whenever the unit shatters or explodes when it dies. This is heavily hardcoded,
// it will always use the ice shatter for all states other than STATE_UBERMINION
Shatter bool
// Whenever this state prevents the corpse from being selected by spells and the ai
UDead bool
// When a state with this is active, it cancels out the native life regen of monsters.
// (using only the mod part instead of accr).
Life bool
// Whenever this state applies a color change that overrides all others (such as from items).
// (see blue column, which seams to do the same).
Green bool
// Whenever this state is associated with progressive spells and will be
// looked up when the charges are triggered.
Pgsv bool
// Related to assigning overlays to the unit, not extensively researched yet.
NoOverlays bool
// Like the previous column, also only used on states with the previous column enabled.
NoClear bool
// whenever this state will use the minion owners inventory clientside (this is what makes
// the decoy always show up with your own equipment,
// even when you change what you wear after summoning one).
BossInv bool
// Prevents druids that wield a bow or crossbow while shape shifted from
// firing missiles, and will rather attack in melee.
MeleeOnly bool
// Not researched yet
NotOnDead bool
Hide bool
Shatter bool
UDead bool
Life bool
Green bool
Pgsv bool
NoOverlays bool
NoClear bool
BossInv bool
MeleeOnly bool
NotOnDead bool
}

View File

@ -6,15 +6,15 @@ type TreasureClass map[string]*TreasureClassRecord
// TreasureClassRecord represents a rule for item drops in diablo 2
type TreasureClassRecord struct {
Name string
Treasures []*Treasure
Group int
Level int
NumPicks int
FreqUnique int
FreqSet int
FreqRare int
FreqMagic int
FreqNoDrop int
Treasures []*Treasure
NumPicks int
}
// Treasure describes a treasure to drop