diff --git a/d2core/d2records/record_manager.go b/d2core/d2records/record_manager.go index 08d38680..d98faff4 100644 --- a/d2core/d2records/record_manager.go +++ b/d2core/d2records/record_manager.go @@ -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 { diff --git a/d2core/d2records/runeword_record.go b/d2core/d2records/runeword_record.go index 7041a018..1918f693 100644 --- a/d2core/d2records/runeword_record.go +++ b/d2core/d2records/runeword_record.go @@ -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 diff --git a/d2core/d2records/set_item_record.go b/d2core/d2records/set_item_record.go index ca3f8e8a..46d3fdab 100644 --- a/d2core/d2records/set_item_record.go +++ b/d2core/d2records/set_item_record.go @@ -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 } diff --git a/d2core/d2records/set_record.go b/d2core/d2records/set_record.go index f2be1119..1c8e1442 100644 --- a/d2core/d2records/set_record.go +++ b/d2core/d2records/set_record.go @@ -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 diff --git a/d2core/d2records/skill_description_loader.go b/d2core/d2records/skill_description_loader.go index f579a8d5..4751868d 100644 --- a/d2core/d2records/skill_description_loader.go +++ b/d2core/d2records/skill_description_loader.go @@ -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 diff --git a/d2core/d2records/skill_description_record.go b/d2core/d2records/skill_description_record.go index e343a334..9108449a 100644 --- a/d2core/d2records/skill_description_record.go +++ b/d2core/d2records/skill_description_record.go @@ -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 } diff --git a/d2core/d2records/skill_details_record.go b/d2core/d2records/skill_details_record.go index 7cadca33..70557ca5 100644 --- a/d2core/d2records/skill_details_record.go +++ b/d2core/d2records/skill_details_record.go @@ -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 } diff --git a/d2core/d2records/states_record.go b/d2core/d2records/states_record.go index 633e303c..019f9c7b 100644 --- a/d2core/d2records/states_record.go +++ b/d2core/d2records/states_record.go @@ -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 } diff --git a/d2core/d2records/treasure_class_record.go b/d2core/d2records/treasure_class_record.go index 9475cb13..71864a61 100644 --- a/d2core/d2records/treasure_class_record.go +++ b/d2core/d2records/treasure_class_record.go @@ -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