Documentation ¶
Index ¶
- type Act5PrologueQuest
- type ActInfoData
- type ArmorComponent
- type ArmorData
- type AutoMagicData
- type AutoMapEntry
- type AutomagicColor
- type BeltData
- type Book
- type CharStats
- type CharacterClass
- type ColorCode
- type Component
- type CubeItemType
- type CubeRecipe
- type DifficultyLevels
- type Difficultylevel
- type DrlgType
- type DynamicRandomLevelGenerationType
- type EnvironmentPreset
- type ExperienceData
- type FieldBitField
- type GambleRecord
- type GamblingOptions
- type GemApplyType
- type GemData
- type HellUpgrade
- type Hero
- type Hireling
- type HirelingDescription
- type InventoryData
- type ItemArmor
- type ItemBodyLocation
- type ItemClass
- type ItemHighQualityModifiers
- type ItemProperty
- type ItemQualityLevel
- type ItemRatio
- type ItemRatioFunction
- type ItemStatCost
- type ItemStorePage
- type ItemSuperType
- type ItemType
- type ItemUnique
- type ItemWeapon
- type LevelData
- type LevelGroup
- type LevelMazeData
- type LevelName
- type LevelPreset
- type LevelSubstitutionData
- type LevelType
- type LevelWarp
- type MagicPrefix
- type MagicSuffix
- type MiscItem
- type Missile
- type MonsterEquipment
- type MonsterLevelStats
- type MonsterPreset
- type MonsterProp
- type MonsterSequence
- type MonsterSounds
- type MonsterStats
- type MonsterStats2
- type MonsterUniqueAppellation
- type MonsterUniqueModifier
- type MonsterUniqueName
- type NPC
- type NPCTrade
- type NightmareUpgrade
- type Object
- type ObjectClientFunction
- type ObjectGroup
- type ObjectInitFunction
- type ObjectMode
- type ObjectOperateFunction
- type ObjectPopulateFunction
- type ObjectPreset
- type ObjectTargetPriority
- type ObjectType
- type OpCode
- type OpID
- type OutputCode
- type Overlay
- type PetType
- type Quality
- type QuestClass
- type QuestFlag
- type RarePrefix
- type RareSuffix
- type RuneWordData
- type SetBonusData
- type SetItemData
- type Shrine
- type SkillData
- type SkillDescData
- type SoundEntry
- type SoundEnvironment
- type State
- type SubType
- type ThemeCode
- type TileName
- type TransformType
- type Transparency
- type TreasureClass
- type TreasureClassEx
- type UniquePrefix
- type UniqueSuffix
- type WarpCode
- type WeaponClass
- type WeaponClassID
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Act5PrologueQuest ¶
type Act5PrologueQuest int
Act5PrologueQuest represents the Act 5 Prologue quest names.
const ( Act5PrologueQuestSiegeOnHarrogath Act5PrologueQuest = iota Act5PrologueQuestRescueOnMountArreat Act5PrologueQuestPrisonOfIce Act5PrologueQuestBetrayalOfHarrogath Act5PrologueQuestRiteOfPassage Act5PrologueQuestEveOfDestruction )
type ActInfoData ¶
type ActInfoData struct { // Act defines the ID for the Act. Act int `csv:"act"` // Town uses an area level ("Name field" from levels.txt) to define the Act's town area. Town string `csv:"town"` // Start uses an area level ("Name field" from levels.txt) to define where the player starts in the Act. Start string `csv:"start"` // MaxNPCItemLevel controls the maximum item level for items sold by the NPC in the Act. MaxNPCItemLevel int `csv:"maxnpcitemlevel"` // ClassLevelRangeStart uses an area level ("Name field" from levels.txt) with its MonLvl values as a global Act minimum monster level. // For example, this is used to determine chest levels in an Act. ClassLevelRangeStart string `csv:"classlevelrangestart"` // ClassLevelRangeEnd uses an area level ("Name field" from levels.txt) with its MonLvl values as a global Act maximum monster level. // For example, this is used to determine chest levels in an Act. ClassLevelRangeEnd string `csv:"classlevelrangeend"` // WanderingNPCStart uses an index to determine which wandering monster class to use when populating areas. // See wanderingmmon.txt for a list of possible monsters to spawn. WanderingNPCStart int `csv:"wanderingnpcstart"` // WanderingNPCRange is a modifier that gets added to the "WanderingNPCStart" value to randomly select an index. WanderingNPCRange int `csv:"wanderingnpcrange"` // CommonActCOF specifies which ".D2" file to use for the common Act COF file. // This is used to establish the seed when initializing the Act. CommonActCOF string `csv:"commonactcof"` // Waypoint1 to Waypoint9 uses an area level ("Name field" from levels.txt) as the designated waypoint selection in the Waypoint UI. Waypoint1 string `csv:"waypoint1"` Waypoint2 string `csv:"waypoint2"` Waypoint3 string `csv:"waypoint3"` Waypoint4 string `csv:"waypoint4"` Waypoint5 string `csv:"waypoint5"` Waypoint6 string `csv:"waypoint6"` Waypoint7 string `csv:"waypoint7"` Waypoint8 string `csv:"waypoint8"` Waypoint9 string `csv:"waypoint9"` // WanderingMonsterPopulateChance is the percent chance (from 0 to 100) to spawn a wandering monster. // See wanderingmmon.txt for a list of possible monsters to spawn. WanderingMonsterPopulateChance int `csv:"wanderingMonsterPopulateChance"` // WanderingMonsterRegionTotal is the maximum number of wandering monsters allowed at once. WanderingMonsterRegionTotal int `csv:"wanderingMonsterRegionTotal"` // WanderingPopulateRandomChance is a secondary percent chance (from 0 to #) to determine whether to attempt populating with monsters. // Only fails if the random chance selects 0. WanderingPopulateRandomChance int `csv:"wanderingPopulateRandomChance"` }
ActInfoData represents the data from the "actinfo.txt" file.
type ArmorComponent ¶
type ArmorComponent int
ArmorComponent represents the character's graphics and animations for different components when wearing armor.
const ( ArmorComponentLight ArmorComponent = iota ArmorComponentMedium ArmorComponentHeavy )
type ArmorData ¶
type ArmorData struct { MinAc int // The minimum amount of Defense that an armor item type can have. MaxAc int // The maximum amount of Defense that an armor item type can have. Block int // Controls the block percent chance that the item provides (out of 100, but caps at 75). RArm int // Controls the character's graphics and animations for the Right Arm component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy". LArm int // Controls the character's graphics and animations for the Left Arm component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy". Torso int // Controls the character's graphics and animations for the Torso component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy". Legs int // Controls the character's graphics and animations for the Legs component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy". RSPad int // Controls the character's graphics and animations for the Right Shoulder Pad component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy". LSPad int // Controls the character's graphics and animations for the Left Shoulder Pad component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy". }
ArmorData represents the additional data fields exclusive to armor type items.
type AutoMagicData ¶
type AutoMagicData struct { Name string `csv:"Name"` // Defines the item affix name. Version int `csv:"version"` // Defines which game version to use this item affix (<100 = Classic mode | 100 = Expansion mode). Spawnable bool `csv:"spawnable"` // Boolean field. If equals 1, then this item affix is used as part of the game's randomizer for assigning item modifiers when an item spawns. If equals 0, then this item affix is never used. Rare bool `csv:"rare"` // Boolean field. If equals 1, then this item affix can be used when randomly assigning item modifiers when a rare item spawns. If equals 0, then this item affix is not used for rare items. Level int `csv:"level"` // The minimum item level required for this item affix to spawn on the item. If the item level is below this value, then the item affix will not spawn on the item. MaxLevel int `csv:"maxlevel"` // The maximum item level required for this item affix to spawn on the item. If the item level is above this value, then the item affix will not spawn on the item. LevelReq int `csv:"levelreq"` // The minimum character level required to equip an item that has this item affix. ClassSpecific string `csv:"classspecific"` // Controls if this item affix should only be used for class-specific items. Class string `csv:"class"` // Controls which character class is required for the class-specific level requirement "classlevelreq" field. ClassLevelReq int `csv:"classlevelreq"` // The minimum character level required for a specific class in order to equip an item that has this item affix. Frequency int `csv:"frequency"` // Controls the probability that the affix appears on the item. Group int `csv:"group"` // Assigns an item affix to a specific group number. ModCode1 string `csv:"mod1code"` // Controls the item properties for the item affix (Uses the "code" field from Properties.txt). ModCode2 string `csv:"mod2code"` // Controls the item properties for the item affix (Uses the "code" field from Properties.txt). ModCode3 string `csv:"mod3code"` // Controls the item properties for the item affix (Uses the "code" field from Properties.txt). ModParam1 int `csv:"mod1param"` // The "parameter" value associated with the related property (mod#code). Usage depends on the property function (See the "func" field on Properties.txt). ModParam2 int `csv:"mod2param"` // The "parameter" value associated with the related property (mod#code). Usage depends on the property function (See the "func" field on Properties.txt). ModParam3 int `csv:"mod3param"` // The "parameter" value associated with the related property (mod#code). Usage depends on the property function (See the "func" field on Properties.txt). ModMin1 int `csv:"mod1min"` // The "min" value to assign to the listed related (mod#code). Usage depends on the property function (See the "func" field on Properties.txt). ModMin2 int `csv:"mod2min"` // The "min" value to assign to the listed related (mod#code). Usage depends on the property function (See the "func" field on Properties.txt). ModMin3 int `csv:"mod3min"` // The "min" value to assign to the listed related (mod#code). Usage depends on the property function (See the "func" field on Properties.txt). ModMaxe1 int `csv:"mod1max"` // The "max" value to assign to the listed related (mod#code). Usage depends on the property function (See the "func" field on Properties.txt). ModMaxe2 int `csv:"mod2max"` // The "max" value to assign to the listed related (mod#code). Usage depends on the property function (See the "func" field on Properties.txt). ModMaxe3 int `csv:"mod3max"` // The "max" value to assign to the listed related (mod#code). Usage depends on the property function (See the "func" field on Properties.txt). TransformColor string `csv:"transformcolor"` // Controls the color change of the item after spawning with this item affix. ITypeCode1 string `csv:"itype1"` // Controls what Item Types are allowed to spawn with this item affix. ITypeCode2 string `csv:"itype2"` // Controls what Item Types are allowed to spawn with this item affix. ITypeCode3 string `csv:"itype3"` // Controls what Item Types are allowed to spawn with this item affix. ITypeCode4 string `csv:"itype4"` // Controls what Item Types are allowed to spawn with this item affix. ITypeCode5 string `csv:"itype5"` // Controls what Item Types are allowed to spawn with this item affix. ITypeCode6 string `csv:"itype6"` // Controls what Item Types are allowed to spawn with this item affix. ITypeCode7 string `csv:"itype7"` // Controls what Item Types are allowed to spawn with this item affix. ETypeCode1 string `csv:"etype1,"` // Controls what Item Types are forbidden to spawn with this item affix. ETypeCode2 string `csv:"etype2,"` // Controls what Item Types are forbidden to spawn with this item affix. ETypeCode3 string `csv:"etype3,"` // Controls what Item Types are forbidden to spawn with this item affix. ETypeCode4 string `csv:"etype4,"` // Controls what Item Types are forbidden to spawn with this item affix. ETypeCode5 string `csv:"etype5,"` // Controls what Item Types are forbidden to spawn with this item affix. Multiply int `csv:"multiply"` // Multiplicative modifier for the item's buy and sell costs, based on the item affix (Calculated in 1024ths for buy cost and 4096ths for sell cost). Add int `csv:"add"` // Flat integer modification to the item's buy and sell costs, based on the item affix. }
AutoMagicData represents item affixes (groups of item modifiers) that are automatically applied to items, regardless of their quality type.
type AutoMapEntry ¶
type AutoMapEntry struct { LevelName LevelName `csv:"LevelName" lua:"LevelName"` // Act number and name of the level type TileName TileName `csv:"TileName" lua:"TileName"` // Orientation of the tile on the Automap (string codes) Style int `csv:"Style" lua:"Style"` // Group numeric ID for the range of cells with the same style StartSequence int `csv:"StartSequence" lua:"StartSequence"` // Start index value for valid "Cel#" field on the Automap EndSequence int `csv:"EndSequence" lua:"EndSequence"` // End index value for valid "Cel#" field on the Automap Cel1 int `csv:"Cel1" lua:"Cel1"` // Unique image frames from MaxiMap.dc6 for Automap display Cel2 int `csv:"Cel2" lua:"Cel2"` // Unique image frames from MaxiMap.dc6 for Automap display Cel3 int `csv:"Cel3" lua:"Cel3"` // Unique image frames from MaxiMap.dc6 for Automap display Cel4 int `csv:"Cel4" lua:"Cel4"` // Unique image frames from MaxiMap.dc6 for Automap display }
type AutomagicColor ¶
type AutomagicColor string // represents the color change of the item after spawning with this item affix.
const ( AutomagicColorNone AutomagicColor = "" // represents no color change. AutomagicColorWhite AutomagicColor = "whit" // represents white color. AutomagicColorLightGrey AutomagicColor = "lgry" // represents light grey color. AutomagicColorDarkGrey AutomagicColor = "dgry" // represents dark grey color. AutomagicColorBlack AutomagicColor = "blac" // represents black color. AutomagicColorLightBlue AutomagicColor = "lblu" // represents light blue color. AutomagicColorDarkBlue AutomagicColor = "dblu" // represents dark blue color. AutomagicColorCrystalBlue AutomagicColor = "cblu" // represents crystal blue color. AutomagicColorLightRed AutomagicColor = "lred" // represents light red color. AutomagicColorDarkRed AutomagicColor = "dred" // represents dark red color. AutomagicColorCrystalRed AutomagicColor = "cred" // represents crystal red color. AutomagicColorLightGreen AutomagicColor = "lgrn" // represents light green color. AutomagicColorDarkGreen AutomagicColor = "dgrn" // represents dark green color. AutomagicColorCrystalGreen AutomagicColor = "cgrn" // represents crystal green color. AutomagicColorLightYellow AutomagicColor = "lyel" // represents light yellow color. AutomagicColorDarkYellow AutomagicColor = "dyel" // represents dark yellow color. AutomagicColorLightGold AutomagicColor = "lgld" // represents light gold color. AutomagicColorDarkGold AutomagicColor = "dgld" // represents dark gold color. AutomagicColorLightPurple AutomagicColor = "lpur" // represents light purple color. AutomagicColorDarkPurple AutomagicColor = "dpur" // represents dark purple color. AutomagicColorOrange AutomagicColor = "oran" // represents orange color. AutomagicColorBrightWhite AutomagicColor = "bwht" // represents bright white color. )
type BeltData ¶
type BeltData struct { Name string `csv:"name" lua:"name"` // Reference field to define the belt type NumBoxes int `csv:"numboxes" lua:"numboxes"` // Number of item slots in the belt Box1Left int `csv:"box1left" lua:"box1left"` // Belt slot 1 left side coordinate (for Server verification) Box2Left int `csv:"box2left" lua:"box2left"` // Belt slot 2 left side coordinate (for Server verification) Box3Left int `csv:"box3left" lua:"box3left"` // Belt slot 3 left side coordinate (for Server verification) Box4Left int `csv:"box4left" lua:"box4left"` // Belt slot 4 left side coordinate (for Server verification) Box5Left int `csv:"box5left" lua:"box5left"` // Belt slot 5 left side coordinate (for Server verification) Box6Left int `csv:"box6left" lua:"box6left"` // Belt slot 6 left side coordinate (for Server verification) Box7Left int `csv:"box7left" lua:"box7left"` // Belt slot 7 left side coordinate (for Server verification) Box8Left int `csv:"box8left" lua:"box8left"` // Belt slot 8 left side coordinate (for Server verification) Box9Left int `csv:"box9left" lua:"box9left"` // Belt slot 9 left side coordinate (for Server verification) Box10Left int `csv:"box10left" lua:"box10left"` // Belt slot 10 left side coordinate (for Server verification) Box11Left int `csv:"box11left" lua:"box11left"` // Belt slot 11 left side coordinate (for Server verification) Box12Left int `csv:"box12left" lua:"box12left"` // Belt slot 12 left side coordinate (for Server verification) Box13Left int `csv:"box13left" lua:"box13left"` // Belt slot 13 left side coordinate (for Server verification) Box14Left int `csv:"box14left" lua:"box14left"` // Belt slot 14 left side coordinate (for Server verification) Box15Left int `csv:"box15left" lua:"box15left"` // Belt slot 15 left side coordinate (for Server verification) Box16Left int `csv:"box16left" lua:"box16left"` // Belt slot 16 left side coordinate (for Server verification) Box1Right int `csv:"box1right" lua:"box1right"` // Belt slot 1 right side coordinate (for Server verification) Box2Right int `csv:"box2right" lua:"box2right"` // Belt slot 2 right side coordinate (for Server verification) Box3Right int `csv:"box3right" lua:"box3right"` // Belt slot 3 right side coordinate (for Server verification) Box4Right int `csv:"box4right" lua:"box4right"` // Belt slot 4 right side coordinate (for Server verification) Box5Right int `csv:"box5right" lua:"box5right"` // Belt slot 5 right side coordinate (for Server verification) Box6Right int `csv:"box6right" lua:"box6right"` // Belt slot 6 right side coordinate (for Server verification) Box7Right int `csv:"box7right" lua:"box7right"` // Belt slot 7 right side coordinate (for Server verification) Box8Right int `csv:"box8right" lua:"box8right"` // Belt slot 8 right side coordinate (for Server verification) Box9Right int `csv:"box9right" lua:"box9right"` // Belt slot 9 right side coordinate (for Server verification) Box10Right int `csv:"box10right" lua:"box10right"` // Belt slot 10 right side coordinate (for Server verification) Box11Right int `csv:"box11right" lua:"box11right"` // Belt slot 11 right side coordinate (for Server verification) Box12Right int `csv:"box12right" lua:"box12right"` // Belt slot 12 right side coordinate (for Server verification) Box13Right int `csv:"box13right" lua:"box13right"` // Belt slot 13 right side coordinate (for Server verification) Box14Right int `csv:"box14right" lua:"box14right"` // Belt slot 14 right side coordinate (for Server verification) Box15Right int `csv:"box15right" lua:"box15right"` // Belt slot 15 right side coordinate (for Server verification) Box16Right int `csv:"box16right" lua:"box16right"` // Belt slot 16 right side coordinate (for Server verification) Box1Top int `csv:"box1top" lua:"box1top"` // Belt slot 1 top coordinate (for Server verification) Box2Top int `csv:"box2top" lua:"box2top"` // Belt slot 2 top coordinate (for Server verification) Box3Top int `csv:"box3top" lua:"box3top"` // Belt slot 3 top coordinate (for Server verification) Box4Top int `csv:"box4top" lua:"box4top"` // Belt slot 4 top coordinate (for Server verification) Box5Top int `csv:"box5top" lua:"box5top"` // Belt slot 5 top coordinate (for Server verification) Box6Top int `csv:"box6top" lua:"box6top"` // Belt slot 6 top coordinate (for Server verification) Box7Top int `csv:"box7top" lua:"box7top"` // Belt slot 7 top coordinate (for Server verification) Box8Top int `csv:"box8top" lua:"box8top"` // Belt slot 8 top coordinate (for Server verification) Box9Top int `csv:"box9top" lua:"box9top"` // Belt slot 9 top coordinate (for Server verification) Box10Top int `csv:"box10top" lua:"box10top"` // Belt slot 10 top coordinate (for Server verification) Box11Top int `csv:"box11top" lua:"box11top"` // Belt slot 11 top coordinate (for Server verification) Box12Top int `csv:"box12top" lua:"box12top"` // Belt slot 12 top coordinate (for Server verification) Box13Top int `csv:"box13top" lua:"box13top"` // Belt slot 13 top coordinate (for Server verification) Box14Top int `csv:"box14top" lua:"box14top"` // Belt slot 14 top coordinate (for Server verification) Box15Top int `csv:"box15top" lua:"box15top"` // Belt slot 15 top coordinate (for Server verification) Box16Top int `csv:"box16top" lua:"box16top"` // Belt slot 16 top coordinate (for Server verification) Box1Bottom int `csv:"box1bottom" lua:"box1bottom"` // Belt slot 1 bottom coordinate (for Server verification) Box2Bottom int `csv:"box2bottom" lua:"box2bottom"` // Belt slot 2 bottom coordinate (for Server verification) Box3Bottom int `csv:"box3bottom" lua:"box3bottom"` // Belt slot 3 bottom coordinate (for Server verification) Box4Bottom int `csv:"box4bottom" lua:"box4bottom"` // Belt slot 4 bottom coordinate (for Server verification) Box5Bottom int `csv:"box5bottom" lua:"box5bottom"` // Belt slot 5 bottom coordinate (for Server verification) Box6Bottom int `csv:"box6bottom" lua:"box6bottom"` // Belt slot 6 bottom coordinate (for Server verification) Box7Bottom int `csv:"box7bottom" lua:"box7bottom"` // Belt slot 7 bottom coordinate (for Server verification) Box8Bottom int `csv:"box8bottom" lua:"box8bottom"` // Belt slot 8 bottom coordinate (for Server verification) Box9Bottom int `csv:"box9bottom" lua:"box9bottom"` // Belt slot 9 bottom coordinate (for Server verification) Box10Bottom int `csv:"box10bottom" lua:"box10bottom"` // Belt slot 10 bottom coordinate (for Server verification) Box11Bottom int `csv:"box11bottom" lua:"box11bottom"` // Belt slot 11 bottom coordinate (for Server verification) Box12Bottom int `csv:"box12bottom" lua:"box12bottom"` // Belt slot 12 bottom coordinate (for Server verification) Box13Bottom int `csv:"box13bottom" lua:"box13bottom"` // Belt slot 13 bottom coordinate (for Server verification) Box14Bottom int `csv:"box14bottom" lua:"box14bottom"` // Belt slot 14 bottom coordinate (for Server verification) Box15Bottom int `csv:"box15bottom" lua:"box15bottom"` // Belt slot 15 bottom coordinate (for Server verification) Box16Bottom int `csv:"box16bottom" lua:"box16bottom"` // Belt slot 16 bottom coordinate (for Server verification) DefaultItemTypeCol1 string `csv:"defaultItemTypeCol1" lua:"defaultItemTypeCol1"` // Default item type used for the populate belt and auto-use functionality on the controller DefaultItemTypeCol2 string `csv:"defaultItemTypeCol2" lua:"defaultItemTypeCol2"` // Default item type used for the populate belt and auto-use functionality on the controller DefaultItemTypeCol3 string `csv:"defaultItemTypeCol3" lua:"defaultItemTypeCol3"` // Default item type used for the populate belt and auto-use functionality on the controller DefaultItemTypeCol4 string `csv:"defaultItemTypeCol4" lua:"defaultItemTypeCol4"` // Default item type used for the populate belt and auto-use functionality on the controller DefaultItemCodeCol1 string `csv:"defaultItemCodeCol1" lua:"defaultItemCodeCol1"` // Default item code used for the populate belt and auto-use functionality on the controller DefaultItemCodeCol2 string `csv:"defaultItemCodeCol2" lua:"defaultItemCodeCol2"` // Default item code used for the populate belt and auto-use functionality on the controller DefaultItemCodeCol3 string `csv:"defaultItemCodeCol3" lua:"defaultItemCodeCol3"` // Default item code used for the populate belt and auto-use functionality on the controller DefaultItemCodeCol4 string `csv:"defaultItemCodeCol4" lua:"defaultItemCodeCol4"` // Default item code used for the populate belt and auto-use functionality on the controller }
BeltData holds the statistics for belts and their various item slots
type Book ¶
type Book struct { Name string `csv:"Name"` // Reference field to define the book ScrollSpellCode string `csv:"ScrollSpellCode"` // Item's code for the related scroll item BookSpellCode string `csv:"BookSpellCode"` // Item's code for the book item PSpell int `csv:"pSpell"` // Item spell function to use when using the book (See Code-Description mapping) SpellIcon int `csv:"SpellIcon"` // Numeric index to pick the DC6 file for the mouse cursor when using the scroll or book ScrollSkill string `csv:"ScrollSkill"` // Skill to use for the scroll item (uses the "skill" field from skills.txt) BookSkill string `csv:"BookSkill"` // Skill to use for the book item (uses the "skill" field from skills.txt) BaseCost int `csv:"BaseCost"` // Starting gold cost to buy the book from an NPC CostPerCharge int `csv:"CostPerCharge"` // Additional gold cost added with the book's "BaseCost" value, based on how many charges the book has }
type CharStats ¶
type CharStats struct { Class string `csv:"class"` Strength int `csv:"str"` Dexterity int `csv:"dex"` Intelligence int `csv:"int"` Vitality int `csv:"vit"` Total int `csv:"tot"` Stamina int `csv:"stamina"` HPAdd int `csv:"hpadd"` PercentStrength int `csv:"PercentStr"` PercentDexterity int `csv:"PercentDex"` PercentIntelligence int `csv:"PercentInt"` PercentVitality int `csv:"PercentVit"` ManaRegen int `csv:"ManaRegen"` ToHitFactor int `csv:"ToHitFactor"` WalkVelocity int `csv:"WalkVelocity"` RunVelocity int `csv:"RunVelocity"` RunDrain int `csv:"RunDrain"` Comment string `csv:"Comment"` LifePerLevel int `csv:"LifePerLevel"` StaminaPerLevel int `csv:"StaminaPerLevel"` ManaPerLevel int `csv:"ManaPerLevel"` LifePerVitality int `csv:"LifePerVitality"` StaminaPerVitality int `csv:"StaminaPerVitality"` ManaPerMagic int `csv:"ManaPerMagic"` StatPerLevel int `csv:"StatPerLevel"` Walk int `csv:"#walk"` Run int `csv:"#run"` Swing int `csv:"#swing"` Spell int `csv:"#spell"` GetHit int `csv:"#gethit"` Bow int `csv:"#bow"` BlockFactor int `csv:"BlockFactor"` StartSkill string `csv:"StartSkill"` Skill1 string `csv:"Skill 1"` Skill2 string `csv:"Skill 2"` Skill3 string `csv:"Skill 3"` Skill4 string `csv:"Skill 4"` Skill5 string `csv:"Skill 5"` Skill6 string `csv:"Skill 6"` Skill7 string `csv:"Skill 7"` Skill8 string `csv:"Skill 8"` Skill9 string `csv:"Skill 9"` Skill10 string `csv:"Skill 10"` StrAllSkills string `csv:"StrAllSkills"` StrSkillTab1 string `csv:"StrSkillTab1"` StrSkillTab2 string `csv:"StrSkillTab2"` StrSkillTab3 string `csv:"StrSkillTab3"` StrClassOnly string `csv:"StrClassOnly"` BaseWClass string `csv:"baseWClass"` Item1 string `csv:"item1"` Item1Loc string `csv:"item1loc"` Item1Count string `csv:"item1count"` Item2 string `csv:"item2"` Item2Loc string `csv:"item2loc"` Item2Count string `csv:"item2count"` Item3 string `csv:"item3"` Item3Loc string `csv:"item3loc"` Item3Count string `csv:"item3count"` Item4 string `csv:"item4"` Item4Loc string `csv:"item4loc"` Item4Count string `csv:"item4count"` Item5 string `csv:"item5"` Item5Loc string `csv:"item5loc"` Item5Count string `csv:"item5count"` Item6 string `csv:"item6"` Item6Loc string `csv:"item6loc"` Item6Count string `csv:"item6count"` Item7 string `csv:"item7"` Item7Loc string `csv:"item7loc"` Item7Count string `csv:"item7count"` Item8 string `csv:"item8"` Item8Loc string `csv:"item8loc"` Item8Count string `csv:"item8count"` Item9 string `csv:"item9"` Item9Loc string `csv:"item9loc"` Item9Count string `csv:"item9count"` Item10 string `csv:"item10"` Item10Loc string `csv:"item10loc"` Item10Count string `csv:"item10count"` }
CharStats holds the starting stats for each of the classes
type CharacterClass ¶
type CharacterClass int
CharacterClass represents the character classes.
const ( CharacterClassNone CharacterClass = iota // None CharacterClassAmazon // Amazon CharacterClassBarbarian // Barbarian CharacterClassPaladin // Paladin CharacterClassNecromancer // Necromancer CharacterClassSorceress // Sorceress CharacterClassDruid // Druid CharacterClassAssassin // Assassin )
type ColorCode ¶
type ColorCode string
ColorCode represents the color codes for item color changes.
const ( ColorCodeNoColorChange ColorCode = "" // No color change ColorCodeWhite ColorCode = "whit" // White ColorCodeLightGrey ColorCode = "lgry" // Light Grey ColorCodeDarkGrey ColorCode = "dgry" // Dark Grey ColorCodeBlack ColorCode = "blac" // Black ColorCodeLightBlue ColorCode = "lblu" // Light Blue ColorCodeDarkBlue ColorCode = "dblu" // Dark Blue ColorCodeCrystalBlue ColorCode = "cblu" // Crystal Blue ColorCodeLightRed ColorCode = "lred" // Light Red ColorCodeDarkRed ColorCode = "dred" // Dark Red ColorCodeCrystalRed ColorCode = "cred" // Crystal Red ColorCodeLightGreen ColorCode = "lgrn" // Light Green ColorCodeDarkGreen ColorCode = "dgrn" // Dark Green ColorCodeCrystalGreen ColorCode = "cgrn" // Crystal Green ColorCodeLightYellow ColorCode = "lyel" // Light Yellow ColorCodeDarkYellow ColorCode = "dyel" // Dark Yellow ColorCodeLightGold ColorCode = "lgld" // Light Gold ColorCodeDarkGold ColorCode = "dgld" // Dark Gold ColorCodeLightPurple ColorCode = "lpur" // Light Purple ColorCodeDarkPurple ColorCode = "dpur" // Dark Purple ColorCodeOrange ColorCode = "oran" // Orange ColorCodeBrightWhite ColorCode = "bwht" // Bright White )
type Component ¶
type Component int
Component represents the layers of player animation when the item is equipped.
const ( ComponentHead Component = iota ComponentTorso ComponentLegs ComponentRightArm ComponentLeftArm ComponentRightHand ComponentLeftHand ComponentShield ComponentSpecial1 ComponentSpecial2 ComponentSpecial3 ComponentSpecial4 ComponentSpecial5 ComponentSpecial6 ComponentSpecial7 ComponentSpecial8 ComponentNone )
type CubeItemType ¶
type CubeItemType string
CubeItemType represents the input and output item types
const ( ItemTypeQuantity CubeItemType = "qty=#" ItemTypeLow CubeItemType = "low" ItemTypeNormal CubeItemType = "nor" ItemTypeHigh CubeItemType = "hiq" ItemTypeMagic CubeItemType = "mag" ItemTypeSet CubeItemType = "set" ItemTypeRare CubeItemType = "rar" ItemTypeUnique CubeItemType = "uni" ItemTypeCrafted CubeItemType = "crf" ItemTypeTempered CubeItemType = "tmp" ItemTypeNoSockets CubeItemType = "nos" ItemTypeSockets CubeItemType = "sock=#" ItemTypeNotEthereal CubeItemType = "noe" ItemTypeEthereal CubeItemType = "eth" ItemTypeUpgradable CubeItemType = "upg" ItemTypeBasic CubeItemType = "bas" ItemTypeExceptional CubeItemType = "exc" ItemTypeElite CubeItemType = "eli" ItemTypeNotRuneWord CubeItemType = "nru" )
type CubeRecipe ¶
type CubeRecipe struct { Description string `csv:"description"` // This is a reference field to define the cube recipe Enabled bool `csv:"enabled"` // Boolean field. If equals 1, then the recipe can be used in-game. If equals 0, then the recipe cannot be used in-game. FirstLadderSeason int `csv:"ladder"` // Integer field. The first ladder season this cube recipe can be made on (inclusive). If blank or 0 then it is available in non-ladder. MinDifficulty int `csv:"min diff"` // The minimum game difficulty to use the recipe (0 = All Game Difficulties | 1 = Nightmare and Hell Difficulty only | 2 = Hell Difficulty only) Version int `csv:"version"` // Defines which game version to use this recipe (0 = Classic mode | 100 = Expansion mode) Op OpCode `csv:"op"` // Uses a function as an additional input requirement for the recipe Param string `csv:"param"` // Parameters for the "op" function Value string `csv:"value"` // Value for the "op" function Class string `csv:"class"` // Defines the recipe to be only usable by a defined class NumInputs int `csv:"numinputs"` // Controls the number of items that need to be inside the cube for the recipe Input1 string `csv:"input 1"` // Controls what items are required for the recipe. Uses the item’s unique code. Users can also add input parameters by adding a comma “,” to the input and using a code. Input2 string `csv:"input 2"` // Controls what items are required for the recipe. Uses the item’s unique code. Users can also add input parameters by adding a comma “,” to the input and using a code. Input3 string `csv:"input 3"` // Controls what items are required for the recipe. Uses the item’s unique code. Users can also add input parameters by adding a comma “,” to the input and using a code. Input4 string `csv:"input 4"` // Controls what items are required for the recipe. Uses the item’s unique code. Users can also add input parameters by adding a comma “,” to the input and using a code. Input5 string `csv:"input 5"` // Controls what items are required for the recipe. Uses the item’s unique code. Users can also add input parameters by adding a comma “,” to the input and using a code. Input6 string `csv:"input 6"` // Controls what items are required for the recipe. Uses the item’s unique code. Users can also add input parameters by adding a comma “,” to the input and using a code. Input7 string `csv:"input 7"` // Controls what items are required for the recipe. Uses the item’s unique code. Users can also add input parameters by adding a comma “,” to the input and using a code. Output OutputCode `csv:"output"` // Controls the first output item. Uses the item’s unique code. Users can also add output parameters by adding a comma “,” to the output and using a code. OutputLevel int `csv:"lvl"` // Forces the output item level to be a specific level. If this field is used, then ignore the “plvl” and “ilvl” fields. OutputPlayerLvl float64 `csv:"plvl"` // This is a numeric ratio that gets multiplied with the current player’s level, to add to the output item’s level requirement OutputInputLvl float64 `csv:"ilvl"` // This is a numeric ratio that gets multiplied with “input 1” item’s level, to add to the output item’s level requirement OutputMod1 string `csv:"mod 1"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputModChance1 float64 `csv:"mod 1 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputModParam1 string `csv:"mod 1 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputModMin1 float64 `csv:"mod 1 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputModMax1 float64 `csv:"mod 1 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputMod2 string `csv:"mod 2"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputModChance2 float64 `csv:"mod 2 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputModParam2 string `csv:"mod 2 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputModMin2 float64 `csv:"mod 2 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputModMax2 float64 `csv:"mod 2 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputMod3 string `csv:"mod 3"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputModChance3 float64 `csv:"mod 3 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputModParam3 string `csv:"mod 3 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputModMin3 float64 `csv:"mod 3 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputModMax3 float64 `csv:"mod 3 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputMod4 string `csv:"mod 4"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputModChance4 float64 `csv:"mod 4 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputModParam4 string `csv:"mod 4 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputModMin4 float64 `csv:"mod 4 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputModMax4 float64 `csv:"mod 4 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputMod5 string `csv:"mod 5"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputModChance5 float64 `csv:"mod 5 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputModParam5 string `csv:"mod 5 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputModMin5 float64 `csv:"mod 5 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputModMax5 float64 `csv:"mod 5 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputB OutputCode `csv:"output b"` // Controls the second output item. Uses the item’s unique code. Users can also add output parameters by adding a comma “,” to the output and using a code. (See “output” for more details) OutputBLevel int `csv:"b lvl"` // Forces the output item level to be a specific level. If this field is used, then ignore the “plvl” and “ilvl” fields. OutputBPLvl float64 `csv:"b plvl"` // This is a numeric ratio that gets multiplied with the current player’s level, to add to the output item’s level requirement OutputBILvl float64 `csv:"b ilvl"` // This is a numeric ratio that gets multiplied with “input 2” item’s level, to add to the output item’s level requirement OutputBMod1 string `csv:"b mod 1"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputBModChance1 float64 `csv:"b mod 1 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputBModParam1 string `csv:"b mod 1 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBModMin1 float64 `csv:"b mod 1 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBModMax1 float64 `csv:"b mod 1 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBMod2 string `csv:"b mod 2"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputBModChance2 float64 `csv:"b mod 2 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputBModParam2 string `csv:"b mod 2 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBModMin2 float64 `csv:"b mod 2 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBModMax2 float64 `csv:"b mod 2 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBMod3 string `csv:"b mod 3"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputBModChance3 float64 `csv:"b mod 3 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputBModParam3 string `csv:"b mod 3 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBModMin3 float64 `csv:"b mod 3 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBModMax3 float64 `csv:"b mod 3 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBMod4 string `csv:"b mod 4"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputBModChance4 float64 `csv:"b mod 4 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputBModParam4 string `csv:"b mod 4 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBModMin4 float64 `csv:"b mod 4 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBModMax4 float64 `csv:"b mod 4 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBMod5 string `csv:"b mod 5"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputBModChance5 float64 `csv:"b mod 5 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputBModParam5 string `csv:"b mod 5 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBModMin5 float64 `csv:"b mod 5 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputBModMax5 float64 `csv:"b mod 5 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputC OutputCode `csv:"output c"` // Controls the third output item. Uses the item’s unique code. Users can also add output parameters by adding a comma “,” to the output and using a code. (See “output” for more details) OutputCLevel int `csv:"c lvl"` // Forces the output item level to be a specific level. If this field is used, then ignore the “plvl” and “ilvl” fields. OutputCPLvl float64 `csv:"c plvl"` // This is a numeric ratio that gets multiplied with the current player’s level, to add to the output item’s level requirement OutputCILvl float64 `csv:"c ilvl"` // This is a numeric ratio that gets multiplied with “input 3” item’s level, to add to the output item’s level requirement OutputCMod1 string `csv:"c mod 1"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputCModChance1 float64 `csv:"c mod 1 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputCModParam1 string `csv:"c mod 1 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCModMin1 float64 `csv:"c mod 1 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCModMax1 float64 `csv:"c mod 1 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCMod2 string `csv:"c mod 2"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputCModChance2 float64 `csv:"c mod 2 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputCModParam2 string `csv:"c mod 2 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCModMin2 float64 `csv:"c mod 2 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCModMax2 float64 `csv:"c mod 2 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCMod3 string `csv:"c mod 3"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputCModChance3 float64 `csv:"c mod 3 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputCModParam3 string `csv:"c mod 3 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCModMin3 float64 `csv:"c mod 3 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCModMax3 float64 `csv:"c mod 3 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCMod4 string `csv:"c mod 4"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputCModChance4 float64 `csv:"c mod 4 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputCModParam4 string `csv:"c mod 4 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCModMin4 float64 `csv:"c mod 4 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCModMax4 float64 `csv:"c mod 4 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCMod5 string `csv:"c mod 5"` // Controls the output item properties (Uses the “code” field from Properties.txt) OutputCModChance5 float64 `csv:"c mod 5 chance"` // The percent chance that the property will be assigned. If this equals 0, then the ItemProperty will always be assigned. OutputCModParam5 string `csv:"c mod 5 param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCModMin5 float64 `csv:"c mod 5 min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) OutputCModMax5 float64 `csv:"c mod 5 max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) }
CubeRecipe holds the recipes for the Horadric Cube
type DifficultyLevels ¶
type DifficultyLevels struct { // Data Fields: Name string // This is a reference field to define the difficulty mode. ResistPenalty int // Defines the baseline starting point for a player character’s resistances for Expansion mode. ResistPenaltyNonExpansion int // Defines the baseline starting point for a player character’s resistances for Non-Expansion mode. DeathExpPenalty int // Modifies the percentage of current level experience lost when a player character dies. MonsterSkillBonus int // Adds additional skill levels to skills used by monsters (defined from monstats.txt). MonsterFreezeDivisor int // Divisor that affects all Freeze Length values on monsters. The attempted Freeze Length value is divided by this divisor to determine the actual Freeze Length. MonsterColdDivisor int // Divisor that affects all Cold Length values on monsters. The attempted Cold Length value is divided by this divisor to determine the actual Cold Length. AiCurseDivisor int // Divisor that affects all durations of Curses on monsters. The attempted Curse duration is divided by this divisor to determine the actual Curse duration. LifeStealDivisor int // Divisor that affects the amount of Life Steal that player characters gain. The attempted Life Steal value is divided by this divisor to determine the actual Life Steal. ManaStealDivisor int // Divisor that affects the amount of Mana Steal that player characters gain. The attempted Mana Steal value is divided by this divisor to determine the actual Mana Steal. UniqueDamageBonus int // Percentage modifier for a Unique monster’s overall Damage and Attack Rating. This is applied after calculating the monster’s other modifications. ChampionDamageBonus int // Percentage modifier for a Champion monster’s overall Damage and Attack Rating. This is applied after calculating the monster’s other modifications. PlayerDamagePercentVSPlayer int // Percentage modifier for the total damage a player deals to another player. PlayerDamagePercentVSMercenary int // Percentage modifier for the total damage a player deals to another player’s mercenary. PlayerDamagePercentVSPrimeEvil int // Percentage modifier for the total damage a player deals to a Prime Evil boss. PlayerHitReactBufferVSPlayer int // The frame length for the amount of time a player cannot be placed into another hit react from a player (25 frames = 1 second). PlayerHitReactBufferVSMonster int // The frame length for the amount of time a player cannot be placed into another hit react from a monster (25 frames = 1 second). MercenaryDamagePercentVSPlayer int // Percentage modifier for the total damage a player’s mercenary deals to another player. MercenaryDamagePercentVSMercenary int // Percentage modifier for the total damage a player’s mercenary deals to another player’s mercenary. MercenaryDamagePercentVSBoss int // Percentage modifier for the total damage a player’s mercenary deals to a boss monster. MercenaryMaxStunLength int // The frame length for the maximum stun length allowed on a player’s mercenary (25 Frames = 1 second). PrimeEvilDamagePercentVSPlayer int // Percentage modifier applied to the total damage a Prime Evil boss deals to a player. PrimeEvilDamagePercentVSMercenary int // Percentage modifier for the total damage a Prime Evil boss deals to a player’s mercenary. PrimeEvilDamagePercentVSPet int // Percentage modifier for the total damage a Prime Evil boss deals to a player’s pet. PetDamagePercentVSPlayer int // Percentage modifier for the total damage a player’s pet deals to another player. MonsterCEDamagePercent int // Percentage modifier that affects how much damage is dealt to a player by a Monster’s version of Corpse Explosion. For example, when certain monsters die and explode on death. MonsterFireEnchantExplosionDamagePercent int // Percentage modifier that affects how much damage is dealt to a player by a Monster’s Fire Enchant explosion. The Fire Enchant death explosion uses the same Corpse Explosion functionality and this value is applied after the “MonsterCEDamagePercent” value. StaticFieldMin int // Percentage modifier for capping the amount of current Life damage dealt to monsters by the Sorceress Static Field skill. This field only affects games in Expansion mode. GambleRare int // The odds to obtain a Rare item from gambling. The game rolls a random number between 0 to 100000. If that rolled number is less than this value, then the gambled item will be a Rare item. GambleSet int // The odds to obtain a Set item from gambling. The game rolls a random number between 0 to 100000. If that rolled number is less than this value, then the gambled item will be a Set item. GambleUnique int // The odds to obtain a Unique item from gambling. The game rolls a random number between 0 to 100000. If that rolled number is less than this value, then the gambled item will be a Unique item. GambleUber int // The odds to make the gambled item be an Exceptional Quality item. The game rolls a random number between 0 to 10000. This rolled number is then compared to the following formula: ([Item Level] - [Base Item Level]) * [“GambleUber”] + 1. If the rolled number is less than this value, then the item becomes an Exceptional Quality item, and the game will roll for upgrading it to Elite Quality (See “GambleUltra”). GambleUltra int // The odds to make the gambled item be an Elite Quality item. The game rolls a random number between 0 to 10000. This rolled number is then compared to the following formula: ([Item Level] - [Base Item Level]) * [“GambleUltra”] + 1. If the rolled number is less than this value, then the item is upgraded to an Elite Quality item. This only happens if the item successfully rolled for Exceptional Quality. }
DifficultyLevels represents the global parameters for game rules between each difficulty mode
type Difficultylevel ¶
type Difficultylevel struct { Name string `csv:"Name"` // The difficulty mode name. ResistPenalty int `csv:"ResistPenalty"` // Baseline starting point for player character's resistances for Expansion mode. ResistPenaltyNonExpansion int `csv:"ResistPenaltyNonExpansion"` // Baseline starting point for player character's resistances for Non-Expansion mode. DeathExpPenalty float64 `csv:"DeathExpPenalty"` // Modifies the percentage of current level experience lost when a player character dies. MonsterSkillBonus int `csv:"MonsterSkillBonus"` // Additional skill levels added to skills used by monsters (defined from monstats.txt). MonsterFreezeDivisor int `csv:"MonsterFreezeDivisor"` // Divisor affecting all Freeze Length values on monsters. MonsterColdDivisor int `csv:"MonsterColdDivisor"` // Divisor affecting all Cold Length values on monsters. AiCurseDivisor int `csv:"AiCurseDivisor"` // Divisor affecting durations of Curses on monsters. LifeStealDivisor int `csv:"LifeStealDivisor"` // Divisor affecting the amount of Life Steal that player characters gain. ManaStealDivisor int `csv:"ManaStealDivisor"` // Divisor affecting the amount of Mana Steal that player characters gain. UniqueDamageBonus float64 `csv:"UniqueDamageBonus"` // Percentage modifier for a Unique monster's overall Damage and Attack Rating. ChampionDamageBonus float64 `csv:"ChampionDamageBonus"` // Percentage modifier for a Champion monster's overall Damage and Attack Rating. PlayerDamagePercentVSPlayer float64 `csv:"PlayerDamagePercentVSPlayer"` // Percentage modifier for the total damage a player deals to another player. PlayerDamagePercentVSMercenary float64 `csv:"PlayerDamagePercentVSMercenary"` // Percentage modifier for the total damage a player deals to another player's mercenary. PlayerDamagePercentVSPrimeEvil float64 `csv:"PlayerDamagePercentVSPrimeEvil"` // Percentage modifier for the total damage a player deals to a Prime Evil boss. PlayerHitReactBufferVSPlayer int `csv:"PlayerHitReactBufferVSPlayer"` // Frame length for the amount of time a player cannot be placed into another hit react from a player. PlayerHitReactBufferVSMonster int `csv:"PlayerHitReactBufferVSMonster"` // Frame length for the amount of time a player cannot be placed into another hit react from a monster. MercenaryDamagePercentVSPlayer float64 `csv:"MercenaryDamagePercentVSPlayer"` // Percentage modifier for the total damage a player's mercenary deals to another player. MercenaryDamagePercentVSMercenary float64 `csv:"MercenaryDamagePercentVSMercenary"` // Percentage modifier for the total damage a player's mercenary deals to another player's mercenary. MercenaryDamagePercentVSBoss float64 `csv:"MercenaryDamagePercentVSBoss"` // Percentage modifier for the total damage a player's mercenary deals to a boss monster. MercenaryMaxStunLength int `csv:"MercenaryMaxStunLength"` // Frame length for the maximum stun length allowed on a player's mercenary. PrimeEvilDamagePercentVSPlayer float64 `csv:"PrimeEvilDamagePercentVSPlayer"` // Percentage modifier applied to the total damage a Prime Evil boss deals to a player. PrimeEvilDamagePercentVSMercenary float64 `csv:"PrimeEvilDamagePercentVSMercenary"` // Percentage modifier for the total damage a Prime Evil boss deals to a player's mercenary. PrimeEvilDamagePercentVSPet float64 `csv:"PrimeEvilDamagePercentVSPet"` // Percentage modifier for the total damage a Prime Evil boss deals to a player's pet. PetDamagePercentVSPlayer float64 `csv:"PetDamagePercentVSPlayer"` // Percentage modifier for the total damage a player's pet deals to another player. MonsterCEDamagePercent float64 `csv:"MonsterCEDamagePercent"` // Percentage modifier that affects how much damage is dealt to a player by a Monster's version of Corpse Explosion. MonsterFireEnchantExplosionDamagePercent float64 `csv:"MonsterFireEnchantExplosionDamagePercent"` // Percentage modifier that affects how much damage is dealt to a player by a Monster's Fire Enchant explosion. StaticFieldMin float64 `csv:"StaticFieldMin"` // Percentage modifier for capping the amount of current Life damage dealt to monsters by the Sorceress Static Field skill. GambleRare int `csv:"GambleRare"` // Odds to obtain a Rare item from gambling. GambleSet int `csv:"GambleSet"` // Odds to obtain a Set item from gambling. GambleUnique int `csv:"GambleUnique"` // Odds to obtain a Unique item from gambling. GambleUber int `csv:"GambleUber"` // Odds to make the gambled item be an Exceptional Quality item. GambleUltra int `csv:"GambleUltra"` // Odds to make the gambled item be an Elite Quality item. }
Difficultylevel represents the data structure for the difficultylevels.txt file.
type DrlgType ¶
type DrlgType = DynamicRandomLevelGenerationType
type DynamicRandomLevelGenerationType ¶
type DynamicRandomLevelGenerationType int
type EnvironmentPreset ¶
type EnvironmentPreset int
EnvironmentPreset represents the environment presets for default sound reverberation settings.
const ( Generic EnvironmentPreset = iota // 0 - Generic PaddedCell // 1 - Padded Cell Room // 2 - Room Bathroom // 3 - Bathroom Livingroom // 4 - Livingroom StoneRoom // 5 - Stone Room Auditorium // 6 - Auditorium ConcertHall // 7 - Concert Hall Cave // 8 - Cave Arena // 9 - Arena Hanger // 10 - Hanger CarpetedHallway // 11 - Carpeted Hallway Hallway // 12 - Hallway StoneCorridor // 13 - Stone Corridor Alley // 14 - Alley Forest // 15 - Forest City // 16 - City Mountains // 17 - Mountains Quarry // 18 - Quarry Plain // 19 - Plain ParkingLot // 20 - Parking Lot SewerPipe // 21 - Sewer Pipe Underwater // 22 - Underwater Drugged // 23 - Drugged Dizzy // 24 - Dizzy Psychotic // 25 - Psychotic ProgrammerTest // 26 - Programmer Test (A long distant echo) )
List of environment presets with their corresponding codes and descriptions.
func (EnvironmentPreset) String ¶
func (ep EnvironmentPreset) String() string
type ExperienceData ¶
type ExperienceData struct { //Level string `csv:"Level"` // This is a reference field to define the level Amazon int `csv:"Amazon"` // Controls the experience required for each level with the Amazon class Sorceress int `csv:"Sorceress"` // Controls the experience required for each level with the Sorceress class Necromancer int `csv:"Necromancer"` // Controls the experience required for each level with the Necromancer class Paladin int `csv:"Paladin"` // Controls the experience required for each level with the Paladin class Barbarian int `csv:"Barbarian"` // Controls the experience required for each level with the Barbarian class Druid int `csv:"Druid"` // Controls the experience required for each level with the Druid class Assassin int `csv:"Assassin"` // Controls the experience required for each level with the Assassin class ExpRatio int `csv:"ExpRatio"` // This multiplier affects the percentage of experienced earned, based on the level }
ExperienceData represents the data fields for experience required for each level by each class.
type FieldBitField ¶
type FieldBitField int
FieldBitField represents the bit fields for controlling different flags that can affect the item.
const ( FieldBitFieldMagicQuality FieldBitField = 1 << iota FieldBitFieldMetal FieldBitFieldSpellcaster FieldBitFieldSkillBased )
type GambleRecord ¶
type GambleRecord struct { Name string `csv:"name"` // Reference field to describe the Item Code string `csv:"code"` // Pointer to the "code" field from weapons.txt/armor.txt/misc.txt }
GambleRecord represents the data for each item type that appears as a possible option for the Gambling UI.
type GamblingOptions ¶
type GamblingOptions struct { // Data Fields: Name string // This is a reference field to describe the Item. Code string // This is a pointer to the “code” field from weapons.txt/armor.txt/misc.txt. }
GamblingOptions represents the Item Types that will appear as possible items to purchase in the Gambling UI.
type GemApplyType ¶
type GemApplyType int
GemApplyType represents the types of effects from a gem or rune when socketed into an item.
const ( GemApplyTypeWeapon GemApplyType = iota GemApplyTypeArmorHelmet GemApplyTypeShield )
type GemData ¶
type GemData struct { Name string `csv:"name"` // This is a reference field to define the gem/rune name Letter string `csv:"letter"` // Defines the string that appears in the item tooltip when a rune is socketed into an item Transform string `csv:"transform"` // Controls the color change of the item after being socketed by the gem/rune (Uses Color Codes from colors.txt) TransformCode int `csv:"transform_code"` // Defines the code for the color transformation (0 to 20) Code string `csv:"code"` // Defines the unique item code used to create the gem/rune // Weapon Modifiers when socketed into gemapplytype == 0 WeaponMod1Code string `csv:"weapon_mod1_code"` // Controls the item properties that the gem/rune provides when socketed into an item with a "gemapplytype" value that equals 0 (Uses the "code" field from Properties.txt) WeaponMod1Param string `csv:"weapon_mod1_param"` // The stat's "parameter" value associated with the listed property (WeaponMod1Code). Usage depends on the property function (See the "func" field on Properties.txt) WeaponMod1Min int `csv:"weapon_mod1_min"` // The stat's "min" value associated with the listed property (WeaponMod1Code). Usage depends on the property function (See the "func" field on Properties.txt) WeaponMod1Max int `csv:"weapon_mod1_max"` // The stat's "max" value to assign to the listed property (WeaponMod1Code). Usage depends on the property function (See the "func" field on Properties.txt) WeaponMod2Code string `csv:"weapon_mod2_code"` // Repeat for WeaponMod2 (2nd weapon modifier) WeaponMod2Param string `csv:"weapon_mod2_param"` WeaponMod2Min int `csv:"weapon_mod2_min"` WeaponMod2Max int `csv:"weapon_mod2_max"` WeaponMod3Code string `csv:"weapon_mod3_code"` // Repeat for WeaponMod3 (3rd weapon modifier) WeaponMod3Param string `csv:"weapon_mod3_param"` WeaponMod3Min int `csv:"weapon_mod3_min"` WeaponMod3Max int `csv:"weapon_mod3_max"` // Helmet Modifiers when socketed into gemapplytype == 1 HelmMod1Code string `csv:"helm_mod1_code"` // Controls the item properties that the gem/rune provides when socketed into an item with a "gemapplytype" value that equals 1 (Uses the "code" field from Properties.txt) HelmMod1Param string `csv:"helm_mod1_param"` // The stat's "parameter" value associated with the listed property (HelmMod1Code). Usage depends on the property function (See the "func" field on Properties.txt) HelmMod1Min int `csv:"helm_mod1_min"` // The stat's "min" value associated with the listed property (HelmMod1Code). Usage depends on the property function (See the "func" field on Properties.txt) HelmMod1Max int `csv:"helm_mod1_max"` // The stat's "max" value to assign to the listed property (HelmMod1Code). Usage depends on the property function (See the "func" field on Properties.txt) HelmMod2Code string `csv:"helm_mod2_code"` // Repeat for HelmMod2 (2nd helmet modifier) HelmMod2Param string `csv:"helm_mod2_param"` HelmMod2Min int `csv:"helm_mod2_min"` HelmMod2Max int `csv:"helm_mod2_max"` HelmMod3Code string `csv:"helm_mod3_code"` // Repeat for HelmMod3 (3rd helmet modifier) HelmMod3Param string `csv:"helm_mod3_param"` HelmMod3Min int `csv:"helm_mod3_min"` HelmMod3Max int `csv:"helm_mod3_max"` // Shield Modifiers when socketed into gemapplytype == 2 ShieldMod1Code string `csv:"shield_mod1_code"` // Controls the item properties that the gem/rune provides when socketed into an item with a "gemapplytype" value that equals 2 (Uses the "code" field from Properties.txt) ShieldMod1Param string `csv:"shield_mod1_param"` // The stat's "parameter" value associated with the listed property (ShieldMod1Code). Usage depends on the property function (See the "func" field on Properties.txt) ShieldMod1Min int `csv:"shield_mod1_min"` // The stat's "min" value associated with the listed property (ShieldMod1Code). Usage depends on the property function (See the "func" field on Properties.txt) ShieldMod1Max int `csv:"shield_mod1_max"` // The stat's "max" value to assign to the listed property (ShieldMod1Code). Usage depends on the property function (See the "func" field on Properties.txt) ShieldMod2Code string `csv:"shield_mod2_code"` // Repeat for ShieldMod2 (2nd shield modifier) ShieldMod2Param string `csv:"shield_mod2_param"` ShieldMod2Min int `csv:"shield_mod2_min"` ShieldMod2Max int `csv:"shield_mod2_max"` ShieldMod3Code string `csv:"shield_mod3_code"` // Repeat for ShieldMod3 (3rd shield modifier) ShieldMod3Param string `csv:"shield_mod3_param"` ShieldMod3Min int `csv:"shield_mod3_min"` ShieldMod3Max int `csv:"shield_mod3_max"` }
GemData represents the data fields for gems and runes in the game.
type HellUpgrade ¶
type HellUpgrade string
HellUpgrade represents the item code for upgrading an item in Hell difficulty.
const (
HellUpgradeNone HellUpgrade = "xxx"
)
type Hero ¶
type Hero int
Hero is used for different types of hero's
const ( HeroNone Hero = iota // HeroBarbarian // Barbarian HeroNecromancer // Necromancer HeroPaladin // Paladin HeroAssassin // Assassin HeroSorceress // Sorceress HeroAmazon // Amazon HeroDruid // Druid )
Heroes
func HeroFromString ¶
func (Hero) MarshalJSON ¶
MarshalJSON converts CustomString to a JSON string when marshaling.
func (*Hero) UnmarshalJSON ¶
UnmarshalJSON parses a JSON string and sets the value of CustomString.
type Hireling ¶
type Hireling struct { Hireling string `csv:"Hireling"` // Reference field to define the Hireling name Version int `csv:"Version"` // Defines which game version to use this hireling (0 = Classic mode | 100 = Expansion mode) ID int `csv:"Id"` // The unique identification number to define each hireling type Class string `csv:"Class"` // Refers to the “hcIdx” field in MonStats.txt, defines the base type of unit to use for the hireling Act int `csv:"Act"` // The Act that the hireling belongs to (values 1 to 5 equal Act 1 to Act 5, respectively) Difficulty int `csv:"Difficulty"` // The difficulty mode associated with the hireling (1 = Normal | 2 = Nightmare | 3 = Hell) Level int `csv:"Level"` // The starting level of the unit Seller string `csv:"Seller"` // Refers to the “hcIdx” field in MonStats.txt, defines the unit NPC that sells this hireling NameFirst string `csv:"NameFirst"` // String key for generating random hireling names (sequential range from “NameFirst” to “NameLast”, max name length is 48 characters) NameLast string `csv:"NameLast"` // String key for generating random hireling names (sequential range from “NameFirst” to “NameLast”, max name length is 48 characters) Gold int `csv:"Gold"` // Initial cost of the hireling, used in hire price calculation ExpPerLevel float64 `csv:"Exp/Lvl"` // Modifier for calculating the amount of Experience needed for the hireling’s next level HP int `csv:"HP"` // Starting amount of Life at base Level HPPerLevel int `csv:"HP/Lvl"` // Amount of Life gained per Level Defense int `csv:"Defense"` // Starting amount of Defense at base Level DefensePerLevel int `csv:"Def/Lvl"` // Amount of Defense gained per Level Strength int `csv:"Str"` // Starting amount of Strength at base Level StrengthPerLevel int `csv:"Str/Lvl"` // Amount of Strength gained per Level (Calculated in 8ths) Dexterity int `csv:"Dex"` // Starting amount of Dexterity at base Level DexterityPerLevel int `csv:"Dex/Lvl"` // Amount of Dexterity gained per Level (Calculated in 8ths) AttackRating int `csv:"AR"` // Starting amount of Attack Rating at base Level AttackRatingPerLevel int `csv:"AR/Lvl"` // Amount of Attack Rating gained per Level MinPhysicalDamage int `csv:"Dmg-Min"` // Starting amount of minimum Physical Damage for attacks MaxPhysicalDamage int `csv:"Dmg-Max"` // Starting amount of maximum Physical Damage for attacks PhysicalDamagePerLevel int `csv:"Dmg/Lvl"` // Amount of Physical Damage gained per level (Calculated in 8ths) FireResistance int `csv:"ResistFire"` // Starting amount of Fire Resistance at base Level FireResistancePerLevel int `csv:"ResistFire/Lvl"` // Amount of Fire Resistance gained per Level (Calculated in 4ths) ColdResistance int `csv:"ResistCold"` // Starting amount of Cold Resistance at base Level ColdResistancePerLevel int `csv:"ResistCold/Lvl"` // Amount of Cold Resistance gained per Level (Calculated in 4ths) LightningResistance int `csv:"ResistLightning"` // Starting amount of Lightning Resistance at base Level LightningResistancePerLevel int `csv:"ResistLightning/Lvl"` // Amount of Lightning Resistance gained per Level (Calculated in 4ths) PoisonResistance int `csv:"ResistPoison"` // Starting amount of Poison Resistance at base Level PoisonResistancePerLevel int `csv:"ResistPoison/Lvl"` // Amount of Poison Resistance gained per Level (Calculated in 4ths) HirelingDescription string `csv:"HireDesc"` // String key used to display the special description of the hireling in the hire UI window DefaultChance int `csv:"DefaultChance"` // Chance for the hireling to attack with their weapon instead of using a Skill (denominator value for random roll) Skill1 string `csv:"Skill1"` // Points to a skill from the “skill” field in skills.txt file, gives the hireling the Skill to use (requires “Mode1”, “Chance1”, “ChancePerLvl1”) Skill2 string `csv:"Skill2"` // Points to a skill from the “skill” field in skills.txt file, gives the hireling the Skill to use (requires “Mode2”, “Chance2”, “ChancePerLvl2”) Skill3 string `csv:"Skill3"` // Points to a skill from the “skill” field in skills.txt file, gives the hireling the Skill to use (requires “Mode3”, “Chance3”, “ChancePerLvl3”) Skill4 string `csv:"Skill4"` // Points to a skill from the “skill” field in skills.txt file, gives the hireling the Skill to use (requires “Mode4”, “Chance4”, “ChancePerLvl4”) Skill5 string `csv:"Skill5"` // Points to a skill from the “skill” field in skills.txt file, gives the hireling the Skill to use (requires “Mode5”, “Chance5”, “ChancePerLvl5”) Skill6 string `csv:"Skill6"` // Points to a skill from the “skill” field in skills.txt file, gives the hireling the Skill to use (requires “Mode6”, “Chance6”, “ChancePerLvl6”) Mode1 int `csv:"Mode1"` // Uses a monster mode to determine the hireling’s behavior when using the related Skill (numeric ID of the monster mode, not the Token) Mode2 int `csv:"Mode2"` // Uses a monster mode to determine the hireling’s behavior when using the related Skill (numeric ID of the monster mode, not the Token) Mode3 int `csv:"Mode3"` // Uses a monster mode to determine the hireling’s behavior when using the related Skill (numeric ID of the monster mode, not the Token) Mode4 int `csv:"Mode4"` // Uses a monster mode to determine the hireling’s behavior when using the related Skill (numeric ID of the monster mode, not the Token) Mode5 int `csv:"Mode5"` // Uses a monster mode to determine the hireling’s behavior when using the related Skill (numeric ID of the monster mode, not the Token) Mode6 int `csv:"Mode6"` // Uses a monster mode to determine the hireling’s behavior when using the related Skill (numeric ID of the monster mode, not the Token) Chance1 int `csv:"Chance1"` // Base chance for the hireling to use Skill1, denominator value for random roll Chance2 int `csv:"Chance2"` // Base chance for the hireling to use Skill2, denominator value for random roll Chance3 int `csv:"Chance3"` // Base chance for the hireling to use Skill3, denominator value for random roll Chance4 int `csv:"Chance4"` // Base chance for the hireling to use Skill4, denominator value for random roll Chance5 int `csv:"Chance5"` // Base chance for the hireling to use Skill5, denominator value for random roll Chance6 int `csv:"Chance6"` // Base chance for the hireling to use Skill6, denominator value for random roll ChancePerLevel1 int `csv:"ChancePerLvl1"` // Chance for the hireling to use Skill1, affected by the difference in current Level and “Level” field ChancePerLevel2 int `csv:"ChancePerLvl2"` // Chance for the hireling to use Skill2, affected by the difference in current Level and “Level” field ChancePerLevel3 int `csv:"ChancePerLvl3"` // Chance for the hireling to use Skill3, affected by the difference in current Level and “Level” field ChancePerLevel4 int `csv:"ChancePerLvl4"` // Chance for the hireling to use Skill4, affected by the difference in current Level and “Level” field ChancePerLevel5 int `csv:"ChancePerLvl5"` // Chance for the hireling to use Skill5, affected by the difference in current Level and “Level” field ChancePerLevel6 int `csv:"ChancePerLvl6"` // Chance for the hireling to use Skill6, affected by the difference in current Level and “Level” field Skill1Level int `csv:"Level1"` // Starting Level for Skill1 Skill2Level int `csv:"Level2"` // Starting Level for Skill2 Skill3Level int `csv:"Level3"` // Starting Level for Skill3 Skill4Level int `csv:"Level4"` // Starting Level for Skill4 Skill5Level int `csv:"Level5"` // Starting Level for Skill5 Skill6Level int `csv:"Level6"` // Starting Level for Skill6 Skill1LevelPerLevel int `csv:"LvlPerLvl1"` // Modifier to increase Skill1 level for every Level gained Skill2LevelPerLevel int `csv:"LvlPerLvl2"` // Modifier to increase Skill2 level for every Level gained Skill3LevelPerLevel int `csv:"LvlPerLvl3"` // Modifier to increase Skill3 level for every Level gained Skill4LevelPerLevel int `csv:"LvlPerLvl4"` // Modifier to increase Skill4 level for every Level gained Skill5LevelPerLevel int `csv:"LvlPerLvl5"` // Modifier to increase Skill5 level for every Level gained Skill6LevelPerLevel int `csv:"LvlPerLvl6"` // Modifier to increase Skill6 level for every Level gained HiringMaxLevelDifference int `csv:"HiringMaxLevelDifference"` // Used to generate a range for the hireling's starting Level in the hiring UI window ResurrectCostMultiplier int `csv:"resurrectcostmultiplier"` // Modifier used to calculate the hireling’s current resurrect cost ResurrectCostDivisor int `csv:"resurrectcostdivisor"` // Modifier used to calculate the hireling’s current resurrect cost ResurrectCostMax int `csv:"resurrectcostmax"` // Maximum Gold cost to resurrect this hireling EquivalentCharClass string `csv:"equivalentcharclass"` // Determines what class this hireling is treated like under the hood for calculating skill level bonuses and gear restrictions }
type HirelingDescription ¶
type HirelingDescription struct { ID int `csv:"id"` // The id of the hireling monster class as defined in monstats.txt AlternateVoice bool `csv:"alternateVoice"` // Boolean field. If equals 1, then the hireling will use the alternate (feminine) voice type for voice lines. If equals 0, then it will use the masculine voice type. }
type InventoryData ¶
type InventoryData struct { // Class is a reference field to define the type of inventory screen. Class string `csv:"class"` // InvLeft is the starting X coordinate pixel position of the inventory panel. InvLeft int `csv:"invLeft"` // InvRight is the ending X coordinate pixel position of the inventory panel (Includes the "InvLeft" value with the inventory width size). InvRight int `csv:"invRight"` // InvTop is the starting Y coordinate pixel position of the inventory panel. InvTop int `csv:"invTop"` // InvBottom is the ending Y coordinate pixel position of the inventory panel (Includes the "InvTop" value with the inventory height size). InvBottom int `csv:"invBottom"` // GridX is the column number size of the inventory grid, measured in the number of grid boxes to use. GridX int `csv:"gridX"` // GridY is the column row size of the inventory grid, measured in the number of grid boxes to use. GridY int `csv:"gridY"` // GridLeft is the starting X coordinate location of the inventory's left grid side. GridLeft int `csv:"gridLeft"` // GridRight is the ending X coordinate location of the inventory's right grid side (Includes the "GridLeft" value with the grid width size). GridRight int `csv:"gridRight"` // GridTop is the starting Y coordinate location of the inventory's top grid side. GridTop int `csv:"gridTop"` // GridBottom is the ending Y coordinate location of the inventory's bottom grid side (Includes the "GridTop" value with the grid height size). GridBottom int `csv:"gridBottom"` // GridBoxWidth is the width size of an inventory's box cell. GridBoxWidth int `csv:"gridBoxWidth"` // GridBoxHeight is the height size of an inventory's box cell. GridBoxHeight int `csv:"gridBoxHeight"` // RArmLeft is the starting X coordinate location of the Right Weapon Slot. RArmLeft int `csv:"rArmLeft"` // RArmRight is the ending X coordinate location of the Right Weapon Slot (Includes the "RArmLeft" value with the "RArmWidth" value). RArmRight int `csv:"rArmRight"` // RArmTop is the starting Y coordinate location of the Right Weapon Slot. RArmTop int `csv:"rArmTop"` // RArmBottom is the ending Y coordinate location of the Right Weapon Slot (Includes the "RArmTop" value with the "RArmHeight" value). RArmBottom int `csv:"rArmBottom"` // RArmWidth is the pixel width of the Right Weapon Slot. RArmWidth int `csv:"rArmWidth"` // RArmHeight is the pixel height of the Right Weapon Slot. RArmHeight int `csv:"rArmHeight"` // TorsoLeft is the starting X coordinate location of the Body Armor Slot. TorsoLeft int `csv:"torsoLeft"` // TorsoRight is the ending X coordinate location of the Body Armor Slot (Includes the "TorsoLeft" value with the "TorsoWidth" value). TorsoRight int `csv:"torsoRight"` // TorsoTop is the starting Y coordinate location of the Body Armor Slot. TorsoTop int `csv:"torsoTop"` // TorsoBottom is the ending Y coordinate location of the Body Armor Slot (Includes the "TorsoTop" value with the "TorsoHeight" value). TorsoBottom int `csv:"torsoBottom"` // TorsoWidth is the pixel width of the Body Armor Slot. TorsoWidth int `csv:"torsoWidth"` // TorsoHeight is the pixel height of the Body Armor Slot. TorsoHeight int `csv:"torsoHeight"` // LArmLeft is the starting X coordinate location of the Left Weapon Slot. LArmLeft int `csv:"lArmLeft"` // LArmRight is the ending X coordinate location of the Left Weapon Slot (Includes the "LArmLeft" value with the "LArmWidth" value). LArmRight int `csv:"lArmRight"` // LArmTop is the starting Y coordinate location of the Left Weapon Slot. LArmTop int `csv:"lArmTop"` // LArmBottom is the ending Y coordinate location of the Left Weapon Slot (Includes the "LArmTop" value with the "LArmHeight" value). LArmBottom int `csv:"lArmBottom"` // LArmWidth is the pixel width of the Left Weapon Slot. LArmWidth int `csv:"lArmWidth"` // LArmHeight is the pixel height of the Left Weapon Slot. LArmHeight int `csv:"lArmHeight"` // HeadLeft is the starting X coordinate location of the Helm Slot. HeadLeft int `csv:"headLeft"` // HeadRight is the ending X coordinate location of the Helm Slot (Includes the "HeadLeft" value with the "HeadWidth" value). HeadRight int `csv:"headRight"` // HeadTop is the starting Y coordinate location of the Helm Slot. HeadTop int `csv:"headTop"` // HeadBottom is the ending Y coordinate location of the Helm Slot (Includes the "HeadTop" value with the "HeadHeight" value). HeadBottom int `csv:"headBottom"` // HeadWidth is the pixel width of the Helm Slot. HeadWidth int `csv:"headWidth"` // HeadHeight is the pixel height of the Helm Slot. HeadHeight int `csv:"headHeight"` // NeckLeft is the starting X coordinate location of the Amulet Slot. NeckLeft int `csv:"neckLeft"` // NeckRight is the ending X coordinate location of the Amulet Slot (Includes the "NeckLeft" value with the "NeckWidth" value). NeckRight int `csv:"neckRight"` // NeckTop is the starting Y coordinate location of the Amulet Slot. NeckTop int `csv:"neckTop"` // NeckBottom is the ending Y coordinate location of the Amulet Slot (Includes the "NeckTop" value with the "NeckHeight" value). NeckBottom int `csv:"neckBottom"` // NeckWidth is the pixel width of the Amulet Slot. NeckWidth int `csv:"neckWidth"` // NeckHeight is the pixel height of the Amulet Slot. NeckHeight int `csv:"neckHeight"` // RHandLeft is the starting X coordinate location of the Right Ring Slot. RHandLeft int `csv:"rHandLeft"` // RHandRight is the ending X coordinate location of the Right Ring Slot (Includes the "RHandLeft" value with the "RHandWidth" value). RHandRight int `csv:"rHandRight"` // RHandTop is the starting Y coordinate location of the Right Ring Slot. RHandTop int `csv:"rHandTop"` // RHandBottom is the ending Y coordinate location of the Right Ring Slot (Includes the "RHandTop" value with the "RHandHeight" value). RHandBottom int `csv:"rHandBottom"` // RHandWidth is the pixel width of the Right Ring Slot. RHandWidth int `csv:"rHandWidth"` // RHandHeight is the pixel height of the Right Ring Slot. RHandHeight int `csv:"rHandHeight"` // LHandLeft is the starting X coordinate location of the Left Ring Slot. LHandLeft int `csv:"lHandLeft"` // LHandRight is the ending X coordinate location of the Left Ring Slot (Includes the "LHandLeft" value with the "LHandWidth" value). LHandRight int `csv:"lHandRight"` // LHandTop is the starting Y coordinate location of the Left Ring Slot. LHandTop int `csv:"lHandTop"` // LHandBottom is the ending Y coordinate location of the Left Ring Slot (Includes the "LHandTop" value with the "LHandHeight" value). LHandBottom int `csv:"lHandBottom"` // LHandWidth is the pixel width of the Left Ring Slot. LHandWidth int `csv:"lHandWidth"` // LHandHeight is the pixel height of the Left Ring Slot. LHandHeight int `csv:"lHandHeight"` // BeltLeft is the starting X coordinate location of the Belt Slot. BeltLeft int `csv:"beltLeft"` // BeltRight is the ending X coordinate location of the Belt Slot (Includes the "BeltLeft" value with the "BeltWidth" value). BeltRight int `csv:"beltRight"` // BeltTop is the starting Y coordinate location of the Belt Slot. BeltTop int `csv:"beltTop"` // BeltBottom is the ending Y coordinate location of the Belt Slot (Includes the "BeltTop" value with the "BeltHeight" value). BeltBottom int `csv:"beltBottom"` // BeltWidth is the pixel width of the Belt Slot. BeltWidth int `csv:"beltWidth"` // BeltHeight is the pixel height of the Belt Slot. BeltHeight int `csv:"beltHeight"` // FeetLeft is the starting X coordinate location of the Boots Slot. FeetLeft int `csv:"feetLeft"` // FeetRight is the ending X coordinate location of the Boots Slot (Includes the "FeetLeft" value with the "FeetWidth" value). FeetRight int `csv:"feetRight"` // FeetTop is the starting Y coordinate location of the Boots Slot. FeetTop int `csv:"feetTop"` // FeetBottom is the ending Y coordinate location of the Boots Slot (Includes the "FeetTop" value with the "FeetHeight" value). FeetBottom int `csv:"feetBottom"` // FeetWidth is the pixel width of the Boots Slot. FeetWidth int `csv:"feetWidth"` // FeetHeight is the pixel height of the Boots Slot. FeetHeight int `csv:"feetHeight"` // GlovesLeft is the starting X coordinate location of the Gloves Slot. GlovesLeft int `csv:"glovesLeft"` // GlovesRight is the ending X coordinate location of the Gloves Slot (Includes the "GlovesLeft" value with the "GlovesWidth" value). GlovesRight int `csv:"glovesRight"` // GlovesTop is the starting Y coordinate location of the Gloves Slot. GlovesTop int `csv:"glovesTop"` // GlovesBottom is the ending Y coordinate location of the Gloves Slot (Includes the "GlovesTop" value with the "GlovesHeight" value). GlovesBottom int `csv:"glovesBottom"` // GlovesWidth is the pixel width of the Gloves Slot. GlovesWidth int `csv:"glovesWidth"` // GlovesHeight is the pixel height of the Gloves Slot. GlovesHeight int `csv:"glovesHeight"` }
InventoryData represents the data from the "inventory.txt" file.
type ItemArmor ¶
type ItemArmor struct { // Name is the reference field to define the item. Name string `csv:"name"` // Version defines which game version to create this item (0 = Classic mode | 100 = Expansion mode). Version int `csv:"version"` // CompactSave is a boolean field. If equals 1, then only the item's base stats will be stored in the character save, // but not any modifiers or additional stats. If equals 0, then all of the item's stats will be saved. CompactSave int `csv:"compactsave"` // Rarity determines the chance that the item will randomly spawn (1/#). // The higher the value, the rarer the item will be. // This field depends on the "spawnable" field being enabled, the "quest" field being disabled, // and the item level being less than or equal to the area level. // This value is also affected by the relative Act number that the item is dropping in, // where the higher the Act number, the more common the item will drop. Rarity int `csv:"rarity"` // Spawnable is a boolean field. If equals 1, then this item can be randomly spawned. // If equals 0, then this item will never randomly spawn. Spawnable int `csv:"spawnable"` // MinAC is the minimum amount of Defense that an armor item type can have. MinAC int `csv:"minac"` // MaxAC is the maximum amount of Defense that an armor item type can have. MaxAC int `csv:"maxac"` // Absorbs specifies the amount of damage that an item can absorb. Absorbs int `csv:"absorbs"` // Speed affects the Walk/Run Speed reduction when wearing the armor. Speed int `csv:"speed"` // ReqStr defines the amount of the Strength attribute needed to use the item. ReqStr int `csv:"reqstr"` // Block controls the block percent chance that the item provides (out of 100, but caps at 75). Block int `csv:"block"` // Durability defines the base durability amount that the item will spawn with. Durability int `csv:"durability"` // NoDurability is a boolean field. If equals 1, then the item will not have durability. // If equals 0, then the item will have durability. NoDurability int `csv:"nodurability"` // Level controls the base item level. This is used for determining when the item is allowed to drop, // such as making sure that the item level is not greater than the monster's level or the area level. Level int `csv:"level"` // LevelReq controls the player level requirement for being able to use the item. LevelReq int `csv:"levelreq"` // Cost defines the base gold cost of the item when being sold by an NPC. // This can be affected by item modifiers and the rarity of the item. Cost int `csv:"cost"` // GambleCost defines the gambling gold cost of the item on the Gambling UI. GambleCost int `csv:"gamble cost"` // Code defines a unique 3 letter/number code for the item. This is used as an identifier to reference the item. Code string `csv:"code"` // NameStr is the String Key that is used for the base item name. NameStr string `csv:"namestr"` // MagicLvl defines the magic level of the item, which can affect how magical item modifiers that can appear on the item. MagicLvl int `csv:"magic lvl"` // AutoPrefix is a boolean field. If equals 1, then the item automatically picks an item affix name // from a designated "group" value from the automagic.txt file, instead of using random prefixes. // This is only used when the item is of Magical quality. AutoPrefix int `csv:"auto prefix"` // AlternateGfx uses a unique 3 letter/number code similar to the defined "Code" fields // to determine what in-game graphics to display on the player character when the item is equipped. AlternateGfx string `csv:"alternategfx"` // OpenBetaGfx is a field for graphics used during the open beta version of the game. OpenBetaGfx string `csv:"OpenBetaGfx"` // NormCode links to a "Code" field to determine the normal version of the item. NormCode string `csv:"normcode"` // UberCode links to a "Code" field to determine the Exceptional version of the item. UberCode string `csv:"ubercode"` // UltraCode links to a "Code" field to determine the Elite version of the item. UltraCode string `csv:"ultracode"` // SpellOffset controls the offset index for reading spell data related to the item from the spells.txt file. SpellOffset int `csv:"spelloffset"` // Component determines the layer of player animation when the item is equipped. // This uses a code referenced from the Composit.txt file. Component int `csv:"component"` // InvWidth and InvHeight define the width and height of grid cells that the item occupies in the player inventory. InvWidth int `csv:"invwidth"` InvHeight int `csv:"invheight"` // HasInv is a boolean field. If equals 1, then the item will have its own inventory allowing for the capability to socket gems, runes, or jewels. // If equals 0, then the item will not have its own inventory. HasInv int `csv:"hasinv"` // GemSockets determines the number of sockets that the item can have, allowing for socketing gems or runes. GemSockets int `csv:"gemsockets"` // GemApplyType defines the type of gems that can be used with the item. GemApplyType int `csv:"gemapplytype"` // FlippyFile is the .dc6 file that contains the graphics of the item on the ground when it is dropped. FlippyFile string `csv:"flippyfile"` // InvFile is the .dc6 file that contains the graphics of the item in the player's inventory. InvFile string `csv:"invfile"` // UniqueInvFile is the .dc6 file that contains the graphics of a unique item in the player's inventory. UniqueInvFile string `csv:"uniqueinvfile"` // SetInvFile is the .dc6 file that contains the graphics of a set item in the player's inventory. SetInvFile string `csv:"setinvfile"` // RArm, LArm, Torso, and Legs fields are used to specify which inventory slot the item should appear on the player model. RArm int `csv:"rArm"` LArm int `csv:"lArm"` Torso int `csv:"Torso"` Legs int `csv:"Legs"` // RSPad and LSPad fields are used for specifying padding for 3D rendering of the item's graphic. RSPad int `csv:"rSPad"` LSPad int `csv:"lSPad"` // Useable is a boolean field. If equals 1, then the item can be used by right-clicking it. // If equals 0, then the item cannot be used. Useable int `csv:"useable"` // Throwable is a boolean field. If equals 1, then the item can be thrown. // If equals 0, then the item cannot be thrown. Throwable int `csv:"throwable"` // Stackable is a boolean field. If equals 1, then the item can be stacked in the inventory. // If equals 0, then the item cannot be stacked. Stackable int `csv:"stackable"` // MinStack and MaxStack define the minimum and maximum number of items that can be stacked together. MinStack int `csv:"minstack"` MaxStack int `csv:"maxstack"` // Type and Type2 fields are used to categorize the item and determine what class of items it belongs to. Type string `csv:"type"` Type2 string `csv:"type2"` // DropSound is the sound that is played when the item is dropped on the ground. DropSound string `csv:"dropsound"` // DropSfxFrame is the frame number in the flippy file where the item's sound effect is triggered. DropSfxFrame int `csv:"dropsfxframe"` // UseSound specifies the sound that is played when the item is used. UseSound string `csv:"usesound"` // Unique is a boolean field. If equals 1, then the item is unique and can only be found once in the game. // If equals 0, then the item is not unique and can be found multiple times. Unique int `csv:"unique"` // Transparent is a boolean field. If equals 1, then the item has transparency. // If equals 0, then the item does not have transparency. Transparent int `csv:"transparent"` // TransTbl defines the transform table used for certain item types to determine how they appear in-game. TransTbl int `csv:"transtbl"` // Quivered is a boolean field. If equals 1, then the item can be equipped in the quiver slot. // If equals 0, then the item cannot be equipped in the quiver slot. Quivered int `csv:"quivered"` // LightRadius defines the light radius of the item when equipped. LightRadius int `csv:"lightradius"` // Belt is a boolean field. If equals 1, then the item can be equipped in the belt slot. // If equals 0, then the item cannot be equipped in the belt slot. Belt int `csv:"belt"` // Quest is a boolean field. If equals 1, then the item is a quest item. // If equals 0, then the item is not a quest item. Quest int `csv:"quest"` // MissileType is used to determine the type of missile projectile the item uses when thrown or shot. MissileType string `csv:"missiletype"` // DurWarning is a boolean field. If equals 1, then the game will warn the player when the item's durability is low. // If equals 0, then there will be no warning for low durability. DurWarning int `csv:"durwarning"` // QntWarning is a boolean field. If equals 1, then the game will warn the player when the item's quantity is low. // If equals 0, then there will be no warning for low quantity. QntWarning int `csv:"qntwarning"` // MinDam and MaxDam define the minimum and maximum damage values for the item. MinDam int `csv:"mindam"` MaxDam int `csv:"maxdam"` // StrBonus and DexBonus specify the strength and dexterity bonuses provided by the item when equipped. StrBonus int `csv:"StrBonus"` DexBonus int `csv:"DexBonus"` // GemOffset determines the index of the gem information in the gems.txt file. GemOffset int `csv:"gemoffset"` // Bitfield1 is a field that contains various bit flags for different item properties. Bitfield1 int `csv:"bitfield1"` CharsiMin int `csv:"CharsiMin"` CharsiMax int `csv:"CharsiMax"` CharsiMagicMin int `csv:"CharsiMagicMin"` CharsiMagicMax int `csv:"CharsiMagicMax"` CharsiMagicLvl int `csv:"CharsiMagicLvl"` GheedMin int `csv:"GheedMin"` GheedMax int `csv:"GheedMax"` GheedMagicMin int `csv:"GheedMagicMin"` GheedMagicMax int `csv:"GheedMagicMax"` GheedMagicLvl int `csv:"GheedMagicLvl"` AkaraMin int `csv:"AkaraMin"` AkaraMax int `csv:"AkaraMax"` AkaraMagicMin int `csv:"AkaraMagicMin"` AkaraMagicMax int `csv:"AkaraMagicMax"` AkaraMagicLvl int `csv:"AkaraMagicLvl"` FaraMin int `csv:"FaraMin"` FaraMax int `csv:"FaraMax"` FaraMagicMin int `csv:"FaraMagicMin"` FaraMagicMax int `csv:"FaraMagicMax"` FaraMagicLvl int `csv:"FaraMagicLvl"` LysanderMin int `csv:"LysanderMin"` LysanderMax int `csv:"LysanderMax"` LysanderMagicMin int `csv:"LysanderMagicMin"` LysanderMagicMax int `csv:"LysanderMagicMax"` LysanderMagicLvl int `csv:"LysanderMagicLvl"` DrognanMin int `csv:"DrognanMin"` DrognanMax int `csv:"DrognanMax"` DrognanMagicMin int `csv:"DrognanMagicMin"` DrognanMagicMax int `csv:"DrognanMagicMax"` DrognanMagicLvl int `csv:"DrognanMagicLvl"` HraltiMin int `csv:"HraltiMin"` HraltiMax int `csv:"HraltiMax"` HraltiMagicMin int `csv:"HraltiMagicMin"` HraltiMagicMax int `csv:"HraltiMagicMax"` HratliMagicLvl int `csv:"HratliMagicLvl"` AlkorMin int `csv:"AlkorMin"` AlkorMax int `csv:"AlkorMax"` AlkorMagicMin int `csv:"AlkorMagicMin"` AlkorMagicMax int `csv:"AlkorMagicMax"` AlkorMagicLvl int `csv:"AlkorMagicLvl"` OrmusMin int `csv:"OrmusMin"` OrmusMax int `csv:"OrmusMax"` OrmusMagicMin int `csv:"OrmusMagicMin"` OrmusMagicMax int `csv:"OrmusMagicMax"` OrmusMagicLvl int `csv:"OrmusMagicLvl"` ElzixMin int `csv:"ElzixMin"` ElzixMax int `csv:"ElzixMax"` ElzixMagicMin int `csv:"ElzixMagicMin"` ElzixMagicMax int `csv:"ElzixMagicMax"` ElzixMagicLvl int `csv:"ElzixMagicLvl"` AshearaMin int `csv:"AshearaMin"` AshearaMax int `csv:"AshearaMax"` AshearaMagicMin int `csv:"AshearaMagicMin"` AshearaMagicMax int `csv:"AshearaMagicMax"` AshearaMagicLvl int `csv:"AshearaMagicLvl"` CainMin int `csv:"CainMin"` CainMax int `csv:"CainMax"` CainMagicMin int `csv:"CainMagicMin"` CainMagicMax int `csv:"CainMagicMax"` CainMagicLvl int `csv:"CainMagicLvl"` HalbuMin int `csv:"HalbuMin"` HalbuMax int `csv:"HalbuMax"` HalbuMagicMin int `csv:"HalbuMagicMin"` HalbuMagicMax int `csv:"HalbuMagicMax"` HalbuMagicLvl int `csv:"HalbuMagicLvl"` JamellaMin int `csv:"JamellaMin"` JamellaMax int `csv:"JamellaMax"` JamellaMagicMin int `csv:"JamellaMagicMin"` JamellaMagicMax int `csv:"JamellaMagicMax"` JamellaMagicLvl int `csv:"JamellaMagicLvl"` LarzukMin int `csv:"LarzukMin"` LarzukMax int `csv:"LarzukMax"` LarzukMagicMin int `csv:"LarzukMagicMin"` LarzukMagicMax int `csv:"LarzukMagicMax"` LarzukMagicLvl int `csv:"LarzukMagicLvl"` MalahMin int `csv:"MalahMin"` MalahMax int `csv:"MalahMax"` MalahMagicMin int `csv:"MalahMagicMin"` MalahMagicMax int `csv:"MalahMagicMax"` MalahMagicLvl int `csv:"MalahMagicLvl"` DrehyaMin int `csv:"DrehyaMin"` DrehyaMax int `csv:"DrehyaMax"` DrehyaMagicMin int `csv:"DrehyaMagicMin"` DrehyaMagicMax int `csv:"DrehyaMagicMax"` DrehyaMagicLvl int `csv:"DrehyaMagicLvl"` // SourceArt and GameArt specify the art that is used for the item in the source file and the game file, respectively. SourceArt string `csv:"Source Art"` GameArt string `csv:"Game Art"` // Transform is a boolean field. If equals 1, then the item can transform or "morph" the player character // when equipped. If equals 0, then the item does not have transformation capabilities. Transform int `csv:"Transform"` // InvTrans is a boolean field. If equals 1, then the item can be moved in the inventory while it is still in the process of being identified. // If equals 0, then the item cannot be moved until the identification process is completed. InvTrans int `csv:"InvTrans"` // SkipName is a boolean field. If equals 1, then the item name will not be displayed when the item is dropped. // If equals 0, then the item name will be displayed when the item is dropped. SkipName int `csv:"SkipName"` // NightmareUpgrade is a boolean field. If equals 1, then the item can be upgraded to an exceptional version in Nightmare difficulty. // If equals 0, then the item cannot be upgraded in Nightmare difficulty. NightmareUpgrade string `csv:"NightmareUpgrade"` // HellUpgrade is a boolean field. If equals 1, then the item can be upgraded to an elite version in Hell difficulty. // If equals 0, then the item cannot be upgraded in Hell difficulty. HellUpgrade string `csv:"HellUpgrade"` // Nameable is a boolean field. If equals 1, then the item can be named. // If equals 0, then the item cannot be named. Nameable int `csv:"nameable"` }
ItemArmor represents an item in the game.
type ItemBodyLocation ¶
type ItemBodyLocation string
ItemBodyLocation represents the possible body locations for equippable items
const ( ItemBodyLocationNone ItemBodyLocation = "" ItemBodyLocationHead ItemBodyLocation = "head" ItemBodyLocationNeck ItemBodyLocation = "neck" ItemBodyLocationTorso ItemBodyLocation = "tors" ItemBodyLocationRArm ItemBodyLocation = "rarm" ItemBodyLocationLArm ItemBodyLocation = "larm" ItemBodyLocationRRing ItemBodyLocation = "rrin" ItemBodyLocationLRing ItemBodyLocation = "lrin" ItemBodyLocationBelt ItemBodyLocation = "belt" ItemBodyLocationFeet ItemBodyLocation = "feet" ItemBodyLocationGloves ItemBodyLocation = "glov" )
type ItemHighQualityModifiers ¶
type ItemHighQualityModifiers struct { Mod1Code string `csv:"mod1code"` // First item property code (references Properties.txt). Mod1Param int `csv:"mod1param"` // First item property parameter value. Mod1Min int `csv:"mod1min"` // First item property min value. Mod1Max int `csv:"mod1max"` // First item property max value. Mod2Code string `csv:"mod2code"` // Second item property code (references Properties.txt). Mod2Param int `csv:"mod2param"` // Second item property parameter value. Mod2Min int `csv:"mod2min"` // Second item property min value. Mod2Max int `csv:"mod2max"` // Second item property max value. Armor bool `csv:"armor"` // If true, the modifier can be applied to torso armor and helmet item types. Weapon bool `csv:"weapon"` // If true, the modifier can be applied to melee weapon item types (except scepters, wands, and staves). Shield bool `csv:"shield"` // If true, the modifier can be applied to shield item types. Scepter bool `csv:"scepter"` // If true, the modifier can be applied to scepter item types. Wand bool `csv:"wand"` // If true, the modifier can be applied to wand item types. Staff bool `csv:"staff"` // If true, the modifier can be applied to staff item types. Bow bool `csv:"bow"` // If true, the modifier can be applied to bow or crossbow item types. Boots bool `csv:"boots"` // If true, the modifier can be applied to boots item types. Gloves bool `csv:"gloves"` // If true, the modifier can be applied to gloves item types. Belt bool `csv:"belt"` // If true, the modifier can be applied to belt item types. }
ItemHighQualityModifiers represents a group of item modifiers for High Quality (Superior) item types.
type ItemProperty ¶
type ItemProperty struct { Code string `csv:"code"` // ItemProperty ID used as a reference in other data files. Func1 string `csv:"func1"` // Function ID for defining the property behavior. Func2 string `csv:"func2"` // Additional Function ID. Func3 string `csv:"func3"` // Additional Function ID. Func4 string `csv:"func4"` // Additional Function ID. Func5 string `csv:"func5"` // Additional Function ID. Func6 string `csv:"func6"` // Additional Function ID. Func7 string `csv:"func7"` // Additional Function ID. Stat1 string `csv:"stat1"` // Stat applied by the property (references ItemStatCost.txt). Stat2 string `csv:"stat2"` // Additional Stat. Stat3 string `csv:"stat3"` // Additional Stat. Stat4 string `csv:"stat4"` // Additional Stat. Stat5 string `csv:"stat5"` // Additional Stat. Stat6 string `csv:"stat6"` // Additional Stat. Stat7 string `csv:"stat7"` // Additional Stat. Set1 bool `csv:"set1"` // Boolean field. If true, set the stat value regardless of its current value. Set2 bool `csv:"set2"` // Additional Boolean field. Set3 bool `csv:"set3"` // Additional Boolean field. Set4 bool `csv:"set4"` // Additional Boolean field. Set5 bool `csv:"set5"` // Additional Boolean field. Set6 bool `csv:"set6"` // Additional Boolean field. Set7 bool `csv:"set7"` // Additional Boolean field. Val1 int `csv:"val1"` // Integer field used as a possible input parameter for additional function calculations. Val2 int `csv:"val2"` // Additional Integer field. Val3 int `csv:"val3"` // Additional Integer field. Val4 int `csv:"val4"` // Additional Integer field. Val5 int `csv:"val5"` // Additional Integer field. Val6 int `csv:"val6"` // Additional Integer field. Val7 int `csv:"val7"` // Additional Integer field. }
ItemProperty represents an item modifier and its associated function.
type ItemQualityLevel ¶
type ItemQualityLevel int
ItemQualityLevel represents the item quality level
const ( // AnyQuality represents any quality level (Used for a random quality) AnyQuality ItemQualityLevel = iota // LowQuality represents Low Quality level (Ex: "Crude") LowQuality // NormalQuality represents Normal Quality level (Default value if the value is empty) NormalQuality // HighQuality represents High Quality level (Superior) HighQuality // MagicQuality represents Magic Quality level (Uses Magic Prefixes and Suffixes) MagicQuality // SetItem represents Set Item quality level SetItem // RareQuality represents Rare Quality level RareQuality // UniqueQuality represents Unique Quality level (Predetermined stats) UniqueQuality // CraftedQuality represents Crafted Quality level CraftedQuality // TemperedQuality represents Tempered Quality level TemperedQuality )
type ItemRatio ¶
type ItemRatio struct { Function ItemRatioFunction `csv:"Function"` // Reference field to define the item ratio name. Version int `csv:"Version"` // Game version to use this item ratio (0 = Classic mode | 100 = Expansion mode). Uber int `csv:"Uber"` // If 1, the item ratio applies to Exceptional or Elite Quality items; else it applies to Normal Quality items. ClassSpecific int `csv:"Class Specific"` // If 1, the item ratio applies to class-based items. Unique int `csv:"Unique"` // Base value for calculating the Unique Quality chance. Higher value means rarer chance. (Calculated first) UniqueDivisor int `csv:"UniqueDivisor"` // Modifier for changing the Unique Quality chance based on the difference between the Monster Level and the Item's base level. UniqueMin int `csv:"UniqueMin"` // The minimum value of the probability denominator for Unique Quality. (Calculated in 128ths) Set int `csv:"Set"` // Base value for calculating the Set Quality chance. Higher value means rarer chance. (Calculated after Unique) SetDivisor int `csv:"SetDivisor"` // Modifier for changing the Set Quality chance based on the difference between the Monster Level and the Item's base level. SetMin int `csv:"SetMin"` // The minimum value of the probability denominator for Set Quality. (Calculated in 128ths) Rare int `csv:"Rare"` // Base value for calculating the Rare Quality chance. Higher value means rarer chance. (Calculated after Set) RareDivisor int `csv:"RareDivisor"` // Modifier for changing the Rare Quality chance based on the difference between the Monster Level and the Item's base level. RareMin int `csv:"RareMin"` // The minimum value of the probability denominator for Rare Quality. (Calculated in 128ths) Magic int `csv:"Magic"` // Base value for calculating the Magic Quality chance. Higher value means rarer chance. (Calculated after Rare) MagicDivisor int `csv:"MagicDivisor"` // Modifier for changing the Magic Quality chance based on the difference between the Monster Level and the Item's base level. MagicMin int `csv:"MagicMin"` // The minimum value of the probability denominator for Magic Quality. (Calculated in 128ths) HiQuality int `csv:"HiQuality"` // Base value for calculating the High Quality (Superior) chance. Higher value means rarer chance. (Calculated after Magic) HiQualityDiv int `csv:"HiQualityDivisor"` // Modifier for changing the High Quality (Superior) chance based on the difference between the Monster Level and the Item's base level. Normal int `csv:"Normal"` // Base value for calculating the Normal Quality chance. Higher value means rarer chance. (Calculated after Normal, defaults to Low Quality) NormalDivisor int `csv:"NormalDivisor"` // Modifier for changing the Normal Quality chance based on the difference between the Monster Level and the Item's base level. }
ItemRatio represents the quality of items when being spawned and the probability calculations.
type ItemRatioFunction ¶
type ItemRatioFunction string
ItemRatioFunction represents the type of item ratio used for determining item quality.
const ( ItemRatioUnique ItemRatioFunction = "Unique" ItemRatioSet ItemRatioFunction = "Set" ItemRatioRare ItemRatioFunction = "Rare" ItemRatioMagic ItemRatioFunction = "Magic" ItemRatioHiQuality ItemRatioFunction = "HiQuality" ItemRatioNormal ItemRatioFunction = "Normal" ItemRatioLow ItemRatioFunction = "Low" )
Constants for Item Ratio Functions.
type ItemStatCost ¶
type ItemStatCost struct { Name string `csv:"Stat"` // Defines the unique pointer for this stat, used in other files. SendOther int `csv:"Send Other"` // If 1, add the stat to a new monster if it has no state and an item mask; else ignore. Signed int `csv:"Signed"` // If 1, stat is treated as a signed integer; else it's an unsigned integer. Applies to stats with state bits. SendBits int `csv:"Send Bits"` // Controls how many bits of data for the stat to send to the game client. SendParamBits int `csv:"Send Param Bits"` // Controls how many bits of data for the stat's parameter value to send to the client for a unit. UpdateAnimRate int `csv:"UpdateAnimRate"` // If 1, the stat will adjust the unit's speed when changed; else ignore. Saved int `csv:"Saved"` // If 1, this state will be stored in the Character Save file; else ignore. CSvSigned int `csv:"CSvSigned"` // If 1, the stat will be saved as a signed integer in the Character Save file; else it's unsigned. CSvBits int `csv:"CSvBits"` // Controls how many bits of data for the stat to save in the Character Save file. CSvParam int `csv:"CSvParam"` // Controls how many bits of data for the stat's parameter value to save in the Character Save file. FCallback int `csv:"fCallback"` // If 1, any changes to the stat will call the Callback function to update character's states, skills, or item events. FMin int `csv:"fMin"` // If 1, the stat has a minimum value that cannot be reduced further (See MinAccr); else ignore. MinAccr int `csv:"MinAccr"` // The minimum value of a stat. Used if FMin is enabled. Encode int `csv:"Encode"` // Controls how the stat will modify an item's buy, sell, and repair costs. Add int `csv:"Add"` // Flat integer modification to the Unique item's buy, sell, and repair costs. Added after Multiply field. Multiply int `csv:"Multiply"` // Multiplicative modifier for the item's buy, sell, and repair costs. ValShift int `csv:"ValShift"` // Shifts the stat's input value by a number of bits for calculations. SaveBits109 int `csv:"1.09-Save Bits"` // Controls how many bits are allocated for the overall size of the stat when saving/reading an item from a Character Save in 1.09d or older. SaveAdd109 int `csv:"1.09-Save Add"` // Controls how many bits are allocated for the stat's value when saving/reading an item from a Character Save in 1.09d or older. SaveBits int `csv:"Save Bits"` // Controls how many bits are allocated for the overall size of the stat when saving/reading an item from a Character Save. SaveAdd int `csv:"Save Add"` // Controls how many bits are allocated for the stat's value when saving/reading an item from a Character Save. SaveParamBits int `csv:"Save Param Bits"` // Controls how many bits for the stat's parameter value to use when saving/reading an item from a Character Save. KeepZero int `csv:"keepzero"` // If 1, this stat remains on the change list even if its value is 0; else ignore. Op string `csv:"op"` // Name operator for advanced stat modification when calculating the value of a stat. OpParam string `csv:"op param"` // Possible parameter value for the Op function. OpBase string `csv:"op base"` // Possible parameter value for the Op function. OpStat1 string `csv:"op stat1"` // Possible parameter value for the Op function. OpStat2 string `csv:"op stat2"` // Possible parameter value for the Op function. OpStat3 string `csv:"op stat3"` // Possible parameter value for the Op function. Direct int `csv:"direct"` // If 1, the stat updates in relation to its maxstat field to ensure it never exceeds that value in certain skill functions. MaxStat string `csv:"maxstat"` // Controls which stat is associated with this stat to be treated as the maximum version of this stat. DamageRelated int `csv:"damagerelated"` // If 1, this stat is exclusive to the item and will not add to the unit; else it always adds to the unit. ItemEvent1 string `csv:"itemevent1"` // Event that will activate the specified function defined by itemeventfunc1. ItemEvent2 string `csv:"itemevent2"` // Event that will activate the specified function defined by itemeventfunc2. ItemEventFunc1 string `csv:"itemeventfunc1"` // Function to use after the related item event occurred. ItemEventFunc2 string `csv:"itemeventfunc2"` // Function to use after the related item event occurred. DescPriority int `csv:"descpriority"` // Controls how this stat is sorted in item tooltips. DescFunc int `csv:"descfunc"` // Controls how the stat is displayed in tooltips. DescVal string `csv:"descval"` // Possible parameter value for the DescFunc function. Controls how the value of the stat is displayed. DescStrPos string `csv:"descstrpos"` // Possible parameter value for the DescFunc function. Uses a string to display the item stat in a tooltip when its value is positive. DescStrNeg string `csv:"descstrneg"` // Possible parameter value for the DescFunc function. Uses a string to display the item stat in a tooltip when its value is negative. DescStr2 string `csv:"descstr2"` // Possible parameter value for the DescFunc function. Uses a string to append to an item stat's string in a tooltip. DGrp int `csv:"dgrp"` // Assigns the stat to a group ID value. DGrpFunc int `csv:"dgrpfunc"` // Controls how the shared group of stats is displayed in tooltips. DGrpVal int `csv:"dgrpval"` // Possible parameter value for the DGrpFunc function. Controls how the value of the stat is displayed. DGrpStrPos string `csv:"dgrpstrpos"` // Possible parameter value for the DGrpFunc function. Uses a string to display the item stat in a tooltip when its value is positive. DGrpStrNeg string `csv:"dgrpstrneg"` // Possible parameter value for the DGrpFunc function. Uses a string to display the item stat in a tooltip when its value is negative. DGrpStr2 string `csv:"dgrpstr2"` // Possible parameter value for the DGrpFunc function. Uses a string to append to an item stat's string in a tooltip. Stuff int `csv:"stuff"` // Used as a bit shift value for handling the conversion of skill IDs and skill levels to bit values for the stat. AdvDisplay int `csv:"advdisplay"` // Controls how the stat appears in the Advanced Stats UI. }
ItemStatCost represents the functionalities for each possible stat on a unit.
type ItemStorePage ¶
type ItemStorePage string
ItemStorePage represents the UI tab page on the NPC shop UI to display specific item types
const ( StorePageArmor ItemStorePage = "armo" StorePageWeapons ItemStorePage = "weap" StorePageMagic ItemStorePage = "mag" StorePageMisc ItemStorePage = "misc" )
type ItemSuperType ¶
type ItemSuperType int
ItemSuperType represents the item types.
const ( TypeArmor ItemSuperType = iota TypeWeapon TypeMisc )
type ItemType ¶
type ItemType struct { // This is a reference field to define the Item Type name. ItemType string `csv:"ItemType"` // Defines the unique pointer for this Item Type, which is used by the following files: weapons.txt, armor.txt, misc.txt, cubemain.txt, skills.txt, treasureclassex.txt. Code string `csv:"Code"` // Points to the index of another Item Type to reference as a parent. This is used to create a hierarchy for Item Types where the parents will have more universal settings shared across the related children. Equiv1 string `csv:"Equiv1"` // Points to the index of another Item Type to reference as a parent. This is used to create a hierarchy for Item Types where the parents will have more universal settings shared across the related children. Equiv2 string `csv:"Equiv2"` // Boolean Field. If equals 1, then the item can be repaired by an NPC in the shop UI. If equals 0, then the item cannot be repaired. Repair bool `csv:"Repair"` // Boolean Field. If equals 1, then the item can be equipped by a character (also will require the "BodyLoc1" & "BodyLoc2" fields as parameters). If equals 0, then the item can only be carried in the inventory, stash, or Horadric Cube. Body bool `csv:"Body"` // These are required parameters if the "Body" field is enabled. These fields specify the inventory slots where the item can be equipped. BodyLoc1 string `csv:"BodyLoc1"` BodyLoc2 string `csv:"BodyLoc2"` // Points to the index of another Item Type as the required equipped Item Type to be used as ammo. Shoots string `csv:"Shoots"` // Points to the index of another Item Type as the required equipped Item Type to be used as this ammo's weapon. Quiver string `csv:"Quiver"` // Boolean Field. If equals 1, then it determines that this item is a throwing weapon. If equals 0, then ignore this. Throwable bool `csv:"Throwable"` // Boolean Field. If equals 1, then the item (considered ammo in this case) will be automatically transferred from the inventory to the required "BodyLoc" when another item runs out of that specific ammo. If equals 0, then ignore this. Reload bool `csv:"Reload"` // Boolean Field. If equals 1, then the item in the inventory will replace a matching equipped item if that equipped item was destroyed. If equals 0, then ignore this. ReEquip bool `csv:"ReEquip"` // Boolean Field. If equals 1, then if the player picks up a matching Item Type, then they will try to automatically stack together. If equals 0, then ignore this. AutoStack bool `csv:"AutoStack"` // Boolean Field. If equals 1, then this item will always have the Magic quality (unless it is a Quest item). If equals 0, then ignore this. Magic bool `csv:"Magic"` // Boolean Field. If equals 1, then this item can spawn as a Rare quality. If equals 0, then ignore this. Rare bool `csv:"Rare"` // Boolean Field. If equals 1, then this item will always have the Normal quality. If equals 0, then ignore this. Normal bool `csv:"Normal"` // Boolean Field. If equals 1, then this item can be placed in the character's belt slots. If equals 0, then ignore this. Beltable bool `csv:"Beltable"` // Determines the maximum possible number of sockets that can be spawned on the item when the item level is greater than or equal to 1 and less than or equal to the "MaxSocketsLevelThreshold1" value. The number of sockets is capped by the "gemsockets" value from the weapons.txt/armor.txt/misc.txt file. MaxSockets1 int `csv:"MaxSockets1"` // Defines the item level threshold between using the "MaxSockets1" and "MaxSockets2" field. MaxSocketsLevelThreshold1 int `csv:"MaxSocketsLevelThreshold1"` // Determines the maximum possible number of sockets that can be spawned on the item when the item level is greater than the "MaxSocketsLevelThreshold1" value and less than or equal to the "MaxSocketsLevelThreshold2". The number of sockets is capped by the "gemsockets" value from the weapons.txt/armor.txt/misc.txt file. MaxSockets2 int `csv:"MaxSockets2"` // Defines the item level threshold between using the "MaxSockets2" and "MaxSockets3" field. MaxSocketsLevelThreshold2 int `csv:"MaxSocketsLevelThreshold2"` // Determines the maximum possible number of sockets that can be spawned on the item when the item level is greater than the "MaxSocketsLevelThreshold2" value. The number of sockets is capped by the "gemsockets" value from the weapons.txt/armor.txt/misc.txt file. MaxSockets3 int `csv:"MaxSockets3"` // Boolean Field. If equals 1, then allow this Item Type to be used in default treasure classes. If equals 0, then ignore this. TreasureClass bool `csv:"TreasureClass"` // Determines the chance for the item to spawn with stats, when created as a random Weapon/Armor/Misc item. Used in the following formula: IF RANDOM(0, ("Rarity" - [Current Act Level])) > 0, THEN spawn stats. Rarity int `csv:"Rarity"` // Determines if the Item Type should have class specific item skill modifiers. StaffMods string `csv:"StaffMods"` // Determines if this item should be usable only by a specific class. Class string `csv:"Class"` // Tracks the number of inventory graphics used for this item type. This number must match the number of "InvGfx" fields used. VarInvGfx int `csv:"VarInvGfx"` // Defines a DC6 file to use for the item's inventory graphics. The number of "InvGfx" fields used should match the value used in "VarInvGfx". InvGfx1 string `csv:"InvGfx1"` InvGfx2 string `csv:"InvGfx2"` InvGfx3 string `csv:"InvGfx3"` InvGfx4 string `csv:"InvGfx4"` InvGfx5 string `csv:"InvGfx5"` InvGfx6 string `csv:"InvGfx6"` }
ItemType represents the general statistics for each type of item, used for the item type fields in other files.
type ItemUnique ¶
type ItemUnique struct { Index string `csv:"index"` // Points to a string key value to use as the Unique item's name. Version int `csv:"version"` // Defines which game version to create this item (<100 = Classic mode | 100 = Expansion mode). Enabled bool `csv:"enabled"` // If equals 1, then this item can be rolled as a choice when randomly dropping a unique. If equals 0, then this item cannot be dropped randomly, but can still be dropped explicitly from a treasure class. FirstLadderSeason int `csv:"firstLadderSeason"` // The first ladder season the unique item can be dropped or created on (inclusive). If blank or 0, then it is available in non-ladder. LastLadderSeason int `csv:"lastLadderSeason"` // The last ladder season the unique item is ladder-only (inclusive). Must be used in conjunction with firstLadderSeason. Rarity int `csv:"rarity"` // Modifies the chances that this Unique item will spawn compared to other Unique items. Each "rarity" value gets summed together to give a total denominator used for the random roll for the item. NoLimit bool `csv:"nolimit"` // Requires the "quest" field from the misc.txt file to be enabled. If equals 1, then this item can be created and will automatically be identified. If equals 0, then ignore this. Lvl int `csv:"lvl"` // The item level for the item, which controls what object or monster needs to be in order to drop this item. LvlReq int `csv:"lvl req"` // The minimum character level required to equip the item. Code string `csv:"code"` // Defines the baseline item code to use for this Unique item (must match the "code" field value from weapons.txt, armor.txt, or misc.txt). Carry1 bool `csv:"carry1"` // If equals 1, then players can only carry one of these items in their inventory. If equals 0, then ignore this. CostMult int `csv:"cost mult"` // Multiplicative modifier for the Unique item's buy, sell, and repair costs. CostAdd int `csv:"cost add"` // Flat integer modification to the Unique item's buy, sell, and repair costs. Added after the "cost mult" has modified the costs. ChrTransform string `csv:"chrtransform"` // Controls the color change of the item when equipped on a character or dropped on the ground. If empty, then the item will have the default item color. InvTransform string `csv:"invtransform"` // Controls the color change of the item in the inventory UI. If empty, then the item will have the default item color. InvFile string `csv:"invfile"` // An override for the "invfile" field from the weapon.txt, armor.txt, or misc.txt files. FlippyFile string `csv:"flippyfile"` // An override for the "flippyfile" field from the weapon.txt, armor.txt, or misc.txt files. DropSound string `csv:"dropsound"` // An override for the "dropsound" field from the weapon.txt, armor.txt, or misc.txt files. DropSFXFrame int `csv:"dropsfxframe"` // An override for the "dropsfxframe" field from the weapon.txt, armor.txt, or misc.txt files. UseSound string `csv:"usesound"` // An override for the "usesound" field from the weapon.txt, armor.txt, or misc.txt files. Prop1 string `csv:"prop1"` // Controls the first item property for the Unique item. Par1 string `csv:"par1"` // The stat's "parameter" value associated with the first property (prop1). Min1 int `csv:"min1"` // The stat's "min" value to assign to the first property (prop1). Max1 int `csv:"max1"` // The stat's "max" value to assign to the first property (prop1). Prop2 string `csv:"prop2"` // Controls the second item property for the Unique item. Par2 string `csv:"par2"` // The stat's "parameter" value associated with the second property (prop2). Min2 int `csv:"min2"` // The stat's "min" value to assign to the second property (prop2). Max2 int `csv:"max2"` // The stat's "max" value to assign to the second property (prop2). Prop3 string `csv:"prop3"` // Controls the third item property for the Unique item. Par3 string `csv:"par3"` // The stat's "parameter" value associated with the third property (prop3). Min3 int `csv:"min3"` // The stat's "min" value to assign to the third property (prop3). Max3 int `csv:"max3"` // The stat's "max" value to assign to the third property (prop3). Prop4 string `csv:"prop4"` // Controls the fourth item property for the Unique item. Par4 string `csv:"par4"` // The stat's "parameter" value associated with the fourth property (prop4). Min4 int `csv:"min4"` // The stat's "min" value to assign to the fourth property (prop4). Max4 int `csv:"max4"` // The stat's "max" value to assign to the fourth property (prop4). Prop5 string `csv:"prop5"` // Controls the fifth item property for the Unique item. Par5 string `csv:"par5"` // The stat's "parameter" value associated with the fifth property (prop5). Min5 int `csv:"min5"` // The stat's "min" value to assign to the fifth property (prop5). Max5 int `csv:"max5"` // The stat's "max" value to assign to the fifth property (prop5). Prop6 string `csv:"prop6"` // Controls the sixth item property for the Unique item. Par6 string `csv:"par6"` // The stat's "parameter" value associated with the sixth property (prop6). Min6 int `csv:"min6"` // The stat's "min" value to assign to the sixth property (prop6). Max6 int `csv:"max6"` // The stat's "max" value to assign to the sixth property (prop6). Prop7 string `csv:"prop7"` // Controls the seventh item property for the Unique item. Par7 string `csv:"par7"` // The stat's "parameter" value associated with the seventh property (prop7). Min7 int `csv:"min7"` // The stat's "min" value to assign to the seventh property (prop7). Max7 int `csv:"max7"` // The stat's "max" value to assign to the seventh property (prop7). Prop8 string `csv:"prop8"` // Controls the eighth item property for the Unique item. Par8 string `csv:"par8"` // The stat's "parameter" value associated with the eighth property (prop8). Min8 int `csv:"min8"` // The stat's "min" value to assign to the eighth property (prop8). Max8 int `csv:"max8"` // The stat's "max" value to assign to the eighth property (prop8). Prop9 string `csv:"prop9"` // Controls the ninth item property for the Unique item. Par9 string `csv:"par9"` // The stat's "parameter" value associated with the ninth property (prop9). Min9 int `csv:"min9"` // The stat's "min" value to assign to the ninth property (prop9). Max9 int `csv:"max9"` // The stat's "max" value to assign to the ninth property (prop9). Prop10 string `csv:"prop10"` // Controls the tenth item property for the Unique item. Par10 string `csv:"par10"` // The stat's "parameter" value associated with the tenth property (prop10). Min10 int `csv:"min10"` // The stat's "min" value to assign to the tenth property (prop10). Max10 int `csv:"max10"` // The stat's "max" value to assign to the tenth property (prop10). Prop11 string `csv:"prop11"` // Controls the eleventh item property for the Unique item. Par11 string `csv:"par11"` // The stat's "parameter" value associated with the eleventh property (prop11). Min11 int `csv:"min11"` // The stat's "min" value to assign to the eleventh property (prop11). Max11 int `csv:"max11"` // The stat's "max" value to assign to the eleventh property (prop11). Prop12 string `csv:"prop12"` // Controls the twelfth item property for the Unique item. Par12 string `csv:"par12"` // The stat's "parameter" value associated with the twelfth property (prop12). Min12 int `csv:"min12"` // The stat's "min" value to assign to the twelfth property (prop12). Max12 int `csv:"max12"` // The stat's "max" value to assign to the twelfth property (prop12). DiabloCloneWeight int `csv:"diablocloneweight"` // The amount of weight added to the Diablo Clone progress when this item is sold. }
ItemUnique represents a unique item in the game.
type ItemWeapon ¶
type ItemWeapon struct { Name string `csv:"name"` // Reference field to define the item. Version int `csv:"version"` // Game version to create this item (0 = Classic mode | 100 = Expansion mode). CompactSave int `csv:"compactsave"` // If 1, only the item's base stats will be stored in the character save, not any modifiers or additional stats. If 0, all of the items stats will be saved. Rarity int `csv:"rarity"` // Determines the chance that the item will randomly spawn (1/#). Higher value means rarer item. Depends on spawnable, quest, and item level being less than or equal to the area level. Affected by the relative Act number. Spawnable int `csv:"spawnable"` // If 1, this item can be randomly spawned. If 0, this item will never randomly spawn. Speed int `csv:"speed"` // For armor: Walk/Run Speed reduction when wearing the armor. For weapon: Attack Speed reduction when wearing the weapon. ReqStr int `csv:"reqstr"` // Amount of Strength attribute needed to use the item. ReqDex int `csv:"reqdex"` // Amount of Dexterity attribute needed to use the item. Durability int `csv:"durability"` // Base durability amount that the item will spawn with. NoDurability int `csv:"nodurability"` // If 1, the item will not have durability. If 0, the item will have durability. Level int `csv:"level"` // Base item level. Used for determining when the item is allowed to drop. ShowLevel int `csv:"ShowLevel"` // If 1, display the item level next to the item name. If 0, ignore this. LevelReq int `csv:"levelreq"` // Player level requirement for being able to use the item. Cost int `csv:"cost"` // Base gold cost of the item when sold by an NPC. Affected by item modifiers and rarity. GambleCost int `csv:"gamble cost"` // Gambling gold cost of the item on the Gambling UI. Code string `csv:"code"` // Unique 3 letter/number code for the item. Used as an identifier to reference the item. NameStr string `csv:"namestr"` // String Key used for the base item name. MagicLvl int `csv:"magic lvl"` // Magic level of the item, affecting magical item modifiers that can appear on the item (See automagic.txt). AutoPrefix int `csv:"auto prefix"` // Automatically picks an item affix name from a designated "group" value from the automagic.txt file, used when the item is Magical quality. AlternateGfx string `csv:"alternategfx"` // Unique 3 letter/number code to determine what in-game graphics to display on the player character when the item is equipped. NormCode string `csv:"normcode"` // Links to a "code" field to determine the normal version of the item. UberCode string `csv:"ubercode"` // Links to a "code" field to determine the Exceptional version of the item. UltraCode string `csv:"ultracode"` // Links to a "code" field to determine the Elite version of the item. Component string `csv:"component"` // Determines the layer of player animation when the item is equipped, using a code referenced from the Composit.txt file. InvWidth int `csv:"invwidth"` // Defines the width of grid cells that the item occupies in the player inventory. InvHeight int `csv:"invheight"` // Defines the height of grid cells that the item occupies in the player inventory. HasInv int `csv:"hasinv"` // If 1, the item will have its own inventory, allowing for the capability to socket gems, runes, or jewels. If 0, the item cannot have sockets. GemSockets int `csv:"gemsockets"` // Controls the maximum number of sockets allowed on this item, limited by the item's size based on "invwidth" and "invheight". GemApplyType string `csv:"gemapplytype"` // Determines which effect from a gem or rune will be applied when socketed into this item (See gems.txt). FlippyFile string `csv:"flippyfile"` // Controls which DC6 file to use for displaying the item in the game world when it is dropped on the ground (uses the file name as the input). InvFile string `csv:"invfile"` // Controls which DC6 file to use for displaying the item graphics in the inventory (uses the file name as the input). UniqueInvFile string `csv:"uniqueinvfile"` // Controls which DC6 file to use for displaying the item graphics in the inventory when it is a Unique quality item (uses the file name as the input). SetInvFile string `csv:"setinvfile"` // Controls which DC6 file to use for displaying the item graphics in the inventory when it is a Set quality item (uses the file name as the input). Useable int `csv:"useable"` // If 1, the item can be used with the right-click mouse button command (works with specific belt items or quest items). If 0, ignore this. Stackable int `csv:"stackable"` // If 1, the item will use a quantity field and handle stacking functionality. If 0, the item cannot be stacked. MinStack int `csv:"minstack"` // Controls the minimum stack count or quantity allowed on the item. Depends on "stackable" being enabled. MaxStack int `csv:"maxstack"` // Controls the maximum stack count or quantity allowed on the item. Depends on "stackable" being enabled. SpawnStack int `csv:"spawnstack"` // Controls the stack count or quantity that the item can spawn with. Depends on "stackable" being enabled. Transmogrify int `csv:"Transmogrify"` // If 1, the item will use the transmogrify function. If 0, ignore this. Depends on "useable" being enabled. TMogType string `csv:"TMogType"` // Links to a "code" field to determine which item is chosen to transmogrify this item to. TMogMin int `csv:"TMogMin"` // Controls the minimum quantity that the transmogrify item will have. Depends on what item was chosen in the "TMogType" field, and that the transmogrify item has quantity. TMogMax int `csv:"TMogMax"` // Controls the minimum quantity that the transmogrify item will have. Depends on what item was chosen in the "TMogType" field, and that the transmogrify item has quantity. Type string `csv:"type"` // Points to an Item Type defined in the ItemTypes.txt file, which controls how the item functions. Type2 string `csv:"type2"` // Points to a secondary Item Type defined in the ItemTypes.txt file, which controls how the item functions. Optional, adds more functionalities and possibilities with the item. DropSound string `csv:"dropsound"` // Points to a sound defined in the sounds.txt file. Used when the item is dropped on the ground. DropSfxFrame int `csv:"dropsfxframe"` // Defines which frame in the "flippyfile" animation to play the "dropsound" sound when the item is dropped on the ground. UseSound string `csv:"usesound"` // Points to a sound defined in the sounds.txt file. Used when the item is moved in the inventory or used. Unique int `csv:"unique"` // If 1, the item can only spawn as a Unique quality type. If 0, the item can spawn as other quality types. Transparent int `csv:"transparent"` // If 1, the item will be drawn transparent on the player model (similar to ethereal models). If 0, the item will appear solid on the player model. TransTbl int `csv:"transtbl"` // Controls what type of transparency to use, based on the "transparent" field being enabled. LightRadius int `csv:"lightradius"` // Controls the value of the light radius that this item can apply on the monster. This only affects monsters with this item equipped, not other types of units. Ignored if the item's component on the monster is "lit", "med", or "hvy". Belt int `csv:"belt"` // Controls which belt type to use for belt items only. Determines what index entry in the belts.txt file to use. Quest int `csv:"quest"` // Controls what quest class is tied to the item, enabling certain item functionalities for a specific quest. Any value greater than 0 also means the item is flagged as a quest item, affecting how it is displayed, traded, its rarity, and how it cannot be sold to an NPC. If 0, the item will not be flagged as a quest item. QuestDiffCheck int `csv:"questdiffcheck"` // If 1 and the "quest" field is enabled, then the game will check the current difficulty setting and tie that difficulty setting to the quest item. This means the player can have more than 1 of the same quest item as long as they are obtained per difficulty mode (Normal / Nightmare / Hell). If 0 and the "quest" field is enabled, then the player can only have 1 count of the quest item in the inventory, regardless of difficulty. MissileType string `csv:"missiletype"` // Points to the "Id" field from the Missiles.txt file, determining what type of missile is used when using the throwing weapons. DurWarning int `csv:"durwarning"` // Controls the threshold value for durability to display the low durability warning UI. Used if the item has durability. QntWarning int `csv:"qntwarning"` // Controls the threshold value for quantity to display the low quantity warning UI. Used if the item has stacks. MinDam int `csv:"mindam"` // The minimum physical damage provided by the item. MaxDam int `csv:"maxdam"` // The maximum physical damage provided by the item. StrBonus int `csv:"StrBonus"` // Percentage multiplier that gets multiplied by the player's current Strength attribute value to modify the bonus damage percent from the equipped item. Default value is 100 if this equals 1. DexBonus int `csv:"DexBonus"` // Percentage multiplier that gets multiplied by the player's current Dexterity attribute value to modify the bonus damage percent from the equipped item. Default value is 100 if this equals 1. GemOffset int `csv:"gemoffset"` // Determines the starting index offset for reading the gems.txt file when determining what effects gems or runes will have on the item based on the "gemapplytype" field. BitField1 int `csv:"bitfield1"` // Controls different flags that can affect the item, using an integer value to check against different bit fields using the "&" operator. Transform int `csv:"Transform"` // Controls the color palette change of the item for the character model graphics. InvTrans int `csv:"InvTrans"` // Controls the color palette change of the item for the inventory graphics. SkipName int `csv:"SkipName"` // If 1 and the item is Unique rarity, then skip adding the item's base name in its title. If 0, ignore this. NightmareUpgrade string `csv:"NightmareUpgrade"` // Links to another item's "code" field, determining which item will replace this item when generated in the NPC's store while the game is playing in Nightmare difficulty. If this field's code equals "xxx", then this item will not change in this difficulty. HellUpgrade string `csv:"HellUpgrade"` // Links to another item's "code" field, determining which item will replace this item when generated in the NPC's store while the game is playing in Hell difficulty. If this field's code equals "xxx", then this item will not change in this difficulty. Nameable int `csv:"Nameable"` // If 1, the item's name can be personalized by Anya for the Act 5 Betrayal of Harrogath quest reward. If 0, the item cannot be used for the personalized name reward. PermStoreItem int `csv:"PermStoreItem"` // If 1, this item will always appear on the NPC's store. If 0, the item will randomly appear on the NPC's store when appropriate. DiabloCloneWeight int `csv:"diablocloneweight"` // The amount of weight added to the diablo clone progress when this item is sold. When offline, selling this item will instead immediately spawn diablo clone. OneOrTwoHanded int `csv:"1or2handed"` // If 1, the item will be treated as a one-handed and two-handed weapon by the Barbarian class. If 0, the Barbarian can only use this weapon as either one-handed or two-handed, but not both. (Exclusive to weapons.txt) TwoHanded int `csv:"2handed"` // If 1, the item will be treated as a two-handed weapon. If 0, the item will be treated as a one-handed weapon. (Exclusive to weapons.txt) TwoHandWClass string `csv:"2handedwclass"` // Defines the two-handed weapon class, controlling what character animations are used when the weapon is equipped. (Exclusive to weapons.txt) TwoHandMinDam int `csv:"2handmindam"` // The minimum physical damage provided by the weapon if the item is two-handed. (Relies on the "2handed" field being enabled) TwoHandMaxDam int `csv:"2handmaxdam"` // The maximum physical damage provided by the weapon if the item is two-handed. (Relies on the "2handed" field being enabled) HitClass string `csv:"hitclass"` // Defines the hit class of the weapon, used to determine what SFX to use when the weapon hits an enemy. MinMisDam int `csv:"minmisdam"` // The minimum physical damage provided by the item if it is a throwing weapon. MaxMisDam int `csv:"maxmisdam"` // The maximum physical damage provided by the item if it is a throwing weapon. RangeAdder int `csv:"rangeadder"` // Adds extra range in grid spaces for melee attacks while the melee weapon is equipped. The baseline melee range is 1, and this field adds to that range. WeaponClass string `csv:"wclass"` // Defines the one-handed weapon class, controlling what character animations are used when the weapon is equipped. }
ItemWeapon represents the functionalities for weapon type items.
type LevelData ¶
type LevelData struct { // Name defines the unique name pointer for the area level, which is used in other files Name string `csv:"Name"` // Id defines the unique numeric ID for the area level, which is used in other files Id int `csv:"Id"` // Pal defines which palette file to use for the area level. // This uses index values from 0 to 4 to convey Act 1 to Act 5. Pal int `csv:"Pal"` // Act defines the Act number that the area level is a part of. // This uses index values from 0 to 4 to convey Act 1 to Act 5. Act int `csv:"Act"` // QuestFlag controls what quest record that the player needs to have completed before being allowed to enter this area level, while playing in Classic Mode. // Each quest can have multiple quest records, and this field is looking for a specific quest record from a quest. QuestFlag int `csv:"QuestFlag"` // QuestFlagEx controls what quest record that the player needs to have completed before being allowed to enter this area level, while playing in Expansion Mode. // Each quest can have multiple quest records, and this field is looking for a specific quest record from a quest. QuestFlagEx int `csv:"QuestFlagEx"` // Layer defines a unique numeric ID that is used to identify which Automap data belongs to which area level when saving and loading data from the character save. Layer int `csv:"Layer"` // SizeX & SizeX(N) & SizeX(H) specify the Length tile size values of an entire area level, // which are used for determining how to build the level, for Normal, Nightmare, and Hell Difficulty, respectively. SizeX, SizeXN, SizeXH int `csv:"SizeX,SizeX(N),SizeX(H)"` // SizeY & SizeY(N) & SizeY(H) specify the Width tile size values of an entire area level, // which are used for determining how to build the level, for Normal, Nightmare, and Hell Difficulty, respectively. SizeY, SizeYN, SizeYH int `csv:"SizeY,SizeY(N),SizeY(H)"` // OffsetX & OffsetY specify the location offset coordinates (measured in tile size) for the origin point of the area level in the world. OffsetX, OffsetY int `csv:"OffsetX,OffsetY"` // Depend assigns another level to be this area level’s depended level, // which controls this area level’s position and how it starts building its tiles. // Uses the level "Id" field. If this equals 0, then ignore this. Depend int `csv:"Depend"` // Teleport controls the functionality of the Sorceress Teleport skill and the Assassin Dragon Flight skill on the area level. Teleport int `csv:"Teleport"` // Rain is a Boolean Field. If equals 1, then allow rain to play its effects on the area level. // If the level is part of Act 5, then it will snow on the area level, instead of rain. // If equals 0, then it will never rain on the area level. Rain int `csv:"Rain"` // Mud is a Boolean Field. If equals 1, then random bubbles will animate on the tiles that are flagged as water tiles. // If equals 0, then ignore this. Mud int `csv:"Mud"` // NoPer is a Boolean Field. If equals 1, then allow the use of the display option of Perspective Mode while the player is in the level. // If equals 0, then disable the option of Perspective Mode and force the player to use Orthographic Mode while the player is in the level. NoPer int `csv:"NoPer"` // LOSDraw is a Boolean field. If equals 1, then the level will check the player’s line of sight before drawing monsters. // If equals 0, then ignore this. LOSDraw int `csv:"LOSDraw"` // FloorFilter is a Boolean field. If equals 1 and if the floor’s layer in the area level equals 1, // then draw the floor tiles with a linear texture sampler. If equals 0, then draw the floor tiles with a nearest texture sampler. FloorFilter int `csv:"FloorFilter"` // BlankScreen is a Boolean field. If equals 1, then draw the area level screen. // If equals 0, then do not draw the area level screen, meaning that the level will be a blank screen. BlankScreen int `csv:"BlankScreen"` // DrawEdges is a Boolean field. If equals 1, then draw the areas in levels that are not covered by floor tiles. // If equals 0, then ignore this. DrawEdges int `csv:"DrawEdges"` // DrlgType determines the type of Dynamic Random Level Generation used for building and handling different elements of the area level. // Uses a numeric code to handle which type of DRLG is used. DrlgType int `csv:"DrlgType"` // LevelType defines the Level Type used for this area level. // Uses the Level Type’s ID, which is determined by what order it is defined in the LvlType.txt file. LevelType int `csv:"LevelType"` // SubType controls the group of tile substitutions for the area level (see LvlSub.txt). // There are defined subtypes to choose from. SubType int `csv:"SubType"` // SubTheme controls which theme number to use in a Level Substitution (See LvlSub.txt). // The allowed values are 0 to 4, which convey which "Prob#", "Trials#", and "Max#" field to use from the LvlSub.txt file. // If this equals -1, then there is no sub-theme for the area level. SubTheme int `csv:"SubTheme"` // SubWaypoint controls the level substitutions for adding waypoints in the area level (see LvlSub.txt). // This uses a defined subtype to choose from (See "SubType"). This will depend on the room having a waypoint tile. SubWaypoint int `csv:"SubWaypoint"` // SubShrine controls the level substitutions for adding shrines in the area level (see LvlSub.txt). // This uses a defined subtype to choose from (See "SubType"). This will depend on the room allowing for a shrine to spawn. SubShrine int `csv:"SubShrine"` // Vis0 (to Vis7) defines the visibility of other area levels involved with this area level, // allowing for travel functionalities between levels. // This uses the "Id" field of another defined area level to link with this area level. // If this equals 0, then no area level is specified. Vis0, Vis1, Vis2, Vis3, Vis4, Vis5, Vis6, Vis7 int `csv:"Vis0,Vis1,Vis2,Vis3,Vis4,Vis5,Vis6,Vis7"` // Warp0 (to Warp7) uses the "Id" field from LevelWarp.txt, which defines which Level Warp to use when exiting the area level. // This is connected with the definition of the related "Vis#" field. // If this equals -1, then no Level Warp is specified, which should also mean that the related "Vis#" field is not defined. Warp0, Warp1, Warp2, Warp3, Warp4, Warp5, Warp6, Warp7 int `csv:"Warp0,Warp1,Warp2,Warp3,Warp4,Warp5,Warp6,Warp7"` // Intensity controls the intensity value of the area level’s ambient colors. // This affects the brightness of the room’s RGB colors. // Uses a value between 0 and 128. // If all these related fields equal 0, then the game ignores setting the area level’s ambient colors. Intensity int `csv:"Intensity"` // Red controls the red value of the area level’s ambient colors. // Uses a value between 0 and 255. Red int `csv:"Red"` // Green controls the green value of the area level’s ambient colors. // Uses a value between 0 and 255. Green int `csv:"Green"` // Blue controls the blue value of the area level’s ambient colors. // Uses a value between 0 and 255. Blue int `csv:"Blue"` // Portal is a Boolean Field. If equals 1, then this area level will be flagged as a portal level, // which is saved in the player’s information and can be used for keeping track of the player’s portal functionalities. // If equals 0, then ignore this. Portal int `csv:"Portal"` // Position is a Boolean Field. If equals 1, then enable special casing for positioning the player on the area level. // This can mean that the player could spawn in a different location on the area level, // depending on the level room’s position type. // An example can be when the player spawns in a town when loading the game, or using a waypoint, or using a town portal. // If equals 0, then ignore this. Position int `csv:"Position"` // SaveMonsters is a Boolean Field. If equals 1, then the game will save the monsters in the area level, // such as when all players leave the area level. // If equals 0, then monsters will not be saved and will be removed. // This is usually disabled for areas where monsters do not spawn. SaveMonsters int `csv:"SaveMonsters"` // Quest controls what quest record is attached to monsters that spawn in this area level. // This is used for specific quests handling lists of monsters in the area level. Quest int `csv:"Quest"` // WarpDist defines the minimum pixel distance from a Level Warp that a monster is allowed to spawn near. // Tile distance values are converted to game pixel distance values by multiplying the tile distance value by 160 / 32, where 160 is the width of pixels of a tile. WarpDist int `csv:"WarpDist"` // MonLvl & MonLvl(N) & MonLvl(H) control the overall monster level for the area level for Normal, Nightmare, and Hell Difficulty, respectively. // This is for Classic mode only. This can affect the highest item level allowed to drop in this area level. MonLvl, MonLvlN, MonLvlH int `csv:"MonLvl,MonLvl(N),MonLvl(H)"` // MonLvlEx & MonLvlEx(N) & MonLvlEx(H) control the overall monster level for the area level for Normal, Nightmare, and Hell Difficulty, respectively. // This is for Expansion mode only. This can affect the highest item level allowed to drop in this area level. MonLvlEx, MonLvlExN, MonLvlExH int `csv:"MonLvlEx,MonLvlEx(N),MonLvlEx(H)"` // MonDen & MonDen(N) & MonDen(H) control the monster density on the area level for Normal, Nightmare, and Hell Difficulty, respectively. // This is a random value out of 100000, which will determine whether to spawn or not spawn a monster pack in the room of the area level. // If this value equals 0, then no random monsters will populate on the area level. MonDen, MonDenN, MonDenH int `csv:"MonDen,MonDen(N),MonDen(H)"` // MonUMin & MonUMin(N) & MonUMin(H) define the minimum number of Unique Monsters that can spawn in the area level for Normal, Nightmare, and Hell Difficulty, respectively. // This field depends on the related "MonDen" field being defined. MonUMin, MonUMinN, MonUMinH int `csv:"MonUMin,MonUMin(N),MonUMin(H)"` // MonUMax & MonUMax(N) & MonUMax(H) define the maximum number of Unique Monsters that can spawn in the area level for Normal, Nightmare, and Hell Difficulty, respectively. // This field depends on the related "MonDen" field being defined. // Each room in the area level will attempt to spawn a Unique Monster with a 5/100 random chance, // and this field’s value will cap the number of successful attempts for the entire area level. MonUMax, MonUMaxN, MonUMaxH int `csv:"MonUMax,MonUMax(N),MonUMax(H)"` // MonWndr is a Boolean Field. If equals 1, then allow Wandering Monsters to spawn on this area level (see wanderingmon.txt). // This field depends on the related "MonDen" field being defined. If equals 0, then ignore this. MonWndr int `csv:"MonWndr"` // MonSpcWalk defines a distance value, used to handle monster pathing AI when the level has certain pathing blockers, // such as jail bars or rivers. // In these cases, monsters will walk randomly until a player is located within this distance value, // or when the monsters find a possible path to target the player. // If this equals 0, then ignore this field. MonSpcWalk int `csv:"MonSpcWalk"` // NumMon controls the number of different monsters randomly spawn in the area level. // The maximum value is 13. This controls the number of random selections from the 25 related "mon#" and "umon#" fields or "nmmon#" fields, depending on the game difficulty. NumMon int `csv:"NumMon"` // mon1 (to mon25) define which monsters can spawn on the area level for Normal Difficulty. // Uses the monster "Id" field from the monstats.txt file. Mon1, Mon2, Mon3, Mon4, Mon5, Mon6, Mon7, Mon8, Mon9, Mon10, Mon11, Mon12, Mon13, Mon14, Mon15, Mon16, Mon17, Mon18, Mon19, Mon20, Mon21, Mon22, Mon23, Mon24, Mon25 int `` /* 146-byte string literal not displayed */ // rangedspawn is a Boolean Field. If equals 1, then for the first monster, try to pick a ranged type. // If equals 0, then ignore this. RangedSpawn int `csv:"rangedspawn"` // nmon1 (to nmon25) define which monsters can spawn on the area level for Nightmare Difficulty and Hell Difficulty. // Uses the monster "Id" field from the monstats.txt file. Nmon1, Nmon2, Nmon3, Nmon4, Nmon5, Nmon6, Nmon7, Nmon8, Nmon9, Nmon10, Nmon11, Nmon12, Nmon13, Nmon14, Nmon15, Nmon16, Nmon17, Nmon18, Nmon19, Nmon20, Nmon21, Nmon22, Nmon23, Nmon24, Nmon25 int `` /* 171-byte string literal not displayed */ // umon1 (to umon25) define which monsters can spawn as Unique monsters on this area level for Normal Difficulty. // Uses the monster "Id" field from the monstats.txt file. Umon1, Umon2, Umon3, Umon4, Umon5, Umon6, Umon7, Umon8, Umon9, Umon10, Umon11, Umon12, Umon13, Umon14, Umon15, Umon16, Umon17, Umon18, Umon19, Umon20, Umon21, Umon22, Umon23, Umon24, Umon25 int `` /* 171-byte string literal not displayed */ // cmon1 (to cmon4) define which Critter monsters can spawn on the area level. // Uses the monster "Id" field from the monstats.txt file. // Critter monsters are determined by the "critter" field from the monstats2.txt file. Cmon1, Cmon2, Cmon3, Cmon4 int `csv:"cmon1,cmon2,cmon3,cmon4"` // cpct1 (to cpct4) control the percent chance (out of 100) to spawn a Critter monster on the area level. Cpct1, Cpct2, Cpct3, Cpct4 int `csv:"cpct1,cpct2,cpct3,cpct4"` // camt1 (to camt4) control the amount of Critter monsters to spawn on the area level after they succeeded their random spawn chance from the related "cpct#" field. Camt1, Camt2, Camt3, Camt4 int `csv:"camt1,camt2,camt3,camt4"` // Themes control the type of theme when building a level room. // This value is a summation of possible values to build a bit mask for determining which themes to use when building a level room. Themes int `csv:"Themes"` // SoundEnv uses the "Index" field from SoundEnviron.txt, which controls what music is played while the player is in the area level. SoundEnv int `csv:"SoundEnv"` // Waypoint defines the unique numeric ID for the Waypoint in the area level. // If this value is greater than or equal to 255, then ignore this field. Waypoint int `csv:"Waypoint"` // LevelName is a String Field. Used for displaying the name of the area level on the Automap or when hovering the mouse cursor over the waypoint button. // The value is the string identifier defined in the String.tbl file. LevelName string `csv:"LevelName"` // ObjectID defines a numeric ID to specify which object group belongs to the area level (See LevelWarp.txt). // If this value is greater than or equal to 255, then ignore this field. ObjGrp0, ObjGrp1, ObjGrp2, ObjGrp3, ObjGrp4, ObjGrp5, ObjGrp6, ObjGrp7 int `csv:"ObjGrp0,ObjGrp1,ObjGrp2,ObjGrp3,ObjGrp4,ObjGrp5,ObjGrp6,ObjGrp7"` ObjPrb0, ObjPrb1, ObjPrb2, ObjPrb3, ObjPrb4, ObjPrb5, ObjPrb6, ObjPrb7 int `csv:"ObjPrb0,ObjPrb1,ObjPrb2,ObjPrb3,ObjPrb4,ObjPrb5,ObjPrb6,ObjPrb7"` // Defines what group this level belongs to. Used for condensing level names // in desecrated (terror) zones messaging. See LevelGroups.txt. LevelGroup string }
LevelData represents the data fields in the "Levels.txt" file.
type LevelGroup ¶
type LevelGroup struct { Name string `csv:"Name"` // Defines the unique name pointer for the level group, which is used in other files ID int `csv:"Id"` // Defines the unique numeric ID for the level group, which is used in other files GroupName string `csv:"GroupName"` // String Field. Used for displaying the name of the level group, such as when all levels in a group have been desecrated. }
LevelGroup represents the data structure for controlling how the game groups levels together. This has currently no gameplay purpose and is mainly used for condensing level names in desecrated (terror) zone messaging.
type LevelMazeData ¶
type LevelMazeData struct { // Name is a reference field to describe the area level. Name string `csv:"Name"` // Level refers to the "Id" field from the Levels.txt file. Level int `csv:"Level"` // Rooms, RoomsN, RoomsH control the total number of rooms that a Level Maze will generate for Normal, Nightmare, and Hell Difficulty, respectively. Rooms, RoomsN, RoomsH int `csv:"Rooms,Rooms(N),Rooms(H)"` // SizeX and SizeY control the length and width sizes of each room (ds1 map files) that is added to the Level Maze. This is measured in tile sizes. SizeX, SizeY int `csv:"SizeX,SizeY"` // Merge affects the probability that a room gets an adjacent room linked next to it. This is a random chance out of 1000. Merge int `csv:"Merge"` }
LevelMazeData represents the data from the "LvlMaze.txt" file.
type LevelName ¶
type LevelName string
LevelName represents the level types for the Automap.
const ( LevelTypeNone LevelName = "Level ItemSuperType None" LevelType1Town LevelName = "Level ItemSuperType 1 Town" LevelType1Wilderness LevelName = "Level ItemSuperType 1 Wilderness" LevelType1Cave LevelName = "Level ItemSuperType 1 Cave" LevelType1Crypt LevelName = "Level ItemSuperType 1 Crypt" LevelType1Monastery LevelName = "Level ItemSuperType 1 Monestary" LevelType1Courtyard LevelName = "Level ItemSuperType 1 Courtyard" LevelType1Barracks LevelName = "Level ItemSuperType 1 Barracks" LevelType1Jail LevelName = "Level ItemSuperType 1 Jail" LevelType1Cathedral LevelName = "Level ItemSuperType 1 Cathedral" LevelType1Catacombs LevelName = "Level ItemSuperType 1 Catacombs" LevelType1Tristram LevelName = "Level ItemSuperType 1 Tristram" LevelType2Town LevelName = "Level ItemSuperType 2 Town" LevelType2Sewer LevelName = "Level ItemSuperType 2 Sewer" LevelType2Harem LevelName = "Level ItemSuperType 2 Desert" LevelType2Basement LevelName = "Level ItemSuperType 2 Sewer" LevelType2Desert LevelName = "Level ItemSuperType 2 Desert" LevelType2Tomb LevelName = "Level ItemSuperType 2 Tomb" LevelType2Lair LevelName = "Level ItemSuperType 2 Lair" LevelType2Arcane LevelName = "Level ItemSuperType 2 Arcane" LevelType3Town LevelName = "Level ItemSuperType 3 Town" LevelType3Jungle LevelName = "Level ItemSuperType 3 Jungle" LevelType3Kurast LevelName = "Level ItemSuperType 3 Kurast" LevelType3Spider LevelName = "Level ItemSuperType 3 Spider" LevelType3Dungeon LevelName = "Level ItemSuperType 3 Dungeon" LevelType3Sewer LevelName = "Level ItemSuperType 3 Sewer" LevelType4Town LevelName = "Level ItemSuperType 4 Town" LevelType4Mesa LevelName = "Level ItemSuperType 4 Mesa" LevelType4Lava LevelName = "Level ItemSuperType 4 Hell" LevelType5Town LevelName = "Level ItemSuperType 5 Town" LevelType5Siege LevelName = "Level ItemSuperType 6 Siege" LevelType5Barricade LevelName = "Level ItemSuperType 6 Barricade" LevelType5Temple LevelName = "Level ItemSuperType 6 Temple" LevelType5IceCaves LevelName = "Level ItemSuperType 5 Ice Caves" LevelType5Baal LevelName = "Level ItemSuperType 5 Baal" LevelType5Lava LevelName = "Level ItemSuperType 5 Lava" )
Level type constants for the Automap.
type LevelPreset ¶
type LevelPreset struct { // Name is a reference field to define the Level Preset. Name string `csv:"Name"` // Def defines the unique numeric ID for the Level Preset. This is referenced in other files. Def int `csv:"Def"` // LevelId refers to the "Id" field from the Levels.txt file. If this value is not equal to 0, // then this Level Preset is used to build that entire area level. If this value is equal to 0, // then the Level Preset does not define the entire area level and is used as a part of constructing area levels. LevelId int `csv:"LevelId"` // Populate is a Boolean Field. If equals 1, then units are allowed to spawn in the Level Preset. // If equals 0, then units will never spawn in the Level Preset. Populate int `csv:"Populate"` // Logicals is a Boolean Field. If equals 1, then the Level Preset allows for wall transparency to function. // If equals 0, then walls will always appear solid. Logicals int `csv:"Logicals"` // Outdoors is a Boolean Field. If equals 1, then the Level Preset will be classified as an outdoor area, // which can mean that lighting will function differently. If equals 0, then the Level Preset will be classified as an indoor area. Outdoors int `csv:"Outdoors"` // Animate is a Boolean Field. If equals 1, then the game will animate the tiles in the Level Preset. // If equals 0, then ignore this. Animate int `csv:"Animate"` // KillEdge is a Boolean Field. If equals 1, then the game will remove tiles that border the size of the Level Preset. // If equals 0, then ignore this. KillEdge int `csv:"KillEdge"` // FillBlanks is a Boolean Field. If equals 1, then all blank tiles in the Level Preset will be filled with unwalkable tiles. // If equals 0, then ignore this. FillBlanks int `csv:"FillBlanks"` // SizeX specifies the Length tile size value of the Level Preset, which is used for determining how big to build area levels. // This value is equal to 0 for Level Presets that are static. SizeX int `csv:"SizeX"` // SizeY specifies the Width tile size value of the Level Preset, which is used for determining how big to build area levels. // This value is equal to 0 for Level Presets that are static. SizeY int `csv:"SizeY"` // AutoMap is a Boolean Field. If equals 1, then this Level Preset will be automatically completely revealed on the Automap. // If equals 0, then this Level Preset will be hidden on the Automap and will need to be explored. AutoMap int `csv:"AutoMap"` // Scan is a Boolean Field. If equals 1, then this Level Preset will allow the usage of warping with waypoints // (This requires that the Level Preset has a waypoint object). If equals 0, then ignore this. Scan int `csv:"Scan"` // Pops defines how many Pop tiles are defined in the Level Preset file. // These Pop tiles are mainly used for controlling the roof and wall popping when a player enters a building in an area. Pops int `csv:"Pops"` // PopPad determines the size of the Pop tile area, by using an offset value. // This offset value can increase or decrease the size of the Pop tile size if it has a positive or negative value. PopPad int `csv:"PopPad"` // Files determines the number of different versions to use for the Level Preset. // This value acts as a range, which the game will use for randomly choosing one of the "File#" fields to build the Level Preset. // This is how the Level Presets have variety when the area level is being built. Files int `csv:"Files"` // File1 to File6 specify the name of which ds1 file to use. // The ds1 files contain data for building Level Presets. // If this value equals 0, then this field will be ignored. // The number of these defined fields should match the value used in the "Files" field. File1 string `csv:"File1"` File2 string `csv:"File2"` File3 string `csv:"File3"` File4 string `csv:"File4"` File5 string `csv:"File5"` File6 string `csv:"File6"` // Dt1Mask functions as a bit field mask with a size of a 32-bit value. // This explains to the ds1 file which of the 32 dt1 tile files to use from a Level ItemSuperType when assembling the Level Preset. // Each "File#" field from LevelType.txt is assigned a bit value, up to the 32 possible bit values. // (For example: File1 = 1, File2=2, File3 = 4, File4=8, File5=16....File32 = 2147483648). // To build the "Dt1Mask", you would select which "File#" fields to use from LevelTypes.txt // and add their associated bit values together for a total value. This total value is the bitmask value. Dt1Mask int `csv:"Dt1Mask"` }
LevelPreset represents the data structure for Level Preset information.
type LevelSubstitutionData ¶
type LevelSubstitutionData struct { // Name is a reference field to describe the Level Substitution. Name string `csv:"Name"` // Type refers to the "SubType" field from the Levels.txt file. This defines a group that multiple substitutions can share. Type int `csv:"ItemSuperType"` // File specifies the name of the ds1 file to use. The ds1 files contain data for building Level Presets. File string `csv:"File"` // CheckAll is a Boolean Field. If equals 1, then substitute each tile in the room. If equals 0, then substitute random tiles in the room. CheckAll int `csv:"CheckAll"` // BordType controls how often substituting tiles can work for border tiles. BordType int `csv:"BordType"` // GridSize controls the tile size of a cluster for substituting tiles. This evenly affects both the X and Y size values of a room. GridSize int `csv:"GridSize"` // Dt1Mask functions as a bit field mask with a size of a 32 bit value. This explains to the ds1 file which of the 32 dt1 tile files to use from a Level Type when assembling selecting a tile for substitution. Dt1Mask int `csv:"Dt1Mask"` // Prob0 (to Prob4) affects the probability that the tile substitution is used. This is a random chance out of 100. Which "Prob#" field that is checked depends on the "SubTheme" value from the Levels.txt file. Prob0, Prob1, Prob2, Prob3, Prob4 int `csv:"Prob0,Prob1,Prob2,Prob3,Prob4"` // Trials0 (to Trials4) controls the number of times to randomly substitute tiles in a cluster. If this value equals -1, then the game will try to do as many tile substitutions that can be allowed based on the cluster and tile size. This field depends on the "CheckAll" field being equal to 0. Trials0, Trials1, Trials2, Trials3, Trials4 int `csv:"Trials0,Trials1,Trials2,Trials3,Trials4"` }
LevelSubstitutionData represents the data from LvlSub.txt. This file controls how tiles can be substituted in for other tiles. The game divides the level into clusters and iterates through these clusters to randomly substitute tiles, creating more visual diversity.
type LevelType ¶
type LevelType struct { // Name is a reference field to define the Level ItemSuperType. Name string `csv:"Name"` // File1 (to File32) specifies the name of which dt1 file to use. The dt1 files contain the images for each area tile found in each Act. If this value equals 0, then this field will be ignored. File1 string `csv:"File 1"` File2 string `csv:"File 2"` File3 string `csv:"File 3"` File4 string `csv:"File 4"` File5 string `csv:"File 5"` File6 string `csv:"File 6"` File7 string `csv:"File 7"` File8 string `csv:"File 8"` File9 string `csv:"File 9"` File10 string `csv:"File 10"` File11 string `csv:"File 11"` File12 string `csv:"File 12"` File13 string `csv:"File 13"` File14 string `csv:"File 14"` File15 string `csv:"File 15"` File16 string `csv:"File 16"` File17 string `csv:"File 17"` File18 string `csv:"File 18"` File19 string `csv:"File 19"` File20 string `csv:"File 20"` File21 string `csv:"File 21"` File22 string `csv:"File 22"` File23 string `csv:"File 23"` File24 string `csv:"File 24"` File25 string `csv:"File 25"` File26 string `csv:"File 26"` File27 string `csv:"File 27"` File28 string `csv:"File 28"` File29 string `csv:"File 29"` File30 string `csv:"File 30"` File31 string `csv:"File 31"` File32 string `csv:"File 32"` // Act defines which Act is related to the Level ItemSuperType. When loading an Act, the game will only use the Level Types associated with that Act number. Uses a decimal number to convey each Act number (Ex: A value of 3 means Act 3). Act uint `csv:"Act"` }
LevelType represents the data from LvlTypes.txt. This file controls which files containing tile graphics are used for creating maps. It looks at dt1 files, which contain tile images of the environments found in the game. Each line in this file defines a Level ItemSuperType and what files it uses.
The order of each Level ItemSuperType defined in this file conveys its ID value, which is referenced by the following files: Levels.txt, LvlPrest.txt The order of these Level Types should not be changed.
type LevelWarp ¶
type LevelWarp struct { // Name is the reference field to define the Level Warp. Name string `csv:"Name"` // Id defines the numeric ID for the type of Level Warp. Id string `csv:"Id"` // SelectX defines the horizontal offset of the starting left corner position of the Level Warp area. SelectX int `csv:"SelectX"` // SelectY defines the vertical offset of the starting left corner position of the Level Warp area. SelectY int `csv:"SelectY"` // SelectDX defines the horizontal offset from the starting position of the Level Warp area. SelectDX int `csv:"SelectDX"` // SelectDY defines the vertical offset from the starting position of the Level Warp area. SelectDY int `csv:"SelectDY"` // ExitWalkX defines the horizontal position of the destination location where the player will walk to after exiting to this Level Warp. ExitWalkX int `csv:"ExitWalkX"` // ExitWalkY defines the vertical position of the destination location where the player will walk to after exiting to this Level Warp. ExitWalkY int `csv:"ExitWalkY"` // OffsetX defines the horizontal position of the sub-tile for the Level Warp, where the player will appear when exiting to this area level. OffsetX int `csv:"OffsetX"` // OffsetY defines the vertical position of the sub-tile for the Level Warp, where the player will appear when exiting to this area level. OffsetY int `csv:"OffsetY"` // LitVersion is a boolean field. If it equals 1, then Level Warp tiles will change their appearance when highlighted. If it equals 0, then the Level Warp tiles will not change appearance when highlighted. LitVersion int `csv:"LitVersion"` // Tiles defines an index offset to determine which tile to use in the tile set for the highlighted version of the Level Warp. Tiles int `csv:"Tiles"` // NoInteract is a boolean field. If it equals 1, then the Level Warp cannot be directly interacted by the player. If it equals 0, then the player can interact with the Level Warp. NoInteract int `csv:"NoInteract"` // Direction defines the orientation of the Level Warp. Direction string `csv:"Direction"` // UniqueId defines the unique numeric ID for the Level Warp. Each Level Warp should have a unique ID so that the game can handle loading that specific Level Warp’s related files. UniqueId int `csv:"UniqueId"` }
LevelWarp represents the data from LvlWarp.txt. This file controls how the player is moved to different area levels, such as entrances and exits between different areas. This player transportation of between levels is defined as a Level Warp. Level Warps function as special tiles that are added to the area for controlling the location for where to transport the player.
This file is used by the Levels.txt file. LevelWarp represents the data from the "LvlWarp.txt" file.
type MagicPrefix ¶
type MagicPrefix struct { Name string `csv:"Name"` // Defines the item affix name Version int `csv:"version"` // Defines which game version to use this item affix (<100 = Classic mode | 100 = Expansion mode) Spawnable bool `csv:"spawnable"` // Boolean Field. If equals 1, then this item affix is used as part of the game’s randomizer for assigning item modifiers when an item spawns. If equals 0, then this item affix is never used. Rare bool `csv:"rare"` // Boolean Field. If equals 1, then this item affix can be used when randomly assigning item modifiers when a rare item spawns. If equals 0, then this item affix is not used for rare items. Level int `csv:"level"` // The minimum item level required for this item affix to spawn on the item. If the item level is below this value, then the item affix will not spawn on the item. MaxLevel int `csv:"maxlevel"` // The maximum item level required for this item affix to spawn on the item. If the item level is above this value, then the item affix will not spawn on the item. LevelReq int `csv:"levelreq"` // The minimum character level required to equip an item that has this item affix ClassSpecific string `csv:"classspecific"` // Controls if this item affix should only be used for class specific items. This relies on the class specified in the “Class” field from ItemTypes.txt, for the specific item. Class string `csv:"class"` // Controls which character class is required for the class specific level requirement “classlevelreq” field ClassLevelReq int `csv:"classlevelreq"` // The minimum character level required for a specific class in order to equip an item that has this item affix. This relies on the class specified in the “class” field. If equals null, then the class will default to using the “levelreq” field. Frequency int `csv:"frequency"` // Controls the probability that the affix appears on the item (a higher value means that the item affix will appear on the item more often). This value gets summed together with other “frequency” values from all possible item affixes that can spawn on the item, and then is used as a denominator value for the randomizer. Whichever item affix is randomly selected will be the one to appear on the item. The formula is calculated as the following: [Item Affix Selected] = [“frequency”] / [Total Frequency]. If the item has a magic level (from the “magic lvl” field in weapons.txt/armor.txt/misc.txt) then the magic level value is multiplied with this value. If equals 0, then this item affix will never appear on an item. Group int `csv:"group"` // Assigns an item affix to a specific group number. Items cannot spawn with more than 1 item affix with the same group number. This is used to guarantee that certain item affixes do not overlap on the same item. If this field is null, then the group number will default to group 0. Mod1Code string `csv:"mod1code"` // Controls the item properties for the item affix (Uses the “code” field from Properties.txt) Mod1Param int `csv:"mod1param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) Mod1Min int `csv:"mod1min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) Mod1Max int `csv:"mod1max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) Mod2Code string `csv:"mod2code"` // Controls the item properties for the item affix (Uses the “code” field from Properties.txt) Mod2Param int `csv:"mod2param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) Mod2Min int `csv:"mod2min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) Mod2Max int `csv:"mod2max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) Mod3Code string `csv:"mod3code"` // Controls the item properties for the item affix (Uses the “code” field from Properties.txt) Mod3Param int `csv:"mod3param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) Mod3Min int `csv:"mod3min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) Mod3Max int `csv:"mod3max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) TransformColor string `csv:"transformcolor"` // Controls the color change of the item after spawning with this item affix. If empty, then the item affix will not change the item’s color. (Uses Color Codes from the reference file colors.txt) ItemType1 string `csv:"itype1"` // Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt ItemType2 string `csv:"itype2"` // Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt ItemType3 string `csv:"itype3"` // Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt ItemType4 string `csv:"itype4"` // Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt ItemType5 string `csv:"itype5"` // Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt ItemType6 string `csv:"itype6"` // Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt ItemType7 string `csv:"itype7"` // Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt ExcludeType1 string `csv:"etype1"` // Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt ExcludeType2 string `csv:"etype2"` // Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt ExcludeType3 string `csv:"etype3"` // Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt ExcludeType4 string `csv:"etype4"` // Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt ExcludeType5 string `csv:"etype5"` // Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt ExcludeType6 string `csv:"etype6"` // Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt ExcludeType7 string `csv:"etype7"` // Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt Multiply int `csv:"multiply"` // Multiplicative modifier for the item’s buy and sell costs, based on the item affix (Calculated in 1024ths for buy cost and 4096ths for sell cost) Add int `csv:"add"` // Flat integer modification to the item’s buy and sell costs, based on the item affix }
MagicPrefix represents the data structure for controlling what item affixes (groups of item modifiers) are applied as the prefix for an item. These item affixes will appear at the start of an item’s name. This file is loaded together with other similar files in the following order: magicsuffix.txt, magicprefix.txt, automagic.txt. These combined files form the Item Mods structure.
type MagicSuffix ¶
type MagicSuffix struct { Name string `csv:"Name"` // Defines the item affix name Version int `csv:"version"` // Defines which game version to use this item affix (<100 = Classic mode | 100 = Expansion mode) Spawnable bool `csv:"spawnable"` // If equals 1, then this item affix is used as part of the game’s randomizer for assigning item modifiers when an item spawns. If equals 0, then this item affix is never used. Rare bool `csv:"rare"` // If equals 1, then this item affix can be used when randomly assigning item modifiers when a rare item spawns. If equals 0, then this item affix is not used for rare items. Level int `csv:"level"` // The minimum item level required for this item affix to spawn on the item. If the item level is below this value, then the item affix will not spawn on the item. MaxLevel int `csv:"maxlevel"` // The maximum item level required for this item affix to spawn on the item. If the item level is above this value, then the item affix will not spawn on the item. LevelReq int `csv:"levelreq"` // The minimum character level required to equip an item that has this item affix. ClassSpecific string `csv:"classspecific"` // Controls if this item affix should only be used for class-specific items. This relies on the class specified in the “Class” field from ItemTypes.txt, for the specific item. Class string `csv:"class"` // Controls which character class is required for the class-specific level requirement “classlevelreq” field. ClassLevelReq *int `csv:"classlevelreq"` // The minimum character level required for a specific class to equip an item that has this item affix. If equals null, then the class will default to using the “levelreq” field. Frequency float64 `csv:"frequency"` // Controls the probability that the affix appears on the item (a higher value means that the item affix will appear on the item more often). Group *int `csv:"group"` // Assigns an item affix to a specific group number. Items cannot spawn with more than 1 item affix with the same group number. This is used to guarantee that certain item affixes do not overlap on the same item. If this field is null, then the group number will default to group 0. Mod1Code string `csv:"mod1code"` // Controls the item properties for the item affix. (Uses the “code” field from Properties.txt) Mod1Param *string `csv:"mod1param"` // The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) Mod1Min *string `csv:"mod1min"` // The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) Mod1Max *string `csv:"mod1max"` // The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt) TransformColor *string `csv:"transformcolor"` // Controls the color change of the item after spawning with this item affix. If empty, then the item affix will not change the item’s color. (Uses Color Codes from the reference file colors.txt) IType1 string `csv:"itype1"` // Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt IType2 string `csv:"itype2"` // (Continued...) Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt IType3 string `csv:"itype3"` // (Continued...) Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt IType4 string `csv:"itype4"` // (Continued...) Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt IType5 string `csv:"itype5"` // (Continued...) Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt IType6 string `csv:"itype6"` // (Continued...) Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt IType7 string `csv:"itype7"` // (Continued...) Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt EType1 string `csv:"etype1"` // Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt EType2 string `csv:"etype2"` // (Continued...) Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt EType3 string `csv:"etype3"` // (Continued...) Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt EType4 string `csv:"etype4"` // (Continued...) Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt EType5 string `csv:"etype5"` // (Continued...) Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt Multiply int `csv:"multiply"` // Multiplicative modifier for the item’s buy and sell costs, based on the item affix (Calculated in 1024ths for buy cost and 4096ths for sell cost) Add int `csv:"add"` // Flat integer modification to the item’s buy and sell costs, based on the item affix }
MagicSuffix represents an item affix that is applied as a suffix for an item.
type MiscItem ¶
type MiscItem struct { Name string `csv:"name"` Version int `csv:"version"` CompactSave int `csv:"compactsave"` Rarity int `csv:"rarity"` Spawnable int `csv:"spawnable"` Speed int `csv:"speed"` ReqStr int `csv:"reqstr"` ReqDex int `csv:"reqdex"` Durability int `csv:"durability"` NoDurability int `csv:"nodurability"` Level int `csv:"level"` ShowLevel int `csv:"ShowLevel"` LevelReq int `csv:"levelreq"` Cost int `csv:"cost"` GambleCost int `csv:"gamble cost"` Code string `csv:"code"` NameStr string `csv:"namestr"` MagicLvl int `csv:"magic lvl"` AutoPrefix int `csv:"auto prefix"` AlternateGfx string `csv:"alternategfx"` NormCode string `csv:"normcode"` UberCode string `csv:"ubercode"` UltraCode string `csv:"ultracode"` Component string `csv:"component"` InvWidth int `csv:"invwidth"` InvHeight int `csv:"invheight"` HasInv int `csv:"hasinv"` GemSockets int `csv:"gemsockets"` GemApplyType string `csv:"gemapplytype"` FlippyFile string `csv:"flippyfile"` InvFile string `csv:"invfile"` UniqueInvFile string `csv:"uniqueinvfile"` SetInvFile string `csv:"setinvfile"` Useable int `csv:"useable"` Stackable int `csv:"stackable"` MinStack int `csv:"minstack"` MaxStack int `csv:"maxstack"` SpawnStack int `csv:"spawnstack"` Transmogrify int `csv:"Transmogrify"` TMogType string `csv:"TMogType"` TMogMin int `csv:"TMogMin"` TMogMax int `csv:"TMogMax"` Type string `csv:"type"` Type2 string `csv:"type2"` DropSound string `csv:"dropsound"` DropSfxFrame int `csv:"dropsfxframe"` UseSound string `csv:"usesound"` Unique int `csv:"unique"` Transparent int `csv:"transparent"` TransTbl string `csv:"transtbl"` LightRadius int `csv:"lightradius"` Belt int `csv:"belt"` Quest int `csv:"quest"` QuestDiffCheck int `csv:"questdiffcheck"` MissileType string `csv:"missiletype"` DurWarning int `csv:"durwarning"` QntWarning int `csv:"qntwarning"` MinDam int `csv:"mindam"` MaxDam int `csv:"maxdam"` StrBonus int `csv:"StrBonus"` DexBonus int `csv:"DexBonus"` GemOffset int `csv:"gemoffset"` BitField1 int `csv:"bitfield1"` Autobelt int `csv:"autobelt"` BetterGem string `csv:"bettergem"` Multibuy int `csv:"multibuy"` SpellIcon int `csv:"spellicon"` PSpell int `csv:"pspell"` State string `csv:"state"` CState1 string `csv:"cstate1"` CState2 string `csv:"cstate2"` Len int `csv:"len"` Stat1 string `csv:"stat1"` Stat2 string `csv:"stat2"` Stat3 string `csv:"stat3"` Calc1 int `csv:"calc1"` Calc2 int `csv:"calc2"` Calc3 int `csv:"calc3"` SpellDesc int `csv:"spelldesc"` SpellDescStr string `csv:"spelldescstr"` SpellDescStr2 string `csv:"spelldescstr2"` SpellDescCalc int `csv:"spelldesccalc"` SpellDescColor int `csv:"spelldesccolor"` CharsiMin int `csv:"CharsiMin"` CharsiMax int `csv:"CharsiMax"` CharsiMagicMin int `csv:"CharsiMagicMin"` CharsiMagicMax int `csv:"CharsiMagicMax"` CharsiMagicLvl int `csv:"CharsiMagicLvl"` GheedMin int `csv:"GheedMin"` GheedMax int `csv:"GheedMax"` GheedMagicMin int `csv:"GheedMagicMin"` GheedMagicMax int `csv:"GheedMagicMax"` GheedMagicLvl int `csv:"GheedMagicLvl"` AkaraMin int `csv:"AkaraMin"` AkaraMax int `csv:"AkaraMax"` AkaraMagicMin int `csv:"AkaraMagicMin"` AkaraMagicMax int `csv:"AkaraMagicMax"` AkaraMagicLvl int `csv:"AkaraMagicLvl"` FaraMin int `csv:"FaraMin"` FaraMax int `csv:"FaraMax"` FaraMagicMin int `csv:"FaraMagicMin"` FaraMagicMax int `csv:"FaraMagicMax"` FaraMagicLvl int `csv:"FaraMagicLvl"` LysanderMin int `csv:"LysanderMin"` LysanderMax int `csv:"LysanderMax"` LysanderMagicMin int `csv:"LysanderMagicMin"` LysanderMagicMax int `csv:"LysanderMagicMax"` LysanderMagicLvl int `csv:"LysanderMagicLvl"` DrognanMin int `csv:"DrognanMin"` DrognanMax int `csv:"DrognanMax"` DrognanMagicMin int `csv:"DrognanMagicMin"` DrognanMagicMax int `csv:"DrognanMagicMax"` DrognanMagicLvl int `csv:"DrognanMagicLvl"` HratliMin int `csv:"HratliMin"` HratliMax int `csv:"HratliMax"` HratliMagicMin int `csv:"HratliMagicMin"` HratliMagicMax int `csv:"HratliMagicMax"` HratliMagicLvl int `csv:"HratliMagicLvl"` AlkorMin int `csv:"AlkorMin"` AlkorMax int `csv:"AlkorMax"` AlkorMagicMin int `csv:"AlkorMagicMin"` AlkorMagicMax int `csv:"AlkorMagicMax"` AlkorMagicLvl int `csv:"AlkorMagicLvl"` OrmusMin int `csv:"OrmusMin"` OrmusMax int `csv:"OrmusMax"` OrmusMagicMin int `csv:"OrmusMagicMin"` OrmusMagicMax int `csv:"OrmusMagicMax"` OrmusMagicLvl int `csv:"OrmusMagicLvl"` ElzixMin int `csv:"ElzixMin"` ElzixMax int `csv:"ElzixMax"` ElzixMagicMin int `csv:"ElzixMagicMin"` ElzixMagicMax int `csv:"ElzixMagicMax"` ElzixMagicLvl int `csv:"ElzixMagicLvl"` AshearaMin int `csv:"AshearaMin"` AshearaMax int `csv:"AshearaMax"` AshearaMagicMin int `csv:"AshearaMagicMin"` AshearaMagicMax int `csv:"AshearaMagicMax"` AshearaMagicLvl int `csv:"AshearaMagicLvl"` CainMin int `csv:"CainMin"` CainMax int `csv:"CainMax"` CainMagicMin int `csv:"CainMagicMin"` CainMagicMax int `csv:"CainMagicMax"` CainMagicLvl int `csv:"CainMagicLvl"` HalbuMin int `csv:"HalbuMin"` HalbuMax int `csv:"HalbuMax"` HalbuMagicMin int `csv:"HalbuMagicMin"` HalbuMagicMax int `csv:"HalbuMagicMax"` HalbuMagicLvl int `csv:"HalbuMagicLvl"` JamellaMin int `csv:"JamellaMin"` JamellaMax int `csv:"JamellaMax"` JamellaMagicMin int `csv:"JamellaMagicMin"` JamellaMagicMax int `csv:"JamellaMagicMax"` JamellaMagicLvl int `csv:"JamellaMagicLvl"` LarzukMin int `csv:"LarzukMin"` LarzukMax int `csv:"LarzukMax"` LarzukMagicMin int `csv:"LarzukMagicMin"` LarzukMagicMax int `csv:"LarzukMagicMax"` LarzukMagicLvl int `csv:"LarzukMagicLvl"` MalahMin int `csv:"MalahMin"` MalahMax int `csv:"MalahMax"` MalahMagicMin int `csv:"MalahMagicMin"` MalahMagicMax int `csv:"MalahMagicMax"` MalahMagicLvl int `csv:"MalahMagicLvl"` AnyaMin int `csv:"AnyaMin"` AnyaMax int `csv:"AnyaMax"` AnyaMagicMin int `csv:"AnyaMagicMin"` AnyaMagicMax int `csv:"AnyaMagicMax"` AnyaMagicLvl int `csv:"AnyaMagicLvl"` }
type Missile ¶
type Missile struct { Missile string `csv:"Missile"` // Defines the unique name ID for the missile. PCltDoFunc string `csv:"pCltDoFunc"` // ID value to select a function for the missile's behavior on the client side while active every frame. PCltHitFunc string `csv:"pCltHitFunc"` // ID value to select a specialized function for the missile's behavior when hitting something on the client side. PSrvDoFunc string `csv:"pSrvDoFunc"` // ID value to select a specialized function for the missile's behavior on the server side every frame. PSrvHitFunc string `csv:"pSrvHitFunc"` // ID value to select a specialized function for the missile's behavior when hitting something on the server side. PSrvDmgFunc string `csv:"pSrvDmgFunc"` // ID value to select a specialized function called before damaging a unit on the server side. SrvCalc1 string `csv:"SrvCalc1"` // Numeric calculation field used as a parameter for "pSrvDoFunc". Param1 int `csv:"Param1"` // Integer field used as a parameter for "pSrvDoFunc". Param2 int `csv:"Param2"` // Integer field used as a parameter for "pSrvDoFunc". Param3 int `csv:"Param3"` // Integer field used as a parameter for "pSrvDoFunc". Param4 int `csv:"Param4"` // Integer field used as a parameter for "pSrvDoFunc". Param5 int `csv:"Param5"` // Integer field used as a parameter for "pSrvDoFunc". CltCalc1 string `csv:"CltCalc1"` // Numeric calculation field used as a parameter for "pCltDoFunc". CltParam1 int `csv:"CltParam1"` // Integer field used as a parameter for "pCltDoFunc". CltParam2 int `csv:"CltParam2"` // Integer field used as a parameter for "pCltDoFunc". CltParam3 int `csv:"CltParam3"` // Integer field used as a parameter for "pCltDoFunc". CltParam4 int `csv:"CltParam4"` // Integer field used as a parameter for "pCltDoFunc". CltParam5 int `csv:"CltParam5"` // Integer field used as a parameter for "pCltDoFunc". SHitCalc1 string `csv:"SHitCalc1"` // Numeric calculation field used as a parameter for "pSrvHitFunc". SHitPar1 int `csv:"sHitPar1"` // Integer field used as a parameter for "pSrvHitFunc". SHitPar2 int `csv:"sHitPar2"` // Integer field used as a parameter for "pSrvHitFunc". SHitPar3 int `csv:"sHitPar3"` // Integer field used as a parameter for "pSrvHitFunc". CHitCalc1 string `csv:"CHitCalc1"` // Numeric calculation field used as a parameter for "pCltHitFunc". CHitPar1 int `csv:"cHitPar1"` // Integer field used as a parameter for "pCltHitFunc". CHitPar2 int `csv:"cHitPar2"` // Integer field used as a parameter for "pCltHitFunc". CHitPar3 int `csv:"cHitPar3"` // Integer field used as a parameter for "pCltHitFunc". DmgCalc1 string `csv:"DmgCalc1"` // Numeric calculation field used as a parameter for "pSrvDmgFunc". DParam1 int `csv:"dParam1"` // Integer field used as a parameter for "pSrvDmgFunc". DParam2 int `csv:"dParam2"` // Integer field used as a parameter for "pSrvDmgFunc". Vel int `csv:"Vel"` // Baseline velocity of the missile in pixels traveled per frame. MaxVel int `csv:"MaxVel"` // Maximum velocity of the missile. VelLev int `csv:"VelLev"` // Extra velocity based on the caster unit's level. Accel int `csv:"Accel"` // Acceleration of the missile's movement. Range int `csv:"Range"` // Baseline duration that the missile will exist for after it is created, measured in frames where 25 Frames = 1 second. LevRange int `csv:"LevRange"` // Extra duration based on the caster unit's level. Light int `csv:"Light"` // Missile's Light Radius size measured in grid sub-tiles. Flicker int `csv:"Flicker"` // If greater than 0, the Light Radius randomly changes in size every 4th frame while the missile is active. Red int `csv:"Red"` // Red color value of the missile's Light Radius. Green int `csv:"Green"` // Green color value of the missile's Light Radius. Blue int `csv:"Blue"` // Blue color value of the missile's Light Radius. InitSteps int `csv:"InitSteps"` // Number of frames the missile needs to be alive until it becomes visible on the game client. Activate int `csv:"Activate"` // Number of frames the missile needs to be alive until it becomes active. LoopAnim int `csv:"LoopAnim"` // If true, the missile's animation will repeat once the previous animation finishes. CelFile string `csv:"CelFile"` // DCC missile file to use for the visual graphics of the missile. AnimRate int `csv:"animrate"` // Visual speed of the missile's animation graphics. AnimLen int `csv:"AnimLen"` // Length of the missile's animation in frames where 25 Frames = 1 second. AnimSpeed int `csv:"AnimSpeed"` // Visual speed of the missile's animation graphics on the client side, measured in 16ths. RandStart int `csv:"RandStart"` // If greater than 0, the missile will start at a random frame between 0 and this value when it begins its animation. SubLoop bool `csv:"SubLoop"` // If true, the missile will use a specific sequence of its animation while it is alive. SubStart int `csv:"SubStart"` // The starting frame of the sequence animation. Requires "SubLoop" field to be enabled. SubStop int `csv:"SubStop"` // The ending frame of the sequence animation. Requires "SubLoop" field to be enabled. CollideType int `csv:"CollideType"` // Missile's collision type, controlling what units or objects the missile can impact. CollideKill bool `csv:"CollideKill"` // If true, the missile will be destroyed when it collides with something. CollideFriend bool `csv:"CollideFriend"` // If true, the missile can collide with friendly units, including the caster. LastCollide bool `csv:"LastCollide"` // If true, the missile will track the last unit that it collided with. Collision bool `csv:"Collision"` // If true, the missile will have a missile type path placement collision mask when it is initialized or moved. ClientCol bool `csv:"ClientCol"` // If true, the missile will check collision on the client based on the "CollideType" field. ClientSend bool `csv:"ClientSend"` // If true, the server will create the missile on the client. NextHit bool `csv:"NextHit"` // If true, the missile will use the next delay. NextDelay int `csv:"NextDelay"` // Delay in frame length until the missile is allowed to hit the same unit again. Requires "NextHit" field to be enabled. XOffset int `csv:"xoffset"` // X location coordinate (measured in pixels) to offset the visual graphics of the missile. YOffset int `csv:"yoffset"` // Y location coordinate (measured in pixels) to offset the visual graphics of the missile. ZOffset int `csv:"zoffset"` // Z location coordinate (measured in pixels) to visually draw the missile based on its actual location. Size int `csv:"Size"` // Diameter in sub-tiles (X and Y axis) that the missile will occupy. SrcTown bool `csv:"SrcTown"` // If true, the missile will be destroyed if the caster unit is located in an act town. CltSrcTown int `csv:"CltSrcTown"` // If greater than 0 and "LoopAnim" field is disabled, this controls which frame to set the missile's animation when the player is in town. CanDestroy int `csv:"CanDestroy"` // If true, the missile can be attacked and destroyed. ToHit int `csv:"ToHit"` // If true, this missile will use the caster's Attack Rating stat to determine if the missile should hit its target. AlwaysExplode int `csv:"AlwaysExplode"` // If true, the missile will always process an explosion when killed. Explosion int `csv:"Explosion"` // If true, the missile will be classified as an explosion. Town int `csv:"Town"` // If true, the missile is allowed to be alive when in a town area. NoUniqueMod int `csv:"NoUniqueMod"` // If true, the missile will not receive bonuses from Unique monster modifiers. NoMultiShot int `csv:"NoMultiShot"` // If true, the missile will not be affected by the Multi-Shot monster modifier. Holy int `csv:"Holy"` // Bit field flag where each value is a code to allow the missile to damage a certain type of monster. CanSlow int `csv:"CanSlow"` // If true, the missile can be affected by the "slowmissiles" state. ReturnFire int `csv:"ReturnFire"` // If true, missile can trigger the Sorceress Chilling Armor event function. GetHit int `csv:"GetHit"` // If true, the missile will cause the target unit to enter the Get Hit mode (GH), which acts as the hit recovery mode. SoftHit int `csv:"SoftHit"` // If true, the missile will cause a soft hit on the unit. KnockBack int `csv:"KnockBack"` // Percentage chance (out of 100) that the target unit will be knocked back when hit by the missile. Trans int `csv:"Trans"` // Alpha mode for how the missile is displayed, affecting transparency and blending. Pierce bool `csv:"Pierce"` // If true, allow the Pierce modifier function to work with this missile. MissileSkill bool `csv:"MissileSkill"` // If true, the missile will use the skill's damage instead of its defined damage. Skill string `csv:"Skill"` // Links to the "skill" field from the skills.txt file. ResultFlags string `csv:"ResultFlags"` // Controls different flags affecting how the target reacts after being hit by the missile. HitFlags string `csv:"HitFlags"` // Controls different flags affecting the damage dealt when the target is hit by the missile. HitShift int `csv:"HitShift"` // Percentage modifier for the missile's damage. ApplyMastery bool `csv:"ApplyMastery"` // If true, apply the caster's elemental mastery bonus modifiers to the missile's elemental damage. SrcDamage int `csv:"SrcDamage"` // Controls how much of the source unit's damage should be added to the missile's damage. Half2HSrc bool `csv:"Half2HSrc"` // If true and the source unit is currently wielding a 2-Handed weapon, the source damage is reduced by 50%. SrcMissDmg int `csv:"SrcMissDmg"` // If the missile was created by another missile, this controls how much of the source missile's damage should be added to this missile's damage. MinDamage int `csv:"MinDamage"` // Minimum baseline physical damage dealt by the missile. MinLevDam1 string `csv:"MinLevDam1"` // Additional minimum physical damage dealt by the missile, calculated using the leveling formula. MinLevDam2 string `csv:"MinLevDam2"` MinLevDam3 string `csv:"MinLevDam3"` MinLevDam4 string `csv:"MinLevDam4"` MinLevDam5 string `csv:"MinLevDam5"` MaxDamage int `csv:"MaxDamage"` // Maximum baseline physical damage dealt by the missile. MaxLevDam1 string `csv:"MaxLevDam1"` // Additional maximum physical damage dealt by the missile, calculated using the leveling formula. MaxLevDam2 string `csv:"MaxLevDam2"` MaxLevDam3 string `csv:"MaxLevDam3"` MaxLevDam4 string `csv:"MaxLevDam4"` MaxLevDam5 string `csv:"MaxLevDam5"` DmgSymPerCalc string `csv:"DmgSymPerCalc"` // Calculation field determining the percentage increase to the physical damage dealt by the missile. EType string `csv:"EType"` // Type of elemental damage dealt by the missile. Possible values: "None", "fire", "ltng", "mag", "cold", "pois", "life", "mana", "stam", "stun", "rand", "burn", "frze". EMin int `csv:"EMin"` // Minimum baseline elemental damage dealt by the missile. MinELev1 int `csv:"MinELev1"` // Additional minimum elemental damage dealt by the missile, calculated using the leveling formula. MinELev2 int `csv:"MinELev2"` MinELev3 int `csv:"MinELev3"` EMax int `csv:"EMax"` // Maximum baseline elemental damage dealt by the missile. MaxELev1 int `csv:"MaxELev1"` // Additional maximum elemental damage dealt by the missile, calculated using the leveling formula. MaxELev2 int `csv:"MaxELev2"` MaxELev3 int `csv:"MaxELev3"` ELen int `csv:"ELen"` // Baseline elemental duration dealt by the missile in frames. Only applicable to appropriate elemental types with duration. ELevLen1 int `csv:"ELevLen1"` // Additional elemental duration added by the missile, calculated using the leveling formula. ELevLen2 int `csv:"ELevLen2"` ELevLen3 int `csv:"ELevLen3"` HitClass int `csv:"HitClass"` // Missile's own hit class into the damage routines, used for determining hit sound effects and overlays. NumDirections int `csv:"NumDirections"` // Number of directions allowed by the missile, based on the DCC file used. LocalBlood bool `csv:"LocalBlood"` // If true, change the color of blood missiles to green. DamageRate int `csv:"DamageRate"` // Controls the "damage_framerate" stat, acting as a percentage multiplier for damage reduction stat modifiers during damage resistance calculations. TravelSound string `csv:"TravelSound"` // Points to a "Sound" field defined in the sounds.txt file, used when the missile is created and while it is alive. HitSound string `csv:"HitSound"` // Points to a "Sound" field defined in the sounds.txt file, used when the missile collides with a target. ProgSound string `csv:"ProgSound"` // Points to a "Sound" field defined in the sounds.txt file, used for a programmed special event based on the client function. ProgOverlay string `csv:"ProgOverlay"` // Points to the "overlay" field defined in the Overlay.txt file, used for a programmed special event based on the server or client function. ExplosionMissile string `csv:"ExplosionMissile"` // Points to the "Missile" field for another missile, used for the missile created on the client when this missile explodes. SubMissile1 string `csv:"SubMissile1"` // Points to the "Missile" field for another missile, used for creating a new missile based on the server function used. SubMissile2 string `csv:"SubMissile2"` SubMissile3 string `csv:"SubMissile3"` HitSubMissile1 string `csv:"HitSubMissile1"` // Points to the "Missile" field for another missile, used for a new missile after a collision, based on the server function used. HitSubMissile2 string `csv:"HitSubMissile2"` HitSubMissile3 string `csv:"HitSubMissile3"` HitSubMissile4 string `csv:"HitSubMissile4"` CltSubMissile1 string `csv:"CltSubMissile1"` // Points to the "Missile" field for another missile, used for creating a new missile based on the client function used. CltSubMissile2 string `csv:"CltSubMissile2"` CltSubMissile3 string `csv:"CltSubMissile3"` CltHitSubMissile1 string `csv:"CltHitSubMissile1"` // Points to the "Missile" field for another missile, used for a new missile after a collision, based on the client function used. CltHitSubMissile2 string `csv:"CltHitSubMissile2"` CltHitSubMissile3 string `csv:"CltHitSubMissile3"` }
Missile represents a projectile used throughout the game for attacks, skills, and special effects.
type MonsterEquipment ¶
type MonsterEquipment struct { Monster string `csv:"monster"` // Defines the monster that should be equipped. Points to the matching "Id" value in the monstats.txt file. OnInit int `csv:"oninit"` // Defines if the monster equipment is added on initialization during the monster's creation. Level int `csv:"level"` // Defines the level requirement for the monster to gain this equipment. Item1 string `csv:"item1"` // Item to be equipped on the monster. Uses ID pointer from Weapons.txt, Armor.txt, or Misc.txt. Loc1 string `csv:"loc1"` // Specifies the inventory slot where the item will be equipped. Mod1 int `csv:"mod1"` // Controls the quality level of the related item. Item2 string `csv:"item2"` // Second item to be equipped on the monster. Loc2 string `csv:"loc2"` // Specifies the inventory slot for the second item. Mod2 int `csv:"mod2"` // Quality level for the second item. Item3 string `csv:"item3"` // Third item to be equipped on the monster. Loc3 string `csv:"loc3"` // Specifies the inventory slot for the third item. Mod3 int `csv:"mod3"` // Quality level for the third item. }
MonsterEquipment represents the equipment setup for a monster.
type MonsterLevelStats ¶
type MonsterLevelStats struct { Level int `csv:"Level"` // An integer value to determine how to scale the monster's statistics when at a specific level. // Non-Ladder Battle.net / Singleplayer / Open Battle.net / TCP Defense float64 `csv:"AC"` // Percentage multiplier for increasing the Monster's Defense (multiplies with the "AC" field in monstats.txt). DefenseN float64 `csv:"AC(N)"` // Percentage multiplier for increasing the Monster's Defense in Nightmare difficulty. DefenseH float64 `csv:"AC(H)"` // Percentage multiplier for increasing the Monster's Defense in Hell difficulty. AttackRating float64 `csv:"TH"` // Percentage multiplier for increasing the Monster's Attack Rating (multiplies with the "A1TH" and "A2TH" fields in monstats.txt). AttackRatingN float64 `csv:"TH(N)"` // Percentage multiplier for increasing the Monster's Attack Rating in Nightmare difficulty. AttackRatingH float64 `csv:"TH(H)"` // Percentage multiplier for increasing the Monster's Attack Rating in Hell difficulty. Life float64 `csv:"HP"` // Percentage multiplier for increasing the Monster's Life (multiplies with the "MinHP" and "MaxHP" fields in monstats.txt). LifeN float64 `csv:"HP(N)"` // Percentage multiplier for increasing the Monster's Life in Nightmare difficulty. LifeH float64 `csv:"HP(H)"` // Percentage multiplier for increasing the Monster's Life in Hell difficulty. Damage float64 `csv:"DM"` // Percentage multiplier for increasing the Monster's Damage (multiplies with various damage fields in monstats.txt). DamageN float64 `csv:"DM(N)"` // Percentage multiplier for increasing the Monster's Damage in Nightmare difficulty. DamageH float64 `csv:"DM(H)"` // Percentage multiplier for increasing the Monster's Damage in Hell difficulty. Experience float64 `csv:"XP"` // Percentage multiplier for increasing the Experience provided to the player when killing the Monster (multiplies with the "Exp" fields in monstats.txt). ExperienceN float64 `csv:"XP(N)"` // Percentage multiplier for increasing the Experience in Nightmare difficulty. ExperienceH float64 `csv:"XP(H)"` // Percentage multiplier for increasing the Experience in Hell difficulty. // Ladder Battle.net game type LadderDefense float64 `csv:"L-AC"` // Percentage multiplier for increasing the Monster's Defense in Ladder Battle.net (multiplies with the "AC" field in monstats.txt). LadderDefenseN float64 `csv:"L-AC(N)"` // Percentage multiplier for increasing the Monster's Defense in Ladder Battle.net - Nightmare difficulty. LadderDefenseH float64 `csv:"L-AC(H)"` // Percentage multiplier for increasing the Monster's Defense in Ladder Battle.net - Hell difficulty. LadderLife float64 `csv:"L-HP"` // Percentage multiplier for increasing the Monster's Life in Ladder Battle.net (multiplies with the "MinHP" and "MaxHP" fields in monstats.txt). LadderLifeN float64 `csv:"L-HP(N)"` // Percentage multiplier for increasing the Monster's Life in Ladder Battle.net - Nightmare difficulty. LadderLifeH float64 `csv:"L-HP(H)"` // Percentage multiplier for increasing the Monster's Life in Ladder Battle.net - Hell difficulty. LadderDamage float64 `csv:"L-DM"` // Percentage multiplier for increasing the Monster's Damage in Ladder Battle.net (multiplies with various damage fields in monstats.txt). LadderDamageN float64 `csv:"L-DM(N)"` // Percentage multiplier for increasing the Monster's Damage in Ladder Battle.net - Nightmare difficulty. LadderDamageH float64 `csv:"L-DM(H)"` // Percentage multiplier for increasing the Monster's Damage in Ladder Battle.net - Hell difficulty. LadderExperience float64 `csv:"L-XP"` // Percentage multiplier for increasing the Experience provided to the player when killing the Monster in Ladder Battle.net (multiplies with the "Exp" fields in monstats.txt). LadderExperienceN float64 `csv:"L-XP(N)"` // Percentage multiplier for increasing the Experience in Ladder Battle.net - Nightmare difficulty. LadderExperienceH float64 `csv:"L-XP(H)"` // Percentage multiplier for increasing the Experience in Ladder Battle.net - Hell difficulty. }
MonsterLevelStats represents how monster statistics increase per level based on the current game type and difficulty.
type MonsterPreset ¶
type MonsterPreset struct { Act int `csv:"Act"` // Defines the Act number used for each Monster Preset (values between 1 to 5). Place string `csv:"Place"` // Defines the Monster Preset which is used for preloading, such as during level transitions. }
MonsterPreset represents the monsters preloaded in a preset based on the Act number.
type MonsterProp ¶
type MonsterProp struct { ID string `csv:"Id"` // Defines the monster that should gain the Property (points to the matching "Id" value in the monstats.txt file). Prop1 string `csv:"prop1"` // Defines the first Property to apply to the monster (Uses the "code" field from Properties.txt). Chance1 int `csv:"chance1"` // The percent chance that the first related property (prop1) will be assigned. If this value equals 0, then the Property will always be applied. Param1 string `csv:"par1"` // The "parameter" value associated with the first related property (prop1). Usage depends on the property function (See the "func" field on Properties.txt). Min1 int `csv:"min1"` // The "min" value to assign to the first related property (prop1). Usage depends on the property function (See the "func" field on Properties.txt). Max1 int `csv:"max1"` // The "max" value to assign to the first related property (prop1). Usage depends on the property function (See the "func" field on Properties.txt). Prop2 string `csv:"prop2"` // Defines the second Property to apply to the monster (Uses the "code" field from Properties.txt). Chance2 int `csv:"chance2"` // The percent chance that the second related property (prop2) will be assigned. If this value equals 0, then the Property will always be applied. Param2 string `csv:"par2"` // The "parameter" value associated with the second related property (prop2). Usage depends on the property function (See the "func" field on Properties.txt). Min2 int `csv:"min2"` // The "min" value to assign to the second related property (prop2). Usage depends on the property function (See the "func" field on Properties.txt). Max2 int `csv:"max2"` // The "max" value to assign to the second related property (prop2). Usage depends on the property function (See the "func" field on Properties.txt). Prop3 string `csv:"prop3"` // Defines the third Property to apply to the monster (Uses the "code" field from Properties.txt). Chance3 int `csv:"chance3"` // The percent chance that the third related property (prop3) will be assigned. If this value equals 0, then the Property will always be applied. Param3 string `csv:"par3"` // The "parameter" value associated with the third related property (prop3). Usage depends on the property function (See the "func" field on Properties.txt). Min3 int `csv:"min3"` // The "min" value to assign to the third related property (prop3). Usage depends on the property function (See the "func" field on Properties.txt). Max3 int `csv:"max3"` // The "max" value to assign to the third related property (prop3). Usage depends on the property function (See the "func" field on Properties.txt). Prop4 string `csv:"prop4"` // Defines the fourth Property to apply to the monster (Uses the "code" field from Properties.txt). Chance4 int `csv:"chance4"` // The percent chance that the fourth related property (prop4) will be assigned. If this value equals 0, then the Property will always be applied. Param4 string `csv:"par4"` // The "parameter" value associated with the fourth related property (prop4). Usage depends on the property function (See the "func" field on Properties.txt). Min4 int `csv:"min4"` // The "min" value to assign to the fourth related property (prop4). Usage depends on the property function (See the "func" field on Properties.txt). Max4 int `csv:"max4"` // The "max" value to assign to the fourth related property (prop4). Usage depends on the property function (See the "func" field on Properties.txt). Prop5 string `csv:"prop5"` // Defines the fifth Property to apply to the monster (Uses the "code" field from Properties.txt). Chance5 int `csv:"chance5"` // The percent chance that the fifth related property (prop5) will be assigned. If this value equals 0, then the Property will always be applied. Param5 string `csv:"par5"` // The "parameter" value associated with the fifth related property (prop5). Usage depends on the property function (See the "func" field on Properties.txt). Min5 int `csv:"min5"` // The "min" value to assign to the fifth related property (prop5). Usage depends on the property function (See the "func" field on Properties.txt). Max5 int `csv:"max5"` // The "max" value to assign to the fifth related property (prop5). Usage depends on the property function (See the "func" field on Properties.txt). Prop6 string `csv:"prop6"` // Defines the sixth Property to apply to the monster (Uses the "code" field from Properties.txt). Chance6 int `csv:"chance6"` // The percent chance that the sixth related property (prop6) will be assigned. If this value equals 0, then the Property will always be applied. Param6 string `csv:"par6"` // The "parameter" value associated with the sixth related property (prop6). Usage depends on the property function (See the "func" field on Properties.txt). Min6 int `csv:"min6"` // The "min" value to assign to the sixth related property (prop6). Usage depends on the property function (See the "func" field on Properties.txt). Max6 int `csv:"max6"` // The "max" value to assign to the sixth related property (prop6). Usage depends on the property function (See the "func" field on Properties.txt). Prop1N string `csv:"prop1 (N)"` // Defines the first Property for Nightmare difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance1N int `csv:"chance1 (N)"` // The percent chance that the first related property for Nightmare difficulty (prop1 (N)) will be assigned. If this value equals 0, then the Property will always be applied. Param1N string `csv:"par1 (N)"` // The "parameter" value associated with the first related property for Nightmare difficulty (prop1 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Min1N int `csv:"min1 (N)"` // The "min" value to assign to the first related property for Nightmare difficulty (prop1 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Max1N int `csv:"max1 (N)"` // The "max" value to assign to the first related property for Nightmare difficulty (prop1 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Prop2N string `csv:"prop2 (N)"` // Defines the second Property for Nightmare difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance2N int `csv:"chance2 (N)"` // The percent chance that the second related property for Nightmare difficulty (prop2 (N)) will be assigned. If this value equals 0, then the Property will always be applied. Param2N string `csv:"par2 (N)"` // The "parameter" value associated with the second related property for Nightmare difficulty (prop2 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Min2N int `csv:"min2 (N)"` // The "min" value to assign to the second related property for Nightmare difficulty (prop2 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Max2N int `csv:"max2 (N)"` // The "max" value to assign to the second related property for Nightmare difficulty (prop2 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Prop3N string `csv:"prop3 (N)"` // Defines the third Property for Nightmare difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance3N int `csv:"chance3 (N)"` // The percent chance that the third related property for Nightmare difficulty (prop3 (N)) will be assigned. If this value equals 0, then the Property will always be applied. Param3N string `csv:"par3 (N)"` // The "parameter" value associated with the third related property for Nightmare difficulty (prop3 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Min3N int `csv:"min3 (N)"` // The "min" value to assign to the third related property for Nightmare difficulty (prop3 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Max3N int `csv:"max3 (N)"` // The "max" value to assign to the third related property for Nightmare difficulty (prop3 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Prop4N string `csv:"prop4 (N)"` // Defines the fourth Property for Nightmare difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance4N int `csv:"chance4 (N)"` // The percent chance that the fourth related property for Nightmare difficulty (prop4 (N)) will be assigned. If this value equals 0, then the Property will always be applied. Param4N string `csv:"par4 (N)"` // The "parameter" value associated with the fourth related property for Nightmare difficulty (prop4 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Min4N int `csv:"min4 (N)"` // The "min" value to assign to the fourth related property for Nightmare difficulty (prop4 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Max4N int `csv:"max4 (N)"` // The "max" value to assign to the fourth related property for Nightmare difficulty (prop4 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Prop5N string `csv:"prop5 (N)"` // Defines the fifth Property for Nightmare difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance5N int `csv:"chance5 (N)"` // The percent chance that the fifth related property for Nightmare difficulty (prop5 (N)) will be assigned. If this value equals 0, then the Property will always be applied. Param5N string `csv:"par5 (N)"` // The "parameter" value associated with the fifth related property for Nightmare difficulty (prop5 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Min5N int `csv:"min5 (N)"` // The "min" value to assign to the fifth related property for Nightmare difficulty (prop5 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Max5N int `csv:"max5 (N)"` // The "max" value to assign to the fifth related property for Nightmare difficulty (prop5 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Prop6N string `csv:"prop6 (N)"` // Defines the sixth Property for Nightmare difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance6N int `csv:"chance6 (N)"` // The percent chance that the sixth related property for Nightmare difficulty (prop6 (N)) will be assigned. If this value equals 0, then the Property will always be applied. Param6N string `csv:"par6 (N)"` // The "parameter" value associated with the sixth related property for Nightmare difficulty (prop6 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Min6N int `csv:"min6 (N)"` // The "min" value to assign to the sixth related property for Nightmare difficulty (prop6 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Max6N int `csv:"max6 (N)"` // The "max" value to assign to the sixth related property for Nightmare difficulty (prop6 (N)). Usage depends on the property function (See the "func" field on Properties.txt). Prop1H string `csv:"prop1 (H)"` // Defines the first Property for Hell difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance1H int `csv:"chance1 (H)"` // The percent chance that the first related property for Hell difficulty (prop1 (H)) will be assigned. If this value equals 0, then the Property will always be applied. Param1H string `csv:"par1 (H)"` // The "parameter" value associated with the first related property for Hell difficulty (prop1 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Min1H int `csv:"min1 (H)"` // The "min" value to assign to the first related property for Hell difficulty (prop1 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Max1H int `csv:"max1 (H)"` // The "max" value to assign to the first related property for Hell difficulty (prop1 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Prop2H string `csv:"prop2 (H)"` // Defines the second Property for Hell difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance2H int `csv:"chance2 (H)"` // The percent chance that the second related property for Hell difficulty (prop2 (H)) will be assigned. If this value equals 0, then the Property will always be applied. Param2H string `csv:"par2 (H)"` // The "parameter" value associated with the second related property for Hell difficulty (prop2 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Min2H int `csv:"min2 (H)"` // The "min" value to assign to the second related property for Hell difficulty (prop2 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Max2H int `csv:"max2 (H)"` // The "max" value to assign to the second related property for Hell difficulty (prop2 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Prop3H string `csv:"prop3 (H)"` // Defines the third Property for Hell difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance3H int `csv:"chance3 (H)"` // The percent chance that the third related property for Hell difficulty (prop3 (H)) will be assigned. If this value equals 0, then the Property will always be applied. Param3H string `csv:"par3 (H)"` // The "parameter" value associated with the third related property for Hell difficulty (prop3 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Min3H int `csv:"min3 (H)"` // The "min" value to assign to the third related property for Hell difficulty (prop3 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Max3H int `csv:"max3 (H)"` // The "max" value to assign to the third related property for Hell difficulty (prop3 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Prop4H string `csv:"prop4 (H)"` // Defines the fourth Property for Hell difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance4H int `csv:"chance4 (H)"` // The percent chance that the fourth related property for Hell difficulty (prop4 (H)) will be assigned. If this value equals 0, then the Property will always be applied. Param4H string `csv:"par4 (H)"` // The "parameter" value associated with the fourth related property for Hell difficulty (prop4 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Min4H int `csv:"min4 (H)"` // The "min" value to assign to the fourth related property for Hell difficulty (prop4 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Max4H int `csv:"max4 (H)"` // The "max" value to assign to the fourth related property for Hell difficulty (prop4 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Prop5H string `csv:"prop5 (H)"` // Defines the fifth Property for Hell difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance5H int `csv:"chance5 (H)"` // The percent chance that the fifth related property for Hell difficulty (prop5 (H)) will be assigned. If this value equals 0, then the Property will always be applied. Param5H string `csv:"par5 (H)"` // The "parameter" value associated with the fifth related property for Hell difficulty (prop5 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Min5H int `csv:"min5 (H)"` // The "min" value to assign to the fifth related property for Hell difficulty (prop5 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Max5H int `csv:"max5 (H)"` // The "max" value to assign to the fifth related property for Hell difficulty (prop5 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Prop6H string `csv:"prop6 (H)"` // Defines the sixth Property for Hell difficulty to apply to the monster (Uses the "code" field from Properties.txt). Chance6H int `csv:"chance6 (H)"` // The percent chance that the sixth related property for Hell difficulty (prop6 (H)) will be assigned. If this value equals 0, then the Property will always be applied. Param6H string `csv:"par6 (H)"` // The "parameter" value associated with the sixth related property for Hell difficulty (prop6 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Min6H int `csv:"min6 (H)"` // The "min" value to assign to the sixth related property for Hell difficulty (prop6 (H)). Usage depends on the property function (See the "func" field on Properties.txt). Max6H int `csv:"max6 (H)"` // The "max" value to assign to the sixth related property for Hell difficulty (prop6 (H)). Usage depends on the property function (See the "func" field on Properties.txt). }
MonsterProp represents special properties that can be added to a monster based on the game difficulty in an older version of the game.
type MonsterSequence ¶
type MonsterSequence struct { Sequence string `csv:"sequence"` // Establishes the Monster Sequence index. An entire monster sequence can be composed of multiple sequence lines, which means that each line needs to have matching "sequence" fields and must be in contiguous order. Mode string `csv:"mode"` // Defines which monster mode animation to use for the sequence Frame int `csv:"frame"` // The in-game frame number for the animation. For the first line in the sequence, this value will establish where the starting frame for the animation. These values should be in contiguous order for the sequence. Dir int `csv:"dir"` // Defines the numeric animation direction that the frame uses. Most animations have between 8 to 64 maximum directions. Event int `csv:"event"` // Defines what type of event will be used when the frame triggers }
MonsterSequence represents the sequence table used for specifying events during certain animation frames, such as when using skills. A sequence is divided into multiple lines in this file to define each frame in the animation and to determine which event to use during a specific frame.
type MonsterSounds ¶
type MonsterSounds struct { ID string `csv:"Id"` // Defines the unique name ID for the monster sound. Attack1 string `csv:"Attack1"` // Play this sound when the monster performs Attack 1. Points to a "Sound" value in the sounds.txt file. Attack2 string `csv:"Attack2"` // Play this sound when the monster performs Attack 2. Points to a "Sound" value in the sounds.txt file. Weapon1 string `csv:"Weapon1"` // Play this sound when the monster performs Attack 1. Points to a "Sound" value in the sounds.txt file. Weapon2 string `csv:"Weapon2"` // Play this sound when the monster performs Attack 2. Points to a "Sound" value in the sounds.txt file. Att1Delay int `csv:"Att1Del"` // Controls the amount of game frames to delay playing the "Attack1" sound. Att2Delay int `csv:"Att2Del"` // Controls the amount of game frames to delay playing the "Attack2" sound. Wea1Delay int `csv:"Wea1Del"` // Controls the amount of game frames to delay playing the "Weapon1" sound. Wea2Delay int `csv:"Wea2Del"` // Controls the amount of game frames to delay playing the "Weapon2" sound. Att1Probability int `csv:"Att1Prb"` // Controls the percent chance (out of 100) to play the "Attack1" sound. Att2Probability int `csv:"Att2Prb"` // Controls the percent chance (out of 100) to play the "Attack2" sound. Wea1Volume int `csv:"Wea1Vol"` // Controls the volume of the "Weapon1" sound. Uses a range between 0 to 255, where 255 is the maximum volume. Wea2Volume int `csv:"Wea2Vol"` // Controls the volume of the "Weapon2" sound. Uses a range between 0 to 255, where 255 is the maximum volume. HitSound string `csv:"HitSound"` // Play this sound when the monster gets hit or knocked back. Points to a "Sound" value in the sounds.txt file. DeathSound string `csv:"DeathSound"` // Play this sound when the monster dies. Points to a "Sound" value in the sounds.txt file. HitDelay int `csv:"HitDelay"` // Controls the amount of game frames to delay playing the "HitSound" sound. DeathDelay int `csv:"DeaDelay"` // Controls the amount of game frames to delay playing the "DeathSound" sound. Skill1 string `csv:"Skill1"` // Play this sound when the monster uses Skill 1. Points to a "Sound" value in the sounds.txt file. Skill2 string `csv:"Skill2"` // Play this sound when the monster uses Skill 2. Points to a "Sound" value in the sounds.txt file. Skill3 string `csv:"Skill3"` // Play this sound when the monster uses Skill 3. Points to a "Sound" value in the sounds.txt file. Skill4 string `csv:"Skill4"` // Play this sound when the monster uses Skill 4. Points to a "Sound" value in the sounds.txt file. Footstep string `csv:"Footstep"` // Play this sound while the monster is walking or running. Points to a "Sound" value in the sounds.txt file. FootstepLayer string `csv:"FootstepLayer"` // Play this sound while the monster is walking or running. Points to a "Sound" value in the sounds.txt file. FootstepCount int `csv:"FsCnt"` // Controls the footstep count which is used to determine how often to play the "Footstep" and "FootstepLayer" sound. FootstepOffset int `csv:"FsOff"` // Controls the footstep offset which is used for calculating when to play the next "Footstep" and "FootstepLayer" sound, based on the current animation frame and the animation rate. FootstepProbability int `csv:"FsPrb"` // Controls the probability to play the "Footstep" and "FootstepLayer" sound, with a random chance out of 100. NeutralSound string `csv:"Neutral"` // Play this sound while the monster is in Neutral, Walk, or Run mode. Points to a "Sound" value in the sounds.txt file. NeutralTime int `csv:"NeuTime"` // Controls the amount of game frames to delay between re-playing the "Neutral" sound after it finishes. InitSound string `csv:"Init"` // Play this sound when the monster spawns and is not dead and is not playing its Neutral sound. Points to a "Sound" value in the sounds.txt file. TauntSound string `csv:"Taunt"` // Play this sound when the server requests that the monster should play its Taunt. Points to a "Sound" value in the sounds.txt file. FleeSound string `csv:"Flee"` // Play this sound when the monster is told to flee. Points to a "Sound" value in the sounds.txt file. ConvertMode1 string `csv:"CvtMo1"` // This is used to convert the mode for playing the sound. Defines the original mode that the monster is using. ConvertMode2 string `csv:"CvtMo2"` // This is used to convert the mode for playing the sound. Defines the original mode that the monster is using. ConvertMode3 string `csv:"CvtMo3"` // This is used to convert the mode for playing the sound. Defines the original mode that the monster is using. ConvertSkill1 string `csv:"CvtSk1"` // Defines the skill that the monster is using. If the monster uses a specific skill, then the game can change the monster's mode for sound functionalities to another mode to change how sounds are generally handled. Points to a "Skill" in the skills.txt file. ConvertSkill2 string `csv:"CvtSk2"` // Defines the skill that the monster is using. If the monster uses a specific skill, then the game can change the monster's mode for sound functionalities to another mode to change how sounds are generally handled. Points to a "Skill" in the skills.txt file. ConvertSkill3 string `csv:"CvtSk3"` // Defines the skill that the monster is using. If the monster uses a specific skill, then the game can change the monster's mode for sound functionalities to another mode to change how sounds are generally handled. Points to a "Skill" in the skills.txt file. ConvertTarget1 string `csv:"CvtTgt1"` // Defines the mode to convert the sound to when the monster is using the relative skill from the "ConvertSkill1" field. ConvertTarget2 string `csv:"CvtTgt2"` // Defines the mode to convert the sound to when the monster is using the relative skill from the "ConvertSkill2" field. ConvertTarget3 string `csv:"CvtTgt3"` // Defines the mode to convert the sound to when the monster is using the relative skill from the "ConvertSkill3" field. }
MonsterSounds represents the data for each monster's sounds
type MonsterStats ¶
type MonsterStats struct { Id string `csv:"Id"` // Controls the unique name ID to define the monster. BaseId string `csv:"BaseId"` // Points to the "Id" of another monster to define the monster's base type. NextInClass string `csv:"NextInClass"` // Points to the "Id" of another monster to signify the next monster in the group of this monster's type. TransLvl string `csv:"TransLvl"` // Defines the color transform level to use for this monster, affecting its color palette. NameStr string `csv:"NameStr"` // String Key. Used to define the monster's name, shown in the Life bar UI when targeted. MonStatsEx string `csv:"MonStatsEx"` // Controls a pointer to the "Id" of a monster to define which entry to use in the monstats2.txt file. MonProp string `csv:"MonProp"` // Points to the "Id" field from the MonProp.txt file. Used to add special modifiers to the monster. MonType string `csv:"MonType"` // Points to the "type" field from the MonType.txt file. Used to handle the monster's classification. AI string `csv:"AI"` // Points to a type of AI script to use for the monster (See monai.txt). DescStr string `csv:"DescStr"` // String Key. Used to add an additional description below the Life bar UI when the monster is targeted. Code string `csv:"Code"` // Controls the token used for choosing the proper cells to display the monster's graphics. Enabled bool `csv:"enabled"` // Boolean Field. If true, then this monster is allowed to spawn in the game. RangedType bool `csv:"rangedtype"` // Boolean Field. If true, then the monster will be classified as a ranged type. PlaceSpawn bool `csv:"placespawn"` // Boolean Field. If true, then this monster will be treated as a spawner for other monsters. Spawn string `csv:"spawn"` // Points to the "Id" of another monster to control what kind of monster is spawned from this monster. SpawnX string `csv:"spawnx"` // Controls the X offset for where another monster is displaced when being spawned by this monster. SpawnY string `csv:"spawny"` // Controls the Y offset for where another monster is displaced when being spawned by this monster. SpawnMode string `csv:"spawnmode"` // Defines the animation mode that the spawned monsters will be initiated with. Minion1 string `csv:"minion1"` // Points to the "Id" of another monster to control what kind of monster is spawned with this monster. Minion2 string `csv:"minion2"` // Points to the "Id" of another monster to control what kind of monster is spawned with this monster. SetBoss bool `csv:"SetBoss"` // Boolean Field. If true, then set the monster AI to use the Boss AI type. BossXfer bool `csv:"BossXfer"` // Boolean Field. If true, then the monster's AI will transfer its boss recognition to another monster. PartyMin string `csv:"PartyMin"` // The minimum number of minions that can spawn with this monster. PartyMax string `csv:"PartyMax"` // The maximum number of minions that can spawn with this monster. MinGrp string `csv:"MinGrp"` // The minimum number of duplicates of this monster that can spawn together. MaxGrp string `csv:"MaxGrp"` // The maximum number of duplicates of this monster that can spawn together. SparsePopulate string `csv:"sparsePopulate"` // Controls the percent chance that this monster does not spawn. Velocity string `csv:"Velocity"` // Determines the movement velocity of the monster. Run string `csv:"Run"` // Determines the run speed of the monster as opposed to walk speed. Rarity string `csv:"Rarity"` // Modifies the chance that this monster will be chosen to spawn in the area level. Level string `csv:"Level"` // Determines the monster's level. MonSound string `csv:"MonSound"` // Points to the "Id" field of a monster sound from the monsounds.txt file. UMonSound string `csv:"UMonSound"` // Points to the "Id" field of a monster sound from the monsounds.txt file. Threat string `csv:"threat"` // Controls the AI threat value of the monster, affecting targeting priorities of enemy AIs. Aidel string `csv:"aidel"` // Controls the delay in frame length for how often the monster's AI will update its commands. Aidist string `csv:"aidist"` // Controls the maximum distance (measured in tiles) between the monster and an enemy until the monster's AI becomes aggressive. If equals 0, then default to 35. AIP1 string `csv:"aip1"` // Numeric parameter used to control various functions of the monster's AI. Depends on the AI script being used. AIP2 string `csv:"aip2"` // Numeric parameter used to control various functions of the monster's AI. Depends on the AI script being used. AIP3 string `csv:"aip3"` // Numeric parameter used to control various functions of the monster's AI. Depends on the AI script being used. AIP4 string `csv:"aip4"` // Numeric parameter used to control various functions of the monster's AI. Depends on the AI script being used. AIP5 string `csv:"aip5"` // Numeric parameter used to control various functions of the monster's AI. Depends on the AI script being used. AIP6 string `csv:"aip6"` // Numeric parameter used to control various functions of the monster's AI. Depends on the AI script being used. AIP7 string `csv:"aip7"` // Numeric parameter used to control various functions of the monster's AI. Depends on the AI script being used. AIP8 string `csv:"aip8"` // Numeric parameter used to control various functions of the monster's AI. Depends on the AI script being used. MissA1 string `csv:"MissA1"` // Points to the "Missile" field from Missiles.txt to determine which missile to use when the monster is in Attack 1 mode. MissA2 string `csv:"MissA2"` // Points to the "Missile" field from Missiles.txt to determine which missile to use when the monster is in Attack 2 mode. MissS1 string `csv:"MissS1"` // Points to the "Missile" field from Missiles.txt to determine which missile to use when the monster is in Skill 1 mode. MissS2 string `csv:"MissS2"` // Points to the "Missile" field from Missiles.txt to determine which missile to use when the monster is in Skill 2 mode. MissS3 string `csv:"MissS3"` // Points to the "Missile" field from Missiles.txt to determine which missile to use when the monster is in Skill 3 mode. MissS4 string `csv:"MissS4"` // Points to the "Missile" field from Missiles.txt to determine which missile to use when the monster is in Skill 4 mode. MissC string `csv:"MissC"` // Points to the "Missile" field from Missiles.txt to determine which missile to use when the monster is in Cast mode. MissSQ string `csv:"MissSQ"` // Points to the "Missile" field from Missiles.txt to determine which missile to use when the monster is in Sequence mode. Align string `csv:"Align"` // Controls the monster's alignment, determining if it will be an enemy, ally, or neutral to the player. IsSpawn bool `csv:"isSpawn"` // Boolean Field. If true, then the monster is allowed to spawn in an area level. IsMelee bool `csv:"isMelee"` // Boolean Field. If true, then the monster is classified as a melee only type. Npc bool `csv:"npc"` // Boolean Field. If true, then the monster is classified as an NPC (Non-Playable Character). Interact bool `csv:"interact"` // Boolean Field. If true, then the monster is interactable, allowing the player to click on the monster to perform an interact command. Inventory bool `csv:"inventory"` // Boolean Field. If true, then monster will have an inventory with randomly generated items. InTown bool `csv:"inTown"` // Boolean Field. If true, then the monster is allowed to be in town. LUndead bool `csv:"lUndead"` // Boolean Field. If true, then the monster is treated as a Low Undead type. HUndead bool `csv:"hUndead"` // Boolean Field. If true, then the monster is treated as a High Undead type. Demon bool `csv:"demon"` // Boolean Field. If true, then the monster is classified as a Demon type. Flying bool `csv:"flying"` // Boolean Field. If true, then the monster is flagged as a flying type. OpenDoors bool `csv:"opendoors"` // Boolean Field. If true, then the monster will use its AI to open doors if necessary. Boss bool `csv:"boss"` // Boolean Field. If true, then the monster is classified as a Boss type. PrimeEvil bool `csv:"primeevil"` // Boolean Field. If true, then the monster is classified as a Prime Evil type. Killable bool `csv:"killable"` // Boolean Field. If true, then the monster can be killed, damaged, and be put in a Death or Dead mode. SwitchAI bool `csv:"switchai"` // Boolean Field. If true, then monster's AI can be switched, such as by the Assassin's Mind Blast ability. NoAura bool `csv:"noAura"` // Boolean Field. If true, then the monster cannot be affected by friendly auras. NoMultishot bool `csv:"nomultishot"` // Boolean Field. If true, then the monster is not allowed to spawn with the Multi-Shot unique monster modifier. NeverCount bool `csv:"neverCount"` // Boolean Field. If true, then the monster is not counted on the list of active monsters in the area. PetIgnore bool `csv:"petIgnore"` // Boolean Field. If true, then pet AI scripts will ignore this monster. DeathDmg bool `csv:"deathDmg"` // Boolean Field. If true, then the monster will explode on death or use a general death damage function. GenericSpawn bool `csv:"genericSpawn"` // Boolean Field. If true, the monster is flagged as a possible selection for the AI generic spawner function. Zoo bool `csv:"zoo"` // Boolean Field. If true, then the monster will be flagged as a zoo type monster. CannotDesecrate bool `csv:"CannotDesecrate"` // Boolean Field. If true, then the monster will not be able to be desecrated when inside a desecrated level. RightArmItemType string `csv:"rightArmItemType"` // Determines what type of items the monster is allowed to hold in its right arm. LeftArmItemType string `csv:"leftArmItemType"` // Determines what type of items the monster is allowed to hold in its left arm. CanNotUseTwoHandedItems bool `csv:"canNotUseTwoHandedItems"` // Boolean Field. If true, then the monster can't use items marked as two-handed. SendSkills byte `csv:"SendSkills"` // Determines which of the monster's skill's level should be sent to the client. Skill1 string `csv:"Skill1"` // Points to a skill from the "skill" field in the skills.txt file. Gives the monster the skill to use (requires "Sk#mode"). Skill2 string `csv:"Skill2"` // Points to a skill from the "skill" field in the skills.txt file. Gives the monster the skill to use (requires "Sk#mode"). Skill3 string `csv:"Skill3"` // Points to a skill from the "skill" field in the skills.txt file. Gives the monster the skill to use (requires "Sk#mode"). Skill4 string `csv:"Skill4"` // Points to a skill from the "skill" field in the skills.txt file. Gives the monster the skill to use (requires "Sk#mode"). Skill5 string `csv:"Skill5"` // Points to a skill from the "skill" field in the skills.txt file. Gives the monster the skill to use (requires "Sk#mode"). Skill6 string `csv:"Skill6"` // Points to a skill from the "skill" field in the skills.txt file. Gives the monster the skill to use (requires "Sk#mode"). Skill7 string `csv:"Skill7"` // Points to a skill from the "skill" field in the skills.txt file. Gives the monster the skill to use (requires "Sk#mode"). Skill8 string `csv:"Skill8"` // Points to a skill from the "skill" field in the skills.txt file. Gives the monster the skill to use (requires "Sk#mode"). Sk1Mode string `csv:"Sk1mode"` // Determines the monster's animation mode when using the related skill. Can also point to a "sequence" defined in the monseq.txt file. Sk2Mode string `csv:"Sk2mode"` // Determines the monster's animation mode when using the related skill. Can also point to a "sequence" defined in the monseq.txt file. Sk3Mode string `csv:"Sk3mode"` // Determines the monster's animation mode when using the related skill. Can also point to a "sequence" defined in the monseq.txt file. Sk4Mode string `csv:"Sk4mode"` // Determines the monster's animation mode when using the related skill. Can also point to a "sequence" defined in the monseq.txt file. Sk5Mode string `csv:"Sk5mode"` // Determines the monster's animation mode when using the related skill. Can also point to a "sequence" defined in the monseq.txt file. Sk6Mode string `csv:"Sk6mode"` // Determines the monster's animation mode when using the related skill. Can also point to a "sequence" defined in the monseq.txt file. Sk7Mode string `csv:"Sk7mode"` // Determines the monster's animation mode when using the related skill. Can also point to a "sequence" defined in the monseq.txt file. Sk8Mode string `csv:"Sk8mode"` // Determines the monster's animation mode when using the related skill. Can also point to a "sequence" defined in the monseq.txt file. Sk1Lvl string `csv:"Sk1lvl"` // Controls the base skill level of the related skill on the monster. Sk2Lvl string `csv:"Sk2lvl"` // Controls the base skill level of the related skill on the monster. Sk3Lvl string `csv:"Sk3lvl"` // Controls the base skill level of the related skill on the monster. Sk4Lvl string `csv:"Sk4lvl"` // Controls the base skill level of the related skill on the monster. Sk5Lvl string `csv:"Sk5lvl"` // Controls the base skill level of the related skill on the monster. Sk6Lvl string `csv:"Sk6lvl"` // Controls the base skill level of the related skill on the monster. Sk7Lvl string `csv:"Sk7lvl"` // Controls the base skill level of the related skill on the monster. Sk8Lvl string `csv:"Sk8lvl"` // Controls the base skill level of the related skill on the monster. Drain string `csv:"Drain"` // Controls the monster's overall Life and Mana steal percentage. ColdEffect string `csv:"coldeffect"` // Sets the percentage change in movement speed and attack rate when the monster is chilled by a cold effect. ResDm string `csv:"ResDm"` // Sets the monster's Physical Damage Resistance stat. ResMa string `csv:"ResMa"` // Sets the monster's Magic Resistance stat. ResFi string `csv:"ResFi"` // Sets the monster's Fire Resistance stat. ResLi string `csv:"ResLi"` // Sets the monster's Lightning Resistance stat. ResCo string `csv:"ResCo"` // Sets the monster's Cold Resistance stat. ResPo string `csv:"ResPo"` // Sets the monster's Poison Resistance stat. DamageRegen string `csv:"DamageRegen"` // Controls the monster's Life regeneration per frame. SkillDamage string `csv:"SkillDamage"` // Points to a skill from the "skill" field in the skills.txt file. Changes the monster's min physical damage, max physical damage, and Attack Rating. NoRatio bool `csv:"noRatio"` // Boolean Field. If true, then use this file's fields to determine the monster's baseline stats. If false, use the MonLvl.txt file to determine the monster's baseline stats. ShieldBlockOverride string `csv:"ShieldBlockOverride"` // If equals 1, then the monster can block without a shield. If equals 2, then the monster cannot block at all, even with a shield equipped. If equals 0, then ignore this. ToBlock string `csv:"ToBlock"` // The monster's percent chance to block an attack. Crit string `csv:"Crit"` // The percent chance for the monster to score a critical hit when attacking an enemy, causing the attack to deal double damage. MinHP string `csv:"minHP"` // The monster's minimum amount of Life when spawned. MaxHP string `csv:"maxHP"` // The monster's maximum amount of Life when spawned. AC string `csv:"AC"` // The monster's Defense value. Exp string `csv:"Exp"` // The amount of Experience that is rewarded to the player when the monster is killed. A1MinD string `csv:"A1MinD"` // The minimum damage dealt by the monster when using the Attack 1 (A1) animation mode. A1MaxD string `csv:"A1MaxD"` // The maximum damage dealt by the monster when using the Attack 1 (A1) animation mode. A1TH string `csv:"A1TH"` // The monster's Attack Rating when using the Attack 1 (A1) animation mode. A2MinD string `csv:"A2MinD"` // The minimum damage dealt by the monster when using the Attack 2 (A2) animation mode. A2MaxD string `csv:"A2MaxD"` // The maximum damage dealt by the monster when using the Attack 2 (A2) animation mode. A2TH string `csv:"A2TH"` // The monster's Attack Rating when using the Attack 2 (A2) animation mode. S1MinD string `csv:"S1MinD"` // The minimum damage dealt by the monster when using the Skill 1 (S1) animation mode. S1MaxD string `csv:"S1MaxD"` // The maximum damage dealt by the monster when using the Skill 1 (S1) animation mode. S1TH string `csv:"S1TH"` // The monster's Attack Rating when using the Skill 1 (S1) animation mode. El1Mode string `csv:"El1Mode"` // Determines which animation mode will trigger an additional elemental damage type when used. El1Pct string `csv:"El1Pct"` // Controls the random percent chance (out of 100) that the monster will append the element damage to the attack. This field is used when El#Mode is not null. El1MinD string `csv:"El1MinD"` // The minimum element damage applied to the attack. This field is used when El#Mode is not null. El1MaxD string `csv:"El1MaxD"` // The maximum element damage applied to the attack. This field is used when El#Mode is not null. El1Dur string `csv:"El1Dur"` // Controls the duration of the related element mode in frame lengths (25 Frames = 1 Second). This is only applicable for the Cold, Poison, Stun, Burning, Freeze elements. This field is used when El#Mode is not null. El2Mode string `csv:"El2Mode"` // Determines which animation mode will trigger an additional elemental damage type when used. El2Pct string `csv:"El2Pct"` // Controls the random percent chance (out of 100) that the monster will append the element damage to the attack. This field is used when El#Mode is not null. El2MinD string `csv:"El2MinD"` // The minimum element damage applied to the attack. This field is used when El#Mode is not null. El2MaxD string `csv:"El2MaxD"` // The maximum element damage applied to the attack. This field is used when El#Mode is not null. El2Dur string `csv:"El2Dur"` // Controls the duration of the related element mode in frame lengths (25 Frames = 1 Second). This is only applicable for the Cold, Poison, Stun, Burning, Freeze elements. This field is used when El#Mode is not null. El3Mode string `csv:"El3Mode"` // Determines which animation mode will trigger an additional elemental damage type when used. El3Pct string `csv:"El3Pct"` // Controls the random percent chance (out of 100) that the monster will append the element damage to the attack. This field is used when El#Mode is not null. El3MinD string `csv:"El3MinD"` // The minimum element damage applied to the attack. This field is used when El#Mode is not null. El3MaxD string `csv:"El3MaxD"` // The maximum element damage applied to the attack. This field is used when El#Mode is not null. El3Dur string `csv:"El3Dur"` // Controls the duration of the related element mode in frame lengths (25 Frames = 1 Second). This is only applicable for the Cold, Poison, Stun, Burning, Freeze elements. This field is used when El#Mode is not null. TreasureClass1 string `csv:"TreasureClass1"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass2 string `csv:"TreasureClass2"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass3 string `csv:"TreasureClass3"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass4 string `csv:"TreasureClass4"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass1Nightmare string `csv:"TreasureClass1(N)"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass2Nightmare string `csv:"TreasureClass2(N)"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass3Nightmare string `csv:"TreasureClass3(N)"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass4Nightmare string `csv:"TreasureClass4(N)"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass1Hell string `csv:"TreasureClass1(H)"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass2Hell string `csv:"TreasureClass2(H)"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass3Hell string `csv:"TreasureClass3(H)"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TreasureClass4Hell string `csv:"TreasureClass4(H)"` // Defines which Treasure Class is used by the monster when it is killed. Points to the "Treasure Class" field from the TreasureClassEx.txt file. Used for normal monster types. TCQuestId string `csv:"TCQuestId"` // Checks to see if the player has a quest flag progress. If not, then use the "TreasureClass4" field, based on the game's current difficulty. RespecFromAkara bool `csv:"Respecialization from Akara is Completed"` // Indicates if the respecialization from Akara is completed. TCQuestCP string `csv:"TCQuestCP"` // Controls which Quest Checkpoint, or current progress within a quest (based on the "TCQuestId" value), is needed to use the "TreasureClass4" field, based on the game's current difficulty. }
MonsterStats represents the main functionalities and statistics for a monster in the game.
type MonsterStats2 ¶
type MonsterStats2 struct { Id string `csv:"Id"` // Controls the unique name ID to define the monster. This must match the same value in the monstats.txt file. Height int `csv:"Height"` // Determines the height of the monster. Code1 string `csv:"Code1"` // Code for the first purpose of Height. Code1Desc string `csv:"Description1"` // Description for the first purpose of Height. Code2 string `csv:"Code2"` // Code for the second purpose of Height. Code2Desc string `csv:"Description2"` // Description for the second purpose of Height. OverlayHeight int `csv:"OverlayHeight"` // Determines the height value of overlays for the monster. PixHeight int `csv:"pixHeight"` // Determines the pixel height value for the damage bar when the monster is selected. SizeX int `csv:"SizeX"` // Determines the tile grid size of the monster for handling placement when the monster spawns or uses movement skills. SizeY int `csv:"SizeY"` // Determines the tile grid size of the monster for handling placement when the monster spawns or uses movement skills. SpawnColCode int `csv:"spawnCol"` // Controls the method for spawning the monster based on the collisions in the environment. SpawnColDesc string `csv:"Description3"` // Description for the SpawnColCode. MeleeRng int `csv:"MeleeRng"` // Controls the range of the monster's melee attack. BaseWeapon string `csv:"BaseW"` // Defines the monster's base weapon class. BaseWeaponDesc string `csv:"Description4"` // Description for the BaseWeapon. HitClass int `csv:"HitClass"` // Defines the specific class of an attack when the monster successfully hits with an attack. HitClassDesc string `csv:"Description5"` // Description for the HitClass. HDv string `csv:"HDv"` // Head visual. TRv string `csv:"TRv"` // Torso visual. LGv string `csv:"LGv"` // Legs visual. RAv string `csv:"RAv"` // Right Arm visual. LAv string `csv:"LAv"` // Left Arm visual. RHv string `csv:"RHv"` // Right Hand visual. LHv string `csv:"LHv"` // Left Hand visual. SHv string `csv:"SHv"` // Shield visual. S1v string `csv:"S1v"` // Special 1 visual. S2v string `csv:"S2v"` // Special 2 visual. S3v string `csv:"S3v"` // Special 3 visual. S4v string `csv:"S4v"` // Special 4 visual. S5v string `csv:"S5v"` // Special 5 visual. S6v string `csv:"S6v"` // Special 6 visual. S7v string `csv:"S7v"` // Special 7 visual. S8v string `csv:"S8v"` // Special 8 visual. HD bool `csv:"HD"` // Head enabled. TR bool `csv:"TR"` // Torso enabled. LG bool `csv:"LG"` // Legs enabled. RA bool `csv:"RA"` // Right Arm enabled. LA bool `csv:"LA"` // Left Arm enabled. RH bool `csv:"RH"` // Right Hand enabled. LH bool `csv:"LH"` // Left Hand enabled. SH bool `csv:"SH"` // Shield enabled. S1 bool `csv:"S1"` // Special 1 enabled. S2 bool `csv:"S2"` // Special 2 enabled. S3 bool `csv:"S3"` // Special 3 enabled. S4 bool `csv:"S4"` // Special 4 enabled. S5 bool `csv:"S5"` // Special 5 enabled. S6 bool `csv:"S6"` // Special 6 enabled. S7 bool `csv:"S7"` // Special 7 enabled. S8 bool `csv:"S8"` // Special 8 enabled. TotalPieces int `csv:"TotalPieces"` // Defines the total amount of component pieces that the monster uses. DeathMode bool `csv:"mDT"` // If equals 1, then enable the Death Mode for the monster. NeutralMode bool `csv:"mNU"` // If equals 1, then enable the Neutral Mode for the monster. WalkMode bool `csv:"mWL"` // If equals 1, then enable the Walk Mode for the monster. GetHitMode bool `csv:"mGH"` // If equals 1, then enable the Get Hit Mode for the monster. Attack1Mode bool `csv:"mA1"` // If equals 1, then enable the Attack 1 Mode for the monster. Attack2Mode bool `csv:"mA2"` // If equals 1, then enable the Attack 2 Mode for the monster. BlockMode bool `csv:"mBL"` // If equals 1, then enable the Block Mode for the monster. CastMode bool `csv:"mSC"` // If equals 1, then enable the Cast Mode for the monster. Skill1Mode bool `csv:"mS1"` // If equals 1, then enable the Skill 1 Mode for the monster. Skill2Mode bool `csv:"mS2"` // If equals 1, then enable the Skill 2 Mode for the monster. Skill3Mode bool `csv:"mS3"` // If equals 1, then enable the Skill 3 Mode for the monster. Skill4Mode bool `csv:"mS4"` // If equals 1, then enable the Skill 4 Mode for the monster. DeadMode bool `csv:"mDD"` // If equals 1, then enable the Dead Mode for the monster. KnockbackMode bool `csv:"mKB"` // If equals 1, then enable the Knockback Mode for the monster. SequenceMode bool `csv:"mSQ"` // If equals 1, then enable the Sequence Mode for the monster. RunMode bool `csv:"mRN"` // If equals 1, then enable the Run Mode for the monster. DeathDirections int `csv:"dDT"` // Defines the number of directions that the monster can face during Death Mode. NeutralDirections int `csv:"dNU"` // Defines the number of directions that the monster can face during Neutral Mode. WalkDirections int `csv:"dWL"` // Defines the number of directions that the monster can face during Walk Mode. GetHitDirections int `csv:"dGH"` // Defines the number of directions that the monster can face during Get Hit Mode. Attack1Directions int `csv:"dA1"` // Defines the number of directions that the monster can face during Attack 1 Mode. Attack2Directions int `csv:"dA2"` // Defines the number of directions that the monster can face during Attack 2 Mode. BlockDirections int `csv:"dBL"` // Defines the number of directions that the monster can face during Block Mode. CastDirections int `csv:"dSC"` // Defines the number of directions that the monster can face during Cast Mode. Skill1Directions int `csv:"dS1"` // Defines the number of directions that the monster can face during Skill 1 Mode. Skill2Directions int `csv:"dS2"` // Defines the number of directions that the monster can face during Skill 2 Mode. Skill3Directions int `csv:"dS3"` // Defines the number of directions that the monster can face during Skill 3 Mode. Skill4Directions int `csv:"dS4"` // Defines the number of directions that the monster can face during Skill 4 Mode. DeadDirections int `csv:"dDD"` // Defines the number of directions that the monster can face during Dead Mode. KnockbackDirections int `csv:"dKB"` // Defines the number of directions that the monster can face during Knockback Mode. SequenceDirections int `csv:"dSQ"` // Defines the number of directions that the monster can face during Sequence Mode. RunDirections int `csv:"dRN"` // Defines the number of directions that the monster can face during Run Mode. Attack1Moving bool `csv:"A1mv"` // If equals 1, then enable the Attack 1 Mode while the monster is moving with the Walk mode or Run mode. Attack2Moving bool `csv:"A2mv"` // If equals 1, then enable the Attack 2 Mode while the monster is moving with the Walk mode or Run mode. CastMoving bool `csv:"SCmv"` // If equals 1, then enable the Cast Mode while the monster is moving with the Walk mode or Run mode. Skill1Moving bool `csv:"S1mv"` // If equals 1, then enable the Skill 1 Mode while the monster is moving with the Walk mode or Run mode. Skill2Moving bool `csv:"S2mv"` // If equals 1, then enable the Skill 2 Mode while the monster is moving with the Walk mode or Run mode. Skill3Moving bool `csv:"S3mv"` // If equals 1, then enable the Skill 3 Mode while the monster is moving with the Walk mode or Run mode. Skill4Moving bool `csv:"S4mv"` // If equals 1, then enable the Skill 4 Mode while the monster is moving with the Walk mode or Run mode. NoGfxHitTest bool `csv:"noGfxHitTest"` // If equals 1, then enable the mouse selection bounding box functionality around the monster. HtTop int `csv:"htTop"` // Define the pixel top offset around the monster for the mouse selection bounding box functionality. HtLeft int `csv:"htLeft"` // Define the pixel left offset around the monster for the mouse selection bounding box functionality. HtWidth int `csv:"htWidth"` // Define the pixel right offset around the monster for the mouse selection bounding box functionality. HtHeight int `csv:"htHeight"` // Define the pixel bottom offset around the monster for the mouse selection bounding box functionality. Restore int `csv:"restore"` // Determines if the monster should be placed on the inactive list, to be saved when the level unloads. AutomapCel int `csv:"automapCel"` // Controls what index of the Automap tiles to use to display this monster on the Automap. NoMap bool `csv:"noMap"` // If equals 1, then the monster will not appear on the Automap. NoOvly bool `csv:"noOvly"` // If equals 1, then no looping overlays will be drawn on the monster. IsSelectable bool `csv:"isSel"` // If equals 1, then the monster is selectable and can be targeted. AlwaysSelectable bool `csv:"alSel"` // If equals 1, then the player can always select the monster, regardless of being an ally or enemy. NeverSelectable bool `csv:"noSel"` // If equals 1, then the player can never select the monster. ShiftSelectable bool `csv:"shiftSel"` // If equals 1, then the player can target this monster when holding the Shift key and clicking to use a skill. CorpseSelectable bool `csv:"corpseSel"` // If equals 1, then the monster's corpse can be with the mouse cursor. IsAttackable bool `csv:"isAtt"` // If equals 1, then the monster can be attacked. CanRevive bool `csv:"revive"` // If equals 1, then the monster is allowed to be revived by the Necromancer Revive skill. LimitCorpses bool `csv:"limitCorpses"` // If equals 1, then the monster's corpse will be placed into a pool with all other corpses with this field checked. IsCritter bool `csv:"critter"` // If equals 1, then the monster will be flagged as a critter. IsSmallType bool `csv:"small"` // If equals 1, then the monster will be classified as a small type. IsLargeType bool `csv:"large"` // If equals 1, then the monster will be classified as a large type. IsSoftBodied bool `csv:"soft"` // If equals 1, then the monster's corpse is classified as soft-bodied. IsInert bool `csv:"inert"` // If equals 1, then the monster will never attack its enemies. HasObjectCollision bool `csv:"objCol"` // If equals 1 and the monster class is "barricadedoor", "barricadedoor2", or "evilhut", then the monster will place an invisible object with collision. HasDeadCollision bool `csv:"deadCol"` // If equals 1, then the monster's corpse will have collision with other units. IsUnflatDead bool `csv:"unflatDead"` // If equals 1, then ignore the corpse draw order for rendering the sprite on top of others, while the monster is dead. HasShadow bool `csv:"Shadow"` // If equals 1, then the monster will project a shadow on the ground. NoUniqueShift bool `csv:"noUniqueShift"` // If equals 1 and the monster is a Unique monster, then the monster will not have random color palette transform shifts. UseComponentDeath bool `csv:"compositeDeath"` // If equals 1, then the monster's Death Mode and Dead mode will make use of its component system. LocalBloodColor int `csv:"localBlood"` // Controls the color of the monster's blood based on the region locale. Bleed int `csv:"Bleed"` // Controls if the monster will create blood missiles. LightRadiusSize int `csv:"Light"` // Controls the monster's minimum Light Radius size. LightColorR int `csv:"light-r"` // Controls the red color value of the monster's Light Radius. LightColorG int `csv:"light-g"` // Controls the green color value of the monster's Light Radius. LightColorB int `csv:"light-b"` // Controls the blue color value of the monster's Light Radius. Utrans int `csv:"Utrans"` // Modifies the color palette transform for the monster in Normal difficulty. UtransN int `csv:"Utrans(N)"` // Modifies the color palette transform for the monster in Nightmare difficulty. UtransH int `csv:"Utrans(H)"` // Modifies the color palette transform for the monster in Hell difficulty. UtransDesc string `csv:"Description6"` // Description for the Utrans codes. InfernoLength int `csv:"InfernoLen"` // The frame length to hold the channel cast time of the inferno skill. InfernoAnim int `csv:"InfernoAnim"` // The exact frame in the channel animation to loop back and start at again. InfernoRollback int `csv:"InfernoRollback"` // The exact frame in the channel animation to determine when to roll back to the "InfernoAnim" frame. ResurrectMode string `csv:"ResurrectMode"` // Controls which monster mode to set on the monster when it is resurrected. ResurrectModeDesc string `csv:"Description7"` // Description for the ResurrectMode codes. ResurrectSkill string `csv:"ResurrectSkill"` // Controls what skill should the monster use when it is resurrected. SpawnUniqueMod string `csv:"SpawnUniqueMod"` // Controls what unique modifier the monster should always spawn with. }
MonsterStats2 represents additional functionalities and statistics for a monster in the game (continuation of MonsterStats1).
type MonsterUniqueAppellation ¶
type MonsterUniqueAppellation struct {
Name string `csv:"Name"` // A string key, which is used as a potential selection for generating a unique monster’s name
}
MonsterUniqueAppellation represents the data for unique monster name suffixes
type MonsterUniqueModifier ¶
type MonsterUniqueModifier struct { UniqueMod string `csv:"uniquemod"` // Reference field to define the monster modifier. ID int `csv:"id"` // Unique numeric ID for the monster modifier. Used as a reference in other data files. Enabled int `csv:"enabled"` // If 1, this monster modifier will be available for monsters to spawn with. If 0, it will never be used. Version int `csv:"version"` // Defines which game version to use this monster modifier (<100 = Classic mode | 100 = Expansion mode). Xfer int `csv:"xfer"` // If 1, this monster modifier can be transferred from the Boss monster to Minion monsters, including auras. If 0, it will never be transferred. Champion int `csv:"champion"` // If 1, this monster modifier will only be used by Champion monsters. If 0, it can be used by any type of special monster. FPick int `csv:"fPick"` // Controls if this monster modifier is allowed on the monster based on the function code and the parameters it checks. Exclude1 string `csv:"exclude1"` // Controls which Monster Types should not have this monster modifier (Uses the "type" field from MonType.txt). Exclude2 string `csv:"exclude2"` // Additional exclusion for Monster Types. CPick int `csv:"cpick"` // Modifies the chances that this monster modifier will be chosen for a Champion monster compared to other monster modifiers. CPickN int `csv:"cpick (N)"` // Modifies the chances in Nightmare difficulty. CPickH int `csv:"cpick (H)"` // Modifies the chances in Hell difficulty. UPick int `csv:"upick"` // Modifies the chances that this monster modifier will be chosen for a Unique monster compared to other monster modifiers. UPickN int `csv:"upick (N)"` // Modifies the chances in Nightmare difficulty. UPickH int `csv:"upick (H)"` // Modifies the chances in Hell difficulty. Constants string `csv:"constants"` // Special list of numeric parameters for special monsters. }
MonsterUniqueModifier represents the monster modifier for special monsters, including Unique and Champion monsters.
type MonsterUniqueName ¶
type MonsterUniqueName = MonsterUniqueAppellation
type NPC ¶
type NPC string
NPC represents the NPCs in each Act that have specific item data.
const ( NpcCharsi NPC = "Charsi" NpcGheed NPC = "Gheed" NpcAkara NPC = "Akara" NpcFara NPC = "Fara" NpcLysander NPC = "Lysander" NpcDrognan NPC = "Drognan" NpcHratli NPC = "Hratli" NpcAlkor NPC = "Alkor" NpcOrmus NPC = "Ormus" NpcElzix NPC = "Elzix" NpcAsheara NPC = "Asheara" NpcCain NPC = "Cain" NpcHalbu NPC = "Halbu" NpcJamella NPC = "Jamella" NpcLarzuk NPC = "Larzuk" NpcMalah NPC = "Malah" NpcAnya NPC = "Anya" )
type NPCTrade ¶
type NPCTrade struct { NPC string `csv:"npc"` // Points to the matching "Id" value in the monstats.txt file. Should not be changed. BuyMult int `csv:"buy mult"` // Used to calculate the item's price when bought by the NPC from the player. [cost] * [buy mult] / 1024 SellMult int `csv:"sell mult"` // Used to calculate the item's price when sold by the NPC to the player. [cost] * [sell mult] / 1024 RepMult int `csv:"rep mult"` // Used to calculate the cost to repair an item. [cost] * [rep mult] / 1024. Influences repair cost based on item durability and charges. QuestFlagA int `csv:"questflag A"` // Relative additional price calculations based on the player's quest flag progress (Quest Progress). QuestFlagB int `csv:"questflag B"` // Additional quest flag progress (Quest Progress). QuestFlagC int `csv:"questflag C"` // Additional quest flag progress (Quest Progress). QuestBuyMultA int `csv:"questbuymult A"` // Same functionality as "buy mult", but relies on "questflag" and applies after "buy mult" calculation. QuestBuyMultB int `csv:"questbuymult B"` // Same functionality as "buy mult", but relies on "questflag" and applies after "buy mult" calculation. QuestBuyMultC int `csv:"questbuymult C"` // Same functionality as "buy mult", but relies on "questflag" and applies after "buy mult" calculation. QuestSellMultA int `csv:"questsellmult A"` // Same functionality as "sell mult", but relies on "questflag" and applies after "sell mult" calculation. QuestSellMultB int `csv:"questsellmult B"` // Same functionality as "sell mult", but relies on "questflag" and applies after "sell mult" calculation. QuestSellMultC int `csv:"questsellmult C"` // Same functionality as "sell mult", but relies on "questflag" and applies after "sell mult" calculation. QuestRepMultA int `csv:"questrepmult A"` // Same functionality as "rep mult", but relies on "questflag" and applies after "rep mult" calculation. QuestRepMultB int `csv:"questrepmult B"` // Same functionality as "rep mult", but relies on "questflag" and applies after "rep mult" calculation. QuestRepMultC int `csv:"questrepmult C"` // Same functionality as "rep mult", but relies on "questflag" and applies after "rep mult" calculation. MaxBuy int `csv:"max buy"` // Sets the maximum price that the NPC will pay when the player sells an item in Normal Difficulty. MaxBuyN int `csv:"max buy (N)"` // Sets the maximum price that the NPC will pay when the player sells an item in Nightmare Difficulty. MaxBuyH int `csv:"max buy (H)"` // Sets the maximum price that the NPC will pay when the player sells an item in Hell Difficulty. }
NPCTrade represents the data for how each town NPC manipulates their store prices.
type NightmareUpgrade ¶
type NightmareUpgrade string
NightmareUpgrade represents the item code for upgrading an item in Nightmare difficulty.
const (
NightmareUpgradeNone NightmareUpgrade = "xxx"
)
type Object ¶
type Object struct { // Defines the unique type class of the object which is used to reference this object. These are also defined in the objpreset.txt file. Class int `csv:"Class"` // String key. Used as the display name of the object when being highlighted by the player. Name string `csv:"Name"` // Determines what files to use to display the graphics of the object. These are defined by the ObjType.txt file. Token string `csv:"Token"` // Boolean Field. If equals 1, then the object can be selected by the player and highlighted when hovered on by the mouse cursor. // Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt). Selectable0 bool `csv:"Selectable0"` Selectable1 bool `csv:"Selectable1"` Selectable2 bool `csv:"Selectable2"` Selectable3 bool `csv:"Selectable3"` Selectable4 bool `csv:"Selectable4"` Selectable5 bool `csv:"Selectable5"` Selectable6 bool `csv:"Selectable6"` Selectable7 bool `csv:"Selectable7"` // Controls the amount of sub tiles that the object occupies using X and Y coordinates. This is generally used for measuring the object's size when trying to spawn objects in rooms and controlling their distances apart. SizeX int `csv:"SizeX"` SizeY int `csv:"SizeY"` // Controls the frame length of the object's mode. If this equals 0, then that mode will be skipped. // Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt). FrameCnt0 int `csv:"FrameCnt0"` FrameCnt1 int `csv:"FrameCnt1"` FrameCnt2 int `csv:"FrameCnt2"` FrameCnt3 int `csv:"FrameCnt3"` FrameCnt4 int `csv:"FrameCnt4"` FrameCnt5 int `csv:"FrameCnt5"` FrameCnt6 int `csv:"FrameCnt6"` FrameCnt7 int `csv:"FrameCnt7"` // Controls the animation frame rate of how many frames to update per delta (Measured in 256ths). // Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt). FrameDelta0 int `csv:"FrameDelta0"` FrameDelta1 int `csv:"FrameDelta1"` FrameDelta2 int `csv:"FrameDelta2"` FrameDelta3 int `csv:"FrameDelta3"` FrameDelta4 int `csv:"FrameDelta4"` FrameDelta5 int `csv:"FrameDelta5"` FrameDelta6 int `csv:"FrameDelta6"` FrameDelta7 int `csv:"FrameDelta7"` // Boolean Field. If equals 1, then the object's current animation will loop back to play again when it finishes. // Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt). CycleAnim0 bool `csv:"CycleAnim0"` CycleAnim1 bool `csv:"CycleAnim1"` CycleAnim2 bool `csv:"CycleAnim2"` CycleAnim3 bool `csv:"CycleAnim3"` CycleAnim4 bool `csv:"CycleAnim4"` CycleAnim5 bool `csv:"CycleAnim5"` CycleAnim6 bool `csv:"CycleAnim6"` CycleAnim7 bool `csv:"CycleAnim7"` // Controls the Light Radius distance value for the object. If this value equals 0, then the object will not emit a Light Radius. // Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt). Lit0 int `csv:"Lit0"` Lit1 int `csv:"Lit1"` Lit2 int `csv:"Lit2"` Lit3 int `csv:"Lit3"` Lit4 int `csv:"Lit4"` Lit5 int `csv:"Lit5"` Lit6 int `csv:"Lit6"` Lit7 int `csv:"Lit7"` // Boolean Field. If equals 1, then the object will draw a shadow. If equals 0, then the object will not draw a shadow. // Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt). BlocksLight0 int `csv:"BlocksLight0"` BlocksLight1 int `csv:"BlocksLight1"` BlocksLight2 int `csv:"BlocksLight2"` BlocksLight3 int `csv:"BlocksLight3"` BlocksLight4 int `csv:"BlocksLight4"` BlocksLight5 int `csv:"BlocksLight5"` BlocksLight6 int `csv:"BlocksLight6"` BlocksLight7 int `csv:"BlocksLight7"` // Boolean Field. If equals 1, then the object will have collision. If equals 0, then the object will not have collision, and units can walk through it. // Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt). HasCollision0 bool `csv:"HasCollision0"` HasCollision1 bool `csv:"HasCollision1"` HasCollision2 bool `csv:"HasCollision2"` HasCollision3 bool `csv:"HasCollision3"` HasCollision4 bool `csv:"HasCollision4"` HasCollision5 bool `csv:"HasCollision5"` HasCollision6 bool `csv:"HasCollision6"` HasCollision7 bool `csv:"HasCollision7"` // Boolean Field. If equals 1, then the player can target this object to be attacked, and the player will use the Kick skill when operating the object. // If the object has the Class equal to "CompellingOrb" or "SoulStoneForge", then instead of using the Kick skill, players will use the Attack skill when operating the object. // If equals 0, then ignore this, and the player will not use a skill or animation when operating the object. IsAttackable0 bool `csv:"IsAttackable0"` // Controls the frame for where the object will start playing the next animation. // Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt). Start0 int `csv:"Start0"` Start1 int `csv:"Start1"` Start2 int `csv:"Start2"` Start3 int `csv:"Start3"` Start4 int `csv:"Start4"` Start5 int `csv:"Start5"` Start6 int `csv:"Start6"` Start7 int `csv:"Start7"` // Boolean Field. If equals 1, then enable the object to update its mode based on the game's time of day. // If equals 0, then the object will not update its mode based on the time of day. EnvEffect bool `csv:"EnvEffect"` // Boolean Field. If equals 1, then the object will be treated as a door when the game handles its collision, animation properties, tooltips, and commands. // If equals 0, then ignore this. IsDoor bool `csv:"IsDoor"` // Boolean Field. If equals 1, then the object will block the player's line of sight to see anything beyond the object. // If equals 0, then ignore this. This field relies on the "IsDoor" field being enabled. BlocksVis bool `csv:"BlocksVis"` // Determines the object's orientation type, which can affect mouse selection priority of the object when a unit is being rendered in front of or behind the object (such as a door object covering a unit and how the mouse selection should handle that). // This also affects the randomization of the coordinates when spawning the object near the edge of a room. Orientation int `csv:"Orientation"` // Controls how the object's sprite is drawn, which can affect how it is displayed in Perspective game camera mode. // Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt). OrderFlag0 int `csv:"OrderFlag0"` OrderFlag1 int `csv:"OrderFlag1"` OrderFlag2 int `csv:"OrderFlag2"` OrderFlag3 int `csv:"OrderFlag3"` OrderFlag4 int `csv:"OrderFlag4"` OrderFlag5 int `csv:"OrderFlag5"` OrderFlag6 int `csv:"OrderFlag6"` OrderFlag7 int `csv:"OrderFlag7"` // Boolean Field. If equals 1, then enable a random chance that the object will spawn in already in Opened mode. // The game will choose a 1/14 chance that this can happen when the object is spawned. If equals 0, then ignore this. PreOperate bool `csv:"PreOperate"` // Boolean Field. If equals 1, then confirm that this object has the correlating mode. // If equals 0, then this object will not have the correlating mode. This flag can affect how the object functions work. // Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt). Mode0 int `csv:"Mode0"` Mode1 int `csv:"Mode1"` Mode2 int `csv:"Mode2"` Mode3 int `csv:"Mode3"` Mode4 int `csv:"Mode4"` Mode5 int `csv:"Mode5"` Mode6 int `csv:"Mode6"` Mode7 int `csv:"Mode7"` // Controls the offset values in the X and Y directions for the object's visual graphics. This is measured in game pixels. Xoffset int `csv:"Xoffset"` Yoffset int `csv:"Yoffset"` // Boolean Field. If equals 1, then draw the object's shadows. If equals 0, then do not draw the object's shadows. Draw bool `csv:"Draw"` // Controls the Red color gradient of the object's Light Radius. This field depends on the "Lit#" field having a value greater than 0. Red int `csv:"Red"` // Controls the Green color gradient of the object's Light Radius. This field depends on the "Lit#" field having a value greater than 0. Green int `csv:"Green"` // Controls the Blue color gradient of the object's Light Radius. This field depends on the "Lit#" field having a value greater than 0. Blue int `csv:"Blue"` // Boolean Field. If equals 1, then the object will be flagged to have a Head composite piece, and the game will use the component system to handle the object's mouse selection collision box. // If equals 0, then ignore this. HD bool `csv:"HD"` // Boolean Field. If equals 1, then the object will be flagged to have a Torso composite piece, and the game will use the component system to handle the object's mouse selection collision box. // If equals 0, then ignore this. TR bool `csv:"TR"` // Boolean Field. If equals 1, then the object will be flagged to have a Legs composite piece, and the game will use the component system to handle the object's mouse selection collision box. // If equals 0, then ignore this. LG bool `csv:"LG"` // Boolean Field. If equals 1, then the object will be flagged to have a Right Arm composite piece, and the game will use the component system to handle the object's mouse selection collision box. // If equals 0, then ignore this. RA bool `csv:"RA"` // Boolean Field. If equals 1, then the object will be flagged to have a Left Arm composite piece, and the game will use the component system to handle the object's mouse selection collision box. // If equals 0, then ignore this. LA bool `csv:"LA"` // Boolean Field. If equals 1, then the object will be flagged to have a Right Hand composite piece, and the game will use the component system to handle the object's mouse selection collision box. // If equals 0, then ignore this. RH bool `csv:"RH"` // Boolean Field. If equals 1, then the object will be flagged to have a Left Hand composite piece, and the game will use the component system to handle the object's mouse selection collision box. // If equals 0, then ignore this. LH bool `csv:"LH"` // Boolean Field. If equals 1, then the object will be flagged to have a Shield composite piece, and the game will use the component system to handle the object's mouse selection collision box. // If equals 0, then ignore this. SH bool `csv:"SH"` // Boolean Field. If equals 1, then the object will be flagged to have a Special # composite piece, and the game will use the component system to handle the object's mouse selection collision box. // If equals 0, then ignore this. S1 bool `csv:"S1"` S2 bool `csv:"S2"` S3 bool `csv:"S3"` S4 bool `csv:"S4"` S5 bool `csv:"S5"` S6 bool `csv:"S6"` S7 bool `csv:"S7"` S8 bool `csv:"S8"` // Defines the total amount of composite pieces. If this value is greater than 1, then the game will treat the object with the multiple composite piece system, and the player can hover the mouse over and select the object's different components. TotalPieces int `csv:"TotalPieces"` // Determines the object's class type by declaring a specific value. This is used by the various functions ("InitFn", "OperateFn", "PopulateFn") for knowing how to handle specific types of objects. SubClass int `csv:"SubClass"` // Controls the X and Y distance delta values between adjacent objects when they are being populated together. // This field is only used by the Populate Function ("PopulateFn") values 3 and 4, for the Add Barrels and Add Crates functions. Xspace int `csv:"Xspace"` Yspace int `csv:"Yspace"` // Controls the vertical offset of the name tooltip's position above the object when the object is being selected. This is measured in pixels. NameOffset int `csv:"NameOffset"` // Boolean Field. If equals 1, then if a monster operates the object, then the object will run its operate function. // If equals 0, then if a monster operates the object, then the object will not run its operate function. MonsterOK bool `csv:"MonsterOK"` // Controls what shrine function to use (See "Code" field in shrines.txt) when the object is told to do its Skill command. ShrineFunction int `csv:"ShrineFunction"` // Boolean Field. If equals 1, the game will restore the object in an inactive state when the area level repopulates after a player loads back into it. // If equals 0, then the game will not restore the object. Restore bool `csv:"Restore"` // Used as possible parameters for various functions for the object. Parm0 int `csv:"Parm0"` Parm1 int `csv:"Parm1"` Parm2 int `csv:"Parm2"` Parm3 int `csv:"Parm3"` Parm4 int `csv:"Parm4"` // Boolean Field. If equals 1, then the object will have a random chance to spawn with the locked attribute and have a display tooltip name with the "lockedchest" string key. // This only works when the object has the Init Function ("InitFn") value equal to 3. If equals 0, then ignore this. Lockable bool `csv:"Lockable"` // Controls if an object should call its Populate function ("PopulateFn") when it is chosen as an object that can spawn in a room. // Objects with a gore value greater than 2 will not be populated in rooms. Gore int `csv:"Gore"` // Boolean Field. If equals 1, then the object's animation rate will always match the "FrameDelta#" field (depending on the object's mode) which means the client and server will have synced animations. // If equals 0, then the animation rate will have random visual variation. Sync bool `csv:"Sync"` // Controls the amount of damage dealt by the object when it performs an Operate Function ("OperateFn") that deals damage such as triggering a pulse trap or an explosion. Damage int `csv:"Damage"` // Boolean Field. If equals 1, then add and remove an overlay on the object based on its current mode. If equals 0, then ignore this. // This field will only work with specific object Classes and will use specific Overlays for those objects. Overlay bool `csv:"Overlay"` // Boolean Field. If equals 1, then the game will handle the bounding box around the object for mouse selection. // The game will use the object's pixel size and "Left", "Top", "Width", "Height" field values to determine the collision size. // If equals 0, then ignore this. CollisionSubst bool `csv:"CollisionSubst"` // Controls the starting X position offset value for drawing the bounding collision box around the object for mouse selection. // This field depends on the "CollisionSubst" field being enabled. Left int `csv:"Left"` // Controls the starting Y position offset value for drawing the bounding collision box around the object for mouse selection. // This field depends on the "CollisionSubst" field being enabled. Top int `csv:"Top"` // Controls the ending X position offset value for drawing the bounding collision box around the object for mouse selection. // This field depends on the "CollisionSubst" field being enabled. Width int `csv:"Width"` // Controls the ending Y position offset value for drawing the bounding collision box around the object for mouse selection. // This field depends on the "CollisionSubst" field being enabled. Height int `csv:"Height"` // Defines a function that the game will use when the player clicks on the object. OperateFn ObjectOperateFunction `csv:"OperateFn"` // Defines a function that the game will use to spawn this object. PopulateFn ObjectPopulateFunction `csv:"PopulateFn"` // Defines a function to control how the object works while active and when initially activated by a player. InitFn ObjectInitFunction `csv:"InitFn"` // Defines a function that runs on the object from the game's client side. ClientFn ObjectClientFunction `csv:"ClientFn"` // Boolean Field. If equals 1, then when the object has been used, the game will not restore the object in an inactive state when the area level repopulates after a player loads back into it. // If equals 0, then ignore this. RestoreVirgins bool `csv:"RestoreVirgins"` // Boolean Field. If equals 1, then missiles can collide with this object. If equals 0, then missiles will ignore and fly through this object. BlockMissile bool `csv:"BlockMissile"` // Controls the targeting priority of the object. // Code Description // 0 The object will not change its targeting priority. // 1 The object's target priority will equal a corpse only when the object is opened. // 2 The object's target priority always equals a corpse. ObjectTargetPriority `csv:"DrawUnder"` // Boolean Field. If equals 1, then this object will be classified as an // object that can be opened to warp to another area, and the UI will be // notified to display a tooltip for opening or entering, based on the // object’s mode. If equals 0, then ignore this. OpenWarp bool `csv:"OpenWarp"` // Used to display a tile in the Automap to represent the object. Defines // which cell number to use in the tile list for the Automap. If this value // equals 0, then this object will not display on the Automap. // (See Automap.txt) AutoMap string `csv:"AutoMap"` }
Object represents the functionalities of all objects found in area levels.
type ObjectClientFunction ¶
type ObjectClientFunction int
ObjectClientFunction represents the various functions an object can have.
const ( // DoNothing The object does nothing. DoNothing ObjectClientFunction = iota // AmbientSoundAlwaysTrue Always return true for an ambient sound. AmbientSoundAlwaysTrue // Ripple Randomly plays between the Operating animation and loops back to the Neutral animation. Ripple // HellFire Same as function Ripple, but sound will also be processed. HellFire // Drinker Randomly plays between the Special 0 animation and loops back to the Neutral animation. Also processes sound. Drinker // Gesturer Randomly plays between the Special 0 / Special 1 animation and loops back to the Neutral animation. Also processes sound. Gesturer // Turner Randomly plays between the Special 0 animation and loops back to the Neutral animation. Uses different tick counts than function Drinker. Also processes sound. Turner // Skeleton Randomly plays between the Operating animation and loops back to the Neutral animation. Skeleton // DurielEntrance If the object is not in Neutral mode, then preload the Duriel monster. DurielEntrance // ClientSmoke Controls how the object can be removed from the client based on distance to a player and if the object has a specific tick count. ClientSmoke // Bubbles Randomly plays between the Operating animation and loops back to the Neutral animation. Uses different tick counts than function Skeleton. Bubbles // Floaters Always return true. Floaters // Altar If the object is not in Neutral mode, then preload the Ancients statues. Altar // InvisibleAncient If the object is in its Neutral mode and the player operating the object has not completed the Rite of Passage quest, then handle the control of operating the object. InvisibleAncient // Bonfire Updates the object’s animation modes based on the time of day. Bonfire // FrozenAnya If the object is in Neutral mode, then play the “npcalert” overlay. FrozenAnya // LastExit If the object is in its Operating mode, then modify the animation frames. LastExit // Zoo Handle the creation of monsters if monsters need to be created. Zoo // Keeper Randomly plays the “barbarian_grunt_small_1” sound. Keeper )
type ObjectGroup ¶
type ObjectGroup struct { // GroupName is a reference field to define the Object Group name. GroupName string `csv:"GroupName"` // ObjectIDs contains the IDs of Objects assigned to this Object Group. ObjectID0 int `csv:"ID0"` ObjectID1 int `csv:"ID1"` ObjectID2 int `csv:"ID2"` ObjectID3 int `csv:"ID3"` ObjectID4 int `csv:"ID4"` ObjectID5 int `csv:"ID5"` ObjectID6 int `csv:"ID6"` ObjectID7 int `csv:"ID7"` // ObjectDensities controls the number of Objects to spawn in the area level. // This is also affected by the Object's populate function defined by the "PopulateFn" field from the objects.txt file. // The maximum value allowed is 128. ObjectDesnity0 int `csv:"DENSITY0"` ObjectDesnity1 int `csv:"DENSITY1"` ObjectDesnity2 int `csv:"DENSITY2"` ObjectDesnity3 int `csv:"DENSITY3"` ObjectDesnity4 int `csv:"DENSITY4"` ObjectDesnity5 int `csv:"DENSITY5"` ObjectDesnity6 int `csv:"DENSITY6"` ObjectDesnity7 int `csv:"DENSITY7"` // ObjectProbabilities control the probability that the Object will spawn in the area level. // This is calculated in order, so the first probability that is successful will be chosen. // These field values should add up to exactly 100 in total to guarantee that one of the objects spawns. ObjectProbability0 int `csv:"PROB0"` ObjectProbability1 int `csv:"PROB1"` ObjectProbability2 int `csv:"PROB2"` ObjectProbability3 int `csv:"PROB3"` ObjectProbability4 int `csv:"PROB4"` ObjectProbability5 int `csv:"PROB5"` ObjectProbability6 int `csv:"PROB6"` ObjectProbability7 int `csv:"PROB7"` }
ObjectGroup represents a group of possible Objects to spawn in a part of an area level.
type ObjectInitFunction ¶
type ObjectInitFunction int
ObjectInitFunction represents the various functions an object can have.
const ( // InitDoNothing The object does nothing. InitDoNothing ObjectInitFunction = iota // ObjectInitShrine General function for determining which type of Shrine function to pick for the Shrine object. // This also uses the “Parm0” field to define the Shrine Type: // · If equals 0, default to health shrine // · If equals 1, then use Health Shrine // · If equals 2, then use Mana Shrine // · If equals 3, then pick a random stats shrine with a 10% chance to spawn a surprise shrine ObjectInitShrine // ObjectInitTrappable Handle a random chance to give the object 1 of the 9 random traps. // This random chance depends on the area level’s monster level. ObjectInitTrappable // ObjectInitChest Run function 1, and also determine if the object should be Locked or not. // The random chance to make the object Locked depends on the area level’s monster level. ObjectInitChest // QuestObjectTowerTomeInit If The Forgotten Tower quest is active, then set the object to run in Special 0 Mode. QuestObjectTowerTomeInit // QuestObjectStoneInit Sets the object’s mode to be Opened or Neutral, depending on the progress with the Portal to Tristram for the Search for Cain quest. QuestObjectStoneInit // QuestObjectGibbetInit Sets the object’s mode, depending on the progress with Cain’s Cage for the Search for Cain quest. QuestObjectGibbetInit // ObjectInitDungeonTorch Sets the object’s mode to Opened. ObjectInitDungeonTorch // Quest Object Inifuss Init Sets the object’s mode, depending on the progress with the Tree for the Search for Cain quest. QuestObjectInifussInit // ObjectInitBonfire If the current level is Act 1 Rogue Encampment, then tell the object to do a periodic skill, otherwise set the object mode to Opened. ObjectInitBonfire // ObjectInitTownPortal Initializes the object’s mode and adds the level ID as an attribute to keep track of. ObjectInitTownPortal // ObjectInitPermanentPortal Handles specific level transitions for permanent portals found throughout the game. ObjectInitPermanentPortal // QuestObjectStoneSoundInit Attaches the object to the Search for Cain quest functions. QuestObjectStoneSoundInit // ObjectInitDungeonTorch2 Sets the object’s mode to Operating. ObjectInitDungeonTorch2 // QuestObjectMalusInit Attaches the object to the Tools of the Trade quest functions. QuestObjectMalusInit // ObjectInitWell Sets the object’s attributes for a well including the amount of charges. // This also uses the “Parm2” field to define the amount of Life healed. ObjectInitWell // ObjectInitWaypoint Handles setting up the waypoint mechanic to the object for the current area level. ObjectInitWaypoint // QuestObjectJerhyn1Init Handle where to place Jerhyn (near the palace entrance) based on Arcane Sanctuary quest progress. QuestObjectJerhyn1Init // QuestObjectJerhyn2Init Handle where to place Jerhyn (inside the palace) based on The Seven Tombs quest progress. QuestObjectJerhyn2Init // QuestObjectTaintedSunAltarInit Attaches the object to the Tainted Sun quest functions. QuestObjectTaintedSunAltarInit // QuestObjectSevenTombsReceptacleInit Setup the object to be a receptacle for the Horadric Staff, based on The Seven Tombs quest progress. QuestObjectSevenTombsReceptacleInit // ObjectInitFire Setup the object to act as fire. ObjectInitFire // QuestObjectLamEsensTomeInit Attaches the object to the Lam Esen’s Tome quest functions. QuestObjectLamEsensTomeInit // ObjectInitTrap1 Handle setting up the object frame count and making sure it has full stats. ObjectInitTrap1 // QuestObjectGidbinnInit Attaches the object to the Blade of the Old Religion quest functions. QuestObjectGidbinnInit // TestObjectInit Sets the object’s mode to Operating. TestObjectInit // ObjectInitTrappablePoison Sets up the random chance of 333/1000 for the object to have a trap that creates a poison nova. ObjectInitTrappablePoison // ObjectInitGold Create a random amount of gold piles (between 1 to 10) in random locations around the object. ObjectInitGold // QuestObjectInitArcanePortal Setup the object to link area levels between the Palace Cellar Level 3 and the Arcane Sanctuary. QuestObjectInitArcanePortal // QuestObjectHaremBlockerInit Setup the object’s collision based on the Arcane Sanctuary quest progress. QuestObjectHaremBlockerInit // QuestObjectHoradricCubeChestInit Sets up information about the object. QuestObjectHoradricCubeChestInit // QuestObjectHoradricScrollChestInit Sets up information about the object. QuestObjectHoradricScrollChestInit // QuestObjectStaffOfKingsChestInit Sets up information about the object. QuestObjectStaffOfKingsChestInit // ObjectInitHellTorch Randomly set the object’s mode to Operating. ObjectInitHellTorch // QuestObjectDurielPassagewayInit Decide between setting the object’s mode to Opened or Neutral, based on the progress of the The Seven Tombs quest. QuestObjectDurielPassagewayInit // QuestObjectTyraelDoorInit Decide between setting the object’s mode to Opened or Neutral, based on the progress of the The Seven Tombs quest. QuestObjectTyraelDoorInit // QuestObjectGidbinnTownAltarInit Decide between setting the object’s mode to Opened or Neutral, based on the progress of the The Blade of the Old Religion quest. QuestObjectGidbinnTownAltarInit // Return null A placeholder value that does nothing. ReturnNull // QuestObjectBeneathTheCityStairsInit Decide between setting the object’s mode to Opened or Neutral, based on the progress of the Khalim’s Flail quest. QuestObjectBeneathTheCityStairsInit // QuestObjectBeneathTheCityLeverInit If the Khalim’s Flail quest is complete, then set the object’s mode to Opened. QuestObjectBeneathTheCityLeverInit // QuestObjectDarkWandererInit Create the “darkwanderer” monster and order to walk to the object’s location. // This depends on the players character save from having witnessed this event before. QuestObjectDarkWandererInit // QuestObjectInitHellGate Decide between setting the object’s mode to Opened or Neutral, based on the progress of the The Guardian quest. QuestObjectInitHellGate // QuestObjectMephistoBridgeInit Decide between setting the object’s mode to Opened or Neutral, based on the progress of the The Guardian quest. // If the object is not Opened, then also tell it to do its unique event. QuestObjectMephistoBridgeInit // ObjectTrappedSoulInit Determine where to spawn the “trappedsoul1” and “trappedsoul2” monster classes in the area level. ObjectTrappedSoulInit // QuestObjectForgottenTowerChestInit Decide between setting up the chest object, relying on the Forgotten Tower quest being in progress. QuestObjectForgottenTowerChestInit // QuestObjectSoulstoneForgeInit Decide between setting the object’s mode to Opened or Neutral, based on the progress of the Hell’s Forge quest. QuestObjectSoulstoneForgeInit // QuestObjectHratliStartInit Handle placing Hratli near the starting point of Act 3, based on the player’s Act 3 prologue progress. QuestObjectHratliStartInit // QuestObjectHratliEndInit Handle placing Hratli near his forge, if the player has progressed past the Act 3 prologue. QuestObjectHratliEndInit // ObjectJackInTheBoxInit If the object is in Opened or Opening mode, then tell the object to do a periodic item skill event. ObjectJackInTheBoxInit // QuestObjectNatalyaInit Handle placing Natalya at her location based on the player’s progress of The Guardian quest. QuestObjectNatalyaInit // QuestObjectMephistoDoorInit Handle setting the object to Opened mode based on the player’s progress of destroying the orb for The Blackened Temple quest. QuestObjectMephistoDoorInit // QuestObjectCainStartInit Handle creating the Cain unit in the Rogue Encampment based on the player’s progress of The Search for Cain quest. QuestObjectCainStartInit // QuestObjectDiabloStartInit Handle the spawning event of Diablo based on the player’s progress of activating the seal objects in the Chaos Sanctuary. QuestObjectDiabloStartInit // QuestObjectDiabloSealInit Do nothing. QuestObjectDiabloSealInit // ObjectInitBetterChest Initialize the chest object and give it the special magical property. ObjectInitBetterChest // ObjectInitFissure Tell the object to do a periodic skill event at random times. ObjectInitFissure // ObjectVileDoggieInit If the object is in Neutral mode, then set the object to Operating mode and tell it to do a unique event. ObjectVileDoggieInit // QuestObjectCompellingOrbInit Set the object to Opened based on the progress of The Blackened Temple quest. QuestObjectCompellingOrbInit // QuestObjectCainPortalInit Set the object to Operating mode and tell it to do a unique event. QuestObjectCainPortalInit // QuestCagedWussie1Init Spawn the “act5pow” units based on the player’s progress of the Rescue on Mount Arreat quest. QuestCagedWussie1Init // QuestMoeInit Setup the Korlic statue object with quest data based on the Right of Passage quest progress. QuestMoeInit // QuestLarryInit Setup the Madawc statue object with quest data based on the Right of Passage quest progress. QuestLarryInit // QuestCurlyInit Setup the Talic statue object with quest data based on the Right of Passage quest progress. QuestCurlyInit // QuestAnyaInsideTownInit Handle for creating the Anya NPC in town, based on the progress of the Prison of Ice quest. QuestAnyaInsideTownInit // QuestAnyaOutsideTownInit Handle this object during the progress of the Prison of Ice quest and tell it to do its unique event. QuestAnyaOutsideTownInit // QuestNihlathakInsideTownInit Create the Nihlathak NPC in town, based on the progress of the Prison of Ice quest. QuestNihlathakInsideTownInit // QuestNihlathakOutsideTownInit Create the “Nihlathak Boss” super unique monster, based on the progress of the Prison of Ice quest. QuestNihlathakOutsideTownInit // QuestLarzukStartInit Do nothing. QuestLarzukStartInit // QuestLarzukEndInit Object placeholder to create the “Larzuk” NPC in town. QuestLarzukEndInit // QuestAncientTomeInit Set the tome object mode to Opened or Neutral based on the progress of The Rite of Passage quest. QuestAncientTomeInit // QuestAncientGatewayInit Set the door object mode to Opened or Neutral based on the progress of The Rite of Passage quest. QuestAncientGatewayInit // QuestFrozenAnyaInit Handle this object during the progress of the Prison of Ice quest and tell it to do its unique event. QuestFrozenAnyaInit // QuestLastExitInit Set the Throne of Destruction exit object mode to Operating or Opened based on the progress of the Eve of Destruction quest. QuestLastExitInit // QuestSummitDoorInit Set this door object mode to Operating or Opened based on the progress of the Rite of Passage quest. QuestSummitDoorInit // QuestPlayerLastPortalInit Set the last portal object mode to Operating or Opened based on the progress of the Eve of Destruction quest. QuestPlayerLastPortalInit // QuestTyraelPortalToExpansionInit Set this object mode to Operating or Opened based on the progress of the Terror’s End quest. QuestTyraelPortalToExpansionInit // QuestZooInit Attempt a random chance based on successfully selecting a “zoo” type monster from the entire list of possible monsters (See monstats.txt). // If selected, then send the quest update command to all players, based on the Eve of Destruction quest. QuestZooInit )
type ObjectMode ¶
type ObjectOperateFunction ¶
type ObjectOperateFunction int
ObjectOperateFunction represents the various functions that the game will use when the player clicks on an object.
const ( // DoNotOperate Do nothing. DoNotOperate ObjectOperateFunction = iota // SpawnItemAndMaybeMonster General function to operate an object and spawn items. // Also can randomly spawn a monster and/or trigger a trap. SpawnItemAndMaybeMonster // Shrine General function for Shrine objects. Uses fields from the shrines.txt file for determining specific Shrine functions. ShrineOperate // SpawnItemSometimes General function to operate the object and spawn random items. // Has a 20% chance to spawn a random item. Can also randomly trigger a trap. SpawnItemSometimes // ChestOperate General function for opening chest objects and spawning random items. // Handles key interaction functionality if the chest object is locked. ChestOperate // BarrelOperate General function for breaking barrel objects and randomly spawning items or possibly a monster. BarrelOperate // QuestTomeOperate Handles updating The Forgotten Tower quest progress. QuestTomeOperate // BarrelExplodingOperate Explode the object and also explode adjacent Exploding Barrel object Classes. BarrelExplodingOperate // DoorOperate General function for opening and closing door objects. DoorOperate // QuestCairnStoneOperate Handle operating the 5 Cairn Stone objects based on the player’s progress for the Search for Cain quest // and if the player has the deciphered Scroll of Inifuss item. Also removes the Scroll of Inifuss item once successfully operated. QuestCairnStoneOperate // QuestGibbetOperate Handle operating the object and updating the player’s progress for the Search for Cain quest. // This is used for the cage object that Deckard Cain is trapped in. QuestGibbetOperate // BrazierOperate Switch the object from Neutral mode to Operating/Opened mode, or vice versa. BrazierOperate // QuestInifussOperate Handle dropping the Bark Scroll item, based on the player’s progress for the Search for Cain quest. QuestInifussOperate // TikiOperate Switch the object from Neutral mode to Operating mode, or vice versa. TikiOperate // SpawnItem General function to operate an object and have it spawn random items. // Can also remove the object’s collision and randomly trigger a trap. SpawnItem // TownPortalOperate Controls the Town Portal functionalities, including how to teleport players back to town or to the current level, // and handling how players interact with other player Town Portals. TownPortalOperate // TrapDoorOperate Open a door type object and then control its level warp capabilities. TrapDoorOperate // Obelisk1 Use the transaction UI if the player has a gem in their inventory, and operate the object. Obelisk1 // SecretDoorOperate Handle operating an object and removing its collision. SecretDoorOperate // ArmorRackOperate Activate the object to spawn a random armor item. ArmorRackOperate // WeaponRackOperate Activate the object to spawn a random weapon item. WeaponRackOperate // QuestMalusOperate Handle dropping the Horadric Malus item, based on the player’s progress for the Tools of the Trade quest. QuestMalusOperate // WellOperate Handle healing the player and keeping track of the charges and regeneration of charges for the well object. WellOperate // WaypointOperate Handle activating a waypoint object and using the Waypoint UI when clicking on an activated waypoint object. WaypointOperate // QuestTaintedSunAltarOperate Create the Amulet of the Viper item and other treasure items based on The Horadric Staff quest progress // and the number of players in the game. Also update the progress for the Tainted Sun quest. QuestTaintedSunAltarOperate // QuestSevenTombsReceptacleOperate Handle using the Horadric Staff item with the transaction UI to operate the object. QuestSevenTombsReceptacleOperate // BookshelfOperate Randomly create either tomes or scrolls of Identify or Town Portal. BookshelfOperate // TeleportPadOperate Teleport the player to another part of the room. TeleportPadOperate // QuestLamEsenTomeOperate Handle dropping the Lam Esen’s Tome item, based on the player’s progress for the Lam Esen’s Tome quest. QuestLamEsenTomeOperate // BreakableOperate Animate the object and remove its collision. BreakableOperate // Exploding Create an explosion around the object. Exploding // QuestGidbinnOperate Handle dropping the Decoy Gidbinn item, based on the player’s progress for the Blade of the Old Religion quest. QuestGidbinnOperate // PlayerBankOperate Control accessing the Stash UI while in town for the Bank object Class. PlayerBankOperate // WirtSpurt Create the Wirt’s leg item and animate the object. WirtSpurt // ArcanePortal Control how the warp object transitions the player from the Palace Cellar Level 3 to the Arcane Sanctuary. ArcanePortal // QuestHoradricCubeChestOperate Create the Horadric Cube item and other treasure items based on The Horadric Staff quest progress // and the number of players in the game. QuestHoradricCubeChestOperate // QuestHoradricScrollChestOperate Create the Horadric Scroll item and other treasure items based on The Horadric Staff quest progress // and the number of players in the game. QuestHoradricScrollChestOperate // QuestStaffOfKingsChestOperate Create the Staff of Kings item and other treasure items based on The Horadric Staff quest progress // and the number of players in the game. QuestStaffOfKingsChestOperate // QuestArcaneTomeOperate Handles updating The Arcane Sanctuary quest progress. QuestArcaneTomeOperate // OneWayPortalOperate Controls the functionalities of the “DurielPortal” one way warp object. OneWayPortalOperate // QuestBeneathTheCityStairsOperate Handles warp object operates based on the Khalim’s Flail quest progress. QuestBeneathTheCityStairsOperate // QuestBeneathTheCityLeverOperate Handles operating an object based on the Khalim’s Flail quest progress. QuestBeneathTheCityLeverOperate // HellGateOperate Handles how to transition the player to Act 4 based on The Guardian quest progress. HellGateOperate // StairsOperate Handles how the stairs object opens or warp the player to another level. StairsOperate // JackInTheBoxOperate Handles the operating the object and having it spawn items and set its mode to Special 2. JackInTheBoxOperate // QuestSoulstoneForgeOperate Handle operating the object based on The Hellforge quest progress and how it spawns items. // Also remove the Hellforge Hammer weapon from the player. QuestSoulstoneForgeOperate // QuestMephistoDoorOperate Handles how the stairs object opens or warp the player to another level. QuestMephistoDoorOperate // DelaySpawnOperate Waits until the object is done operating before updating events. DelaySpawnOperate // QuestDiabloSealOperate Handle operating a Diablo Seal object while also tracking the progress on the other related Diablo Seal objects (5 in total). QuestDiabloSealOperate // QuestCompellingOrbOperate Handle operating the object based on the Khalim’s Flail quest progress and The Blackened Temple progress. // Also remove the Khalim’s Flail weapon from the player. QuestCompellingOrbOperate // QuestDiabloSeal1Operate Handle operating a Diablo Seal object Class and getting a spawn point for monsters. Also calls function 52. QuestDiabloSeal1Operate // QuestDiabloSeal3Operate Handle operating a Diablo Seal object Class and getting a spawn point for monsters. Also calls function 52. QuestDiabloSeal3Operate // QuestDiabloSeal5Operate Handle operating a Diablo Seal object Class and getting a spawn point for monsters. Also calls function 52. QuestDiabloSeal5Operate // QuestKhalimHeartChestOperate Create the Khalim’s Heart item and other treasure items based on the Khalim’s Flail quest progress and the number of players in the game. QuestKhalimHeartChestOperate // QuestKhalimEyeChestOperate Create the Khalim’s Eye item and other treasure items based on the Khalim’s Flail quest progress and the number of players in the game. QuestKhalimEyeChestOperate // QuestKhalimBrainChestOperate Create the Khalim’s Brain item and other treasure items based on the Khalim’s Flail quest progress and the number of players in the game. QuestKhalimBrainChestOperate // ReturnNull Placeholder to return null. ReturnNull2 // TownGate Handles how the gate object opens and closes. TownGate // AncientStatue1Operate Handles the modes of one of the Ancient’s statues based on the player’s progress of the Rite of Passage quest. AncientStatue1Operate // AncientStatue2Operate Same as function 62. Handles the modes of one of the Ancient’s statues based on the player’s progress of the Rite of Passage quest. AncientStatue2Operate // AncientStatue3Operate Same as function 62. Handles the modes of one of the Ancient’s statues based on the player’s progress of the Rite of Passage quest. AncientStatue3Operate // QuestAncientAltarOperate Handle displaying quest text and disabling the player’s town portals, // based on the player’s progress of the Rite of Passage quest. QuestAncientAltarOperate // QuestAncientGatewayOperate Handle opening the door object based on the player’s progress of the Rite of Passage quest. QuestAncientGatewayOperate // QuestFrozenAnyaOperate Handles the object displaying quest text or validating that the player has the Malah’s Potion item // and updating the Prison of Ice quest. QuestFrozenAnyaOperate // EvilUrn Handle triggering a trap from the object. EvilUrn // QuestAncientInvisibleOperate Handle displaying the A5Q6InitAncients string conversation text based on the player’s progress of the Rite of Passage quest. QuestAncientInvisibleOperate // QuestLastExitOperate Handle transitioning the player to the from the Throne of Destruction level to the Worldstone Chamber level. QuestLastExitOperate // QuestSummitDoorOperate Handle opening the door object based on the player’s progress of the Rite of Passage quest. QuestSummitDoorOperate // QuestPlayerLastPortalOperate Handle transitioning the player to completing the game after completing the Destruction’s End quest. QuestPlayerLastPortalOperate // QuestTyraelPortalToExpansionOperate Handle transitioning the player to Act 5 after completing the Act 4 Terror’s End quest. QuestTyraelPortalToExpansionOperate )
type ObjectPopulateFunction ¶
type ObjectPopulateFunction int
ObjectPopulateFunction represents the various functions the game will use to spawn objects.
const ( // DoNotSpawn Do not spawn the object. DoNotSpawn ObjectPopulateFunction = iota // AddClumpedGroup Handles creating multiple of these objects randomly in a room, // based on the object’s size and Class. This function only handles specific object classes // such as caskets, urns, and baskets. AddClumpedGroup // AddSingleShrine Handles the creation of a shrine object. AddSingleShrine // AddSimpleObjects Handles randomly spawning the object in a room, based on the object’s size. AddSimpleObjects // AddBarrels Handle creating multiple barrel or exploding barrel Class objects in a room. AddBarrels // AddCrates Handle creating multiple crate or urn Class objects in a room. AddCrates // AddCorpse Use function 3 to handle spawning the object. // Also call a random chance to spawn the “Flies” object class on top of the objects that spawn. AddCorpse // AddStakedCorpses Handles how to specifically spawn the “RogueCorpse1” and “RogueCorpse2” objects, // based on their sizes and the locations in the room. // Also call a random chance to spawn the “Flies” object class on top of the objects that spawn. AddStakedCorpses // AddWell Handles the creation of one of these objects randomly in a room based on the object’s size. // A level can have a maximum of 4 these objects that spawn. AddWell // AddOne Handles the creation of one of these objects randomly in a room based on the object’s size. AddOne )
type ObjectPreset ¶
type ObjectPreset struct { Index int `csv:"Index"` // Assigns a unique numeric ID to the Object Preset so that it can be properly referenced. Act int `csv:"Act"` // Defines the Act number used for each Object Preset. Uses values between 1 to 5. ObjectClass string `csv:"ObjectClass"` // Uses the "Class" field from objects.txt, which assigns an Object to this Object Preset. }
ObjectPreset represents an object preset, which controls which objects are preloaded in a preset, based on the Act number.
type ObjectTargetPriority ¶
type ObjectTargetPriority int
const ( NoChange ObjectTargetPriority = iota EqualCorpseWhenOpened AlwaysEqualCorpse )
type ObjectType ¶
type ObjectType struct { // Name is the name of the object type. Name string `csv:"Name"` // Token is the token associated with the object type. Token string `csv:"Token"` // Beta is a flag indicating whether the object type is related to the beta version. Beta int `csv:"Beta"` }
ObjectType represents the data from the "object types.txt" file.
type OpID ¶
type OpID int
OpID represents the operation ID for additional input requirement
const ( OpNone OpID = iota OpDayOfMonthLessThan OpDayOfMonthGreaterThan OpDayOfWeekNotEqual OpPlayerStatGreaterThan OpPlayerStatLessThan OpPlayerStatNotEqual OpPlayerStatEqual OpPlayerBaseStatGreaterThan OpPlayerBaseStatLessThan OpPlayerBaseStatNotEqual OpPlayerBaseStatEqual OpPlayerNonBaseStatGreaterThan OpPlayerNonBaseStatLessThan OpPlayerNonBaseStatNotEqual OpPlayerNonBaseStatEqual OpInputItemStatGreaterThan OpInputItemStatLessThan OpInputItemStatNotEqual OpInputItemStatEqual OpInputItemBaseStatGreaterThan OpInputItemBaseStatLessThan OpInputItemBaseStatNotEqual OpInputItemBaseStatEqual OpInputItemNonBaseStatGreaterThan OpInputItemNonBaseStatLessThan OpInputItemNonBaseStatNotEqual OpInputItemNonBaseStatEqual OpItemModClassNotEqual OpQuestDiffCheck )
type OutputCode ¶
type OutputCode string
OutputCode represents the output code for creating output items
const ( OutputCowPortal OutputCode = "Cow Portal" OutputPandemoniumPortal OutputCode = "Pandemonium Portal" OutputPandemoniumFinalePortal OutputCode = "Pandemonium Finale Portal" OutputRedPortal OutputCode = "Red Portal" OutputUseType OutputCode = "usetype" OutputUseItem OutputCode = "useitem" OutputQuantity OutputCode = "qty=#" OutputPrefix OutputCode = "pre=#" OutputSuffix OutputCode = "suf=#" OutputLow OutputCode = "low" OutputNormal OutputCode = "nor" OutputHigh OutputCode = "hiq" OutputMagic OutputCode = "mag" OutputSet OutputCode = "set" OutputRare OutputCode = "rar" OutputUnique OutputCode = "uni" OutputCrafted OutputCode = "crf" OutputTempered OutputCode = "tmp" OutputEthereal OutputCode = "eth" OutputSockets OutputCode = "sock" OutputModifiers OutputCode = "mod" OutputDestroyGemsRunesJewels OutputCode = "uns" OutputRemoveGemsRunesJewels OutputCode = "rem" OutputRegenerateUnique OutputCode = "reg" OutputExceptional OutputCode = "exc" OutputElite OutputCode = "eli" OutputRepair OutputCode = "rep" OutputRecharge OutputCode = "rch" OutputLevel OutputCode = "lvl=#" )
type Overlay ¶
type Overlay struct { Overlay string `csv:"overlay"` // Defines the name of the overlay, used in other data files. Filename string `csv:"Filename"` // Defines which DCC file to use for the Overlay. Version int `csv:"version"` // Defines which game version to use this Overlay (0 = Classic mode | 100 = Expansion mode). Character string `csv:"Character"` // Used for name categorizing Overlays for unit translation mapping. PreDraw bool `csv:"PreDraw"` // Boolean field. If equals 1, then display the Overlay in front of sprites. If equals 0, then display the Overlay behind sprites. OneOfN int `csv:"1ofN"` // Controls how to randomly display Overlays. This value will randomly add to the current index of the Overlay to possibly use another Overlay that is indexed after this current Overlay. XOffset int `csv:"Xoffset"` // Sets the horizontal offset of the overlay on the unit. Positive values move it toward the left and negative values move it towards the right. YOffset int `csv:"Yoffset"` // Sets the vertical offset of the overlay on the unit. Positive values move it down and negative values move it up. Height1 int `csv:"Height1"` // Additional value added to "Yoffset" depending on "OverlayHeight" field value from monstats2.txt. Height2 int `csv:"Height2"` // Additional value added to "Yoffset" for player unit types. AnimRate int `csv:"AnimRate"` // Controls the animation frame rate of the Overlay. The value is the number of frames that will update per second. LoopWaitTime int `csv:"LoopWaitTime"` // Controls the number of periodic frames to wait until redrawing the Overlay. This only works with Overlays that are a loop type. Trans int `csv:"Trans"` // Controls the alpha mode for how the Overlay is displayed, which can affect transparency and blending. InitRadius int `csv:"InitRadius"` // Controls the starting Light Radius value for the Overlay (Max = 18). Radius int `csv:"Radius"` // Controls the maximum Light Radius value for the Overlay. This can only be greater than or equal to "InitRadius". Red int `csv:"Red"` // Controls the Red color gradient of the Light Radius. Green int `csv:"Green"` // Controls the Green color gradient of the Light Radius. Blue int `csv:"Blue"` // Controls the Blue color gradient of the Light Radius. NumDirections int `csv:"NumDirections"` // The number of directions in the cell file. LocalBlood int `csv:"LocalBlood"` // Controls how to display green blood or VFX on a unit. }
Overlay represents overlay graphics related to states, auras, cast animations, curses, and buffs.
type PetType ¶
type PetType struct { PetType string `csv:"pet type"` // Defines the name of the pet type, used in the "pettype" column in skills.txt. Group int `csv:"group"` // Used as an ID field, where if pet types share the same group value, then only 1 pet of that group is allowed to be alive at any time. If equals 0 (or null), then ignore this. BaseMax int `csv:"basemax"` // This sets a baseline maximum number of pets allowed to be alive when skill levels are reset or changed. Warp bool `csv:"warp"` // Boolean field. If equals 1, then the Pet will teleport to the player when the player teleports or warps to another area. If equals 0, then the pet will die instead. Range bool `csv:"range"` // Boolean field. If equals 1, then the Pet will die if the player teleports or warps to another area and is located more than 40 grid tiles in distances from the Pet. If equals 0, then ignore this. PartySend bool `csv:"partysend"` // Boolean field. If equals 1, then tell the Pet to do the Party Location Update command (find the location of its Player) when its health changes. If equals 0, then ignore this. Unsummon bool `csv:"unsummon"` // Boolean field. If equals 1, then the Pet can be unsummoned by the Unsummon skill function. If equals 0, then the Pet cannot be unsummoned. Automap bool `csv:"automap"` // Boolean field. If equals 1, then display the Pet on the Automap. If equals 0, then hide the pet on the Automap. Name string `csv:"name"` // String Key. Used to define the Pet's name on its party frame. DrawHP bool `csv:"drawhp"` // Boolean field. If equals 1, then display the Pet's Life bar under the party frame. If equals 0, then hide the Pet's Life bar under the party icon. IconType int `csv:"icontype"` // Controls the functionality for how to display the Pet Icon and the number of Pets counter. (0: Do not display, 1: Display icon, 2: Display icon and counter) BaseIcon string `csv:"baseicon"` // Define which DC6 file to use for the default Pet's icon in its party frame. MClass [4]int `csv:"mclass1,mclass2,mclass3,mclass4"` // Defines the alternative pets to use for the "pet type" by using their specific unit's "hcIdx" from Monstats.txt. MIcon [4]string `csv:"micon1,micon2,micon3,micon4"` // Defines which DC6 files to use for the related "mclass" Pets' icons in their party frame. }
PetType represents the various statistics for each type of pet from all the classes summon Skills.
type QuestClass ¶
type QuestClass int
QuestClass represents the quest class tied to the item.
const ( QuestClassNotAQuestItem QuestClass = iota QuestClassAct1Prologue QuestClassDenOfEvil QuestClassSistersBurialGrounds QuestClassToolsOfTheTrade QuestClassTheSearchForCain )
type QuestFlag ¶
type QuestFlag int
const ( Act1PrologueSeen QuestFlag = iota DenOfEvilComplete SistersBurialGroundsComplete ToolsOfTheTradeComplete TheSearchForCainComplete TheForgottenTowerComplete SistersToTheSlaughterComplete Act1Traversed Act2PrologueSeen RadamentsLairComplete TheHoradricStaffComplete TheTaintedSunComplete TheArcaneSanctuaryComplete TheSummonerComplete TheSevenTombsComplete Act2Traversed Act3PrologueSeen LamEsenTomeComplete KhalimsWillComplete BladeOfTheOldReligionComplete TheGoldenBirdComplete TheBlackenedTempleComplete TheGuardianComplete Act3Traversed Act4PrologueSeen TheFallenAngelComplete TerrorsEndComplete TheHellforgeComplete Act4Traversed RogueWarningComplete GuardInTownWarningComplete GuardInDesertWarningComplete DarkWandererSeen AngelWarningComplete Act5PrologueSeen SiegeOnHarrogathComplete RescueOnMountArreatComplete PrisonOfIceComplete BetrayalOfHarrogathComplete RiteOfPassageComplete EveOfDestructionComplete RespecFromAkaraComplete )
type RarePrefix ¶
type RarePrefix struct { Name string `csv:"name"` // Uses a string key to define the Rare Prefix name Version int `csv:"version"` // Defines which game version to use this Set bonus (0 = Classic mode | 100 = Expansion mode) IncludeType1 string `csv:"itype1"` // Controls what item types are allowed for this Rare Prefix to spawn on (Uses the ID field from ItemTypes.txt) IncludeType2 string `csv:"itype2"` IncludeType3 string `csv:"itype3"` IncludeType4 string `csv:"itype4"` IncludeType5 string `csv:"itype5"` IncludeType6 string `csv:"itype6"` IncludeType7 string `csv:"itype7"` ExcludeType1 string `csv:"etype1"` // Controls what item types are excluded for this Rare Prefix to spawn on (Uses the ID field from ItemTypes.txt) ExcludeType2 string `csv:"etype2"` ExcludeType3 string `csv:"etype3"` ExcludeType4 string `csv:"etype4"` }
RarePrefix represents the data for rare item name prefixes
type RareSuffix ¶
type RareSuffix struct { Name string `csv:"name"` // Uses a string key to define the Rare Suffix name Version int `csv:"version"` // Defines which game version to use this Set bonus (0 = Classic mode | 100 = Expansion mode) IncludeType1 string `csv:"itype1"` // Controls what item types are allowed for this Rare Suffix to spawn on (Uses the ID field from ItemTypes.txt) IncludeType2 string `csv:"itype2"` IncludeType3 string `csv:"itype3"` IncludeType4 string `csv:"itype4"` IncludeType5 string `csv:"itype5"` IncludeType6 string `csv:"itype6"` IncludeType7 string `csv:"itype7"` ExcludeType1 string `csv:"etype1"` // Controls what item types are excluded for this Rare Suffix to spawn on (Uses the ID field from ItemTypes.txt) ExcludeType2 string `csv:"etype2"` ExcludeType3 string `csv:"etype3"` ExcludeType4 string `csv:"etype4"` }
RareSuffix represents the data for rare item name suffixes
type RuneWordData ¶
type RuneWordData struct { Name string `csv:"Name"` // Controls the string key used to display the name of the item when the Rune Word is complete Complete int `csv:"complete"` // Boolean field. If equals 1, then the Rune Word can be crafted in-game. If equals 0, then the Rune Word cannot be crafted in-game. FirstLadderSeason int `csv:"firstLadderSeason"` // Integer field. The first ladder season the Rune Word can be made on (inclusive). If blank or 0 then it is available in non-ladder. LastLadderSeason int `csv:"lastLadderSeason"` // Integer field. The last ladder season the Rune Word is ladder-only (inclusive). Must be used in conjunction with firstLadderSeason. // Controls what item types are allowed for this Rune Word (Uses the ID field from ItemTypes.txt) ItemType1 string `csv:"itype1"` ItemType2 string `csv:"itype2"` ItemType3 string `csv:"itype3"` ItemType4 string `csv:"itype4"` ItemType5 string `csv:"itype5"` ItemType6 string `csv:"itype6"` // Controls what item types are excluded for this Rune Word (Uses the ID field from ItemTypes.txt) ExcludedType1 string `csv:"etype1"` ExcludedType2 string `csv:"etype2"` ExcludedType3 string `csv:"etype3"` // Controls what runes are required to make the Rune Word. The order of each of these fields matters. (Uses the ID field from misc.txt) Rune1 string `csv:"Rune1"` Rune2 string `csv:"Rune2"` Rune3 string `csv:"Rune3"` Rune4 string `csv:"Rune4"` Rune5 string `csv:"Rune5"` Rune6 string `csv:"Rune6"` // Controls the item properties that the Rune Word provides (Uses the "code" field from Properties.txt) T1Code1 string `csv:"T1Code1"` T1Code2 string `csv:"T1Code2"` T1Code3 string `csv:"T1Code3"` T1Code4 string `csv:"T1Code4"` T1Code5 string `csv:"T1Code5"` T1Code6 string `csv:"T1Code6"` T1Code7 string `csv:"T1Code7"` // The stat's "parameter" value associated with the related property (T1Code). Usage depends on the property function (See the "func" field on Properties.txt) T1Param1 string `csv:"T1Param1"` T1Param2 string `csv:"T1Param2"` T1Param3 string `csv:"T1Param3"` T1Param4 string `csv:"T1Param4"` T1Param5 string `csv:"T1Param5"` T1Param6 string `csv:"T1Param6"` T1Param7 string `csv:"T1Param7"` // The stat's "min" value to assign to the related property (T1Code). Usage depends on the property function (See the "func" field on Properties.txt) T1Min1 int `csv:"T1Min1"` T1Min2 int `csv:"T1Min2"` T1Min3 int `csv:"T1Min3"` T1Min4 int `csv:"T1Min4"` T1Min5 int `csv:"T1Min5"` T1Min6 int `csv:"T1Min6"` T1Min7 int `csv:"T1Min7"` // The stat's "max" value to assign to the related property (T1Code). Usage depends on the property function (See the "func" field on Properties.txt) T1Max1 int `csv:"T1Max1"` T1Max2 int `csv:"T1Max2"` T1Max3 int `csv:"T1Max3"` T1Max4 int `csv:"T1Max4"` T1Max5 int `csv:"T1Max5"` T1Max6 int `csv:"T1Max6"` T1Max7 int `csv:"T1Max7"` }
RuneWordData represents the data fields for Rune Words and their modifiers.
type SetBonusData ¶
type SetBonusData struct { Index string `csv:"index"` // Defines the specific Set ID Name string `csv:"name"` // Uses a string for displaying the Set name in the inventory tooltip Version int `csv:"version"` // Defines which game version to use this Set bonus (0 = Classic mode | 100 = Expansion mode) // Controls the each of the different pairs of Partial Set item properties. These are applied when the player has equipped the related # of Set items. PCode2a string `csv:"PCode2a"` PCode3a string `csv:"PCode3a"` PCode4a string `csv:"PCode4a"` PCode5a string `csv:"PCode5a"` // The stat's "parameter" value associated with the relative property (PCode#a). Usage depends on the property function (See the "func" field on Properties.txt) PParam2a string `csv:"PParam2a"` PParam3a string `csv:"PParam3a"` PParam4a string `csv:"PParam4a"` PParam5a string `csv:"PParam5a"` // The stat's "min" value associated with the listed relative (PCode#a). Usage depends on the property function (See the "func" field on Properties.txt) PMin2a int `csv:"PMin2a"` PMin3a int `csv:"PMin3a"` PMin4a int `csv:"PMin4a"` PMin5a int `csv:"PMin5a"` // The stat's "max" value to assign to the listed relative (PCode#a). Usage depends on the property function (See the "func" field on Properties.txt) PMax2a int `csv:"PMax2a"` PMax3a int `csv:"PMax3a"` PMax4a int `csv:"PMax4a"` PMax5a int `csv:"PMax5a"` // Controls the each of the different pairs of Partial Set item properties. These are applied when the player has equipped the related # of Set items. PCode2b string `csv:"PCode2b"` PCode3b string `csv:"PCode3b"` PCode4b string `csv:"PCode4b"` PCode5b string `csv:"PCode5b"` // The stat's "parameter" value associated with the relative property (PCode#b). Usage depends on the property function (See the "func" field on Properties.txt) PParam2b string `csv:"PParam2b"` PParam3b string `csv:"PParam3b"` PParam4b string `csv:"PParam4b"` PParam5b string `csv:"PParam5b"` // The stat's "min" value associated with the listed relative (PCode#b). Usage depends on the property function (See the "func" field on Properties.txt) PMin2b int `csv:"PMin2b"` PMin3b int `csv:"PMin3b"` PMin4b int `csv:"PMin4b"` PMin5b int `csv:"PMin5b"` // The stat's "max" value to assign to the listed relative (PCode#b). Usage depends on the property function (See the "func" field on Properties.txt) PMax2b int `csv:"PMax2b"` PMax3b int `csv:"PMax3b"` PMax4b int `csv:"PMax4b"` PMax5b int `csv:"PMax5b"` // Controls the each of the different Full Set item properties. These are applied when the player has all Set item pieces equipped. FCode1 string `csv:"FCode1"` FCode2 string `csv:"FCode2"` FCode3 string `csv:"FCode3"` FCode4 string `csv:"FCode4"` FCode5 string `csv:"FCode5"` FCode6 string `csv:"FCode6"` FCode7 string `csv:"FCode7"` FCode8 string `csv:"FCode8"` // The stat's "parameter" value associated with the relative property (FCode#b). Usage depends on the property function (See the "func" field on Properties.txt) FParam1 string `csv:"FParam1"` FParam2 string `csv:"FParam2"` FParam3 string `csv:"FParam3"` FParam4 string `csv:"FParam4"` FParam5 string `csv:"FParam5"` FParam6 string `csv:"FParam6"` FParam7 string `csv:"FParam7"` FParam8 string `csv:"FParam8"` // The stat's "min" value associated with the listed relative (FCode#b). Usage depends on the property function (See the "func" field on Properties.txt) FMin1 int `csv:"FMin1"` FMin2 int `csv:"FMin2"` FMin3 int `csv:"FMin3"` FMin4 int `csv:"FMin4"` FMin5 int `csv:"FMin5"` FMin6 int `csv:"FMin6"` FMin7 int `csv:"FMin7"` FMin8 int `csv:"FMin8"` // The stat's "max" value to assign to the listed relative (FCode#b). Usage depends on the property function (See the "func" field on Properties.txt) FMax1 int `csv:"FMax1"` FMax2 int `csv:"FMax2"` FMax3 int `csv:"FMax3"` FMax4 int `csv:"FMax4"` FMax5 int `csv:"FMax5"` FMax6 int `csv:"FMax6"` FMax7 int `csv:"FMax7"` FMax8 int `csv:"FMax8"` }
SetBonusData represents the data fields for Set bonus statistics when the player has equipped enough Set Items.
type SetItemData ¶
type SetItemData struct { Index string `csv:"index"` // Links to a string key for displaying the Set item name Set string `csv:"set"` // Defines the Set to link to this Set Item (must match the "index" field from Sets.txt) Item string `csv:"item"` // Defines the baseline item code to use for this Set item (must match the "code" field value from weapons.txt, armor.txt, or misc.txt) Rarity string `csv:"rarity"` // Modifies the chances that this Unique item will spawn compared to the other Set items. This value acts as a numerator and a denominator. Each "rarity" value gets summed together to give a total denominator, used for the random roll for the item. // The item level for the item, which controls what object or monster needs to be in order to drop this item Lvl int `csv:"lvl"` LvlReq int `csv:"lvl req"` // Controls the color change of the item when equipped on a character or dropped on the ground. If empty, then the item will have the default item color. (Uses Color Codes from the reference file colors.txt) ChrTransform string `csv:"chrtransform"` InvTransform string `csv:"invtransform"` // An override for the "invfile" field from the weapon.txt, armor.txt, or misc.txt files. By default, the Set Item will use what was defined by the baseline item from the "item" field. InvFile string `csv:"invfile"` // An override for the "flippyfile" field from the weapon.txt, armor.txt, or misc.txt files. By default, the Set Item will use what was defined by the baseline item from the "item" field. FlippyFile string `csv:"flippyfile"` // An override for the "dropsound" field from the weapon.txt, armor.txt, or misc.txt files. By default, the Set Item will use what was defined by the baseline item from the "item" field. DropSound string `csv:"dropsound"` // An override for the "dropsfxframe" field from the weapon.txt, armor.txt, or misc.txt files. By default, the Set Item will use what was defined by the baseline item from the "item" field. DropSfxFrame string `csv:"dropsfxframe"` // An override for the "usesound" field from the weapon.txt, armor.txt, or misc.txt files. By default, the Set Item will use what was defined by the baseline item from the "item" field. UseSound string `csv:"usesound"` CostMult float64 `csv:"cost mult"` // Multiplicative modifier for the Set item's buy, sell, and repair costs CostAdd int `csv:"cost add"` // Flat integer modification to the Set item's buy, sell, and repair costs AddFunc int `csv:"add func"` // Controls how the additional Set item properties (aprop#a & aprop#b) will function on the Set item based on other related set items are equipped // Controls the item properties that are add baseline to the Set Item (Uses the "code" field from Properties.txt) Prop1 string `csv:"prop1"` Prop2 string `csv:"prop2"` Prop3 string `csv:"prop3"` Prop4 string `csv:"prop4"` Prop5 string `csv:"prop5"` Prop6 string `csv:"prop6"` Prop7 string `csv:"prop7"` Prop8 string `csv:"prop8"` Prop9 string `csv:"prop9"` // The stat's "parameter" value associated with the related property (prop#). Usage depends on the property function (See the "func" field on Properties.txt) Par1 string `csv:"par1"` Par2 string `csv:"par2"` Par3 string `csv:"par3"` Par4 string `csv:"par4"` Par5 string `csv:"par5"` Par6 string `csv:"par6"` Par7 string `csv:"par7"` Par8 string `csv:"par8"` Par9 string `csv:"par9"` // The stat's "min" value to assign to the related property (prop#). Usage depends on the property function (See the "func" field on Properties.txt) Min1 int `csv:"min1"` Min2 int `csv:"min2"` Min3 int `csv:"min3"` Min4 int `csv:"min4"` Min5 int `csv:"min5"` Min6 int `csv:"min6"` Min7 int `csv:"min7"` Min8 int `csv:"min8"` Min9 int `csv:"min9"` // The stat's "max" value to assign to the related property (prop#). Usage depends on the property function (See the "func" field on Properties.txt) Max1 int `csv:"max1"` Max2 int `csv:"max2"` Max3 int `csv:"max3"` Max4 int `csv:"max4"` Max5 int `csv:"max5"` Max6 int `csv:"max6"` Max7 int `csv:"max7"` Max8 int `csv:"max8"` Max9 int `csv:"max9"` // Controls the item properties that are added to the Set Item when other pieces of the Set are also equipped (Uses the "code" field from Properties.txt) AProp1a string `csv:"aprop1a"` AProp2a string `csv:"aprop2a"` AProp3a string `csv:"aprop3a"` AProp4a string `csv:"aprop4a"` AProp5a string `csv:"aprop5a"` // The stat's "parameter" value associated with the related property (aprop#a). Usage depends on the property function (See the "func" field on Properties.txt) APar1a string `csv:"apar1a"` APar2a string `csv:"apar2a"` APar3a string `csv:"apar3a"` APar4a string `csv:"apar4a"` APar5a string `csv:"apar5a"` // The stat's "min" value to assign to the related property (aprop#a). Usage depends on the property function (See the "func" field on Properties.txt) AMin1a int `csv:"amin1a"` AMin2a int `csv:"amin2a"` AMin3a int `csv:"amin3a"` AMin4a int `csv:"amin4a"` AMin5a int `csv:"amin5a"` // The stat's "max" value to assign to the related property (aprop#a). Usage depends on the property function (See the "func" field on Properties.txt) AMax1a int `csv:"amax1a"` AMax2a int `csv:"amax2a"` AMax3a int `csv:"amax3a"` AMax4a int `csv:"amax4a"` AMax5a int `csv:"amax5a"` // Controls the item properties that are added to the Set Item when other pieces of the Set are also equipped. Each of these numbered fields are paired with the related "aprop#a" field as an additional item property. (Uses the "code" field from Properties.txt) AProp1b string `csv:"aprop1b"` AProp2b string `csv:"aprop2b"` AProp3b string `csv:"aprop3b"` AProp4b string `csv:"aprop4b"` AProp5b string `csv:"aprop5b"` // The stat's "parameter" value associated with the related property (aprop#b). Usage depends on the property function (See the "func" field on Properties.txt) APar1b string `csv:"apar1b"` APar2b string `csv:"apar2b"` APar3b string `csv:"apar3b"` APar4b string `csv:"apar4b"` APar5b string `csv:"apar5b"` // The stat's "min" value to assign to the related property (aprop#b). Usage depends on the property function (See the "func" field on Properties.txt) AMin1b int `csv:"amin1b"` AMin2b int `csv:"amin2b"` AMin3b int `csv:"amin3b"` AMin4b int `csv:"amin4b"` AMin5b int `csv:"amin5b"` // The stat's "max" value to assign to the related property (aprop#b). Usage depends on the property function (See the "func" field on Properties.txt) AMax1b int `csv:"amax1b"` AMax2b int `csv:"amax2b"` AMax3b int `csv:"amax3b"` AMax4b int `csv:"amax4b"` AMax5b int `csv:"amax5b"` // The amount of weight added to the diablo clone progress when this item is sold. When offline, selling this item will instead immediately spawn diablo clone. DiabloCloneWeight int `csv:"diablocloneweight"` }
SetItemData represents the data fields for each Set item in a Set.
type Shrine ¶
type Shrine struct { ShrineType string `csv:"Shrine Type"` // The type of shrine ShrineName string `csv:"Shrine name"` // The name of the shrine Effect string `csv:"Effect"` // Description of the shrine's effect Code int `csv:"Code"` // Code function used to define the shrine's function Arg0 int `csv:"Arg0"` // Parameter 1 for the shrine's function Arg1 int `csv:"Arg1"` // Parameter 2 for the shrine's function DurationFrames int `csv:"Duration in frames"` // Duration of the shrine's effects in frames (1 second = 25 frames) ResetTimeMin int `csv:"reset time in minutes"` // Time in minutes before the shrine is available to use again Rarity int `csv:"rarity"` // Rarity of the shrine ViewName string `csv:"view name"` // View name of the shrine NiftyPhrase string `csv:"niftyphrase"` // Activation phrase displayed when the shrine is used EffectClass int `csv:"effectclass"` // The shrine's archetype involved in calculating region stats LevelMin int `csv:"LevelMin"` // Minimum area level where the shrine can spawn }
Shrine represents the data structure for the shrines.txt file.
type SkillData ¶
type SkillData struct { ID string `csv:"Id"` // Unique identifier for the skill. CharClass string `csv:"charclass"` // Character class associated with the skill. SkillName string `csv:"skill"` // Description of the skill. SkillDesc string `csv:"skilldesc"` // Description of the skill. SrvStFunc string `csv:"srvstfunc"` // Server Start function used by the skill. SrvDoFunc string `csv:"srvdofunc"` // Server Do function used by the skill. PrgStack string `csv:"prgstack"` // Progressive stack. SrvPrgFunc1 string `csv:"srvprgfunc1"` // Server Progressive function 1. SrvPrgFunc2 string `csv:"srvprgfunc2"` // Server Progressive function 2. SrvPrgFunc3 string `csv:"srvprgfunc3"` // Server Progressive function 3. PrgCalc1 string `csv:"prgcalc1"` // Progressive calculation 1. PrgCalc2 string `csv:"prgcalc2"` // Progressive calculation 2. PrgCalc3 string `csv:"prgcalc3"` // Progressive calculation 3. PrgDam string `csv:"prgdam"` // Progressive damage. SrvMissile string `csv:"srvmissile"` // Server missile. DecQuant string `csv:"decquant"` // Decrement quantity. Lob string `csv:"lob"` // Lob skill. SrvMissileA string `csv:"srvmissilea"` // Server missile A. SrvMissileB string `csv:"srvmissileb"` // Server missile B. SrvMissileC string `csv:"srvmissilec"` // Server missile C. SrvOverlay string `csv:"srvoverlay"` // Server overlay. AuraFilter string `csv:"aurafilter"` // Aura filter. AuraState string `csv:"aurastate"` // Aura state. AuraTargetState string `csv:"auratargetstate"` // Aura target state. AuraLenCalc string `csv:"auralencalc"` // Aura length calculation. AuraRangeCalc string `csv:"aurarangecalc"` // Aura range calculation. AuraStat1 string `csv:"aurastat1"` // Aura stat 1. AuraStatCalc1 string `csv:"aurastatcalc1"` // Aura stat calculation 1. AuraStat2 string `csv:"aurastat2"` // Aura stat 2. AuraStatCalc2 string `csv:"aurastatcalc2"` // Aura stat calculation 2. AuraStat3 string `csv:"aurastat3"` // Aura stat 3. AuraStatCalc3 string `csv:"aurastatcalc3"` // Aura stat calculation 3. AuraStat4 string `csv:"aurastat4"` // Aura stat 4. AuraStatCalc4 string `csv:"aurastatcalc4"` // Aura stat calculation 4. AuraStat5 string `csv:"aurastat5"` // Aura stat 5. AuraStatCalc5 string `csv:"aurastatcalc5"` // Aura stat calculation 5. AuraStat6 string `csv:"aurastat6"` // Aura stat 6. AuraStatCalc6 string `csv:"aurastatcalc6"` // Aura stat calculation 6. AuraEvent1 string `csv:"auraevent1"` // Aura event 1. AuraEventFunc1 string `csv:"auraeventfunc1"` // Aura event function 1. AuraEvent2 string `csv:"auraevent2"` // Aura event 2. AuraEventFunc2 string `csv:"auraeventfunc2"` // Aura event function 2. AuraEvent3 string `csv:"auraevent3"` // Aura event 3. AuraEventFunc3 string `csv:"auraeventfunc3"` // Aura event function 3. AuraTgtEvent string `csv:"auratgtevent"` // Aura target event. AuraTgtEventFunc string `csv:"auratgteventfunc"` // Aura target event function. PassiveState string `csv:"passivestate"` // Passive state. PassiveIType string `csv:"passiveitype"` // Passive item type. PassiveStat1 string `csv:"passivestat1"` // Passive stat 1. PassiveCalc1 string `csv:"passivecalc1"` // Passive calculation 1. PassiveStat2 string `csv:"passivestat2"` // Passive stat 2. PassiveCalc2 string `csv:"passivecalc2"` // Passive calculation 2. PassiveStat3 string `csv:"passivestat3"` // Passive stat 3. PassiveCalc3 string `csv:"passivecalc3"` // Passive calculation 3. PassiveStat4 string `csv:"passivestat4"` // Passive stat 4. PassiveCalc4 string `csv:"passivecalc4"` // Passive calculation 4. PassiveStat5 string `csv:"passivestat5"` // Passive stat 5. PassiveCalc5 string `csv:"passivecalc5"` // Passive calculation 5. PassiveEvent string `csv:"passiveevent"` // Passive event. PassiveEventFunc string `csv:"passiveeventfunc"` // Passive event function. Summon string `csv:"summon"` // Summon. PetType string `csv:"pettype"` // Pet type. PetMax string `csv:"petmax"` // Maximum number of pets. SumMode string `csv:"summode"` // Summoning mode. SumSkill1 string `csv:"sumskill1"` // Summon skill 1. SumSk1Calc string `csv:"sumsk1calc"` // Summon skill 1 calculation. SumSkill2 string `csv:"sumskill2"` // Summon skill 2. SumSk2Calc string `csv:"sumsk2calc"` // Summon skill 2 calculation. SumSkill3 string `csv:"sumskill3"` // Summon skill 3. SumSk3Calc string `csv:"sumsk3calc"` // Summon skill 3 calculation. SumSkill4 string `csv:"sumskill4"` // Summon skill 4. SumSk4Calc string `csv:"sumsk4calc"` // Summon skill 4 calculation. SumSkill5 string `csv:"sumskill5"` // Summon skill 5. SumSk5Calc string `csv:"sumsk5calc"` // Summon skill 5 calculation. SumUMod string `csv:"sumumod"` // Summon unique modifier. SumOverlay string `csv:"sumoverlay"` // Summon overlay. StSuccessOnly string `csv:"stsuccessonly"` // Single target success only. StSound string `csv:"stsound"` // Single target sound. StSoundClass string `csv:"stsoundclass"` // Single target sound class. StSoundDelay string `csv:"stsounddelay"` // Single target sound delay. WeaponSnd string `csv:"weaponsnd"` // Weapon sound. DoSound string `csv:"dosound"` // Do sound. DoSoundA string `csv:"dosound a"` // Do sound A. DoSoundB string `csv:"dosound b"` // Do sound B. TgtOverlay string `csv:"tgtoverlay"` // Target overlay. TgtSound string `csv:"tgtsound"` // Target sound. PrgOverlay string `csv:"prgoverlay"` // Progressive overlay. PrgSound string `csv:"prgsound"` // Progressive sound. CastOverlay string `csv:"castoverlay"` // Cast overlay. CltOverlayA string `csv:"cltoverlaya"` // Client overlay A. CltOverlayB string `csv:"cltoverlayb"` // Client overlay B. CltStFunc string `csv:"cltstfunc"` // Client Start function. CltDoFunc string `csv:"cltdofunc"` // Client Do function. CltPrgFunc1 string `csv:"cltprgfunc1"` // Client Progressive function 1. CltPrgFunc2 string `csv:"cltprgfunc2"` // Client Progressive function 2. CltPrgFunc3 string `csv:"cltprgfunc3"` // Client Progressive function 3. CltMissile string `csv:"cltmissile"` // Client missile. CltMissileA string `csv:"cltmissilea"` // Client missile A. CltMissileB string `csv:"cltmissileb"` // Client missile B. CltMissileC string `csv:"cltmissilec"` // Client missile C. CltMissileD string `csv:"cltmissiled"` // Client missile D. CltCalc1 string `csv:"cltcalc1"` // Client calculation 1. CltCalc2 string `csv:"cltcalc2"` // Client calculation 2. CltCalc3 string `csv:"cltcalc3"` // Client calculation 3. Warp string `csv:"warp"` // Warp skill. Immediate string `csv:"immediate"` // Immediate skill. Enhanceable string `csv:"enhanceable"` // Enhanceable skill. AttackRank string `csv:"attackrank"` // Attack rank. NoAmmo string `csv:"noammo"` // No ammo skill. Range string `csv:"range"` // Skill range. WeapSel string `csv:"weapsel"` // Weapon selection. ITypeA1 string `csv:"itypea1"` // Item type A1. ITypeA2 string `csv:"itypea2"` // Item type A2. ITypeA3 string `csv:"itypea3"` // Item type A3. ETypeA1 string `csv:"etypea1"` // Elemental type A1. ETypeA2 string `csv:"etypea2"` // Elemental type A2. ITypeB1 string `csv:"itypeb1"` // Item type B1. ITypeB2 string `csv:"itypeb2"` // Item type B2. ITypeB3 string `csv:"itypeb3"` // Item type B3. ETypeB1 string `csv:"etypeb1"` // Elemental type B1. ETypeB2 string `csv:"etypeb2"` // Elemental type B2. Anim string `csv:"anim"` // Animation. SeqTrans string `csv:"seqtrans"` // Sequence transition. MonAnim string `csv:"monanim"` // Monster animation. SeqNum string `csv:"seqnum"` // Sequence number. SeqInput string `csv:"seqinput"` // Sequence input. Durability string `csv:"durability"` // Durability. UseAttackRate string `csv:"UseAttackRate"` // Use attack rate. LineOfSight string `csv:"LineOfSight"` // Line of sight. TargetableOnly string `csv:"TargetableOnly"` // Targetable only. SearchEnemyXY string `csv:"SearchEnemyXY"` // Search enemy XY. SearchEnemyNear string `csv:"SearchEnemyNear"` // Search enemy near. SearchOpenXY string `csv:"SearchOpenXY"` // Search open XY. SelectProc string `csv:"SelectProc"` // Select proc. TargetCorpse string `csv:"TargetCorpse"` // Target corpse. TargetPet string `csv:"TargetPet"` // Target pet. TargetAlly string `csv:"TargetAlly"` // Target ally. TargetItem string `csv:"TargetItem"` // Target item. AttackNoMana string `csv:"AttackNoMana"` // Attack no mana. TgtPlaceCheck string `csv:"TgtPlaceCheck"` // Target place check. ItemEffect string `csv:"ItemEffect"` // Item effect. ItemCltEffect string `csv:"ItemCltEffect"` // Item client effect. ItemTgtDo string `csv:"ItemTgtDo"` // Item target do. ItemTarget string `csv:"ItemTarget"` // Item target. ItemCheckStart string `csv:"ItemCheckStart"` // Item check start. ItemCltCheckStart string `csv:"ItemCltCheckStart"` // Item client check start. ItemCastSound string `csv:"ItemCastSound"` // Item cast sound. ItemCastOverlay string `csv:"ItemCastOverlay"` // Item cast overlay. SkPoints string `csv:"skpoints"` // Skill points. ReqLevel string `csv:"reqlevel"` // Required level. MaxLevel string `csv:"maxlvl"` // Maximum level. ReqStr string `csv:"reqstr"` // Required strength. ReqDex string `csv:"reqdex"` // Required dexterity. ReqInt string `csv:"reqint"` // Required intelligence. ReqVit string `csv:"reqvit"` // Required vitality. ReqSkill1 string `csv:"reqskill1"` // Required skill 1. ReqSkill2 string `csv:"reqskill2"` // Required skill 2. ReqSkill3 string `csv:"reqskill3"` // Required skill 3. Restrict string `csv:"restrict"` // Skill restrictions. State1 string `csv:"State1"` // Skill state 1. State2 string `csv:"State2"` // Skill state 2. State3 string `csv:"State3"` // Skill state 3. Delay string `csv:"delay"` // Skill delay. LeftSkill string `csv:"leftskill"` // Left skill. Repeat string `csv:"repeat"` // Repeat skill. CheckFunc string `csv:"checkfunc"` // Check function. NoCostInState string `csv:"nocostinstate"` // No cost in state. UseManaOnDo string `csv:"usemanaondo"` // Use mana on do. StartMana string `csv:"startmana"` // Starting mana. MinMana string `csv:"minmana"` // Minimum mana. ManaShift string `csv:"manashift"` // Mana shift. Mana string `csv:"mana"` // Base mana. Interrupt string `csv:"interrupt"` // Interruptible skill. InTown string `csv:"InTown"` // Usable in town. Aura string `csv:"aura"` // Aura skill. Periodic string `csv:"periodic"` // Periodic skill. PerDelay string `csv:"perdelay"` // Periodic delay. Finishing string `csv:"finishing"` // Finishing skill. Passive string `csv:"passive"` // Passive skill. Progressive string `csv:"progressive"` // Progressive skill. General string `csv:"general"` // General skill. Scroll string `csv:"scroll"` // Scroll skill. Calc1 string `csv:"calc1"` // Calculation 1. Calc2 string `csv:"calc2"` // Calculation 2. Calc3 string `csv:"calc3"` // Calculation 3. Calc4 string `csv:"calc4"` // Calculation 4. Param1 string `csv:"Param1"` // Parameter 1. Param2 string `csv:"Param2"` // Parameter 2. Param3 string `csv:"Param3"` // Parameter 3. Param4 string `csv:"Param4"` // Parameter 4. Param5 string `csv:"Param5"` // Parameter 5. Param6 string `csv:"Param6"` // Parameter 6. Param7 string `csv:"Param7"` // Parameter 7. Param8 string `csv:"Param8"` // Parameter 8. InGame string `csv:"InGame"` // Enabled in-game. ToHit string `csv:"ToHit"` // Base bonus Attack Rating at level 1. LevToHit string `csv:"LevToHit"` // Additional bonus Attack Rating per level. ToHitCalc string `csv:"ToHitCalc"` // Attack Rating calculation. ResultFlags string `csv:"ResultFlags"` // Controls different flags for the target's reaction after being hit. HitFlags string `csv:"HitFlags"` // Controls different flags for the damage dealt when the target is hit. HitClass string `csv:"HitClass"` // Defines the skill's damage routines when hitting. Kick string `csv:"Kick"` // Separate function for calculating physical damage when kicking. HitShift string `csv:"HitShift"` // Percentage modifier for the skill's damage. SrcDam string `csv:"SrcDam"` // Percentage modifier for weapon damage transferred to the skill's damage. MinDam string `csv:"MinDam"` // Minimum baseline physical damage dealt by the skill. MinLevDam1 string `csv:"MinLevDam1"` // Additional minimum physical damage dealt at level thresholds. MinLevDam2 string `csv:"MinLevDam2"` // Additional minimum physical damage dealt at level thresholds. MinLevDam3 string `csv:"MinLevDam3"` // Additional minimum physical damage dealt at level thresholds. MinLevDam4 string `csv:"MinLevDam4"` // Additional minimum physical damage dealt at level thresholds. MinLevDam5 string `csv:"MinLevDam5"` // Additional minimum physical damage dealt at level thresholds. MaxDam string `csv:"MaxDam"` // Maximum baseline physical damage dealt by the skill. MaxLevDam1 string `csv:"MaxLevDam1"` // Additional maximum physical damage dealt at level thresholds. MaxLevDam2 string `csv:"MaxLevDam2"` // Additional maximum physical damage dealt at level thresholds. MaxLevDam3 string `csv:"MaxLevDam3"` // Additional maximum physical damage dealt at level thresholds. MaxLevDam4 string `csv:"MaxLevDam4"` // Additional maximum physical damage dealt at level thresholds. MaxLevDam5 string `csv:"MaxLevDam5"` // Additional maximum physical damage dealt at level thresholds. DmgSymPerCalc string `csv:"DmgSymPerCalc"` // Damage symmetrical percentage calculation. EType string `csv:"EType"` // Elemental type. EMin string `csv:"EMin"` // Minimum baseline elemental damage dealt by the skill. EMinLev1 string `csv:"EMinLev1"` // Additional minimum elemental damage dealt at level thresholds. EMinLev2 string `csv:"EMinLev2"` // Additional minimum elemental damage dealt at level thresholds. EMinLev3 string `csv:"EMinLev3"` // Additional minimum elemental damage dealt at level thresholds. EMinLev4 string `csv:"EMinLev4"` // Additional minimum elemental damage dealt at level thresholds. EMinLev5 string `csv:"EMinLev5"` // Additional minimum elemental damage dealt at level thresholds. EMax string `csv:"EMax"` // Maximum baseline elemental damage dealt by the skill. EMaxLev1 string `csv:"EMaxLev1"` // Additional maximum elemental damage dealt at level thresholds. EMaxLev2 string `csv:"EMaxLev2"` // Additional maximum elemental damage dealt at level thresholds. EMaxLev3 string `csv:"EMaxLev3"` // Additional maximum elemental damage dealt at level thresholds. EMaxLev4 string `csv:"EMaxLev4"` // Additional maximum elemental damage dealt at level thresholds. EMaxLev5 string `csv:"EMaxLev5"` // Additional maximum elemental damage dealt at level thresholds. EDmgSymPerCalc string `csv:"EDmgSymPerCalc"` // Elemental damage symmetrical percentage calculation. ELen string `csv:"ELen"` // Elemental length. ELevLen1 string `csv:"ELevLen1"` // Additional elemental length at level thresholds. ELevLen2 string `csv:"ELevLen2"` // Additional elemental length at level thresholds. ELevLen3 string `csv:"ELevLen3"` // Additional elemental length at level thresholds. ELenSymPerCalc string `csv:"ELenSymPerCalc"` // Elemental length symmetrical percentage calculation. AIType string `csv:"aitype"` // AI type. AIBonus string `csv:"aibonus"` // AI bonus. CostMult string `csv:"cost mult"` // Cost multiplier. CostAdd string `csv:"cost add"` // Cost addition. }
SkillData represents the data fields in the skills.txt file.
type SkillDescData ¶
type SkillDescData struct { SkillDesc string `csv:"skilldesc"` // Skill description name. SkillPage int `csv:"SkillPage"` // Skill tree page. SkillRow int `csv:"SkillRow"` // Skill tree row. SkillColumn int `csv:"SkillColumn"` // Skill tree column. ListRow int `csv:"ListRow"` // Skill listing row in the skill selection UI. IconCel string `csv:"IconCel"` // Icon asset for displaying the skill. HireableIconCel string `csv:"HireableIconCel"` // Icon asset for displaying the skill on a hireable (mercenary). StrName string `csv:"str name"` // Skill name. StrShort string `csv:"str short"` // Short skill description. StrLong string `csv:"str long"` // Long skill description on the Skill Tree. StrAlt string `csv:"str alt"` // Skill name on the Character Screen when selected. DescDam string `csv:"descdam"` // Skill's damage calculation function. DDamCalc1 string `csv:"ddam calc1"` // Integer calc value used as a parameter for DescDam function. DDamCalc2 string `csv:"ddam calc2"` // Integer calc value used as a parameter for DescDam function. P1DmElem string `csv:"p1dmelem"` // Elemental type for charge-ups on the Character Screen. P2DmElem string `csv:"p2dmelem"` // Elemental type for charge-ups on the Character Screen. P3DmElem string `csv:"p3dmelem"` // Elemental type for charge-ups on the Character Screen. P1DmMin string `csv:"p1dmmin"` // Minimum damage for charge-ups on the Character Screen. P2DmMin string `csv:"p2dmmin"` // Minimum damage for charge-ups on the Character Screen. P3DmMin string `csv:"p3dmmin"` // Minimum damage for charge-ups on the Character Screen. P1DmMax string `csv:"p1dmmax"` // Maximum damage for charge-ups on the Character Screen. P2DmMax string `csv:"p2dmmax"` // Maximum damage for charge-ups on the Character Screen. P3DmMax string `csv:"p3dmmax"` // Maximum damage for charge-ups on the Character Screen. DescAtt string `csv:"descatt"` // Overall Attack Rating of the skill in the Character Screen. DescMissile1 string `csv:"descmissile1"` // Linked missile from Missiles.txt for reference. DescMissile2 string `csv:"descmissile2"` // Linked missile from Missiles.txt for reference. DescMissile3 string `csv:"descmissile3"` // Linked missile from Missiles.txt for reference. DescLine1 string `csv:"descline1"` // Description function ID for level and next level tooltip lines. DescLine2 string `csv:"descline2"` // Description function ID for level and next level tooltip lines. DescLine3 string `csv:"descline3"` // Description function ID for level and next level tooltip lines. DescLine4 string `csv:"descline4"` // Description function ID for level and next level tooltip lines. DescLine5 string `csv:"descline5"` // Description function ID for level and next level tooltip lines. DescLine6 string `csv:"descline6"` // Description function ID for level and next level tooltip lines. DescTextA1 string `csv:"desctexta1"` // First string parameter for DescLine function. DescTextA2 string `csv:"desctexta2"` // First string parameter for DescLine function. DescTextA3 string `csv:"desctexta3"` // First string parameter for DescLine function. DescTextA4 string `csv:"desctexta4"` // First string parameter for DescLine function. DescTextA5 string `csv:"desctexta5"` // First string parameter for DescLine function. DescTextA6 string `csv:"desctexta6"` // First string parameter for DescLine function. DescTextB1 string `csv:"desctextb1"` // Second string parameter for DescLine function. DescTextB2 string `csv:"desctextb2"` // Second string parameter for DescLine function. DescTextB3 string `csv:"desctextb3"` // Second string parameter for DescLine function. DescTextB4 string `csv:"desctextb4"` // Second string parameter for DescLine function. DescTextB5 string `csv:"desctextb5"` // Second string parameter for DescLine function. DescTextB6 string `csv:"desctextb6"` // Second string parameter for DescLine function. DescCalca1 string `csv:"desccalca1"` // First numeric parameter for DescLine function. DescCalca2 string `csv:"desccalca2"` // First numeric parameter for DescLine function. DescCalca3 string `csv:"desccalca3"` // First numeric parameter for DescLine function. DescCalca4 string `csv:"desccalca4"` // First numeric parameter for DescLine function. DescCalca5 string `csv:"desccalca5"` // First numeric parameter for DescLine function. DescCalca6 string `csv:"desccalca6"` // First numeric parameter for DescLine function. DescCalcb1 string `csv:"desccalcb1"` // Second numeric parameter for DescLine function. DescCalcb2 string `csv:"desccalcb2"` // Second numeric parameter for DescLine function. DescCalcb3 string `csv:"desccalcb3"` // Second numeric parameter for DescLine function. DescCalcb4 string `csv:"desccalcb4"` // Second numeric parameter for DescLine function. DescCalcb5 string `csv:"desccalcb5"` // Second numeric parameter for DescLine function. DescCalcb6 string `csv:"desccalcb6"` // Second numeric parameter for DescLine function. Dsc2Line1 string `csv:"dsc2line1"` // Description function ID for pinned lines after skill description. Dsc2Line2 string `csv:"dsc2line2"` // Description function ID for pinned lines after skill description. Dsc2Line3 string `csv:"dsc2line3"` // Description function ID for pinned lines after skill description. Dsc2Line4 string `csv:"dsc2line4"` // Description function ID for pinned lines after skill description. Dsc2Line5 string `csv:"dsc2line5"` // Description function ID for pinned lines after skill description. Dsc2TextA1 string `csv:"dsc2texta1"` // First string parameter for Dsc2Line function. Dsc2TextA2 string `csv:"dsc2texta2"` // First string parameter for Dsc2Line function. Dsc2TextA3 string `csv:"dsc2texta3"` // First string parameter for Dsc2Line function. Dsc2TextA4 string `csv:"dsc2texta4"` // First string parameter for Dsc2Line function. Dsc2TextA5 string `csv:"dsc2texta5"` // First string parameter for Dsc2Line function. Dsc2TextB1 string `csv:"dsc2textb1"` // Second string parameter for Dsc2Line function. Dsc2TextB2 string `csv:"dsc2textb2"` // Second string parameter for Dsc2Line function. Dsc2TextB3 string `csv:"dsc2textb3"` // Second string parameter for Dsc2Line function. Dsc2TextB4 string `csv:"dsc2textb4"` // Second string parameter for Dsc2Line function. Dsc2TextB5 string `csv:"dsc2textb5"` // Second string parameter for Dsc2Line function. Dsc2Calca1 string `csv:"dsc2calca1"` // First numeric parameter for Dsc2Line function. Dsc2Calca2 string `csv:"dsc2calca2"` // First numeric parameter for Dsc2Line function. Dsc2Calca3 string `csv:"dsc2calca3"` // First numeric parameter for Dsc2Line function. Dsc2Calca4 string `csv:"dsc2calca4"` // First numeric parameter for Dsc2Line function. Dsc2Calca5 string `csv:"dsc2calca5"` // First numeric parameter for Dsc2Line function. Dsc2Calca6 string `csv:"dsc2calca6"` // First numeric parameter for Dsc2Line function. Dsc2Calcb1 string `csv:"dsc2calcb1"` // Second numeric parameter for Dsc2Line function. Dsc2Calcb2 string `csv:"dsc2calcb2"` // Second numeric parameter for Dsc2Line function. Dsc2Calcb3 string `csv:"dsc2calcb3"` // Second numeric parameter for Dsc2Line function. Dsc2Calcb4 string `csv:"dsc2calcb4"` // Second numeric parameter for Dsc2Line function. Dsc2Calcb5 string `csv:"dsc2calcb5"` // Second numeric parameter for Dsc2Line function. Dsc2Calcb6 string `csv:"dsc2calcb6"` // Second numeric parameter for Dsc2Line function. Dsc3Line1 string `csv:"dsc3line1"` // Description function ID for pinned lines at the bottom of the skill tooltip. Dsc3Line2 string `csv:"dsc3line2"` // Description function ID for pinned lines at the bottom of the skill tooltip. Dsc3Line3 string `csv:"dsc3line3"` // Description function ID for pinned lines at the bottom of the skill tooltip. Dsc3Line4 string `csv:"dsc3line4"` // Description function ID for pinned lines at the bottom of the skill tooltip. Dsc3Line5 string `csv:"dsc3line5"` // Description function ID for pinned lines at the bottom of the skill tooltip. Dsc3Line6 string `csv:"dsc3line6"` // Description function ID for pinned lines at the bottom of the skill tooltip. Dsc3Line7 string `csv:"dsc3line7"` // Description function ID for pinned lines at the bottom of the skill tooltip. Dsc3TextA1 string `csv:"dsc3texta1"` // First string parameter for Dsc3Line function. Dsc3TextA2 string `csv:"dsc3texta2"` // First string parameter for Dsc3Line function. Dsc3TextA3 string `csv:"dsc3texta3"` // First string parameter for Dsc3Line function. Dsc3TextA4 string `csv:"dsc3texta4"` // First string parameter for Dsc3Line function. Dsc3TextA5 string `csv:"dsc3texta5"` // First string parameter for Dsc3Line function. Dsc3TextA6 string `csv:"dsc3texta6"` // First string parameter for Dsc3Line function. Dsc3TextA7 string `csv:"dsc3texta7"` // First string parameter for Dsc3Line function. Dsc3TextB1 string `csv:"dsc3textb1"` // Second string parameter for Dsc3Line function. Dsc3TextB2 string `csv:"dsc3textb2"` // Second string parameter for Dsc3Line function. Dsc3TextB3 string `csv:"dsc3textb3"` // Second string parameter for Dsc3Line function. Dsc3TextB4 string `csv:"dsc3textb4"` // Second string parameter for Dsc3Line function. Dsc3TextB5 string `csv:"dsc3textb5"` // Second string parameter for Dsc3Line function. Dsc3TextB6 string `csv:"dsc3textb6"` // Second string parameter for Dsc3Line function. Dsc3TextB7 string `csv:"dsc3textb7"` // Second string parameter for Dsc3Line function. ItemProcText string `csv:"item proc text"` // Override format for skill appearing as "chance to cast" on an item. ItemProcDescLine string `csv:"item proc descline count"` // Number of descline entries formatted into ItemProcText string. }
SkillDescData represents a skill's tooltip description and how it is displayed on the Skill Tree.
type SoundEntry ¶
type SoundEntry struct { Sound string `csv:"Sound"` // Defines the unique name ID for the sound, which is how other files can reference the sound Redirect string `csv:"Redirect"` // Points the sound to the index of another sound in the data file for new graphics mode Channel string `csv:"Channel"` // Declares which channel the sound is initialized in FileName string `csv:"FileName"` // File path and name of the sound file to play IsLocal int `csv:"IsLocal"` // Boolean field for localized sound IsMusic int `csv:"IsMusic"` // Boolean field for music sound IsAmbientScene int `csv:"IsAmbientScene"` // Boolean field for ambient scene sound IsAmbientEvent int `csv:"IsAmbientEvent"` // Boolean field for ambient event sound IsUI int `csv:"IsUI"` // Boolean field for UI sound VolumeMin int `csv:"Volume Min"` // Minimum volume of the sound (0 to 255) VolumeMax int `csv:"Volume Max"` // Maximum volume of the sound (0 to 255) PitchMin int `csv:"Pitch Min"` // Minimum pitch percentage of the sound PitchMax int `csv:"Pitch Max"` // Maximum pitch percentage of the sound GroupSize int `csv:"Group Size"` // Sound Group size to group related sounds GroupWeight int `csv:"Group Weight"` // Weighted random chance for group sound selection Loop int `csv:"Loop"` // Boolean field for sound loop FadeIn int `csv:"Fade In"` // Gradual increase in volume when the sound starts playing FadeOut int `csv:"Fade Out"` // Gradual decrease in volume when the sound stops playing DeferInst int `csv:"Defer Inst"` // Boolean field to stop duplicate sound instance StopInst int `csv:"Stop Inst"` // Boolean field to stop previous sound instance Duration int `csv:"Duration"` // Length of time to play the sound (0 to ignore) Compound int `csv:"Compound"` // Game tick time limit for sound compounding Falloff int `csv:"Falloff"` // Defines the range of falloff for hearing the sound, based on distance LFEMix int `csv:"LFEMix"` // Percentage of the sound's Low-Frequency Effects channel SpatialSpread int `csv:"3dSpread"` // 3D spread angle of the sound (0 to 255) Priority int `csv:"Priority"` // Priority of the sound compared to other sounds Stream int `csv:"Stream"` // Boolean field for file streaming of the sound Is2D int `csv:"Is2D"` // Boolean field for 2D or 3D sound Tracking int `csv:"Tracking"` // Boolean field for sound tracking a unit Solo int `csv:"Solo"` // Boolean field for reducing volume of other sounds while playing MusicVol int `csv:"Music Vol"` // Boolean field for sound's volume affected by music volume Block1 int `csv:"Block 1"` // Offset time value in sound for sound environment or looping Block2 int `csv:"Block 2"` // Offset time value in sound for sound environment Block3 int `csv:"Block 3"` // Offset time value in sound for sound environment HDOptOut int `csv:"HDOptOut"` // Boolean field for not playing sound in new graphics mode Delay int `csv:"Delay"` // Delay to the starting tick of the sound when it starts playing }
func (SoundEntry) ExportToLua ¶
func (s SoundEntry) ExportToLua(state *lua.LState) *lua.LTable
ExportToLua exports the SoundEntry object to a Lua table.
type SoundEnvironment ¶
type SoundEnvironment struct { Handle string `csv:"Handle"` // Reference field to define the name of the Sound Environment Song string `csv:"Song"` // Background music while the player is in an area level (Points to "Sound" value in sounds.txt) DayAmbience string `csv:"Day Ambience"` // Ambient sound during daytime in the game (Points to "Sound" value in sounds.txt) HDDayAmbience string `csv:"HD Day Ambience"` // Ambient sound during daytime in the game while playing in new graphics mode (Points to "Sound" value in sounds.txt) NightAmbience string `csv:"Night Ambience"` // Ambient sound during nighttime in the game (Points to "Sound" value in sounds.txt) HDNightAmbience string `csv:"HD Night Ambience"` // Ambient sound during nighttime in the game while playing in new graphics mode (Points to "Sound" value in sounds.txt) DayEvent string `csv:"Day Event"` // Random background sound during daytime in the game (Points to "Sound" value in sounds.txt) HDDayEvent string `csv:"HD Day Event"` // Random background sound during daytime in the game while playing in new graphics mode (Points to "Sound" value in sounds.txt) NightEvent string `csv:"Night Event"` // Random background sound during nighttime in the game (Points to "Sound" value in sounds.txt) HDNightEvent string `csv:"HD Night Event"` // Random background sound during nighttime in the game while playing in new graphics mode (Points to "Sound" value in sounds.txt) EventDelay int `csv:"Event Delay"` // Baseline number of frames to wait before playing "Day Event" or "Night Event" sound in SD mode HDEventDelay int `csv:"HD Event Delay"` // Baseline number of frames to wait before playing "Day Event" or "Night Event" sound in new graphics mode Indoors int `csv:"Indoors"` // Boolean field for obstructed sound if current sound is "event_thunder_1" Material1 int `csv:"Material 1"` // Material of Sound Environment affecting footstep sounds (Code descriptions in data) Material2 int `csv:"Material 2"` // Material of Sound Environment affecting footstep sounds (Code descriptions in data) HDMaterial1 int `csv:"HD Material 1"` // Material of Sound Environment affecting footstep sounds in new graphics mode (Code descriptions in data) HDMaterial2 int `csv:"HD Material 2"` // Material of Sound Environment affecting footstep sounds in new graphics mode (Code descriptions in data) SFXEAXEnviron EnvironmentPreset `csv:"SFX EAX Environ"` // Environment preset for default sound reverberation settings for special effects sounds (Code descriptions in data) SFXEAXRoomVol int `csv:"SFX EAX Room Vol"` // Room effect level at mid frequencies for special effects sounds SFXEAXRoomHF int `csv:"SFX EAX Room HF"` // Relative room effect level at high frequencies for special effects sounds SFXEAXDecayTime int `csv:"SFX EAX Decay Time"` // Reverberation decay time at mid frequencies for special effects sounds SFXEAXDecayHF int `csv:"SFX EAX Decay HF"` // High-frequency to mid-frequency decay time ratio for special effects sounds SFXEAXReflect int `csv:"SFX EAX Reflect"` // Early reflections level relative to room effect for special effects sounds SFXEAXReflectDelay int `csv:"SFX EAX Reflect Delay"` // Initial reflection delay time for special effects sounds SFXEAXReverb int `csv:"SFX EAX Reverb"` // Late reverberation level relative to room effect for special effects sounds SFXEAXRevDelay int `csv:"SFX EAX Rev Delay"` // Late reverberation delay time relative to initial reflection for special effects sounds VOXEAXEnviron int `csv:"VOX EAX Environ"` // Environment preset for default sound reverberation settings for Voice sounds (Code descriptions in data) VOXEAXRoomVol int `csv:"VOX EAX Room Vol"` // Room effect level at mid frequencies for Voice sounds VOXEAXRoomHF int `csv:"VOX EAX Room HF"` // Relative room effect level at high frequencies for Voice sounds VOXEAXDecayTime int `csv:"VOX EAX Decay Time"` // Reverberation decay time at mid frequencies for Voice sounds VOXEAXDecayHF int `csv:"VOX EAX Decay HF"` // High-frequency to mid-frequency decay time ratio for Voice sounds VOXEAXReflect int `csv:"VOX EAX Reflect"` // Early reflections level relative to room effect for Voice sounds VOXEAXReflectDelay int `csv:"VOX EAX Reflect Delay"` // Initial reflection delay time for Voice sounds VOXEAXReverb int `csv:"VOX EAX Reverb"` // Late reverberation level relative to room effect for Voice sounds VOXEAXRevDelay int `csv:"VOX EAX Rev Delay"` // Late reverberation delay time relative to initial reflection for Voice sounds InheritEnvironment int `csv:"InheritEnvironment"` // Boolean field for inheriting values from the existing environment and overwriting other values }
SoundEnvironment represents the settings for music and ambient sounds played in the game's area levels.
type State ¶
type State struct { State string `csv:"state"` // Unique name ID for the state Group string `csv:"group"` // Group ID value to limit one active state with the same group on a unit RemHit int `csv:"remhit"` // Boolean field, 1: State removed when the unit is hit, 0: Ignore NoSend int `csv:"nosend"` // Boolean field, 1: State change not sent to the client, 0: Ignore Transform int `csv:"transform"` // Boolean field, 1: Changes unit's appearance and resets animations, 0: Ignore Aura int `csv:"aura"` // Boolean field, 1: Treated as an aura, 0: Ignore Curable int `csv:"curable"` // Boolean field, 1: State can be cured, 0: Ignore Curse int `csv:"curse"` // Boolean field, 1: State flagged as a curse, 0: Ignore Active int `csv:"active"` // Boolean field, 1: State classified as an active state, 0: Ignore Restrict int `csv:"restrict"` // Boolean field, 1: State restricts usage of certain skills, 0: Ignore Disguise int `csv:"disguise"` // Boolean field, 1: State flagged as a disguise, 0: Ignore AttBlue int `csv:"attblue"` // Boolean field, 1: Affects Attack Rating value in blue color, 0: Ignore DamBlue int `csv:"damblue"` // Boolean field, 1: Affects Damage value in blue color, 0: Ignore ArmBlue int `csv:"armblue"` // Boolean field, 1: Affects Defense value (Armor) in blue color, 0: Ignore RFBlue int `csv:"rfblue"` // Boolean field, 1: Affects Fire Resistance value in blue color, 0: Ignore RLBlue int `csv:"rlblue"` // Boolean field, 1: Affects Lightning Resistance value in blue color, 0: Ignore RCBlue int `csv:"rcblue"` // Boolean field, 1: Affects Cold Resistance value in blue color, 0: Ignore StamBarBlue int `csv:"stambarblue"` // Boolean field, 1: Affects Stamina Bar UI in blue color, 0: Ignore RPBlue int `csv:"rpblue"` // Boolean field, 1: Affects Poison Resistance value in blue color, 0: Ignore AttRed int `csv:"attred"` // Boolean field, 1: Affects Attack Rating value in red color, 0: Ignore DamRed int `csv:"damred"` // Boolean field, 1: Affects Damage value in red color, 0: Ignore ArmRed int `csv:"armred"` // Boolean field, 1: Affects Defense value (Armor) in red color, 0: Ignore RFRed int `csv:"rfred"` // Boolean field, 1: Affects Fire Resistance value in red color, 0: Ignore RLRed int `csv:"rlred"` // Boolean field, 1: Affects Lightning Resistance value in red color, 0: Ignore RCRed int `csv:"rcred"` // Boolean field, 1: Affects Cold Resistance value in red color, 0: Ignore RPRed int `csv:"rpred"` // Boolean field, 1: Affects Poison Resistance value in red color, 0: Ignore Exp int `csv:"exp"` // Boolean field, 1: Unit with this state gives/gains exp, 0: Ignore PlrStayDeath int `csv:"plrstaydeath"` // Boolean field, 1: State persists on player after death, 0: Ignore MonStayDeath int `csv:"monstaydeath"` // Boolean field, 1: State persists on monster (non-boss) after death, 0: Ignore BossStayDeath int `csv:"bossstaydeath"` // Boolean field, 1: State persists on boss after death, 0: Ignore Hide int `csv:"hide"` // Boolean field, 1: Hides the unit when dead (corpse and death animations not drawn), 0: Ignore HideDead int `csv:"hidedead"` // Boolean field, 1: Used to destroy units with invisible corpses, 0: Ignore Shatter int `csv:"shatter"` // Boolean field, 1: Causes ice shatter missiles when the unit dies, 0: Ignore UDead int `csv:"udead"` // Boolean field, 1: Flags the unit as a used dead corpse, 0: Ignore Life int `csv:"life"` // Boolean field, 1: Cancels monster's normal life regeneration, 0: Ignore Green int `csv:"green"` // Boolean field, 1: Overrides unit's color changes and makes it green, 0: Ignore PGSV int `csv:"pgsv"` // Boolean field, 1: Part of a progressive skill (charge-up skill), 0: Ignore NoOverlays int `csv:"nooverlays"` // Boolean field, 1: Disables standard way of adding overlays, 0: Ignore NoClear int `csv:"noclear"` // Boolean field, 1: Applied state does not clear stats from the state's previous application, 0: Ignore BossInv int `csv:"bossinv"` // Boolean field, 1: Uses the boss's inventory for the unit's equipped item graphics, 0: Ignore MeleeOnly int `csv:"meleeonly"` // Boolean field, 1: Makes all unit's attacks melee attacks, 0: Ignore NotOnDead int `csv:"notondead"` // Boolean field, 1: Does not play On function if unit is dead, 0: Ignore Overlay1 string `csv:"overlay1"` // Controls which overlay to use for displaying the state (Front Start) Overlay2 string `csv:"overlay2"` // Controls which overlay to use for displaying the state (Back Start) Overlay3 string `csv:"overlay3"` // Controls which overlay to use for displaying the state (Front End) Overlay4 string `csv:"overlay4"` // Controls which overlay to use for displaying the state (Back End) PGSVOverlay string `csv:"pgsvoverlay"` // Controls which overlay to use for progressive charges (charge-up skills) CastOverlay string `csv:"castoverlay"` // Controls which overlay to use when the state is initially applied RemOverlay string `csv:"removerlay"` // Controls which overlay to use when the state is removed Stat string `csv:"stat"` // Controls the associated stat for the state SetFunc int `csv:"setfunc"` // Controls client-side set functions when the state is applied RemFunc int `csv:"remfunc"` // Controls client-side remove functions when the state is removed Missile string `csv:"missile"` // Possible parameter for "setfunc" field, specifies missile from Missiles.txt Skill string `csv:"skill"` // Possible parameter for "setfunc" field, specifies skill from skills.txt ItemType string `csv:"itemtype"` // Potential Item Type affected by the state's color change (see ItemTypes.txt) ItemTrans string `csv:"itemtrans"` // Controls color change of the item when the unit has this state (uses color codes) ColorPri int `csv:"colorpri"` // Priority of state's color change compared to other states on the unit ColorShift int `csv:"colorshift"` // Controls index of the color shift palette to use LightR int `csv:"light-r"` // State's change of the red color value of Light radius (0-255) LightG int `csv:"light-g"` // State's change of the green color value of Light radius (0-255) LightB int `csv:"light-b"` // State's change of the blue color value of Light radius (0-255) OnSound string `csv:"onsound"` // Sound played when the state is initially applied OffSound string `csv:"offsound"` // Sound played when the state is removed GfxType int `csv:"gfxtype"` // Handles unit graphics transformation based on unit type GfxClass int `csv:"gfxclass"` // Controls unit class used for handling graphics transformation CltEvent string `csv:"cltevent"` // Controls event to check on the client side for "clteventfunc" field CltEventFunc int `csv:"clteventfunc"` // Client Unit event function called when event is determined in "cltevent" field CltActiveFunc int `csv:"cltactivefunc"` // Client Do function called every frame while the state is active SrvActiveFunc int `csv:"srvactivefunc"` // Server Do function called every frame while the state is active CanStack int `csv:"canstack"` // Boolean field, 1: State can stack with duplicates (only for "poison" state), 0: Ignore SunderFull int `csv:"sunderfull"` // Boolean field, 1: Reapply negative resistance stats at full potential when calculating pierce immunity if broken, 0: Ignore SunderResReduce int `csv:"sunder-res-reduce"` // Boolean field, 1: Apply pierce resistance at reduced effectiveness when calculating pierce resistance if immunity was broken, 0: Ignore }
State represents different passive behaviors applied to units that can apply various effects in the game.
type TileName ¶
type TileName string
TileName represents the tile orientations on the Automap.
const ( TileBaseFloor TileName = "fl" TileBaseLeftWall TileName = "wl" TileBaseRightWall TileName = "wr" TileBaseUpperTopCornerRight TileName = "wtlr" TileBaseUpperTopCornerLeft TileName = "wtll" TileBaseUpperTopCorner TileName = "wtr" TileBaseLowerBottomCornerLeft TileName = "wbl" TileBaseLowerBottomCornerRight TileName = "wbr" TileBaseLeftDoor TileName = "wld" TileBaseRightDoor TileName = "wrd" TileBaseLeftExit TileName = "wle" TileBaseRightExit TileName = "wre" TileBaseColumn TileName = "co" TileBaseShadow TileName = "sh" TileBaseTree TileName = "tr" TileBaseRoof TileName = "rf" TileBaseLeftWallDown TileName = "ld" TileBaseRightWallDown TileName = "rd" TileBaseFullWallDown TileName = "fd" TileBaseFrontWallDown TileName = "fi" )
Tile name constants for the Automap.
type TransformType ¶
type TransformType int
TransformType represents the color palette change of the item for the character model graphics and inventory graphics.
const ( TransformTypeNoColorChange TransformType = iota TransformTypeGrey TransformTypeGrey2 TransformTypeGold TransformTypeBrown TransformTypeGreyBrown TransformTypeInventoryGrey TransformTypeInventoryGrey2 TransformTypeInventoryGreyBrown )
type Transparency ¶
type Transparency int
Transparency represents the types of transparency for items.
const ( Transparency25 Transparency = iota Transparency50 Transparency75 TransparencyBlackAlpha TransparencyWhiteAlpha TransparencyNo TransparencyDark TransparencyHighlight TransparencyBlended )
type TreasureClass ¶
type TreasureClass struct { TreasureClass string `lua:"TreasureClass" csv:"Treasure Class"` // Unique Treasure Class ID. Picks int `lua:"Picks" csv:"Picks"` // Number of item drop chances rolled or total guaranteed quantity of item drops. Unique float64 `lua:"Unique" csv:"Unique"` // Modifies the item ratio drop for a Unique Quality item. Set float64 `lua:"Set" csv:"Set"` // Modifies the item ratio drop for a Set Quality item. Rare float64 `lua:"Rare" csv:"Rare"` // Modifies the item ratio drop for a Rare Quality item. Magic float64 `lua:"Magic" csv:"Magic"` // Modifies the item ratio drop for a Magic Quality item. NoDrop float64 `lua:"NoDrop" csv:"NoDrop"` // Probability of no item dropping by the Treasure Class. Item1 string `lua:"Item1" csv:"Item1"` // Potential Item Type for drop. Item2 string `lua:"Item2" csv:"Item2"` // Additional potential Item Type for drop. Item3 string `lua:"Item3" csv:"Item3"` // Additional potential Item Type for drop. Item4 string `lua:"Item4" csv:"Item4"` // Additional potential Item Type for drop. Item5 string `lua:"Item5" csv:"Item5"` // Additional potential Item Type for drop. Item6 string `lua:"Item6" csv:"Item6"` // Additional potential Item Type for drop. Item7 string `lua:"Item7" csv:"Item7"` // Additional potential Item Type for drop. Item8 string `lua:"Item8" csv:"Item8"` // Additional potential Item Type for drop. Item9 string `lua:"Item9" csv:"Item9"` // Additional potential Item Type for drop. Item10 string `lua:"Item10" csv:"Item10"` // Additional potential Item Type for drop. Prob1 float64 `lua:"Prob1" csv:"Prob1"` // Probability for the drop of Item1. Prob2 float64 `lua:"Prob2" csv:"Prob2"` // Probability for the drop of Item2. Prob3 float64 `lua:"Prob3" csv:"Prob3"` // Probability for the drop of Item3. Prob4 float64 `lua:"Prob4" csv:"Prob4"` // Probability for the drop of Item4. Prob5 float64 `lua:"Prob5" csv:"Prob5"` // Probability for the drop of Item5. Prob6 float64 `lua:"Prob6" csv:"Prob6"` // Probability for the drop of Item6. Prob7 float64 `lua:"Prob7" csv:"Prob7"` // Probability for the drop of Item7. Prob8 float64 `lua:"Prob8" csv:"Prob8"` // Probability for the drop of Item8. Prob9 float64 `lua:"Prob9" csv:"Prob9"` // Probability for the drop of Item9. Prob10 float64 `lua:"Prob10" csv:"Prob10"` // Probability for the drop of Item10. Term int `lua:"Term" csv:"Term"` // Indicates the end of the Treasure Class data. }
TreasureClass represents the Treasure Class from the original game.
type TreasureClassEx ¶
type TreasureClassEx struct { TreasureClass string `csv:"Treasure Class"` // Unique Treasure Class ID. Group int `csv:"group"` // Treasure Class group ID for item drop calculation. Level int `csv:"level"` // Level of the Treasure Class. Picks int `csv:"Picks"` // Number of item drop chances rolled or total guaranteed quantity of item drops. Unique float64 `csv:"Unique"` // Modifies the item ratio drop for a Unique Quality item. Set float64 `csv:"Set"` // Modifies the item ratio drop for a Set Quality item. Rare float64 `csv:"Rare"` // Modifies the item ratio drop for a Rare Quality item. Magic float64 `csv:"Magic"` // Modifies the item ratio drop for a Magic Quality item. NoDrop float64 `csv:"NoDrop"` // Probability of no item dropping by the Treasure Class. Item1 string `csv:"Item1"` // Potential Item Type or other Treasure Class that can drop. Item2 string `csv:"Item2"` // Additional potential Item Type or Treasure Class. Item3 string `csv:"Item3"` // Additional potential Item Type or Treasure Class. Item4 string `csv:"Item4"` // Additional potential Item Type or Treasure Class. Item5 string `csv:"Item5"` // Additional potential Item Type or Treasure Class. Item6 string `csv:"Item6"` // Additional potential Item Type or Treasure Class. Item7 string `csv:"Item7"` // Additional potential Item Type or Treasure Class. Item8 string `csv:"Item8"` // Additional potential Item Type or Treasure Class. Item9 string `csv:"Item9"` // Additional potential Item Type or Treasure Class. Item10 string `csv:"Item10"` // Additional potential Item Type or Treasure Class. Prob1 float64 `csv:"Prob1"` // Probability for the drop of Item1. Prob2 float64 `csv:"Prob2"` // Probability for the drop of Item2. Prob3 float64 `csv:"Prob3"` // Probability for the drop of Item3. Prob4 float64 `csv:"Prob4"` // Probability for the drop of Item4. Prob5 float64 `csv:"Prob5"` // Probability for the drop of Item5. Prob6 float64 `csv:"Prob6"` // Probability for the drop of Item6. Prob7 float64 `csv:"Prob7"` // Probability for the drop of Item7. Prob8 float64 `csv:"Prob8"` // Probability for the drop of Item8. Prob9 float64 `csv:"Prob9"` // Probability for the drop of Item9. Prob10 float64 `csv:"Prob10"` // Probability for the drop of Item10. FirstLadderSeason int `csv:"firstLadderSeason"` // Starting ladder season for rolling in ladder games (inclusive). LastLadderSeason int `csv:"lastLadderSeason"` // Last ladder season for which the treasure class is ladder-only (inclusive). NoAlwaysDrop bool `csv:"noAlwaysDrop"` // If true, this treasure class will roll normally when being forced to always drop. }
TreasureClassEx represents the Treasure Class linked to a monster drop.
type UniquePrefix ¶
type UniquePrefix struct {
Name string `csv:"name"` // A string key, which is used as a potential selection for generating a unique monster’s name
}
UniquePrefix represents the data for unique monster name prefixes
type UniqueSuffix ¶
type UniqueSuffix struct {
Name string `csv:"name"` // A string key, which is used as a potential selection for generating a unique monster’s name
}
UniqueSuffix represents the data for unique monster name suffixes
type WeaponClass ¶
type WeaponClass struct { Name string `csv:"Weapon Class"` // The name of the weapon class. Code WeaponClassID `csv:"Code"` // The unique 3-letter/number code for the weapon class. }
WeaponClass represents different weapon classes.
type WeaponClassID ¶
type WeaponClassID string
WeaponClassID represents the base weapon class
const ( // HandToHand represents the Hand to Hand weapon class HandToHand WeaponClassID = "hth" // OneHandedSwing represents the One Handed Swing weapon class OneHandedSwing WeaponClassID = "1hs" // OneHandedThrust represents the One Handed Thrust weapon class OneHandedThrust WeaponClassID = "1ht" // Bow represents the Bow weapon class Bow WeaponClassID = "bow" // TwoHandedSwing represents the Two Handed Swing weapon class TwoHandedSwing WeaponClassID = "2hs" // TwoHandedThrust represents the Two Handed Thrust weapon class TwoHandedThrust WeaponClassID = "2ht" // DualWieldingLeftJabRightSwing represents the Dual Wielding - Left Jab Right Swing weapon class DualWieldingLeftJabRightSwing WeaponClassID = "1js" // DualWieldingLeftJabRightThrust represents the Dual Wielding - Left Jab Right Thrust weapon class DualWieldingLeftJabRightThrust WeaponClassID = "1jt" // DualWieldingLeftSwingRightSwing represents the Dual Wielding - Left Swing Right Swing weapon class DualWieldingLeftSwingRightSwing WeaponClassID = "1ss" // DualWieldingLeftSwingRightThrust represents the Dual Wielding - Left Swing Right Thrust weapon class DualWieldingLeftSwingRightThrust WeaponClassID = "1st" // Staff represents the Staff weapon class Staff WeaponClassID = "stf" // Crossbow represents the Crossbow weapon class Crossbow WeaponClassID = "xbw" // OneHandToHand represents the One Hand to Hand weapon class OneHandToHand WeaponClassID = "ht1" // TwoHandToHand represents the Two Hand to Hand weapon class TwoHandToHand WeaponClassID = "ht2" )
Source Files ¶
- act_info.go
- automap.go
- belt.go
- books.go
- character_class.go
- charstats.go
- color_codes.go
- cube.go
- difficulty_level.go
- difficulty_levels.go
- dynamic_level_generation_type.go
- experience.go
- gamble.go
- gambling.go
- gems.go
- hero.go
- hireling.go
- inventory.go
- item_armor.go
- item_armor_component.go
- item_armor_data.go
- item_automagic.go
- item_bit_field.go
- item_body_location.go
- item_class.go
- item_component.go
- item_gem_apply_type.go
- item_hell_upgrade.go
- item_high_quality_modifiers.go
- item_misc.go
- item_nightmare_upgrade.go
- item_property.go
- item_quality.go
- item_quest_class.go
- item_ratio.go
- item_stat_cost.go
- item_store_page.go
- item_super_type.go
- item_type.go
- item_unique_items.go
- item_weapon.go
- item_weapon_class.go
- level.go
- level_group.go
- level_maze.go
- level_preset.go
- level_quest_flags.go
- level_substitute.go
- level_subtype.go
- level_theme_code.go
- level_type.go
- level_warp.go
- magic_prefix.go
- magic_suffix.go
- missile.go
- monster_equipment.go
- monster_level_stats.go
- monster_preset.go
- monster_properties.go
- monster_sequence.go
- monster_sounds.go
- monster_stats.go
- monster_unique_modifier.go
- monster_unique_name.go
- npc.go
- object.go
- object_functions.go
- object_groups.go
- object_mode.go
- object_preset.go
- object_target_priority.go
- object_types.go
- overlay.go
- palette_transform.go
- pet_type.go
- quest.go
- rare_prefix.go
- rare_suffix.go
- runes.go
- set_bonus.go
- set_item.go
- shrines.go
- skill_desc.go
- skills.go
- sound.go
- sound_environ.go
- states.go
- transparency.go
- treasure_class.go
- unique_prefix.go
- unique_suffix.go