fix(monsters): 按 d2mods.info 官方规范修正 MonLvl 与 MonStats 等级/半径/稀有度逻辑

- 依据 KB 354: 读取 MonLvl.txt 单机专属 'L-' 列,确保单机模式数值准确
- 依据 KB 360: 实现两分支 monsterLevelFor 等级判定(普通难度与 Boss 维持自身等级,噩梦/地狱普通怪取区域等级)
- 依据 KB 360: aidist 为空或 0 时回退至默认 35 格 (560px 一屏距离)
- 依据 KB 360: 增加 sparsePopulate 稀有生成概率属性并在选怪时过滤
- 全量下载并整理 d2mods 官方 KB 120 篇技术文档至 docs/d2kb/ 并附索引
- 验证: 51/51 unit tests passed, 65/65 verify-monsters checks passed
This commit is contained in:
troytt 2026-09-15 08:57:15 +00:00
parent cc12e7bc66
commit 4294a16a48
124 changed files with 24947 additions and 46 deletions

126
docs/d2kb/README.md Normal file
View File

@ -0,0 +1,126 @@
# Diablo II Data Files Knowledge Base (D2Mods Archive)
此目录收录了从 [d2mods.info Knowledge Base](https://d2mods.info/forum/kb/index) 整理下载的 Diablo II 核心数据表(`.txt`)与格式(`DT1`, `DS1`, `DC6`, `TBL`, `MPQ` 等)技术参考文章,供开发实现查阅。
| Article ID | 主题 / 文件 | 文件名 | 大小 |
|---|---|---|---|
| 002 | Armor.txt | [kb_002_Armor.txt.txt](./kb_002_Armor.txt.txt) | 15,297 B |
| 039 | The MPQ Format | [kb_039_The_MPQ_Format.txt](./kb_039_The_MPQ_Format.txt) | 3,147 B |
| 040 | The DT1 Format | [kb_040_The_DT1_Format.txt](./kb_040_The_DT1_Format.txt) | 28,549 B |
| 049 | Cubemain.txt Code Reference (v1.09x) | [kb_049_Cubemain.txt_Code_Reference_v1.09x.txt](./kb_049_Cubemain.txt_Code_Reference_v1.09x.txt) | 6,319 B |
| 050 | Color Codes for .TBL Files (v1.09x) | [kb_050_Color_Codes_for_.TBL_Files_v1.09x.txt](./kb_050_Color_Codes_for_.TBL_Files_v1.09x.txt) | 1,276 B |
| 052 | Item Class Codes in Skills.txt (v1.09x) | [kb_052_Item_Class_Codes_in_Skills.txt_v1.09x.txt](./kb_052_Item_Class_Codes_in_Skills.txt_v1.09x.txt) | 2,354 B |
| 153 | Making D2 Palettes | [kb_153_Making_D2_Palettes.txt](./kb_153_Making_D2_Palettes.txt) | 721 B |
| 154 | DC6 Files (by DigiBo) | [kb_154_DC6_Files_by_DigiBo.txt](./kb_154_DC6_Files_by_DigiBo.txt) | 3,086 B |
| 155 | DC6 Item Conversions (by Joel Falcou) | [kb_155_DC6_Item_Conversions_by_Joel_Falcou.txt](./kb_155_DC6_Item_Conversions_by_Joel_Falcou.txt) | 7,917 B |
| 160 | DifficultyLevels.txt | [kb_160_DifficultyLevels.txt.txt](./kb_160_DifficultyLevels.txt.txt) | 3,288 B |
| 161 | MonUMod.txt | [kb_161_MonUMod.txt.txt](./kb_161_MonUMod.txt.txt) | 5,037 B |
| 162 | SuperUniques.txt | [kb_162_SuperUniques.txt.txt](./kb_162_SuperUniques.txt.txt) | 7,417 B |
| 171 | Animations Conversion Tutorial | [kb_171_Animations_Conversion_Tutorial.txt](./kb_171_Animations_Conversion_Tutorial.txt) | 10,611 B |
| 178 | Making D2 palettes | [kb_178_Making_D2_palettes.txt](./kb_178_Making_D2_palettes.txt) | 664 B |
| 179 | DC6 Files | [kb_179_DC6_Files.txt](./kb_179_DC6_Files.txt) | 2,970 B |
| 180 | DC6 Item Conversions | [kb_180_DC6_Item_Conversions.txt](./kb_180_DC6_Item_Conversions.txt) | 7,802 B |
| 191 | Adding New Items To Armor.txt | [kb_191_Adding_New_Items_To_Armor.txt.txt](./kb_191_Adding_New_Items_To_Armor.txt.txt) | 9,249 B |
| 217 | String Tables and Enquettar | [kb_217_String_Tables_and_Enquettar.txt](./kb_217_String_Tables_and_Enquettar.txt) | 5,062 B |
| 221 | Armor.txt File Guide | [kb_221_Armor.txt_File_Guide.txt](./kb_221_Armor.txt_File_Guide.txt) | 5,991 B |
| 222 | Automagic.txt File Guide | [kb_222_Automagic.txt_File_Guide.txt](./kb_222_Automagic.txt_File_Guide.txt) | 8,210 B |
| 223 | Charstats.txt File Guide | [kb_223_Charstats.txt_File_Guide.txt](./kb_223_Charstats.txt_File_Guide.txt) | 9,290 B |
| 224 | Cubemain.txt File Guide | [kb_224_Cubemain.txt_File_Guide.txt](./kb_224_Cubemain.txt_File_Guide.txt) | 4,288 B |
| 225 | Difficultylevels.txt File Guide | [kb_225_Difficultylevels.txt_File_Guide.txt](./kb_225_Difficultylevels.txt_File_Guide.txt) | 2,559 B |
| 226 | Experience.txt File Guide | [kb_226_Experience.txt_File_Guide.txt](./kb_226_Experience.txt_File_Guide.txt) | 1,369 B |
| 227 | Gems.txt File Guide | [kb_227_Gems.txt_File_Guide.txt](./kb_227_Gems.txt_File_Guide.txt) | 4,526 B |
| 228 | Hireling.txt File Guide | [kb_228_Hireling.txt_File_Guide.txt](./kb_228_Hireling.txt_File_Guide.txt) | 5,266 B |
| 229 | Itemratio.txt File Guide | [kb_229_Itemratio.txt_File_Guide.txt](./kb_229_Itemratio.txt_File_Guide.txt) | 2,046 B |
| 230 | Inventory.txt File Guide | [kb_230_Inventory.txt_File_Guide.txt](./kb_230_Inventory.txt_File_Guide.txt) | 12,220 B |
| 231 | Itemtypes.txt File Guide | [kb_231_Itemtypes.txt_File_Guide.txt](./kb_231_Itemtypes.txt_File_Guide.txt) | 2,232 B |
| 232 | Levels.txt File Guide | [kb_232_Levels.txt_File_Guide.txt](./kb_232_Levels.txt_File_Guide.txt) | 9,554 B |
| 233 | Lvlprest.txt File Guide | [kb_233_Lvlprest.txt_File_Guide.txt](./kb_233_Lvlprest.txt_File_Guide.txt) | 2,850 B |
| 234 | Magicprefix.txt File Guide | [kb_234_Magicprefix.txt_File_Guide.txt](./kb_234_Magicprefix.txt_File_Guide.txt) | 5,618 B |
| 235 | Magicsuffix.txt File Guide | [kb_235_Magicsuffix.txt_File_Guide.txt](./kb_235_Magicsuffix.txt_File_Guide.txt) | 5,618 B |
| 236 | Misc.txt File Guide | [kb_236_Misc.txt_File_Guide.txt](./kb_236_Misc.txt_File_Guide.txt) | 8,255 B |
| 237 | Missiles.txt File Guide | [kb_237_Missiles.txt_File_Guide.txt](./kb_237_Missiles.txt_File_Guide.txt) | 4,328 B |
| 238 | Monstats.txt File Guide | [kb_238_Monstats.txt_File_Guide.txt](./kb_238_Monstats.txt_File_Guide.txt) | 16,685 B |
| 239 | Montype.txt File Guide | [kb_239_Montype.txt_File_Guide.txt](./kb_239_Montype.txt_File_Guide.txt) | 1,625 B |
| 240 | Npc.txt File Guide | [kb_240_Npc.txt_File_Guide.txt](./kb_240_Npc.txt_File_Guide.txt) | 4,111 B |
| 241 | Objgroup.txt File Guide | [kb_241_Objgroup.txt_File_Guide.txt](./kb_241_Objgroup.txt_File_Guide.txt) | 2,328 B |
| 242 | Rareprefix.txt File Guide | [kb_242_Rareprefix.txt_File_Guide.txt](./kb_242_Rareprefix.txt_File_Guide.txt) | 1,683 B |
| 243 | Raresuffix.txt File Guide | [kb_243_Raresuffix.txt_File_Guide.txt](./kb_243_Raresuffix.txt_File_Guide.txt) | 1,683 B |
| 244 | Runes.txt File Guide | [kb_244_Runes.txt_File_Guide.txt](./kb_244_Runes.txt_File_Guide.txt) | 4,851 B |
| 245 | Setitems.txt File Guide | [kb_245_Setitems.txt_File_Guide.txt](./kb_245_Setitems.txt_File_Guide.txt) | 7,523 B |
| 246 | Skills.txt File Guide | [kb_246_Skills.txt_File_Guide.txt](./kb_246_Skills.txt_File_Guide.txt) | 6,912 B |
| 247 | Sounds.txt File Guide | [kb_247_Sounds.txt_File_Guide.txt](./kb_247_Sounds.txt_File_Guide.txt) | 2,454 B |
| 248 | Superuniques.txt File Guide | [kb_248_Superuniques.txt_File_Guide.txt](./kb_248_Superuniques.txt_File_Guide.txt) | 2,153 B |
| 249 | Uniqueitems.txt File Guide | [kb_249_Uniqueitems.txt_File_Guide.txt](./kb_249_Uniqueitems.txt_File_Guide.txt) | 13,252 B |
| 250 | Weapons.txt File Guide | [kb_250_Weapons.txt_File_Guide.txt](./kb_250_Weapons.txt_File_Guide.txt) | 7,034 B |
| 264 | How To Edit DT1 File Palettes (by BlackHeart) | [kb_264_How_To_Edit_DT1_File_Palettes_by_BlackHeart.txt](./kb_264_How_To_Edit_DT1_File_Palettes_by_BlackHeart.txt) | 2,572 B |
| 271 | [LOD v.1.10] Kingdom of Tenai v1.08z by Vegabond_635 | [kb_271_LOD_v.1.10_Kingdom_of_Tenai_v1.08z_by_Vegabond_635.txt](./kb_271_LOD_v.1.10_Kingdom_of_Tenai_v1.08z_by_Vegabond_635.txt) | 6,522 B |
| 284 | CubeMain.txt | [kb_284_CubeMain.txt.txt](./kb_284_CubeMain.txt.txt) | 7,475 B |
| 285 | Hireling.txt File | [kb_285_Hireling.txt_File.txt](./kb_285_Hireling.txt_File.txt) | 3,675 B |
| 286 | Matching New Monster Animations to an AI (by I_Burner) | [kb_286_Matching_New_Monster_Animations_to_an_AI_by_I_Burner.txt](./kb_286_Matching_New_Monster_Animations_to_an_AI_by_I_Burner.txt) | 9,873 B |
| 287 | Adding ANY Monsters and ANY Objects to a DS1 (by Paul Siramy) | [kb_287_Adding_ANY_Monsters_and_ANY_Objects_to_a_DS1_by_Paul_Siramy.txt](./kb_287_Adding_ANY_Monsters_and_ANY_Objects_to_a_DS1_by_Paul_Siramy.txt) | 16,542 B |
| 301 | Levels.txt | [kb_301_Levels.txt.txt](./kb_301_Levels.txt.txt) | 9,869 B |
| 302 | LvlMaze.txt | [kb_302_LvlMaze.txt.txt](./kb_302_LvlMaze.txt.txt) | 1,255 B |
| 310 | Tutorial Dt1 Exercise 1 - Replacing tiles in an existing dt1 | [kb_310_Tutorial_Dt1_Exercise_1_-_Replacing_tiles_in_an_existing_dt1.txt](./kb_310_Tutorial_Dt1_Exercise_1_-_Replacing_tiles_in_an_existing_dt1.txt) | 12,137 B |
| 317 | Misc.txt | [kb_317_Misc.txt.txt](./kb_317_Misc.txt.txt) | 13,101 B |
| 320 | ItemRatio.txt | [kb_320_ItemRatio.txt.txt](./kb_320_ItemRatio.txt.txt) | 6,548 B |
| 343 | UniqueItems.txt File Guide | [kb_343_UniqueItems.txt_File_Guide.txt](./kb_343_UniqueItems.txt_File_Guide.txt) | 2,292 B |
| 344 | States.txt File Guide (Beta 1.10) | [kb_344_States.txt_File_Guide_Beta_1.10.txt](./kb_344_States.txt_File_Guide_Beta_1.10.txt) | 4,515 B |
| 345 | Properties.txt File Guide | [kb_345_Properties.txt_File_Guide.txt](./kb_345_Properties.txt_File_Guide.txt) | 3,262 B |
| 346 | Weapons.txt File Guide | [kb_346_Weapons.txt_File_Guide.txt](./kb_346_Weapons.txt_File_Guide.txt) | 15,217 B |
| 348 | SetItems.txt File Guide | [kb_348_SetItems.txt_File_Guide.txt](./kb_348_SetItems.txt_File_Guide.txt) | 10,130 B |
| 349 | Sets.txt File Guide | [kb_349_Sets.txt_File_Guide.txt](./kb_349_Sets.txt_File_Guide.txt) | 3,624 B |
| 350 | Skills.txt File Guide | [kb_350_Skills.txt_File_Guide.txt](./kb_350_Skills.txt_File_Guide.txt) | 11,198 B |
| 351 | SkillDesc.txt File Guide | [kb_351_SkillDesc.txt_File_Guide.txt](./kb_351_SkillDesc.txt_File_Guide.txt) | 9,343 B |
| 352 | Missiles.txt File Guide (incomplete) | [kb_352_Missiles.txt_File_Guide_incomplete.txt](./kb_352_Missiles.txt_File_Guide_incomplete.txt) | 11,027 B |
| 353 | ItemStatCost.txt File Guide | [kb_353_ItemStatCost.txt_File_Guide.txt](./kb_353_ItemStatCost.txt_File_Guide.txt) | 7,468 B |
| 354 | MonLvl.txt | [kb_354_MonLvl.txt.txt](./kb_354_MonLvl.txt.txt) | 2,716 B |
| 355 | PetType.txt | [kb_355_PetType.txt.txt](./kb_355_PetType.txt.txt) | 2,756 B |
| 356 | TreasureClassEx.txt File Guide | [kb_356_TreasureClassEx.txt_File_Guide.txt](./kb_356_TreasureClassEx.txt_File_Guide.txt) | 2,167 B |
| 357 | LvlPrest.txt File Guide | [kb_357_LvlPrest.txt_File_Guide.txt](./kb_357_LvlPrest.txt_File_Guide.txt) | 3,113 B |
| 359 | MonStats2.txt | [kb_359_MonStats2.txt.txt](./kb_359_MonStats2.txt.txt) | 10,889 B |
| 360 | MonStats.txt | [kb_360_MonStats.txt.txt](./kb_360_MonStats.txt.txt) | 31,494 B |
| 362 | LvlSub.txt | [kb_362_LvlSub.txt.txt](./kb_362_LvlSub.txt.txt) | 3,253 B |
| 364 | Missiles.txt | [kb_364_Missiles.txt.txt](./kb_364_Missiles.txt.txt) | 22,744 B |
| 365 | MonEquip.txt | [kb_365_MonEquip.txt.txt](./kb_365_MonEquip.txt.txt) | 1,503 B |
| 367 | LvlPrest.txt | [kb_367_LvlPrest.txt.txt](./kb_367_LvlPrest.txt.txt) | 3,296 B |
| 368 | TreasureClassEx.txt File Guide (totally new) | [kb_368_TreasureClassEx.txt_File_Guide_totally_new.txt](./kb_368_TreasureClassEx.txt_File_Guide_totally_new.txt) | 5,555 B |
| 369 | ItemTypes.txt | [kb_369_ItemTypes.txt.txt](./kb_369_ItemTypes.txt.txt) | 6,667 B |
| 370 | SkillDesc.txt File Guide (v. 2) | [kb_370_SkillDesc.txt_File_Guide_v._2.txt](./kb_370_SkillDesc.txt_File_Guide_v._2.txt) | 12,962 B |
| 371 | Formulae Guide (by Xeno and Kingpin) | [kb_371_Formulae_Guide_by_Xeno_and_Kingpin.txt](./kb_371_Formulae_Guide_by_Xeno_and_Kingpin.txt) | 15,787 B |
| 383 | MonStats.txt | [kb_383_MonStats.txt.txt](./kb_383_MonStats.txt.txt) | 28,422 B |
| 384 | Levels.txt | [kb_384_Levels.txt.txt](./kb_384_Levels.txt.txt) | 10,499 B |
| 385 | Armor.txt | [kb_385_Armor.txt.txt](./kb_385_Armor.txt.txt) | 9,355 B |
| 386 | UniqueItems.txt | [kb_386_UniqueItems.txt.txt](./kb_386_UniqueItems.txt.txt) | 5,673 B |
| 387 | NPC.txt | [kb_387_NPC.txt.txt](./kb_387_NPC.txt.txt) | 4,723 B |
| 388 | Runes.txt | [kb_388_Runes.txt.txt](./kb_388_Runes.txt.txt) | 3,137 B |
| 389 | CharStats.txt | [kb_389_CharStats.txt.txt](./kb_389_CharStats.txt.txt) | 6,069 B |
| 391 | Gems.txt | [kb_391_Gems.txt.txt](./kb_391_Gems.txt.txt) | 4,168 B |
| 393 | Objects.txt | [kb_393_Objects.txt.txt](./kb_393_Objects.txt.txt) | 20,649 B |
| 394 | ObjGroup.txt | [kb_394_ObjGroup.txt.txt](./kb_394_ObjGroup.txt.txt) | 2,068 B |
| 395 | MonSeq.txt | [kb_395_MonSeq.txt.txt](./kb_395_MonSeq.txt.txt) | 1,917 B |
| 396 | Gems.txt | [kb_396_Gems.txt.txt](./kb_396_Gems.txt.txt) | 3,306 B |
| 397 | MonStats.txt | [kb_397_MonStats.txt.txt](./kb_397_MonStats.txt.txt) | 16,275 B |
| 398 | Misc.txt | [kb_398_Misc.txt.txt](./kb_398_Misc.txt.txt) | 5,257 B |
| 400 | Adding New Items To Armor.txt | [kb_400_Adding_New_Items_To_Armor.txt.txt](./kb_400_Adding_New_Items_To_Armor.txt.txt) | 9,243 B |
| 403 | DC6 Graphic Tutorial | [kb_403_DC6_Graphic_Tutorial.txt](./kb_403_DC6_Graphic_Tutorial.txt) | 3,110 B |
| 416 | Misc.txt | [kb_416_Misc.txt.txt](./kb_416_Misc.txt.txt) | 8,387 B |
| 418 | MonSounds.txt | [kb_418_MonSounds.txt.txt](./kb_418_MonSounds.txt.txt) | 3,642 B |
| 419 | AutoMap.txt | [kb_419_AutoMap.txt.txt](./kb_419_AutoMap.txt.txt) | 16,934 B |
| 420 | MonType.txt | [kb_420_MonType.txt.txt](./kb_420_MonType.txt.txt) | 2,138 B |
| 428 | Making Palettes | [kb_428_Making_Palettes.txt](./kb_428_Making_Palettes.txt) | 654 B |
| 430 | CharStats.txt | [kb_430_CharStats.txt.txt](./kb_430_CharStats.txt.txt) | 4,135 B |
| 431 | DifficultyLevels.txt | [kb_431_DifficultyLevels.txt.txt](./kb_431_DifficultyLevels.txt.txt) | 1,539 B |
| 432 | SetItems.txt | [kb_432_SetItems.txt.txt](./kb_432_SetItems.txt.txt) | 10,920 B |
| 433 | Weapons.txt | [kb_433_Weapons.txt.txt](./kb_433_Weapons.txt.txt) | 14,707 B |
| 434 | SuperUniques.txt | [kb_434_SuperUniques.txt.txt](./kb_434_SuperUniques.txt.txt) | 2,264 B |
| 436 | AutoMagic.txt | [kb_436_AutoMagic.txt.txt](./kb_436_AutoMagic.txt.txt) | 5,843 B |
| 437 | QualityItems.txt | [kb_437_QualityItems.txt.txt](./kb_437_QualityItems.txt.txt) | 2,842 B |
| 440 | Skills.txt | [kb_440_Skills.txt.txt](./kb_440_Skills.txt.txt) | 64,453 B |
| 444 | Inventory.txt | [kb_444_Inventory.txt.txt](./kb_444_Inventory.txt.txt) | 4,553 B |
| 445 | MagicPrefix/Suffix.txt | [kb_445_MagicPrefix_Suffix.txt.txt](./kb_445_MagicPrefix_Suffix.txt.txt) | 7,075 B |
| 448 | ItemStatCost.txt | [kb_448_ItemStatCost.txt.txt](./kb_448_ItemStatCost.txt.txt) | 21,476 B |
| 452 | States.txt | [kb_452_States.txt.txt](./kb_452_States.txt.txt) | 8,342 B |
| 453 | Monprop.txt | [kb_453_Monprop.txt.txt](./kb_453_Monprop.txt.txt) | 1,271 B |
| 465 | Overlay.txt | [kb_465_Overlay.txt.txt](./kb_465_Overlay.txt.txt) | 5,418 B |
| 468 | Advanced Information about DT1 | [kb_468_Advanced_Information_about_DT1.txt](./kb_468_Advanced_Information_about_DT1.txt) | 14,773 B |
| 475 | Sounds.txt | [kb_475_Sounds.txt.txt](./kb_475_Sounds.txt.txt) | 5,320 B |

View File

@ -0,0 +1,422 @@
# D2Mods Knowledge Base: Article 2
# Title: Armor.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=2
Armor.txt
Written by: Phrozen Heart
Written on: Wed Apr 18, 2007 2:47 pm
Last modified: Wed May 25, 2022 5:56 pm
Views: 34964
Description: by Nefarius, Kingpin, Ric Faith & Paul Siramy, expanded and restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
This guide contains all the information you need concerning Armor.txt
Before you start reading what each column does , please take note of the following:
Misc.txt and Weapons.txt have many identical columns. That's because in fact these 3 text files are, in truth, three parts of a single big file : when the game reads these 3 tables, it merges them all, one after another, into one and unique table. These 3 text files contain all the base items of the game : normal / exceptional / elite versions of the in-game items. Incidently, that means you can add columns to any one of these 3 files. For instance if you add the columns Transmogrify,TMogType, TMogMin and TMogMax to Armor.txt and use them for an Helm, then this Helm will be able to be Transmute into another item, something that doesn't look possible at first glance since the 4 columns are not originally in Armor.txt.
NOTE: to add columns in a .txt, don't use D2Excel, as this program can't do the job. Instead, use MS Excel or another spreadsheet that can import and export tab-delimited .txt files.
- Related text files: Armor.txt
- Is used together with:
AutoMagic.txt
ItemTypes.txt
Missiles.txt
Sound.txt
ItemStatCost.txt
Belt.txt
Composit.txt
- Has some of its columns read from:
CharStats.txt
CubeMain.txt
SetItems.txt
UniqueItems.txt
CompCode.txt
Now, let's move to the columns themselves!
name : Reference only.
version: it needs to be set to 0 if the item you want to create or
edit is going to be an item available in both classic and expansion ( with "classic" we mean "non-expansion" mode, which you can toggle on and off when
creating a character) or set to 100 if the item is going to be only available in expansion. This field is important, as Items with " version" set to
100 will NOT be generated in Classic games.
compactsave: This field is a boolean and is related to the save files. An item that is saved in a
compact way takes less space in the save file, but in counter-part it has no stats, meaning, basically, it will not have quantity,
automagic, affixes, damage, armor, durability etc. In vanilla, this is mostly used by items which don't need any stats to be
stored, like Healing \ Mana potions and Gems.
rarity: Rarity, if set to 0 , excludes the item(s) to be dropped
from the armor racks. If set to something bigger than 0 , then it sets the rarity for this item to
drop from any armor rack. The higher, the rarer.
NOTE: You need at least 1 armor with rarity 0 or 1, otherwise the game will crash when you use an armor rack,
simply because it won't find any armor available.
spawnable: if set to 0 , this field tells the game that the item
cannot be found for sale when you interact with NPC's. Setting it to 1 has the opposite effect.
minAC - maxAC: The minimum and maximum Armor Class (AC) this item can have. Take note that
ItemStatCost.txt sets the limit to how high Defense can be.
Absorbs: Unused. It is a leftover field.
speed: If set to a positive value, then it slows down your character when worn. Negative
values, instead, will render the character faster.
reqstr: Strength required to wear this armor. it ranges from 0 to
65535 .
NOTE: If you set it higher than the maximum or lower than the minimum, you will have a rollover.
levelreq: Level Requirement. The minimum level the players must be to use that item.
block: Chance to block. Block chances are capped at 75%
durability - nodurability - durwarning: Durability sets the base durability, and ranges from
0 to 255(if set higher or lower than these two caps, you'll have a
rollover). NoDurability means the item has not any durability. DurWarning displays the warning icon on the right part of your
screen when the Durability of the item hits the amount set here.
indestructible: If set to 0 , then the item will be indestructible.
If set to 1 , then the item will be subject to durability and can get broken. Indestructible items
DO NOT read any of the durability related fields.
cost: Base cost of the item.
gamble : Overrides the default Gamble Cost, but it only works for Rings and Amulets in
Misc.txt
code: This is a 3 or 4 alphanumeric code which identifies the item for certain purposes.
namestr: It is the name string of the item.
NOTE: If this string is NOT present in a TBL, it will be considered directly as the name of the item, but if this
code IS present in a TBL then it'll be that TBL record that will be used as the name of the item instead. Also, keep in mind that
if you want a string name with at least 1 space, then you'll have to create a record in a TBL.
normcode - ubercode - ultracode : There are the "code" strings referring to the normal,
exceptional and èlite version of the item. These codes are used to know the version of an item in certain situation, like when
generating the outputs set in CubeMain.txt
-- Example --
Lion Helm has a code of ba7, and it's classified as Exceptional, because it has:
normcode = ba2
ubercode = ba7
ultracode = bac
So, the Lion helm is an exceptional item, and cube recipes which require normal or ultra items won't work
level : Base item level, also known as "Quality Level" or "qLvl".
NOTE: this is NOT the iLvl of the item. ILvl indicates which affixes can appear on the item. QLvl is, instead, used when the game creates the treasure class and preventing chests and monsters from dropping items of every posible level.
-- Example --
A Level 20 monster will never drop a Level 30 armor used by the "armo30" preset row in TreasureClassEx
magic lvl : it is the Additional magic level a.k.a mLvl (do not confuse mLvl with other similar names like mLvl intended as Monster Level or cLvl, intended as Character Level).
-- Example --
If mLvl is set to 5 and a level 10 player gambles an item, you get cLvl + mLvl affixes, so Level 15 affixes
auto prefix : it is a prefix automatically spawned on the item, taken from the column "group" of Automagic.txt.
alternategfx : it's the code of the DCC used by the Player animation while equipping the item.
OpenBetaGfx: Unused. Reference to which alternategfx was used in the Beta version.
spelloffset: Unknown. Only present in Armor.txt
component: Layer of the Player Animation used by the item, taken from Composit.txt
The Composit table is indexed as follows:
```
1.Head HD
2.Torso TR
3.Legs LG
4.RightArm RA
5.LeftArm LA
6.RightHand RH
7.LeftHand LH
8.Shield SH
9.Special1 S1 (shoulder #1)
10.Special2 S2 (shoulder #2)
11-Special3 S3
12-Special4 S4
13.Special5 S5
14.Special6 S6
15.Special7 S7
16.Special8 S8
```
rArm - lArm - Torso - Legs - rSPad - lSPad: These columns indicates how the character graphics and animations will be altered by wearing the item. It ranges from -1 (remove even the light\naked version) to 2 (heavy version).
These indexes are taken from the table indexes located in ArmType.txt which is hardcoded.
```
0.Lite lit
1.Medium med
2.Heavy hvy
```
If you'd ever wish to extend this table, follow this simple ASM code edit:
flippyfile - invfile - uniqueinvfile - setinvfile: These four columns contains DC6 filenames to use for various cases:
- flippyfile is the animation used when the item drops on the ground,
- invfile is the item image when it's in your inventory
- uniqueinvfile is used by the unique version of the item in your inventory
- setinvfile is used by the set version of the item in your inventory
All of these files are located in Data\Global\Items\
invwidth- invheight: width and heght of the item, in terms of inventory cells.
hasinv- gemsockets - gemapplytype : These three columns are used as socketing parameters.
- hasinv states if the item has an "inventory", meaning it's able to store gems or runes within. ( 1 : yes ; 0 : no).
- gemsockets determines the potential maximum amount of sockets, capped to width * height. In addition, there are three fields in ItemTypes.txt that limit the number of sockets, based on the level of the monster that drops the item. These columns are MaxSock1, MaxSock25 and MaxSock40.
- gemapplytype determines which kind of effect the gem will apply to the item it's inserted within:
```
0 = weapon
1 = armor / helm
2 = shield
```
If you use other values, your item won't be able to have sockets.
useable: It specifies whether the item can be used via right-click. ( 1 : yes ; 0 : no). This is a column often used in Misc.txt for potions and scrolls
NOTE : The game knows what to with the item by its code. Unless you're doing dll editing, don't expect an item to do something
just because you have set this column to 1.
Throwable: Not used here.
missiletype: Missile gfx to load when the item is thrown, taken from Missiles.txt
stackable - minstack - maxstack - qntwarning: These four columns handle the possibilty, for the item, to be stacked.
stackable decides if the item can be stacked or not. ( 1 : yes ; 0 : no).
minstack : Minimum quantity of the stack when the item is spawned.
maxstack : Maximum quantity of the stack when the item is spawned.
qntwarning : Quantity from which the warning message appears.
NOTE: These columns are not used in Armor.txt, but only in Misc.txt (Keys, Books) and Weapons.txt (Javelins, Arrows ...)
type -type2 : Base types of the item. Types are used in various instances like when messing with Cube Recipe and Socketing. They're taken from the field named "code" in ItemTypes.txt.
dropsound - dropsfxframe - usesound : these three columns are related to the item sound. The code is taken from the field "Sound" in Sounds.txt.
- dropsound is used when the item drops on the ground.
- dropsfxframe is the point (measured in frames) after which the sound from 'dropsound' plays.
- usesound is the sound played when the item is used or moved through the inventory.
quest - questdiffcheck : these two columns are related to quests:
- quest handles some hardcoded ID's for quest items. Quest items are counted as Uniques and cannot be sold to NPC's.
- questdiffcheck indicates that the item has a difficulty check. When set to 1, this item will only work in the difficulty in which it's been found.
NOTE: This column is originaly only present in Misc.txt and Weapons.txt.
unique : If this column is set to 1 , then the item can only spawn as unique.
transparent - transtbl : Unknown. Apparently has no effect in game.
quivered : It tells if the item needs ammunitions to work or not. ( 1 : yes ; 0 : no).
lightradius: Not used.
Belt: This column has two different meanings. In Armor.txt it works as an index telling which type of belt the item is:
```
0: no belt (1 potion row only)
1: Sash (2 potion rows)
2: not used
3: Girdles (4 potion rows)
4: light belts (2 potion rows)
5: heavy belts (3 potion rows)
6: uber belts (4 potion rows)
```
while in Misc.txt the column has another meaning, which states whether the item can or cannot be put inside the belt cells. ( 1 : yes ; 0 : no).
NOTE: Since Misc.txt and Armor.txt are part of the same file, it seems that the game looks for the type of the item first, and *then* decide how to understand the value in this column.
mindam - maxdam: Minimum and Maximum damage that this item provide. If used on a shield or on a pair of boots, the damage in question will be either Smite or Kick damage.
StrBonus- DexBonus: The amount of Strength and \ or Dexterity required to double the damage output while wearing this item. In Armor.txt it is important to note that only boots are using this column.
However, here is an example that will clarify any doubt in regard.
-- Example --
We have a Maiden spear, which has a StrBonus of 80, a DexBonus of 50, 2-hand mindam of 18 and a 2-hand maxdam of 24.
Now, if the player has 100 Strength and 120 Dexterity, the item's damage output will be 83-111 instead of 18-24.
By Strength, it will be affected this way:
- Min = 18 * 100 / 80 = 22.5
- Max = 24 * 100 / 80 = 30
By Dexterity, it will be affected this way:
- Min = 18 * 120 / 50 = 43.2
- Max = 24 * 120 / 50 = 57.6
Total
- Min damages = 18 + 22 + 43 = 83
- Max damages = 24 + 30 + 57 = 111
gemoffset: Placeholder field used to link a socketable item with the corresponding record in Gems.txt, where one exists. Data is filled in during the game loading. It is unknown if non-zero values allow multiple record selectivity.
bitfield1: Bitfield used primarily for various things, most remarkably the item material.
```
1 = Leather item
3 = Metal item, which allows the creation of iron golem
```
vendorMin - vendorMax - vendorMagicMin - vendorMagicMax - vendorMagicLvl: These columns control what the different Vendors can sells.
"Vendors" are
```
Charsi
Gheed
Akara
Fara
Lysander
Drognan
Hratli
Alkor
Ormus
Elzix
Asheara
Cain
Halbu
Jamella
Larzuk
Malah
Drehya (Anya)
```
vendorMin - vendorMax act as minimum \ maximum amount of items of this type the vendor can sell. Do not increase these values too much or you will risk to crash the game if it spawns too many items.
vendorMagicMin - vendorMagicMax have the same purposes as the ones above, but for the magical items
vendorMagicLvl controls the mLvl of the affixes an item can get.
PermStoreItem : This field is originally absent in Armor.txt, but you ought to add it as it's used to make Permanent items, so that vendors will always sell them. ( 1 : yes ; 0 : no).
Source Art - Game Art: Not used.
Transform - InvTrans : These fields let you mess around with colors.
- Transform states the colormap to use for the player's gfx
- InvTrans states the colormap to use for the inventory's gfx
You need to use the Code from Colors.txt
```
Transform Color Code
White whit
Light Grey lgry
Dark Grey dgry
Black blac
Light Blue lblu
Dark Blue dblu
Crystal Blue cblu
Light Red lred
Dark Red dred
Crystal Red cred
Light Green lgrn
Dark Green dgrn
Crystal Green cgrn
Light Yellow lyel
Dark Yellow dyel
Light Gold lgld
Dark Gold dgld
Light Purple lpur
Dark Purple dpur
Orange oran
Bright White bwht
```
SkipName : For items like the viper amulet, It makes the game skips the Base name in the item description.
NightmareUpgrade - HellUpgrade : These columns handle the code of the item the Vendor will sell instead of this item in Nightmare / Hell. Set these to 'xxx' for not having any change
nameable : Used by the reward of Anya's quest and tells if the item can be personalized or not. ( 1 : yes ; 0 : no).
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=2]Knowledge Base - Armor.txt[/url]

View File

@ -0,0 +1,36 @@
# D2Mods Knowledge Base: Article 39
# Title: The MPQ Format
# URL: https://d2mods.info/forum/kb/viewarticle?a=39
The MPQ Format
Written by: Phrozen Heart
Written on: Tue Sep 16, 2003 11:26 pm
Views: 15136
Description: by Quantum
Categories: File Formats
What’s an MPQ?
MPQ, or MoPaQ, is a proprietary archive format created by Mike O'Brien, the man hailed as Blizzard's multiplayer engine genius, back in 1996 as a general-purpose archive for use with Diablo, and named narcissistically for its creator - 'Mike O'brien PaCK'; the copyrights to it, however, are held by Havas Interactive, Blizzard's parent company, and it may continue to be used now that Mike O'Brien has left Blizzard. MPQs apparently excelled in their role in Diablo, because Havas has turned back to them time and time again for Starcraft, Warcraft 2: BNE, Diablo 2, Lords of Magic (by Sierra, another company owned by Havas), and possibly others that I'm not aware of.
An archive is a file that contains other files inside it, usually in a compressed state. Havas uses MPQs to hold all sorts of things ranging from files that are copied to the hard drive to game data. It is the game data that is particularly useful. Those MPQs contain everything including graphics, sounds, animations, levels, strings, numeric data, and storyline information.
What’s ‘Storm’?
Blizzard uses a shared library called Storm (Storm.dll on PCs, Storm.bin on Macs) in all their modern games to store important functions like MPQ reading, Battle.net, and even some graphics routines. Like all shared libraries, Storm makes its functions available to any program that wants to use them, which is not very good for security. It is for this reason that Storm only contains MPQ reading functions. The MPQ writing functions are Blizzard's prized possessions, and they're not going to let just anyone use them.
What’s the MPQ API Library DLL?
Although Storm provides public functions for reading MoPaQs, for security reasons it does not contain any functions to edit MoPaQs. However, StarEdit does, since SCMs/SCXs are really MoPaQs. Unfortunately, these functions are under tight lock and key, so all but the most knowledgeable (and persistent) hackers will be unable to use them. Unfortunately for Blizzard, there does exist one such hacker, named Andrey Lelikov (aka Lelik). He has found a way to access these precious functions, and has encapsulated this complex process in LMPQAPI.DLL (Lelik’s MPQ API Library DLL), which automatically cracks open StarEdit to reveal these functions to any programmer.
For More Information about MoPaQs - Inside MoPaQ
Clearly, with MoPaQs being used in Diablo, Diablo 2, Starcraft, and others, the customization power is tremendous. So, I decided to share my considerable knowledge I gained about MoPaQ, and, after writing Mo’PaQ 2000, to write Inside MoPaQ (at ), which has since become the definitive, all-in-one source of information about MPQs, Storm, StarEdit, and the MPQ API Library.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=39]Knowledge Base - The MPQ Format[/url]

View File

@ -0,0 +1,975 @@
# D2Mods Knowledge Base: Article 40
# Title: The DT1 Format
# URL: https://d2mods.info/forum/kb/viewarticle?a=40
The DT1 Format
Written by: Phrozen Heart
Written on: Sat Sep 15, 2007 4:09 am
Views: 16457
Description: by Paul Siramy
Categories: File Formats
DT1 format
Paul SIRAMY, 30 December 2002
Before
anything else, I really want to thanks Clannad
for his original documentation of the DT1 format. Without
the doc he made in the first place, in the old Phrozen Keep's
Forums, I shouldn't have be able to decode further more the
DT1 format, as I surely have give up. He made a DT1 viewer,
and he could have kept his infos for himself, to not beeing
afraid of rivals. Thanks Clannad to have share your knowledge
with the world (as I'm doing right now), the current state
of the Moding scene is also a part of your work (personal
note : this is this doc that really throw me into the
Diablo 2 Modding scene, and this was the start of many tools
I have made since. If you hadn't made it, I shouldn't even
be here today).
Introduction
Ok,
so what are the DT1 files ? They are all the Diablo
2 Tiles that
are used for the floors and walls of the maps (a Tile beeing
the gfx element of a map). Or maybe the T stand in
fact for Textures ? Well, that's not important. There
are 256 DT1 files in the mpq, for a total of 157 MB (if you
don't have LOD, that's less of course). But note that some
are not used by the game in fact. Each DT1 is a collection
of bitmaps of the same theme, like Tristram, Catacombs,
Crypt, and so on. Their main path is from DataGlobalTiles.
In this directory there is another sub-division : 1 directory
for each act. And again in each Act directory, there's a directory
structure (different for each acts). For instance, the file
DataGlobalTilesAct1TristramTown.dt1 have all the
Tiles specific to Tristram.
One
thing to remember is that a DT1 is usually used by many maps.
Let's take the stone walls you see in the Rogue Encampment.
There are some such walls in this town. But you can see the
exact same walls in the Cold Plains, in Stony Field, in Tristram...
So if you want to edit a DT1, don't forget your changes will
alter more than 1 map, so be carefull.
Another
usefull things to know : Diablo 2 is a 3D-isometric game,
and therefore the Tiles of the DT1 are also in a 3D-isometric
shape. The walls are too in a 3D-isometric shape, even if
it's less obvious for some of them, like this fence, this
is why I have added a green rule under it for this example
:
Concepts
Since
we'll discuss the format of a DT1 in all its parts, you need
to know more.
*
The
order of the Tiles in a DT1 is unsignificant. You
don't have to worry about this part. But what identify
a Tile in a DT1 is 3 indexes, and they are a source
of troubles. This part will be explain later.
* There
are many kind of Tiles in the game : Floors, Animated
Floors, Walls, Walls that go into the Abyss (these one
are draw below the Floors), Roofs, Shadows, and
even some Special Tiles that are used for Warping and
such. All these different types of Tiles can be put into
1 DT1 with no problems, there's no restrictions for that.
*
A
Tile is divided into many more sub-tiles. Take the fence
of the precedent example, the one with the green rule.
I have draw a rule of 5 by 5 sub-tiles. It was in purpose,
this is to show you the tiniest element of a Tile. EACH
one of this sub-tile can be walkable or not, can let the
light go thru or not, can let the player jump over it
or not... The DT1 format not only have the gfx data of
a Tile, it also have all of its sub-tiles infos, so don't
expect to make a Tile from scratch with no problems (at
least given the current Tools we have at our diposal today).
In the other hand, that means you can change the way a
Tile is working by just changing some flags of its sub-tiles...
Always dream to walk on the water, or go thru a wall ?
By editing a DT1 you can, this is just some flags to modify.
*
In
addition of these sub-tiles data, a Tile have some other
data, like the Sound index to use when the player walk
/ run over it, and maybe some infos to tell which are
the environment effects the game can make over them (like
river effect, rain...). It may have a sprite index to
use for the minimap too. So just modify a gfx of a Tile
is really not enough. If you change a wood floor by your
own gfx of stone floor, and only the gfx, don't be surprised
when you'll walk over this Tile : you'll still hear the
wood sound. So again be carefull when you want to modify
a Tile : think of all the datas of this Tile that you
may have to edit as well.
* Before we look at the file format itself, you have to know how the Tiles are handle in there : the Tiles are split into several smaller parts. And these smaller parts are not
always of the same type. From a graphic point of view,
there are 2 main different types, one for Floors, the
other for Walls :
* Floors are split into a maximum of 25 blocks, which are the
25 sub-tiles :
* Walls
are split into a variable amount of blocks of 32 by
32 pixels each :
Each
one of this 2 type is coded into its own format. Wall
blocks are coded into a kind of simple RLE (Run Length
Encoding) format, something like the PCX format : this
is to handle the transparency of the walls. As for the
Floors blocks... usually a Floor is not transparent, and
when 2 successives pixels are of the same color that's
an exception. So the Floor blocks are coded into a RAW
format, no compression at all. But what happens if the
Floor have some transparent area in it ? There are some
such Floors, like the borders of a floor near the animated
lava in act 4. In this case we'll have a Floor Tile wich
have the 2 types of blocks in its data, and you'll see
later that it isn't a problem.
In
summary, as far as I know, Wall Tiles are only using Wall
blocks (32 by 32 RLE pixels), and Floor Tiles are using
both type of blocks : Walls blocks and RAW blocks (these
RAW Floor blocks are in a 3d-isometric shape too, as you
can see).
*
Just
to make a thing clear : Walls have 25 sub-tiles datas,
just like the Floors, even if you don't see some floor
gfx on them ! I remind you that these flags tells if a
sub-tile can let the player walk over it or not, if it
block the light or not, and such. So a wall still need
theses infos for each one of its 25 sub-tiles : this is
the only way to know where are the parts of the wall that
are all solid (no walk, no jump, no light ...) and where
are the others where the player can still walk (a door
for instance). What about a barrel in the left part of
a Tile ? It's an 'object' that can be placed on many floors,
but it don't block all the area of the Tile, only 1 sub-tile.
Don't mix up the 25 sub-tiles of Floors (and Walls), with
the gfx block of a Wall (variable amount). For Floors
it's almost the same, but not for the Walls.
File Format
Structure of a DT1
* File
Header
* X Tile
Headers
* X Tile
Data, each one structured like that :
* Y
Block Headers
* Y
Block Data
File Header (
276 bytes )
The file start as folow :
# Bytes
Description
4
Version (= 7)
4
Version (= 6)
260
All zero (reserved for future use ?)
4
Number of Tiles
4
Pointer in file to Tile Headers (= 276)
There
are some DT1 with the first 2 DWORD not equal to 7 and 6,
they are in a variation of the format I expose here. It seems
they are some preliminary works that have been left in the
mpq, but it's just a guess as I never be able to decode them
completly. In any case, if a DT1 don't start with the DWORD
7 and 6, obviously don't try to read the datas with the current
doc, as you'll get garbage.
After
this File Header follow a variable amount of Tile Headers.
Of course there is 1 Tile Header for each Tile there is in
the DT1 (4th data of the File Header). Each one of this header
is structured as follow :
Tile Header ( 96 bytes )
# Bytes
Description
Comment
4
Direction
'General' orientation
2
Roof height
In pixels
1
Sound index
1
Animated ?
Flag
4
Height
in pixels, always power of 32,
always a negative number
4
Width
in pixels, always power of 32
4
Zeros
Unused
4
Orientation
The 3 indexes that identify a Tile
4
Main Index
4
Sub Index
4
Rarity / Frame index
Only Frame index in an Animated Floor Tile
1
Unknown 1
Seems to always be the same for
all the Tiles of the DT1
1
Unknown 2
1
Unknown 3
1
Unknown 4
25
Sub-tiles flags
Left to Right, and Bottom to Up
7
Zeros
Unused
4
Block Headers Pointer
Pointer in file to Block Headers for this Tile
4
Block Datas Length
Block Headers + Block Datas of this Tile
4
# of Blocks
12
Zeros
Unused
Direction
: As far as I'm concerned, it's useless. I prefer to check
the Orientation instead of
the Direction. Direction of a tile is a sort of a 'main orientation',
while the Orientation data itself is very more accurate. The
values I have found : 1, 2, 3, 4 and 5. Maybe it has something
to do while playing the game in Direct 3D mode, using the
Perspective effect ? In this mode, the Tiles are slightly
oriented to the left or to the right, and it have nothing
to do with the fact they are drawing on the left half or the
right half of the screen.
Roof
height : A Roof tile is almost the same thing as
a Floor tile, except that they have different Orientations,
and that a Roof have this data not equal to zero. This height
is used when the game need to draw the Roof : it tells in
how many pixels to the up the sprite must be draw above the
floor.
Sound
index
: This is a number that is used when the player is walking
/ running over a tile. There are differents sound : Wood,
Stone, Mud, Hearth... I don't know the relation between this
index and the wav files, as I have never check.
Animated
?
: This is a flag. I sometimes wonder if this is not a bitfield,
with more than 1 bit of this byte having a meaning. In any
case, when a Floor tile is a part of a Floor animation, the
lowest bit is set. In this case, the Rarity
/ Frame index data of this tile is not used as
a Rarity, but as a Frame index. As far as I know there are
only Floor that are animated, but I have never try to make
an animated wall. Check the lava tiles in act 4 : for 1 animated
floor, there are 10 tiles of the same Orientation
/ Main Index / Sub-index in the DT1, but with this
Frame index that go from 0 to 9. The speed of the animation
is hardcoded to be of 10 frames per sec, so each frame have
a duration of 1/10 of a second, like in this example :
Height
and Width : they are the
size of the 'box' where the final Tile fit whitin. They are
always in power of 32 pixels (32, 64, 96, 128, 160 ...), and
as a very special case, the Height is ALWAYS a negative number,
whichever the type of the Tile, as if the game was starting
to draw the pixels from the bottom of the image, instead of
the top. Now remember that the size of this box have nothing
to do with the coordinates system within. The Width and Height
are just needed to create a bitmap in memory with enough space
(and usually you'll have more space that you really need).
The decoding process within this box will be discuss later.
About
the Width of a Tile... It can be less than 160, but never
more. If it's less, that's because the Tile have only the
left part of the 'box' that have pixels, so it's not necessary
to have a bigger box if the gfx can fit into a smaller one.
But in the case there's only gfx in the right part, the
box will still be at its maximum size, since this Width
is always referenced from the full left side. 2 examples
will help :
Smaller
box, because
only the left part is used
Normal box, because the
Width is from the left side
Beware
: some Tiles have both their Width and Height set to 0,
meaning theses Tiles are completly empty. You must check
these 2 datas for the case they are equal to zero, because
it's easy to have a bug in a program with that (trust me,
I have try for you). DataGlobalTilesAct1TownTrees.dt1
is such a DT1 with some empty Tiles.
Orientation,
Main Index and Sub-index
: As said before, they are the 3 indexes that identify a Tile.
There can be more than 1 tile with this combination in a DT1.
In fact there are some Tiles that are using the same
3 indexes of another Tile, either a Tile of the same DT1,
or the Tile of another. In this case, the game choose 1 Tile
randomly whithin the same, according to the Rarity data (this
very important point will be discuss later, as there are some
very special cases).
Note
that despite the Main-index and the Sub-Index datas in the
.dt1 appear to be DWORDS (32 bits), in fact in a .ds1 (a map
of the game) it can only use numbers of 6 bits for these 2
datas. This means that in all the .dt1 of the game you'll
only find values that range from 0 to 63, no more. It's also
very important to remember if you're planing to make your
own .dt1 later. So, you have 64 possible numbers for the Main-index,
and 64 possible numbers for the Sub-index, that means that
for a map you can 'only' use 64 * 64 different tiles (4096)
per Orientation, but that
should be enough ;)
The Orientation is the data
to check to know the type of the Tile :
* Floors,
either static or animated, have an orientation of 0
* Special
Tiles have 10 or 11 (special tiles are Warps, TP location,
Map entries...)
* Shadows
have 13
* 'Walls'
(better say 'Objects') that have the precedent Shadows have
an Orientation of 14
* Roofs
have 15
* Lower
walls have > 15
* Normal
walls have all the other values which are 1.Left
Wall
2.
Upper
Wall
3.
Upper
part of an Upper-Left corner
4.
Left
part of an Upper-Left corner
5.
Upper-Right
corner
6.
Lower-Left
corner
7.
Lower-Right
corner
8.
???
Seems to be Left Wall with Door object, but not
always
9.
???
Seems to be Upper Wall with Door object, but not
always
Here's an exemple that show how the game usually use
that Upper Wall Tiles. There is exeptions sometimes,
but I think that this exemple is the generic layout.
They're put together to make a 3 * 3 tiles room (but
due to the design of the tiles in the game, we need
4 * 4 tiles) :
Rarity
/ Frame Index : As said before, this data is either
the Rarity of a Tile, or the Frame Index in the case of an
Animated Floor.
Unknown
1
to Unknown 4 : I still
don't know what theses datas ar for. It appear they have the
same values for all the Tiles of a DT1, which is strange :
why repeating the same values again & again for each Tiles
if they're all the same ? Maybe they are some index that tells
which sprite to used for the minimap, or maybe they tells
which are the environment effects the game can make with the
Tiles (like Rain), but I doubt they are any one of this 2
possibilities after all. They're really unknown datas for
now.
Sub-tiles
flags
: They are the flags of the 25 Sub-tiles of a Tile. Let's
say the North of the Tile is the upper-right border, the order
of the flags is from bottom to up and left to right, as follow
:
As
far as I know, here's the bits of such a Sub-tile flag, and
their meaning when I know them :
* bit
0 : block walk
* bit
1 : block light + block Line Of Sight (the possibility to
see monsters)
* bit
2 : block jump (and teleport I believe)
* bit
3 : block Player's walk but not Mercenary's walk (weird)
* bit
4 : ?
* bit
5 : block light only (not LOS)
* bit
6 : ?
* bit
7 : ?
Block
Headers Pointer
: Pointer in file to the Block Headers of this Tile. There
is a variable amount of Blocks for a Tile. If the Width and
Height of the Tile are both equal to zero (no Blocks), this
pointer is unsignificant (in originals DT1 it point to the
Block Headers of the next valid Tile).
Block
Datas Length
: Length of the Block Headers + Block datas of this Tile (in
Bytes). If the Width and Height of the Tile are both equal
to zero (no Blocks), this length is set to zero.
#
of Blocks
: Number of Blocks which composed this Tile. This is of course
both the number of Block Headers and the number of Block Datas.
If the Width and Height of the Tile are both equal to zero,
this number is set to zero.
Coordinates systems
Before
we look at the process of making a Tile with its Blocks, you
must know the different coordinates system of each type of
Tile. There are 3 differents systems, one for the Floors and
Roofs, another one for the Upper Walls, the Shadows and the
Specials Tiles, and the last for the Lower Walls. Each one
of this system have the X axis working the same way, but NOT
the Y axis. In summary, each blocks have its own coordinates
to tells where to place it in the bitmap. So you must know
where are theses coordinates in the bitmap, because it's dependant
of the type of the Tile.
* Floors
and Roofs system
:
*
There's
a unused area below the Floor. Despite the Height of
a Floor says it's 128 pixels (-128 in the file, but
+128 for us) you can safely assume the Floor is a box
of 160 * 80 pixels. It's 79 to be very accurate, but
80 being a muliple of 2, it's better to keep 80 than
79 (come on, that's just 1 empty line).
* Upper
Walls, Shadows and Special Tiles system
:
In
this system, we know what the maximum coordinates are
(zero), but not the minimum. As an exemple, the Worldstone
have a Upper Wall Tile with an Height of 704 pixels. The
floor grid which is draw is just for reference : Upper
Walls usually don't have floor gfx.
Strangely,
ALL Upper Wall Tiles I have checked so far have a line
of blank blocks at the top. So you can assume that if
the Tile is not an empty Tile, the Height is 32 pixels
too much, and therefore you can minus the Height by 32
when creating the bitmap in memory.
* Lower
Walls system :
And
in this last system, we know what the minimum coordinates
are ( - 96 ), but not the maximum. As an exemple, the
Worldstone have a Lower Wall Tile with an Height of
960 pixels. The floor grid which is draw is usually
NOT just for reference : Lower Walls usually have a
floor gfx in there, with their normal lower walls.
Also,
be carefull of 2 tricks :
* In
this system, we don't necessary have the Block's Height
data beeing the negative value of the maximum coordinate.
In fact, in this case that Height value is the minimum
number of pixel (in power of 32) necessary to draw
the Tile. For instance, imagine that we have a Lower
Wall that only use 2 blocks, at coordinates (0, 64)
and (0, 96). In this case the Block's Height data
will be set to -64 (only 2 blocks needed).
* The
2nd trick is that, have you have just see, in this
system there is no useless line of blocks, the Block's
Height data is the exact amount of blocks needed
to make the bitmap in memory, so don't minus that
value by 32 like you did in the Upper Walls system,
and be careful when you want to draw that blocks in
your bitmap.
After
all the Tile Headers come the Tile Datas. Each one of this
Tile Data is structure like that :
* a variable
amount of Block Headers
* the
same amount of Block Datas
A
Block Header contain all the informations of a Block, while
the Block Data is the encoded pixels of this Block. Each one
of the Block Header is structured as follow :
Block Header ( 20 bytes )
# Bytes
Description
Comment
2
X position
Position in the bitmap
2
Y position
2
Zeros
Unused
1
Grid X
Position in the Sub-tile Grid
1
Grid Y
2
Format
Type of encoding
4
Length
Length in bytes of the encoding data
2
Zeros
Unused
4
File offset
Offset in file of the encoding data
X
position
and Y position : They
are the coordinates of the upper / left corner of the Block,
according to the Coordinates System of the Tile, as explain
before.
Grid
X
and Grid Y : They range
from 0 to 4 both, and they're really used ONLY for a Floor
Tile. I think they're some kind of relations between the Sub-tile
Flag and the Block position, but since they're ALL the same
for all the Floor Tiles I have checked, you can forget them
if you want (but keep that in mind).
Format
: If this value is equal to 1, then it's a 3D-isometric Floor
Block (RAW format, no transparency), else a regular one (RLE
fomat, 32 by 32 pixels).
Length
: Length in bytes of the encoding data of this Block.
File
offset
: Offset to add to the Block
Headers Pointer of the Tile to have the position
in the file of the encoding data of this Block.
After all theses Block Headers come the Block Datas. Each
one of this encoding data must be decode in accordance of
the Format code of the Block.
Remember there is NO PALETTE in a DT1, since there is a global
palette for each act. Here are 2 (lame) samples of code in
C language that show how to decode the 2 possible types of
Blocks :
3D-isometric Block :
1st line : draw a line of 4 pixels
2nd line : draw a line of 8 pixels
3rd line : draw a line of 12 pixels
and so on...
void draw_block_isometric (BITMAP * dst, int x0, int y0, const UBYTE * data, int length)
{
UBYTE * ptr = data;
int x, y=0, n,
xjump[15] = {14, 12, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10, 12, 14},
nbpix[15] = {4, 8, 12, 16, 20, 24, 28, 32, 28, 24, 20, 16, 12, 8, 4};
// 3d-isometric subtile is 256 bytes, no more, no less
if (length != 256)
return;
// draw
while (length > 0)
{
x = xjump[y];
n = nbpix[y];
length -= n;
while (n)
{
putpixel(dst, x0+x, y0+y, * ptr);
ptr++;
x++;
n--;
}
y++;
}
}
RLE
Block :
1st
byte is pixels to 'jump', 2nd is number of 'solid' pixels,
followed by the pixel color indexes.
when 1st and 2nd bytes are 0 and 0, next line.
void draw_block_normal (BITMAP * dst, int x0, int y0, const UBYTE * data, int length)
{
UBYTE * ptr = data, b1, b2;
int x=0, y=0;
// draw
while (length > 0)
{
b1 = * ptr;
b2 = * (ptr + 1);
ptr += 2;
length -= 2;
if (b1 || b2)
{
x += b1;
length -= b2;
while (b2)
{
putpixel(dst, x0+x, y0+y, * ptr);
ptr++;
x++;
b2--;
}
}
else
{
x = 0;
y++;
}
}
}
Rarity
of Tiles
A
harder topic now. I'll assume you have already used my DS1
Editor (a DS1 is a map of the game). If it is not the case,
you should leave this topic for now, and come back later.
So, what identify a Tile is 3 indexes : Orientation, Main-index
and Sub-index. And you should already know that when some
Tiles have the same 3 indexes, they are a part of the same
random set of Tiles. Now,
how the game handle this ?
For
instance, in Tristram, there are 4 Floor Tiles which are looking
as hearth half burnt, and they have the EXACT same Orientation
/ Main-index / Sub-index . This is why they are a part of
a random set. When the game see in a map that it must use
such a Tile it choose one randomly between the random set...
but not equally. Each Tile have its own chance to appear.
This certainly remind you of the 'Rarity' you can see in some
.txt. This work almost the same way, but with some particularity.
Let's
take an easy exemple. Say that you have remake the town of
act1 with only 1 Floor Tile, and no Walls (except the 3 Special
ones of course). Now, let's make a custom DT1 : 2 Floor Tiles
in it, having the same Orientation / Main-index / Sub-index
as the one used in the map, and with their Rarity
each set to 1. So, we have 2 Floors, with the same Rarity,
from the same random set. If you test this map, you'll see
the 2 Floors, and they'll share equally the area.
Now,
set the first Floor Rarity to 1 and the second to 10. After
remaking the DT1 and testing with the same map... the 1st
Floor don't appear often. It appears 1/11 of the time : the
Rarity of 1 Tile is for the distribution. If you set the first
Floor Rarity to 2 and the second to 4, you'll have the first
Tile appear 2 / 6 of the times, and the second 4 / 6 of the
times.
Now,
some special cases. What happens if in a Tile Random Set some
tiles have a Rarity of 0 ? All to 0 ? Same random set in 2
different DT1 ? Some 0 in 1 DT1 and the other ?
Let's
say we have 2 DT1, whith Tiles of the same random set in both.
First, the game compute the sum of the Rarity of all the
Tiles in all the DT1 of the map for this random set. If
this sum is equal to zero, then you'll only see 1 Tile in
the map, always the same : the Tile which is the last of this
random set in the 1st DT1. It means that if all the Rarity
are zero, you'll never see a Tile of another DT1 than in the
1st DT1, and for the 1st DT1 you'll only see the last Tile
it found.
If
the sum is NOT zero, then you'll see random Tiles of both
DT1. But the game only use the Tiles which DO have a Rarity
in this case. There's no priority of DT1 here, each Tile will
appear according to its Rarity, as long as it is not zero
(it's just normal to not take a Tile if it have 0 luck to
appear after all).
Maybe
an exemple will help to fix how it works :
This image show all the Tiles of 1 random set, used by facade.ds1,
the Monastery. All these Floors are part of the same random
set because they all have the same Orientation / main index
/ Sub-index. But their Rarity varies. Total of Rarity for
this set = ( 8 x 1
) + ( 1 x 0
) + ( 3 x 2
) + ( 1 x 3
) + ( 2 x 10
) = 37. So for each 37 Tiles that will be draw, you'll
see 8 Tiles that have many blood over them, 6 Tiles that have
less blood, 3 Tiles that have very very few blood over them,
and 20 Tiles that have no blood at all. You'll never see the
Tile in the bottom-left corner of the image, because it have
a Rarity of 0. It surely won't be this exact amount of Tiles,
because of some randomness, but you've got the idea.
Last
words
This
doc is not yet complete, as there are still some unknown datas
in the file format, but it should already be of a great help.
If you find more informations, or if you have suggestions
(or even if you just find typo errors ;)
) you can contact me at siramy_paul@yahoo.com
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=40]Knowledge Base - The DT1 Format[/url]

View File

@ -0,0 +1,276 @@
# D2Mods Knowledge Base: Article 49
# Title: Cubemain.txt Code Reference (v1.09x)
# URL: https://d2mods.info/forum/kb/viewarticle?a=49
Cubemain.txt Code Reference (v1.09x)
Written by: Phrozen Heart
Written on: Wed Sep 17, 2003 3:52 pm
Views: 18749
Description: by Nefarius
Categories: References Charts and Tables
This resource originally appeared as a thread in the Phrozen Forums and we would also like
to thank Sir_General, Myhrginoc and Ruvanal for their contributions to the list.
item quality params
nor=normal
hiq=superior
eth=ethereal
rar=rare
mag=magic
uni=unique
set=set
crf=crafted
low=low quality
any=any item
others
noe=not ethereal
nos=no socket (for input)
sock=#sockets (eg: sock=4)
pre=prefix (row # -2 from magicprefix)
suf=suffix (row # -2 from magicsuffix)
usetype=uses base type of input1 for output
useitem=uses item from input 1
qty=amount of same item (eg: hpot,qty=3 means 3 hp potions)
upg=upgrades item normal>exceptional>elite
For additional information, an abbreviated replica of the aforementioned thread has been provided below:
NefariusDX:
item quality params:
nor=normal
hiq=superior
eth=ethereal
rar=rare
mag=magic
uni=unique
set=set
crf=crafted
low=low quality
any=any item
others
noe=not ethereal
nos=no socket (for input)
sock=#sockets (eg: sock=4)
pre=prefix (row # -2 from magicprefix)
suf=suffix (row # -2 from magicsuffix)
usetype=uses base type of input1 for output
useitem=uses item from input 1
qty=amount of same item (eg: hpot,qty=3 means 3 hp potions)
upg=upgrades item normal>exceptional>elite
Defeater:
dont forget to add ''s when you use params
NefariusDX:
params are used like this no ' its ,
eg. uar,set,eth,sock=1 would create a set sacred armor which is ethereal and had one socket
dectgap:
Would you really be able to create a ethereal set item, or was it just an example? I have never got the ethereal part working anyway...
NefariusDX:
the order is important (how ever sets can never spawn as ethereal)
blizzard did this since if u would have 1 ethereal set item u would
need to have all the other parts of that set as ethereal to in order
to complete it how ever try it this way xh9,uni,eth,sock=1 will
create a ethereal socket vamp gaze (make the level for the stuff match!)
now xh9,sock=1,eth,uni would not work to my knowledge the code must
be ORDERED
ShadowTalon:
what i would like to know is all the output formulas for cubemain
such as the formulas that Sir_General uses on his rune mod
i know you can add prefixes to items ,but i want to know if you can
add the properties of the rune or gem in my case without typing up a
**** load of new prefixes and suffixes
so they would work the way i wanted them to
NefariusDX:
i didnt understand ur q, if u mean having them 'built in' to a item u just make a crafted item
Sir_General:
If you type 'useitem' in the output column and then put some stuff
in the mod1, mod2, etc. columns you'll get the same item you put in,
only with the added attributes in the mod1, mod2, etc. columns.
ShadowTalon:
thx Sir_General, thats exactly what i wanted to hear
Myhrginoc:
One more output code for your list, 'hiq' to make an item superior.
And it gets the random affixes that go with superior grade. If 'hiq'
doesn't work by itself, use 'nor,hiq'.
NefariusDX:
thx Myhrginoc, if there is a hiq code then maybe there is a nor,low or loq
Ruvanal:
Yes, there is 'low' quality mod. edit:
Do not use with the 'nor' mod because you would be trying to apply 2
different quality levels to an item. I can't rember for sure but I
think there is a 'noe' mod for 'not ethereal'. I need to try
checking a lot of scattered notes to see if there are any other odd
ones out there.
NefariusDX:
tell me when your sure these are correct ill add em for now
Ruvanal:
Double-checked the lists that I have. The 'noe' is for 'not
ethereal' and is normally used on the input tests. I only see 2
other that you did not have in your list 'any' and 'upg'. From the
various reports that I have heard from other I cannot recommend
using the 'any' modifier as it usually causes more problems than it
will help with. The 'upg' is for 'upgrade' and is used on the inputs
to allow the upgrade forms of a specific item to be used also (e.g.
an input of mbt,mag,upg would allow the mag Chain boots, mag Mesh
boots or mag Boneweave boots to be used as valid inputs).
Also a note on the outputs. If you don't specify a quality type
(low, nor, hiq, mag, rar, crf, set, uni) then the game will spawn
the item similar to an item drop and you can get an unplanned
magical quality level. I do not know if the magic find you are
equipped with will effect this type of drop or not. I ran into this
when I was trying to test something and neglected to put a 'nor'
quality in the output line and ended up with an ethereal magical
version of what I was trying to test (I did not want either
attribute and had to start the test run over again).
Also a note on the 'sock=#' output code for those that are not aware
of it. When this is used in the output column, you will be limited
in the number of sockets as specified by the item, the ilvl (using
the MaxSockX columns from itemtypes.txt) and the max sockets based
on the magical quality of the item (magic MaxSock=3; set, rare,
crafted and unique will get a MaxSock=1). If you need to exceed this
amount you will need to put the socket value in one of the sets on
mod columns instead (you still will not be able to exceed the values
for the item and the itemtype limits).
If your output code specifies a condition that is not possible for
then the formula will not work in that case. Example: input code
weap with an out put code of usetype,nor,sock=6, using a sword would
work, but if you used a javelin then the formula would be
non-functional (assuming you have not enabled sockets on this type
of item). This type of problem is probably what has caused a lot of
difficulties when modders are trying to use 'any' code.
NefariusDX:
i didnt add any due to that reason
i didnt know about the other 1 though for upgrade
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=49]Knowledge Base - Cubemain.txt Code Reference (v1.09x)[/url]

View File

@ -0,0 +1,51 @@
# D2Mods Knowledge Base: Article 50
# Title: Color Codes for .TBL Files (v1.09x)
# URL: https://d2mods.info/forum/kb/viewarticle?a=50
Color Codes for .TBL Files (v1.09x)
Written by: Phrozen Heart
Written on: Wed Sep 17, 2003 3:59 pm
Last modified: Sat Jan 06, 2018 4:37 am
Views: 10498
Description: by Sir_General
Categories: References Charts and Tables
You can change the color of text displayed by defining a new entry in one of the .tbl files, and preceding the display name with the color code. This will override any game-generated colors such as blue for magical items.
Color codes listed below start with à (Alt-0195) ¿ (Alt-0191):
ÿc0 - Light Gray (Item Descriptions)
ÿc1 - Red
ÿc2 - Bright Green (Set Items)
ÿc3 - Blue (Magic Items)
ÿc4 - Gold (Unique Items)
ÿc5 - Dark Gray (Socketed/Ethereal Items)
ÿc6 - Transparent (Text Doesn't Show)
ÿc7 - Tan
ÿc8 - Orange (Crafted Items)
ÿc9 - Yellow (Rare Items)
ÿc: - Dark Green
ÿc; - Purple
ÿc/ - White (Brighter than Light Gray)
ÿc. - Messed Up White (Same as above but text is messed up)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=50]Knowledge Base - Color Codes for .TBL Files (v1.09x)[/url]

View File

@ -0,0 +1,82 @@
# D2Mods Knowledge Base: Article 52
# Title: Item Class Codes in Skills.txt (v1.09x)
# URL: https://d2mods.info/forum/kb/viewarticle?a=52
Item Class Codes in Skills.txt (v1.09x)
Written by: Phrozen Heart
Written on: Wed Sep 17, 2003 4:01 pm
Views: 8421
Description: by Red Havoc
Categories: References Charts and Tables
These codes are used in the itemclass1-6 columns in skills.txt. They restrict certain skills to be only usable, when the character is equipped with the relevant weapon.
Code / accepted weapons or equipment:
xxx - no weapon required, skill can always be used
!bw - any weapon (even bare fist ;-) )except for bows and crossbows
bow - for bows only
xbw - for crossbows only
stf - 2handed staves, polearms, 2handed mauls
2ht - 2handed spears
2hs - 2handed swords
1ht - javelins, throwing knifes, knifes, but no throwing axes
1hs - 1handed swords, throwing axes, 1h axes, scepters, 1h clubs/maces, wands
*sd - skill only works when equipped with a shield
1js - dual wield:
right hand -> 1handed “swing” weapon (sword, axe, throwing axe, club, wand…)
left hand -> 1 handed “jab” weapon (knife, javelin, throwing knife)
1st - just like 1js, but the other way around
1ss - dual “swing” weapons
1jt - dual jab/throw weapons (no throwing axes, however)
hth - for assassins: no weapon, 1 katar, 2 katars. For other chars: no weapon (fist) only
ht1 - 1 katar
ht2 - 2 katars
Further remarks:
- 1js, 1st, 1ss, 1jt are for barbarians only, he´s the only char who can wield two weapons at once
- ht1, ht2 are for assassins only
You cannot:
- restrict auras to work with certain weapons only
- restrict passive skills to work with certain weapons only
- restrict weapon-specific skills (i.e. poison dagger, smite, fend)
- restrict melee attacks to work with ranged weapons and ranged attacks with melee weapons (ok, ok, you can do it, but it causes strange effects like missiles not doing any damage or bows only hitting enemies who stand next to you, so better avoid it)
You can:
- restrict spells (i.e. firebolt, bone spear) and curses (i.e. amplify damage) which normally don´t need any weapons to work
Have fun modding!
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=52]Knowledge Base - Item Class Codes in Skills.txt (v1.09x)[/url]

View File

@ -0,0 +1,20 @@
# D2Mods Knowledge Base: Article 153
# Title: Making D2 Palettes
# URL: https://d2mods.info/forum/kb/viewarticle?a=153
Making D2 Palettes
Written by: Phrozen Heart
Written on: Thu Aug 19, 2004 8:50 pm
Views: 9514
Description: How to create your own D2 inventory item palette.
Categories: Tutorials (1.1x) - Graphic and Sound Files
It's pretty easy really, so first up, make sure your image is set at 256 colors. All you need to do now is edit the palette colors and change colors 224 through 255 to bright magenta (R: 255, G: 0, B:255) then save the palette file.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=153]Knowledge Base - Making D2 Palettes[/url]

View File

@ -0,0 +1,70 @@
# D2Mods Knowledge Base: Article 154
# Title: DC6 Files (by DigiBo)
# URL: https://d2mods.info/forum/kb/viewarticle?a=154
DC6 Files (by DigiBo)
Written by: Phrozen Heart
Written on: Thu Aug 19, 2004 8:49 pm
Views: 10907
Description: Tutorial which explains how to create new DC6 inventory images.
Categories: Tutorials (1.1x) - Graphic and Sound Files
Many people have asked me(and other people) how to add items in Diablo 2.
In this tutorial I won't explain how to add new items,just new graphics for the items.
1.Tools
For my graphics I make .pcx files and convert them in .dc6. At http://www.d2mods.com
you can find Diablo 1 graphics in .pcx format.I used some of the in my mod because they
are very easy to convert and look great.You can start from there then try making your own
graphics.To convert the .pcx in .dc6 you need DC6CON,you can find it at http://www.d2mods.com.
For editing the .pcx files(you will need to edit them even if they are the complete D1 graphics) I use
Paint Shop Pro 7.You can use any other program able to edit .pcx files.The last thing you need is the palette.
On my page you will find the palette I use for Paint Shop Pro 7.If you have other version of PSP or you use
another program you can make your own palette - just follow the tutorial at http://www.d2mods.com
2.Prepaering the picture
I repeat - I use PSP to edit the pics and I can't help you with other programs.
First open the picture and apply the palette(you may need switching to 256 colors).If you are making
your own pictures first apply the palette then start making the pic.Now make color 0 transparent
(color 0 - Pure Black R-G-B 0-0-0).If there are parts of the background which don't become transparent just
choose Pure Black and correct them.It is possible that some black parts of the picture to become transparent.
Make them a color near the black but not Pure Black.When changing the palette some parts of the picture may become
strange so you will need to fix them.After everything is ready save the picture.
3.Converting
Now use DC6CON to convert the picture.Use 'dc6con [filename] -transcol 0'.You will have the dc6 now.
You may want to make the dc6 back to pcx to check is everything ok.If the new pcx looks ok the dc6 is ready.
4.Finishing
Rename the dc6 to inv***.dc6(where *** is what you want).I think that D2 won't be able to read the graphic if
there are more than 3 characters after 'inv'.Now use mpq2k to put the file in your patch_d2.mpq
Find a good tutorial about weapons.txt or armor.txt and make a new item with the new graphic.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=154]Knowledge Base - DC6 Files (by DigiBo)[/url]

View File

@ -0,0 +1,272 @@
# D2Mods Knowledge Base: Article 155
# Title: DC6 Item Conversions (by Joel Falcou)
# URL: https://d2mods.info/forum/kb/viewarticle?a=155
DC6 Item Conversions (by Joel Falcou)
Written by: Phrozen Heart
Written on: Fri May 04, 2007 2:35 am
Views: 13189
Description: Indepth tutorial on creating a new DC6 inventory image.
Categories: Tutorials (1.1x) - Graphic and Sound Files
Getting Started ...
While moding your favorite Diablo II version, you'll surely feel the urge
to give it a brand new look. If the simplest way is to change the various screen
background, one of the most appealing temptation is to modify the old look of
our beloved items.
First we gonna talk about the required tools. Basically you need an image
editing application that can handle the most common format like BMP, JPG and
obligatory PCX format. MS Paint could be enough but you could grab a free trial
version of the allmighty Paint Shop Pro at the
JASC website.
Then you'll need the modified version of DC6CON by Paul Siramy, that you could
grab directly at The Phrozenkeep File Center.
It's a MS-DOS based program that should work on every machines.
When you get ready, hang on to the next Section : Mastering the Tools.
Return to Top
Mastering the Tools
Now you have all the forementioned tools, we gonna take a look at the functions
we'll need to know.
Paint Shop Pro :
These are the following functions you'll use often. Some advanced users
may use others, and I encourage them to send me their tricks. I don't mind
to be omnipotent with this one ;)
* Load/Save : Obvious isn't it but you get to know how to change
the output file format by using the combo box of the Save
As function.
Shortcut : Ctrl+O/F12
* Resize : This function will help you to get your image into the
proper size. There are many options in this function that we'll see
later.
Shortcut : Shift + S
* Load Palette : The bread 'n butter of us. With this one, you'll easily
apply the correct
palette to your image. Like the Resize function, the Load Palette function
is a bit complex and will be described later.
Shortcut : Shift + O
Modified DC6CON :
The easy one :) Paul has done a good job on this one. Without getting into
the details, there is a little bat file
that will simplify your life. Download it, I'll use it from now.
Return to Top
Finding Originals
It's often the trickiest part :).
Personnaly I use my friend Google to find out some pictures or artwork that
look like the items I want to convert. The Medeival - Fantasy - Weapons - Armor
keywords in the images seeking sections could do miracles.
However, the major sources of new items are the other RPG. Without any order,
the inventory images from Darkstone, Diablo/Hellfire, Prince of Qin, Nox, Throne
of Darkness, the Baldur's Gate series and alike and many more is perfectly suitable.
Don't hesitate to crawl over fan sites, strategy pages and the like.
Return to Top
The Conversion Process
Here we'll cover the step-by-step process of converting an item gfx to dc6
format. For this one I'll use an original item from Planescape Torment : the
Godless Priestess Cleavage. Download
the needed files and let's start !!
First Step : Correcting colors
Open the original BMP file with Paint Shop Pro.
Click to enlarge.
As you see the background is a bit green and some shadows don't look good.
Use the Magic Wand to remove the green background and the obsolete shadows.
You're Cleavage should now look like this :
Click to enlarge.
Now the Cleavage looks fine, open the custom palette that comes with this
tutorial package. Select the custom.pal file, and check that the palette is
applied by using the 'Nearest color matching'.
Click to enlarge.
When you have selected the palette, click on the color box on
the right of the screen. This will open the palette screen where you'll select
the index 0 color. With the custom palette, it looks bright blue. It's intentional.
The actual tin' of this color isn't important. The game use the Palette Index
to generate transparency so if you want to have a purple or green background,
it's up to you BUT its index MUST BE 0.
Click to enlarge
Select the Flood fill tools and fill all the background with your new color.
When the background is a bit tricky to access (fur items, hairs etc ...), use
the Color Replacer to replace all the old background color with the new one.
Your item should now look ike this.
Click to enlarge
Now you get the proper colors on your items, hope to the next step ...
Second Step : Size does matter
All inventory graphics in Diablo II follow a strict pattern. Both width and
height are aligned on a 28 pixels limit. If you look closely to your inventory
screen in-game, you'll see that it's composed of a bunch of little square. Each
of this square is precisely 28x28 pixels. So any items must be composed of an
entire number of such square.
Now, look at your cleavage item. Its size is 34x63. So if you look at a regular
Diablo II armor, its size is 56x84. Yes, you guess it, it's 2x3 squares. So,
as our cleavage fits in these limits, you'll just merge it with a blank image.
If the item was bigger than 56x84, you should use the Resize function in 'Pixel
Reduce' mode. If you use bilinear or bicubic resample, you'll create blurry
pixels that will not fit right with the palette.
With Paint Shop Pro, create a new image (Ctrl+N). Make it 56 pixels wide and
84 pixels high. Turn it on 256 colors and click OK. You should get now two image
: the blank one and the cleavage one.
Click to enlarge
Click in the blank image and load the custom palette (Shift+O). This ensure
that you won't get color distorsions while copying the cleavage to its new container.
Press Ctrl+A to select the whole Cleavage image and then copy it to the clipboard
(Ctrl+C). Click in the blank image and paste the cleavage with Ctrl+E.
Adjust the Cleavage position into the image and press Ctrl+D when you're satisfied
of the result.
Click to enlarge
Now, we've finished with Paint Shop Pro. For safety needs, re-apply the custom
palette. PSP could sometime forget to do it and save it into PCX format with
the Save As ... command. Close all the images and close PSP.
Third Step : DC6 forever
The trickiets part is done now. Copy your pcx into your DC6CON folder. Drag
the file over my dc6item.bat and let dc6con do all the work. If everything is
right, you should get a little dc6 file along in this folder. Rename it to invclvg.dc6.
Copy it into your datagloba/items folder. Open armor.txt and go to the Quilted
Armor row. In the invfile row, change invqlt to invclvg. Save the file and close
your text edition application. Launch Diablo II using the -direct -txt method,
run a game and go buy a Quilted Armor. Normally you could now equip your sexy
Priestess cleavage ;)
Return to Top
Tips
Reallife photographs conversion
When using a reallife photograph to create a new item image, some tricks have
to be known. First don't try to cut out the items off its background. Instead
resize the image right now and apply the custom palette. Then cut-off the item
and correct pixels errors. When resizing, use the Bicubic resample options and
check if every pixels stay fine.
Return to Top
Conclusion
Here we are. Now the Items Gfx Conversions should be easy for anyone of you.
If you got some tips or if you find some errors, feel free to send report to
me.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=155]Knowledge Base - DC6 Item Conversions (by Joel Falcou)[/url]

View File

@ -0,0 +1,61 @@
# D2Mods Knowledge Base: Article 160
# Title: DifficultyLevels.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=160
DifficultyLevels.txt
Written by: Phrozen Heart
Written on: Mon May 14, 2007 10:56 am
Last modified: Mon Mar 11, 2019 3:31 pm
Views: 28761
Description: by Nefarius, Joel Falcou, Jarulf & Foxbat, restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
This file is used for setting some global game parameters that depend on the difficulty levels of the game.
This file has no link with any other .txt, this is just a simple table of parameters.
Name: Difficulty name. it is hardcoded and you cannot add new ones unless you do some Code Edits
ResistPenalty: Resistance penalty in the current difficulty.
DeathExpPenalty: The percentage of experience you lose when you die on this difficulty.
UberCodeOddsNormal: Not Used. Pre 1.07 it was the percentage of low quality, normal, superior and exceptional items dropped omthis difficulty.
UberCodeOddsGood: Not used. Pre 1.07 it was the percentage of magic, rare, set and unique exceptional items dropped on this difficuly.
UltraCodeOddsNormal: Not used and didn't exist pre 1.07.
MonsterSkillBonus: Additional skill points added to monster skills specified in MonStats.txt for this difficulty. It has nothing to do with the missile damage bonus.
MonsterFreezeDivisor - MonsterColdDivisor: This value is a divisor, and so never set it to 0. It applies to the monster freezing length and cold length duration.
AiCurseDivisor- LifeStealDivisor - ManaStealDivisor: These values are divisor and they're used respectively for AI altering states
UniqueDamageBonus- ChampionDamageBonus: Effective percentage of damage and attack rating added to Extra Strong Unique/Minion and Champion monsters. This field is actually a coefficient, as the total bonus output is BonusFromMonUMod/100*ThisField
HireableBossDamagePercent:  This is a percentage of how much damage your mercenaries do to an Act boss.
MonsterCEDamagePercent: Monster Corpse Explosion damage percent limit. Since the monsters HP grows proportionally to the number of players in the game, you can set a cap via this field.
StaticFieldMin: Maximum cap of the monster hit points percentage that can be damaged through Static Field. Setting these columns to 0 will make Static Field work the same way it did in Classic Diablo II.
GambleRare - GambleSet - GambleUnique - GambleUber - GambleUltra: Parameters for gambling. They states the odds to find Rares, Sets, Uniques, Exceptionals and Elite items when gambling. See Appendix A
Appendix A
This small appendix contains Necrolis' useful explanation about how the quality of the gambled item is chosen:
the game rolls Rand(10000), if that number is > the exceptional chance, the item is upgraded to exceptional, then it rolls it again to upgrade to elite (but it can only try to upgrade to elite if it successfully upgraded to exceptional)
then it'll roll Rand(100000), and then goes down the chain till you find a chance you are less than
so if you set the unique column to 100000, you will always get uniques (base and spawn permitting)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=160]Knowledge Base - DifficultyLevels.txt[/url]

View File

@ -0,0 +1,107 @@
# D2Mods Knowledge Base: Article 161
# Title: MonUMod.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=161
MonUMod.txt
Written by: Phrozen Heart
Written on: Fri Jan 12, 2007 5:21 pm
Last modified: Wed Oct 24, 2018 3:24 pm
Views: 18757
Description: by 54x & Red Havoc, restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
OVERVIEW: MonUMod.txt controls the general and special abilites of Champions, Random Unique monsters, SuperUnique monsters as well as their minions (though only in some circumstances).
Warning: this file is tricky, as it contains a table of parameters inside. The last two columns of datas are in fact to be considered as a complete standalone file and have no relations at all with the rest of the text file.
In case you wonder, this is an uguly and illogical way to proceed, so DON'T DO THAT AT HOME when you're making your own databases. Make two separate tables instead!
Related text files
MonUmod.txt is used together with MonType.txt and it is used by SuperUniques.txt.
Columns description
uniquemod: This column only serves as reference and it is not used by any other file. It holds short keywords that describe the modifier of each line, so that you know what you're going to mess with.
NOTE: For a precise description see the SuperUniques.txt file guide, specifically the columns from 'Mod1' to 'Mod3'.
Id: This column is used for the internal Id of the modifier. These Id numbers are to be typed in the columns from 'Mod1' to 'Mod3' of SuperUniques.txt and serve to give bosses their special abilities.
enabled: It is a boolean which states if the modifier is useable in game. 1 enables it, 0 disables it.
version: This field tells if the modifier can be applied to bosses depending on a specific game type. 0 for Classic only, 100 for Expansion.
xfer: It is a boolean which tells the game if it has to display "Minion" under the life bar of the boss' minion life bars. 1 enables it, 0 disables it.
champion: States whether the modifier is only useable by Champion class bosses. 1 for Champion-only, 0 for all kind of bosses.
fPick: Not exactly known. Probably it has to do with grouping the modifiers à la States.txt, for which the same boss cannot have i.e both Lightning Enchanted and Multipl Shots.
exclude1 - exclude2: These two fields can be used to exlude specific monster types from spawning with certain modifiers. They retrieve the 'Type' column from MonType.txt.
A notable example in vanilla are the Sand Leapers, which will never spawn with the Lightning Enchanted modifier.
cpick- cpick(N) - cpick(H): These columns restrict the range of modifiers that can spawn on Champions respectively in Normal, Nightmare and Hell. If empty, the modifier will not appear on Champions.
NOTE: you may add (boss-only) modifiers to champions if you also set their Champion column to 1 and enter a value in their cpick columns. Also, take note that By entering higher numbers you can increase the frequency in which the modifier is used.
Example: if you set cpick for the fanatic modifier to 7 fanatic champions will occur like seven times more often in normal difficulty than possessed champions.
upick - upick(N) - upick(H): Same as above, but for Random Unique Bosses.
fInit: Not read by the game. You can use it as a comment field.
NOTE: The following two are actually composing a parameter table. The column * constant desc is a description of the parameter, while the column 'constants' is the value of that parameter.
constants: This column includes the value that will set general properties of champions, bosses and their minions. The values are described in '*constant desc'. Some parameters have different values per difficulty, while others are global for the 3 difficulties. Here's the content of that table, in a more handy form :
```
constants *constant desc
20 champion chance
100 minion +hp%
75 minion +hp% (N)
50 minion +hp% (H)
200 champion +hp%
150 champion +hp% (N)
100 champion +hp% (H)
300 unique +hp%
200 unique +hp% (N)
100 unique +hp% (H)
75 champion +tohit%
100 champion +dmg%
50 minion +tohit%
100 unique +tohit%
75 minion +dmg% (strong)
150 unique +dmg% (strong)
0 minion +elem min dmg%
33 minion +elem min dmg% (N)
33 minion +elem min dmg% (H)
0 minion +elem max dmg%
50 minion +elem max dmg% (N)
50 minion +elem max dmg% (H)
33 champion +elem min dmg%
33 champion +elem min dmg% (N)
33 champion +elem min dmg% (H)
50 champion +elem max dmg%
50 champion +elem max dmg% (N)
50 champion +elem max dmg% (H)
66 unique +elem min dmg%
66 unique +elem min dmg% (N)
66 unique +elem min dmg% (H)
100 unique +elem max dmg%
100 unique +elem max dmg% (N)
100 unique +elem max dmg% (H)
```
*eol: End Of Line.
WARNING: Do not remove this column ! Its purpose is to ensure the last column of the tabulated text files are always filled. Be sure that all rows of this column are filled with a value.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=161]Knowledge Base - MonUMod.txt[/url]

View File

@ -0,0 +1,118 @@
# D2Mods Knowledge Base: Article 162
# Title: SuperUniques.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=162
SuperUniques.txt
Written by: Phrozen Heart
Written on: Thu Sep 11, 2008 5:05 pm
Last modified: Fri Jan 18, 2019 7:56 pm
Views: 25561
Description: by 54x & Red Havoc, Restyled and expanded by Ogodei
Categories: File Guides (1.10 - 1.14)
OVERVIEW : This file is used to define Superunique monsters and their properties. Superunique monsters are boss monsters which always appear at the same places and which always have the same base special abilities with the addition of one or two extra ones per difficulty (Nightmare provides one extra ability, Hell provides two). Notable examples are enemies such as Corpsefire, Pindleskin or Nihlathak.
RELATED .TXT FILES : This file is used in conjunction with the following texts:
MonSounds.txt
MonStats.txt
TreasureClassEx.txt
MonUMod.txt
This file is used by MonPreset.txt.
Superunique: it is the ID of the SuperUnique Monster. Each SuperUnique Monster must be use a different ID. It also serves as the string to use in the field 'Place' of MonPreset.txt.
Name: The string key for this SuperUnique which must be retrieved from a .TBL file.
Class: This column defines the base monster type of the SuperUnique, taken by the "Id" column in MonStats.txt.
hcIdx: It is the "hardcoded index". Vanilla SuperUniques in the game ranges from 0 to 65. Some of them have some hardcoded stuffs attached.
NOTE: It is also possible to create new SuperUniques with hardcoded stuff attached. To do this, you can use a hcIx from 0 to 65.
Example A: If you create a new SuperUnique with a hcIdx of 42 (Shenk the Overseer) then whatever its Class, this SuperUnique will have 20 Enslaved as minions (exactly like the vanilla Shenk, and in spite of NOT being Shenk).
Example B: If you want a simple new SuperUnique, you must use a hcIdx greater than 65, because greater indexes don't exist in the code and therefore your new boss won't have anything special attached.
MonSound: This column forces a particular SuperUniques to use a special set of sounds for attacks, taunts, death etc.
The Countess is a clear and noticeable example of this. The MonSound set is - as the name implies - taken from MonSounds.txt.
Mod1 - Mod3: These three columns assign special abilities so SuperUnique monsters such as "Fire Enchanted" or "Stone Skin". The parameters that you need to insert here are actually the Id's corresponding to the properties in MonUMod.txt. Here is the list of available properties.
```
0. None
1. Inits the random name seed, automatically added to monster, you don't need to add this UMod.
2. Hit Point bonus which is automatically added to the monster. You don't really need to manually add this UMod
3. Increases the light radius and picks a random color for it (bugged in v1.10+).
4. Increases the monster level, resulting in higher damage.
5. Extra Strong : increases physical damage done by boss.
6. Extra Fast : faster walk / run and attack speed (Although the increased attack speed isn't added in newer versions . . .)
7. Cursed : randomly cast Amplify Damage when hitting
8. Magic Resist : +50% resistance against Elemental attacks (Fire, Cold, Lightning and Poison)
9. Fire Enchanted : additional fire damage and +50% fire resistance.
10. When killed, release a poisonous cloud, like the Mummies in Act 2.
11. Corpse will spawn little white maggots (like Duriel).
12. Works for Bloodraven only, and seems to have something to do with her Death sequence.
13. Ignore your Armor Class and nearly always hit you.
14. It should add damage to its minions
15. When killed, all his minions die immediately as well.
16. Adds base champion modifiers [color=#0040FF][b](champions only)[/b][/color]
17. Lightning Enchanted : additional lightning damage, +50% lightning resistance and release Charged Bolts when hit.
18. Cold Enchanted : additional cold damage, +50% cold resistance, and releases a Frost Nova upon death
19. Assigns extra damage to hireling attacks, relic from pre-lod, causes bugged damage.
20. Releases Charged Bolts when hit, like the Scarabs in act 2.
21. Present in the code, but it seems to have no effect.
22. Has to do with quests, but is non-functional for Superuniques which aren´t in relation to a quest.
23. Has a poison aura that poisons you when you're approaching him, adds poison damage to attack.
24. Code present, but untested in v1.10+, does something else now.
25. Mana Burn: steals mana from you and heals itself when hitting. Adds magic resistance.
26. TeleHeal : randomly warps around when attacked and heals itself.
27. Spectral Hit: deals random elemental damage when hitting
28. Stone Skin: +80% physical damage resistance, increases defense
29. Multiple Shots : Ranged attackers shoots several missiles at once.
30. Aura Enchanted: Assigns a random offensive aura (aside from Thorns, Sanctuary and Concentration) to the SuperUnique
31. Explodes in a Corpse Explosion when killed.
32. Explodeswith a fiery flash when killed (Visual effect only).
33. Explode and chills you when killed (like suicide minions). It heavily reduces the Boss' Hit Points
34. Self-resurrect effect for Reanimate Horde, bugged on other units.
35. Shatter into Ice pieces when killed, no corpse remains.
36. Adds physical resistance and reduces movement speed(used for Champions only)
37. Alters champion stats (used for Champions only)
38. Champion cannot be cursed (used for Champions only)
39. Alters champion stats (used for Champions only)
40. Releases a painworm when killed, but display is very buggy.
41. Code present, but has no effect in-game, probably due to bugs
42. Releases a Nova when killed, but display is bugged.
```
MinGrp - MaxGrp: These two fields control the Minimum and Maximum amount of minions which will be spawned along with the SuperUnique. If those values differ, the game will roll a random number within the minimum and the maximum you've set.
EClass: a boolean which ranges from 0 to 1 respectively for Classic and Expansion.
AutoPos: it states whether the SuperUnique will be placed within a radius from his original position - defined by the .ds1 map file, or not. A value of 0 means that the boss will spawn in a random position within a large radius from its actual position on the .ds1 file, while a value of 1 will make it spawn exactly where expected.
Stacks Whenever or not this superunique can spawn more then once in the same game (à la 'nolimit' in UniqueItems.txt). If it can , the value should be 1, if it can´t the value is 0. Updated by Nefarius
Replaceable: Unknown.
TC - TC(N) - TC(H): Treasure Classes for the 3 Difficulties. These columns list the treasureclass that is valid if this boss is killed and drops something. These fields must contain an index taken from the "TreasureClass" column in TreasureClassEx.txt (Expansion) or TreasureClass (Classic).
Utrans- Utrans(N) - Utrans(H): These fields dictate which RandTransform.dat color index the superunique will use respectively in Normal, Nightmare and Hell mode.
*eol: End Of Line.
WARNING: Do not remove this column ! Its purpose is to ensure the last column of the tabulated text files are always filled.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=162]Knowledge Base - SuperUniques.txt[/url]

View File

@ -0,0 +1,467 @@
# D2Mods Knowledge Base: Article 171
# Title: Animations Conversion Tutorial
# URL: https://d2mods.info/forum/kb/viewarticle?a=171
Animations Conversion Tutorial
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 5:05 pm
Last modified: Sat Jan 06, 2018 2:39 am
Views: 8131
Description: by Nefarius
Categories: Tutorials (1.09x)
Acknowledgements:
Thx go to TeknoKyo for clearing me up with some of the stuff
and giving me some more accurate infos, and to Apocalypse Demon
for spelling corrections.
Animations Conversions
1.A Getting the Animations
Lets say that you want to replace the foul crows with the hellfire
torch ants, you will need to get the animations of the torch
ants youwill have to download Cv5. It crashes pretty often but
still, it is the only tool to use. Open hellfire.mpq with cv5
(in you hellfire folder or on your hellfire cd) and go to the
monsters folder in it. You will see many sub folders. Go down
to the antworm folder and open it. Take to note that diablo 1
and hellfire dont use the same mode code like d2 and d2x, the
mode code used in d1 and hellfire is the following:
A - Attack
D - Death
H - Get hit
N - Neutral (standing)
S - Skill
W - Walk
As you probably saw there is no corpse, since d1 and hellfire
use the last frame (for the direction) in the D mode as the corpse.The
animations of the torch ant have the following frames:
A - 96
D - 160
H - 48
N - 112
W - 96
Save all of these animations as
ANIMATED .GIF. To save you ALOT of work later, make sure to ALWAYS
load the diablo palette while saving diablo 1 and hellfire animations.
Now you will have to get a decent gif animator, trash like ms
gif animator won't do the job here so get something that is about
as good as jasc animation shop pro which comes with paintshop
pro. Now you will notice that the animations are not ordered
like the D2 animations. The d1 animations are ordered in the
following way: down, down left, left, left up, up, right up,
right, right down while in d2 the animations are ordered as left
down, left up, right up, right down, down, left, up, right. Cut
and paste the
frames until they are ordered like in the d2 animations. Remember
that every directions contains /8 frames of the total frame count
so an animation with 128 frames has 16 frames per direction.
Now change the background color to #AAAAAA so that your animations
won't have a black background. Now repeat this for all the animations.
Now you will have to make a corpse animation, which is easy.
Open the D(death) animation with the gif animator, remove all
the frames
except the LAST frames for each direction and save it as C. Now
to the harder part. Open up d2data.mpq and browse with cv5 to
data\global\monsters\bk\tr\. You will see ALOT of animations.
These are all the foul crow animations so make a list like the
one below because you will find it VERY helpful later on.
A1 88
DD 8
DT 184
GH 40
NU 88
WL 64
Now, as you notice the frames don't match. What you will have
to do is see which part has more frames then the foul crow and
you will end up with this:
nu bk=88 ta=112 and A1 bk=88 ta=96, if we will just go into
the next step the game WILL crash so you will have to first find
a cof file that has more frames than 112. To make your search
easy goto the vulture demon folder (VD) and copy the VDNUHTH.cof
file, rename it BKNUHTH.cof and put it in the BK folder. Do the
same with VDA1HTH.cof and rename it to BKA1HTH.cof and put in
BK folder. (if you dont know why I say put it in without reminding
mpq2k or stuff like this, read the -direct -txt guide you can
find on the phrozenkeep). This problem is fixed for now but now
we get to the harder part. You will have to save the animations
from hellfire as .dccs AND make the offsets match. To do this
select the
bktrlitnuhth.dcc file with cv5 and save it as .dcc. The window
that will appear now will show you alot of slots for offsets.
Copy the numbers in the first one and then save the image but
as .gif, open the gif with a graphic tool and write down it's
width and height. the offsets are the location of the animation
on the play screen. If they don't match, the animation will appear
to float or will not be
targetable and will therefore look screwed up! The best way I
found to get offsets is to do original offsets +new width-old
width which will be like this: If the original offset 20x 20y
and size is 100x100px, the
new animation is 150x150px, the offsets will be 70x 70y. It is
enough to get one offset for ALL the animations (thx to foxbat
for clearing this up that you need only 2 matching offset instead
of 16 ) this is only
correct for d1 and hellfire monsters though! Now that you have
the offset, save the edited .gifs as .dcc with cv5, set directions
to 8, enter the offsets in the 16 slots and then click the save
button on
the .dcc panel. After this is done we can start the hex editing
part. Just before this I will add some useful data about x/y
systems and d2 modes.
The directions in x/y for offsets:
UP= -Y
DOWN= +Y
LEFT= -X
RIGHT= +X
As you probably noticed the MODES for d2 are quite different
and there are much more graphics per monster. Here is a complete
table to explain body parts, modes and sub modes:
HD - head
TR - torso (or entire monster)
LG - legs
RA - right arm
LA - left arm
RH - right hand
LH - left hand
SH - shoulders
S1 - overlay 1
S2 - overlay 2
S3 - overlay 3
S4 - overlay 4
S5 - overlay 5
S6 - overlay 6
S7 - overlay 7
S8 - overlay 8
Each might have sub modes:
DT - death
NU - neutral
WL - walk
GH - gethit
A1 - attack 1
A2 - attack 2
BL - block
SC - cast
S1 - skill 1
S2 - skill 2
S3 - skill 3
S4 - skill 4
DD - corpse
KB - knock back
SQ - skill sequence
RN - run
In case that your animation is made off more then 1 body part
and has overlays, you can make 1x1 px animations with #AAAAAA
color in the appropriate length to just make those disappear.
Now to the harder part, this editing might sound scary for
many of the people that read this but it is easy. First I'll
explain the difference between hex and dec numbers: decimal has
10 numbers from the word
DECI 0,1,2,3,4,5,6,7,8,9
Hexadecimal has 16 numbers from the words HEXA and DECI which
means 6 and 10. 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F the smallest
number is 00 while the biggest is FF (255). Now remember when
I told you to write down the frame counts:
A - 96
D - 160
H - 48
N - 112
W - 96
C - 8
A1 88
DD 8
DT 184
GH 40
NU 88
WL 64
Now we will have to divide all these by 8 which will be:
A - 12
D - 20
H - 6
N - 14
W - 12
C - 1
A1 11
DD 1
DT 23
GH 5
NU 11
WL 8
Those that match in this case DD and C will be removed from
this list since there is no need to hex edit something that matches.
(DUH!)
Now we will need to convert all of these to hex:
A - 0C
D - 14
H - 06
N - 0E
W - 0C
A1 0B
DT 17
GH 05
NU 0B
WL 08
As well as listing .cofs which will HELP alot while searching
in the files later on with your hex editor
A1/A = BKA1HTH
DT/D = BKDTHTH
GH/H = BKGHHTH
NU/N = BKNUHTH
WL/W = BKWLHTH
Now extract animdata.d2 from your d2exp.mpq and load it into
your hex editor. I use Hex Workshop. In the editor search for
the text strings of the .cof names from above. (eg: search for
BKA1HTH now you will see somthing like this):
424B 4131 4854 4800 *0B00* 0000 0401 0000
0000 0000 0000 0100 0000 0000 0000 0000
The frame count is stored in the byte marked with ** as you
see from the converting before A1 has 0B frames and what you
want to replace has 0C frames so edit that byte from 0B00 ro
0C00 repeat this for every animation then save animdata.d2 and
put it in data\global. Now it's time to rename your new .dcc
files so they can be used to replace the old ones. Rename the
A.dcc to bktrlita1hth.dcc the D.dcc to bktrlitdthth.dcc and so
on for the rest (H,N,W,C) and put these into data\global\monsters\bk\tr\
and put the .cofs into data\global\monsters\bk\cof. Now you can
hex edit a palshift.dat file
if you want to change the monsters color to what ever you like
or use what they have now. Since this tutorial deals with graphics
and not sounds I'll add a short but not full sound par. To use
the hellbat sounds go to the monsters/newsfx folder and get the
hellbat sounds, open them in a sfx program and change their type
to 24000HZ 16Bit STEREO and put them in the appropriate folder.
Addendum:
Since first writing this tutorial, I found a very easy way
to find offsets:
WIDTH - (WIDTH-(WIDTH/2)
so if width is 100 the x offset will be -50
For example: 100-(100-50) = -50
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=171]Knowledge Base - Animations Conversion Tutorial[/url]

View File

@ -0,0 +1,20 @@
# D2Mods Knowledge Base: Article 178
# Title: Making D2 palettes
# URL: https://d2mods.info/forum/kb/viewarticle?a=178
Making D2 palettes
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 5:17 pm
Views: 5527
Description: by Phrozen Heart
Categories: Tutorials (1.09x)
It's pretty easy really, so first up, make sure your image is set at 256 colors. All you need to do now is edit the palette colors and change colors 224 through 255 to bright magenta (R: 255, G: 0, B:255) then save the palette file.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=178]Knowledge Base - Making D2 palettes[/url]

View File

@ -0,0 +1,70 @@
# D2Mods Knowledge Base: Article 179
# Title: DC6 Files
# URL: https://d2mods.info/forum/kb/viewarticle?a=179
DC6 Files
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 5:18 pm
Views: 8258
Description: by Digibo
Categories: Tutorials (1.09x)
Many people have asked me(and other people) how to add items in Diablo 2.
In this tutorial I won't explain how to add new items,just new graphics for the items.
1.Tools
For my graphics I make .pcx files and convert them in .dc6. At http://www.d2mods.com
you can find Diablo 1 graphics in .pcx format.I used some of the in my mod because they
are very easy to convert and look great.You can start from there then try making your own
graphics.To convert the .pcx in .dc6 you need DC6CON,you can find it at http://www.d2mods.com.
For editing the .pcx files(you will need to edit them even if they are the complete D1 graphics) I use
Paint Shop Pro 7.You can use any other program able to edit .pcx files.The last thing you need is the palette.
On my page you will find the palette I use for Paint Shop Pro 7.If you have other version of PSP or you use
another program you can make your own palette - just follow the tutorial at http://www.d2mods.com
2.Prepaering the picture
I repeat - I use PSP to edit the pics and I can't help you with other programs.
First open the picture and apply the palette(you may need switching to 256 colors).If you are making
your own pictures first apply the palette then start making the pic.Now make color 0 transparent
(color 0 - Pure Black R-G-B 0-0-0).If there are parts of the background which don't become transparent just
choose Pure Black and correct them.It is possible that some black parts of the picture to become transparent.
Make them a color near the black but not Pure Black.When changing the palette some parts of the picture may become
strange so you will need to fix them.After everything is ready save the picture.
3.Converting
Now use DC6CON to convert the picture.Use 'dc6con [filename] -transcol 0'.You will have the dc6 now.
You may want to make the dc6 back to pcx to check is everything ok.If the new pcx looks ok the dc6 is ready.
4.Finishing
Rename the dc6 to inv***.dc6(where *** is what you want).I think that D2 won't be able to read the graphic if
there are more than 3 characters after 'inv'.Now use mpq2k to put the file in your patch_d2.mpq
Find a good tutorial about weapons.txt or armor.txt and make a new item with the new graphic.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=179]Knowledge Base - DC6 Files[/url]

View File

@ -0,0 +1,272 @@
# D2Mods Knowledge Base: Article 180
# Title: DC6 Item Conversions
# URL: https://d2mods.info/forum/kb/viewarticle?a=180
DC6 Item Conversions
Written by: Phrozen Heart
Written on: Wed Dec 03, 2003 12:31 am
Views: 7530
Description: by Joel Falcou
Categories: Tutorials (1.09x)
Getting Started ...
While moding your favorite Diablo II version, you'll surely feel the urge
to give it a brand new look. If the simplest way is to change the various screen
background, one of the most appealing temptation is to modify the old look of
our beloved items.
First we gonna talk about the required tools. Basically you need an image
editing application that can handle the most common format like BMP, JPG and
obligatory PCX format. MS Paint could be enough but you could grab a free trial
version of the allmighty Paint Shop Pro at the
JASC website.
Then you'll need the modified version of DC6CON by Paul Siramy, that you could
grab directly at The Phrozenkeep File Center.
It's a MS-DOS based program that should work on every machines.
When you get ready, hang on to the next Section : Mastering the Tools.
Return to Top
Mastering the Tools
Now you have all the forementioned tools, we gonna take a look at the functions
we'll need to know.
Paint Shop Pro :
These are the following functions you'll use often. Some advanced users
may use others, and I encourage them to send me their tricks. I don't mind
to be omnipotent with this one ;)
* Load/Save : Obvious isn't it but you get to know how to change
the output file format by using the combo box of the Save
As function.
Shortcut : Ctrl+O/F12
* Resize : This function will help you to get your image into the
proper size. There are many options in this function that we'll see
later.
Shortcut : Shift + S
* Load Palette : The bread 'n butter of us. With this one, you'll easily
apply the correct
palette to your image. Like the Resize function, the Load Palette function
is a bit complex and will be described later.
Shortcut : Shift + O
Modified DC6CON :
The easy one :) Paul has done a good job on this one. Without getting into
the details, there is a little bat file
that will simplify your life. Download it, I'll use it from now.
Return to Top
Finding Originals
It's often the trickiest part :).
Personnaly I use my friend Google to find out some pictures or artwork that
look like the items I want to convert. The Medeival - Fantasy - Weapons - Armor
keywords in the images seeking sections could do miracles.
However, the major sources of new items are the other RPG. Without any order,
the inventory images from Darkstone, Diablo/Hellfire, Prince of Qin, Nox, Throne
of Darkness, the Baldur's Gate series and alike and many more is perfectly suitable.
Don't hesitate to crawl over fan sites, strategy pages and the like.
Return to Top
The Conversion Process
Here we'll cover the step-by-step process of converting an item gfx to dc6
format. For this one I'll use an original item from Planescape Torment : the
Godless Priestess Cleavage. Download
the needed files and let's start !!
First Step : Correcting colors
Open the original BMP file with Paint Shop Pro.
Click to enlarge.
As you see the background is a bit green and some shadows don't look good.
Use the Magic Wand to remove the green background and the obsolete shadows.
You're Cleavage should now look like this :
Click to enlarge.
Now the Cleavage looks fine, open the custom palette that comes with this
tutorial package. Select the custom.pal file, and check that the palette is
applied by using the 'Nearest color matching'.
Click to enlarge.
When you have selected the palette, click on the color box on
the right of the screen. This will open the palette screen where you'll select
the index 0 color. With the custom palette, it looks bright blue. It's intentional.
The actual tin' of this color isn't important. The game use the Palette Index
to generate transparency so if you want to have a purple or green background,
it's up to you BUT its index MUST BE 0.
Click to enlarge
Select the Flood fill tools and fill all the background with your new color.
When the background is a bit tricky to access (fur items, hairs etc ...), use
the Color Replacer to replace all the old background color with the new one.
Your item should now look ike this.
Click to enlarge
Now you get the proper colors on your items, hope to the next step ...
Second Step : Size does matter
All inventory graphics in Diablo II follow a strict pattern. Both width and
height are aligned on a 28 pixels limit. If you look closely to your inventory
screen in-game, you'll see that it's composed of a bunch of little square. Each
of this square is precisely 28x28 pixels. So any items must be composed of an
entire number of such square.
Now, look at your cleavage item. Its size is 34x63. So if you look at a regular
Diablo II armor, its size is 56x84. Yes, you guess it, it's 2x3 squares. So,
as our cleavage fits in these limits, you'll just merge it with a blank image.
If the item was bigger than 56x84, you should use the Resize function in 'Pixel
Reduce' mode. If you use bilinear or bicubic resample, you'll create blurry
pixels that will not fit right with the palette.
With Paint Shop Pro, create a new image (Ctrl+N). Make it 56 pixels wide and
84 pixels high. Turn it on 256 colors and click OK. You should get now two image
: the blank one and the cleavage one.
Click to enlarge
Click in the blank image and load the custom palette (Shift+O). This ensure
that you won't get color distorsions while copying the cleavage to its new container.
Press Ctrl+A to select the whole Cleavage image and then copy it to the clipboard
(Ctrl+C). Click in the blank image and paste the cleavage with Ctrl+E.
Adjust the Cleavage position into the image and press Ctrl+D when you're satisfied
of the result.
Click to enlarge
Now, we've finished with Paint Shop Pro. For safety needs, re-apply the custom
palette. PSP could sometime forget to do it and save it into PCX format with
the Save As ... command. Close all the images and close PSP.
Third Step : DC6 forever
The trickiets part is done now. Copy your pcx into your DC6CON folder. Drag
the file over my dc6item.bat and let dc6con do all the work. If everything is
right, you should get a little dc6 file along in this folder. Rename it to invclvg.dc6.
Copy it into your data\globa\/items folder. Open armor.txt and go to the Quilted
Armor row. In the invfile row, change invqlt to invclvg. Save the file and close
your text edition application. Launch Diablo II using the -direct -txt method,
run a game and go buy a Quilted Armor. Normally you could now equip your sexy
Priestess cleavage ;)
Return to Top
Tips
Reallife photographs conversion
When using a reallife photograph to create a new item image, some tricks have
to be known. First don't try to cut out the items off its background. Instead
resize the image right now and apply the custom palette. Then cut-off the item
and correct pixels errors. When resizing, use the Bicubic resample options and
check if every pixels stay fine.
Return to Top
Conclusion
Here we are. Now the Items Gfx Conversions should be easy for anyone of you.
If you got some tips or if you find some errors, feel free to send report to
me.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=180]Knowledge Base - DC6 Item Conversions[/url]

View File

@ -0,0 +1,401 @@
# D2Mods Knowledge Base: Article 191
# Title: Adding New Items To Armor.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=191
Adding New Items To Armor.txt
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 5:32 pm
Last modified: Sat Jan 06, 2018 2:15 am
Views: 11403
Description: by 54x
Categories: Tutorials (1.09x)
OK, there are two ways to do this: either you can copy
an item, and change the attributes you feel confident
with, or you can start totally from scratch. I'm going
to deal with the second one, because it will answer a
lot more questions.
I'll also be telling you about columns by their names
and excel letter assignments, because with excel you
can skip to any column you know the letter of with
that nifty little box in the topleft corner.
The first column here is purely cosmetic, however
you'll want to put the name you have in string.tbl
here, too, so you know what your item is.
Next to it is version. If for any reason you'd like to
disable an item, put 1 or 100 in this column. You can
enable x-pack items in CD2 by changing their versions
to 0.
Compactsave is simply set to 0 for everything. I don't
think armor use this, and I have no idea why it is
still included in the 1.08 texts...
Rarity gives a little control over the frequency of
the item's drop, but not much. It is mostly controlled
in treasureclass. Only excessively high numbers will
have an effect here (notice gems have double-digit
numbers, and they drop less frequently)
Spawnable is always set to 1 in 1.08- however if you
simply copied a row to make an exceptional version of
one of you items, set it to 0 to save yourself the
work of editing shopkeeper entries.
Minac and Maxac are what control armor DR. If set to
the same figure your armor will ALWAYS generate that
amount of defense, and if set differently then the
formula to find out the range is: Maxac - Minac - 1
for CD2, and Maxac - Minac for D2X.
Absorbs, I believe is subtracted from monster AR...
not sure though, it does have some non-DR defensive
value though
Speed controls how this armor slows the character.
You'll notice most heavy armors have 10, and that
mails have 5. You can make an armor speed someone up
by putting -5 or -10 or negative anything here.
Reqstr is how many points in strength you need to
equip the armor.
Block is only for shields, and is the block % in CD2
without class modifiers (if they look too small, this
is why), and is the block % in D2X without class
modifiers and without accounting for level and dex.
Durability and nodurability explain themselves.
Setting nodurability to 0 allows durability, and
setting it to one will make the item indestructable.
Setting durability to won't work without setting
nodurability to 1.
Level is the itemlevel, used for determining what sort
of mods it should get and whether monsters should
realistically be able to drop this item.
level requirement, cost, and gamble cost, should all
explain themselves.
Code is VERY important. It is the source of most of
the bugs when you first try to make a new item. Change
this to an UNUSED code. It may not be used in
misc.txt, armor.txt, or weapons.txt. Exceptional and
Elite items as a general rule either have x, u, or a
number in front of their code. You will need to make
an entry in patchstring.tbl with the same name as this
code, and then put your item's name in it, if you want
to avoid: 'not xlated call ken' errors.
Magic level is currently only set on circlets - I
believe it makes the level of affixes on the item a
bit more concrete.
Auto prefix is covered in detail in the exclusive item
tutorial. This column makes the game pick an affix
from automagic.txt, with the group number you put in
this column, every time the item is generated. This
could make for interesting items, such as elf/drow
chainmail that gains/loses defense in the night
respectively...
alternategfx is what graphics the game uses on your
character to display an item. You CAN'T add a new code
in here at the moment. You will have to copy this from
an item you like the look of. Don't copy it from the
expansion columns if your mod is for CD2. It doesn't
contain those graphics.
Openbetagfx does nothing. It's a reference column.
Fill it if you like
Normal, uber, and ultra codes need to be filled in the
same for the normal, exceptional, and elite versions
of items. For skull caps they are skp, xkp, and ukp
respectively- if the x and u codes you want are taken,
use 1-0 instead (note: blizzard have avoided using 0
in their text files for codes, so if you want to be
SURE a code won't conflict, use a 0 in front of it)
Note that these codes will need to match an actual
item. I don't know what will happen if you leave them
blank, but if you point to a version 1/100 item the
item won't upgrade.
Spelloffset is another 'set to 0 and ignore' column,
as far as I know.
Component should be copied from an item of the same
type. If you're making a helm, use the same entry as
for one of the helms.
Invwidth and invheight are the size of an item in your
inventory. Long staves are 1 width and 4 height, for
example.
Hasinv is set to 1 for items with sockets, 0 for those
without. I'd follow this rule.
Gemsockets is the number of sockets this particular
item can have.
Gemapplytype controls whether the item uses helm,
shield, or weapon socketing affects. (helm and armor
use the same type, dispite getting different listings
on gem descriptions)
Flippyfile is the graphic this item has when dropping.
I'm not sure if we can make new ones at the moment,
but the codes you put in this column match the files
that look like: 'flpltp.dc6.'
Invfile is the filename of the item graphics to use.
If you've inserted your own, use it's file name, and
insert the .dc6 file to data\global\items\.
Uniqueinvfile and Setinvfile work the same as invfile,
except they display only when they item is set or
unique.
The next six columns are for body armors only- press
'del' in these columns if you are making an item that
is not a body armor. Otherwise, 0 is the 'nude'
graphic for this part of the character, 2 is the fully
decked out one. You'll notice that in D2 each
combination isn't unique. You can modify it so that
you can tell what armor someone is wearing by their
ingame graphics, if you want
The next file columns should be set to 0. They were
probably kept from an early stage in programming when
weapons.txt and armor.txt were the same file.
Type should match one of the ones in itemtypes.txt. If
you don't want to use a new one, simply go to a
similar item that you used for your 'component'
column, and copy it's entry.
Sound is the sound the item makes when it is moved in
your inventory.
Unique should be set to 0. It is only used for quest
items, or items, for some odd reason, you would like
to ONLY show up as unique.
Not sure if transperent does anything. Set it to 1 if
you'd like to experiment. Otherwise simply zero it and
ignore it.
transtbl is set to 5. Do this, then ignore it
Quivered was inherited from weapons.txt. Set to 0 and
ignore.
Lightradius COULD be used to make this item give you a
larger light radius, without it listing this quality.
Set it to 0 unless you want to make some cool
always-glowing item
Belt is used ONLY for belt types (or another itemtype
mimicing belts), and refers to a row in belts.txt. Set
this to the same as the belt you'd like to mimic the
capacity of.
Quest and missiletype can be set to 0 and ingored.
Durwarning is when the armor indicated shows up,
telling the player their armor is damaged.
qntwarning is set to 0 and ignored in armor.txt.
mindam and maxdam are for shields. They control smite
damage.
Set gemoffset to 0.
Bitfield should mimic a similar item. I have no idea
what it does, but it seems to vary.
The next million columns control how items appear at
NPCs. NPCmin and NPCmax control how many
normal/superior/damaged/socketed items show up,
NPCmagmin and NPCmagmax control how many magic ones
show up. If you are adding a lot of items, I suggest
setting the min columns for every item to 0, thus
NEVER allowing the shopkeepers to be so full they
crash the game.
I just set NPCmaglevel to 1 if the item is sold, 255
if it isn't. I'm not sure if changing it otherwise
will do much.
Sourceart and Gameart ignored. Press 'del' in them if
you accidentally add something.
Transform and invtrans have something to do with how
the game processes the graphics files. Mimic a similar
item for this.
Skipname should be set to 0. This may give you bugs if
you set it to 1.
Nightmareupgrade and Hellupgrade will replace this
item with another at vendors in nightmare and hell. So
if you want to make gambling in higher difficulties
obsolete, set these to it's exceptional and elite
codes
Mindam and Maxdam here control smite damage. I'm not
sure which one is the one that is read, so set them
both.
Nameable is whether the naming quest reward in D2X can
be used on this item.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=191]Knowledge Base - Adding New Items To Armor.txt[/url]

View File

@ -0,0 +1,160 @@
# D2Mods Knowledge Base: Article 217
# Title: String Tables and Enquettar
# URL: https://d2mods.info/forum/kb/viewarticle?a=217
String Tables and Enquettar
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 11:50 pm
Views: 7892
Description: by Rana Loreus
Categories: Tutorials (1.09x)
What is a string?
'String' is a computer jargon which basically means a collection of
'characters'. A 'Character' is computer-speak for any symbols on the
keyboard, and more. Hence, a sentence is a string for it is a
collection of alphabets.
When
you modify any strings in any of .txt files, you are heading towards
trouble. (Some examples of such strings include items' names, suffixes'
names and so on). For your changes to take effect without crashing the
game, you will also need to modify the string.tbl file as well.
What's in the string.tbl file?
Imagine a gigantic table divided into 2 columns. The first column holds
a 'code', and the second column holds a string. For example: Code String skp Skull Cap xkp Sallet The Stone of Jordan The Stone of Jordan
The
'code' column is known as the 'key', and each key represents a full
text string. Hence, the key 'skp' represents 'Skull Cap' and the key
'The Stone of Jordan' represents the text string 'The Stone of Jordan'.
Basically,
the string.tbl file holds such a big table -- it includes every strings
used in the game and their respective keys. The keys are used in
various 'names' columns of the .txt files that you have extracted. If
you change the value of a key, you will change the string that will
appear in the game.
Confused?
Here's an example. From the table, we know that the 'skp' key
represents the string 'Skull Cap'. If we change 'Skull Cap' to 'Gold
Cap', and if there is an armour with the name 'skp', it will become a
Gold Cap. Likewise, if we change 'The Stone of Jordan' key to 'The
Stone of Loreus', wherever 'The Stone of Jordan' appears in
UniqueItems.txt, the game will display 'The Stone of Loreus'.
Hint:For
those who does programming, imagine this whole table to be one big
array. The keys are just like variables, each keys can store a string.
If you want to display a string, you just put in the key, and the
string stored inside it will appear in the game.
How do change string.tbl
It's all right if you don't understand the concept of keys and strings, just as long you get what you want...
To
change string.tbl, you will need a program called Enquettar. However,
this program is written in Perl, so you will need a Perl interperter to
get it working. I recommend the Indigo Perl, and it's worth the hefty 7 megabytes download.
The
doucmentation for using Enquettar can be gotten at the website, so this
is just an add-on to it. For every new string you want to be in the
game, you need to provide a key for it. Any key will do, but take care
that it is not already use. For names of items, suffixes and prefixes,
the key and the actual text must be the same. You will know more about
this in the specific tutorials
How do _really_ use Enquettar
Using
Enquettar may be frustrating because it is a command-line program and
you will need Perl to operate it. Here are some guidelines and tips to
help you:
* Make sure Perl is working. Go to DOS, type 'Perl' and hit . If all you get is 'Bad Command or File Name' then Perl is not installed correctly. Check your Perl doucmentation.
* Enquettar
requires two components to work its magic -- a string.tbl file and a
text file containing all the changes/additions to the string.tbl.
* The command line execution for Enquettar goes as: perl Enquettar.pl string.tbl StringChanges.txt > new.tbl
* In the above example, new.tbl is the modified string.tbl with all your changes and additions. Add it as string.tbl into your patch_d2.mpq.
Where StringChanges.txt is the text file containing all the changes and additions.
* To change a keycode or item code, use the c command. It goes as c [keycode] ['string'] [new keycode] ['string'].
* The Most Common Form of Changes That You Will Make: To change a string that a keycode represents:
c 'skp' '' 'skp' 'Baseball Cap' - The itemcode 'skp' now displays 'Baseball Cap'
* Adding new strings is done with the a command, and it goes like this:a [new keycode] [new string]
* The Most Common Form of Addition That You Will Make: Adding a unqiue item
a 'The Sword of Friendship' 'The Sword of Friendship'
Adding a new base item
a 'eem' 'Eternal Mail'
Adding a new suffix/prefix
a 'of Myths' 'of Myths'
*
Play-test your strings. Test them with a passion. Strings are often the
main villians which cause your MOD to bomb out with an assertion error.
* IMPORTANT:
Spacing counts in strings.tbl! Leading or trailing spaces (spaces
before or after the string) does counts. Make sure your strings match!
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=217]Knowledge Base - String Tables and Enquettar[/url]

View File

@ -0,0 +1,235 @@
# D2Mods Knowledge Base: Article 221
# Title: Armor.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=221
Armor.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 6:59 pm
Last modified: Sat Jan 06, 2018 2:40 am
Views: 7756
Description: by Nefarius
Categories: File Guides (1.09x)
name - This has no function, is a comment field.
version - 0=Classic D2, 100=Expansion (A item set to 100 here cannot be
generated in classic d2).
compactsave - Had to do with save files for smaller filesize, unknown if it
still has a function.
rarity - The higher, the rarer, It has a function, but only very high numbers
will show any kind of effect (as most is controled by TCs)
spawnable - 1=can be sold by NPCs, 0=can never be sold by NPCs (even if you make
them sell it thru the vendor columns)
minac - minium ac (cannot be negative, do not exceed 1024, internal limit for
base ac)
maxac - maximum ac (cannot be negative, do not exceed 1024, internal limit for
base ac)
absorbs - damage absorbation (probably like damage reduced by x) (unknown if it
really works)
speed - speed reduction (armor weight) (the higher, the slower you run) (setting
it to -5 -10 etc might make you faster, thought untested)
reqstr - Required Strength 0-255 (if you exceed 255 it will restart at 0 aka 256
is 1)
block - chance to block.
durability - base durability (255 is maximum, you can set higher values, but you
will need to repair the item when ever you enter a new game)
nodurability - 1=indestructible, 0=use durability
level - base item level (aka a monster with a mlvl of 20 cannot drop a lvl30
armor for eg, used by the 'armo#' preset TCs)
levelreq - level reqirement (i dont think i need to explain this)
cost - base cost (if you want this to be the actual cost edit itemtypes.txt)
gamblecost - no effect, except for items like rings and amulets which are preset
to be gambled in the dlls.
code - the code used for this item alphanumeric code with 3 letters/numbers
(capital letters are not considered identical to small letters aka AAA is not
the same as aaa)
magic lvl - additional magic level when finding the item aka: If you gamble at
lvl10 you can get lvl20 affixes if this is set to 10 for eg.
autoprefix - Group # from automagic.txt (base affixes, like built in
hp/resistances)
alternategfx - display graphics on the character
openbetwgfx - no use (reference to what alternategfx it was using in the d2
beta)
normcode - normal item code
ubercode - exceptional item code
ultracode - elite item code
spelloffset - unknown
component - the body cell used to wear this item (I dont know if this has
priority over itemtypes.txt)
invwidth - width in inventory cells
invheight - height in inventory cells
hasinv - 1 can be socketed, 0 cannot be socketed (thought you need to enable it
in itemtypes.txt aswell!)
gemsockets - maximum number of sockets (maximum is 6, you can create more, but
you will crash after filling mor ethen 6 sockets)
gemapplytype - gem effecs 0=weapon, 1=armor/helm, 2=shield (do not use other
values, you will crash)
flippyfile - flip gfx (dropping gfx)
invfile - inventory gfx
uniqueinvfile - unique inventory gfx
setinvfile - set inventory gfx
Character Armor gfx display: (0=none, 1=leather, 2=metal)
rArm = right arm
lArm = left arm
Torso = well what could this be??? (lol)
Legs = (i dont think there is some one who will not understand what this is)
rSPad = right shoulderpad
lSPad = left shoulderpad
useable - 0=you cannot rightclick, 1=you can rightclick on this item
throwable - can this item be thrown 1=yes, 0=no
stackable - can this item be stacked 1=yes, 0=no
type - base type (code from itemtypes.txt)
sound - inventory/drop sound.
unique - is this item always unique (quest items etc)
transparent - unknown
transtbl - unknown (Translate TBL Strings? aka decode)
quivered - is this item a stack of ammo 1=yes, 0=no
lightradius - basic light radius for this item. (dunno if it really works)
belt - numberic Id from belts.txt (defines number of potion slots)
quest - for quest items (quest ID)
missiletype - missile to shoot if you throw this item (id from missiles.txt)
durwarning - the dur warning icon to display when the item is about to break
qntwarning - quantity warning icon to display if you wasted most of the stack
mindmg - smite damage for shields/kick damage for boots (minimum)
maxdmg - smite damage for shields/kick damage for boots (maximum)
gemoffset - unknown (maybe graphical gem placment offset?)
bitfield - set to 1 for leather items, to 3 for metal ones.
Vendor Columns: (replace Vendor with the vendor name aka CharsiMin etc)
VendorMin - minimum amount of items of this type the vendor can sell
VendorMax - maximum amount of items of this type the vendor can sell (do not
increase to much, you will CRASH if the game spawns to many items (aka there
will be no room left))
VendorMagicMin - has no function any more (blizz removed the 'magic'
slot)
VendorMagicMax - has no function any more (blizz removed the 'magic'
slot)
VendorMagicLevel - has no function any more (blizz removed the 'magic'
slot)
sourceart - unknown (no function?)
gameart - unknown (no function?)
transform - external palette shift intensity (1=most intense)
invtransform - inventory palette shift intensity (8=most intense)
skipname - for items like the viper amulet (which dosent say viper amulet two
times) (skips the base name)
nightmareupgrade - item code of the item the vendor will sell instead of this
item on NM (xxx=no change)
hellupgrade - item code of the item the vendor will sell instead of this item on
HELL (xxx=no change)
mindam - no function
maxdam - no function
nameable - 1=can be personalized, 0=cannot be personalized
Send any comments and corrections to Nefarius
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=221]Knowledge Base - Armor.txt File Guide[/url]

View File

@ -0,0 +1,275 @@
# D2Mods Knowledge Base: Article 222
# Title: Automagic.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=222
Automagic.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 9:02 pm
Last modified: Sat Jan 06, 2018 2:41 am
Views: 8732
Description: by Ric Faith
Categories: File Guides (1.09x)
A. Name - Name for reference only
B. version - 0 for cD2, 100 for LoD
C. spawnable - Boolean can this automagic spawn on items
D. rare - Boolean can this automagic spawn on rares
E. level - required lvl of monster for automagic to spawn (see Annex A)
F. maxlevel - maximum lvl that this automagic will spawn for, after which it will no longer spawn (see Annex A)
G. levelreq - required character lvl to use item, may be used to increase base requirement
H. class - class-specific automagic (ama,sor,nec,pal,bar,dru,ass)
I. classlevelreq - for that specific class, what is the level req
J. frequency - probability for that automagic to spawn (see Annex A)
K. group - to combine similar multiple automagics, also to calculate probability (see Annex A)
L-W. (refer to the Magical Master Code List from the Keep)
modXcode - code of mod
modXparam - parameter for code (if any)
modXmin - minimum value for code (if any)
modXmax - maximum value for code (if any)
X. transform - Boolean does the automagic perform a color shift on the item
Y. transformcolor - code for the color that it will be shifted to
Z-AF. itypeX - itemtypes that the automagic will spawn for (see Annex B)
AG-AI. etypeX - itemtypes that the automagic will never spawn for (see Annex B)
AJ. divide - factor in the reduction of price when selling to NPCs
AK. multiply - factor in the increase of price, similar to that in skills.txt (see Annex C)
AL. add - factor in increase of price, similar to skills.txt (see Annex C)
Annex A - frequency & group
The value in the group column is alse often known
as the auto prefix, automagic number or the automagic code. This is
used for reference from armor.txt and weapons.txt, primarily by items
which always spawn with magical affixes (and without being magical) and
initially by the amazon bows/spears/javelins, sorceress orbs, paladin
shields and necro heads.
So in the event you wish to set an automagic for a
new item, or give an automagic to an old item, you just have to add a
automagic number to the relevant file (armor/weapons) and then proceed
to play around in automagic.txt.
For my 1st example, I will make daggers (and their exceptional and elite forms) spawn with poison damage.
Starting in weapons.txt, find the lines of all the
daggers and add 306 to the automagic. Now 306 is not a special number,
but if you take a look in your automagic.txt, you'll see that it ends
as 305, so a nice number to continue from is 306, tho you could start
at 500 if you so please. Do not that the value cannot be more than 4
digits.
Coming back to automagic.txt, starting writing up a
new line. I recommend writing a new line so you can get a feel for the
columns and what they will do.
Name - Poisoned Dagger
Version - 100 (LoD game)
spawnable - 1
rare - 1 if you set this to 0, it will not auto spawn on rare daggers, I'll explain more later when tweaking
level - 1
maxlevel - can be left blank so it will always spawn, but I'll explain more when tweaking
lvlreq - 1 or left blank so it'll always be useable
class/classlevelreq - blank so everyone can use it
frequency - 1 for now, I'll explain more later when tweaking
group - 306, the same value as you put in the dagger lines in weapons.txt
mod1code - dmg-pois (check out the Magical Master Code List)
mod1param - 256 (10 sec duration)
mod1min/max - 5/10 (deals 5-10 pois damage over 10 seconds)
transform/color - only if you want, but you could make all of them green by putting 1,cgrn here
itype - knif (same itemtype as the daggers so it can spawn)
etype - none (you didn't put the group number anywhere else right?)
divide/multiply/add - 0 (no cost modifiers)
Ok! now your daggers will always spawn with 5-10
poison damage. The question now would be - why settle for 5-10 poison
damage on a powerful dagger? Why not let the values increase and see
better poison damage spawn on the higher lvl monster drops?
Now here is where the playing with level/maxlevel come in.
Let's say we want:
Poison Dagger1 | Level 1-20, 5-10 poison damage
Poison Dagger2 | Level 21-40, 10-20 poison damage
Poison Dagger3 | Level 41-60, 20-30 poison damage
Poison Dagger4 | Level 61 and up, 30-45 poison damage & 25% deadly strike
so we'd need 4 different lines, but all using the
same automagic number. We can copy our new line and paste it 3 times so
we have 4 identical lines. Then we can edit the level/maxlevel to suit
our requirements, 1,20 then 21,40 followed by 41-60 and lastly 61, . We don't need to specify the upper limit for the last one coz the game will go figure that out themselves.
We'll need to edit the mods, change them to match
our new values: 5-10, 10-20, 20-30, 30-45. For the last one, we want to
add another mod, so mod2code = deadly, mod2min = 25, mod2max = 25.
There is no param for the mod deadly.
Voila! now we have an 'upgrading' automagic. But we still haven't tried playing with the frequency yet.
Now let's say we want to let the automagics overlap,
Poison Dagger1 | Level 1-25, 5-10 poison damage
Poison Dagger2 | Level 15-45, 10-20 poison damage
Poison Dagger3 | Level 40-65, 20-30 poison damage
Poison Dagger4 | Level 60 and up, 30-45 poison damage & 25% deadly strike
you'll see that now previously they never coincided
and now they do. Now what? It's exactly the same, but for the levels
15-25, 40-45 and 60-65, there are TWO possible automagics. So one of
them will randomly spawn. This will be determined by the frequency.
Let's say your frequencies are set at 5,3,2,1 in
that order. So between levels 15-25, there is a chance that you can get
5-10 poison damage or 10-20 poison damage.
Poison Dagger1, freq=5 & Poison Dagger2, freq=3
So the chance to get Poison Dagger1 automagic is = 5 / (5+3) = 5/8 = 62.5%
while the chance to get Poison Dagger2 automagic is = 3 / (5+3) = 3/8 = 37.5%
likewise, between levels 40-45,
Poison Dagger2 = 3 / (3+2) = 3/5 = 60%
Poison Dagger3 = 2 / (3+2) = 2/5 = 40%
If you overlapped more than 2 automagics, the
calculation is the same, you'd just have more possibilities and hence
more possible outcomes.
Annex B - itype & etype
I have added att% (%age Attack Rating) to all my
exceptional and elite weapons via automagic simply by giving all of
them the same auto prefix and setting it in the automagic.txt.
Under itype, I put weap (itemtype for all weapons)
so that all of them can use the same automagic line instead of having
one line for swor, another for axe, another for spea, another for pole
(tho if this is your intention then by all means go ahead).
You can have multiple entries (up to 7) for itype
so you could have 1 automagic for swor/axe/spea and another for
pole/mace/etc. However, let's say I wanted to make swords have a
different automagic.
att% 0 100 150 - for all other weapons
att% 0 150 200 - for swords only
now I could either start listing all the possible itypes (and make it rather messy) or I could do this:
att% 0 100 150, itype = weap (all weapons), etype = swor (but swords)
att% 0 150 200, itype = swor (and nothing else)
This way, you can cut down the number of lines you require just by using a simple exclusion via itype/etype.
Note: this is the same method used in the affix files.
Annex C - item cost
For the cost modifiers, there is one thing that you
need to note. If you were to put an automagic for a skill on the item
(ie. skill X Y Z where X is skillID, Y is min value, Z is max value),
the cost modifier of the skill (in skills.txt) will not be on the item.
This will make your 'skilled' items cost a lot less than their original
intended amount. To easily remedy this, just use the same values for
multiply & add as it is in skills.txt
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=222]Knowledge Base - Automagic.txt File Guide[/url]

View File

@ -0,0 +1,271 @@
# D2Mods Knowledge Base: Article 223
# Title: Charstats.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=223
Charstats.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:01 pm
Last modified: Sat Jan 06, 2018 4:30 am
Views: 10272
Description: by Maxx Power
Categories: File Guides (1.09x)
Many people
making mods seem to have a problem grasping some of the columns within
the charstats.txt file. In this tutorial, I’ll explain in detail the
functions of each of the columns, as well as giving some other
information when required. To
find the charstats.txt file, it is within the d2exp.mpq file in the
Diablo directory, not the patch_d2.mpq file. You can easily pack the
charstats.txt file into the patch_d2.mpq file and do the usual -direct
-txt execute, and it will over-ride the one in the d2exp.mpq. I won’t
go into detail about this, just look at the Keep for a tutorial as to
how (NB All those making a normal Diablo II mod, use the charstats.txt
file found in the d2data.mpq file). This
is basically where the name of the class is placed in the .txt file.
Its easy enough to understand, as the character names are in full.
Changing the character name here will NOT change it in the game. You
need to hex-edit for that to happen. Changing the names may cause
problems, crashing the mod. Just leave these be. However, if you do the
relevant editing in the .tbl files within the .mpq archives, then you
could change these columns, though don’t ask how through this tutorial.
This is for the charstats.txt file only! Str, dex, int, vit;
These are the base stats for the characters. From left to right, its
Strength, Dexterity, Energy and Vitality. These only affect the
characters base stats. It doesn’t affect any levelling up in any way.
Note that the amount put into Energy and Vitality will affect that
characters base hp. Tot;
The total amount your stats come to when added together. This is one of
the unused columns in the file, so just leave them alone. You can
delete the entries here easily and put whatever you want in (comments,
funny faces, whatever). Stamina and hp add;
The stamina column is basically the amount of stamina you have at the
start of the game with a base character. Note that base stamina is NOT
affected by your character’s base Vitality. Hp add is the number of hp
added on top of the vitality bonus. Note that the base hp for all
characters is base vitality + hp add. The amount of hp gained per
vitality in the game doesn’t affect the amount of hp with a base
character. PercentStr, Dex, Int and Vit;
These columns are read as bytes but aren't used for anything in the
game, so you may enter any byte value here and use them if you make dll
changes. (Thanks to Isolde for the above paragraph!) ManaRegen;
This the speed at which characters regenerate their mana. It is
interesting to see that all the characters have equal mana regen. Just
so you know, the lower this value is, the faster that character will
regenerate their mana reserves. This value is the amount of seconds it
takes for a character to regain full mana from nothing. Just to note, a
sorceress can regenerate her own mana with max warmth skill in a few
seconds. (This is calculated as
MaxMana/(ManaRegen*25)*ManaRegBonus/100) If you know its on that kind
of sliding scale, then you have a general idea as to how changing this
value may affect a character. ToHitFactor;
This is used in the calculation to hit a monster using a non-magic
weapon (sword, bow etc.) The higher the value, the more of a bonus that
character will gain. This also affects your characters chance to be hit
by non-magical means. An e.g. of how this works can be seen here. A
barbarian, with a ToHitFactor of 20 has an attack rating of 72. An
amazon, with a ToHitFactor of 5, has an attack rating of 77. Both have
an equal chance to hit a fallen (94%). Another example is following. An
amazon has an AC of 6, a sorc, with a ToHitFactor of -15, has a AC of
7. Both have an equal chance of being hit by a fallen (66%). Basically,
the higher this value, the better that character is at landing physical
blows, and avoiding them. This is a straight add to attack rating and
defense bonus, so is only really useful for lower level characters in
the game. WalkVelocity and RunVelocity;
Pretty much self-explanatory. The higher it is, the faster your
character can walk and run. Try to have the RunVelocity higher than the
WalkVelocity, or it may cause problems. These are the stats affect by
item which increase walk/run speed by a percentage. E.g. A Barbarian,
who has a walk/run velocity of style='mso-spacerun: yes'> 6 and 9
respectively, has a pair of boot which increase walk/run velocity by
20%. His new speed = 6 * 1.2 / 9 * 1.2 = 7 walk speed and 10 run
velocity. RunDrain;
This is the amount of stamina drained whilst your chracter is running.
This is the stat affect by items which have stamina drain reduction
(see above). Basically, the lower it is, the longer your character can
run in affect. This is lost in 256ths every frame. Comment; Jus’ a little ol’ comment by the good people at Blizzard to help mod makers :-) Life/Stamina/Mana per level;
As mentioned in the document, the following numbers are fourths (incase
your wondering why an Amazon doesn’t gain 8 hp per level). This means
that any number you place in here is divided by four before it is added
to the character. This is how some characters gain 1 and a half hp per
level (see the necromancers column). This pattern follows for each of
the columns, with Life Stamina and Mana self-explanatory. Life/Stamina per Vit and Mana per Int;
Exactly the same as the per level columns, except these relate to the
amount of hp, mp and stamina gained with each point put into their
respective stats. Note that these values are also in fourths. Also note
that these values will not affect your characters base Life, Stamina
and Mana (see above). Values with a # in front of them;
These appear to be pre-beta values, most likely used by Blizzard whilst
the art teams were devising the animations. Changing these values will
probably do nothing to your characters which are noticable, so changing
them won’t do much (Another bit of info provided by Ruvanal) BlockFactor;
Whilst playing Diablo, you will probably have noticed that all the
shields have a blue number for their blocking, indicating an
enhancement to that item, even though there are no visible changes.
This is the value which affects that. If you open the armor.txt file,
you will see that most shields have really low blocking %, such as 15
or 10. This is because the BlockFactor of a character is added on top
of this. Paladins use shields the most, so their BlockFactor is the
highest. As calculations go, a value of 75 or higher will allow a char
to have almost full blocking (>75 = 75% blocking). The formula used
(Blocking * (Dexterity - 15)) / (Character Level * 2) means that a char
will most likely have full blocking, but not all the time. StartSkill; Another unused, pre-beta column still in there. Nothing important. BaseWClass;
This just determines that your character is in hth, or combat, mode,
with both skills set to normal attack. This won’t really affect
anything, so just leave it. The
next columns are for the use of your base equipment. Here you can put
any item you want into the character, either in their inventory or
equipped (NB You can’t put stuff in the Horadric Cube or the stash,
even if you give your character it as a starting item. It won’t work). The
first column is basically where you put the item code. These codes can
be found in the items.txt, weapons.txt, armor.txt, or runes.txt if you
want to put specialist stuff in there. The next column is where the
item is. Leaving this blank will put it in your inventory (potions
should automatically go into the belt if there is room. Otherwise,
they’ll stay in the inventory). If you want to put the item in a
specific place, then you must place in the relevant code for that part
of the character. Look in the .txt files for the column which describes
where an item goes, and then use that code. The next column allows you
to put in more that one of an item. Try to do this only for potions and
the like, otherwise you may have problems with doing stuff like, say,
spawning ten short swords. For
the columns, you can have a total of ten separate items either equipped
or in your inventory. If you don’t want any item, then put a 0 in the
first and third columns, then put nothing in the second one. That
just about covers everything there is to know about the charstats.txt
file. Remember, it only take a few minutes, but you can almost totally
change the way in which Diablo is played altogether if you know how to
change the stats in the right way. Have fun! Maxx Power (P.S. Thanks to both Isolde and Ruvanal on the forums who corrected some of the mistakes on this tutorial. Big props you guys!)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=223]Knowledge Base - Charstats.txt File Guide[/url]

View File

@ -0,0 +1,154 @@
# D2Mods Knowledge Base: Article 224
# Title: Cubemain.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=224
Cubemain.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:02 pm
Views: 9841
Description: by Nefarius
Categories: File Guides (1.09x)
Column A: description
This column has no function, it only serves as a comment field to make it easier to find specific recipes.
Column B: enabled
Boolean, this controls if a recipe is active in-game, 1 stands for yes and 0 stands for no.
Column C: min diff
Controls at since which difficulty level this recipe can be used, 0=normal, 1=nightmare and 2=hell.
Column D: version
Tells the game if this is a old classic, new classic or expansion
recipe, 0=old classic d2, 1=new classic d2 and 100 is expansion recipe.
(*I am not sure if 1 is used in this file, but this column works the
same way it works in all the other item related files so it probably
does.)
Column E: start day
Used for closed battle.net to enable some recipes at a specific range of days.
Its pretty useless, but it can be used for other things with a bit of code editing.
Column F: stop day
Used for closed battle.net to disable some recipes at a specific range of days.
Its pretty useless, but it can be used for other things with a bit of code editing.
Column G: weekday
Used for closed battle.net to enable some recipes at a specific weekday.
Its pretty useless, but it can be used for other things with a bit of code editing.
Column H: class
You can use this to make a recipe class specific by using the class codes, aka ama, bar, pal, nec, sor, dru and ass.
Column I: numinputs
Controls the number of items you need to put into the cube for this
recipe, please note that if your using the “qty” switch in your input
this number must be adjusted, so hpot,qty=5 would mean you must set
numinputs to 5 ratter then 1, this is a very common mistake. The gty
switch may cause problems if you use items with quantity values
Column J-P: input 1-7
This controls the type of inputs used for the recipe, each cell stands for a different item.
Please refer to my Cubemain Code Reference in the keeps resource section in order to read about these codes.
Column Q: output
Controls the output and its quality, please refer to my Cubemain Code
Reference in the keeps resource section to read about these codes.
Column R: lvl
Controls the level of the item that is created in output, note this
value force spawns the item at this specific level. Its also used in
the formula for the two lower columns.
Column S: plvl
This column uses a portion of the players level for the output level.
Column T: ilvl
This column uses a portion of the first inputs level for the output level.
Column U, Z, AE, AJ, AO: mod 1-5
This controls modifiers that get appended to the output, aka you can
create normal items such as cracked sashes with modifiers such as
lifesteal on them this way, its mainly used for crafted items tought,
for a list of modifiers please consult the magic code master list.
Column V, AA, AF, AK, AP: mod 1-5 chance
This controls the chance for modifier 1-5 to spawn on the output, lets
say you have modifier 1 set to lifesteal, if you want it to only
produce a item with lifesteal half of the time you would set mod 1
chance to 50, which is 50%.
Column W, AB, AG, AL, AQ: mod 1-5 param
Parameter for modifier 1-5, refer to the magic code master list in
order to see which modifiers use a parameter and how it is used.
Column X, AC, AH, AM, AR: mod 1-5 min
Controls the minimum values for modifier 1-5, refer to the magic code
master list to see which modifiers use a minimum value and what you
should enter into it.
Column Y, AD, AI, AN, AS: mod 1-5 max
Controls the maximum values for modifier 1-5, refer to the magic code
master list to see which modifiers use a maximum value and what you
should enter into it.
Column AT: term
Record Terminator column, this has no function other then terminating
the lines, this is used to prevent tailing byte crashes when the BIN
files are loaded/generated by the game.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=224]Knowledge Base - Cubemain.txt File Guide[/url]

View File

@ -0,0 +1,78 @@
# D2Mods Knowledge Base: Article 225
# Title: Difficultylevels.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=225
Difficultylevels.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:03 pm
Views: 8043
Description: by Nefarius
Categories: File Guides (1.09x)
Column A Name: Name of the Difficulty.
Column B ResistPenalty: The value removed from the resistances within this difficulty.
Column C DeathExpPenalty: The percentage of experience you loose at death on this difficulty.
Column D UberCodeOddsNormal: not used. (pre 1.07 this was the
percentage of low quality/normal/superior exceptional items dropped on
this specific difficulty.)
Column E UberCodeOddsGood: not used. (pre 1.07 this was the percentage
of magic/rare/set/unique exceptional items dropped on this specific
difficulty.)
Column F UltraCodeOddsNormal: not used. (never used, didn’t exist pre 1.07)
Column G UltraCodeOddsGood: not used. (never used, didn’t exist pre 1.07)
Column H MonsterSkillBonus: additional skill points added to monster
skills specified in monstats.txt for this difficulty. (has nothing to
do with missile damage bonus)
Column I MonsterFreezeDivisor: divisor value for freezing length for this difficulty.
Column J MonsterColdDivisor: divisor value for cold length for this difficulty.
Column K AiCurseDivisor: divisor value for curse effect duration for this difficulty.
Column L LifeStealDivisor: divisor value for lifesteal for this difficulty.
Column M ManaStealDivisor: divisor value for manasteal for this difficulty.
Column N ExtraUniqueMonsters: additional unique and champion monsters
added to every area that can spawn special monsters, based on the
settings in monstats.txt, this value is added both to minimum and
maximum special monster values, so a area with 1-2 would become 2-3 on
nightmare and 3-4 on hell using the values given in vanilla LoD.
Column O UniqueDamageBonus: additional physical damage dealt by unique monsters on this difficulty.
Column P ChampionDamageBonus: additional physical damage dealt by champion monsters on this difficulty.
Column Q HireableBossDamageBonus: applies to the damage hirelings do to special bosses.
Column R StaticFieldMin: minimum percentage life left on monsters hit
by static field, setting all of them to 0 will make static field work
the same way it did in classic d2.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=225]Knowledge Base - Difficultylevels.txt File Guide[/url]

View File

@ -0,0 +1,36 @@
# D2Mods Knowledge Base: Article 226
# Title: Experience.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=226
Experience.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:03 pm
Views: 8405
Description: by Mordini
Categories: File Guides (1.09x)
Column 1. Level - Character level achieved when the corresponding amount of experience has been gained.
Column 2. Amazon - Amount of experience required by the Amazon class to achieve the corresponding level
Column 3. Sorceress - Amount of experience required by the Amazon class to achieve the corresponding level
Column 4. Necromancer - Amount of experience required by the Amazon class to achieve the corresponding level
Column 5. Paladin - Amount of experience required by the Amazon class to achieve the corresponding level
Column 6. Barbarian - Amount of experience required by the Amazon class to achieve the corresponding level
Column 7. Druid - Amount of experience required by the Amazon class to achieve the corresponding level
Column 8. Assassin - Amount of experience required by the Amazon class to achieve the corresponding level
Row 2. MaxLvl - Maximum level achievable by the corresponding class.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=226]Knowledge Base - Experience.txt File Guide[/url]

View File

@ -0,0 +1,100 @@
# D2Mods Knowledge Base: Article 227
# Title: Gems.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=227
Gems.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:04 pm
Views: 6077
Description: by Phrozen Heart
Categories: File Guides (1.09x)
Name: The name of the gem/rune.
Transform : The number for the color the socketed item changes to.
letter : (Runes only) The letters that a rune appears as when used in a socked item.
code : The 3 character code that the game uses to represent the item in the other game files.
nummods : Number of magic codes on that gem for each item.
weaponMod1Code : Corresponding magical property code to apply to the socketed weapon
weaponMod1Param : First paremeter for the corresponding magical property code to apply to the socketed weapon
weaponMod1Min : Minimum value for the corresponding magical property code to apply to the socketed weapon.
weaponMod1Max : Maximum value for the corresponding magical property code to apply to the socketed weapon.
weaponMod2Code : Corresponding magical property code to apply to the socketed weapon
weaponMod2Param : First paremeter for the corresponding magical property code to apply to the socketed weapon
weaponMod2Min : Minimum value for the corresponding magical property code to apply to the socketed weapon.
weaponMod2Max : Maximum value for the corresponding magical property code to apply to the socketed weapon.
weaponMod3Code : Corresponding magical property code to apply to the socketed weapon
weaponMod3Param : First paremeter for the corresponding magical property code to apply to the socketed weapon
weaponMod3Min : Minimum value for the corresponding magical property code to apply to the socketed weapon.
weaponMod3Max : Maximum value for the corresponding magical property code to apply to the socketed weapon.
helmMod1Code : Corresponding magical property code to apply to the socketed helm
helmMod1Param : First paremeter for the corresponding magical property code to apply to the socketed helm
helmMod1Min : Minimum value for the corresponding magical property code to apply to the socketed helm or body armor.
helmMod1Max : Maximum value for the corresponding magical property code to apply to the socketed helm or body armor.
helmMod2Code : Corresponding magical property code to apply to the socketed helm
helmMod2Param : First paremeter for the corresponding magical property code to apply to the socketed helm
helmMod2Min : Minimum value for the corresponding magical property code to apply to the socketed helm or body armor.
helmMod2Max : Maximum value for the corresponding magical property code to apply to the socketed helm or body armor.
helmMod3Code : Corresponding magical property code to apply to the socketed helm
helmMod3Param : First paremeter for the corresponding magical property code to apply to the socketed helm
helmMod3Min : Minimum value for the corresponding magical property code to apply to the socketed helm or body armor.
helmMod3Max : Maximum value for the corresponding magical property code to apply to the socketed helm or body armor.
shieldMod1Code : Corresponding magical property code to apply to the socketed shield
shieldMod1Param : First paremeter for the corresponding magical property code to apply to the socketed shield
shieldMod1Min : Minimum value for the corresponding magical property code to apply to the socketed shield.
shieldMod1Max : Maximum value for the corresponding magical property code to apply to the socketed shield.
shieldMod2Code : Corresponding magical property code to apply to the socketed shield
shieldMod2Param : First paremeter for the corresponding magical property code to apply to the socketed shield
shieldMod2Min : Minimum value for the corresponding magical property code to apply to the socketed shield.
shieldMod2Max : Maximum value for the corresponding magical property code to apply to the socketed shield.
shieldMod3Code : Corresponding magical property code to apply to the socketed shield
shieldMod3Param : First paremeter for the corresponding magical property code to apply to the socketed shield
shieldMod3Min : Minimum value for the corresponding magical property code to apply to the socketed shield.
shieldMod3Max : Maximum value for the corresponding magical property code to apply to the socketed shield.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=227]Knowledge Base - Gems.txt File Guide[/url]

View File

@ -0,0 +1,194 @@
# D2Mods Knowledge Base: Article 228
# Title: Hireling.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=228
Hireling.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:07 pm
Views: 11226
Description: by Ric Faith
Categories: File Guides (1.09x)
A. Hireling - Descriptive
B. SubType - Descriptive
C. Id - ID number to segregate the hirelings and threshold lvls
D. Class - reference to monstats.txt for monster
E. Act - Where you're getting it
F. Difficulty - 1=Normal, 2=NM, 3=Hell
G. Level - mlvl of the hireling (what level is required to 'upgrade' skills/stats)
H. Seller - reference to monstats.txt for NPC
I,J. NameFirst, NameLast - Range from which the game looks to get random names for the hirelings
K. Gold - Cost of hireling, compounded by mlvl
L. Exp/Lvl:
Factor used in the calculation of Exp required between mlvls.
Smaller numbers = Less exp required to lvl up = Faster lvling
Personal recommendation = 30-75 for decent lvling
M. HP - Life at Base Lvl
N. Hp/Lvl - Amount of additional Life given at Lvl up
O. Defense - DR (Defence Rating) at Base Lvl
P. Def/Lvl - Amount of additional DR given at Lvl up
Q. Str - Strength at Base Lvl
R. Str/Lvl - Amount (in 8ths) of additional Strength given at Lvl up
S. Dex - Dexterity at Base lvl
T. Dex/Lvl - Amount (in 8ths) of additional Dexterity given at Lvl up
U. AR - Attack Rating at Base Lvl
V. AR/Lvl - Amount of additional AR given at Lvl up
W. Share - Used to co-relate between threshold lvls between Normal, NM, Hell Hirelings
X,Y. Dmg-Min, Dmg-Max - Range of Damage dealt at Base lvl.
Z. Dmg/Lvl - Amount (in 8ths) of additional Damage given at Lvl up
AA. Resist - All Resistance at Base Lvl
AB. Resist/Lvl - Amount (in 8ths) of additional All Resist given at lvl up
AC,AD. WType1, WType2 - Can't be changed, is the itemtype of the items that can be carried in weapon slots
AE. HireDesc - A reference for .tbl files
AF. Default Chance - The Chance that Hireling will use weapon and normal attack instead skill
AG-BP. Skill, Mode, Chance, ChancePerLevel, Level, LvlPerLvl 1-6:
Skill - Reference to Skill column (col A) in skills.txt
Mode - The Mode to use for the skill:
Generally-
1 -> Auras
4 -> Attack
5 -> Attack (use for Barbs, works the same way as Mode=4)
7 -> Cast
14-> Seq (use for Jab)
You can use Mode=4 for almost everything, and
change the monanim column in skills.txt to attack to make the skill
work:) Do note tho, that if a monster uses the same skill, it will use
the attack anim instead of its usual anim for this skill.
Chance - The Chance that hireling will use Skill at Base Lvl:
It is calculated by probability: Using the example for Normal Fire Rogue, 1st Threshold,
Default Chance = 75, Inner Sight = 10, Fire Arrow = 25
So by probability (Chance/TotChance *100%):
Default (Attack) = 75/110 *100% = 68.18%
Inner Sight = 10/110 *100% = 9.09%
Fire Arrow = 25/110 *100% = 22.73%
To move along to the 2nd Threshold:
Default Chance = 75, Inner Sight = 10, Fire Arrow = 69
So: Default (Attack) = 48.70%, Inner Sight = 6.49%, Fire Arrow = 44.81%
So you can see, when you go from one threshold to
the next, the values may change depending on your Chance set. Ideally
you should push your intended favourite higher so it will occur more
often.
ChancePerLevel - Amount of additional Chance given at lvl up, used to improve the chances of certain skills as during lvling
Level - The sLvl of the Skill at Base lvl
LvlPerLvl - Factor in improving slvl at lvl up (0=no increment)
BQ-BT. Head, Torso, Weapon, Shield - References to the anims for monster parts
Annex A - Tips for Chance
Generally a very high chance should be put for
Auras (Defiance, Concentration), Warcries (Shout, Howl), Shielding
(Bone Armor, Cyclone Armor, Sorc's Ice Armors), certain magicks (TS,
Armageddon, Hurricane - tho Armageddon and Hurricane can get messy if
they are spammed). This is so that the hireling will cast it
immediately upon sighting an enemy to protect himself, or provide the
necessary bonuses.
Usually (and also in the original hireling.txt) a
value of 1000 is used. However if you give a very high chance, it'll
mean that they will continuous keep casting the skill. There is a way
around that:
With reference to States.txt, there is a list of
STATES, like STATE_FROZENARMOR or STATE_SHOUT, STATE_CONCENTRATION,
STATE_ARMAGEDDON. These values can be put in skills.txt under the 3rd
last column - caster state. It is recommended to put all those that you
think you may use, and some of those that you may or may not use in. It
has no other side effects, but has good uses for hirelings.
Now what happens is that after the hireling has
cast his Hurricane, the game will keep track and put STATE_HURRICANE as
long as the skill is active. When the hireling is deciding the
Chance/Probability to use a skill, Hurricane is no longer considered,
and so the skill will not be chosen again, until the Hurricane is
finished, and the STATE_HURRICANE is removed. After that the game can
consider activating Hurricane again.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=228]Knowledge Base - Hireling.txt File Guide[/url]

View File

@ -0,0 +1,78 @@
# D2Mods Knowledge Base: Article 229
# Title: Itemratio.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=229
Itemratio.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:07 pm
Views: 8849
Description: by Isolde
Categories: File Guides (1.09x)
A. Function - description string, not used & not read in
B. Version - 0 for classic, 1 for expansion
C. Uber - 1 if this line applies to elite items
D. Class Specific - 1 if this line applies to class specific items
E/F Unique,UniqueDivisor - chance it'll be unique
is 1 / (U - (drop level - item level)/UD) modified by Treasure Class
and magic find
G. UniqueMin - column is unused but are read in
anyway so you can use them as custom fields if you're going to be dll
editing item ratio code
H/I Rare,RareDivisor - chance it'll be rare is 1 / (R - (drop level - item level)/RD) modified by Treasure Class and magic find
J. RareMin - column is unused but are read in
anyway so you can use them as custom fields if you're going to be dll
editing item ratio code
K/L Set,SetDivisor - chance it'll be set is 1 / (S - (drop level - item level)/SD) modified by Treasure Class and magic find
M. SetMin - column is unused but are read in anyway
so you can use them as custom fields if you're going to be dll editing
item ratio code
N/O. Magic,MagicDivisor - chance it'll be set is 1
/ (M - (drop level - item level)/MD) modified by Treasure Class and
magic find
P. MagicMin - column is unused but are read in
anyway so you can use them as custom fields if you're going to be dll
editing item ratio code
Q/R. HiQuality,HiQualityDivisor - chance it'll be
high quality is 1 / (H - (drop level - item level)/HD) modified by
Treasure Class and magic find
S/T. Normal,NormalDivisor - chance it'll be normal
is 1 / (N - (drop level - item level)/ND) modified by Treasure Class
and magic find
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=229]Knowledge Base - Itemratio.txt File Guide[/url]

View File

@ -0,0 +1,532 @@
# D2Mods Knowledge Base: Article 230
# Title: Inventory.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=230
Inventory.txt File Guide
Written by: Phrozen Heart
Written on: Tue Jun 08, 2004 12:22 am
Views: 10863
Description: by SiLenTx
Categories: File Guides (1.09x)
===================
Rows (References)
===================
Amazon = Inventory (640x480 Resolution
Sorceress = Inventory (640x480 Resolution)
Necromancer = Inventory (640x480 Resolution)
Paladin = Inventory (640x480 Resolution)
Barbarian = Inventory (640x480 Resolution)
Monster = Vendor's Buy/Sell Dialog (640x480 Resolution)
Trade Page 1 = Upper Multi-Player Trade Window (640x480 Resolution)
Trade Page 2 = Lower Multi-Player Trade Window (640x480 Resolution)
Bank Page 1 = Stash (640x480 Resolution); Classic Diablo II
Transmogrify Box Page 1 = Horadric Cube (640x480 Resolution)
Guild Vault Page 1 = Unused Guild Vault (640x480 Resolution)
Trophy Case Page 1 = Unused Trophy Case (640x480 Resolution)
Expansion = Expansion (duh!)
Big Bank Page 1 = Stash (640x480 Resolution); Diablo II: Lord of Destruction
Hireling = Hireling Dialog (640x480 Resolution)
Druid = Inventory (640x480 Resolution)
Assassin = Inventory (640x480 Resolution)
Amazon2 = Inventory (800x600 Resolution)
Sorceress2 = Inventory (800x600 Resolution)
Necromancer2 = Inventory (800x600 Resolution)
Paladin2 = Inventory (800x600 Resolution)
Barbarian2 = Inventory (800x600 Resolution)
Monster2 = Vendor Buy/Sell Dialog (800x600 Resolution)
Trade Page 1-2 = Upper Multi-Player Trade Window (800x600 Resolution)
Trade Page 2-2 = Lower Multi-Player Trade Window (800x600 Resolution)
Bank Page2 = Stash (800x600 Resolution); Classic Diablo II
Transmogrify Box2 = Horadric Cube (800x600 Resolution)
Guild Vault Page2 = Unused Guild Vault (800x600 Resolution)
Trophy Case Page2 = Unused Trophy Case (800x600 Resolution)
Big Bank Page2 = Stash (800x600 Resolution); Diablo II: Lord of Destruction
Hireling2 = Hireling Dialog (800x600 Resolution)
Druid2 = Inventory (800x600 Resolution)
Assassin2 = Inventory (800x600 Resolution)
==============
Columns
==============
References:
------------------------------
Class = Inventory Pages to deal with (Reference Only)
InvLeft = Horizontal Coordinate or x - coordinate location of the left side's
graphic alignment on the screen (Reference Only)
InvRight = Horizontal Coordinate or x - coordinate location of the right side's
graphic alignment on the screen (Reference Only)
InvTop = Vertical Coordinate or y - coordinate location of the top side's
graphic alignment on the screen (Reference Only)
InvBottom = Vertical Coordinate or y - coordinate location of the bottom side's
graphic alignment on the screen (Reference Only)
Inventory Setups:
-------------------------------
GridRows = Number of boxes in each row.
GridCols = Number of boxes in each column.
GridLeft = Horizontal Coordinate or x - coordinate location of the Inventory's
Left Grid.
GridRight = Horizontal Coordinate or x - coordinate location of the Inventory's
Right Grid.
GridTop = Vertical Coordinate or y - coordinate location of the Inventory's
Top Grid.
GridBottom = Vertical Coordinate or y - coordinate location of the Inventory's
Bottom Grid.
GridBoxWidth = Width dimension (in pixels) for each boxes; default is 29x29 so,
the value is always 29
GridBoxHeight = height dimension (in pixels) for each boxes; default is 29x29
so, the value is always 29
Item Slots:
-------------------------------
rArmLeft = Horizontal Coordinate or x - coordinate location of the Right Arm's
Left grid; Right Weapon/Shield Slot
rArmRight = Horizontal Coordinate or x - coordinate location of the Right Arm's
Right grid; Right Weapon/Shield Slot
rArmTop = Vertical Coordinate or y - coordinate location of the Right Arm's Top
grid; Right Weapon/Shield Slot
rArmBottom = Vertical Coordinate or y - coordinate location of the Right Arm's
Bottom grid; Right Weapon/Shield Slot
rArmWidth = Width dimension (in pixels) for Right Weapon/Shield Slot
rArmHeight = Height dimension (in pixels) for Right Weapon/Shield Slot
TorsoLeft = Horizontal Coordinate or x - coordinate location of the Torso's Left
grid; Armor Slot
TorsoRight = Horizontal Coordinate or x - coordinate location of the Torso's
Right grid; Armor Slot
TorsoTop = Vertical Coordinate or y - coordinate location of the Torso's Top
grid; Armor Slot
TorsoBottom = Vertical Coordinate or y - coordinate location of the Torso's
Bottom grid; Armor Slot
TorsoWidth = Width dimension (in pixels) for Armor's Slot
TorsoHeight = Height dimension (in pixels) for Armor's Slot
lArmLeft = Horizontal Coordinate or x - coordinate location of the Left Arm's
Left grid; Left Weapon/Shield Slot
lArmRight = Horizontal Coordinate or x - coordinate location of the Left Arm's
Right grid; Left Weapon/Shield Slot
lArmTop = Vertical Coordinate or y - coordinate location of the Left Arm's Top
grid; Left Weapon/Shield Slot
lArmBottom = Vertical Coordinate or y - coordinate location of the Left Arm's
Bottom grid; Left Weapon/Shield Slot
lArmWidth = Width dimension (in pixels) for Left Weapon/Shield Slot
lArmHeight = Height dimension (in pixels) for Left Weapon/Shield Slot
HeadLeft = Horizontal Coordinate or x - coordinate location of the Head's Left
grid; Helm Slot
HeadRight = Horizontal Coordinate or x - coordinate location of the Head's Right
grid; Helm Slot
HeadTop = Vertical Coordinate or y - coordinate location of the Head's Top grid;
Helm Slot
HeadBottom = Vertical Coordinate or y - coordinate location of the Head's Bottom
grid; Helm Slot
HeadWidth = Width dimension (in pixels) for Helm's Slot
HeadHeight = Height dimension (in pixels) for Helm's Slot
NeckLeft = Horizontal Coordinate or x - coordinate location of the Neck's Left
grid; Amulet Slot
NeckRight = Horizontal Coordinate or x - coordinate location of the Neck's Right
grid; Amulet Slot
NeckTop = Vertical Coordinate or y - coordinate location of the Neck's Top grid;
Amulet Slot
NeckBottom = Vertical Coordinate or y - coordinate location of the Neck's Bottom
grid; Amulet Slot
NeckWidth = Width dimension (in pixels) for Amulet's Slot
NeckHeight = Height dimension (in pixels) for Amulet's Slot
rHandLeft = Horizontal Coordinate or x - coordinate location of the Right Hand's
Left grid; Right Ring Slot
rHandRight = Horizontal Coordinate or x - coordinate location of the Right
Hand's Right grid; Right Ring Slot
rHandTop = Vertical Coordinate or y - coordinate location of the Right Hand's
Top grid; Right Ring Slot
rHandBottom = Vertical Coordinate or y - coordinate location of the Right Hand's
Bottom grid; Right Ring Slot
rHandWidth = Width dimension (in pixels) for Right Ring's Slot
rHandHeight = Height dimension (in pixels) for Right Ring's Slot
lHandLeft = Horizontal Coordinate or x - coordinate location of the Left Hand's
Left grid; Left Ring Slot
lHandRight = Horizontal Coordinate or x - coordinate location of the Left Hand's
Right grid; Left Ring Slot
lHandTop = Vertical Coordinate or y - coordinate location of the Left Hand's Top
grid; Left Right Slot
lHandBottom = Vertical Coordinate or y - coordinate location of the Left Hand's
Bottom grid; Left Ring Slot
lHandWidth = Width dimension (in pixels) for Left Ring's Slot
lHandHeight = Height dimension (in pixels) for Left Ring's Slot
BeltLeft = Horizontal Coordinate or x - coordinate location of the Belt's Left
grid; Belt Slot
BeltRight = Horizontal Coordinate or x - coordinate location of the Belt's Right
grid; Belt Slot
BeltTop = Vertical Coordinate or y - coordinate location of the Belt's Top grid;
Belt Slot
BeltBottom = Vertical Coordinate or y - coordinate location of the Belt's Bottom
grid; Belt Slot
BeltWidth = Width dimension (in pixels) for Belt's Slot
BeltHeight = Height dimension (in pixels) for Belt's Slot
FeetLeft = Horizontal Coordinate or x - coordinate location of the Feet's Left
grid; Boots Slot
FeetRight = Horizontal Coordinate or x - coordinate location of the Feet's Right
grid; Boots Slot
FeetTop = Vertical Coordinate or y - coordinate location of the Feet's Top grid;
Boots Slot
FeetBottom = Vertical Coordinate or y - coordinate location of the Feet's Bottom
grid; Boots Slot
FeetWidth = Width dimension (in pixels) for Boot's Slot
FeetHeight = Height dimension (in pixels) for Boot's Slot
GlovesLeft = Horizontal Coordinate or x - coordinate location of the Glove's
Left grid; Gloves Slot
GlovesRight = Horizontal Coordinate or x - coordinate location of the Glove's
Right grid; Gloves Slot
GlovesTop = Vertical Coordinate or y - coordinate location of the Glove's Top
grid; Gloves Slot
GlovesBottom = Vertical Coordinate or y - coordinate location of the Glove's
Bottom grid; Gloves Slot
GlovesWidth = Width dimension (in pixels) for Glove's Slot
GlovesHeight = Height dimension (in pixels) for Glove's Slot
==================
Column Information
==================
References:
============
Hint: From the word itself...
Inventory Setups:
=================
The Inventory setup columns consists of pixel dimensions and grid locations
where we can trace the exact locations of all inventories. In unmodded LoD
Inventory.txt, the setup was only 10x4 for character Inventories that's why we
have the values 10 and 4 in GridRows and GridCols columns respectively. In
GridBoxWidth and GridBoxHeight, we have a value of 29 for both because that is
the default smallest item that we can put in our inventory right? But take a
look at GridTop and GridBottom for an Amazon2 Row. I assume that we are
currently in 800x600 resolution so we have:
Class
GridRows
GridCols
GridLeft
GridRight
GridTop
GridBottom
GridBoxWidth
GridBoxHeight
Amazon2
10
4
419
706
315
428
29
29
If you can imagine it, The
GridTop is the distance from the uppermost. The GridTop location can ranged
from 0 to 600 and can be shown in the graphical representation below.
|0
|
|
|315 -------------
|            |
|            |
|      inventory
|            |
|            |
|428 -------------
|
|
|
|600
V
    Take a look at GridTop and GridBottom that ranges from 315
to 428 for our 10x4 inventory setup. If we were to subtract them (428-315), we
will get 113. We have 4 rows in our inventory so, 113/4 = 28.25 (Height
dimension of each box in pixels). It is supposed to be 29 right? Yes but we can
manipulate this thing based on your desired setup. And besides we will make a
graphics for it and thus, allowances like 0.75 pixels on each box for graphic
lines will result in a realistic appearance once we're already through with
invchar6.dc6. If you want to add 1 row up, then subtract 29 from 315 to get 286
for GridTop and put 5 for GridCols and so on.
The GridLeft and GridRight works the same, however the coordinates will
represent as this one:
400
419
706          800
------------------------------------------------------>
|
 |
    Yes, it starts in 400 because the other half is for CharStats
Screen, TradeStash, Transmogrify etc. I know you can imagine it so I better not
continue on mentioning them all. If you were to subtract 419 from 706 (706-419),
you'll get 287. In this case, divide it by 10 (287/10) because of 10x4 setup,
you'll get 28.7 (Width dimension of each box in pixels). Again, 0.3 pixels
doesn't matter that much as long as it fits for your converted Invchar6.dc6.
Item Slots:
============
If you properly understand the setups and x/y coordinates that I've mentioned
above then, it is now easy for you to change or relocate the item slots based on
your own or dreamed inventory setup.
Happy Modding!
Special Credits:
==================
Zhoulomcrist, Phalzyr, Fusman and Paul
Siramy
For more info about
Increasing the Inventory/Stash and Cube Size, Please read the tutorial made by
Nefarius
here
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=230]Knowledge Base - Inventory.txt File Guide[/url]

View File

@ -0,0 +1,90 @@
# D2Mods Knowledge Base: Article 231
# Title: Itemtypes.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=231
Itemtypes.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:10 pm
Views: 6992
Description: by Mordini
Categories: File Guides (1.09x)
ItemType : Item type name
Code : Item type reference code
Equiv1 : Unknown
Equiv2 : Unknown
Repair : Is the item repairable? (1 or 0)
Body : Does this fit on part of the character's body?
BodyLoc1 : Body location 1
BodyLoc2 : Body location 1
Shoots : Type of ammo required for this weapon (if it uses any)
Quiver : Type of weapon this ammo type is for (if it's an ammo type eg. bolts, arrows)
Throwable : Is this item thowable? (1/0)
Reload : Unknown
ReEquip : If the item type is stacked (eg. throwing potions), when the stack runs out does the last item used re-equip itself?
AutoStack : Does this item autostack when picked up? (1/0)
Magic : Does this item spawn as a magical item? (1/0)
Rare : Does this item spawn as a rare item? (1/0)
Normal : Does this item spawn as a normal (non-magical) item? (1/0)
Charm : Is this item type for charms? (1/0)
Gem : Is this item type for gems/runes? (1/0)
Beltable : Can this item be placed in your belt inventory? (1/0)
MaxSock1 : Unknown
MaxSock2 : Unknown
MaxSock4 : Unknown
TreasureClass : Unknown
Rarity : Unknown
StaffMods : Which class' random spells does this item type possess? (eg. Wands have random necro skills)
CostFormula : Unknown
Class : Required class if item type is class specific
VarInvGfx : Does this item have variable graphics? eg. Rings, amulets and charms (1 or 0)
InvGfx1 : Variable graphic (if VarInvGfx is set to 1)
InvGfx2 : Variable graphic (if VarInvGfx is set to 1)
InvGfx3 : Variable graphic (if VarInvGfx is set to 1)
InvGfx4 : Variable graphic (if VarInvGfx is set to 1)
InvGfx5 : Variable graphic (if VarInvGfx is set to 1)
InvGfx6 : Variable graphic (if VarInvGfx is set to 1)
StorePage : Which page in a vendor's inventory will this item type appear on? (weap, armp or misc)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=231]Knowledge Base - Itemtypes.txt File Guide[/url]

View File

@ -0,0 +1,344 @@
# D2Mods Knowledge Base: Article 232
# Title: Levels.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=232
Levels.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 9:17 pm
Views: 10733
Description: by Nefarius
Categories: File Guides (1.09x)
Name: Internal Level Name
Id: Level ID (used in columns like VIS0-7)
Pal: Palette (Color Palette loaded for the Level, you can change this but mostly
the colors get messed up greatly)
Act: The Act the Level is located in (internal numbering 0-4)
Layer: what layer is the level on (surface levels are set to 0 etc)
SizeX: Horizontal Size of the Level
SizeY: Vertical Size of the Level
OffsetX: Horizontal Placement Offset
OffsetY: Vertical Placement Offset
Depense: Special Setting for levels which are not random and not preset (Outer
Cloister, Arcane Sanctuary)
Rain: Does it Rain/Snow in this Level (1=yes, 0=no)
Mud: Unused setting (In pre beta D2 blizzard planed Rain to cause Mud which
would have slowed your char's speed down, but this never made it into the final
game)
NoPer: Setting for 3D Enhanced D2 that disables Perspective Mode for a specific
level. (1=disabled, 0=enabled)
LOSDraw: Alows you to look thru objects and walls even if they are not in a
wilderness level. (1=yes, 0=no)
FloorFilter: Probably has to do with Tiles and their Placement (function
currently unknown) (1=yes, 0=no)
BlankScreen: Probably has to do with Tiles and their Placement (function
currently unknown) (1=yes, 0=no)
DrawEdges: for levels bordered with mountains, walls (act 1 wildernesses for
example) (1=yes, 0=no)
IsInside: Is this level a Underground or Indoor area (1=yes, 0=no)
DrlgType: Setting for Level Generation: 1=Random Size, amount of rooms defined
by LVLMAZE.TXT, 2=pre set map (example: catacombs lvl4) and 3=Random Area with
preset size (wildernesses)
LevelType: The type of the Level (Id from lvltypes.txt)
Sub Columns - IDs from LVLSub.txt
SubType: Setting Regarding Level Type (6=wilderness, 9=desert etc, -1=no
subtype)
SubTheme: Setting Regarding Themes (function unknown)
SubWaypoint: Setting Regarding Waypoints (does not control waypoint placement)
SubShrine: Setting Regarding Shrines (does not control what shrines appear)
Vis0: entry/exit to level #1
Vis1: entry/exit to level #2
Vis2: entry/exit to level #3
Vis3: entry/exit to level #4
Vis4: entry/exit to level #5
Vis5: entry/exit to level #6
Vis6: entry/exit to level #7
Vis7: entry/exit to level #8
Refer to LVLWarp.txt
Warp0: Vis0 - GFX
Warp1: Vis1 - GFX
Warp2: Vis2 - GFX
Warp3: Vis3 - GFX
Warp4: Vis4 - GFX
Warp5: Vis5 - GFX
Warp6: Vis6 - GFX
Warp7: Vis7 - GFX
Intensity: Light Intensity: 0-255
Red: Red Lighting Strength (in 2D mode all colors are normal light)
Green: Green Light Strengh (in 2D mode all colors are normal light)
Blue: Blue Light Strength (in 2D mode all colors are normal light)
Portal: (Function Unknown)
Poistion: Setting for Perset Levels
SaveMonster: Does the game save the state of the Monsters for the area (1=yes,
0=no) (towns are set to 0 so that NPCs get respawned and hence get new items
when you leave town)
Quest: Setting Related to Quests (Previous assumptions are incorrect)
WarpDist: (Function Unknown) (2025 is the Default Value)
MonLvl1: Area (Dungeon) Level on Normal (controls the item level of items that
drop from chests etc)
MonLvl2: Area (Dungeon) Level on Nightmare (controls the item level of items
that drop from chests etc)
MonLvl3: Area (Dungeon) Level on Hell (controls the item level of items that
drop from chests etc)
MonLvl1Ex: Area (Dungeon) Level on Normal in D2X (controls the item level of
items that drop from chests etc)
MonLvl2Ex: Area (Dungeon) Level on Nightmare in D2X (controls the item level of
items that drop from chests etc)
MonLvl3Ex: Area (Dungeon) Level on Hell in D2X (controls the item level of items
that drop from chests etc)
MonDen: Monster Density: The Density of Monsters (Can be set to values above
10000, but should be left well below 3000 to prevent SlowDown in GamePlay due to
Sprite Overloading)
MonUMin: Minimum Unique and Champion Monsters Spawned in this Level
MonUMax: Maximum Unique and Champion Monsters Spawned in this Level
MonWndr: Does the monster 'wander?' (1=yes, 0=no) Controls whether monsters wander around
while 'unactivated' by the player or stand still until activated [Thanks to Roland for this late-breaking
piece of information, which he tipped me off to in August 2003. -Jeff]
MonSpcWalk: (Unknown)
Mtot: How many different Species of Monsters can occur in this area (example: if
you use M1-25 then set Mtot to 25 etc)
M1-M25: Monster Species 1-25 (use ID from MonStats.txt)
S1-S25: Spawned Species 1-25 (use ID from MonStats for Monsters which have
eSpawnCol set to 2, related to M1-25, eg: if M1 Spawns S1 will Spawn)
UTot: How many different Species of Monsters can spawn as Uniques and Champions
in this Area (works like Mtot)
U1-U25: Unique Species 1-25 (same as M1-M25 just for Monsters that you want to
appear as Unique/Champions)
C1-C5: Critter Species 1-5 (For monsters set to 1 in the IsCritter Column in
MonStats.txt)
CA1-CA5: Related to C1-5, eg: if you spawn a critter thru C1 then set this
column to 30 etc. (function unknown)
CD1-CD5:(Unknown)
Themes: Which Theme is used for this Area (unknown function)
SoundEnv: Referes to a entry in SoundEnviron.txt (for the Levels Music)
Waypoint: 255=No way Point, other #'s Waypoint ID (you cans witch waypoint
destinations between areas this way)
LevelName: String Code for the Display name of the Level
LevelWarp: String Code for the Display name of a entrance to this Level
EntryFile: Which *.DC6 Title Image is loaded when you enter this area
ObjGrp0-7: Use the ID of the ObjectGroup you want to Spawn in this Area (from
ObjectGroups.txt)
ObjPrb0-7: Object Spawn Possibility: the Chance for this object to occur (if you
use ObjGrp0 then set ObjPrb0 to a value below 100)
Beta: Reference Only (can be used for comments)
Annex A (by JBouley) - Important Notes on Populate ID Numbers
It is important to understand that in most cases, the numbers you use
in the Monster, Spawner and Unique monster columns in this file will be
the Populate ID numbers listed for those monsters in monstats.txt. But
this is NOT always the case.
You will notice that 'Classic' D2 monsters and some expansion monsters
share the same Populate ID numbers. How does the game know which monster
to pick? Here's how it works:
If you want to spawn classic monsters in areas that appear in Acts 1
through 4, use the Populate ID number as listed in monstats.txt. Simple?
Likewise, if you want to spawn an expansion monster in an Act 5 area,
use the Populate ID number as listed. Simple.
In other words, the classic areas are coded to 'prefer'classic
monsters, and the expansion part of the game favors expansion monsters.
But you 'CAN spawn classic monsters in some areas of Act 5, and you
'CAN spawn virtually any expansion monster in almost any area in
Act 1, Act 2, Act 3, or Act 4. You just need to 'fool' the game
a little.
To spawn an expansion monster in Acts 1 through 4, simply subtract 2
from the monster's row number in monstats.txt and use the resulting
number as the Populate ID number. So, let's assume you want to spawn the
Ice Boar in the Blood Moor. Look in monstats.txt. The Ice Boar appears on
line 458 of monstats.txt. Substract 2 from that and you have 456. So, in
one of the M columns for the Blood Moor row in Levels.txt, put 456.
('NOTE: Nefarius, the author of most of this resource guide, tells
me the method is row number minus 2, though I have long been told [and
have used] the system of row number minus 3 to take into account the
blank 'Expansion' row. Just be aware that there seems to be some
confusion on this point, but I'll go with Nefarius' calculations on this
since he's been doing it more recently than I have. -JBouley)
To spawn 'classic' monsters in Act 5 is a little different. Take the
monster's PopulateID...for this example we'll use the Damned, which has
a Populate ID of 14. Then subtract 436 from that number. So, 14 minus 436
equals -422. Type that negative number into the Act 5 area in Levels.txt
that you want it to appear in. Note that this tends to work best with
indoor and underground areas of Act 5. Many outdoor areas in Act 5 are
heavily hardcoded and might not spawn classic monsters.
Annex B - Enlarging the Valley of the Snakes
In this tutorial we will learn how to resize valley of Snakes to be 64x64 cells without using a map editor.
First of start by opening levels.txt (the only file we will need)
Go down to Act 2 - Desert 5 Row. First off go to the SizeX and SizeY
columns change them from 32 to 64 (you can make it larger but lets stay
w this for now, as some times you will need to change the other levels
if you exceed specific sizes)
Now go to the SubType column change -1 to 9, next Change SubTheme from -1 to 3, leave subwaypoint and sunshrine as is.
Go over to the portal column and change it to 1,
Last we will change WarpDist from 2025 to 3800.
Thats it, if you have 'old' save files w old maps
delete the *.ma1 file for that char, these store the act2 maps you
revealed. now enter the game any enjoy your larger level.
You can also populate the level with monsters now.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=232]Knowledge Base - Levels.txt File Guide[/url]

View File

@ -0,0 +1,104 @@
# D2Mods Knowledge Base: Article 233
# Title: Lvlprest.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=233
Lvlprest.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:12 pm
Views: 7109
Description: by Nefarius
Categories: File Guides (1.09x)
A Name: Internal Name of the Maps loaded thru this Line.
B Def: Definition ID of the Tiles loaded for this Map.
C LevelId: If this map is a Level by itself ratter then a component this cell
contains the levels ID (from levels.txt)
D Populate: Possible connected to the Ability of monsters to spawn in this map
section. (1/0)
E Logicals: Related to Buildings, like the Cottages in act 1 and the cow kings
Bivouac. (1/0)
F Outdoors: 0=Subterranean Level (or Buildings etc) 1=Wilderness etc. (May be
related to the Day/Night light shift.)
G Animate: Does this map contain animated tiles? (Lava) (1/0)
H KillEdge: Related to special edges drawn for outdoors levels. (1/0)
I FillBlanks: Maybe a setting blizzard added to fix the walk able lava tile bug
in Act 4?
It is disabled only for those areas. (Chaos Sanctuary and River of Flame) (1/0)
J SizeX: Amount of Horizontal Cells. (Map Size)
K SizeY: Amount of Vertical Cells. (Map Size)
L AutoMap: Probably Has to do with areas automatically revealed on the Automap
such as towns. (1/0)
M Scan: Enable/Disable VIS tiles (1=enabled, 0=disabled) ('as far as I can
tell, you need to set to 1 in order to make your Vis (warps) in a ds1 take
effect. In other words, if you take a ds1 that didn't have Vis at all before,
and then make at least one (yes, you can add warps to any ds1), set this to
1')
N Pops: Is related to roofs that become transparent when you enter a specific
map ('have something to do with the area where the roof and/or walls
disapear when you enter them (aka houses). It's some kind of the # of areas that
are delimited by 2 special tiles in the .ds1.')
O PopPad: Related to the previous settings. (Not a Boolean)
P Files: Total number of DS1 files loaded for this component.
Q File1: DS1 Map File #1
R File2: DS1 Map File #2
S File3: DS1 Map File #3
T File4: DS1 Map File #4
U File5: DS1 Map File #5
V File6: DS1 Map File #6
W Dt1Mask: Setting for the Tiles Mask used for the DS1 files loaded thru the
File1-6 entries, If you switch Maps you must adjust this cell!
('Dt1mask is a bitfield value, size is 32 bits. If you take a line from
lvltypes.txt (32 column files in there), the Dt1Mask tells exactly for this ds1
which files from this list to really use, and the ones to skip')
X Beta: No function, just an internal comment fields. (1/0)
Y Expansion: 1=Expansion Map, 0=Classic Diablo II Map. (1/0)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=233]Knowledge Base - Lvlprest.txt File Guide[/url]

View File

@ -0,0 +1,203 @@
# D2Mods Knowledge Base: Article 234
# Title: Magicprefix.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=234
Magicprefix.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:14 pm
Views: 7456
Description: by Ric Faith
Categories: File Guides (1.09x)
A. Name - Name for reference only
B. version - 0 for cD2, 100 for LoD
C. spawnable - Boolean can this prefix spawn on items
D. rare - Boolean can this prefix spawn on rares
E. level - required lvl of monster for prefix to spawn (see Annex A)
F. maxlevel - maximum lvl that this prefix will spawn for, after which it will no longer spawn (see Annex A)
G. levelreq - required character lvl to use item, may be used to increase base requirement
H. classspecific - to be set if prefix only spawns for a certain class (ama,sor,nec,pal,bar,dru,ass)
I. class - class-specific levelreq (see J)
J. classlevelreq - for that specific class, what is the level req
K. frequency - probability for that prefix to spawn (see Annex A)
L. group - to combine similar multiple prefixes, also to calculate probability (see Annex A)
M-X. (refer to the Magical Master Code List from the Keep)
modXcode - code of mod
modXparam - parameter for code (if any)
modXmin - minimum value for code (if any)
modXmax - maximum value for code (if any)
Y. transform - Boolean does the prefix perform a color shift on the item
Z. transformcolor - code for the color that it will be shifted to
AA-AG. itypeX - itemtypes that the prefix will spawn for (see Annex B)
AH-AL. etypeX - itemtypes that the prefix will never spawn for (see Annex B) **
AM. divide - factor in the reduction of price when selling to NPCs
AN. multiply - factor in the increase of price, similar to that in skills.txt
AO. add - factor in increase of price, similar to skills.txt
Annex A - group, frequency and prefix determination
The group number is used to bring multiple prefixes
(usually of the same type, though not necessarily) together. When the
game is sourcing for an available prefix, it will only choose one from
each group. This prevents 'overlapping' of prefixes, such as 2 '+1
light radius' would be rather wasteful.
The calculation of which prefixes are available are done in this manner - provided by Ruvanal:
Terms
alvl = prefix level. For an item this is the level that is used to
compare to the level and max level as found in the prefix and suffix
tables. When referring to a prefix/suffix it is the value listed in the
level column.
ilvl = internal level (also referred to sometimes as the item
level; better yet item creation level). This value is set at the time
of an items creation. For monster drops the ilvl=mlvl. (BTW ilvl
matches up with the terminology of the 1.07/1.08
cubemain.txt---'itemlevel pct a')
mlvl = monster level.
clvl = character level.
qlvl = quality level. This value is found in the level column of
armor.txt, weapons.txt and misc.txt. This is the value that is used to
create the weapXX and armoXX treasure classes.
magic_lvl = magic level bonus on some items. Currently the only
ones that have this are wands (normal and exceptional, but not the
elite ones), staves, orbs (all with a value of 1) and circlets
(circlet=3, Coronet=8, Tiara=13, Diadem=1.
When an item is generated that has prefixes the alvl is calculated* from ilvl and qlvl as follows
If (ilvl>99) then {ilvl=99}
if (qlvl>ilvl) then {ilvl=qlvl} ;** see note below
if (magic_lvl>0) then {alvl=ilvl+magic_lvl}
else
{
if (ilvl<(99-qlvl/2))
then {alvl=ilvl-qlvl/2}
else {alvl=2*ilvl-99}
}
If (alvl>99) then {alvl=99}
*all calculations use integers so there are no fractions at any step.
** this new ilvl value is only used for the duration of this
calculation. The ilvl value that is stored in the items data file will
remain unchanged.
Now that the game has decided which prefixes are
available for allocation, they will have to select their prefix from
the multiple choices in the given group. These are done by the
frequency column.
Frequency determines the probability that an prefix is selected, a higher frequency = a greater probability.
Assuming: Mod1freq=5, Mod2freq=3, Mod3freq=2, Mod4freq=1
and you can get only Mod1 & Mod2, then your probabilities would be:
chance to get Mod1 = 5 / (5+3) = 5/8 = 62.5%
chance to get Mod2 = 3 / (5+3) = 3/8 = 37.5%
and if you could get all four,
chance to get Mod1 = 5 / (5+3+2+1) = 5/11 = 45.5%
chance to get Mod2 = 3 / (5+3+2+1) = 3/11 = 27.3%
chance to get Mod3 = 2 / (5+3+2+1) = 2/11 = 18.2%
chance to get Mod4 = 1 / (5+3+2+1) = 1/11 = 9.1%
you can also use maxlevel to filter out the 'lower
quality' prefixes at the higher level. By setting the maxlevel so that
there is an overlap, you will always have that type of prefix available
at all levels, while effectively keeping the prefix pool powerful.
Annex B - itype & etype
itype = Inclusion TYPE & etype = Exclusion TYPE
It determines that a given affix will spawn for all itemtypes in {itype} except those in {etype}
eg.
itype = {weap,armo}
etype = {axe,helm,belt}
what this means is that the affix will spawn for
ALL weapons and armor, EXCEPT for axes, helms and belts. By including
and excluding itemtypes from receiving affix, you can make certain
affixes only spawn for swords, or only spawn for anything but swords.
NOTE: this works the same way for any other .txt file with itype/etype, such as automagic, rareprefix/suffix
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=234]Knowledge Base - Magicprefix.txt File Guide[/url]

View File

@ -0,0 +1,203 @@
# D2Mods Knowledge Base: Article 235
# Title: Magicsuffix.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=235
Magicsuffix.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:15 pm
Views: 7506
Description: by Ric Faith
Categories: File Guides (1.09x)
A. Name - Name for reference only
B. version - 0 for cD2, 100 for LoD
C. spawnable - Boolean can this suffix spawn on items
D. rare - Boolean can this suffix spawn on rares
E. level - required lvl of monster for suffix to spawn (see Annex A)
F. maxlevel - maximum lvl that this suffix will spawn for, after which it will no longer spawn (see Annex A)
G. levelreq - required character lvl to use item, may be used to increase base requirement
H. classspecific - to be set if suffix only spawns for a certain class (ama,sor,nec,pal,bar,dru,ass)
I. class - class-specific levelreq (see J)
J. classlevelreq - for that specific class, what is the level req
K. frequency - probability for that suffix to spawn (see Annex A)
L. group - to combine similar multiple suffixes, also to calculate probability (see Annex A)
M-X. (refer to the Magical Master Code List from the Keep)
modXcode - code of mod
modXparam - parameter for code (if any)
modXmin - minimum value for code (if any)
modXmax - maximum value for code (if any)
Y. transform - Boolean does the suffix perform a color shift on the item
Z. transformcolor - code for the color that it will be shifted to
AA-AG. itypeX - itemtypes that the suffix will spawn for (see Annex B)
AH-AJ. etypeX - itemtypes that the suffix will never spawn for (see Annex B) **
AK. divide - factor in the reduction of price when selling to NPCs
AL. multiply - factor in the increase of price, similar to that in skills.txt
AM. add - factor in increase of price, similar to skills.txt
Annex A - group, frequency and suffix determination
The group number is used to bring multiple suffixes
(usually of the same type, though not necessarily) together. When the
game is sourcing for an available suffix, it will only choose one from
each group. This prevents 'overlapping' of suffixes, such as 2 '+1
light radius' would be rather wasteful.
The calculation of which suffixes are available are done in this manner - provided by Ruvanal:
Terms
alvl = suffix level. For an item this is the level that is used to
compare to the level and max level as found in the suffix and suffix
tables. When referring to a suffix/suffix it is the value listed in the
level column.
ilvl = internal level (also referred to sometimes as the item
level; better yet item creation level). This value is set at the time
of an items creation. For monster drops the ilvl=mlvl. (BTW ilvl
matches up with the terminology of the 1.07/1.08
cubemain.txt---'itemlevel pct a')
mlvl = monster level.
clvl = character level.
qlvl = quality level. This value is found in the level column of
armor.txt, weapons.txt and misc.txt. This is the value that is used to
create the weapXX and armoXX treasure classes.
magic_lvl = magic level bonus on some items. Currently the only
ones that have this are wands (normal and exceptional, but not the
elite ones), staves, orbs (all with a value of 1) and circlets
(circlet=3, Coronet=8, Tiara=13, Diadem=1.
When an item is generated that has suffixes the alvl is calculated* from ilvl and qlvl as follows
If (ilvl>99) then {ilvl=99}
if (qlvl>ilvl) then {ilvl=qlvl} ;** see note below
if (magic_lvl>0) then {alvl=ilvl+magic_lvl}
else
{
if (ilvl<(99-qlvl/2))
then {alvl=ilvl-qlvl/2}
else {alvl=2*ilvl-99}
}
If (alvl>99) then {alvl=99}
*all calculations use integers so there are no fractions at any step.
** this new ilvl value is only used for the duration of this
calculation. The ilvl value that is stored in the items data file will
remain unchanged.
Now that the game has decided which suffixes are
available for allocation, they will have to select their suffix from
the multiple choices in the given group. These are done by the
frequency column.
Frequency determines the probability that an suffix is selected, a higher frequency = a greater probability.
Assuming: Mod1freq=5, Mod2freq=3, Mod3freq=2, Mod4freq=1
and you can get only Mod1 & Mod2, then your probabilities would be:
chance to get Mod1 = 5 / (5+3) = 5/8 = 62.5%
chance to get Mod2 = 3 / (5+3) = 3/8 = 37.5%
and if you could get all four,
chance to get Mod1 = 5 / (5+3+2+1) = 5/11 = 45.5%
chance to get Mod2 = 3 / (5+3+2+1) = 3/11 = 27.3%
chance to get Mod3 = 2 / (5+3+2+1) = 2/11 = 18.2%
chance to get Mod4 = 1 / (5+3+2+1) = 1/11 = 9.1%
you can also use maxlevel to filter out the 'lower
quality' suffixes at the higher level. By setting the maxlevel so that
there is an overlap, you will always have that type of suffix available
at all levels, while effectively keeping the suffix pool powerful.
Annex B - itype & etype
itype = Inclusion TYPE & etype = Exclusion TYPE
It determines that a given affix will spawn for all itemtypes in {itype} except those in {etype}
eg.
itype = {weap,armo}
etype = {axe,helm,belt}
what this means is that the affix will spawn for
ALL weapons and armor, EXCEPT for axes, helms and belts. By including
and excluding itemtypes from receiving affix, you can make certain
affixes only spawn for swords, or only spawn for anything but swords.
NOTE: this works the same way for any other .txt file with itype/etype, such as automagic, raresuffix/suffix
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=235]Knowledge Base - Magicsuffix.txt File Guide[/url]

View File

@ -0,0 +1,304 @@
# D2Mods Knowledge Base: Article 236
# Title: Misc.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=236
Misc.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:16 pm
Views: 9009
Description: by Ric Faith
Categories: File Guides (1.09x)
(Includes comments/tips from others, such as Jarulf, Xavon Wrentaile, and 54x)
Name/Namco - name of item. (tho' if I'm not
mistaken it only matters what you put in your final string.tbl entry,
this could merely be sometime to remind yourself)
compactsave - Useless column <Jarulf: This was
(should be no need now) telling if the game could use a more compact
save method for the item by omitting the magic seed (which took quite
some space). This was erroneously set for gems for example (when it was
introduced) and caused all gems to unrandomize.>
version - 0 for available for all games, 100
available in expansion only <Jarulf: Use so that the game knows an
item should not generate if the game is a normal game (as oposed to
expansion)>
level - required lvl before item will drop (based
on mlvl)<54x: Determines which treasureclass it will drop under.
(eg. level 28, 29, and 30 armours will drop from armo30) It also
determines what level you must be to buy this item at an NPC's.>
levelreq - Min clvl to use item
Rarity - Bigger num, more rare (tho' drop rates are controlled
in TCex AFAIK)
Spawnable - Can it be sold in shops or dropped by monsters
- Xavon Wrentaile
speed - Useless column - confirmed by Xavon Wrentaile
nodurability - to set item indestructability
cost - How much the item costs to buy <sell price is
½ * value - bkdoane> <JBouley: I believe, actually,
sell value when you dump an item at a vendor is one-fourth the
cost for you to buy it>
gamblecost - cost to gamble item (at proper vendors)
code - IMPT! this has to be different from all the other
codes used by the game. And this is the code that needs to be
entering into string.tbl. <Jarulf: Don't delete the old codes
to prevent possible assertion errors with deleted items>
alternategfx - Useless column - confirmed by Xavon Wrentaile
component - what part of the body to equip to - Xavon
Wrentaile
invwidth - item width
invheight - item height
hasinv - has a predetermined spot in the inv(body) section.
gemsockets - is item socketable?
flippyfile - The name of the animation file the item uses
in-game when it's dropped (if it's a item that looks similar
to another item you could just
copy this cell from there, unless you intend to remaster the
gfx for the drop, if so the file to look for is data\global\items\flpxxxxxxx.dc6.
xxxxxxx is stated specifically for the item) Note:For flippyfile,
you need to use the DC6Maker available in PK. this allows to
extract individual
frames which can be edited. Change the palette back to the 256-col
used in D2 (palettes are also available in Tools of the Trade)
and recompile with DC6Maker again) whatever name you save your
new flpxxx as, put it in this cell
invfile - The DC6 file that this item uses in your inventory
(this is the one most commonly edited, I use the above method
exactly)
uniqueinvfile - The DC6 file that the unique version of
this item uses in your inventory.
special - it's blank
Transmogrify - Whether or not the item can be right clicked
and be changed into another item (Fusman's morphing gem uses
this)
TMogType - The 3 character code which respresents the
item that this item becomes when right clicked (see Transmogrify)
TMogMin/TMogMax - The min/max quantity appearing of the
item in Transmogrify
useable - Can item be be used by right-clicking it eg.
potions, scrolls etc
throwable - Can item be thrown?
type - The group this item belongs to eg. Books, potions
etc
type2 - 2nd group item can belong to. (eg.Gems have 2
group, gemtype and gemquality)
sound - The number of the sound the item makes when dropped
or moved in the inventory.
unique - only 1 allow per person at a time (eg, bark scroll/meph
soulstone) <Xavon Wrentaile: It's to state whether item only
appears as a unique>
transparent - Unknown (only torch has 1, else 0)
transtbl - Used for gems to apply their 'color' to a socketed
item. Not sure of the values, but 5 seems to make the item change
to the appropriate color
lightradius - The light radius of the item (the higher
the brighter)
belt - Whether or not the item can be placed in a belt
slot
autobelt - Whether or not the item appears in your belt
when picked up
stackable - Whether or not the item can be stacked (doesn't
seem to work unless item was already meant to stack, am looking
into it, some ppl are
trying to stack healing potions) <JBouley: Potion stacking
doesn't work; the game treats the entire stack as a single potion>
minstack/maxstack - Min/max number in stack found for
stackable items
spawnstack - max amt spawnable (ref to arrows/bolt/keys
to get a good picture)
quest - Which quest this item is related to (if a quest
item)
missiletype - What missile type this item uses when this
item is thrown. (jav/potions)
spellicon - Which spellicon should be used, when you use
the item (eg. the throwing-icon for jav's )
durwarning - Which icon appears for low durability warnings
qntwarning - How low the durability of the item can get
before it starts warning you
gemoffset - Unknown (always 0 anyways)
BetterGem - (Gems only) What gem code is the next step
up when it's upgraded by a shrine or cube (non=none,else follow
'code')
bitfield1 - Unknown
{vendorname}Min/Max - Min/Max number of the item that
{vendorname} will have for sale if the item is spawnable
{vendorname}MagicMin/MagicMax - Min/Max number of magical
versions of the item that {vendorname} will have for sale if
the item is spawnable
shopMagicLvl - Not 100%, somehow relates to the level
of the prefixes that the magical items sold by {vendorname} can
have
Source/Game Art - Unknown
Transform - Not certain, related to either the unique
in-game gfx or a flag as to whether the item color shifts for
magical versions of itself (0s all
the way)
InvTrans - Not certain, related to either the unique inventory
gfx or a flag as to whether the item color shifts for magical
versions of itself (still
all 0s)
SkipName - Unknown
NightmareUpgrade - When this item appears in Nightmare
difficulty, the item x rows down will actually appear instead
(x being the value entered) <JBouley: I don't know if this
works well or not, but you can simply put the three-character
itemcode for the item your want it to upgrade to>
HellUpgrade - When this item appears in Hell difficulty,
the item x rows down will actually appear instead (x being the
value entered) <JBouley: I don't know if this works well or
not, but you can simply put the three-character itemcode for
the item your want it to upgrade to>
mindam/maxdam - If useable as a weapon, min/max damage
caused
PermStoreItem - When set to 1, the item will never run
out in the shop; you can keep buying it as much as you want
Nameable - possibly to state whether it can be personalised?
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=236]Knowledge Base - Misc.txt File Guide[/url]

View File

@ -0,0 +1,150 @@
# D2Mods Knowledge Base: Article 237
# Title: Missiles.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=237
Missiles.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:16 pm
Views: 7589
Description: by Ric Faith
Categories: File Guides (1.09x)
A. Missile - Name of missile
B. Id - MissileID number
C-D. Vel/MaxVel - Starting Velocity/Max Velocity of the missile. Are the same unless you intend to you Accel
E. Accel - Acceleration, rate of change of velocity
F. Range - Range of missile (for skills, change range in skills.txt)
G. LevRange - additional range/lvl for missile
H. Light - light radius effect of missile
I. Flicker - gives a flickering/magical effect
J-L. Red/Green/Blue - Colors for changing the color of the light (col H)
M. InitSteps - no. of frames in Celfile (col P) to execute before missile is in flight
N. Activate - ?? (Mostly 0)
O. LoopAnim - for looping the anim celfile, 0=NO, 1=YES
P. CelFile - name of .dcc file for which the missile anim is in.
When trying out different gfx for a skill, this is the column that you
experiment with.
Q. AnimLen - the length of the anim in CelFile, may be lesser than
the Celfile itself, it'll just play until the frame specified here. If
you experiment with Celfile, this usually is the number of frames of
the Celfile (eg. groundFireBig has an animlen of 37)
R. AnimSpeed - How many frames to play per second
S. RandStart - To create a effect of randomness of playing the anim. (eg. for ShockField trap for assassin)
T. SubLoop - to indicate usage of looping animation
U. SubStart - which frame to start looping from
V. SubStop - which frame to restart loop
W. CollideType - ?? Specifies type of collision (possibly anim reaction?)
X. CollideKill - Will it be 'killed' if it collides
Y. CollideFriend - Can it hit an ally
Z. LastCollide - 0, can continue after colliding. 1, cannot
AA. Collision - Does it collide at all?
AB-AC. ClientCol/Send - ?? Something to do with D2Client, no idea.
AD. NextHit - Can it hit more than 1 target
AE. NextDelay - How long before it can hit another target (25 ~ 1 sec)
AF. Size - Area effect of missile
AG. CanDestroy - 1 hit kill? Dunno
AH. ToHit - Any bonus/penalty to AR
AI. AlwaysExplode - will it always explode, use with CollideKill=0
for some interesting explosions (don't deal damage, but it's an effect)
AJ. Explosion - to denote missile being an explosion
AK. CanSlow - Can playing of the gfx be slowed, eg. using Slow Missiles
AL. ReturnFire - is retaliation allowed (eg, Dung Beetles's charged bolts)
AM. GetHit - Can it activate GetHit-skills.
AN. Knockback - % chance to knockback (somehow 1 is more common than big numbers, so I think it's probably a binary)
AO. Trans - Translucency of missile gfx
AP. Qty - Qty of missile used (eg. Arrow will deplete 1 arrow)
AQ. Pierce - Can missile be piercing, continue thru enemy etc.
AR-AU. ParamX/ParamX Comment - settings for missile see individual missile row for exact details
AV. SpecialSetup - Requires certain items (only throwing potions have 1)
AW. Open - ??
AX. Beta - Used in the beta version
AY. Skill - to link to the relevant skill in skills.txt
AZ. HitShift - used for calculation of increment of damages (eg. 1
pt of dmg in Hitskill 8 -> 1 dmg in game, 1 pt in Hitskill 7 ->
0.5, Hitskill 6 -> 0.25)
BA. SrcDamage - Is damage calculated elsewhere, is it dependant on item/missile
BB-BC. MinDamage/MaxDamage - Min/Max value for phys Damage dealt
BD-BF. LevDam1-3 - additional dmg/lvl (lvldmg1 for 1-8, lvldmg2 for 9-15, lvldmg3 for >15)
BG. EType - Elemental type dmg (cold,ltng,fire,mag,pois,etc.)
BH-BI. EMin/EMax - Min/Max value for elemental Damage dealt
BJ-BL. ELev1-3 - additional elem dmg/lvl (lvldmg1 for 1-8, lvldmg2 for 9-15, lvldmg3 for >15)
BM. ELen - length of duration for cold/pois elements
BN-BP. ELevLen1-3 - additional duration of ELen (lvldmg1 for 1-8, lvldmg2 for 9-15, lvldmg3 for >15)
BQ. HitClass - ??
BR. NumDirect - ??
BS. LocalBlood - ??
BT. DamageRate - For skills that deal dmg over a period of time,
this is a factor which the damage is dealt. Factor=DamageRate/1024
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=237]Knowledge Base - Missiles.txt File Guide[/url]

View File

@ -0,0 +1,594 @@
# D2Mods Knowledge Base: Article 238
# Title: Monstats.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=238
Monstats.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:21 pm
Views: 9114
Description: by Nefarius
Categories: File Guides (1.09x)
MANY THX TO ALL THOSE WHO WHERE KIND ENOUGH TO CONTRIBUTE DATA
Class: String Code (Monster Name)
nameco: Reference Only (Can contain anything without any effect on the game)
Type: Reference Only (Can contain anything without any effect on the game)
Descriptor: String Code (Monsters Special Abilities) (eg: Lays Eggs)
BaseId: Monster behaviour AI ID (eg: To give a monster a skeletons AI set this to 1)
PopulateId: Reference Only (Levels.txt Spawning ID)
Spawned: Boolean (1=Spawnable, 0=Unspawnable thru the M1-M25 Columns in Levels.txt)
Beta: Reference Only (Can contain anything without any effect on the game)
Code: Defines the Palshift.DAT file loaded for the Monster (has nothing to do with Animations)
ClientOnly: Setting for Multiplayer (1=Spawned independently from the server, 0=Controled by the Server) (eg: Chickens)
NoMap: Disabled (Pre v1.07 this allowed you to make monsters visible on the AutoMap)
SizeX: The Area this monster Covers (Horizontally) (Untested, probably Reference Only)
SizeY: The Area this monster Covers (Vertically) (Untested, probably Reference Only)
Height: The Height of this monster (Untested, probably Reference Only)
NoOverlays: Untested Boolean (1=No Overlay will be spawned for this monster?, 0=Overlays spawn as normal?)
OverlayHeight: The Height of this monsters Overlays graphics (Untested, probably Reference Only)
Velocity: Normal Speed (Walking Speed)
Run: Running Speed (Only applies when the monster has RN Mode COF files and Animations)
CanStealFrom: Ability to leech life/mana from this monster (1=yes, 0=no)
ColdEffect: How much does this monster get slowed down when frozen,
from 0(cannot be frozen) to 100(almost unable to move).
Rarity: Has no Effect (Probably Reference Only)
Level: MLvl for Normal
Level(N): MLvl for Nightmare
Level(H): MLvl for Hell
MeleeRng: Melee Range (distance in cells this monster can hit you from)
MinGrp: Minimum monster Group (when spawning)
MaxGrp: Maximum monster Group (when spawning)
*Setting all the component columns to 0 makes a monster unselectable
HD: Does this Monster have a HeaD Component. Boolean (for reference only, has no effect if changed)
TR: Does this Monster have a ToRso Component. (Untested, probably Reference Only)
LG: Does this Monster have a LeG Component. (Untested, probably Reference Only)
RA: Does this Monster have a RightArm Component. (Untested, probably Reference Only)
LA: Does this Monster have a LeftArm Component. (Untested, probably Reference Only)
RH: Does this Monster have a RightHand Component. (Untested, probably Reference Only)
LH: Does this Monster have a LeftHand Component. (Untested, probably Reference Only)
SH: Does this Monster have a SHield Component. (Untested, probably Reference Only)
S1: Does this Monster have a Skill1 Component. (Untested, probably Reference Only)
S2: Does this Monster have a Skill2 Component. (Untested, probably Reference Only)
S3: Does this Monster have a Skill3 Component. (Untested, probably Reference Only)
S4: Does this Monster have a Skill4 Component. (Untested, probably Reference Only)
S5: Does this Monster have a Skill5 Component. (Untested, probably Reference Only)
S6: Does this Monster have a Skill6 Component. (Untested, probably Reference Only)
S7: Does this Monster have a Skill7 Component. (Untested, probably Reference Only)
S8: Does this Monster have a Skill8 Component. (Untested, probably Reference Only)
TotalPieces: How many Components does this monster have in Total (Reference Only)
SpawnComponents: Untested. All monsters are set to 0 in this column
BaseW: Base Weapon aka: hth Hand to Hand and so on. (Change only if you Changed The base AI of the Monster)
AIParam1: Modifyable AI Parameter 1
Comment: Comment about the function of the Parameter
AIParam2: Modifyable AI Parameter 2
Comment: Comment about the function of the Parameter
AIParam3: Modifyable AI Parameter 3
Comment: Comment about the function of the Parameter
AIParam4: Modifyable AI Parameter 4
Comment: Comment about the function of the Parameter
AIParam5: Modifyable AI Parameter 5
Comment: Comment about the function of the Parameter
Setting a Mode to 0 will make that animation invisible
ModeDH - Has Death Animation
ModeN - Has Neutral Animation (Standing)
ModeW - Has Walk Animation
ModeGH - Has GetHit Animation
ModeA1 - Has Attack 1 Animation
ModeA2 - Has Attack 2 Animation
ModeB - Has Block Animation
ModeC - Has Cast Animation
ModeS1 - Has Skill1 Animation
ModeS2 - Has Skill2 Animation
ModeS3 - Has Skill3 Animation
ModeS4 - Has Skill4 Animation
ModeDD - Has Corpse Animation
ModeKB - Has KnockBack Animation
ModeSQ - Has Skill Sequence Animation (This dosent Exist, skill
sequences are determined in Skills.txt in the Seqnum column)
ModeRN - Has Run Animation
ElMode - Elementally Enhanced Physical Attack Mode (normal enhanced hit = 4)
ElType - Type of Element used by attack (there are more but primary: 1=fire, 2=lightning, 4=cold, 5=poison)
ElOver - Overlay Effect (From overlays.txt, row# -2)
ElPct - Chance to use Elemental Enhancement on Normal attack (aka 100=always use etc)
ElMinD - Minimum Elemental Damage
ElMaxD - Maximum Elemental Damage
ElDur - Duration (for Cold and Poison etc)
MissA1 - Missile used for Attack 1 (Based on BASE AI) (65535=none, Missile ID = row# -2 from Missiles.txt)
MissA2 - Missile used for Attack 2 (Based on BASE AI) (65535=none, Missile ID = row# -2 from Missiles.txt)
MissS1 - Missile used for Skill 1 (Based on BASE AI) (65535=none, Missile ID = row# -2 from Missiles.txt)
MissS2 - Missile used for Skill 2 (Based on BASE AI) (65535=none, Missile ID = row# -2 from Missiles.txt)
MissS3 - Missile used for Skill 3 (Based on BASE AI) (65535=none, Missile ID = row# -2 from Missiles.txt)
MissS4 - Missile used for Skill 4 (Based on BASE AI) (65535=none, Missile ID = row# -2 from Missiles.txt)
MissC - Missile used for Case (Based on BASE AI) (65535=none, Missile ID = row# -2 from Missiles.txt)
MissSQ - Missile used for Sequence (Based on BASE AI) (65535=none, Missile ID = row# -2 from Missiles.txt)
MoveA1 - Untested (for attack 1)
MoveA2 - untested (for attack 2)
MoveS1 - untested (for skill 1)
MoveS2 - untested (for skill 2)
MoveS3 - untested (for skill 3)
MoveS4 - untested (for skill 4)
MoveC - untested (for cast)
Align: Is this monster fighting on your side (eg: Rogue Scouts) (1=yes, 0=no)
IsMelee: Is this a Melee attacked? (1=yes, 0=no) (aka Can this monster spawn with MultiShot if it’s a boss)
IsSel: Does this monster have a Lifebar when you scroll over it (1=yes, 0=no)
IsSel2: Does this monster have a namebar when you scroll over it
(1=yes, 0=no) (aka, just the name appears like for npcs etc)
NeverSel: 1=This monster can never be highlighted, 0=this monster can be highlighted (the two previous rules apply)
CorpseSel: 1=The corpse can be highlighted (as with Find Potion skill etc), 0=the corpse cannot be highlighted
IsAtt: Is this Monster Attackable (1=yes, 0=nDamage Resist: self explanatory (100 is immune)
Magic Resist: self explanatory (100 is immune)
Fire Resist: self explanatory (100 is immune)
Lightning: Resist: self explanatory (100 is immune)
Cold Resist: self explanatory (100 is immune)
Poison Resist: self explanatory (100 is immune)o)
IsNPC: Is this Monster a NPC (1=yes, 0=no)
IsCritter: Is this Monster a Critter (1=yes, 0=no) (eg: Camels, Chickens, Scorpions etc)
InTown: Can this monster enter town (1=yes, 0=no)
Bleed: Does this Monster Bleed (0=no blood, 1=small blood drops,
2=large blood drops, 3++ random missile from missiles.txt, the greater
the more missiles spawn)
Shadow: does this Monster have a shadow (0=no, 1=yes)
Light: Light Radius, how large is the light radius (highest I tested so far was 25, but probably goes well beyond that)
NoUniqueShift: Does this monster change colors when it spawns as a Boss (0=yes, 1=no)
CompositeDeath: Does this monsters death animation use multiple
components (1=yes, 0=no) (unknown if its only for reference as I didn’t
test it yet)
Skill1 - Skill 1 (don’t change without editing appropriate *.dlls)
Skill1Seq - Animation Sequence Number (don’t set to 0, it will crash) (
to disable a sequence and edit the animation column in skills.txt from
seq to s1-s5 or a1-a2)
Skill1Lvl - Skill LVL (can be modified, level of the skill)
Skill2 - Skill 2 (don’t change without editing appropriate *.dlls)
Skill2Seq - Animation Sequence Number (don’t set to 0, it will crash) (
to disable a sequence and edit the animation column in skills.txt from
seq to s1-s5 or a1-a2)
Skill2Lvl - Skill LVL (can be modified, level of the skill)
Skill3 - Skill 3 (don’t change without editing appropriate *.dlls)
Skill3Seq - Animation Sequence Number (don’t set to 0, it will crash) (
to disable a sequence and edit the animation column in skills.txt from
seq to s1-s5 or a1-a2)
Skill3Lvl - Skill LVL (can be modified, level of the skill)
Skill4 - Skill 4 (don’t change without editing appropriate *.dlls)
Skill4Seq - Animation Sequence Number (don’t set to 0, it will crash) (
to disable a sequence and edit the animation column in skills.txt from
seq to s1-s5 or a1-a2)
Skill4Lvl - Skill LVL (can be modified, level of the skill)
Skill5 - Skill 5 (don’t change without editing appropriate *.dlls)
Skill5Seq - Animation Sequence Number (don’t set to 0, it will crash) (
to disable a sequence and edit the animation column in skills.txt from
seq to s1-s5 or a1-a2)
Skill5Lvl - Skill LVL (can be modified, level of the skill)
LightR - Red in RGB (in 3dgfx mode this controls the tint of the light radius)
LightG - Green in RGB (in 3dgfx mode this controls the tint of the light radius)
LightB - Blue in RGB (in 3dgfx mode this controls the tint of the light radius)
DamageResist: Normal Damage Resist (100 is immune)
MagicResist: Normal Magic Resist (100 is immune)
FireResist: Normal Fire Resist (100 is immune)
LightningResist: Normal Lightning Resist (100 is immune)
ColdResist: Normal Cold Resist (100 is immune)
PoisonResist: Normal Poison Resist (100 is immune)
DamageResist(N): Nightmare Damage Resist (100 is immune)
MagicResist(N): Nightmare Magic Resist (100 is immune)
FireResist(N): Nightmare Fire Resist (100 is immune)
LightningResist Nightmare Lightning Resist (100 is immune)
ColdResist(N): Nightmare Cold Resist (100 is immune)
PoisonResist(N): Nightmare Poison Resist (100 is immune)
DamageResist(H): Hell Damage Resist (100 is immune)
MagicResist(H): Hell Magic Resist (100 is immune)
FireResist(H): Hell Fire Resist (100 is immune)
LightningResist Hell Lightning Resist (100 is immune)
ColdResist(H): Hell Cold Resist (100 is immune)
PoisonResist(H): Hell Poison Resist (100 is immune)
DamageRegen: Amount of HP the monster can regenerate per minute
eLUndead - Stands for undead attacking with physicaö attacks (1=Undead, 0=no)
eHUndead - Stands for undead attacking with magic attacks (1=Undead, 0=no)
eDemon - Stands for Demons (1=is demon, 0=no)
eMagicUsing - Uses Magic Attacks (1=yes, 0=no)
eLarge - Is a large enemy (Act Bosses etc) (1=yes, 0=no)
eSmall - Is a small enemy (Fallen, Imps) (1=yes, 0=no)
eFlying - Can move over water, walls etc (1=yes, 0=no)
eOpenDoors - Can open doors (1=yes, 0=no)
eSpawnCol - Spawning Column (0=M1-25 Levels.txt, 2=S1-S25 Levels.txt and 1=DS1 Files (Maps))
eBoss - Is this a Boss (1=yes, 0=no) (DO NOT MODIFY, will crash your game, internal code must first be edited)
PixHeight - Height in Pixels (has no effect, reference only)
Interact - Can you talk (aka NPC menu etc) with this creature (1=yes, 0=no)
MinHp: Minimum Health, normal
MaxHp: Maximum Health, normal
AC: Armor Class, normal
EXP: Experience, Normal
Block: Chance to Block (only has effect on monsters that have MODE B (block animations))
A1MinD: Attack One Min Damage, normal
A1MaxD: Attack One Max Damage, normal
A1ToHit: Chance to Hit, attack1, normal
A2MinD: Attack Two Min Damage, normal
A2MaxD: Attack Two Max Damage, normal
A2ToHit: Chance to Hit, attack2, normal
S1MinD: Skill1 Min Damage, normal
S1MaxD: Skill1 Max Damage, normal
S1ToHit: Chance to Hit, skill1, normal
MinHp(N): Minimum Health, nightmare
MaxHp(N): Maximum Health, nightmare
AC(N): Armor Class, nightmare
EXP(N): Experience, Nightmare
A1MinD(N): Attack One Min Damage, nightmare
A1MaxD(N): Attack One Max Damage, nightmare
A1ToHit(N): Chance to Hit, attack1, nightmare
A2MinD(N): Attack Two Min Damage, nightmare
A2MaxD(N): Attack Two Max Damage, nightmare
A2ToHit(N): Chance to Hit, attack2, nightmare
S1MinD(N): Skill1 Min Damage, nightmare
S1MaxD(N): Skill1 Max Damage, nightmare
S1ToHit(N): Chance to Hit, skill1, nightmare
MinHp(H): Minimum Health, hell
MaxHp(H): Maximum Health, hell
AC(H): Armor Class, hell
EXP(H): Experience, Hell
A1MinD(H): Attack One Min Damage, hell
A1MaxD(H): Attack One Max Damage, hell
A1ToHit(H): Chance to Hit, attack1, hell
A2MinD(H): Attack Two Min Damage, hell
A2MaxD(H): Attack Two Max Damage, hell
A2ToHit(H): Chance to Hit, attack2, hell
S1MinD(H): Skill1 Min Damage, hell
S1MaxD(H): Skill1 Max Damage, hell
S1ToHit(H): Chance to Hit, skill1, hell
TreasureClass1: Normal Monster TC for normal
TreasureClass2: Champion Monster TC for normal
TreasureClass3: Unique Monster TC for normal
TreasureClass4: SuperUnique Monster TC for normal (unused)
TreasureClass(N)1: Nightmare Monster TC for nightmare
TreasureClass(N)2: Champion Monster TC for nightmare
TreasureClass(N)3: Unique Monster TC for nightmare
TreasureClass(N)4: SuperUnique Monster TC for nightmare (unused)
TreasureClass(H)1: Hell Monster TC for hell
TreasureClass(H)2: Champion Monster TC for hell
TreasureClass(H)3: Unique Monster TC for hell
TreasureClass(H)4: SuperUnique Monster TC for hell (unused)
SpawnPctBonus: Disable (pre 1.07 this increased the chance for good item drops)
Soft: Unknown
Hearh: Disabled (pre v1.07 when MonItemPercent.txt still was active this was used to spawn organs)
Bodypart: Disabled (pre v1.07 when MonItemPercent.txt still was active this was used to spawn organs)
Killable: 1=killable, 0=immortal
Switch: 1=yes, 0=no (this controls if the monsters AI can shift to Align, thru skills like Conversion, Revive etc)
Restore: 1=yes, 0=no (unknown, probably related to healing spells)
NeverCount: 1=yes, 0=no (unknown)
HitClass: Refer to HitClass.txt for more data (best left alone.)
SPLEndDeath: Refers to monsters which die special deaths (Fetish Shamans which turn into another monster for eg.)
SPLGetModeChart: Unknown
SPLEndGeneric: Unknown
SPLClientEnd: Unknown
DeadCollision: Can you walk over this corpse 0=yes, 1=no (aka duriel)
UnflatDeath: unknown (might have to do with corpses being flat on ground in perspective mode?)
BloodLocal: Should be set to the same as the bleed column, thought I am unsure about its function.
DeathDamage: 1=yes, 0=no (does this monster do damage after it dies, based on hitpoints) (aka undead flayers etc)
PetIgnore: 1=yes, 0=no (is this enemy ignored by summons)
NoGfxHittest: unknown
HitTestTop: unknown
HitTestLeft: unknown
HitTestWidth: unknown
HitTestHeight: unknown
GenericSpawn: unknown (related to act5 monsters in general)
AutoMapCel: unknown (not related to automap)
Sparsepopulate: unknown
Zoo: can this monster be revived by other monsters (1=yes, 0=no) (???)
ObjectCollision: unknown (might have to do with ghosts, but they don’t have anything set in here)
Inert: unknown
Annex - Elmode & ElType
(by Ric Faith & Eisead)
ElMode: 0 - Enchant?
ElType: 1 - Fire Enchanting (the 4-armed Act 2 chaps that enchant before
striking)
ElMode: 4 - On hit (Attack 1)
ElType:
1 - Fire on hit
2 - Ltng on hit
3 - Magic on hit
4 - Cold on hit
5 - Pois on hit
6 - Life drain on hit (eg. Vampires)
7 - Mana drain on hit (eg. Spectres)
8 - Stamina drain on hit (eg. Itchies)
9 - Stun on hit (eg. ThornedHulks)
10 - Random elem on hit (the BEST IMO, used by Oblivion Knights i think)
11 - Burning damage
ElMode: 5 - On Attack (Attack 2)
ElType:
2 - Shocking hit (the bats with the Shocking Hit)
9 - Stunning hit
ElMode: 14 - Sequence attack
ElType: 4 - Cold on seq (the Claw Vipers i think)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=238]Knowledge Base - Monstats.txt File Guide[/url]

View File

@ -0,0 +1,60 @@
# D2Mods Knowledge Base: Article 239
# Title: Montype.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=239
Montype.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:21 pm
Views: 6428
Description: by SiLenTx
Categories: File Guides (1.09x)
Name = Monster's Name that is Identical to Monstats.txt (Reference Only)
Token = Monster's Token Id. The directory of Monster's Animation to be used and
located in data\global\monsters\*. Useful for Token Changing.
DT Dir = Number of Directions for Death Animation
NU Dir = Number of Directions for Neutral Animation
WL Dir = Number of Directions for Walk Animation
GH Dir = Number of Directions for GetHit Animation
A1 Dir = Number of Directions for Attack1 Animation
A2 Dir = Number of Directions for Attack2 Animation
BL Dir = Number of Directions for Block Animation
SC Dir = Number of Directions for Cast Animation
S1 Dir = Number of Directions for Skill1 Animation
S2 Dir = Number of Directions for Skill2 Animation
S3 Dir = Number of Directions for Skill3 Animation
S4 Dir = Number of Directions for Skill4 Animation
DD Dir = Number of Directions for Dead Animation
KB Dir = Number of Directions for KnockBack Animation
SQ Dir = Number of Directions for Sequence Animation
RN Dir = Number of Directions for Run Animation
Warning : You should only change the number of directions columns if you've
change the animation itself (dccs), cofs or by Token Changing.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=239]Knowledge Base - Montype.txt File Guide[/url]

View File

@ -0,0 +1,138 @@
# D2Mods Knowledge Base: Article 240
# Title: Npc.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=240
Npc.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:22 pm
Views: 6951
Description: by Phrozen Heart & Mordini
Categories: File Guides (1.09x)
A. npc : Name of the NPC vendor
B. buy mult : Pecentage of the item's value the vendor will buy items from you (see note below for values)
C. sell mult : Pecentage of the item's value the vendor will sell items to you (see note below for values)
D. rep mult : Pecentage of the item's value the vendor will repair items for you (see note below for values)
E. questflag A : First quest flag
that changes the percentages that vendors will pay for an item (eg.
Flag 9 is at the end of A2Q1 after you kill Radement)
F. questbuymult A : Pecentage of the
item's value the vendor will buy items from you when questflag A is set
(see note below for values)
G. questsellmult A : Pecentage of
the item's value the vendor will sell items to you when questflag A is
set (see note below for values)
H. questreplmult A : Pecentage of
the item's value the vendor will repair items for you when questflag A
is set (see note below for values)
I. questflag B : Second quest flag
that changes the percentages that vendors will pay for an item (eg.
Flag 9 is at the end of A2Q1 after you kill Radement)
J. questbuymult B : Pecentage of the
item's value the vendor will buy items from you when questflag B is set
(see note below for values)
K. questsellmult B : Pecentage of
the item's value the vendor will sell items to you when questflag B is
set (see note below for values)
L. questreplmult B : Pecentage of
the item's value the vendor will repair items for you when questflag B
is set (see note below for values)
M. questflag C : Third quest flag
that changes the percentages that vendors will pay for an item (eg.
Flag 9 is at the end of A2Q1 after you kill Radement)
N. questbuymult C : Pecentage of the
item's value the vendor will buy items from you when questflag C is set
(see note below for values)
O. questsellmult C : Pecentage of
the item's value the vendor will sell items to you when questflag C is
set (see note below for values)
P. questreplmult C : Pecentage of
the item's value the vendor will repair items for you when questflag C
is set (see note below for values)
Q. max buy : Vendor will never pay
more than this amount for any item in normal difficulty no matter what
the multiplier in column A is
R. max buy (N) : Vendor will never
pay more than this amount for any item in nightmare difficulty no
matter what the multiplier in column A is
S. max buy (H) : Vendor will never
pay more than this amount for any item in hell difficulty no matter
what the multiplier in column A is
'One basic principal you need to understand to edit this file effectively is that the multiplier values in most
of the columns work on the premise that 100% of an item's value in either the armor.txt, weapons.txt or misc.txt
file is represented by the value 1024. For instance a value of 768 would mean just 75% of the item's value while
2048 would be 200% (twice it's regular value)' -Mordini
Example (v1.09):
At the start of Act 2, Fara will sell you a regular crossbow for 2345 gold right? Column C in npc.txt for Fara is 1024
which is 100% so we know that 2345 is 100% of the crossbow's value in weapons.txt. If you then changed you mind, you could
sell it back to her for half it's actual value (512 in Column B = 50%). Once you kill Radament and visit Atma this sets
off quest flag A (Column E in npc.txt) which makes all of the act 2 vendors suddenly get very generous. With your latest
spoils, you decide that the crossbow was a good idea in the first place and buy it back from Fara which now only costs
2111 because Fara is now selling all her wares at 90% of their regular value (922 in Column G) once the flag is set.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=240]Knowledge Base - Npc.txt File Guide[/url]

View File

@ -0,0 +1,94 @@
# D2Mods Knowledge Base: Article 241
# Title: Objgroup.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=241
Objgroup.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:23 pm
Views: 6174
Description: by Nefarius
Categories: File Guides (1.09x)
GroupName: Reference Only (Internal Name of the Object Group, can be
anything, not used anywhere else so changes dont have any effect)
Offset: (=ID) (the ID to use in the ObjGrp0-7 Columns in Levels.txt to spawn
this group)
ID0: Object ID 1 (ID from Objects.txt)
DENSITY0: Density in which this object can spawn (minimum amount of cells
between each spawned object of this type)
PROB0: Chance to Spawn this Object
ID1: Object ID 2 (ID from Objects.txt)
DENSITY1: Density in which this object can spawn (minimum amount of cells
between each spawned object of this type)
PROB1: Chance to Spawn this Object
ID2: Object ID 3 (ID from Objects.txt)
DENSITY2: Density in which this object can spawn (minimum amount of cells
between each spawned object of this type)
PROB2: Chance to Spawn this Object
ID3 Object ID 4 (ID from Objects.txt)
DENSITY3: Density in which this object can spawn (minimum amount of cells
between each spawned object of this type)
PROB3: Chance to Spawn this Object
ID4: Object ID 5 (ID from Objects.txt)
DENSITY4: Density in which this object can spawn (minimum amount of cells
between each spawned object of this type)
PROB4: Chance to Spawn this Object
ID5: Object ID 6 (ID from Objects.txt)
DENSITY5: Density in which this object can spawn (minimum amount of cells
between each spawned object of this type)
PROB5: Chance to Spawn this Object
ID6: Object ID 7 (ID from Objects.txt)
DENSITY6: Density in which this object can spawn (minimum amount of cells
between each spawned object of this type)
PROB6: Chance to Spawn this Object
ID7: Object ID 8 (ID from Objects.txt)
DENSITY7: Density in which this object can spawn (minimum amount of cells
between each spawned object of this type)
PROB7: Chance to Spawn this Object
SHRINES: Does this group contain Shrines (1=yes, 0=no)
WELLS: Does this group contain Wells (1=yes, 0=no)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=241]Knowledge Base - Objgroup.txt File Guide[/url]

View File

@ -0,0 +1,50 @@
# D2Mods Knowledge Base: Article 242
# Title: Rareprefix.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=242
Rareprefix.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:24 pm
Views: 6167
Description: by Mordini
Categories: File Guides (1.09x)
A. name - String key for that particular rare item prefix
B. version - 0 for regular D2, 100 for the Expansion
C. itype1 - 1st item type (see itemtypes.txt) that this rare prefix can spawn on
D. itype2 - 2nd item type (see itemtypes.txt) that this rare prefix can spawn on
E. itype3 - 3rd item type (see itemtypes.txt) that this rare prefix can spawn on
F. itype4 - 4th item type (see itemtypes.txt) that this rare prefix can spawn on
G. itype5 - 5th item type (see itemtypes.txt) that this rare prefix can spawn on
H. itype6 - 6th item type (see itemtypes.txt) that this rare prefix can spawn on
I. itype7 - 7th item type (see itemtypes.txt) that this rare prefix can spawn on
J. etype1 - 1st item sub-type (see itemtypes.txt) that this rare prefix cannot spawn on
K. etype2 - 2nd item sub-type (see itemtypes.txt) that this rare prefix cannot spawn on
L. etype3 - 3rd item sub-type (see itemtypes.txt) that this rare prefix cannot spawn on
M. etype4 - 4th item sub-type (see itemtypes.txt) that this rare prefix cannot spawn on
N. add - Untested. Most likely a defunct item cost modifier.
O. multiply - Untested. Most likely a defunct item cost modifier.
P. divide - Untested. Most likely a defunct item cost modifier.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=242]Knowledge Base - Rareprefix.txt File Guide[/url]

View File

@ -0,0 +1,50 @@
# D2Mods Knowledge Base: Article 243
# Title: Raresuffix.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=243
Raresuffix.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:24 pm
Views: 6061
Description: by Mordini
Categories: File Guides (1.09x)
A. name - String key for that particular rare item suffix
B. version - 0 for regular D2, 100 for the Expansion
C. itype1 - 1st item type (see itemtypes.txt) that this rare suffix can spawn on
D. itype2 - 2nd item type (see itemtypes.txt) that this rare suffix can spawn on
E. itype3 - 3rd item type (see itemtypes.txt) that this rare suffix can spawn on
F. itype4 - 4th item type (see itemtypes.txt) that this rare suffix can spawn on
G. itype5 - 5th item type (see itemtypes.txt) that this rare suffix can spawn on
H. itype6 - 6th item type (see itemtypes.txt) that this rare suffix can spawn on
I. itype7 - 7th item type (see itemtypes.txt) that this rare suffix can spawn on
J. etype1 - 1st item sub-type (see itemtypes.txt) that this rare suffix cannot spawn on
K. etype2 - 2nd item sub-type (see itemtypes.txt) that this rare suffix cannot spawn on
L. etype3 - 3rd item sub-type (see itemtypes.txt) that this rare suffix cannot spawn on
M. etype4 - 4th item sub-type (see itemtypes.txt) that this rare suffix cannot spawn on
N. add - Untested. Most likely a defunct item cost modifier.
O. multiply - Untested. Most likely a defunct item cost modifier.
P. divide - Untested. Most likely a defunct item cost modifier.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=243]Knowledge Base - Raresuffix.txt File Guide[/url]

View File

@ -0,0 +1,136 @@
# D2Mods Knowledge Base: Article 244
# Title: Runes.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=244
Runes.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:25 pm
Views: 7568
Description: by Phrozen Heart
Categories: File Guides (1.09x)
A. Name : The name of the Rune Word's string key entry in the the expansionstring.tbl file.
B. Rune Name : I'm pretty sure this is just for
reference as column A and it's string value determine the in-game name
of the rune word.
C. complete : Pretty self explanatory this one. If there's a 1 in it, it's complete, if not then it isn't.
D. server : Unknown
E. itype1 : The first item type that the Rune Word will work on (the type list can be found in the itemtypes.txt file).
F. itype2 : second item type (if the word is to be
used by multiple item types) that the Rune Word will work on (the type
list can be found in the itemtypes.txt file).
G. itype3 : The third item type (if the word is to
be used by multiple item types) that the Rune Word will work on (the
type list can be found in the itemtypes.txt file).
H. itype4 : The fourth item type (if the word is to
be used by multiple item types) that the Rune Word will work on (the
type list can be found in the itemtypes.txt file).
I. itype5 : The fifth item type (if the word is to
be used by multiple item types) that the Rune Word will work on (the
type list can be found in the itemtypes.txt file).
J. itype6 : The sixth item type (if the word is to
be used by multiple item types) that the Rune Word will work on (the
type list can be found in the itemtypes.txt file).
K. etype1 : The first item sub-type that the Rune Word is excluded from.
L. etype2 : The second item sub-type that the Rune Word is excluded from.
M. etype3 : The third item sub-type that the Rune Word is excluded from.
N. Rune1 : The code for the first rune in the rune word (rune codes are listed in the misc.txt file).
O. Rune2 : The code for the second rune in the rune word (rune codes are listed in the misc.txt file).
P. Rune3 : The code for the third rune in the rune word (rune codes are listed in the misc.txt file).
Q. Rune4 : The code for the fourth rune in the rune word (rune codes are listed in the misc.txt file).
R. Rune5 : The code for the fifth rune in the rune word (rune codes are listed in the misc.txt file).
S. Rune6 : The code for the sixth rune in the rune word (rune codes are listed in the misc.txt file).
T. T1Code1 : First magical modifier code that applies to the completed runeword
U. T1Param1 : Parameter 1 for column T1Code1 (see magic code list for values)
V. T1Min1 : Parameter 2 for column T1Code1 (see magic code list for values)
W. T1Max1 : Parameter 3 for column T1Code1 (see magic code list for values)
X. T1Code2 : Second magical modifier code that applies to the completed runeword
Y. T1Param2 : Parameter 1 for column T1Code2 (see magic code list for values)
Z. T1Min2 : Parameter 2 for column T1Code2 (see magic code list for values)
AA. T1Max2 : Parameter 3 for column T1Code2 (see magic code list for values)
AB. T1Code3 : Third magical modifier code that applies to the completed runeword
AC. T1Param3 : Parameter 1 for column T1Code3 (see magic code list for values)
AD. T1Min3 : Parameter 2 for column T1Code3 (see magic code list for values)
AE. T1Max3 : Parameter 3 for column T1Code3 (see magic code list for values)
AF. T1Code4 : Fourth magical modifier code that applies to the completed runeword
AG. T1Param4 : Parameter 1 for column T1Code4 (see magic code list for values)
AH. T1Min4 : Parameter 2 for column T1Code4 (see magic code list for values)
AI. T1Max4 : Parameter 3 for column T1Code4 (see magic code list for values)
AJ. T1Code5 : Fidth magical modifier code that applies to the completed runeword
AK. T1Param5 : Parameter 1 for column T1Code5 (see magic code list for values)
AL. T1Min5 : Parameter 2 for column T1Code5 (see magic code list for values)
AM. T1Max5 : Parameter 3 for column T1Code5 (see magic code list for values)
AN. T1Code6 : Sixth magical modifier code that applies to the completed runeword
AO. T1Param6 : Parameter 1 for column T1Code6 (see magic code list for values)
AP. T1Min6 : Parameter 2 for column T1Code6 (see magic code list for values)
AQ. T1Max6 : Parameter 3 for column T1Code6 (see magic code list for values)
AR. T1Code7 : Seventh magical modifier code that applies to the completed runeword
AS. T1Param7 : Parameter 1 for column T1Code7 (see magic code list for values)
AT. T1Min7 : Parameter 2 for column T1Code7 (see magic code list for values)
AU. T1Max7 : Parameter 3 for column T1Code7 (see magic code list for values)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=244]Knowledge Base - Runes.txt File Guide[/url]

View File

@ -0,0 +1,248 @@
# D2Mods Knowledge Base: Article 245
# Title: Setitems.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=245
Setitems.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 9:28 pm
Views: 7365
Description: by Perfect Cell
Categories: File Guides (1.09x)
*Note: any reference to string.tbl can apply to patchstring.tbl or expansionstring.tbl if you are mofidying those files instead
Name (column A) - The name of the full set. This value must be found in the string.tbl on the left side.
version (column B) - Determines if the set is in normal Diablo II (0), or expansion only (100)
level (column C) - The level the character must be before he/she can gain the full set bonus
NumItems (column D) - The numer of items found in the set. From a minimum of 2 to a maximum 6
transform (column E) - A flag that determines
whether or not items in the set change color (palette swap). 1 means
they do change color (consult color table), and 0 means they do not.
transformcolor (column F) - If transform is set to
1, this column determines the color the items will change to. Valid
numbers are 0 to 20. See this table for reference.
Item1 (column G) - 3 letter item code of the first item in the set (from weapons.txt or armor.txt)
Item1 Suffix (column H) - The name of the set item
found in the string.tbl; the game uses the right side string for the
name of the item found in game. Set them both to the same string to
avoid confusion ;)
Item1 Rarity (column I) - The relative rarity of
the item compared to other items of the same item type (eg. if you have
8 sets each containing a set, use this column to set how rare each ring
is); set to 1 in all cases except jewelery.
Item1 Add (column J) - Used when making items that
gain green bonuses when other pieces of the set are collected. Must be
set to 0, 2, 3, 4, 5 or 6.
ValueMeans
0Does not get green bonuses, but instead has a maximum of 7 bonuses that always spawn with the item
1Item
gains 1 green bonus based on which item is currently being worn. It
will gain bonus CodeA with item 2 being used, CodeB with item 3 being
used. Only tested on 3 item set.
2Item
gains green bonuses once 2 items are worn. It will gain further bonuses
for 3, 4, 5 and 6 items if you have codes in CodeB, CodeC, CodeD, and
CodeE columns
Item1 Lvlreq (column K) - The level required to equip this item, set to 0 for no level requirement.
Item1 cost mult (column L) - A cost multiplier used when dealing with buying and selling the item from vendors.
Item1 cost add (column M) - A cost multiplier used when dealing with buying and selling the item from vendors.
I1Code1 (column N) - The first magic modifier that this item gets when found.
I1Param1 (column O) - A paramater column used with
some magic modifiers like dmg-pois (length), freeze (min % freeze
chance), etc
I1Min1 (column P) - The minimum value for magic
modifier 1; when the 'freeze' modifier is used, this column acts as the
maximum % chance of freezing.
I1Max1 (column Q) - The maximum value for magic modifier 1; use this to create ranges on items.
I1Code2 (column R) - The second magic modifier that this item gets when found.
I1Param2 (column S) - same as I1Param1, except for modifier 2
I1Min2 (column T) - same as I1Min1, except for modifier 2
I1Max2 (column U) - same as I1Max1, except for modifier 2
I1CodeA (column V) - If the 'Item1 Add' column is
set to 2, this modifier will kick in when 2 items of the set are
collected. If Item1 Add is set to 1, it gives a single green bonus when
item 'A' is equipped with this item.
I1ParamA (column W) - same as I1Param1, except for modifier A
I1MinA (column X) - same as I1Min1, except for modifier A
I1MaxA (column Y) - same as I1Max1, except for modifier A
I1CodeB (column Z) - If the 'Item1 Add' column is
set to 2, this modifier will kick in when 3 items of the set are
collected. If Item1 Add is set to 1, it gives a single green bonus when
item 'B' is equipped with this item. It gives a different green bonus
than the bonus above for CodeA.
I1ParamB (column AA) - same as I1Param1, except for modifier B
I1MinB (column AB) - same as I1Min1, except for modifier B
I1MaxB (column AC) - same as I1Max1, except for modifier B
I1CodeC (column AD) - If the 'Item1 Add' column is
set to 2, this modifier will kick in when 4 items of the set are
collected. If Item1 Add is set to 1, it gives a single green bonus when
item 'C' is equipped with this item. It gives a different green bonus
than the bonus above for CodeA or CodeB
I1ParamC (column AE) - same as I1Param1, except for modifier C
I1MinC (column AF) - same as I1Min1, except for modifier C
I1MaxC (column AG) - same as I1Max1, except for modifier C
I1CodeD (column AH) - If the 'Item1 Add' column is
set to 2, this modifier will kick in when 5 items of the set are
collected. If Item1 Add is set to 1, it gives a single green bonus when
item 'D' is equipped with this item. It gives a different green bonus
than the bonus above for CodeA, CodeB or CodeC
I1ParamD (column AI) - same as I1Param1, except for modifier D
I1MinD (column AJ) - same as I1Min1, except for modifier D
I1MaxD (column AK) - same as I1Max1, except for modifier D
I1CodeE (column AL) - If the 'Item1 Add' column is
set to 2, this modifier will kick in when 6 items of the set are
collected. If it was set to 0, this is the 7th bonus on the item. If
Item1 Add is set to 1, it gives a single green bonus when item 'E' is
equipped with this item. It gives a different green bonus than the
bonus above for CodeA, CodeB, CodeC or CodeD
I1ParamE (column AM) - same as I1Param1, except for modifier E
I1MinE (column AN) - same as I1Min1, except for modifier E
I1MaxE (column AO) - same as I1Max1, except for modifier E
Item2 (column AP) to I6MaxE (column HG) are identical in nature to the column descriptions found above for Item 1.
PCode2 (column HH) - The partial set bonus given to
the character when 2 items are worn (this bonus is in gold, and is
different than the 'green' item bonuses)
PParam2 (column HI) - A paramater column used with
some magic modifiers like dmg-pois (length), freeze (min % freeze
chance), etc
PMin2 (column HJ) - The minimum value for magic
modifier PCode2; when the 'freeze' modifier is used, this column acts
as the maximum
% chance of freezing.
PMax2 (column HK) - The maximum value for magic modifier PCode2; use this to create ranges on items.
PCode3 (column HL) to PMax5 (column HW) - identical
in nature to PCode2 to PMax2 columns, but are for partial set bonuses
when using 3, 4 and 5 items in the set.
FCode1 (column HX) - The first bonus given to the
character when the full set is being worn. This bonus is in gold and is
gained in addition to the partial set bonuses. A maximum of 6 bonuses
can be given when a full set is equipped, the other bonuses are covered
in columns FCode2 (column IB) to FMax6 (column IU).
FParam1 (column HY) - A paramater column used with
some magic modifiers like dmg-pois (length), freeze (min % freeze
chance), etc
FMin1 (column HZ) - The minimum value for magic
modifier FCode1; when the 'freeze' modifier is used, this column acts
as the maximum % chance of freezing.
FMax1 (column IA) - The maximum value for magic modifier FCode1; use this to create ranges on items.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=245]Knowledge Base - Setitems.txt File Guide[/url]

View File

@ -0,0 +1,256 @@
# D2Mods Knowledge Base: Article 246
# Title: Skills.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=246
Skills.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 9:35 pm
Views: 11692
Description: by Ric Faith
Categories: File Guides (1.09x)
A. Skill - Skill name
B. Id - SkillID
C. charclass - char specific skill/spell
D. ClassReq - only specific ppl/monsters can use skill
E. Monster - only monsters can use skill
F. Enhanceable - All skills have this to 1 barring tomes/scrolls/basic
attacks
G. AttackRank - ? could be preference
H-M. Itemclass1-6 - weapons/items associated with skill
N. anim - char use the anim for the usage of skill/spell
O. monanim - mon use the anim for the usage of skill/spell
P. seqnum - ?? thought it may be delay but not
Q. isaura - is an aura
R. Durability - ?? impale is included but doesn't seem to indicate
dur decrease lvls
S. Shiver - ? thought to be possible mvmt (fend/inferno/strafe)
but zeal/arctic blast not incl.
T. UseAttack - Usage of weapon for attack (strangely WW is 0)
U. LineOfSight - Must be able to see location to cast (4=yes
0=no)
V. Targetable - Hit to effect
W. SearchEnemyXY - Must target enemy to have effect
X. SearchMonsterNear - Need to select an enemy to have effect
(raisedead/C.Explosion/Fist.Heavens)
Y. SelectDead - Skills that target Dead ppl, eg. Raisedead,Findpotion/item
Z. SearchOpenXY - FireWall/Blizzard/Meteor/Fissure/Volcano (area
spells?)
AA. TargetPet - Unsummon/HolyBolt Target summons/conjures
AB. TargetAlly - HolyBolt Target Allies.
AC. ItemEffect - ?
AD. range - char will move to a certain range to use skill (attack
uses h2h, certain spells/skills use range, long-ranged skills
use none)
AE. AttackNoMana - ?? apparently not quite as it says
AF. reqlevel - lvl required to learn/master the skill/spell
AG-AJ. reqstr/dex/int/vit - alternative requirements (str/dex/int/vit)
to master the skill
AK-AM. reqskill1-3 - Skills which must be learnt before this
skill can be mastered
AN-AP. State1-3 - ? (something like STATE_FROZENARMOR kinda thing?)
AQ. Delay - Casting delay (time in between where skill cannot
be used again)
AR. SkillPage - Which page is skill displayed on (lowest page
is numbered 1, middle 2, top 3)
AS. SkillRow - Which row is skill displayed on (starting from
top, rows 1-6)
AT. SkillColumn - Which column is skill displayed on (starting
from left, cols 1-3)
AU. IconCel - (X-1) frames for the icon in data\global\ui\spells\XXskillicon.dc6
(XX is char-dependant). eg. Sorc Fire Bolt is 0, so the computer
will look under SOskillicon.dc6 frames 1 and 2 for the icons.
AV. leftskl - 0 means skill can be set on leftmousebutton, 1
means it cannot.
AW. manashift - determines the increment for mana cost. 8 - whole
integer, 7 - 0.5, 6 - 0.25, 5 - 0.125.. hence if a spell states
20 manacost with a manashift of 8, it costs 20 mana ingame. If
the manashift were 6, then it would cost 5 mana to use the skill.
(However Inferno seems to buck the rule)
AX. mana - mana cost (affected by manashift)
AY. lvlmana - additional mana cost per level for the skill (affected
by manashift)
AZ. Interrupt - Is skill interruptable?
BA. InTown - Can skill be used in town?
BB. Periodic - Auras/Masteries/Passives (less Warmth?) are 1,
could be to signal continuous usage
BC. Finishing - finishing move for Assassin
BD. Passive - Is skill passive?
BE-BP. Param1-6/Param1-6 Description - Varies from skill to skill,
read description for description
BQ-BR. effect/leveleffect - Notes by Blizzard (read Nova for
a laugh )
BS. InGame - all char skills are 1, monster skills vary
BT. Done - Is skill completed (usable)? (but Unsummon/LH Throw/Swing
have 0??)
BU. Open - ??
BV. Beta - ?? Used in Beta-testing?
BW-BX. What's Left - code/art - Blizzard's remark column
BY. ToHit - Bonus to AR
BZ. LevToHit - increase to bonus to AR/lvl
CA. HitShift - determines the increment of dmg (similar to manashift)
CB. SrcDam - See below for amendment by Scott Weaver
CC-CD. MinDam/MaxDam - Min/Max phys dmg dealt
CE-CG. LevDam1-3 - Increment in damage/slvl
to slvl 10-15, lvl3 to >15 - aasa>[/i]
CH. EType - ltng,cold,fire,pois,mag (self-explanatory)
CI-CJ. EMin/EMax - Min/Max Elem Dmg (some values vary, eg. Charged
Bolt is
half stated value in skills.txt)
CK-CM. ELev1-3 - Increment in Elem Dmg/slvl *Don't know how to
calculate*
CN. ELen - Length of element (for cold and poison)
CO-CQ. ELevLen1-3 - Increment in Elem Len/slvl
lvl2 to slvl 10-15, lvl3 to >15 - aasa>
CR. caster state - State caster is in (eg. STATE_FROZENARMOR)
- *Does anyone
know where to find out the states?*
CS. cost mult - If skill is in item, multiply costprice by value
(?)
CT. cost add - If skill is in item, add value to costprice(?)
Other notes:
Claw Mastery params are interchanged - aasa
SrcDam by Scott Weaver
Unhappy with the fact that my Amazon's Multi Shot only did 3/4 damage I
charged myself with the task of trying to reverse this to emulate earlier
versions of CD2. Comparing other Amazon bow skills (like freezing arrow,
etc.) to Multi Shot I noticed this one inconsistency. SrcDam, for all bow
skills that enchant you arrows in one way or another, had a value of 8 while
Multi Shot had a 6. On a hunch, I changed this value to 8 and compiled my
mod, and Voila! Multi Shot now does 100% damage as opposed to 75%.
I guess SrcDam would pretty much be explained as 'Modification to the Source
of the Damage' i.e. my bows base damage with attribute/enchant modifiers
applied.
Adjustment to weapon's damage based on SrcDam
SrcDam = 8 the multiplier would 1.00 (100%) (Confirmed)
SrcDam = 6 the multiplier would .75 (75%) (Confirmed)
SrcDam = 4 the multiplier would .50 (50%) (Theoretical)
SrcDam = 2 the multiplier would .25 (25%) (Theoretical)
So, theoretically, SrcDam = 10 would 125% of the normal damage done by your
weapon.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=246]Knowledge Base - Skills.txt File Guide[/url]

View File

@ -0,0 +1,80 @@
# D2Mods Knowledge Base: Article 247
# Title: Sounds.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=247
Sounds.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:31 pm
Views: 6423
Description: by Myhrginoc & Isolde
Categories: File Guides (1.09x)
A. HANDLE - descriptive column
B. INDEX - ID number for the record. This ID is used in other txt files
C. FILENAME - Rather self-explanatory. When you are
substituting or adding sound files, use the directory format of the
files you are mimicking (e.g for Act1 music it would be
data\global\music\act1.
D. VOLUME - Also self-explanatory. I think this is a one-byte field, nothing over 255 which is the loudest
E. GROUP SIZE - # when asked to play a sound in a group, it plays one of the sounds in the grou at random
F. LOOP - Boolean field, 1 repeats indefinitely and 0 plays through once
G/H. FADE IN, FADEOUT - Probably durations for changing volume to or from the specified loudness
I. DEFER INST - ?
J. STOP INST - ?
K. DURATION - # how long to play the sound for
L. COMPOUND - # controls overlap of same sound
group on a unit where it'll not play a sound if the previous sound
playing is within the compound duration
M. REVERB - 0|1 whether or not to add reverb effect to sound
N. FALLOFF - 0-4, controls how quickly the sound attenuates with distance (inverse)
O. CACHE - 0|1 mark sounds played frequently to cache
P. ASYNC ONLY - 0|1 mark unimportant sounds to skip playing if it can't load them in time
Q. PRIORITY - 0|1 controls what order to drop sounds if too many are playing at once
R. STREAM - 0|1 streams the sound while playing it instead of loading it all at once, used for music and such
S. STEREO - Boolean field, music is stereo, all
others are not. I think I heard that people have used mono music files
without ill effect, as long as the format is still 16 bits at 22,050 Hz
T. TRACKING - 0|1 sound moves with unit it's attached to
U. SOLO - 0|1 marks the sound as a soloist (quiets all other sounds while it's playing)
V. MUSIC VOL - 0|1 sound uses the setting for music volume
W. BLOCK 1 - # offsets into sound file for looping of music
X. BLOCK 2 - # offsets into sound file for looping of music
Y. BLOCK 3 - # offsets into sound file for looping of music
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=247]Knowledge Base - Sounds.txt File Guide[/url]

View File

@ -0,0 +1,92 @@
# D2Mods Knowledge Base: Article 248
# Title: Superuniques.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=248
Superuniques.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:31 pm
Views: 7428
Description: by Phrozen Heart & Nefarius
Categories: File Guides (1.09x)
A. Name : Name of unique monster (is also the string key value in string.tbl and the other string tables)
B. Class : Generic monster type's populate ID from the monstats.txt file
C. Mod1 : First magical ability the unique has in addition to it's regular monster version (see below for values)
D. Mod2 : Second magical ability the unique has in addition to it's regular monster version (see below for values)
E. Mod3 : Third magical ability the unique has in addition to it's regular monster version (see below for values)
F. MinGrp : Minimum number of minions accompanying unique monster
G. MaxGrp : Maximum number of minions accompanying unique monster
H. EClass : Set this to 1 to use a
expansion monster (ie. if eclass is 0 you use classid Spawning Id, if
its 1 you use Expansion IDs).
For example:
ECLASS=1, Skeleton ID=-436
ECLASS=0, Skeleton ID=0
I. AutoPos : This defines if the monster spawns exactly were the map places him or in a random radius around that point
J. Stacks : Unknown
K. TC : Unique monster's treasureclass in normal diffulty from the treasureclass.txt/treasureclassex.txt file
L. TC(N) : Unique monster's treasureclass in nightmare diffulty from the treasureclass.txt/treasureclassex.txt file
M. TC(H) : Unique monster's treasureclass in hell diffulty from the treasureclass.txt/treasureclassex.txt file
Magical Ability Values
1-4. {unknown}
5. Extra Strong
6. Extra Fast
7. Cursed
8. Magic Resistant
9. Fire Enchanted
10-16. {unknown}
17. Lightning Enchanted
18. Cold Enchanted
19-22. {unknown}
23. Immune to Poison
24. Thief
25. Mana Burn
26. Teleport
27. Spectral Hit
28. Stone Skin
29. Multiple Shots
30. Aura Enchanted
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=248]Knowledge Base - Superuniques.txt File Guide[/url]

View File

@ -0,0 +1,731 @@
# D2Mods Knowledge Base: Article 249
# Title: Uniqueitems.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=249
Uniqueitems.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 9:37 pm
Views: 9784
Description: by JBouley
Categories: File Guides (1.09x)
name
The name of the unique. Must match exactly with what you enter as the
string/key into the string.tbl, expansionstring.tbl OR patchstring.tbl
file.
version
0 = classic D2
100 = expansion
Doesn't seem to matter which number you use if you're playing LoD, but
if you're modding classic D2, you should probably keep all the numbers
in this column at 0.
completed
0 = No
1 = Yes
Advised that you put it to 1 for any unfinished uniques in the file that you finish, and for any new uniques you add.
beta
0 = No
1 = Yes
Presumably means the item was in the beta test version of the original
D2 game. Column seems not to matter much...just for reference. Use a 1
or a 0 as you prefer.
rarity
Seems to have something to do with the relative chances of the game
spawning a unique if there is more than one unique using the same base
item type. I personally don't understand how this is calculated, but
another modder has explained it in Addendum 1 at the end of this file
guide (see below).
Level
The level of the unique. Affects whether a monster can drop it. A 10th
level monster, for example, cannot drop a 50th level unique item.
LevelReq
The level the player must be to equip and use the item.
code
The three-character item code of the base item for this unique. These
item codes are found in armor.txt, misc.txt and weapons.txt.
type
The name of the item...corresponds to the item code described above. If
code is lsd, the type should be Long Sword. And so on. This column
actually seems to be for reference purposes only. Blizzard programmers
misspelled several item names in this columns, such as Hydry Edge and
Pollaxe, yet it doesn't seem to have an adverse effect. Probably best
to spell it right, though, to be on the safe side.
cost mult
See Addendum 2 at the end of this file guide
cost add
See Addendum 2 at the end of this file guide.
transform
0 = No
1 = Yes
Does the unique version of item change to a different color than the
color of the normal version of the item (in the character's hand or on
his/her body)?
invtransform
0 = No
1 = Yes
Does the color of the inventory graphic for this item change for the
unique version of the item, compared to the normal item? (In other
words, is the inventory graphic tinted a special color). This has
nothing to do with choosing a special graphic for the unique version of
the base item. To do THAT (set a special graphic for the unique that
doesn't look at all like the normal item), you need to deal with the
uniqueinvfile columns in the armor.txt and weapons.txt files. Note: If
you do have a special graphic set for the unique version, you have two
choices. Either color the new graphic you create so that it is similar
to the color you choose for 'transform' (if you want the in-game item
to have a special color on your character), or make it a fairly neutral
weapon or armor color and use this 'invtransform' column to tint it so
that it will be in line with 'transform.'
transformcolor
Sets the color used for the transform and/or invtransform entries
above. Generally, it makes no sense at all to have invtransform set to
1 and transform set to 0...because why would the inventory graphic be
colored and the item on your character NOT be? However, for the reasons
noted in the invtransform entry above, it DOES make sense to have
invtransform be 0 and transform be 1 in many cases. The list of colors
is found in colors.txt, and that will guide you as to the number you
put in this column. The ID numbers for colors start at 0 for white (at
the top of colors.txt) and go to 20 for bright white (at the end of the
colors.txt file). NOTE: Bright white is not a good color for inventory
graphics. It is too bright in most cases. Use white or light gray
instead...or use bright white and make sure the invtransform column is
zero so that the change will only affect the item in the character's
hand and not the graphic in the inventory.
ItemMod1Code
The code for the first magical modifier on the item. A list of these
magic codes can be found in Phrozen Keep's Resource area. They can also
be found in the file Properties.txt.
ItemMod1Param
The parameter number used by some of the magic modifier codes (not all
of them use this column). For example, if you used charged as a mod,
the param column is used to specify the ID number (from skills.txt) of
the skill to be placed on the item. Refer to the Phrozen Keep resource
guide on magic codes for more details.
ItemMod1Min
The minimum value of the magic modifier, such as minimum AC bonus
granted, minimum damage, etc. Some mods are simpler integer values
(such as damage) and others are percentages (such as resists, faster
run/walk, etc.). Refer to the Phrozen Keep resource guide on magic
codes for more details.
ItemMod1Max
The maximum value. See ItemMod1Min above for additional details. NOTE:
Don't ever let the maximum be smaller than the minimum. And remember
that if negative values are used, pay attention to which is the smaller
value...don't just look at which is the larger numeral. For example, if
you had a stat that could be range anywhere between -1 and -10, then
-10 would be the MIN and -1 would be the MAX. That is because -10 is
the smaller value. But many people (myself included when I first
started working with this file) would make the mistake of putting -10
as the max and -1 as the min (just looking at the numeral and
forgetting about the negative sign), which crashes the game.
ItemMod2Code
Predictably, this is used for the second magic modifer you put on the
item. Same rules apply as noted in the entry for ItemMod1Code.
ItemMod2Param
Same rules apply as were noted in the entry for ItemMod1Param.
ItemMod2Min
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod2Max
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod3Code
This third mod on the item starts here, if you have more than two. Same rules apply as noted in the entry for ItemMod1Code.
ItemMod3Param
Same rules apply as were noted in the entry for ItemMod1Param.
ItemMod3Min
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod3Max
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod4Code
Fourth mod, if you want more than three on the item. Same rules apply as noted in the entry for ItemMod1Code.
ItemMod4Param
Same rules apply as were noted in the entry for ItemMod1Param.
ItemMod4Min
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod4Max
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod5Code
The fifth power on the item, if you give it more than five mods. Same rules apply as noted in the entry for ItemMod1Code.
ItemMod5Param
Same rules apply as were noted in the entry for ItemMod1Param.
ItemMod5Min
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod5Max
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod6Code
This begins the sixth mod of the item, if you want six or more. Same rules apply as noted in the entry for ItemMod1Code.
ItemMod6Param
Same rules apply as were noted in the entry for ItemMod1Param.
ItemMod6Min
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod6Max
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod7Code
The item's seventh power, if you want that many mods on it. Same rules apply as noted in the entry for ItemMod1Code.
ItemMod7Param
Same rules apply as were noted in the entry for ItemMod1Param.
ItemMod7Min
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod7Max
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod8Code
Mod number eight, if you give the item more than seven powers. Same rules apply as noted in the entry for ItemMod1Code.
ItemMod8Param
Same rules apply as were noted in the entry for ItemMod1Param.
ItemMod8Min
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod8Max
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod9Code
No surprise here: This is the ninth mods, if you want to go with that
many. Same rules apply as noted in the entry for ItemMod1Code.
ItemMod9Param
Same rules apply as were noted in the entry for ItemMod1Param.
ItemMod9Min
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod9Max
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod10Code
Lo and behold, the tenth mod for the item, if you want to go for the
full amount of mods allowed by the uniqueitems.txt file. Same rules
apply as noted in the entry for ItemMod1Code. NOTE: While it is NOT
possible to give more than 10 mods to a unique item through the use of
this file, you can add powers to a unique that you possess on your
character, if you create a recipe in cubemain.txt. See any available
tutorials, file guides or Phrozen Keep forum posting on that file for
more information. But, in short, if your output in cubemain make use of
useitem (NOT usetype) and powers are listed in the Mod columns for
cubemain.txt, the item can be given powers above and beyond the ten in
this file, without losing the other powers and without losing its
status and name as a unique item.
ItemMod10Param
Same rules apply as were noted in the entry for ItemMod1Param.
ItemMod10Min
Same rules apply as were noted in the entry for ItemMod1Min.
ItemMod10Max
Same rules apply as were noted in the entry for ItemMod1Min.
End
The terminator column. Always have a 0 in this column unless you like crashes.
ADDENDUM 1 by Ruvanal
'Explaining the rarity column in uniqueitems.txt'
Here is an explanation of the rarity numbers in the
uniqueitems.txt and setitems.txt files. It may apply in some other
similar cases that I cannot think of right now too. This is one that
many do not seem to know enough about and it can have a larger impact
on the modded games than the standard game itself (more duplicate base
items).
When the game spawns a unique or set item that can have more than one possible outcome, the game will use this procedure:
Total up the rarity of all items that have a
required ilvl equal or less than the ilvl of the being generated. It
will then randomly select one of the items from the list based on their
rarity values.
This makes the chance for any particular item to be
rarity/total_rarity. If there are no items that can be spawned at that
ilvl then the game will downgrade the item by the following:
Set -> magical with x2 durability
Unique -> rare with x3 durability
If the game selects a unique that has already
spawned, then it will be downgraded also. There is no filtering of the
already spawned items. This most often comes into play with rings and
amulets as these 2 base items have the most alternate possibilities.
Here is a list of the 1.09 rings and amulets (set
and unique). The Item Level is the minimum ilvl need to spawn that
item. The rarity is the relative rarity of the item. The total rarity
is the total of the rarities up to that particular ilvl. To find the
total rarity look for the highest Item Level that does not go above the
ilvl you checking against and use that to calculate the chances in the
formula rarity/total_rarity.
Set Rings
Item Level
Rarity
Total Rarity
Cathan's Seal
15
7
7
Angelic Halo
17
3
10
Set Amulets
Item Level
Rarity
Total Rarity
Civerb's Icon
13
7
7
Cathan's Sigil
15
7
14
Angelic Wings
17
7
21
Vidala's Snare
19
7
28
Arcanna's Sign
20
1
29
Iratha's Collar
21
7
36
Tal Rasha's Adj.
26
1
37
Tancred's Weird
27
7
44
Telling of Beads
39
1
45
Unique Rings
Item Level
Rarity
Total Rarity
Nagelring
10
15
15
Manald Heal
20
15
30
Stone of Jordan
39
1
31
Dwarf Star
53
10
51
Ravenfrost
53
10
51
Bul Katho's W.B.
66
1
52
Unique Amulets
Item Level
Rarity
Total Rarity
Nokozan Relic
14
20
20
Eye of Etlich
20
5
25
Mahim-Oak Curio
34
10
35
Saracen's Chance
55
5
40
Crescent Moon
58
5
50
The Cat's Eye
58
5
50
Atma's Scarab
60
5
55
Highlord's Wrath
73
5
65
The Rising Sun
73
5
65
Mara's Kaleid.
80
5
70
ADDENDUM 2 by Isolde
'Explaining the two cost columns'
The column 'cost mult' will add cost * N/1024 to the item price (buy/sell/repair) at some point during the cost calculation.
The column 'cost add' will add directly to the item price at the same point.
A bunch of other things are factored after these,
so the above might not be much help in really pinning down the prices,
but it's a start. The cost mult and cost add values have NO effect on
the gamble price.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=249]Knowledge Base - Uniqueitems.txt File Guide[/url]

View File

@ -0,0 +1,255 @@
# D2Mods Knowledge Base: Article 250
# Title: Weapons.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=250
Weapons.txt File Guide
Written by: Phrozen Heart
Written on: Tue Dec 02, 2003 7:34 pm
Views: 11222
Description: by Ric Faith
Categories: File Guides (1.09x)
A. name - item name for reference
B. type - associated itemtype
C. code - 3-character code for the item
D. alternateGfx - what animation to play when weapon is equipped
E. version - 0 for cD2, 100 for LoD
F. compactsave - ?? (always blank)
G. rarity - The item's rarity, bigger number = rarer
H. spawnable - Whether or not the item can be bought from the various item vendors and dropped at random unless specified
I. mindam - Minimum one-handed damage the weapon can cause
J. maxdam - Maximum one-handed damage the weapon can cause
K. 1or2handed - Boolean (1=yes,0=no) for whether weapon can be carried in 1 or 2 hands by Barbarian
L. 2handed - Boolean if weapon is a 2handed weapon
M. 2handmindam - Minimum two-handed damage the weapon cause
N. 2handmaxdam - Maximum two-handed damage the weapon cause
O. minmisdam - Minimum ranged damage the weapon can cause
P. maxmisdam - Maximum ranged damage the weapon can cause
Q. {blank> - ?? however 13=bow/xbow, 14=1hand melee, 15=hybrid melee/thrown, 17=2hand melee
R. {blank} - ??
S. {blank} - ?? relates to 1 handed melee dmg
T. {blank} - ?? relates to 2 handed melee dmg
U. {blank} - ?? relates to range/thrown dmg
V. rangeadder - additional range of weapon for melee attacks
W. speed - determines base speed of item. -ve values indicate faster speeds, +ve value indicate slower speed
X. StrBonus - %age of Str taken into account for Bonus damage
Y. DexBonus - %age of Dex taken into account for Bonus damage
Z. reqstr - Str requirement to equip weapon
AA. reqdex - Dex requirement to equip weapon
AB. durability - Durability of weapon
AC. nodurability - Boolean, sets Indestructibility
AD. level - item level
AE. levelreq - character level required to equip item
AF. cost - base cost of the item
AG. gamble cost - does not have any effect on gamble cost
AH. magic lvl - used to determine which affixes are available on item (See Annex A)
AI. auto prefix - reference to group number in automagic.txt
AJ. OpenBetaGfx - item gfx used in the Beta Testing
AK. normcode - Normal version of item
AL. ubercode - Exception version of item
AM. ultracode - Elite version of item
AN. wclass - 1 handed weapon class, determines what style of attack to use (eg. 1hs, 1ht, hth)
AO. 2handedwclass - 2 handed weapon class, determines what style of attack to use
AP. component - ??, 6 for bows, 5 for everything else
AQ. hit class - what type of effects are displayed/heard when enemy is struck with weapon
AR/AS. invwidth/invheight - dimensions in unit space (eg. 2x3, 1x4)
AT. stackable - Boolean is it a stackable item
AU. minstack - how many minimum in a stack
AV. maxstack - how many maximum in a stack
AW. spawnstack - when randomly spawned, how many in a stack
AX. flippyfile - animation played when item is dropped
AY. invfile - gfx displayed in inventory
AZ. uniqueinvfile - gfx displayed in inventory for unique version (if any)
BA. setinvfile - gfx displayed in inventory for set version (if any)
BB. hasinv - Boolean does it have a predetermined place for auto-equipping?
BC. gemsockets - how many max sockets can spawn
BD. gemapplytype - which set of gemeffects will have effect (0=weapon, 1=armor/helm, 2=shield)
BE. special - remark column
BF. useable - Boolean allows right-click to use, unimportant
BG. sound - sound code played when item is dropped/placed in inventory
BH. unique - Boolean is item only spawned as a unique
BI. transparent - ??
BJ. transtbl - ?? always 5
BK. quivered - Boolean, requires a quiver to use
BL. lightradius - innate addition to lightradius
BM. belt - Boolean, can it be worn in the belt
BN. quest - Boolean, is it a quest item
BO. missiletype - missileID from missiles.txt
BP. durwarning - for weapons is always 7, varies for different equipables.
BQ. qntwarning - Boolean, for thrown weapons
BR. gemoffset - offset value for the socket, always 0
BS. bitfield1 - material? all metal items have a 3. Wands/Orbs/Staves have 5, while clubs and crystal swords have 1
BT-EZ.
{seller}Min - Min Number non-magical of item will spawn in {seller's} inventory
{seller}Max - Max Number non-magical of item will spawn in {seller's} inventory
{seller}MagicMin - Min Number magical of item will spawn in {seller's} inventory
{seller>MagicMax - Max Number magical of item will spawn in {seller's} inventory
{seller}MagicLvl - Max Level of affix that can spawn on the magical items
FA. Source Art - ?? not used
FB. Game Art - ?? not used
FC. Transform - color palette used for color changes via gems etc.
FD. InvTrans - Transparency of item? not used
FE. SkipName - Boolean, to not display the base class of item on the unique form.
FF. NightmareUpgrade - item code of the item sold instead of original item in NM
FG. HellUpgrade - item code of the item sold instead of original item in Hell
FH. Nameable - will the naming quest work on item
FI. PermStoreItem - Boolean will item always be sold by sellers? Item cannot be depleted
Annex A - Calculation of affixes available for item - by Ruvanal
Terms
alvl = affix level. For an item this is the level that is used to
compare to the level and max level as found in the prefix and suffix
tables. When referring to a prefix/suffix it is the value listed in the
level column.
ilvl = internal level (also referred to sometimes as the item
level; better yet item creation level). This value is set at the time
of an items creation. For monster drops the ilvl=mlvl. (BTW ilvl
matches up with the terminology of the 1.07/1.08
cubemain.txt---'itemlevel pct a')
mlvl = monster level.
clvl = character level.
qlvl = quality level. This value is found in the level column of
armor.txt, weapons.txt and misc.txt. This is the value that is used to
create the weapXX and armoXX treasure classes.
magic_lvl = magic level bonus on some items. Currently the only
ones that have this are wands (normal and exceptional, but not the
elite ones), staves, orbs (all with a value of 1) and circlets
(circlet=3, Coronet=8, Tiara=13, Diadem=1.
When an item is generated that has affixes the alvl is calculated* from ilvl and qlvl as follows
If (ilvl>99) then {ilvl=99}
if (qlvl>ilvl) then {ilvl=qlvl} ;** see note below
if (magic_lvl>0) then {alvl=ilvl+magic_lvl}
else
{
if (ilvl<(99-qlvl/2))
then {alvl=ilvl-qlvl/2}
else {alvl=2*ilvl-99}
}
If (alvl>99) then {alvl=99}
*all calculations use integers so there are no fractions at any step.
** this new ilvl value is only used for the duration of this
calculation. The ilvl value that is stored in the items data file will
remain unchanged.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=250]Knowledge Base - Weapons.txt File Guide[/url]

View File

@ -0,0 +1,104 @@
# D2Mods Knowledge Base: Article 264
# Title: How To Edit DT1 File Palettes (by BlackHeart)
# URL: https://d2mods.info/forum/kb/viewarticle?a=264
How To Edit DT1 File Palettes (by BlackHeart)
Written by: Phrozen Heart
Written on: Thu Aug 19, 2004 8:52 pm
Views: 8764
Description: This tutorial explains how to manipulate DT1 map tiles for use in any act.
Categories: Tutorials (1.1x) - Graphic and Sound Files
Tools needed:
A copy of Paint Shop Pro
DT1 Tools: Created by: Paul Siramy
This a package of simple programs for the management of the DT1 files.
Files needed:
D2_pal_for_psp : Created by: Paul Siramy
Diablo II Palettes for Paint Shop Pro.
data\global\tiles\ACT1\TOWN\objects.dt1
In this exercise we will be changing the pallet of Act1 Objects to palette 0 for use in any act.
Step 1
Place a copy of the objects.dt1 into the dt1tools directory
First we need to edit a bat file to unpack the dt1 file.
Open the '2-DT1extr Tristram.bat' and make the following changes to the
command line (dt1extr objects.dt1 -pal d2pal\act1.dat) save and close.
Now run the bat and it will produce 3 files
objects-fs.pcx
objects-wu.pcx
objects.ini
-fs stand for 'Floor Static'
-wu stand for 'Walls Up'
ini is a sort of a dump of the other data that the dt1 have, but that we
Can’t draw on a bitmap. Like tile's sound, floor flags, orientation...
Step2
Open the objects-fs.pcx file using PSP
Then from the tool bar select color/edit palette opening the plate
edit window. Select the palette index 0 entry the top left double click
it opening the color submenu. index 0 is currently set to #616161
(97/97/97) change this to #00FFFF (0/255/255)
Step3
Then from the tool bar select color/load palette locate the
directory you used to hold D2_pal_for_psp. Select d2-act0 save and
exit. Choosing the 'Nearest color matching' option is the best method.
Step4
Repeat process on the objects-wu.pcx
Step5
Now we need to edit the 3-DT1make Tristram.bat
Change the command line to (dt1make objects.ini) save and exit
Run the 3-DT1make Tristram.bat repacking the file objects.dt1.
This produces a file named 'NEW_objects.dt1'.
Step6
Place 'NEW_objects.dt1' into the data\global\tiles\act1\town and rename file to objects.dt1.
This file now can be used in any act.
Special thanks to Paul Siramy for providing the tools and information needed to write this tutorial.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=264]Knowledge Base - How To Edit DT1 File Palettes (by BlackHeart)[/url]

View File

@ -0,0 +1,44 @@
# D2Mods Knowledge Base: Article 271
# Title: [LOD v.1.10] Kingdom of Tenai v1.08z by Vegabond_635
# URL: https://d2mods.info/forum/kb/viewarticle?a=271
[LOD v.1.10] Kingdom of Tenai v1.08z by Vegabond_635
Written by: Phrozen Heart
Written on: Thu Apr 22, 2004 3:00 pm
Views: 19613
Description: Reviewed by Maxx Power for the Phrozen Keep.
Categories: Mod Reviews
Well it’s me once again. As some guy said in some film once “I’m baaaacccckkkkk”. I won’t be going out of my way to put a name/face to that pop-culture reference, so you can find out for yourselves. Yup, back where I belong. Writing opinionated views on mods that I couldn’t make if I had a big…mod…making…thingy…*cough*. Anyway, enough with the introductions, let’s get ‘bizay’ (fo rizzle).
This days/months/years mod is Kingdom of Tenai by a one Vegabond_635, a mod with the first truly original skill system that I have seen, and one that will intrigue from the start. Rather than your usual skill trees or whatever else a series of ‘masteries’ are up for offer, ranging from resistances to added crushing blow and so on. Whatever you might need it will be there, guaranteed. Skills are gained through a kind of pseudo Diablo 1 system, where you buy your skills based upon your sub-class (explained later). Of course all this would be a bit pointless without something to meat it out, but have no fear, for KoT has a few of the usual tricks up its sleeve, with new monsters, areas and items for your playing pleasure.
[b][u]What Works[/u][/b]
First up is of course the masteries system, which is an idea I’ve toiled with in the past, and on occasion has been tried in a few mods without success. KoT pulls it off quite well though, with the abilities available useful from the first point you put into them. Unlike vanilla, you can never waste any skill points, unless you don’t know what your doing. This is quite refreshing, as you know that any skill points you do use will be aiding you no matter what the situation. (Just make sure you double check which skills work with melee and ranged and not casting characters, or you just might find yourself up a certain creek without a paddle).
Alongside this we have a few new areas to explore, the central attraction being the Rogue Encampment, now looking rather snazzy, with each of the character’s having a full blown house that they refuse to occupy (well you can’t have everything), some nice wall structures and other assorted eye candy. There’s also a bunch of other maps that you may have seen in other mods, including the new entrance to the Countess, and a new Claw Viper temple. Even though you’ve probably seen these within a hundred other mods lately they still impress, especially someone such as myself, who has been through every part of the game and seen every locale a thousand times over.
Speaking of graphics, a mention must go to the new monsters added into the mod. I won’t spoil any surprises, but let’s just say that a decent showcase of the work from the Infinitum team can be found here. Fans of other isometric role playing games (heck, we all play Diablo, so why not a bit of BG2?) may spot the occasional thundering giant that they recognised and be thrilled. Others can just marvel at the spot-on transition of animations into the mod.
[b][u]What Doesn’t Work[/u][/b]
Well I’ve been praising this mod so far, and for the most part I am highly impressed. However, like all things in this big ol’ universe, it has its flaws, some of which are sadly a major downfall to the mod. And much like many mods that have gone under my scrutiny before, my main problem is balance.
Firstly the skill system. While the masteries system puts a use to all those skill points you’ll pick up, the actual skills themselves are a bit of a disappointment. Alongside the fact that there aren’t many new ones, the mod forces you to pick a sub-class out of a possible three at the beginning. Sounds like a nice idea, and it is in theory. In practise it’s another ball game. Some classes may find themselves devoid of essential skills to make life easier, while others have a full blown set of skills to work with. Prime examples include sorceresses, who have to take one element to do damage, compared to amazons, who can have access to all their bow and arrow skills. This not only limits the builds you can do, but makes life harder for some than others.
Also a big problem is the sheer monsters density. Depending again on who you choose it will either be a burden or a blessing. For those of you will large area effecting skills, then life will be a walk for you. Others it is a curse, especially melee characters, who have to be able to take down every monsters with one hit or face certain doom. Add to this the fact that monsters are generally more damaging, faster, higher hit points etc, it makes life annoying for anyone with a fancy for swords and the like.
As mentioned above monsters can become extremely annoying, especially ranged monsters. It’s bad enough in vanilla being pelted by three or four bow-wielding minions, try having twenty or so. Add to this the inclusion of some very frustrating monster bonuses, such as aura’s and on-death spells (keep your distance with any of the Inflicted, and don’t even start me on the Viper Temple) and you can find yourself putting the mod down before you even hit the best parts of it.
[b][u]Conclusion[/u][/b]
KoT is a perfect example of a mod swamped by its own good ideas. What sounds like a really good premise is actually refreshing and enjoyable in places, but infinitely and inevitably suffers from some major flaws. While it’s all very well and good to feel the strange waves of euphoria spreading when you first get to grips with the various masteries and sub-classes, the whole experience is watered down once you get into the bones of the game. Those with the patience to continue on past the first few acts of frustration will find a really good mod waiting to be discovered. Hell difficulty is an unusual beast, once you get some of the more ‘uber’ equipment behind you, and ultimately rewarding. The struggle to get there might not be worth the prize that awaits most players, which is a shame when you consider the solid foundation that KoT is built on.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=271]Knowledge Base - [LOD v.1.10] Kingdom of Tenai v1.08z by Vegabond_635[/url]

View File

@ -0,0 +1,237 @@
# D2Mods Knowledge Base: Article 284
# Title: CubeMain.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=284
CubeMain.txt
Written by: kingpin
Written on: Fri Jan 12, 2007 5:22 pm
Last modified: Thu Sep 09, 2021 9:35 pm
Views: 43247
Description: by Nefarius & Myhrginoc, updated and restyled by Harvestwombs
Categories: File Guides (1.10 - 1.14)
OVERVIEW:
This file controls the recipes for the Horadric Cube
This file is using:
ItemTypes.txt
Misc.txt
Armor.txt
Weapons.txt
SetItems.txt
UniqueItems.txt
Properties.txt
ItemStatCost.txt
description: This column has no function, it only serves as a comment field to make it easier to find specific recipes.
enabled: Boolean, this controls if a recipe is active in-game, 1 stands for yes and 0 stands for no.
ladder: Boolean, 1 if only allowed in ladder on realms (TBD) (Note: Also works for single player, tcp/ip)
min diff: Minimum game difficulty to use recipe (0 = all difficulties, 1 = Nightmare and hell, 2 = hell only).
version: Tells the game if this is a old classic, new classic or expansion recipe, 0=old classic d2, 1=new classic d2 and 100 is expansion recipe.
*I am not sure if 1 is used in this file, but this column works the same way it works in all the other item related files, so it probably does.
op: Replaces realtime field, can now select requirement for allowing recipe (See Appendix A for more details).
param: Replaces realtime field, can now select requirement for allowing recipe (See Appendix A for more details).
value: Replaces realtime field, can now select threshold for custom requirement (See Appendix A for more details).
class: You can use this to make a recipe class specific by using the class codes.
In example: ama, bar, pal, nec, sor, dru and ass.
numinputs: Controls the number of items you need to put into the cube for this recipe.
Note: If you are using the “qty” parameter in any inputs this number must include the sum of quantities.
inputs 1: through input 7: This controls the type of inputs used for the recipe, each cell stands for a different item. Also includes input parameters, (See Appendix B for more details).
input 1 - primary item of recipe, target of outputs for item transform recipes.
output: Defines the first recipe result item. Also includes output parameters, (See Appendix B for more details).
lvl: Controls the level of the item that is created in the first output field
Note this value force spawns the item at this specific level. Its also used in the formula for the next two fields.
plvl: This column uses a percent of the players level for the output level.
ilvl: This column uses a percent of the first input's level for the output level.
mod 1: through mod 5: Defines additional attributes affixed to the first output item.
• mod # - the property code used to specify an attribute.
• mod # chance - the chance in percent the property will be assigned.
• mod # param - parameter field for properties that use parameters.
• mod # min - minimum field for properties that specify a range of values.
• mod # max - maximum field for properties that specify a range of values.
To make property have a fixed value make mod # min and mod # max the same.
output b: Defines the second recipe result item. Also includes output parameters, please refer to the Cubemain Code Reference in the keeps resource section to read about these codes.
b lvl: Controls the level of the item that is created in the second output field
Note this value force spawns the item at this specific level. Its also used in the formula for the next two fields.
b plvl: This column uses a portion of the players level for the output level.
b ilvl: This column uses a portion of the first input's level for the output level.
b mod 1: through b mod 5: Defines additional attributes affixed to the second output item. These fields work the same way as the mod # fields for the first item.
output c: Defines the third recipe result item. Also includes output parameters, please refer to the Cubemain Code Reference in the keeps resource section to read about these codes.
c lvl: Controls the level of the item that is created in the third output field
Note this value force spawns the item at this specific level. Its also used in the formula for the next two fields.
c plvl: This column uses a portion of the players level for the output level.
c ilvl: This column uses a portion of the first input's level for the output level.
c mod 1: through c mod 5: Defines additional attributes affixed to the third output item. These fields work the same way as the mod # fields for the first item.
*eol: line terminator, must be filled if using MS Excel or similar spreadsheet that eats trailing tabs.
APPENDIX A:
By Joel, Updated by Myhrginoc
Note: stat is using the ID from itemstatscost.txt (ie strength has ID 0)
```
Cubemain Ops (1.10)
op Skip recipe if ...
--------------------------------------------------------
1 DayOfMonth is less than Param or greater than Value
2 DayOfWeek != Value ( 1 = Sunday, ...)
~~~~~~ 10519 ~~~~~~~~~~ Stat.Accr
3 player stat(param) < value
4 player stat(param) > value
5 player stat(param) = value
6 player stat(param) ! value
~~~~~~ 10521 ~~~~~~~~~ Stat.Base
7 player stat(param) < value
8 player stat(param) > value
9 player stat(param) = value
10 player stat(param) ! value
~~~~~~ 10522 ~~~~~~~~~ Stat.Bonus (accr - base)
11 player stat(param) < value
12 player stat(param) > value
13 player stat(param) = value
14 player stat(param) ! value
Fail Item if ...
--------------------------------------------------------
~~~~~~ 10519 ~~~~~~~~~ Stat.Accr
15 item stat(param) < value
16 item stat(param) > value
17 item stat(param) = value
18 item stat(param) ! value
~~~~~~ 10521 ~~~~~~~~~ Stat.Base
19 item stat(param) < value
20 item stat(param) > value
21 item stat(param) = value
22 item stat(param) ! value
~~~~~~ 10522 ~~~~~~~~~ Stat.Bonus (accr - base)
23 item stat(param) < value
24 item stat(param) > value
25 item stat(param) = value
26 item stat(param) ! value
27 pItem->OtherID != value
28 pItem->QuestDiff < ptGame->Diff
(only checked if Quest and QuestDiffCheck are 1)
```
APPENDIX B:
By Nefarius, Updated by HarvestWombs
For slightly more detail visit the Cubemain Code Reference
```
item quality params:
any = Any item (*Not Advised)
low = low quality
hiq = superior
nor = Normal
mag = Magic
rar = Rare
set = Set
uni = Unique
crf = Crafted
tmp = Tempered
eth = Ethereal
noe = Not Ethereal
nos = No Socket (for input)
sock = # sockets (eg: sock=4)
pre = Prefix (ID from magicprefix.txt) - ID = (Row Number - 2)
suf = Suffix (ID from magicsuffix.txt) - ID = (Row Number - 2)
rep = Repair durability
rch = Recharge Quantity
qty = amount of same item (eg: "hpot,qty=3" means 3 hp potions)
upg = For inputs only, Item is upgraded.
bas = Base item
exc = Exceptional
eli = Elite
usetype = Uses base type of input1 for output
useitem = Uses item from input 1
uns = Unsocket Item (destroys gems)
rem = Unsocket Item (removes gems)
reg = Regenerate? Seems to reroll the item
mod = Transfers properties from input1 to output item.
```
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=284]Knowledge Base - CubeMain.txt[/url]

View File

@ -0,0 +1,103 @@
# D2Mods Knowledge Base: Article 285
# Title: Hireling.txt File
# URL: https://d2mods.info/forum/kb/viewarticle?a=285
Hireling.txt File
Written by: kingpin
Written on: Fri Jan 12, 2007 5:21 pm
Last modified: Wed Oct 24, 2018 3:22 pm
Views: 24745
Description: by Draco & Ric Faith, expanded and restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
This file handles everything related to hirelings. In here you set what hirelings that is avaible to hire, what items they are able to use, their stats and what skills they are using.
Hireling.txt works in par with
ItemTypes.txt
Skills.txt
Hireling: Description of hireling type, this column has no function, it only serves as a comment field to make it easier.
SubType: Description of hireling sub-type, this column has no function, it only serves as a comment field to make it easier.
Version: 0 is for Classic, 100 is for Expansion.
Id: ID number to segregate the hirelings and threshold lvls.
Class: reference to the column 'hcIdx' in MonStats.txt. This indicates the base monster of the mercenary.
Act: Act where merc can be hired.
Difficulty: it ranges from 1 to 3, respectively for
Normal/Nightmare/Hell.
Level: monster level of the hireling. It also states the required level for upgrading skills and stats.
Seller: reference to the column 'hcIdx' in MonStats.txt for the NPC who sells this mercenary.
NameFirst - NameLast: Range from which the game looks to get random names for the hirelings. These indexes are taken from the .TBL files, which you can edit via specific softwares and are found in Data/local/(your language).
Gold: The cost of the hireling, compounded by mlvl
Exp/Lvl: This indicates a factor used in the calcuationof the experience required to advance to the next mLvl.
The threshold for the next level (L+1) from the current level (L) is (exp/lvl)*L*L*(L+1).
HP - HP/Lvl - Defence - Def/Lvl - Str - Str/Lvl - Dex - Dex/Lvl - AR - AR/lvl - Dmg-Min - Dmg-Max - Dmg-Lvl - Resist - Resist/Lvl: It tells how much of these stats the mercenary has at his\her base lvl and how much of them are gained as your mercenary advances through mLvls.
NOTE: Keep in mind that Dmg-Lvl and Resist/Lvl must be set in 8ths.
Share: Used to co-relate between threshold lvls between Normal, NM, Hell Hirelings.
WType1 - WType2: Can't be changed, is the itemtype of the items that can be carried in weapon slots.
HireDesc: A reference for .tbl files.
DefaultChance: It is the chance for which your mercenary will use his\her weapon (a.k.a regular attack) rather than a skill.
Skill X: Reference to the 'Skill' column in Skills.txt
Mode X: These modes must contain preset values and defines how your mercenary will use the skills.
```
1 -> Auras
4 -> Attack
5 -> Attack (use for Barbs, works the same way as Mode=4)
7 -> Cast
14-> Seq (use for Jab)
```
Chance X - ChancePerLevel X: It is the chance for your mercenary to use the skill at base mLvl and as he\she progresses through mLvls.
NOTE: The chance is calculated by probability.
Example:
Normal Fire Rogue:
Default Chance = 75, Inner Sight = 10, Fire Arrow = 25.
By probability, the game does: Chance/TotChance *100%
result:
Default (Attack) = 75/110 *100% = 68.18%
Inner Sight = 10/110 *100% = 9.09%
Fire Arrow = 25/110 *100% = 22.73%
Level X - LvlPerLvl X: They handle the sLvl of the Skill at Base lvl and the sLvl increase at level up.
Head, Torso, Weapon, Shield: References to the anims for monster parts, which since at least LoD are hardcoded to LIT.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=285]Knowledge Base - Hireling.txt File[/url]

View File

@ -0,0 +1,405 @@
# D2Mods Knowledge Base: Article 286
# Title: Matching New Monster Animations to an AI (by I_Burner)
# URL: https://d2mods.info/forum/kb/viewarticle?a=286
Matching New Monster Animations to an AI (by I_Burner)
Written by: Phrozen Heart
Written on: Fri May 04, 2007 2:30 am
Views: 9183
Description: This tutorial helps solve AI problems when adding new animation tokens.
Categories: Tutorials (1.1x) - Unit Mechanics
A frequent source of trouble for modders
attempting to add new monster animations to the game is attempting to
find the right AI to use with them. A wrong AI choice can leave you
with a monster that disappears when trying to use missing animation
modes, or otherwise does not work properly. Here, I will layout some
quick tips for picking an AI to match your animations, as well as a
very easy technique for making any monster animation work with any AI.
This tutorial was written for use with D2:LoD v1.10.
Files needed:
- animdata.d2
- monstats2.txt
- skills.txt (may not always be needed)
- DCC and COF files, with animdata entries (a new token plugin is usually easiest to work with)
Tools needed:
- animdata_edit
- COFEDIT (may not always be needed)
- spreadsheet editor of your choice
Reccommended reading:
- Diablo II Animation Conversion Extended Tutorial
- Adding New Monsters with New Tokens
- Creating a New Token from Existing DCC animations
- Monster Sequence Tutorial
Picking an AI (Basic):
The first topic we will look at is simply how to pick an AI that
will work with an animation you are trying to add to the game. First,
take a look at the animation files you have chosen, and take note of
what modes they have (“A1”, “A2”, “GH”, etc). One way to pick an AI
that will work is to simply open up monstats2.txt, scroll over to the
columns “mDT” through “mRN”, and scroll through the file to find
monsters that have a “1” in every mode that your animations possess. To
make this a little easier, I have compiled a list of most of the useful
AIs and the animation modes that they make use of (included at the end
of this tutorial).
There are a few things to keep in mind when using this method. A
few of the modes listed in monstats2 don’t actually refer to files,
namely “KB” and “SQ”. “KB” denotes if the monster is affected by
knockback, and “SQ” shows that the monster has one or more skills that
use a sequence from monseq.txt. Depending on the skills you want your
new monster to use, you may have some flexibility here. Many AIs are
for monsters that are summoned or resurrected at some point, which may
either use a sequence, an “S1” animation mode, or a combination of
both. If your new monster is not going to make use of this ability, you
can ignore those modes (be sure to clear these columns in the monstats2
row you will be using). Also, some skills can be used with several
modes. Some will let you interchange modes like “S1”, “SC”, or “A2”.
Others, like Nest, only seem to accept sequences or a specific mode.
Take a look in skills.txt at the columns “anim”, “seqtrans”, and
“monanim”. These can give you some clues about what modes the game
typically accepts if you are having trouble with this. Also, check out
kingpin’s excellent tutorial on monster sequences to learn how to make
sequences for your monsters.
Matching an Animation to an AI (Advanced):
OK, so you’ve tried using the basic method, but you really had
your heart set on using a specific AI and your animation just won’t
work with it. Fear not! You can clone existing animation modes to make
up for ones you are missing, and it’s really quite easy to do. Lets say
your chosen AI uses a run animation, but your new monster doesn’t have
one. You can fix this very easily by making copies of your “WL” DCCs
and COFs and renaming them. Then, using animdata_edit, copy the WL
entry for the token you are using to a new row, and change “WL” to
“RN”. Make sure “mRN” has a “1” in it in the monstats2 row this monster
will use. Simple, isn’t it? This will work for any of the other
animation modes, but does have an extra consideration for attack and
cast modes. Modes like “A1”, “A2”, “SC”, etc. typically have triggers
set in their COFs and animdata entries. In order to make sure any modes
like this that you create by cloning work properly, always start with
another mode that uses an event trigger. It is also very important NOT
to create a death animation (“DT”) from a mode with a trigger in it, as
this results in an invincible, auto-resurrecting enemy (although some
of you might want such a thing).
Lastly, remember that if for any reason you want to add or remove
a trigger from an animation mode, you must create a new COF file for
it. For example, if you want to use an “NU” mode as the basis for a new
“SC”, you can’t just rename the files and entries as there is no
information contained in the “NU” mode to tell the game when to
actually cast the skill. In your new SC animdata line, place a “1” or
“2” in the frame you want to use as your trigger. Now, use COFEDIT to
generate a new COF based on your new “SC” animation, with the
appropriate trigger and frame set in the COFEDIT .ini file (or edit the
COF files manually with a hex editor, if you prefer).
Well, that should about cover it! As always, happy modding!
AI/Animation Mode Reference Chart
For your convenience, I have compiled a list of animation modes used by most of the monster AI choices.
AbyssKnight - DT,NU,WL,DD,GH,A1,S1,S3
Ancient - DT,NU,WL,DD,GH,BL,A1,A2,SC,S1
Andariel - DT,NU,WL,DD,GH,A1,SC
Arach - DT,NU,WL,DD,GH,A1,A2
ArcaneTower - DT,NU,DD,A1
AssassinSentry - DT,NU,DD,S1,S2
BaalCrab - DT,NU,WL,DD,A1,A2,SC,S1,S2,S3
BaalCrabClone - DT,NU,WL,DD,A1,A2,SC,S1,S2,S3
BaalMinion - DT,NU,WL,DD,GH,A1,A2
BaalTentacle - DT,NU,DD,GH,A1,S1(summon)
Baboon - DT,NU,WL,DD,GH,A1,A2
BatDemon - DT,NU,WL,DD,GH,A1,S2,S3,S4
Bighead - DT,NU,WL,DD,GH,A1,A2
BladeCreeper - DT,NU,WL,DD,S1
Bloodhawk - DT,NU,WL,DD,GH,A1
BloodLord - DT,NU,WL,DD,GH,A1,A2
BloodRaven - DT,NU,WL,DD,GH,A1,S1,RN
BoneWall - DT,NU,DD,GH,S1(summon)
Brute - DT,NU,WL,DD,GH,A1,A2
Catapult - DT,NU,DD,A1
ClawViper - DT,NU,WL,DD,GH,A1,A2
ClawViperEx - DT,NU,WL,DD,GH,A1,A2
CorruptArcher - DT,NU,WL,DD,GH,A1,RN
CorruptLancer - DT,NU,WL,DD,GH,A1,RN
CorruptRogue - DT,NU,WL,DD,GH,A1,BL,RN
CycleOfLife - DT,NU,WL,DD,A1,S1
DeathMauler - DT,NU,WL,DD,GH,A1,A2
DeathSentry - DT,NU,DD,S1,S2
DesertTurret - DT,NU,DD,A1
Diablo - DT,NU,WL,DD,A1,A2,BL,SC,S1,S2,S3,S4,RN
DoomKnight - DT,NU,WL,DD,GH,A1,BL,S3
DruidBear - DT,NU,WL,DD,GH,A1,A2,S1
DruidWolf - DT,NU,WL,DD,GH,RN,A1,A2,S1
Duriel - DT,NU,WL,DD,GH,A1,A2
ElementalBeast - DT,NU,WL,DD,S1
EvilHole - DT,NU,DD,S3,S4
Fallen - DT,NU,WL,DD,GH,A1,A2,BL,S1(raise),S2(taunt)
FallenShaman - DT,NU,WL,DD,GH,A1,A2
Fetish - DT,NU,WL,DD,GH,A1
FetishBlowgun - DT,NU,WL,DD,GH,A1
FetishShaman - DT,NU,WL,DD,GH,A1,SC
Fingermage - DT,NU,WL,DD,GH,A1,S1
FlyingScimitar - DT,NU,WL,DD,GH,A1,S1(summon)
FrogDemon - DT,NU,WL,DD,GH,A1,A2,S1(emerge)
FrozenHorror - DT,NU,WL,DD,GH,A1,A2
FoulCrowNest - DT,NU,S1,DD
GargoyleTrap - DT,NU,DD,GH,A1
Goatman - DT,NU,WL,DD,GH,A1
GreaterMummy - DT,NU,WL,DD,GH,A1,A2,SC
Griswold - DT,NU,WL,DD,A1
HighPriest - DT,NU,WL,DD,GH,A1,S1
Hydra - DT,NU,DD,A1,S2
Imp - DT,NU,WL,DD,GH,A1,SC,S1,S2
Izual - DT,NU,WL,DD,GH,A1,SC
MaggotLarva - DT,NU,WL,DD,GH,A1,A2,S1(spawn)
MegaDemon - DT,NU,WL,DD,GH,A1,S1
Mephisto - DT,NU,WL,DD,GH,A1,A2
Minion - DT,NU,WL,DD,GH,A1,A2
Mosquito - DT,NU,WL,DD,GH,A1,A2
MosquitoNest - DT,NU,DD,S1
Mummy - DT,NU,WL,DD,GH,A1,A2,S1(raise)
NecroPet - DT,NU,WL,DD,A1,S1(summon)
Nihlathak - DT,NU,WL,DD,GH,A1,A2
NpcBarb - DT,NU,WL,DD,RN,A1,A2
OblivionKnight - DT,NU,WL,DD,GH,S1,S2,S3
Overseer - DT,NU,WL,DD,GH,A1,A2,S1,S2
PantherJavelin - DT,NU,WL,DD,GH,A1,BL
PantherWoman - DT,NU,WL,DD,GH,A1,BL
PinHead - DT,NU,WL,DD,GH,A1,A2
PutridDefiler - DT,NU,WL,DD,GH,A1,S1,S2
QuillMother - DT,NU,WL,DD,GH,A1
Quillrat - DT,NU,WL,DD,GH,A1,A2
Raven - DT,NU,WL,DD,A1,S1(summon)
ReanimatedHorde - DT,NU,WL,DD,GH,RN,A1,A2,S1(raise)
Regurgitator - DT,NU,WL,DD,GH,A1,A2,S1(eat)
SandLeaper - DT,NU,WL,DD,GH,A1,A2
SandMaggot - DT,NU,WL,DD,GH,A1,A2,S1(burrow)
SandMaggotQueen – DT,NU,S1,DD
Sandraider - DT,NU,WL,DD,GH,A1,A2
Sarcophagus – DT,NU,S1,DD
Scarab - DT,NU,WL,DD,GH,A1,A2
ShadowMaster - DT,NU,WL,DD,GH,BL,A1,A2,SC,S1,S2,S3,S4,RN
ShadowMasterNoInit - DT,NU,WL,DD,GH,BL,A1,A2,SC,S1,S2,S3,S4,RN
ShadowWarrior - DT,NU,WL,DD,GH,BL,A1,A2,SC,S1,S2,S3,S4,RN
SiegeBeast - DT,NU,WL,DD,GH,A1,A2
SiegeTower – DT,NU,GH,DD
Skeleton – DT,NU,WL,DD,GH,A1,A2,BL,S1(summon)
SkeletonBow - DT,NU,WL,DD,GH,A1,S1(summon)
SkeletonMage - DT,NU,WL,DD,GH,A1,A2,BL,S1(summon)
Smith - DT,NU,WL,DD,GH,A1
Succubus - DT,NU,WL,DD,GH,A1,S2
SuccubusWitch - DT,NU,WL,DD,GH,A1,S2
SuicideMinion - DT,NU,WL,DD,S1
Summoner - DT,NU,WL,DD,GH,S1,SC
Swarm - DT,NU,WL,DD,GH,A1
Tentacle - DT,NU,DD,GH,A1,S1(emerge)
TentacleHead - DT,NU,DD,GH,A1,S1(emerge)
ThornHulk - DT,NU,WL,DD,GH,A1,A2
Totem - DT,NU,WL,DD
TrappedSoul - DT,NU,DD,A1,A2,S1,S2,S3
Vampire - DT,NU,WL,DD,GH,A1,SC
VileDog - DT,NU,WL,DD,GH,A1
VileMother - DT,NU,WL,DD,GH,A1,S1
Vines - DT,NU,WL,DD,A1,S1(summon)
Vulture - DT,NU,WL,DD,GH,A1,S1,S2
WillOWisp - DT,NU,WL,DD,GH,A1,SC,S1(appear)
Wraith - DT,NU,WL,DD,GH,A1
ZakarumPriest - DT,NU,WL,DD,GH,A1,S1
ZakarumZealot - DT,NU,WL,DD,GH,A1,A2,RN
Zombie - DT,NU,WL,DD,GH,A1,A2,S1(summon),RN
For further information and discussion, check out the designated thread.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=286]Knowledge Base - Matching New Monster Animations to an AI (by I_Burner)[/url]

View File

@ -0,0 +1,675 @@
# D2Mods Knowledge Base: Article 287
# Title: Adding ANY Monsters and ANY Objects to a DS1 (by Paul Siramy)
# URL: https://d2mods.info/forum/kb/viewarticle?a=287
Adding ANY Monsters and ANY Objects to a DS1 (by Paul Siramy)
Written by: Phrozen Heart
Written on: Sun Apr 29, 2007 4:54 am
Last modified: Sat Jan 06, 2018 2:15 am
Views: 23825
Description: Very useful tutorial for map making modders.
Categories: Tutorials (1.1x) - Map Making
Table
Of Content :
Overview
Hardcoded
tables in DLL
Type
1 units
Type
2 units
Softcoded
Type 1 table in the patch 1.10
Adding
a SuperUnique Monster to a DS1
Adding
a regular Monster to a DS1
First
method (direct index)
Second
method (indirect index)
Adding
an Object to a DS1
Overview
This tutorial
will explain how to add any Monster and any Object of any Act into any
DS1, dealing only with Diablo II TXT
as well as my DS1 editor, without DLL editing. Since the 1.10 patch, it
is now possible to use a new and very interesting functionality. TeknoKyo
discovered how the Type 1 units (Monsters/NPC) were now working, and SVR
did the same with the Type 2 units.
Hardcoded
tables in DLL
In
a DS1 you can find 2 kind of units. The Type 1 units
are Monsters/NPC, taken from Data\Global\Excel\MonStats.txt, Data\Global\Excel\MonPlace.txt,
and Data\Global\Excel\SuperUniques.txt. Each Type 1 units
can have Paths. The
Type 2 units
are Objects, taken from Data\Global\Excel\Objects.txt, such as Chest,
Shrine, Torch...
In D2Common.DLL
we can find 2 tables, one for the Type 1 units,
the other for the Type 2 units.
Both contains indexes, and are split into 5 parts, one for each act.
The Type
1 hardcoded table is composed of 60 entries per act, so since we have
5 acts this table has a total of 300 indexes. The Type 2 hardcoded table
is composed of 150 entries per act, for a total of 750 indexes
Here's an
extract of the start of the Type 1 table :
In a DS1
the Type 1 units are using an index. This is NOT directly the hcIdx you
can find in MonStats.txt, it's in fact the entry number in this Type 1
table. For instance, if in a DS1 of act 2 you put a Type 1 unit with ID
2, the game will take the Type 1 unit table, and check the entry # 2 of
act 2 (here the entry noted '62' in the image). The index value
at this entry is 177, so the game will use the Monster with hcIdx 177
from MonStats.txt, which is a NPC, Drognan.
Type
1 units
In all the
original DS1 of the game, each Type 1 unit are using ID which range from
0 to 59. This is the Act value inside the DS1 that indicates which one
of the 5 possible parts of the Type 1 table the game will look into :
Act 1
= entries 0 to 59
Act 2
= entries 60 to 119
Act 3
= entries 120 to 179
Act 4
= entries 180 to 239
Act 5
= entries 240 to 299
This also
means that, normally, one DS1 can have access to only 60 different Monsters/NPC.
But up to the 1.09d patch it was possible to use a useful trick to make
one DS1 have access to all 300 Monsters/NPC of the entire Type 1 table
: you simply had to used an ID that was out of the legit bounds (lower
than 0, or greater than 59).
For instance,
if in an Act 2 DS1 (which use entries 60 to 119 in the table)
you placed a Type 1 unit with an ID of -14, then the game was looking
in the Act 1 part of the Type 1 table instead of the expected
Act 2, and took the entry 46 (60 - 14 = 46), which has the value 652.
For some reasons this is not the Monster with hcIdx from MonStats.txt
(bloodlord6), but a SuperUnique Monster (Corpsefire).
Another
example : in the same Act 2 DS1, a Type 1 unit with an ID of 62 would
have make the game use a Monster/NPC of Act 3 (not Act 2), and it'd
be the entry 122 in the Type 1 table : Act 2 start at entry 60, 60 +
62 = 122, 122 is in the range of Act 3 units.
You have
to know that the 1.10 patch changed that behavior, and this trick don't
work anymore, but we'll see that in details later.
Type
2 units
This table
has 150 entries per act, so in a DS1 each Type 2 unit has an ID that range
from 0 to 149. As for the Type 1 units, the ID are NOT directly the Id
from Data\Global\Excel\Objects.txt but the entry number in the Type 2
table for the Act of the DS1. Up to the 1.09d patch you were able to use
the same trick idea, except that there was a check in the DLL that prevent
it working exactly the same : you were able to use Objects of precedent
Acts (with a negative ID), but it was impossible to use an ID greater
or equal than 150, making it impossible to use Objects of later acts.
The workaround was to always use a DS1 of Act 5, since it gave the access
to all the Objects contained in the Type 2 table.
Softcoded
Type 1 table in the patch 1.10
The
patch 1.10 (in fact it was there from the beta release, 1.10s) gave us
a new level of flexibility for Type 1 units, as it introduced a new TXT
: Data\Global\Excel\MonPreset.txt. It also introduced Data\Global\Excel\MonPlace.txt,
but this one is better left out. MonPreset.txt can be seen as the original
table from which the hardcoded Type 1 table has been made.
In MonPreset.txt,
there are 47 entries for the Act 1. As you can see in the precedent image,
the first 4 entries have the values 147, 146, 148 and 149. In MonStats.txt
the Monsters/NPC with these hcIdx are : gheed, cain1, akara
and chicken. Coincidentally, in MonPreset.txt the first 4 entries
for Act 1 are exactly the same 4 codes. This makes it clear that the old
Type 1 hardcoded table is not in the DLL anymore, but is now accessible
in a TXT.
The good
news about the Type 1 table being a TXT table are that you can edit the
entries very easily (not recommended tough), but also *add* new entries.
And you're not limited to 60 Monsters per Act now, you can put in one
Act the entire list of the Monsters/NPC from MonsStats.txt and all the
SuperUnique Monsters if you want.
A drawback
is that 1.09 DS1 that used the trick of placing Monsters of another Act
(with the help of ID out of bounds) are not compatible with the 1.10 patch,
so you have to edit all these 1.09 DS1 to convert them into 1.10, else
unexpected Monsters/NPC will spawned in these DS1.
Adding
a SuperUnique Monster to a DS1
Let's
say that you want to use a SuperUnique Monster at the Den of Evil's entrance,
one that you either created or one that simply not belongs to the Act
1 usually. For
SuperUnique monsters (monsters found in SuperUniques.txt) you have no
choice, you
*have* to use MonPreset.txt. For
regular Monsters/NPC (found in MonStats.txt) we will use another and more
simple method, that we'll see later.
First, we
have to make this SuperUnique monster available for any Act 1 DS1. So
we edit MonPreset.txt and add a new row at the end of the act 1
entries. Let's say that we'll use Frozenstein, found in Act 5 normally,
the TXT will looks like this :
For the game,
this is enough to make this SuperUnique monster available for any DS1
that use units of Act 1. But if you want to put that monster into a DS1
using my DS1 editor, you have to edit another file.
In the DS1
editor directory, go into the data sub-directory, and edit the
file Obj.txt in MS-Excel or any similar program. This file tells
the editor which units you can place into a DS1, and to avoid problems
it should be the reflect of the game's files. Here, we already have some
rows below Corpsefire, still in Act 1 (from Id 47 to Id 59) :
They are
unused entries of the 1.09 patch where the Type 1 hardcoded table was
60 entries per Act. In the 1.10 patch however, these entries have no meaning
anymore.
You have
to make the Type 1 units of the DS1 editor's Obj.txt be the exact reflect
of MonPreset.txt so, as you did for MonPreset.txt, place Frozenstein
right after Corpsefire, inserting a new row if needed (and
adjusting the Id column), which is not the case here so just replace the
first unused row. Your Obj.txt should now looks like this :
The important
columns are Act, Type, Id and Description,
as the others are only graphical datas to display an animated sprite into
the Editor, which is only optional. Don't forget to add a 0 (zero)
in the column *eol column tough, this is to ensure that Ms-Excel
will save the file correctly.
You are now
able to add Frozenstein to the entrance of the Den of Evil DS1
:
Inserting
Frozenstein in the DS1 Editor
The
result in-game
Adding
a regular Monster to a DS1
When
you want to add in a DS1 a monster that is present in MonStats.txt (not
in SuperUniques.txt), you don't have to place it's Id in MonPreset.txt,
you can use a new functionality of the 1.10 patch :
In
a DS1, a Type 1 unit that has an ID which don't represent a valid
row in MonPreset.txt is considered as the hcIdx in MonStats.txt.
This is how
you can place in a DS1 of any Act *almost* any Monster/NPC present in
MonStats.txt : QuillRat, BloodLord, Larzuk, Radament, Diablo... As for
the 'almost' part : The monsters at the start of MonStats.txt
which have a hcIdx that represent a valid row in MonPreset.txt can't be
accessed using this method, because the monsters defined in MonPreset.txt
will be take instead. So if you really wanted to place a monster with
such a low ID, then put its code (Id column from MonStats.txt)
in MonPreset.txt as you would do for a SuperUnique monster.
In the un-modded
1.10 patch, MonPreset.txt has 47 entries for Act 1, their indexes ranging
therefore from 0 to 46. So, in a DS1 that use Act 1 units, a Type 1 unit
with an ID of 46 will be Corpsefire, while a Type 1 unit with an
ID of 47 will be the Monster/NPC with hcIdx 47 in MonStats.txt : FleshHunter.
In our precedent
example, we have added a new row to the Act 1 of MonPreset.txt, Frozenstein.
In that case then, in a DS1 that use Act 1 units, a Type 1 unit with an
ID of 46 will still be Corpsefire as expected, but another unit
with a Type 1 ID of 47 will be Frozenstein and not FleshHunter
any more. A Type 1 unit with an ID of 48 will be taken from MonStats.txt,
and this will be the Monster with hcIdx 48 : DuneBeast.
Here's a
diagram that show the logic, for the un-modded 1.10 patch (original MonPreset.txt
to be more specific). In the Act 2 part of MonPreset.txt, we find 59 rows,
so the IDs there are ranging from 0 to 58. In a DS1 that use Act 2 units,
a Type 1 unit with ID 58 will be find into MonPreset.txt (row #58 = skeleton5),
but another with ID 59 is a row that is not in MonPreset.txt, so the game
will looks into MonStats.txt instead, and the Monster with hcIdx 59 (CarverShaman)
will be used :
If you want to place Diablo in a Act 3 DS1, since he is hcIdx 243
in MonStats.txt (greater than 38 then), you have 2 solutions :
Direct
index : In the DS1, place a Type 1 unit with ID 243
Indirect
index : In MonPreset.txt, in the Act 3 part, put diablo in the
Place column, and in the DS1 put a Type 1 unit with an ID that
is the row of diablo in MonPreset.txt, Act 3 part. If you didn't
add entries to the act 3 part of MonPreset.txt yet, it'll be the row
39, so in the DS1 put a Type 1 unit with ID 39.
Both methods
will work, so it's up to you to decide which one to use. None will prevent
you to corrupt your DS1 if you delete or insert rows in MonPreset.txt
and/or MonStats.txt so, as often as possible, just add entries to these
files to avoid you the need to edit the corupted DS1.
Whatever
the method you'll choose, you'll have to edit my DS1 editor's Obj.txt
to be able to put the Type 1 unit. If you choose the 1st method, put the
MonStats.txt hcIdx in the Obj.txt Id column. If you choose the 2nd method,
put the MonPreset.txt row number instead.
First
method (direct index)
Insert
Diablo in Obj.txt
(Act 3, type 1 list, using MonStats.txt hcIdx)
Insert
Diablo in a Act 3
DS1, using the DS1 Editor
The
result in-game
Second
method (indirect index)
Insert
Diablo in MonPreset.txt
(Row 39 of the Act 3 Type 1 list)
Edit
or insert Diablo in Obj.txt
(Act 3, Type 1 list, using row
number in MonPreset.txt)
Insert
Diablo in a Act 3
DS1, using the DS1 Editor
The
result in-game
Adding
an Object to a DS1
Using a negative
ID for an Object still works in 1.10 like in 1.09. This means that a DS1
can have access to all objects of its Act and the precedent Acts, but
not later ones.
Now, even
if there is no equivalent of MonPreset.txt for the Objects, the possibility
to use a greater ID works the same as for Type 1 unit, with one noticeable
difference : if the game find in a DS1 an Object with an ID greater or
equal than 150, then it first substract 150 to this value, and
then it use this new value and consider it as the ID in Objects.txt. Note
that you can't use a Type 2 Object ID of exactly 150, because in Objects.txt
the object with ID 0 make the game crash.
Substracting
150 to the DS1 Type 2 ID gives you access to ALL the objects in Objects.txt,
not like Type 1 units where you couldn't use the first monsters with a
too low hcidx.
Let's use
different objects of all acts in a act 1 DS1 :
Description
Act
Objects.txt
ID
DS1
Editor ID
Trap
Door
2
74
+
150 =
224
Lam
Esen's Tome
3
193
+
150 =
343
Diablo
seal
4
392
+
150 =
542
Ancients
Altar
5
546
+
150 =
696
Note : We
don't care to know if the objects do works out of their expected act,
as this is just a demonstration :
Insert
the 4 new objects ID in Obj.txt of the DS1 Editor
The
4 objects of later acts, in the DS1 Editor
The
result in-game
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=287]Knowledge Base - Adding ANY Monsters and ANY Objects to a DS1 (by Paul Siramy)[/url]

View File

@ -0,0 +1,183 @@
# D2Mods Knowledge Base: Article 301
# Title: Levels.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=301
Levels.txt
Written by: kingpin
Written on: Sun Sep 09, 2007 5:30 am
Last modified: Wed Oct 24, 2018 3:23 pm
Views: 43113
Description: by Nefarius & Kingpin, Expanded and restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
OVERVIEW:
This is the file that controls how the game handles links levels, what monsters and object that are spawned that are placed on the level.
This file is used in pair with:
LvlMaze.txt
LvlPrest
LvlSub.txt```
LvlTypes.txt
MonStats.txt```
Automap.txt
LvlWarp.txt
Objgroup.txt
Name: This column has no function, it only serves as a comment field to make it easier to identify the Level name
Id: Level ID (used in columns like VIS0-7)
Pal: Act Palette . Reference only
Act: The Act the Level is located in (internal enumeration ranges from 0 to 4).
QuestFlag - QuestFlagEx: Used the first one in Classic games and the latter in Expansion games , they set a questflag. If this flag is set, a character must have completed the quest associated with the flag to take a town portal to the area in question. A character can always use a portal to get back to town.
Layer: Each layer is an unique ID. This number is used to store each automap on a character. This is used by the game to remember what level the automap are for.
NOTE: you need to use the extended levels plugin to be able to add additional layers.
SizeX (X) - SizeY (X): sizeX - SizeY in each difficuly. If this is a preset area this sets the X size for the area. Othervise use the same value here that are used in lvlprest.txt to set the size for the .ds1 file.
OffsetX - OffsetY: They set the X\Y position in the world space
Depend: This set what level id's are the Depended level.
Example: Monastery uses this field to place its entrance always at same location.
Teleport: Controls if teleport is allowed in that level.
```
0 = Teleport not allowed
1 = Teleport allowed
2 = Teleport allowed, but not able to use teleport throu walls/objects (maybe for objects this is controlled by IsDoor column in objects.txt)
```
Rain: It sets whether rain or snow (in act 5 only) can fall . Set it to 1 in order to enable it, 0 to disable it.
Mud: Unused setting (In pre beta D2 Blizzard planned Rain to generate Mud which would have slowed your character's speed down, but this never made it into the final game). the field is read by the code but the return value is never utilized.
NoPer: Setting for 3D Enhanced D2 that disables Perspective Mode for a specific level. A value of 1 enables the users to choose between normal and Perspective view, while 0 disables that choice.
LOSDraw: Allows you to look through objects and walls even if they are not in a wilderness level. 1 enables it, 0 disables it.
FloorFilter: Unknown. Probably has to do with Tiles and their Placement . 1 enables it, 0 disables it.
BlankScreen: Unknown. Probably has to do with tiles and their placement. 1 enables it, 0 disables it.
DrawEdges: for levels bordered with mountains or walls, like the act 1 wildernesses. 1 enables it, 0 disables it.
IsInside: Setting it to 1 makes the level to be treated as an indoor area, while 0 makes this level an outdoor. Indoor areas are not affected by day-night cycles, because they always use the light values specified in Intensity, Red, Green, Blue. this field also controls whenever sounds will echo if you're running the game with a sound card capable of it and have enviroment sound effects set to true.
DrlgType: Setting for Level Generation: You have 3 possibilities here:
```
1 Random Maze
2 Preset Area
3 Wilderness level
```
LevelType: The type of the Level (Id from lvltypes.txt)
Sub Columns IDs from LvlSub.txt, which is used to randomize outdoor areas, such as spawning ponds in the blood moor and more stones in the Stoney Field. This is all changeable, the other subcolumns are explained in this post.
SubType: Setting Regarding the level type.
Example: 6=wilderness, 9=desert etc, -1=no subtype.
SubTheme: Tells which subtheme a wilderness area should use. Themes ranges from -1 (no subtheme) to 4.
SubWaypoint: Setting Regarding Waypoints
NOTE: it does NOT control waypoint placement.
SubShrine: Setting Regarding Shrines.
NOTE: it does NOT control which Shrine will spawn.
Vis0 - Vis7: These fields allow linking level serverside, allowing you to travel through areas. The Vis must be filled in with the LevelID your level is linked with, but the actuall number of Vis ( 0 - 7 ) is determined by your actual map (the .ds1 fle).
Example: Normally Cave levels are only using vis 0-3 and wilderness areas 4-7 .
Warp0-7: This controls the visual graphics then you move the mouse pointer over an entrance. To show the graphics you use an ID from lvlwarp.txt and the behavior on the graphics is controlled by lvlwarp.txt. Your Warps must match your Vis.
Example: If your level uses Vis 3 - 5 - 7, then you must also use Warp 3 - 5 - 7 .
Intensity - Red - Green - Blue: These settings handle the light intensity as well as its RGB components.
Portal: This field is required for some levels, entering those levels when portal field isn't set will often crash the game. This also applies to duplicates of those levels created with both of the extended level plugins.
Position: This controls if you can re-position a portal in a level or not. If it's set to 1 you will be able to reposition the portal by using either map entry#76 Tp Location #79. If both tiles are in the level it will use Tp Location #79. If set to 0 the map won't allow repositioning.
SaveMonster: Setting this field to 1 will make the monsters status saved in the map. Setting it to 0 will allow some useful things like NPC refreshing their stores.
WARNING: Do not set this to 1 for non-town areas, or the monsters you'll flee from will simply vanish and never reappear. They won't even be replaced by new ones
Quest: What quest is this level related to. This is the quest id (as example the first quest Den of Evil are set to 1, since its the first quest).
WarpDist: This sets the minimum distance from a VisX or WarpX location that a monster, object or tile can be spawned at. (also applies to waypoints and some preset portals).
MonLvl1 - 3 MonLvl1Ex - MonLvl3-Ex: Area Level on Normal-Nightmare-Hell in Classic and Expansion . It controls the item level of items that drop from chests etc.
MonDen (X) This is a chance in 100000ths that a monster pack will spawn on a tile. The maximum chance the game allows is 10% (aka 10000) in v1.10+,
MonUMin - MonUMax Minimum - Maximum Unique and Champion Monsters Spawned in this Level. Whenever any spawn at all however is bound to MonDen.
MonWndr: [To be updated]
MonSpcWalk This setting is hardcoded to certain level Ids, like the River Of Flame, enabling it in other places can glitch up the game, so leave it alone. It is not known what exactly it does however.
NumMon Number of different Monster Types that will be present in this area, the maximum is 13. You can have up to 13 different monster types at a time in Nightmare and Hell difficulties, selected randomly from nmon1-nmon25. In Normal difficulty you can have up to 13 normal monster types selected randomly from mon1-mon25, and the same number of champion and unique types selected randomly from umon1-umon25.
mon1-mon25 - nmon1 - nmon25 mon1-mon25 work in Normal difficulty, while nmon1-nmon25 in Nightmare and Hell. They tell the game which monster ID taken from MonStats.txt.
NOTE: you need to manually add from mon11 to mon25 and from nmon11 to nmon25 !
rangedspawn Give preference to monsters set to ranged=1 in MonStats.txt on Nightmare and Hell difficulties when picking something to spawn.
umon1-umon25 Works only in normal and it tells which ID will be used for Champion and Random Uniques. The ID is taken from MonStats.txtOnly the first ten columns appear in the unmodded file. In 1.10 final, beta 1.10s and v1.11+ you can add the missing umon11-umon25 columns.
NOTE: you can allow umon1-25 to also work in Nightmare and Hell by following this simple ASM edit
cmon11-4: Critter Species 1-4. Uses the Id from monstats2.txt and only monsters with critter column set to 1 can spawn here. critter column is also found in monstats2.txt. Critters are in reality only present clientside.
cpct1-cpct4 Controls the chance for a critter to spawn.
camt1-camt4. Unknown. These columns are bugged, as the game overrides the contents of columns 3-4 with the value from column 1 when it compiles the bin files.
Themes: Unknown. It states which theme is used by the area and this field is accessed by the code but it is not exactly known what it does.
SoundEnv: Referes to a entry in SoundEnviron.txt (for the Levels Music)
Waypoint: 255 means no Waipoint for this level, while others state the Waypoint' ID for the level
NOTE: you can switch waypoint destinations between areas this way, not between acts however so don't even bother to try.
LevelName: String Code for the Display name of the Level
LevelWarp: String Code for the Display name of a entrance to this Level
EntryFile: Which *.DC6 Title Image is loaded when you enter this area. this file MUST exist, otherwise you will crash with an exception when you enter the level (for all levels below the expansion row, the files must be present in the expension folders)
ObjGrp0-7: this field uses the ID of the ObjectGroup you want to Spawn in this Area, taken from Objgroup.txt.
ObjPrb0-7: These fields indicates the chance for each object group to spawn (if you use ObjGrp0 then set ObjPrb0 to a value below 100)
Beta: Reference Only (can be used for comments)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=301]Knowledge Base - Levels.txt[/url]

View File

@ -0,0 +1,39 @@
# D2Mods Knowledge Base: Article 302
# Title: LvlMaze.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=302
LvlMaze.txt
Written by: kingpin
Written on: Fri Sep 03, 2004 12:21 am
Last modified: Wed Oct 24, 2018 3:23 pm
Views: 14788
Description: by Myhrginoc, restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
LvlMaze.txt is the file that controls how many ds1 (rooms) and how large each ds1 are for random underground levels (mazes).
This file is using:
Levels.txt
Name descriptive, not loaded in game. Corresponds with Name field in Levels.txt
Level: ID from Levels.txt
NOTE: Cave 1 is the Den of Evil, its associated treasure level is quest only.
Rooms - Rooms(N) - Rooms(H): the minimum number of .ds1 map sections that will make up the maze in Normal, Nightmare and Hell difficulties.
SizeX - SizeY: the size in the X\Y direction of any component ds1 map section.
Merge: Possibly related to how adjacent .ds1s are connected with each other, but what the different values are for is unknown.
Beta: Included in the original Diablo II beta tests and in the demo version..
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=302]Knowledge Base - LvlMaze.txt[/url]

View File

@ -0,0 +1,105 @@
# D2Mods Knowledge Base: Article 310
# Title: Tutorial Dt1 Exercise 1 - Replacing tiles in an existing dt1
# URL: https://d2mods.info/forum/kb/viewarticle?a=310
Tutorial Dt1 Exercise 1 - Replacing tiles in an existing dt1
Written by: Volf
Written on: Fri May 04, 2007 2:38 am
Last modified: Sat Jan 06, 2018 2:31 am
Views: 9004
Description: In this exercise we will be replacing the town fence with our own new fence. There are several different ways of doing this - I believe most mappers have their own ways; this is one of my ways.
Categories: Tutorials (1.1x) - Map Making
HTML clipboard Tutorial Dt1 Exercise 1 - Replacing tiles in an existing dt1 Author: volf Credits For additions in yellow go to Paul Siramy
For proofreading go to Kraj Tools needed Files To extract Mpq extractor - alternative dataglobaltilesact1townFence.dt1 Pauls Dt1 tools - alternative link paint shop pro D2 Palette(Paint Shop Pro) - alternative link notepad Before we begin I suggest you read pauls dt1 documentation Let's get started. In this exercise we will be replacing the town fence with our own new fence. There are several different ways of doing this - I believe most mappers have their own ways; this is one of my ways. First, open your favorite mpq extractor and extract dataglobaltilesact1townFence.dt1. Once you have done that we move on to the dt1 tools. We will now make a bat to convert the dt1 to a pcx and ini file. To do so, open notepad and type @echo off
dt1extr Fence.dt1 -pal d2palact1.dat Then save as ExtractFence.bat any file. Note: save the bat to the dir where you have the dt1 tools. Also move the Fence.dt1 to this same directory. Now double click the new bat file and your dt1 will be converted to a pcx (Fence-wu.pcx) and an ini file (Fence.ini). Now We open Fence-wu.pcx in Paint Shop Pro and perform the following steps: * Edit the palette (Shift+P in PSP 6) still same in psp7, 8 and 9
* Change the gray background color (index #0) into cyan. The background changes to cyan. This makes sure ALL pixels of the background are now cyan, exactly like the background color we'll load in the new palette.
* Load the d2-act0 palette, nearest color matching (do not use dithering or keep index).
(Note: to load the palette go to color menu-load palette and press edit paths. Now select the path to where you have the d2 palettes.)
(Note to load the palette go to color menu-load palette and press edit paths now select the path to where you have the d2 palettes, after that) After your pcx is open and you have change the palette to be act0:
* Go to File / Preferences / General Program Preferences / Rulers and Units
* Section 'grid'
* Units = pixels
* Horizontal spacing = 160
* Vertical spacing = 80 (but this one is not very important)
* Line color : something that is not cyan
* View / Grid : now you can see that all tiles are surrounded by 2 vertical lines.
* Optional : if you want to make the horizontal lines appear correctly on the bottom, choose add pixels on top (since my dt1 tools expect the wall tiles all to be aligned at the bottom). Adds the necessary amounts of pixels in order that the height of the pcx image is a multiple of 80. For instance, if the Fence was 343 pixels (in fact by chance it's already set to 320, so it's ok, but let's take a more general example), we'll proceed that way:
343 / 80 = 4.2875
integer part of 4.2875 = 4
4 + 1 = 5
5 * 80 = 400
400 - 343 = 57
So add 57 pixels to the top of the image (Image / Add Borders ...), and now the image will be a multiple of 80 pixels height and the horizontal grid will be correctly aligned. The tiles will still be at the bottom.
In later psp versions you will find grid options under View - Change Grid, Guide & Snap properties. Like Paul said, a tile is 160 pixels wide and 80 pixels high. You now notice that the tiles only cover half of the grid. This is because of their direction, so we will change the vertical grids to 80x80. Now it is as wide as our tiles are in this tutorial.
In the example pictures in this tutorial you will not se a grid because I did not use one. Now we copy 1 tile from the image and modify it in to something a bit different. For this I chose the tile to the left. I will not go in to detail of how to modify the tile - the only rule we have while modifying this tile is that it must be a very specific size. There are two key points on the image: the two pink dots in the pic to the right - these must be the bottom left corner and right corner. The blue lines are the outline of the image. You're already using the grid Paul explained earlier witch does the same thing in a better way so forget about my blue lines
Add the pink dot to your image in the exact same places, not the blue, just the two pink dots.
Now lets start modifying the image. Step 1.
I used the freehand selection tool, set as point to point selection and selected the part under the two pink dots. Then I used the color fill tool set with tolerance 200 to fill the selected area. The result is to the right.
Image below shows that the two dots are still there. Step 2.
I selected the upper part of the image and copy it.
(to copy these ctrl+c when selected, to paste ctrl+v) Step 3.
Now before we move on to the selected part you just pasted we go back to the tile and press ctrl+e. This will paste the image in to the original image. Once its pasted use the Move tool to move the pasted image, place it as you wish. I will make this into a low fence.
Now it should look something like the image to the right. Step 4.
Now select the pole part of the image (do not select it all the way down, leave the pink dot outside of the selection) and copy and paste it, then mirror the pole part that you just copied. Step 5.
Basically the same as step 3 - you paste the pole into the image and use move tool to move it to the correct place (again make sure the pink dot remains). It will now look like the image to the right. There may be a few glitches, which you can manually edit a bit. When editing glitches the color selection tool is a great help because it allows you to select colors from the image. Another good way is to use the selection tool: select the exact areas you want to edit and paint inside the selections. Personally I often use the clone brush to paint inside a selected area when correcting glitches. Some touch up tricks: Now go to color menu and select increase color depth to 16 million colors.
In this image I have used the selection tool to select an area I wish to correct. Then I use the clone brush (the square in the middle) and right click. This sets a starting point for the clone brush. Now I move the clone brush as you see in the image. The right lower corner of the brush is in the last black dot just like it was in previous image where we set the start point. Now we press down the left button and start cloning. When finished load the act0 palette again. After touching up my tile looks like image to the right, note both pink dots are at the exact same position where they were when I started.
When touching up I removed all unwanted parts; I also removed the lowest bar of the fence to give it a bit more life and some of the black parts between were removed. You don't have to do it exactly like I did - as long as the pink dots are still there this will work. Next step, back to the dot. This time we go 14 pixels straight up from the dot and make a new dot there. After this you may remove the original dot since we'll use the new one from now on. Now make a new empty image that is about 300x300 pixels big, load act0 palette and fill the image with cyan color, then copy your tile in to the middle of the big picture. Now we have our tile, so we go back to the Fence-wu.pcx and have a look at tiles that have the same direction as our tile As you see there are 2 different versions, end tiles and tiles that will be used in the middle. Let's call them type1 and type2. Let's compare them to our new tile. On all these tiles you can see 1 or 2 identical parts where we first placed our dots when we started. The image below shows this. Type 1 tile's dot area: Type 2 tile's dot area: Now we get to the point: increase color depth for Fence-wu.pcx to 16 million colors.
Then get out the clone brush again. Use the square form and go to your new tile with the clone brush and right click exactly so that the right side pink dot is inside the corner of the clone brush.
You can use a smaller brush if you like. Now go to the first tile in Fence-wu.pcx, which is a type 1 tile and set the brush so that this tile's right dot point is in the lower right corner of the brush. Press down the left mouse button and keep it down until you have cloned the whole tile. Continue cloning around it so that all old parts of the tile are replaced with the transparent color. For tiles that are type 2 you can use the same dot as starting point or the other one, so we skip to a corner tile with starting point in other direction. For this we use the left dot of our tile: inside the lower left corner when you right click on the tile you start the cloning as image to the right shows. Last type of tiles are corner tiles. These aren't really any different - they have the same dot spot in the middle, you just need to be more careful with the clone brush in the middle so that you wont go over it. When you have done one of these tiles it looks like this: Now you just keep doing this until all tiles using same direction as your tile are replaced. When that is done, mirror your tile as we mirrored the pole earlier and do the same for all the tiles in the other direction.
The only tiles we don't touch are the last two and their shadow tiles. See image below. You're almost done now and if all has gone right your tile set will look similar to mine. Two more steps: load act0 palette again and use color selection tool to select the pink dot color as background color (right click it), then select a brown color from somewhere near the dot. Then select the color replace tool and double click left mouse button. This removes all the dots in 1 click. Final step: save the image Fence-wu.pcx Only one thing left to do: now we need to convert this back to a dt1, so back to dt1 tools. Again, open notepad and type:
@echo off dt1make Fence.ini
Save as any file, name it MakeFence.bat
Now you have the bat file, the ini and the edited pcx in the dt1 tools directory. Right click the new bat and it will make your new dt1. It will be called NEW_Fence.dt1
Rename it to Fence.dt1 and place it in your data folder dataglobalact1town. Run the game in direct.txt, go in to town and you will see your new fence there.
Congraz! You have just made a custom dt1! Mine turned out like so:
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=310]Knowledge Base - Tutorial Dt1 Exercise 1 - Replacing tiles in an existing dt1[/url]

View File

@ -0,0 +1,348 @@
# D2Mods Knowledge Base: Article 317
# Title: Misc.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=317
Misc.txt
Written by: Phrozen Heart
Written on: Fri Jan 12, 2007 5:20 pm
Last modified: Wed Oct 24, 2018 3:23 pm
Views: 31221
Description: by Kingpin & Ric Faith, restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
OVERVIEW
Armor.txt ,Misc.txt and Weapons.txt have many identical columns. That's because in fact these 3 text files are, in truth, three parts of a single big file : when the game reads these 3 tables, it merges them all, one after another, into one and unique table. These 3 text files contain all the base items of the game : normal / exceptional / elite versions of the in-game items. Incidently, that means you can add columns to any one of these 3 files. For instance if you add the columns Transmogrify,TMogType, TMogMin and TMogMax to Armor.txt and use them for an Helm, then this Helm will be able to be Transmute into another item, something that doesn't look possible at first glance since the 4 columns are not originally in Armor.txt.
NOTE: to add columns in a .txt, don't use D2Excel, as this program can't do the job. Instead, use MS Excel or another spreadsheet that can import and export tab-delimited .txt files.
RELATED .TXT FilES
Armor.txt is used in pair with:
AutoMagic.txt
Belt.txt
Composit.txt
ItemTypes.txt
Missiles.txt
Sound.txt
And is used by :
CharStats.txt
CompCode.txt
CubeMain.txt
SetItems.txt
UniqueItems.txt
COLUMN DESCRIPTIONS :
name: Reference only, its a comment field.
szFlavorText: unknown if used
compactsave: Boolean which ranges from 0 to 1. This is used to get a smaller filesize but will NOT save any stats to the item, this means it will not save any quantity, automagic, affixes, damage, armor, durability e.tc. This is often used by items that don't need any stats stored like Healing potions, gems.
version: If you set it to 0, then your misc item will only be available in Classic. A value of 100, instead, makes it available in Expansion.
level: base item level.
Example: a monster with a mlvl of 20 cannot drop a lvl30 item.
levelreq: the minimum level the players need to have to use that item
rarity: Rarity, if set to 0 , excludes the item(s) to be dropped
from the armor racks. If set to something bigger than 0 , then it sets the rarity for this item to
drop from any armor rack. The higher, the rarer.
NOTE: You need at least 1 armor with rarity 0 or 1, otherwise the game will crash when you use an armor rack,
simply because it won't find any armor available.
spawnable: if set to 0 , this field tells the game that the item
cannot be found for sale when you interact with NPC's. Setting it to 1 has the opposite effect.
speed: If set to a positive value, then it slows down your character when worn. Negative
values, instead, will render the character faster.
durability - nodurability - durwarning: Durability sets the base durability, and ranges from
0 to 255(if set higher or lower than these two caps, you'll have a
rollover). NoDurability means the item has not any durability. DurWarning displays the warning icon on the right part of your
screen when the Durability of the item hits the amount set here.
gamble cost:: Overrides the default Gamble Cost, but it only works for Rings and Amulets
[ code: This is a 3 or 4 alphanumeric code which identifies the item for certain purposes.
alternategfx : it's the code of the DCC used by the Player animation while equipping the item.
namestr: It is the name string of the item.
NOTE: If this string is NOT present in a TBL, it will be considered directly as the name of the item, but if this
code IS present in a TBL then it'll be that TBL record that will be used as the name of the item instead. Also, keep in mind that
if you want a string name with at least 1 space, then you'll have to create a record in a TBL.
component: Layer of the Player Animation used by the item, taken from Composit.txt
The Composit table is indexed as follows:
```
1.Head HD
2.Torso TR
3.Legs LG
4.RightArm RA
5.LeftArm LA
6.RightHand RH
7.LeftHand LH
8.Shield SH
9.Special1 S1 (shoulder #1)
10.Special2 S2 (shoulder #2)
11-Special3 S3
12-Special4 S4
13.Special5 S5
14.Special6 S6
15.Special7 S7
16.Special8 S8
```
invwidth- invheight: width and heght of the item, in terms of inventory cells.
hasinv: 1 can be socketed,0 cannot be socketed (You need to set MaxSock 1/25/40 in itemtypes.txt to at least 1 to have sockets in the item)
hasinv- gemsockets - gemapplytype : These three columns are used as socketing parameters.
- hasinv states if the item has an "inventory", meaning it's able to store gems or runes within. ( 1 : yes ; 0 : no).
- gemsockets determines the potential maximum amount of sockets, capped to width * height. In addition, there are three fields in ItemTypes.txt that limit the number of sockets, based on the level of the monster that drops the item. These columns are MaxSock1, MaxSock25 and MaxSock40.
- gemapplytype determines which kind of effect the gem will apply to the item it's inserted within:
```
0 = weapon
1 = armor / helm
2 = shield
```
If you use other values, your item won't be able to have sockets.
flippyfile - invfile - uniqueinvfile: These four columns contains DC6 filenames to use for various cases:
- flippyfile is the animation used when the item drops on the ground,
- invfile is the item image when it's in your inventory
- uniqueinvfile is used by the unique version of the item in your inventory
All of these files are located in Data\Global\Items\
special: Not used, Comment field.
Transmogrify: It states whether the item can be turned into another one by right-click or not.
TMogType: It states 3 character code which respresents the item that this item becomes when right clicked (see Transmogrify)
TMogMin - TMogMax: Minimum/Maximum quantity appearing of the item in Transmogrify
useable: It specifies whether the item can be used via right-click. ( 1 : yes ; 0 : no). This is a column often used in Misc.txt for potions and scrolls
NOTE : The game knows what to with the item by its code. Unless you're doing dll editing, don't expect an item to do something
just because you have set this column to 1.
throwable: A value of 1 renders this item throwable. 0 disables throwing.
type: It tells the first Item base type taken from ItemTypes.txt
type2: It tells the secondItem base type taken from ItemTypes.txt
dropsound - dropsfxframe - usesound : these three columns are related to the item sound. The code is taken from the field "Sound" in Sounds.txt.
- dropsound is used when the item drops on the ground.
- dropsfxframe is the point (measured in frames) after which the sound from 'dropsound' plays.
- usesound is the sound played when the item is used or moved through the inventory.
unique : If this column is set to 1 , then the item can only spawn as unique.
transparent - transtbl : Unknown. Apparently has no effect in game. TransTbl could be related to the item's blending mode.
lightradius: Not used.
belt: numberic Id from belts.txt (defines number of potion slots). It states whether the item can or cannot be put inside the belt cells. ( 1 : yes ; 0 : no).
NOTE: Since Misc.txt and Armor.txt are part of the same file, it seems that the game looks for the type of the item first, and *then* decide how to understand the value in this column.
autobelt: Whether or not the item appears in your belt when picked up
stackable: A value of 0 means that the item cannot be stacked, while 1 means it can be stacked.
stackable - minstack - maxstack - qntwarning: These four columns handle the possibilty, for the item, to be stacked.
stackable decides if the item can be stacked or not. ( 1 : yes ; 0 : no).
minstack : Minimum quantity of the stack when the item is spawned.
maxstack : Maximum quantity of the stack when the item is spawned.
qntwarning : Quantity from which the warning message appears.
spawnstack: It tells how large is the stack when the item spawns.
quest - questdiffcheck : these two columns are related to quests:
- quest handles some hardcoded ID's for quest items. Quest items are counted as Uniques and cannot be sold to NPC's.
- questdiffcheck indicates that the item has a difficulty check. When set to 1, this item will only work in the difficulty in which it's been found.
missiletype: Missile gfx to load when the item is thrown, taken from Missiles.txt
spellicon: It tells which spellicon should be used, when you use the item (eg. the throwing-icon for jav's )
pSpell: Pspell is an index from a hardcoded table which allows several different effects for items that are meant to be used in game. All temporary potions can use pSpell = 6. This is a parameter for the function that handles the temporary items.
state - cstate1 - cstate2: This parameter is for getting an Overlay effect. this is only a visual effect.
NOTE: state and cstate1 needs to be the same stat id from States.txt
NOTE 2: cstate1 is used to get a state from States.txt . It is really important that you remember which state you have chosen when you're using stat1, otherwise you will get a known bug (which is actually a misunderstanding in regards of how temporary items work).
len: This parameter is used to set the timer for the temporal items. This cannot be 0.
stat 1 - stat3 - calc1 - calc3:
- stat X tells which stat to add to the player who's using the item (this is used in conjuction with cState X)
- calc X specifies the value of the stat.
stat1: This tells what stat to add to the player. This stat is entered in cstate1 stat id.
spelldesc: it ranges from 0 to 3
```
0 = don't use any description or calculation.
1 = use spelldescrtr only
2 = use spelldescrtr and spelldesccalc.
```
spelldescstr: This gives a description to your temporal item. It may come in handy to give players a short description about what to expect when using the item.
spelldesccalc: This shows the total effect of all your items for this stats based on stat1-3.
gemoffset: unknown
nameable : Used by the reward of Anya's quest and tells if the item can be personalized or not. ( 1 : yes ; 0 : no).
BetterGem: Used only by Gems. It indicates which gem code is the next in class when it's upgraded by a shrine or cube. You need to write "non" for non-gems or items you don't want to be upgraded this way, or else you just fill this field with the 3-4 letter code.
bitfield1: Bitfield used primarily for various things, most remarkably the item material.
```
1 = Leather item
3 = Metal item, which allows the creation of iron golem
```
vendorMin - vendorMax - vendorMagicMin - vendorMagicMax - vendorMagicLvl: These columns control what the different Vendors can sells.
"Vendors" are
```
Charsi
Gheed
Akara
Fara
Lysander
Drognan
Hratli
Alkor
Ormus
Elzix
Asheara
Cain
Halbu
Jamella
Larzuk
Malah
Drehya (Anya)
```
vendorMin - vendorMax act as minimum \ maximum amount of items of this type the vendor can sell. Do not increase these values too much or you will risk to crash the game if it spawns too many items.
vendorMagicMin - vendorMagicMax have the same purposes as the ones above, but for the magical items
vendorMagicLvl controls the mLvl of the affixes an item can get.
PermStoreItem : This field is originally absent in Armor.txt, but you ought to add it as it's used to make Permanent items, so that vendors will always sell them. ( 1 : yes ; 0 : no).
Source Art - Game Art: Not used.
Transform - InvTrans : These fields let you mess around with colors.
- Transform states the colormap to use for the player's gfx
- InvTrans states the colormap to use for the inventory's gfx
You need to use the Code from Colors.txt
```
Transform Color Code
White whit
Light Grey lgry
Dark Grey dgry
Black blac
Light Blue lblu
Dark Blue dblu
Crystal Blue cblu
Light Red lred
Dark Red dred
Crystal Red cred
Light Green lgrn
Dark Green dgrn
Crystal Green cgrn
Light Yellow lyel
Dark Yellow dyel
Light Gold lgld
Dark Gold dgld
Light Purple lpur
Dark Purple dpur
Orange oran
Bright White bwht
```
SkipName : For items like the viper amulet, It makes the game skips the Base name in the item description.
NightmareUpgrade - HellUpgrade : These columns handle the code of the item the Vendor will sell instead of this item in Nightmare / Hell. Set these to 'xxx' for not having any change
mindam - maxdam: Minimum and Maximum damage that this item provide. If used on a shield or on a pair of boots, the damage in question will be either Smite or Kick damage.
multibuy = A value of 0 means that Multibuy is not used, while 1 allows to Multibuy this item, which means that when you buy this item via right click + shift , you will instantly fill your belt.
*eol: End of Line
(Formatting by Lord_Drekas, restyling by Ogodei)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=317]Knowledge Base - Misc.txt[/url]

View File

@ -0,0 +1,117 @@
# D2Mods Knowledge Base: Article 320
# Title: ItemRatio.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=320
ItemRatio.txt
Written by: Phrozen Heart
Written on: Wed Apr 06, 2005 3:16 pm
Last modified: Wed Oct 24, 2018 3:23 pm
Views: 30841
Description: by Ulmo, restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
ItemRatio.txt is used to determine the quality of dropped items. The game decides the quality of item (unique/.../lowquality) by first testing if it isunique, if not it tests if it is rare, if not ..., and if all fail the item of "low quality". ItemRatio.txt controls the probabilities of success of successive tests.
The order is :
Unique > Set > Rare > Magic > Hi quality > Normal > Low quality.
As far as I know, this file is not using/used by other .txt files. But the game has to know is the current item is uber/elite, and if it is class-specific, which involve Armor.txt/Misc.txt /Weapons.txt and ItemTypes.txt. The game also checks item’s qLvl (“level”
column in Armor.txt/Misc.txt/Weapons.txt) and monsters’ levels (this use MonStats.txt and Levels.txt but
exact behaviour is out of the scope of this file guide)..
COLUMN DESCRIPTIONS :
Function : Human reference only. The game reads the next 3 entries to choose the proper line.
Version : 0 is for Classic, 1 is for Expansion
Uber : 0 for normal items, 1 for exceptional / elite items.
Class Specific: 1 if the item has a type (or equiv) which is "Class Specific". Or non-empty column "class" in ItemTypes.txt. I don't know what is exactly checked. 0 if the opposite.
NOTE: D2 class specific items don't appear in vanilla. The line used if you make such items is LoD/class specific (I have tested).
Unique : Base chance for the item of being unique. The higher, the rarer.
UniqueDivisor : This field influences monster level / item quality level. High value counter the bonus of high level monster giving better items (see Mishy23's note below).
Unique - UniqueDivisor - UniqueMin - Rare - RareDivisor - RareMin - Set - SetDivisor - SetMin - HiQuality - HiQualityDivisor - Normal - NormalDivisor: These fields influence monster level / item quality level. High value counter the bonus of high level monster giving better items (see Mishy23's note below).
Let's see how the game use this: when a drop occurs, the game follows the TC until getting a base object. For example a "skull cap". Then it test if the item become unique/set/rare/.../Low quality. For this it uses the proper line of ItemRatio.txt, the MF bonus of the character who made the drop (character + minion if a minion killed the monster), and the maximum values of unique/set/magic/rare crossed while following TreasureClassEx.txt (the maximum value, not the first seen, not the last non null, not the sum, ... Heavily tested by Paul). The game decides the quality of item (unique/.../lowquality) by first testing if it is unique, if not it tests if it is rare, if not ..., and if all fail the item of "low quality".
The order is:
Unique > Set > Rare > Magic > Hi quality > Normal > Low quality
The unique test :
The base probability of being unique is probability = 1 / Unique, Unique taken from ItemRatio. Then this base chance is decreased by (MonsterLvl - QualityLvl) / UniqueDivisor , where QualityLvl is the level read in armor/misc/weapons. Now this value is multiplied by 128 (some extra precision).
And comes the effect of EMF (MF with diminishing return) : chance = chance * 100 / (100 + EMF). Chance is compared with UniqueMin from
ItemRatio.txt (so note that XXXmin is in essence 128 time bigger than XXX). And finally the TC bonus is applied : chance = chance - (chance * unique_factor) / 1024 , where unique_factor is the maximum value of "unique" seems in TreasureClassEx.txt. Now the games picks a random number between 0 and chance-1. If this random number is less or equal than 127, the objet is unique. Same procedure is used (but with different diminushing return) for set/rare/magic tests. And also for Hi quality/normal, but without MF, without XXXmin, and without XXX_factor.
A notes on XXXDivisor :
Well Mishy23explained it very
well so I'll just be lazy and quote him :
Just to expand on RareDiv. When it comes to determining what rarity(magic/rare/unique) item is, the difference in itemlevel (qlvl) and monsterlevel (mlvl) make a large difference in overall determination. Thats why its easier to get magic items and higher on lower level items, then it is on higher level
objects. This is why you usually see white items first when new itemtypes become available, and magic versions dont drop withmuch regularity until after your fighting higher level monsters. As Ulmo said (MonsterLvl - Qlvl) / UniqueDivisor is the formula, so the if a very high level monster drops a very low level base item, well this raisies chance item can be magic, rare,etc... while if a medium level monster drops a medium level base item, well that difference is very small and the chance to get magic, rare, etc...is not modified very much at all. RareDiv, makes this level difference between monster and item its dropping matter less the higher the div is. Div does not in itself divide the overall chance for dropping magic, rare, unique, just the modification of this chance by the monsterlvl-itemlvl curve.
Also, you can think of XXXmin as a way to counter too high values of MF.
Effective MF formulae :
For magic, it is just EMF = MF
For Rare/Set/Unique, Diminushing return is
only used if MF > 10. In this case, EMF = MF*X/(MF+X)
, i.e. going slower and slower from 0 to X. With X = 250 for uniques, X = 500 for Sets, and X = 600 for Rares.
Example :
A ring (qlvl = 1) dropped by Andarielle in hell (Mlvl = 78)
with +300% MF (I use here the QuestDrop).
So base chance is 400,
then becomes 400 - (78 - 1)/1 = 323
extra-precision : chance = 323*128 = 41344
MF : chance = 41344 * 100 / (100 + 136) = 17518
UniqueMin is lower than chance and is ignored.
for Andarielle questdrop in hell
(TC = "Andarielq (H)"), Unique_factor = 995
So chance = 17518 - (17518 * 995) / 1024 = 496
This means 128/496 = 25.81% chances of being unique.
Acknowledgements :
First Myrdinn who teached
me almost everything I know, but also Paul Simary
for long discussions and many testing, and Joel for his both knowledge and disponibility.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=320]Knowledge Base - ItemRatio.txt[/url]

View File

@ -0,0 +1,75 @@
# D2Mods Knowledge Base: Article 343
# Title: UniqueItems.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=343
UniqueItems.txt File Guide
Written by: Nefarius
Written on: Tue Oct 18, 2005 2:31 pm
Last modified: Thu Oct 25, 2018 6:14 pm
Views: 10083
Description: by Rattlecage, restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
Uniqueitems.txt
index: The name of the item (also used as string key)
version: If the item is Classic D2 or LoD (0 for CD2, 1 for enhanced CD2, 100 for LoD)
Enabled: If the item can drop or not (0 for undropable, 1 for dropable)
Ladder: If the item can not be found in nonladder games on the Realms
Rarity: How common the item is
Nolimit: The name of the band that my friend's brother is in. Oh wait, I don't what this does, none of the items seem to use it.
Lvl: The level a monster must be to drop this item
lvl req: The level the character has to be to use the item
code: The code of the base item found in Weapons.txt, armor.txt and misc.txt
type: The name of the base item (for reference only)
*uber: If the item is an uber item or not (not used by the game at all)
carry1: If you can only carry one of this item or not (1 yes, 0 no)
cost mult: A factor for figuring out the cost of the item
Cost add: Another factor for figuring out the cost of the item
chrtransform: The color the character becomes when this item is equipped
invtransform: The color the item is in the character's inventory
flippy file: The flippy file used for the item
invfile: The inventory graphic used for the item
dropsound: The sound that the item makes when it is dropped on the ground
dropsfxframe: How many frames the sound plays for
usesound: ?the sound the item makes when moved around in the character's inventory?
prop1: first magical modifier on the item
par1: Parameter used for the modifier (such as cold length for cold damage)
min1: Minimum value that the item can spawn with
max1: Maximum value that the item can spawn with
the other prop columns function the same as the first ones
eol: End of Line: Marks the end of the file
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=343]Knowledge Base - UniqueItems.txt File Guide[/url]

View File

@ -0,0 +1,162 @@
# D2Mods Knowledge Base: Article 344
# Title: States.txt File Guide (Beta 1.10)
# URL: https://d2mods.info/forum/kb/viewarticle?a=344
States.txt File Guide (Beta 1.10)
Written by: Nefarius
Written on: Tue Oct 18, 2005 2:35 pm
Views: 9377
Description: by Joel Falcou
Categories: File Guides (1.10 - 1.14)
STATES.TXT
THis guide was written from the first 1.10 beta txt file.
It will surely change in contents and/or composition.
state - The state name.
id - The Satte ID, dunno yet if it's extendable.
group - state group. It seems that state of a same group can't be active at the same time (check bear/wolf)
remhit - Unknown (no state are using it)
nosend - Seems to deal with client/server stuff
transform - Does the unit shapeshift in some way ? (boolean)
aura - Does the state works as an aura ? (boolean)
curable - Does the state can be healed in some way ? (boolean)
curse - Does the state works as a curse ? (boolean)
active - Does the state have an active effect (shiver armor for ex.) ? (boolean)
immed - Is the State immediate ?
restrict - ??? (seems to deal with wolf/bear form) ? (boolean)
disguise - Does the state change of gfx (wolf/bear/valkyrie) ? (boolean)
blue - Does it turn the affected unit blue ? (boolean)
attblue - Does the state turns the attack rating display blue ? (boolean)
damblue - Does the state turns the damage display blue ? (boolean)
armblue - Does the state turns the ac display blue ? (boolean)
rfblue - Does the state turns the res-fire display blue ? (boolean)
rlblue - Does the state turns the res-ltng display blue ? (boolean)
rcblue - Does the state turns the res-cold display blue ? (boolean)
stambarblue - Does the state turns the stamina bar blue ? (boolean)
rpblue - Does the state turns the res-pois display blue ? (boolean)
attred - Does the state turns the attack rating display red ? (boolean)
damred - Does the state turns the damage display red ? (boolean)
armred - Does the state turns the ac display red ? (boolean)
rfred - Does the state turns the res-fire display red ? (boolean)
rlred - Does the state turns the res-ltng display red ? (boolean)
rcred - Does the state turns the res-cold display red ? (boolean)
rpred - Does the state turns the res-pois display red ? (boolean)
exp - Deals with conversion skills. If set to 1, the converted unit give you xp. (boolean)
plrstaydeath - Related with corpse ... (boolean)
monstaydeath - Related with corpse ... (boolean)
bossstaydeath - Related with corpse ... (boolean)
hide - ??? Hide the actual gfx of the unit ?? (boolean)
shatter - Does the affected unit shatters on death ? (boolean)
udead - Does the states remove the corpse it targets ? (boolean)
life - Does state affect life ? (boolean)
green - Does the life bubble turn grren ?
pgsv - Is the state effect progressive ? (like burn,poison) (boolean)
nooverlays - ???
noclear - ???
bossinv - ??? (only valkyrye use it) (boolean)
meleeonly - When the state is active it prevent all attack except melee one. (boolean).
notondead - ??? corpse related. (boolean)
overlay1-4 - Overlay id in overlay.txt
pgsvoverlay - Overlay to use when the progreessive effect take place.
castoverlay - Overlay to use on casting.
removerlay - Overlay to use on removing
stat - Stat affected by the state.
setfunc - Function to call when state is activated.
remfunc - Function to call when state is stopped.
missile - Missile to launch on state activation.
skill - Skill to use when State is trigered.
itemtype - Itemtype affected by the state.
itemtrans - Colorshift applied to the itemtypes.
colorpri - Colorshift intensity
colorshift - New color of the unit (think green for poison etc ...)
light-r - State change light red component.
light-g - State change light green component.
light-b - State change light blue component.
onsound - Sounds to play when states starts.
offsound - Sounds to play when states ends.
gfxtype - When states have disguise/transform set to 1, it tells the game whicg gfx to use. 2:player character,1:monster
gfxclass - if gfxtype = 2, it's equal to class ID, if 1 it's equal to monster ID.
cltevent - Event triggering state on client ???
clteventfunc - Function for client.
cltactivefunc - Fonctuion for client wwhen state active.
srvactivefunc - Serveur active function.
eol - Design the end of line.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=344]Knowledge Base - States.txt File Guide (Beta 1.10)[/url]

View File

@ -0,0 +1,85 @@
# D2Mods Knowledge Base: Article 345
# Title: Properties.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=345
Properties.txt File Guide
Written by: Necrolis
Written on: Fri Sep 01, 2006 12:39 am
Last modified: Fri Jun 07, 2024 9:38 pm
Views: 27680
Description: by Joel Falcou (revised by Myhrginoc), Restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
This file depends on ItemStatCost.txt.
A stat must be defined there in order to use its ID in the stat1-7 fields.
The bulk of the file consists of seven function blocks. Each block has a function index (FuncX) and three parameters (SetX, ValX, StatX). Parameters are only useful if the underlying function is written to interpret them.
A '*' in the field name means it is a comment field not loaded into the game.
code: Property identifier to use in other txt files anywhere a property is applied (e.g. MagicPrefix, MagicSuffix, Automagic, MonProp, Gems, Runes, Sets, SetItems, UniqueItems, Cubemain).
*done: 1 if the property is active (boolean).
set1 to set7: Parameter to the property function, if the function can use it (see Color property)
val1 to val7: Parameter to the property function, if the function can use it (see class skills properties).
func1 to func7: Function used to assign a value to a property (see list below)
stat1 to stat7: Stat applied by the property (see ItemStatCost.txt), if the function uses it.
*desc: Description of the property
*param: Description of the param value
*min: Description of the min value
*max: Description of the max value
*notes: Additional comments
*eol: Terminator field, not used in game, primary purpose is to keep Microsoft Excel from misbehaving.
APPENDIX: Functions of Properties.txt
Here are some functions used by the properties.txt to link param/min/max value to the actual bonus of the properties.
```
1 - Applies a value to a stat, can use SetX parameter.
2 - defensive function only, similar to 1 ???
3 - Apply the same min-max range as used in the previous function block (see res-all).
4 - not used ???
5 - Dmg-min related ???
6 - Dmg-max related ???
7 - Dmg% related ???
8 - ??? use for speed properties (ias, fcr, etc ...)
9 - Apply the same param and value in min-max range, as used in the previous function block.
10 - skilltab skill group ???
11 - event-based skills ???
12 - random selection of parameters for parameter-based stat ???
13 - durability-related ???
14 - inventory positions on item ??? (related to socket)
15 - use min field only
16 - use max field only
17 - use param field only
18 - Related to /time properties.
19 - Related to charged item.
20 - Simple boolean stuff. Use by indestruct.
21 - Add to group of skills, group determined by stat ID, uses ValX parameter.
22 - Individual skill, using param for skill ID, random between min-max.
23 - ethereal
24 - property applied to character or target monster ???
25-35 can be used for custom code. Check plugin documentation for syntax.
36 - swaps the stat value (rand[min, max]) with the properties "valx" column value (only available in versions after 1.10)
```
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=345]Knowledge Base - Properties.txt File Guide[/url]

View File

@ -0,0 +1,386 @@
# D2Mods Knowledge Base: Article 346
# Title: Weapons.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=346
Weapons.txt File Guide
Written by: Nefarius
Written on: Fri Oct 10, 2008 12:40 pm
Last modified: Sun Oct 27, 2024 5:05 pm
Views: 23794
Description: by Kingpin & Ric Faith, Restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
Weapons.txt
This guide is based on Ric Faith 1.09x guide.
9/7 fileguide completed.
9/7. Added my discovery on how component column works.
9/7. Added explanation for alternativegfx column (thanx Paul) and it still works in 1.10
Armor.txt ,Misc.txt and Weapons.txt have many identical columns. That's because in fact these 3 text files are, in truth, three parts of a single big file : when the game reads these 3 tables, it merges them all, one after another, into one and unique table. These 3 text files contain all the base items of the game : normal / exceptional / elite versions of the in-game items. Incidently, that means you can add columns to any one of these 3 files. For instance if you add the columns Transmogrify,TMogType, TMogMin and TMogMax to Armor.txt and use them for an Helm, then this Helm will be able to be Transmute into another item, something that doesn't look possible at first glance since the 4 columns are not originally in Armor.txt.
NOTE: to add columns in a .txt, don't use D2Excel, as this program can't do the job. Instead, use MS Excel or another spreadsheet that can import and export tab-delimited .txt files.
name: Reference only, its a comment field.
type - type2: first base type (code from ItemTypes.txt)
code: This is a 3 or 4 alphanumeric code which identifies the item for certain purposes.
alternategfx : it's the code of the DCC used by the Player animation while equipping the item.
Example:
For instance, the Gothic Shield (code=gts) has kit in its alternategfx column. That means that if a Barbarian equip himself whith that shield, in his A1 (Attack 1) mode animation his SH (Shield) layer component will use the DCC BASHKITA11HS.DCC, and NOT the file BASHGTSA11HS.DCC nor the file BASHBUCA11HS.DCC.
namestr: It is the name string of the item.
NOTE: If this string is NOT present in a TBL, it will be considered directly as the name of the item, but if this
code IS present in a TBL then it'll be that TBL record that will be used as the name of the item instead. Also, keep in mind that
if you want a string name with at least 1 space, then you'll have to create a record in a TBL.
version: A value of 0 means the item will only spawn in classic. A value of 100 makes it available in Expansion.
compactsave: Boolean which ranges from 0 to 1. This is used to get a smaller filesize but will NOT save any stats to the item, this means it will not save any quantity, automagic, affixes, damage, armor, durability e.tc. This is often used by items that don't need any stats stored like Healing potions, gems.
rarity: Rarity, if set to 0 , excludes the item(s) to be dropped
from the armor racks. If set to something bigger than 0 , then it sets the rarity for this item to
drop from any armor rack. The higher, the rarer.
NOTE: You need at least 1 armor with rarity 0 or 1, otherwise the game will crash when you use an armor rack,
simply because it won't find any armor available.
spawnable: if set to 0 , this field tells the game that the item
cannot be found for sale when you interact with NPC's. Setting it to 1 has the opposite effect.
mindam - maxdam: Minimum and Maximum damage that this item provide. If used on a shield or on a pair of boots, the damage in question will be either Smite or Kick damage.
1or2handed: It is a boolean which can be set to color=#FF00BF] 0 [/color] or color=#FF00BF] 1 [/color] and decides whether weapon can be carried in 1 or 2 hands by Barbarian
2handed: A boolean which states if the weapon is either one handed or two handed.
2handmindam - 2handmaxdam: Minimum and Maximum two-handed damage the weapon causes
rangeadder: Adds additional range for melee weapon attacks (bare hand's range = 1)
speed: If set to a positive value, then it slows down your character when worn. Negative
values, instead, will render the character faster. This speed value is of course further modified by each classes individual weapon proficiencies
StrBonus- DexBonus: The amount of Strength and \ or Dexterity required to double the damage output while wearing this item. In Armor.txt it is important to note that only boots and shields are using this column.
However, here is an example that will clarify any doubt in regard.
-- Example --
We have a Maiden spear, which has a StrBonus of 80, a DexBonus of 50, 2-hand mindam of 18 and a 2-hand maxdam of 24.
Now, if the player has 100 Strength and 120 Dexterity, the item's damage output will be 43-57 instead of 18-24:
- Min = 18 * ( 100 + 100 * 80 / 100 + 120 * 50 / 100 ) / 100 = 43
- Max = 24 * ( 100 + 100 * 80 / 100 + 120 * 50 / 100 ) / 100 = 57
Also note that this damage bonus is additive with other +dmg% bonuses, such as the 'damagepercent' stat and Damage: +#% from attack skills.
reqstr: Strength required to equip this weapon. it ranges from 0 to
65535 .
NOTE: If you set values exceeding the caps, you will get a rollover.
reqdex: Dextity required to equip this weapon. it ranges from 0 to
65535 .
NOTE: If you set values exceeding the caps, you will get a rollover.
durability - nodurability - durwarning: Durability sets the base durability, and ranges from
0 to 255(if set higher or lower than these two caps, you'll have a
rollover). NoDurability means the item has not any durability. DurWarning displays the warning icon on the right part of your
screen when the Durability of the item hits the amount set here.
level: base item level.
Example: a monster with a mlvl of 20 cannot drop a lvl30 item.
levelreq: the minimum level the players need to have to use that item
cost: Base cost of the item.
gamble cost: not used, reference only.
magic lvl : it is the Additional magic level a.k.a mLvl (do not confuse mLvl with other similar names like mLvl intended as Monster Level or cLvl, intended as Character Level).
-- Example --
If mLvl is set to 5 and a level 10 player gambles an item, you get cLvl + mLvl affixes, so Level 15 affixes
auto prefix : it is a prefix automatically spawned on the item, taken from the column "group" of Automagic.txt.
OpenBetaGfx: Unused. Reference to which alternategfx was used in the Beta version.
normcode - ubercode - ultracode : There are the "code" strings referring to the normal,
exceptional and èlite version of the item. These codes are used to know the version of an item in certain situation, like when
generating the outputs set in CubeMain.txt
-- Example --
Lion Helm has a code of ba7, and it's classified as Exceptional, because it has:
normcode = ba2
ubercode = ba7
ultracode = bac
So, the Lion helm is an exceptional item, and cube recipes which require normal or ultra items won't work
wclass: 1 handed weapon class, determines what style of attack to use (eg. 1hs, 1ht, hth)
2handedwclass: 2 handed weapon class, determines what style of attack to use
component: Layer of the Player Animation used by the item, taken from Composit.txt
The Composit table is indexed as follows:
```
1.Head HD
2.Torso TR
3.Legs LG
4.RightArm RA
5.LeftArm LA
6.RightHand RH
7.LeftHand LH
8.Shield SH
9.Special1 S1 (shoulder #1)
10.Special2 S2 (shoulder #2)
11-Special3 S3
12-Special4 S4
13.Special5 S5
14.Special6 S6
15.Special7 S7
16.Special8 S8
```
hit class: what type of effects are displayed/heard when enemy is struck with weapon
invwidth- invheight: width and heght of the item, in terms of inventory cells.
stackable - minstack - maxstack - qntwarning: These four columns handle the possibilty, for the item, to be stacked.
stackable decides if the item can be stacked or not. ( 1 : yes ; 0 : no).
minstack : Minimum quantity of the stack when the item is spawned.
maxstack : Maximum quantity of the stack when the item is spawned.
qntwarning : Quantity from which the warning message appears.
NOTE: These columns are not used in Armor.txt, but only in Misc.txt (Keys, Books) and Weapons.txt (Javelins, Arrows ...)
flippyfile - invfile - uniqueinvfile - setinvfile: These four columns contains DC6 filenames to use for various cases:
- flippyfile is the animation used when the item drops on the ground,
- invfile is the item image when it's in your inventory
- uniqueinvfile is used by the unique version of the item in your inventory
- setinvfile is used by the set version of the item in your inventory
All of these files are located in Data\Global\Items\
hasinv- gemsockets - gemapplytype : These three columns are used as socketing parameters.
- hasinv states if the item has an "inventory", meaning it's able to store gems or runes within. ( 1 : yes ; 0 : no).
- gemsockets determines the potential maximum amount of sockets, capped to width * height. In addition, there are three fields in ItemTypes.txt that limit the number of sockets, based on the level of the monster that drops the item. These columns are MaxSock1, MaxSock25 and MaxSock40.
- gemapplytype determines which kind of effect the gem will apply to the item it's inserted within:
```
0 = weapon
1 = armor / helm
2 = shield
```
If you use other values, your item won't be able to have sockets.
special: Not used, Comment field.
useable: It specifies whether the item can be used via right-click. ( 1 : yes ; 0 : no). This is a column often used in Misc.txt for potions and scrolls
NOTE : The game knows what to with the item by its code. Unless you're doing dll editing, don't expect an item to do something
just because you have set this column to 1.
dropsound - dropsfxframe - usesound : these three columns are related to the item sound. The code is taken from the field "Sound" in Sounds.txt.
- dropsound is used when the item drops on the ground.
- dropsfxframe is the point (measured in frames) after which the sound from 'dropsound' plays.
- usesound is the sound played when the item is used or moved through the inventory.
unique : If this column is set to 1 , then the item can only spawn as unique.
transparent - transtbl : Unknown. Apparently has no effect in game. TransTbl could be related to the item's blending mode.
quivered : It tells if the item needs ammunitions to work or not. ( 1 : yes ; 0 : no).
lightradius: Not used.
belt: numberic Id from belts.txt (defines number of potion slots). It states whether the item can or cannot be put inside the belt cells. ( 1 : yes ; 0 : no).
NOTE: Since Misc.txt and Armor.txt are part of the same file, it seems that the game looks for the type of the item first, and *then* decide how to understand the value in this column.
quest - questdiffcheck : these two columns are related to quests:
- quest handles some hardcoded ID's for quest items. Quest items are counted as Uniques and cannot be sold to NPC's.
- questdiffcheck indicates that the item has a difficulty check. When set to 1, this item will only work in the difficulty in which it's been found.
missiletype: Missile gfx to load when the item is thrown, taken from Missiles.txt
gemoffset: unknown
bitfield1: Bitfield used primarily for various things, most remarkably the item material.
```
1 = Leather item
3 = Metal item, which allows the creation of iron golem
```
vendorMin - vendorMax - vendorMagicMin - vendorMagicMax - vendorMagicLvl: These columns control what the different Vendors can sells.
"Vendors" are
```
Charsi
Gheed
Akara
Fara
Lysander
Drognan
Hratli
Alkor
Ormus
Elzix
Asheara
Cain
Halbu
Jamella
Larzuk
Malah
Drehya (Anya)
```
vendorMin - vendorMax act as minimum \ maximum amount of items of this type the vendor can sell. Do not increase these values too much or you will risk to crash the game if it spawns too many items.
vendorMagicMin - vendorMagicMax have the same purposes as the ones above, but for the magical items
vendorMagicLvl controls the mLvl of the affixes an item can get.
PermStoreItem : This field is originally absent in Armor.txt, but you ought to add it as it's used to make Permanent items, so that vendors will always sell them. ( 1 : yes ; 0 : no).
Source Art - Game Art: Not used.
Transform - InvTrans : These fields let you mess around with colors.
- Transform states the colormap to use for the player's gfx
- InvTrans states the colormap to use for the inventory's gfx
You need to use the Code from Colors.txt
```
Transform Color Code
White whit
Light Grey lgry
Dark Grey dgry
Black blac
Light Blue lblu
Dark Blue dblu
Crystal Blue cblu
Light Red lred
Dark Red dred
Crystal Red cred
Light Green lgrn
Dark Green dgrn
Crystal Green cgrn
Light Yellow lyel
Dark Yellow dyel
Light Gold lgld
Dark Gold dgld
Light Purple lpur
Dark Purple dpur
Orange oran
Bright White bwht
```
SkipName : For items like the viper amulet, It makes the game skips the Base name in the item description.
NightmareUpgrade - HellUpgrade : These columns handle the code of the item the Vendor will sell instead of this item in Nightmare / Hell. Set these to 'xxx' for not having any change
nameable : Used by the reward of Anya's quest and tells if the item can be personalized or not. ( 1 : yes ; 0 : no).
Annex A
- Calculation of affixes available for item - by Ruvanal
This is from 1.09x (have no idea if anything here has been changed)
Terms
alvl = affix level. For an item this is the level that is used to compare to the level and max level as found in the prefix and suffix tables. When referring to a prefix/suffix it is the value listed in the level column.
ilvl = internal level (also referred to sometimes as the item level; better yet item creation level). This value is set at the time of an items creation. For monster drops the ilvl=mlvl. (BTW ilvl matches up with the terminology of the 1.07/1.08 cubemain.txt---'itemlevel pct a')
mlvl = monster level.
clvl = character level.
qlvl= quality level. This value is found in the level column of armor.txt, weapons.txt and misc.txt. This is the value that is used to create the weapXX and armoXX treasure classes.
magic_lvl= magic level bonus on some items. Currently the only ones that have this are wands (normal and exceptional, but not the elite ones), staves, orbs (all with a value of 1) and circlets (circlet=3, Coronet=8, Tiara=13, Diadem=1.
When an item is generated that has affixes the alvl is calculated* from ilvl and qlvl as follows
If (ilvl>99) then {ilvl=99}
if (qlvl>ilvl) then {ilvl=qlvl} ;** see note below
if (magic_lvl>0) then {alvl=ilvl+magic_lvl}
else
{
if (ilvl99) then {alvl=99}
*all calculations use integers so there are no fractions at any step.
** this new ilvl value is only used for the duration of this calculation. The ilvl value that is stored in the items data file will remain unchanged.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=346]Knowledge Base - Weapons.txt File Guide[/url]

View File

@ -0,0 +1,165 @@
# D2Mods Knowledge Base: Article 348
# Title: SetItems.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=348
SetItems.txt File Guide
Written by: Nefarius
Written on: Wed Jun 07, 2006 4:56 am
Last modified: Mon Feb 17, 2020 12:37 am
Views: 17498
Description: by Alkalund & Char, revised by Myhrginoc, Restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
index: string key to item's name in a .tbl file
set: string key to the index field in Sets.txt - the set the item is a part of.
item: base item code of this set item (matches code field in Weapons.txt, Armor.txt or Misc.txt files).
*item: name of the base item of this set item (reference only, not loaded into game).
Rarity: Chance to pick this set item if more then one set item of the same base item exist, this uses the common rarity/total_rarity formula, so if you have two set rings, one with a rarity of 100 the other with a rarity of 1, then the first will drop 100/101 percent of the time (99%) and the other will drop 1/101 percent of the time (1%), rarity can be anything between 0 and 255.
lvl: The quality level of this set item, monsters, cube recipes, vendors, objects and the like most be at least this level or higher to be able to drop this item, otherwise they would drop a magical item with twice normal durability.
lvl req: The character level required to use this set item.
chrtransform: Palette shift to apply to the the DCC component-file and the DC6 flippy-file (whenever or not the color shift will apply is determined by Weapons.txt, Armor.txt or Misc.txt). This is an ID pointer from Colors.txt.
invtransform: Palette shift to apply to the the DC6 inventory-file (whenever or not the color shift will apply is determined by Weapons.txt, Armor.txt or Misc.txt). This is an ID pointer from Colors.txt.
invfile: Overrides the invfile and setinvfile specified in Weapons.txt, Armor.txt or Misc.txt for the base item. This field contains the file name of the DC6 inventory graphic (without the .dc6 extension).
flippyfile: Overrides the flippyfile specified in Weapons.txt, Armor.txt or Misc.txt for the base item. This field contains the file name of the DC6 flippy animation (without the .dc6 extension).
dropsound: Overrides the dropsound (the sound played when the item hits the ground) specified in Weapons.txt, Armor.txt or Misc.txt for the base item. This field contains an ID pointer from Sounds.txt.
dropsfxframe: How many frames after the flippy animation starts playing will the associated drop sound start to play. This overrides the values in Weapons.txt, Armor.txt or Misc.txt.
usesound: Overrides the usesound (the sound played when the item is consumed by the player) specified in Weapons.txt, Armor.txt or Misc.txt for the base item. This field contains an ID pointer from Sounds.txt.
cost mult: The base item's price is multiplied by this value when sold, repaired or bought from a vendor.
cost add: After the price has been multiplied, this amount of gold is added to the price on top.
add func: a property mode field that controls how the variable attributes will appear and be functional on a set item. See the appendix for further details about this field's effects.
```
0 -> no green properties on item (apropxx will appear as a blue attribute on the list instead).
1 -> green properties (apropxx) depend on which other items from the set are equipped.
2 -> green properties (apropxx) depend on how many other items from the set are equipped.
```
BLUE ATTRIBUTES
prop1 to prop9: An ID pointer of a property from Properties.txt, these columns control each of the nine different fixed (blue) modifiers a set item can grant you at most.
par1 to par9: The parameter passed on to the associated property, this is used to pass skill IDs, state IDs, monster IDs, montype IDs and the like on to the properties that require them, these fields support calculations.
min1 to min9: Minimum value to assign to the associated property. Certain properties have special interpretations based on stat encoding (e.g. chance-to-cast and charged skills). See the File Guide for Properties.txt and ItemStatCost.txt for further details.
max1 to max9: Maximum value to assign to the associated property. Certain properties have special interpretations based on stat encoding (e.g. chance-to-cast and charged skills). See the File Guide for Properties.txt and ItemStatCost.txt for further details.
GREEN ATTRIBUTES
aprop1a,aprop1b to aprop5a,aprop5b: An ID pointer of a property from Properties.txt, these columns control each of the five pairs of different variable (green) modifiers a set item can grant you at most.
apar1a,apar1b to apar5a,apar5b: The parameter passed on to the associated property, this is used to pass skill IDs, state IDs, monster IDs, montype IDs and the like on to the properties that require them, these fields support calculations.
amin1a,amin1b to amin5a,amin5b: Minimum value to assign to the associated property. Certain properties have special interpretations based on stat encoding (e.g. chance-to-cast and charged skills). See the File Guide for Properties.txt and ItemStatCost.txt for further details.
amax1a,amax1b to amax5a,amax5b: Maximum value to assign to the associated property. Certain properties have special interpretations based on stat encoding (e.g. chance-to-cast and charged skills). See the File Guide for Properties.txt and ItemStatCost.txt for further details.
*eol: terminator field, not used in game, primary purpose is to keep Microsoft Excel from misbehaving.
APPENDIX
Green attributes will appear depending on how many set items are equipped, if the add func field is either 1 or 2. If the add func field is 1, in addition to how many items, the green attributes are controlled by which other items you have equipped as well. If a set has X number of items, at most there will be X-1 green attributes on any item.
If add func = 2, these properties will appear as below. Many of the 'classic' sets in the unmodded game have this configuration.
```
aprop1a, aprop1b -> when any second set item is also equipped.
aprop2a, aprop2b -> when any third set item is also equipped.
aprop3a, aprop3b -> when any fourth set item is also equipped.
aprop4a, aprop4b -> when any fifth set item is also equipped.
aprop5a, aprop5b -> when any sixth set item is also equipped.
```
The fun really begins when add func = 1. Different properties can emerge as different items are equipped in combination from the same set. The attributes appear for specific item pairs regardless of whether or how many other items from the set are also equipped. Civerb's Ward (shield) is the one and only example of this configuration in the unmodded game.
If the first item listed in the set definition is equipped, it will get the green property:
```
aprop1a, aprop1b -> when the second item listed in the set definition is also equipped.
aprop2a, aprop2b -> when the third item listed in the set definition is also equipped.
aprop3a, aprop3b -> when the fourth item listed in the set definition is also equipped.
aprop4a, aprop4b -> when the fifth item listed in the set definition is also equipped.
aprop5a, aprop5b -> when the sixth item listed in the set definition is also equipped.
```
If the second item listed in the set definition is equipped, it will get the green property:
```
aprop1a, aprop1b -> when the first item listed in the set definition is also equipped.
aprop2a, aprop2b -> when the third item listed in the set definition is also equipped.
aprop3a, aprop3b -> when the fourth item listed in the set definition is also equipped.
aprop4a, aprop4b -> when the fifth item listed in the set definition is also equipped.
aprop5a, aprop5b -> when the sixth item listed in the set definition is also equipped.
```
If the third item listed in the set definition is equipped, it will get the green property:
```
aprop1a, aprop1b -> when the first item listed in the set definition is also equipped.
aprop2a, aprop2b -> when the second item listed in the set definition is also equipped.
aprop3a, aprop3b -> when the fourth item listed in the set definition is also equipped.
aprop4a, aprop4b -> when the fifth item listed in the set definition is also equipped.
aprop5a, aprop5b -> when the sixth item listed in the set definition is also equipped.
```
If the fourth item listed in the set definition is equipped, it will get the green property:
```
aprop1a, aprop1b -> when the first item listed in the set definition is also equipped.
aprop2a, aprop2b -> when the second item listed in the set definition is also equipped.
aprop3a, aprop3b -> when the third item listed in the set definition is also equipped.
aprop4a, aprop4b -> when the fifth item listed in the set definition is also equipped.
aprop5a, aprop5b -> when the sixth item listed in the set definition is also equipped.
```
If the fifth item listed in the set definition is equipped, it will get the green property:
```
aprop1a, aprop1b -> when the first item listed in the set definition is also equipped.
aprop2a, aprop2b -> when the second item listed in the set definition is also equipped.
aprop3a, aprop3b -> when the third item listed in the set definition is also equipped.
aprop4a, aprop4b -> when the fourth item listed in the set definition is also equipped.
aprop5a, aprop5b -> when the sixth item listed in the set definition is also equipped.
```
If the sixth item listed in the set definition is equipped, it will get the green property:
```
aprop1a, aprop1b -> when the first item listed in the set definition is also equipped.
aprop2a, aprop2b -> when the second item listed in the set definition is also equipped.
aprop3a, aprop3b -> when the third item listed in the set definition is also equipped.
aprop4a, aprop4b -> when the fourth item listed in the set definition is also equipped.
aprop5a, aprop5b -> when the fifth item listed in the set definition is also equipped.
```
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=348]Knowledge Base - SetItems.txt File Guide[/url]

View File

@ -0,0 +1,63 @@
# D2Mods Knowledge Base: Article 349
# Title: Sets.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=349
Sets.txt File Guide
Written by: Nefarius
Written on: Sat Oct 20, 2007 6:55 am
Last modified: Mon Feb 17, 2020 12:37 am
Views: 13972
Description: by Alkalund, revised by Myhrginoc, Restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
Refer to the Set Items File Guide for fields that define the attributes of specific items in a set.
index: String key linked to by the set field in SetItems.txt - used to tie all of the set's items to the same set.
name: String key to item's name in a .tbl file.
version: 0 = Available in Classic D2 and LoD Expansion; 100 = available in LoD Expansion only.
level: set level, perhaps intended as a minimum level for partial or full attributes to appear (reference only, not loaded into game).
GOLD ATTRIBUTES
PCode2a,PCode2b to PCode5a,PCode5b: An ID pointer of a property from Properties.txt, these columns control each of the five pairs of different partial set modifiers a set item can grant you at most.
PParam2a,PParam2b to PParam5a,PParam5b: The parameter passed on to the associated property, this is used to pass skill IDs, state IDs, monster IDs, montype IDs and the like on to the properties that require them, these fields support calculations.
PMin2a,PMin2b to PMin5a,PMin5b: Minimum value to assign to the associated property. Certain properties have special interpretations based on stat encoding (e.g. chance-to-cast and charged skills). See the File Guides for Properties.txt and ItemStatCost.txt for further details.
PMax2a,PMax2b to PMax5a,PMax5b: Maximum value to assign to the associated property. Certain properties have special interpretations based on stat encoding (e.g. chance-to-cast and charged skills). See the File Guides for Properties.txt and ItemStatCost.txt for further details.
FCode1 to FCode8: An ID pointer of a property from Properties.txt, these columns control each of the eight different full set modifiers a set item can grant you at most.
FParam1 to FParam8: The parameter passed on to the associated property, this is used to pass skill IDs, state IDs, monster IDs, montype IDs and the like on to the properties that require them, these fields support calculations.
FMin1 to FMin8: Minimum value to assign to the associated property. Certain properties have special interpretations based on stat encoding (e.g. chance-to-cast and charged skills). See the File Guides for Properties.txt and ItemStatCost.txt for further details.
FMax1 to FMax8: Maximum value to assign to the associated property. Certain properties have special interpretations based on stat encoding (e.g. chance-to-cast and charged skills). See the File Guides for Properties.txt and ItemStatCost.txt for further details.
*eol: terminator field, not used in game, primary purpose is to keep Microsoft Excel from misbehaving.
APPENDIX
Gold attributes will appear depending on how many set items are equipped, both partial set attributes (not all set items equipped) and full set attributes (all set items equipped only).
If a set has X number of items, at most there will be X-1 partial attributes on any item.
```
PCode2a,PCode2b -> when any second set item is also equipped.
PCode3a,PCode3b -> when any third set item is also equipped.
PCode4a,PCode4b -> when any fourth set item is also equipped.
PCode5a,PCode5b -> when any fifth set item is also equipped.
```
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=349]Knowledge Base - Sets.txt File Guide[/url]

View File

@ -0,0 +1,368 @@
# D2Mods Knowledge Base: Article 350
# Title: Skills.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=350
Skills.txt File Guide
Written by: Nefarius
Written on: Tue Oct 18, 2005 2:50 pm
Views: 17809
Description: by Thendain (corrections by Joel and subsequent corrections by Nefarius)
Categories: File Guides (1.10 - 1.14)
SKILLS.TXT-Beastly Huge File. now with 256 columns. Some of this info was taken from the 1.09 guide, some was figured out with help from the 1.09 guide. Joel will grind some of this down to make sure it is right, and do most of the testing on it. Here is what i got, good luck, happy reading, and excuse me while i go take a huge dose of aleve and rest....
Correction made by me are in red. Joel
skill=skill name
Id=skill id number
charclass=who can use
skilldesc=player/item skill name excepting delerium charge
srvstfunc=Server Starting function like in the 1.09 DLL skill table. Now this is just a number and they need to be swapped to swap skill effect or create new.
srvdofunc=Server FInishing function like in the 1.09 DLL. Same remark as above, all the skill swap play here almosT.
prgstack=progressive stack No idea what it is
srvprgfunc1,2,3=server controlled attack function with progressive skills
prgcalc1,2,3=calculations to call for assassin progressive skills
prgdam=type of damage released by assassin progressive skills
The progressive stuff is maybe related to charge-up. Can we create new ones ?
srvmissile=server controlled missile type (from missiles.txt)
decquant=decrease quantity for zon attack
lob=54X : It's to know if th emisisle is launched in an arc or in a straight line.
srvmissilea,b,c=server calls to Missile.txt for type
srvoverlay=server controlled overlay image name?
aurafilter=hard to tell...might have something to do with who it
affects....can't tell right now
aurastate=effect name on character/mob using aura
auratargetstate=effect name on who it affects other than char/mob using
auralencalc=how long it lasts, use skillcalc.txt for equations
aurarangecalc=how far the aura affect goes.
aurastat1-6=stats affected by aura
aurastatcalc1-6=calculations used for stats affected.
auraevent1-3=events that happen in aura. reference events.txt
auraeventfunc1-3=function call when event happens (where does this GO?!?!??)
auratgtevent=not used, aura target event?
auratgteventfunc=not used, aura target event function....?
Here we can change what the aura do. Life leech aura anyone ???? Note that combined with the satte.txt, an 'aura' can be more than a simpel overlay, like having your char turn into a blakc druid when using it ...
passivestate=name of skill in states.txt
passiveitype=weapon type from weapons.txt
passivestat1-5=stats used for passive statistics (necro raising mostly)
passivecalc1-5=how to figure out each stat (again mostly for necros)
passiveevent=not used, passive event happens?
passiveeventfunc=not used, function call on passive events?
Same as above but for passive skill .... I dunno if aura/passive can work together on the same skills.
summon=name of summon, critter/spell/trap
pettype=type of pet from pettype.txt
petmax=max number allowed at once.
summode=mode of summoned monster see monmode.txt
sumskill1-5=skillnames that summons Have
sumsk1-5calc=skill level and ability for skills for summons
sumumod=not sure. only affects 4 assassin skills and the Overlord's whip??....
sumoverlay=image overlaid on a summon? only affects dopplezon and minion spawners....
Change this to make new summon skill or swap summon skill. We can alos add rows to pettype me thinks.
stsuccessonly=
stsound=starting sound?
stsoundclass=starting sound class?
stsounddelay=starting sound delay?
weaponsnd=weapon sound with skill.
dosound,a,b=sounds that happen when skill is done? seems to happen for monsters too.
tgtoverlay=image applied to target temporarily when hit by skill.
tgtsound=sound made by skill when affecting a target.
Hmmm can someone check if ltnghit is set for ltng skills here ?
prgoverlay=progressive image overlay
prgsound=progressive sound for skill
castoverlay=temporary image overlay on character/mob when skill used.
cltoverlaya,b=temp image overlay from skills run by client
Client overlay like in 1.09 DLL skill table.
cltstfunc=not sure... maybe client standard function?
cltdofunc=not sure... maybe client direct object function?
cltprgfunc1-3=not sure... maybe client program functions?
cltmissile -d=Client side calls to Missile.txt
cltcalc1-3=Client controld calculations for skills
*cltcalc1-3 desc=English descriptions of calculations (not used in game.)
Same effect as svtxxxx but on client (like in the 1.09D skill table.
warp=does skill warp character to new location (1 yes 0 no)
Used by teleport ???
immediate=aura start immediately? (1 yes 0 no)
enhanceable=can skill be enhanced? (1 yes 0 no)
attackrank=no idea...
noammo=does skill not take ammo? (1 no ammo magic arrow)
range=range of physical attack skills h2h=hand to hand, rng=ranged attack, both=use both, none=not used.
weapsel=weapon select? weapon type? looks like a hardcode to me.
itypea1-3=item type needed in right hand to use skill.
etypea1-2=tpot for just attack and left hand Swing....no idea what for.
itypeb1-3=item type needed in left hand to use skill.
etypeb1-2=Not Used.
anim=same us as in 1.09 skill.txt
seqtrans=same as in 1.09 seq column
monanim=same as in 1.09
seqnum=Same as in 1.09
seqinput=not sure... input needed during sequence?
durability=does skill check durability use of weapon/armor during skill? 1 for yes.
UseAttackRate
LineOfSight
TargetableOnly
SearchEnemyXY
SearchEnemyNear
SearchOpenXY
SelectProc
TargetCorpse
TargetPet
TargetAlly
TargetItem
AttackNoMana
All these are the same as in 1.09
TgtPlaceCheck=for ressurect and ressurect2 only...check for target placement?
ItemEffect=Can the skill appear on a charged or gethit skill prop.
ItemCltEffect=not sure... only used for nova, frost nova, chain lightning...
ItemTgtDo=skill can target item and make it do something? only active on teleport.
ItemTarget=type of target for skill? rather hard to decipher what this is for.
ItemCheckStart=don't know. only has a 1 for hydra and bone prison
ItemCltCheckStart=don't know. only has a 1 for poison/corpse explosion
ItemCastSound=sound for skill used from an item
ItemCastOverlay=image overlay on char when skill is used from item.
skpoints=skill points? Not used.
reqlevel=required level for skill use
maxlvl=max number of skill levels for skill
reqstr=required strength for skill
reqdex=required dexterity for skill
reqint=required intelligence for skill
reqvit=required vitality for skill
Are they truly used and functionnal ???
reqskill1-3=required skills needed to attain this skill. Can call a skill that has requirements.
restrict=druid only 1 human 2 wereform
State1-3=states other than human required for skill use
delay=time delay in 25ths of a second.
leftskill=able to use skill on left attack button 1 for yes
repeat=continuous skill usage if button held down. 1 for yes.
Used for inferno, can be used on others ???
checkfunc=check to make sure of item/condition for use. various numbers.
nocostinstate=only used for werewolf/bear. 1 for no cost.
usemanaondo=only has a 1 for blade fury, maybe costs full mana for each use even if continuous?
startmana=for continuous skills, amount of mana for start of use.
minmana=minimum mana for skill use?
manashift=the equation is 1/2^(9-manashift) so the higher the mana shift the lower the multiplier for how much mana is needed for the skill. 8=1, 7=.5, 6=.25, 5=.125, 4=.0625 (1, 1/2, 1/4, 1/8, 1/16).
mana=mana needed for skill, affected by manashift
lvlmana=how much more (or less) mana is needed per level of the skill before manashift
interrupt=skill interruptible? 1 for yes.
InTown=can skill be used in town? 1 for yes.
aura=is skill an aura. 1 for yes.
periodic=does skill attack periodically for you? 1 for yes. (thunderstorm/blade shield)
perdelay=period of delay between uses of skill by skill or effect by aura.
finishing=assassin finish skill/attack
passive=is the skill passive? 1 for yes.
progressive=does the skill grow as used? 1 for yes.
general=skill that everyone has. 1 for yes.
scroll=is skill from a scroll only? 1 for yes (scroll/book identify and town portal only)
calc1-4=calculations for the skill
*calc1-4 desc=English descriptions of the calculations (not used in game.)
Param1-8=various parameter settings.
They also need to be copied when skill swapping in order to give svr/clt functions good parameters.
*Param1-8 Description=English descriptions of the calculations (not used in game.)
InGame=is skill in game? 1 for yes.
ToHit=bonus percent chance to hit with skill at level 1
LevToHit=addition bonus percent chance to hit added with each additional skill level.
ToHitCalc=not sure. only used on Valkyrie, bash, and stun....
ResultFlags=not sure. various numbers...
HitFlags=no idea. only a 2 on telekinesis/rabies...any ideas?
HitClass=no idea. various numbers on 6 skills...
Kick=does the skill use kick for its attack? 1 for yes.
HitShift=same as manashift for hit?
SrcDam=fractional part of damage in 128ths
MinDam=minimum physical damage at slevel 1
MinLevDam1-5=increment to minimum damage. Since skills max out at 20th level i'm guessing it is 4 levels for each column. so dam1=slvls 2-4, 2=5-8, 3=9-12, 4=13-16, 5=17-20
MaxDam=maximum physical damage at slevel 1
MaxLevDam1-5=increment to maximum damage. Since skills max out at 20th level i'm guessing it is 4 levels for each column. so dam1=slvls 2-4, 2=5-8, 3=9-12, 4=13-16, 5=17-20
DmgSymPerCalc=increased damage from synergy bonuses...maybe they left out a few for the paladin?
EType=type of element for attack. fire, cold, ltng, pois, mag
EMin=minimum elemental damage at slevel 1
EMinLev1-5=increment to minimum elemental damage. Since skills max out at 20th level i'm guessing it is 4 levels for each column. so dam1=slvls
EDIT (Nefarius) the correct range is 2-8, 9-16, 17-22, 23-28 and 29+
EMax=maximum elemental damage at slevel 1
EMaxLev1-5=increment to elemental maximum damage. Since skills max out at 20th level i'm guessing it is 4 levels for each column. so dam1=slvls EDIT (Nefarius) the correct range is 2-8, 9-16, 17-22, 23-28 and 29+
EDmgSymPerCalc=increased damage from synergy bonuses.
ELen=length of time for cold/poison in 25ths of a second.
ELevLen1-3=increase in length of time for elemental duration since slvl stops at 20 my guess is 1=2-7, 2=8-14, 3=15-20 (7,7,6 with first level used)
ELenSymPerCalc=synergy bonus to Elemental duration length.
aitype=not sure. Looks like it might be Attack Item type....only really in the assassin skills except for the frozen armor and monster frozen armor.
aibonus=not sure. Attack Item bonus?
cost mult=not sure. if skill is on an item, multiply cost by this?
cost add=not sure. if skill is on an item, add this to cost?
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=350]Knowledge Base - Skills.txt File Guide[/url]

View File

@ -0,0 +1,484 @@
# D2Mods Knowledge Base: Article 351
# Title: SkillDesc.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=351
SkillDesc.txt File Guide
Written by: Nefarius
Written on: Tue Oct 18, 2005 2:53 pm
Views: 9245
Description: by chippydip
Categories: File Guides (1.10 - 1.14)
First post for me, but I've learned a lot from here in the past so I figured I'd help out with this info I've learned so far trying to update my skill page. Note that this is just a first pass so I'm sure there are many errors sitll, but it should give enough info on how this file works for people to start playing with it.
skilldesc.txt
-------------
A. skilldesc - Name used in the skilldesc column of skills.txt to refer to this entry.
B. SkillPage - Which page is skill displayed on (lowest page is numbered 1, middle 2, top 3, non-tree skills 0)
C. SkillRow - Which row is skill displayed on (starting from top, rows 1-6)
D. SkillColumn - Which column is skill displayed on (starting from left, cols 1-3)
E. ListRow - Row in the skill speed bar the skill will appear in (lower numbers toward the bottom)
F. ListPool - Unkown (seems to control the pooling of multiple scrolls into one icon in the skill speed bar.)
G. IconCel - (X-1) frames for the icon in data\global\ui\spells\XXskillicon.dc6 (XX is char-dependant). eg. Sorc Fire Bolt is 0, so the computer will look under SOskillicon.dc6 frames 1 and 2 for the icons.
H. str name - String table entry containing the skill name.
I. str short - String table entry containing a short skill description (used in hover text on the skill speed bar and selected skill icons.)
J. str long - String table entry containing a long skill description (used in the hover text of the skill tree.)
K. str alt - String table entry containing an alternate skill name. The text is often the same as the skill name. Not sure where its used.
L. str mana - String table entry containing the mana cost text (StrSkill3 or blank except for Eskillincaseraven for raven.) After delving into the file more deply, I'm not even sure this is being used since there are other lines which display mana cost.
Not quite sure what the following do. Best guess is they effect the damage display in the char screen. The numbers in descdam would represent different functions and 'ddam calc1' and 'ddam calc2' would be fed into this function. Functions 1-16 and 18 are currently used.
M. descdam
N. ddam calc1
O. ddam calc2
Before I realized this wasn't used in the skill mouse-overs I started to try and correlate the way damage was displayed to the function numbers in descdam. I'll leave in my observations, but I now think these have more to do with how damage is calculated for display on the char screen.
1
2
3
4
5 Convert x% Physical Damage to Magic Damage
Damage: +x
6 Convert x% Physical Damage to Elemental Damage
7 Damage: +x percent
8 Average Fire Damage: x-y per second
Range: z yards
or
Average Cold Damage: x-y per second
Cold Length: z seconds
Range: w yards
9 Fire Duration: x seconds
Average Fire Damage: y-z per second
or
Average Fire Damage: x-y per second
or
Damage: a-b
Fire Damage: x-y
Average Fire Damage: z-w per second
10 Damage: +x percent
Stun Length: y seconds
11 Cold Length: x seconds
Elemental Damage: +y percent
12 Magic Damage: x-y
13 nothing (synergy damage bonus)
14 Life Steal/Mana Steal + -75% damage
15 Kick Damage: +x percent
16 Fire Damage: +x percent
17 ???
18 Charge 1/Charge 2/Charge 3
These are all used for elemental charge up skills (descdam = 18). Again, I think this effects damage displayed on the char screen.
P. p1dmelem
Q. p1dmmin
R. p1dmmax
S. p2dmelem
T. p2dmmin
U. p2dmmax
V. p3dmelem
W. p3dmmin
X. p3dmmax
Y. descatt - I'm guessing this effects the Attack Rating display on the char screen?
References to related missiles in missiles.txt? Need to look into this a bit more.
Z. descmissile1
AA. descmissile2
AB. descmissile3
Now the meat and potatoes of the file. The rest of the file consists of 3 different description sections (desc, dsc2, and dsc3) which control the following parts of the skill description:
desc* -> level dependent description (bottom to top)
dsc2* -> level independent description (bottom to top)
dsc3* -> synergy descriptions (top to bottom)
Within each section, there are parameters for upto 7 lines of description (actually, 7 parts as a few of them actually add more than one line to the text.) As normal for skill description type stuff, desc and dsc2 add their lines to the description from bottom to top while dsc3 goes from top to bottom.
Each line consists of a type (descline), 2 text references (from .tbl files) and then 2 calculations. For those of you familiar with printf, I've compiled a list of the translations from type->format string and how it is used. This is just a first pass and I'm sure there are mistakes in there, but you get the general idea. 71 is a bit odd as it has a sort of 'nested' formatting. 53-56 are used for TP/ID scrolls/books, but I'm not sure what description they are generating to check it out. There are a few unused numbers tagged with question marks which are not currently used, but may still be implemented in the code.
1 'Mana Cost: %d',usmc>>8
2 '%s+%d%s',desctexta,desccalca,desctextb
3 '%s%d%s',desctexta,desccalca,desctextb
4 '%s+%d',desctexta,desccalca
5 '%s%d',desctexta,desccalca
6 '+%d%s'desccalca,desctexta
7 '%d%s'desccalca,desctexta
8 'To Attack Rating: +%d percent',att
9 'Duation: %d-%d seconds',?,?
10 '%s Damage: %d-%d',etype,emin,emax
11 '%s Damage: %d-%d',etype,emin,emax
12 '%s%d seconds',desctexta,desccalca
13 'Life: %d',(minionlife+desccalcb)*(100+desccalca)/100
14 'Poison Damage: %d-%d\nover %d seconds',poismin,poismax,poislen
15?
16 '%s%d-%d seconds',desctexta,desccalca/25,desccalcb/25
17 '%s%s%d-%d per second',desctexta,desctextb,desccalca,desccalcb
18 desctexta
19 '%s%d yards',desctexta,desccalca*2/3
20?
21?
22 'Average Fire Damage: %d-%d per second',burnmin,burnmax
23 '%s%d seconds',desctexta,desccalca
24 '%s%d-%d',desctexta1,hydramin,hydramax
25 desctexta
26 'Average Cold Damage: %d-%d per second',coldmin,coldmax
27 'Average Fire Damage: %d-%d per second',burnmin,burnmax
28 'Radius: 1 yard'
29 '%d yards',firewallsize
30 '%s%d seconds',desctexta,desccalca/25
31 '%s%d seconds',desctexta,desccalca/25
32 '%s%s+%d percent',desctexta,desctextb,desccalca
33 '%s%s%d',desctexta,desctextb,magilifebonus
34 'Damage: %d-%d',skelmin,skelmax
35 '%s%d-%d',desctexta,desccalca,desccalcb
36 '%d%s',desccalca,desccalca == 1 ? desctexta : desctextb
37 '%s%d yards',desctexta,desccalca1*2/3
38 '%s%d-%d%s',desctexta,desccalca,desccalcb,desctextb
39 'Damage: %d-%d',bgmin,bgmax
40 desctexta,desctextb
41 'Fire Damage: %d-%d',desccalca,desccalcb
42 '%s: +%d.%d %s',desctexta,desccalca,desccalcb,desctextb
43?
44?
45 'Thorns Damage\n%d percent Damage Returned',thorns
46?
47 '%s%d-%d',desctexta,desccalca,desccalcb
48 'Magic Damage: %d-%d',emin,emax
49 '%s+%d-%d',desctexta,smitemin,smitemax
50 '%s%d-%d',desctexta,holyboltmin,holyboltmax
51 desctexta,desccalca
52 '%s+%d-%d%s',desctexta,desccalca,desccalcb,desctextb
53 ?
54 ?
55 ?
56 ?
57 '%s+%d seconds',desctexta,desccalca
58?
59 '%s%d-%d',desctexta,desccalca,desccalcb
60?
61 '%s%d%s',desctexta,desccalca>>8,desctextb (desccalcb not used?)
62 '%s%s%d-%d',desctexta,desctextb,desccalca,desccalcb
63 '%s: +%d%% %s',desctexta,desccalca,desctextb
64?
65?
66 desctexta,desccalca
67 '%s+%d%s',desctexta,desccalca,desctextb
68 '%d%s%s',desccalca,desctexta,desctextb
69?
70 '%s%s+%d',desctexta,desctextb,desccalca
71 ('%s: %s',desctexta,desctextb),desccalca
72 '+%d/%d%s',desccalca,desccalcb,desctexta
73 '%d/%d%s',desccalca,desccalcb,desctexta
AC. descline1
AD. desctexta1
AF. desctextb1
AG. desccalca1
AH. desccalcb1
AI. descline2
AJ. desctexta2
AK. desctextb2
AL. desccalca2
AM. desccalcb2
AN. descline3
AO. desctexta3
AP. desctextb3
AQ. desccalca3
AR. desccalcb3
AS. descline4
AT. desctexta4
AU. desctextb4
AV. desccalca4
AW. desccalcb4
AX. descline5
AY. desctexta5
AZ. desctextb5
BA. desccalca5
BB. desccalcb5
BC. descline6
BD. desctexta6
BE. desctextb6
BF. desccalca6
BG. desccalcb6
BH. dsc2line1
BI. dsc2texta1
BJ. dsc2textb1
BK. dsc2calca1
BL. dsc2calcb1
BM. dsc2line2
BN. dsc2texta2
BO. dsc2textb2
BP. dsc2calca2
BQ. dsc2calcb2
BR. dsc2line3
BS. dsc2texta3
BT. dsc2textb3
BU. dsc2calca3
BV. dsc2calcb3
BW. dsc2line4
BX. dsc2texta4
BY. dsc2textb4
BZ. dsc2calca4
CA. dsc2calcb4
CB. dsc3line1
CC. dsc3texta1
CD. dsc3textb1
CE. dsc3calca1
CF. dsc3calcb1
CG. dsc3line2
CH. dsc3texta2
CI. dsc3textb2
CJ. dsc3calca2
CK. dsc3calcb2
CL. dsc3line3
CM. dsc3texta3
CN. dsc3textb3
CO. dsc3calca3
CP. dsc3calcb3
CQ. dsc3line4
CR. dsc3texta4
CS. dsc3textb4
CT. dsc3calca4
CU. dsc3calcb4
CV. dsc3line5
CW. dsc3texta5
CX. dsc3textb5
CY. dsc3calca5
CZ. dsc3calcb5
DA. dsc3line6
DB. dsc3texta6
DC. dsc3textb6
DD. dsc3calca6
DE. dsc3calcb6
DF. dsc3line7
DG. dsc3texta7
DH. dsc3textb7
DI. dsc3calca7
DJ. dsc3calcb7
DK. eol - Unknown (always 0)
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=351]Knowledge Base - SkillDesc.txt File Guide[/url]

View File

@ -0,0 +1,358 @@
# D2Mods Knowledge Base: Article 352
# Title: Missiles.txt File Guide (incomplete)
# URL: https://d2mods.info/forum/kb/viewarticle?a=352
Missiles.txt File Guide (incomplete)
Written by: Nefarius
Written on: Tue Oct 18, 2005 2:59 pm
Views: 7683
Description: by Alkalund (with some new input from Nefarius)
Categories: File Guides (1.10 - 1.14)
missiles.txt (Incomplete)
Yellow fields are not used by the game, they're just for reference
Missile - Missile Name
Id - Missile Id number
pCltDoFunc - Client Movement Function to be used by this missile
pCltHitFunc - Client Collision Function to be used by this missile
pSrvDoFunc - Server Movement Function to be used by this missile
pSrvHitFunc - Server Collision Function to be used by this missile
pSrvDmgFunc - Server Damage Function to be used by this missile
SrvCalc1 -
*srv calc 1 desc - description for SrvCalc1 column
Param1 - Parameter 1 used by Server Movement Function
*param1 desc - description for Param1
Param2 - Parameter 2 used by Server Movement Function
*param2 desc - description for Para2
Param3 - Parameter 3 used by Server Movement Function
*param3 desc - description for Param3
Param4 - Parameter 4 used by Server Movement Function
*param4 desc - description for Param4
Param5 - Parameter 5 used by Server Movement Function
*param5 desc - description for Param5
CltCalc1 -
*client calc 1 desc - description for CltCalc1 column
CltParam1 - Client Parameter 1
*client param1 desc - description for Client Parameter 1
CltParam2 - Client Parameter 2
*client param2 desc - description for Client Parameter 2
CltParam3 - Client Parameter 3
*client param3 desc - description for Client Parameter 3
CltParam4 - Client Parameter 4
*client param4 desc - description for Client Parameter 4
CltParam5 - Client Parameter 5
*client param5 desc - description for Client Parameter 5
SHitCalc1 -
*server hit calc 1 desc - description for SHitCalc1 column
sHitPar1 - Parameter 1 used by Server Collision Function
*server hit param1 desc - description for ShitPar1 column
sHitPar2 - Parameter 2 used by Server Collision Function
*server hit param2 desc - description for ShitPar2
sHitPar3 - Parameter 3 used by Server Collision Function
*server hit param3 desc - description for ShitPar3
CHitCalc1 -
*client hit calc1 desc - description for CHitCalc1 column
cHitPar1 - Parameter 1 used by Client Collision Function
*client hit param1 desc - description for CHitPar1
cHitPar2 - Parameter 2 used by Client Collision Function
*client hit param2 desc - description for CHitPar2
cHitPar3 - Parameter 3 used by Client Collision Function
*client hit param3 desc - description for CHitPar3
DmgCalc1 - If the Server Damage Function requires a formula, here's where it goes. You can add your formula to misscalc.txt and refer to it here by its code.
*damage calc 1 - description for DmgCalc1 column
dParam1 - Parameter 1 used by Server Damage Function (if DmgCalc1 is used, this is a parameter for the formula)
*damage param1 desc - description for dParam1
dParam2 - Parameter 2 used by Server Damage Function (if DmgCalc1 is used, this is a parameter for the formula)
*damage param2 desc - description for dParam2
Vel - Missile velocity
MaxVel - Maximum velocity of the missile
VelLev - Velocity bonus per level
Accel - Acceleration for the missile, the rate on which the velocity changes
Range - Missile Range Nefarius: to get the distance the missile will travel you multiply speed*range, speed=number of pixels to travel per frame, range=number of frames to exist
LevRange - Range bonus per level
Light - Light Radius of Missile
Flicker - Creates a Flickering Light Effect
Red - Adds red to the missile's light
Green - Adds green to the missile's light
Blue - Adds blue to the missile's light
InitSteps - Number of frames in CelFile (read column CelFile below) to execute before missile is in flight
Activate -
LoopAnim - Do you want the CelFile animation to play in a Loop? 0 = No, 1 = Yes
CelFile - main dcc file used for this missile (filename without its dcc extention)
animrate - ??? The speed in which the CelFile animation is displayed on screen. 1024 = normal speed, 512 = double speed, etc
AnimLen - The number of frames from the CelFile you want to use for this missile. If CelFile has X frames and you put Y here, it will use only the first Y frames of the animation (make sure Y is less than or equal to X)
AnimSpeed - Number of Frames played per second at normal rate, and later modified by animrate???
RandStart - Nefarius: most likely start at a random frame
SubLoop - Does this missile uses a CelFile animation SubLoop? Leave empty if not, or put 1 here if yes
SubStart - (only use if SubLoop is set to 1) Frame on which the animation subloop starts
SubStop - (only use if SubLoop is set to 1) Frame on which the animation subloop stops (animation then loops back to frame indicated by SubStart)
CollideType -
CollideKill - Will the missile vanish after colliding with something? 1 = Yes
CollideFriend - Can the Missile Collide on friendly units and allies (eg. Holy bolt)? 1 = Yes
LastCollide -
Collision -
ClientCol -
ClientSend -
NextHit - ??? Can this missile hit more than one target?
NextDelay - ??? Number of frames until next missile hit (25 frames = 1 second)
yoffset -
Size - ??? How wide the missile is?
SrcTown -
CltSrcTown -
CanDestroy -
ToHit - ??? Does this missile use to hit calculations based on attack rating? 1 = Yes
AlwaysExplode - Will the missile always Explode? 1 = Yes
Explosion - Is the missile an explosion? 1 = Yes
Town - Can this missile be used in town? 1 = Yes (note that if you enable a skill to be cast in town in skills.txt and the skill uses a missile, you have to enable this column as well)
NoMultiShot -
Holy - Is this missile Holy? (eg. Holy Bolt, Sanctuary Bolt) 1 = Yes
CanSlow - Can this missile be slowed? (with Slow missiles for example) 1 = Yes
ReturnFire -
GetHit - Can this missile activate 'Get Hit' skills? 1 = Yes
SoftHit -
KnockBack - If the missile can knock enemies back (NOT a boolean, more like percentage it seems)
Trans - ??? Is the missile translucent? 1 = Yes
Qty -
Pierce - Can this missile pierce? 1 = Yes
SpecialSetup -
MissileSkill -
Skill - The skill in skills.txt that uses this missile
ResultFlags -
HitFlags -
HitShift - Scale factor for damage values. 8 = no change, 7 = half damage, 6 = 1/4 damage, and so on (if it works like it did in 1.09)
ApplyMastery - ??? Only meteorfire has this one set to 1, all others are empty
SrcDamage - Nefarius: percentage of damage, in 128ths
Half2HSrc -
SrcMissDmg -
MinDamage - Minimum base physical damage
MinLevDam1 - Additional minimum physical damage added per level, from lvl 2 to lvl 8
MinLevDam2 - Additional minimum physical damage added per level, from lvl 9 to lvl 16
MinLevDam3 - Additional minimum physical damage added per level, from lvl 17 to lvl 22
MinLevDam4 - Additional minimum physical damage added per level, from lvl 23 to lvl 28
MinLevDam5 - Additional minimum physical damage added per level, for levels 29 and above
MaxDamage - Maximum base physical damage
MaxLevDam1 - Additional maximum physical damage added per level, from lvl 2 to lvl 8
MaxLevDam2 - Additional maximum physical damage added per level, from lvl 9 to lvl 16
MaxLevDam3 - Additional maximum physical damage added per level, from lvl 17 to lvl 22
MaxLevDam4 - Additional maximum physical damage added per level, from lvl 23 to lvl 28
MaxLevDam5 - Additional maximum physical damage added per level, for levels 29 and above
DmgSymPerCalc - Synergy related physical damage bonus (I think)
EType - Elemental type of damage
EMin - Minimum base elemental damage
MinELev1 - Additional minimum elemental damage added per level, from lvl 2 to lvl 8
MinELev2 - Additional minimum elemental damage added per level, from lvl 9 to lvl 16
MinELev3 - Additional minimum elemental damage added per level, from lvl 17 to lvl 22
MinELev4 - Additional minimum elemental damage added per level, from lvl 23 to lvl 28
MinELev5 - Additional minimum elemental damage added per level, for levels 29 and above
Emax - Maximum base elemental damage
MaxELev1 - Additional maximum elemental damage added per level, from lvl 2 to lvl 8
MaxELev2 - Additional maximum elemental damage added per level, from lvl 9 to lvl 16
MaxELev3 - Additional maximum elemental damage added per level, from lvl 17 to lvl 22
MaxELev4 - Additional maximum elemental damage added per level, from lvl 23 to lvl 28
MaxELev5 - Additional maximum elemental damage added per level, for levels 29 and above
EDmgSymPerCalc - Synergy related elemental damage bonus (I think)
ELen - Base length (duration) of elemental effect
ELevLen1 - Additional length of elemental effect per level, from lvl X to lvl Y level range still unknown
ELevLen2 - Additional length of elemental effect per level, from lvl X to lvl Y level range still unknown
ELevLen3 - Additional length of elemental effect per level, from lvl X to lvl Y level range still unknown
HitClass -
NumDirections - Number of directions of the missile (1, 4, 8, 16, or 32)
LocalBlood -
DamageRate -
TravelSound - Sound played when missile is moving
HitSound - Sound played when missile collides
ProgSound - Progressive sound for missile (whatever that means)
ProgOverlay - Progressive overlay for missile (the overlay displayed over the unit the missile collided with, I think)
ExplosionMissile - Missile fired on explosion (if any)
SubMissile1 - Additional missile called by this missile while moving (Server side)
SubMissile2 - Additional missile called used by this missile while moving (Server side)
SubMissile3 - Additional missile called used by this missile while moving (Server side)
HitSubMissile1 - Additional missile called by this missile while colliding (Server side)
HitSubMissile2 - Additional missile called by this missile while colliding (Server side)
HitSubMissile3 - Additional missile called by this missile while colliding (Server side)
HitSubMissile4 - Additional missile called by this missile while colliding (Server side)
CltSubMissile1 - Additional missile called used by this missile while moving (Client side)
CltSubMissile2 - Additional missile called used by this missile while moving (Client side)
CltSubMissile3 - Additional missile called used by this missile while moving (Client side)
CltHitSubMissile1 - Additional missile called used by this missile while colliding (Client side)
CltHitSubMissile2 - Additional missile called used by this missile while colliding (Client side)
CltHitSubMissile3 - Additional missile called used by this missile while colliding (Client side)
CltHitSubMissile4 - Additional missile called used by this missile while colliding (Client side)
EOL - End Of Line.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=352]Knowledge Base - Missiles.txt File Guide (incomplete)[/url]

View File

@ -0,0 +1,363 @@
# D2Mods Knowledge Base: Article 353
# Title: ItemStatCost.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=353
ItemStatCost.txt File Guide
Written by: Nefarius
Written on: Tue Oct 18, 2005 3:02 pm
Last modified: Mon Oct 22, 2018 12:30 pm
Views: 13027
Description: by Char
Categories: File Guides (1.10 - 1.14)
ItemStatCost.txt Fileguide
Test
This is based on no other fileguide because the differences between the 1.09 and 1.10 ItemStatCost.txt are extreme.
Stat
the name of the stat
ID
the ID of the stat
Send Other
This is most likely used to determine if this stat is sent to other users when in multiplayer. Only those stats are sent that are important for graphics (faster attack / cast / gethit rate). For some reason, dex and strength are sent, too.
Signed
Is the stat signed or not? -> Can this stat be negative or not?
Sendbits
Number of bits used to send this value between client and server.
Send Param
Has something to do with client / server things, too.
UpdateAnimateRate
???
Probably a boolean that tells the client to update the characters animation rate.
Saved
Is the stat saved when the character is saved?
Other stats are saved in the item saves.
CSvSigned
(Character Save Signed)
Stat signed in character save?
CSvBits
(Character Save Bits)
Bits used to save when saved in character save file (maximum value that is saved equals 2^[CSvBits])
CSvParam
(Character Save Parameter)
Has something to do with saved parameters for some stats
fCallback
???
fMin
???
MinAccr
???
Encode
related to how the thing is encoded
Add, Multiply, Divide
used to calculate the items price
the formula is:
price = base_price * (1+ stat_value * ([multiply]/[divide])) + [add]
with
base_price = base item price (from the other .txt files)
stat_value = amount of the stat that is on the item (for +8 strength this would be 8...)
if there is more than one stat on a magic item, the suffix ONLY counts for some reason i dont understand (this is reported by Joel). no idea what happens for rare items. for unique and set items, these values do not count at all.
divide cannot be changed for some reason, better leave it at 1024.
other files may modify the price, too (magicprefix / suffix has add / multiply / divide fields, npc.txt says something about sell / buy multipliers, ...).
ValShift
Value is shifted by that. 1 would mean that its shifted by 1 which is a multiplication by 2. ValShift 2 is a multiplication by 4 and ValShift 8 equals a multiplication by 256 (2^8=256). This is done because, for example, hitpoints are internally calculated with 1/256 step precision.
1.09-Save Bits, 1.09-Save Add
The old Save Bits and Save Add values from 1.09. probably used for converting characters.
Save Bits, Save Add
These two fields are used to handle the way the value is saved on an item. This also determines the minimum and maximum values a stat can have.
Save Bits determines the number of bits the value is saved in, while Save Add is added before the value is saved unsigned.
The results:
Minimum stat value equals -[Save Add]
Maximum stat value equals 2^[Save Bits] - [Save Add] - 1
Example (taken from maxhp):
Save Add = 32
Save Bits = 8
Minimum stat value = -32
Maximum stat value = 2^8 - 32 - 1 = 256 - 33 = 223
SaveParamBits
Determines how many bits are used to save Parameters (???)
keepzero
Boolean, can the stat go negative? (1 = cannot be negative)
op
This is the number of the operator used to calculate the effects of the item stat.
Known numbers and effects:
1 : op stats are increased by [statvalue] percent
2 : op stats are increased by [statvalue] * [op base] / 2^[op param]
3 : not used, effect unknown
4 : seems to have the same effect as 2
5 : op stats are increased by [statvalue] * [op base] / 2^[op param] percent
6 : op stats are increased by time
7 : op stats are increased by time and percent
8 : used to calculate the mana based on energy
9 : used to calculate the hitpoints and stamina based on vitality
op param
See op
op base
See op
op stat1 - op stat3
The op stats. See op
direct
If the stat adds to another stat, too, this is set to 1. For example, when equipping an item with +30 mana, your maximum mana increases as well.
maxstat
The max stat the stat adds to (when direct is set to 1)
itemspecific
Is this stat specific to one item only (and does therefore only affect this item)?
you should be able to stop the second weapon from increasing your first weapons attack speed this way
damagerelated
Does this stat relate to damage (dont know the effect)
itemevent1
When this event happens, the itemeventfunc1 is executed
itemeventfunc1
Function that is executed on itemevent1. Functions that are used are:
6 : attacker takes damage of [statvalue]
7 : knockback
8 : howl effect
9 : stupidity effect
10 : attacker takes lightning damage of [statvalue]
14 : freeze effect
15 : openwounds effect
16 : crushing blow
17 : get mana (after kill)
18 : get life (after demon kill)
19 : slow effect
20 : skill is released
21 : skill is released (same as 20 ?!?)
28 : get life (after kill)
29 : slain monster rests in peace
30 : skill is released (same as 20 ?!?)
31 : reanimate slain monster
descpriority
priority of the description on the item. The higher this, the earlier will the stat be displayed on your item. Not sure, though
descfunc
Function used to display the stat. There are numerous ones, I didnt yet test all yet.
some values and what they display (descval used: 1, see below):
1 : +[value] [string]
2 : [value]% [string]
3 : [value] [string]
4 : +[value]% [string]
5 : [value/1.28]% [string] // used for howl
6 : +[value] [string] [string2]
7 : [value]% [string] [string2]
8 : +[value]% [string] [string2]
9 : [value] [string] [string2]
10 : [value/1.28]% [string] [string2]
11 : Repairs 1 durability in [100/value] seconds
12 : +[value] [string] // used for stupidity, freeze
13 : +[value] to [class] skill levels
14 : +[value] to [skilltab] skills ([class] only)
16 : Level %d %s Aura When Equipped
descval
0 : no value is displayed (like
1 : value is displayed first (like '+5 to strength')
2 : string is displayed first, then value (like 'strength +5')
descstrpos
Description string used when value is positive
descstrneg
Description string used when value is negative
descstr2
Second display string (for per level attributes for example)
dgrp
Display group. If all stats of a display group have the same stats, they will be displayed together.
dgrpfunc
Same as descfunc, but for display groups
dgrpval
Same as descval, but for display groups
dgrpstrpos
Same as descstrpos, but for display groups
dgrpstrneg
Same as descstrneg, but for display groups
dgrpstr2
Same as descstr2, but for display groups
stuff
???
*eol
End of line
EDIT:
One thing you should NEVER EVER do:
have op base and op stat1 be the same. The game crashes with no error message at all when trying to compile the .bin file. Most likely, the same happens when op base and op stat2 / 3 are the same.
EDIT 2:
minor improvements
EDIT 3, 4:
further improvements
EDIT 5:
added info about descval, corrected info about descstr
EDIT 6:
NEVER make two stats have the same name. I posted what happens then here
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=353]Knowledge Base - ItemStatCost.txt File Guide[/url]

View File

@ -0,0 +1,49 @@
# D2Mods Knowledge Base: Article 354
# Title: MonLvl.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=354
MonLvl.txt
Written by: Nefarius
Written on: Tue Oct 18, 2005 3:06 pm
Last modified: Wed Oct 24, 2018 3:24 pm
Views: 16496
Description: by Kingpin, restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
NOTE From Kingpin:
"I didn't see that this is mentioned here. In MonLvl.txt all L-XX columns is used for ladder/single player and tcp-ip. So here is a fileguide for this file.
MonLvl.txt"
- Official Battle.Net-only columns - [i.e Closed Battle.Net]
AC - AC(N) - AC(H): Armor Class, which is calculated together with MonStats.txt columns. The formula is (MonLvl.txt Ac * Monstats.txt AC) / 100.
TH - TH(N) - TH(H): To Hit, calculated together with monstats.txt column(s) (MonLvl.txt TH * Monstats.txt A1TH and MonLvl.txt TH * Monstats.txt A2TH) / 100.
HP - HP(N) - HP(H): Hitpoints, calculated together with monstats.txt columns. The formula is (MonLvl.txt HP * Monstats.txt minHP) / 100 and MonLvl.txt HP * Monstats.txt maxHP) / 100.
DM - DM(N) - DM(H): Damage (Normal), is calculated together with monstats.txt columns. The formula is .(MonLvl.txt DM * Monstats.txt A1MinD) / 100 and MonLvl.txt DM * Monstats.txt A1MaxD) / 100 and MonLvl.txt DM * Monstats.txt A2MinD) / 100 and MonLvl.txt DM * Monstats.txt A2MaxD) / 100
XP - XP(N) - XP(H): Experience Points (Normal) , is calculated together with monstats.txt columns. The formula is (MonLvl.txt XP * Monstats.txt Exp) / 100.
- Single Player / Open Battle.Net / Mod-only columns - [i.e Closed Battle.Net]
L-AC - L-AC(N) - L-AC(H): Armor Class, calculated together with monstats.txt columns. The formula is (MonLvl.txt Ac * Monstats.txt AC) / 100.
L-TH - L-TH(N) - L-TH(H): To Hit, is calculated together with monstats.txt columns. The formula is (MonLvl.txt TH * Monstats.txt A1TH and MonLvl.txt TH * Monstats.txt A2TH) / 100.
L-HP - L-HP(N) - L-HP(H): Hitpoints (Normal), is calculated together with monstats.txt columns. The formula is (MonLvl.txt HP * Monstats.txt minHP) / 100 and MonLvl.txt HP * Monstats.txt maxHP) / 100).
L-DM - L-DM(N) - L-DM(H): Damage (Normal), is calculated together with monstats.txt columns. The formula is (MonLvl.txt DM * Monstats.txt A1MinD) / 100 and MonLvl.txt DM * Monstats.txt A1MaxD) / 100 and MonLvl.txt DM * Monstats.txt A2MinD) / 100 and MonLvl.txt DM * Monstats.txt A2MaxD) / 100.
L-XP - L-XP(N) - L-XP(H): Experience Points (Normal) , is calculated together with monstats.txt columns. The formula is (MonLvl.txt XP * Monstats.txt Exp) / 100.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=354]Knowledge Base - MonLvl.txt[/url]

View File

@ -0,0 +1,62 @@
# D2Mods Knowledge Base: Article 355
# Title: PetType.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=355
PetType.txt
Written by: Nefarius
Written on: Tue Oct 18, 2005 3:08 pm
Last modified: Wed Oct 24, 2018 3:24 pm
Views: 14491
Description: by HellSpawn, reviewed by Ogodei
Categories: File Guides (1.10 - 1.14)
PetType.txt file guide.
The following is the description of what the columns from PetType.txt do.
pet type = name of the pet type, referred by the "pettype" column in skills.txt.
idx = id number of the pet type
group = This is a softcoded field, and assigns each minion to a specific "group" . Pets in the same group tend to exclude each other, so that you can only have one pet type of the group at a time.
basemax = Basemax does not interfere with the skill quantity formula. It is relevant for pets summoned with oskills or with some bonuses that updates from time to time, like sets. I have made some tests and it turns out that if you set a high number here, you aren't likely to lose pets generated via set bonuses (which either grant +skills or +oskills).
warp = This field states if the minion is teleported with you (1) or dies when you teleport or warp to other areas (0)
range = Use this field if you want your pets to stay alive when you teleport even if "warp" is set to 0 . Keep in mind, however, that your minions will still die if your distance from them exceeds 41 sub-tiles (notice: a good vanilla example of this is the Sorceress' Hydra). These minion's death is only trigger by teleporting. If you keep venturing far they will just disappear as the other normal pets do
partysend = I didn't find any real use for that.
unsummon = Can the pet be unsummoned with the 'unsummon' skill? Set it to 1 for unsummonable pets.
automap = is the pet displayed on the map? Set it to 1 to make this happen
name = string file for the text under the pet's icon (taken from the .tbl files)
drawhp = is the pet's life displayed under its icon? Set it to 1 to make it happen, but be warned that the HP display will be canceled when you summon more than 1 pet belonging to this type.
icontype = the type of the pet icon:
```
0 - no icon
1 - Show Icon, but not quantity
2 - Show Icon and quantity
3 - Show Icon, but not quantity
```
baseicon = The .dc6 file for the pet's icon, located in data\global\ui\hireables\
mclass1-4 = the alternative (of the same type) pets' hcldx numbers taken from Monstats.txt . A typical example of this are Hirelings and Golems.
micon1-4 = the alternative pet's .dc6 icons, that depends on the mclass1-4 fields.
eol = end of line.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=355]Knowledge Base - PetType.txt[/url]

View File

@ -0,0 +1,50 @@
# D2Mods Knowledge Base: Article 356
# Title: TreasureClassEx.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=356
TreasureClassEx.txt File Guide
Written by: Nefarius
Written on: Tue Oct 18, 2005 3:11 pm
Views: 13762
Description: by HellSpawn
Categories: File Guides (1.10 - 1.14)
TreasureClassEx.txt
Treasure Class = Name of the treasure class
group = treasureclasses of the same type are in the same group (example all the Act# Equip X are all in the group 1)
level = level of the treasure class. When a monster drops an item it uses its own treasure class form monstats.txt. Now if the monster's level is high enough it might drop an item from the next treasure class in the same group instead (ie. the monster's TC is normally 'Act5 Equip C' but for some reason it's level is increased. Now it can drop an item from the 'Act1 Equip (N) A' if the monster's level is as high as or higher than the new TC's level, in this case 38)
Picks = how many items will drop, positive value drops random items from item fields while a negative value makes the drops more specific starting from 'item1' dropping the defined number of drops for it, then the defined number for 'item2', then 'item3' etc. until the 'picks' value is reached
Unique = chance of the item to be unique, counted in fractions of 1024
Set = chance of the item to be set, counted in fractions of 1024
Rare = chance of the item to be rare, counted in fractions of 1024
Magic = chance of the item to be magic, counted in fractions of 1024
NoDrop = the chance of that nothing will drop, chance = prob/TotalProb
(TotalProb = all Prob# fields + NoDrop)
Item1-10 = code for the item or itemtype or name for another treasure class that should be dropped
Prob1-10 = the probability of the item to drop, chance = prob/TotalProb
(TotalProb = all Prob# fields + NoDrop)
SumItems, TotalProb, DropChance = these columns are not used by the game, used for additional info on the corresponding values
Term = end of line
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=356]Knowledge Base - TreasureClassEx.txt File Guide[/url]

View File

@ -0,0 +1,106 @@
# D2Mods Knowledge Base: Article 357
# Title: LvlPrest.txt File Guide
# URL: https://d2mods.info/forum/kb/viewarticle?a=357
LvlPrest.txt File Guide
Written by: Nefarius
Written on: Tue Oct 18, 2005 3:14 pm
Views: 7387
Description: by Xenast
Categories: File Guides (1.10 - 1.14)
Lvlprest.txt
Name: Name of the level, refrence only
Def: Related to Automap, must be a consecutive value
Levelid: The ID of the level from levels.txt, 0 if the ds1 is not a preset level
Populate: 1 yes/0 no
If set to no monsters will not be able to spawn on the ds1, used for special maze rooms such as stairs leading up/down
*superuniques still spawn
*causes Unhandled Exception if you add other monster objects when column is set to 0
Logicals: Related to walls fading, 0 fading is not possible, 1 it is possible
Outdoors: 1 yes/0 no
Set to 1 for outdoor ds1's, 0 for indoor ds1's
Animate: 1 yes/ 0 no
Controls wether or not animated tiles will animate in the level
KillEdge: Uknown, works set at 0 for new levels
FillBlanks: 1 yes/0 no
Setting to yes makes all blank tilespaces unwalkable
SizeX: Tells the x size of the map,
*leave at 0 for preset areas since preset area size is defined in levels.txt
SizeY: Tells the y size of the map
*leave at 0 for preset areas since preset area size is defined in levels.txt
Automap: 1 yes/ 0 no
Reveals full automap for level
*Only works for preset maps
Scan: 1 yes/0 no
Setting to yes allows warps to be selected
Pops: Tells how many different type of boxes it will draw for a ds1. With boxes I'm talking about these known special tiles (for cottage those are #59 and #62).
PopPad: With this you can change the size of the box and either increase its size or decrease its size.
*Positive value: 2 (this will increase the box from where you have added the second special box).
*Negative value: -2 (this will decrease the box from where you have added the second special box)
Files: The amount of versions the map has, based on entries in File 1 to File 6 columns
File 1 to File 6: The location of the ds1 versions, leave at 0 for files that don't exist
Dt1mask: Number telling which tiles to use from lvltypes.txt
Beta: Refrence Only
Expansion: Refrence Only
Pops and PopPad info were taken directly from Kingpins find in this thread:
Roofs pop and popadd explained
I am sure that part needs to be rewritten in this fileguide, but that thread had me confused as hell
The Logicals discovery was found by Go][um in this thread:
Making walls go transparent?
I think that covers the major lvlprest functions, as the rest are never mentioned. Hopefully someone knows the missing 3/any corrections and we can add this to the finished pile
Edit: Discovered the purpose of 'FillBlanks' column
Edit 2: After looking more and verifying what I thought, got the Populate column figured out
Edit 3: Added some info to Populate column, formatted a bit.. now on to figuring out KillEdge
Edit 4: typo
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=357]Knowledge Base - LvlPrest.txt File Guide[/url]

View File

@ -0,0 +1,151 @@
# D2Mods Knowledge Base: Article 359
# Title: MonStats2.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=359
MonStats2.txt
Written by: Nefarius
Written on: Tue Oct 18, 2005 3:22 pm
Last modified: Tue Dec 16, 2025 1:01 am
Views: 24239
Description: by Nefarius, restyled and expanded by Ogodei
Categories: File Guides (1.10 - 1.14)
NOTE from Ogodei
"During the restyling of this guide, I chose to follow Nefarius' classification, but Instead of repeating classes like "Collision Detection I and II" I preferred to put together all the columns belonging to the same theme."
MonStats2.txt Fileguide by Nefarius
ID Pointer
Id – Pointer used by MonStats.txt to link to this line via the MonStatEx field.
NOTE: multiple monsters can link to the same line.
Collision Detection
Height - OverlayHeight - pixHeight: not used (Height should be the size in in-game sub-tiles)
SizeX - SizeY: X-diameter in sub-tiles, used for collision and proximity checking. It ranges from -1 to 3.
NOTE: it may be worthy to note that while pets do not use this setting towards the players, they can still block each other. That's why necromancers that teleport along with large monsters (read: Balrogs, Urdars and similar which use a size bigger than 1) will have all of their minions blocked into the same position. In order to fix this behavior just set all those monster sizes to 1.
NoGfxHitTest: boolean that controls whenever the game uses the x/y diameter settings for collision detection or special, superimposed values.
htTop - htLeft - htWidth - htHeight: the dimensions of the superimposed bounding box, probably using the pivot of the animation as x/y 0.
Miscellaneous Settings
SpawnCol: equivalent to 1.00-1.09 eSpawnCol column, controls which spawning method the game uses to create this unit, originally
```
0=normal spawning via m1-25 columns,
1=special spawning via DS1 only (special layering setup),
2=spawn via s1-25 columns. Due to the changes to levels.txt, this column becomes useless, S1-25 and M1-25 are identical in 1.10+. Setting it to 1 will still prevent them from spawning however.
```
isAtt: boolean which ranges from 0 to 1 and states whether the unit can be attacked or not.
revive: boolean which ranges from 0 to 1 and states whether the unit can be revived or not.
critter: boolean which ranges from 0 to 1 and states whether the unit can is considered to be a critter or not. Many of the critter specific effects are applied to the unit via this columns, others are hardcoded to their hcIdx and baseIds, and still others are only appended via levels.txt critter spawning columns.
small: boolean which ranges from 0 to 1 and states whether the unit can be knocked back with 100% efficiency or not.
large: boolean which ranges from 0 to 1 and states whether the unit can be knocked back with only 25% efficiency or not.
soft: boolean which ranges from 0 to 1 and states whether the unit can be selected as a valid corpse for Find Item and Grim Ward or not.
inert: boolean which ranges from 0 to 1 and states whether the unit is aggressive or harmless. It is often used with NPC's.
objCol: boolean, The explanation in the old guide is unclear, I don't know what to look for when testing this. Probably has to do if the unit is handled like an object while alive.
deadCol: boolean which ranges from 0 to 1 and states whether the unit's corpse collides or not with other units.
unFlatDeath: boolean which ranges from 0 to 1 and states whether the unit's corpse can be walked through or not.
Shadow: boolean which ranges from 0 to 1 and states whether the unit projects a shadow on the ground or not.
noUniqueShift: boolean which ranges from 0 to 1 and states whether the unit can make use of the random palettes from RandTransforms.dat or not.
compositeDeath : boolean which ranges from 0 to 1 and states whether the unit's Death animation can make use of all of the components or only of TR.
localBlood: probably defines the z-offset from where to release blood when hit. (this is not a boolean). Setting the next column to a value is enough to make a unit bleed.
Bleed: 0=don't bleed, 1=small blood missile (missiles 18-19), 2=small and large blood missiles (missiles 18-21), >3 will pick other missiles (I.E. each time a pair of two, 3 would allow it to pick an extra 2 missiles, 18-23, in case the behavior is still like 1.09).
Light: It is the area lit by the light radius this monster has in sub-tiles, default is no light radius.
light-r - light-g - light-b: RGB values for light-color (255,255,255 = white obviously).
Utrans - Utrans(N) - Utrans(H): defines which palette entry to use on normal, nightmare and hell, from both the units palshift file and transtransforms.dat – used by the game to give act bosses a different color on each difficulty for example.
Heart - Bodypart: broken as of 1.07 – when blizzard introduced TreasureClassEx.txt they broke MonItemPercent.txt, in old days, this column defined which items the unit dropped in addition to their treasureclass (organ and heart drops from alpha diablo II). The columns are useless, until someone manages to recreate the functionality MonItemPercent.txt had in 1.00-1.06.
InfernoLen: Length of each inferno sub-animation.
InfernoAnim: mode to use for inferno animation, I assume this uses the numerical ID of the lines on MonMode.txt (9=S2,11=S4 and so on, I'm not sure though)
InfernoRollback: Length of the rollback (I.E. return to frame 1) of the inferno animation.
ResurrectMode: Animation mode to use when resurrected, most use NU, but some such as skeletons have a special skill (SkeletonRaise) that applies a skill sequence to them in MonStats, this is why they have xx in here (or summons, the animation of which is controlled by skills.txt) – some others like fallen have special “stand up” animations.
ResurrectSkill: Skill to use when being resurrected, only needed if the skill is also present in MonStats.txt I guess.
Restore: has to do with how the game handles the monster, monsters set to 0 are not stored permanently (Izual's Ghost, Natalya, the Familiar Summon (the “eyeball” scout summon the Necro had in the alpha version of D2) , all D2X summons, all non DS1 based traps (I.E those traps that spawn once and die)), 1 is the default value, that will make the game store and restore the units as needed when the maps load/unload. 2 is a special setting for large constructs, like towers, spawners and catapults.
AutomapCel : what index in Maximap.DC6 is used to display this monster on the AutoMap. (does not update – go cry now you cheaters), to use this NoMap needs to be enabled.
NoMap: Boolean. If set to 0, the monster will not use an automap entry, 1 if it is meant to do it.
NoOvly: boolean which ranges from 0 to 1 and states whether the unit can make use of Overlays or not. It is often used by stationary units like the Bone Wall blocks.
Weapon Settings
MeleeRng: radius of the Melee attack of the monster, which works exactly like the 'range' column in Weapons.txt.
BaseW: base weaponclass, uses the codes from weaponclass.txt – for some AIs (such as that of the Necro Skeleton) this will define which special effects are being applied. (in 1.00-1.06 you could make the necro skeletons work like archers by setting the equivalent of this column to “bow” – this no longer works). Note, this will apply all the hardcoded effects of a specific weaponclass to the unit (such as how some modifiers work).
HitClass: has to do with how successful hits are handled by the target, some hitclasses have minor effects, such as making specific sounds on impact, I doubt there is much more to it then some client side effects (but there may yet be some surprises here) – probably uses the same hitclasses as used by missiles.
Display and Component settings
HDv - TRv - LGv - Rav - Lav - RHv - LHv - SHv - S1v - S2v - S3v - S4v - S5v - S6v - S7v - S8v: equipment-graphic type for head, torso, legs, right arm, left arm, right hand, left hand, shield and special 1-8 components. This works just like the 'AlternateGFX' columns in Weapons.txt – Make sure the monster has the component types you specify If you insert multiple graphic types, separated by a comma (“,”), the game will randomly select a component to use.
HD - TR - LG - RA - LA - RH - LH - SH - S1 - S2 - S3 - S4 - S5 - S6 - S7 - S8: Booleans, these columns control whenever the monster has these components or not. Make sure this matches your COF files.
TotalPieces: Total amount of different components this monster has.
NOTE: this is the numeric sum of all the used components (i.e the boolean columns like HD, TR, LG etc.).
mDT - mNU - mWL - mGH - mA1 - mA2 - mBL - mSC - mS1 - mS2 - mS3 - mS4 - mDD - mKB - mSQ - mRN: booleans (death, stall, walk, gethit, attack 1, attack 2, block, cast, special1-4, corpse, knockback, sequence, run), they control which modes this monster has. Some of these have special effects, if you set mGH to 0, the monster will have instant-hit recovery (I.E. golems for example cannot be locked in GH mode, because the game never plays GH anims), mKB is another boolean that controls whenever the monster can be knocked back or not (if mKB is false then items with knockback will have no effect on this monster), otherwise the game will pick the GH animation for knockback. SQ defines whenever this unit can use a skill-sequence or not.
dDT - dNU - dWL - dGH - dA1 - dA2 - dBL - dSC - dS1 - dS2 - dS3 - dS4 - dDD - dKB - dSQ - dRN : controls the number of directions the specific animations for each mode have – this must match the values in the COF files. Otherwise you usually get a nice crash.
A1mv - A2mv - SCmv - S1mv - S2mv - S3mv - S4mv: booleans that control whenever the unit can use these modes while moving, on top of the modes WL and RN.
Selection Settings
isSel: boolean which ranges from 0 to 1 and states whether the unit can be selected or not
alSel: boolean which ranges from 0 to 1 and states whether the unit can be selected by allies or not.
NOTE: There is a minor glitch on that, which will make enemy monster missiles collide with other enemy units, but this is just a client-side bug
noSel: boolean which ranges from 0 to 1 and states whether every form of selection is prohibited for this unit or not.
shiftSel: boolean, not directly known, used with bonewalls (both the necromancer's bonewalls and big D's boneprison) to prevent them from being properly selected. (I.E. they are selected but no name is ever shown in case of diablo's prison).
corpseSel: boolean which ranges from 0 to 1 and states whether the unit's corpse can be selected or not.
End-row settingsa
EOL – End of Line.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=359]Knowledge Base - MonStats2.txt[/url]

View File

@ -0,0 +1,287 @@
# D2Mods Knowledge Base: Article 360
# Title: MonStats.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=360
MonStats.txt
Written by: Nefarius
Written on: Thu Nov 01, 2007 5:00 am
Last modified: Tue Oct 29, 2024 1:18 am
Views: 51960
Description: by Nefarius, expanded, corrected and restyled by Nizari
Categories: File Guides (1.10 - 1.14)
This guide contains all the information you need concerning MonStats.txt
- Related text files: MonStats.txt
- Is used together with/is related to/reads from:
DifficultyLevels.txt
Levels.txt
Missiles.txt
MonEquip.txt
MonLvl.txt
MonSeq.txt
MonSounds.txt
MonStats2.txt
MonType.txt
MonProp.txt
Skills.txt
SuperUniques.txt
TreasureClass.txt
Id: this column contains the pointer that will be used in other txt files such as levels.txt and superuniques.txt.
Warning: vanilla file got a nasty broken id chain error, because of that, if you will try to add a brand new monster, the game will spawn willowisp8 instead. To fix this, you have to rename cr_lancer8 from row number 725 (hcidx 723) to cr_lancer9, as cr_lancer8 is doubled (the first one is present at row 619, (hcidx 617)
hcIdx: this is the actual internal ID of the unit (this is what the ID pointer actually points at) remember that no two units can have the same ID, this will result in lots of unpredictable behaviour and crashes so please don’t do it. This 'HarcCodedInDeX' is used for several things, such as determining whenever the unit uses DCC or DC6 graphics (like mephisto and the death animations of Diablo, the Maggoc Queen etc.), the hcIdx column also links other hardcoded effects to the units, such as the transparency on necro summons and the name-color change on unique boss units (thanks to Kingpin for the info)
BaseId: this column contains the ID pointer of the “base” unit for this specific monster type (ex. There are five types of “Fallen”; all of them have fallen1 as their “base” unit). The baseID is responsible for some hardcoded behaviours, for example moving thru walls (ghosts), knowing what units to ressurect, create etc (putrid defilers, shamans etc), the explosion appended to suicide minions (either cold, fire or ice). Thanks to Kingpin for additional info on this column.
NextInClass: this column contains the ID of the next unit in the chain. (Continuing on the above example, fallen1 has the ID pointer of fallen2 in here). If you want to make a monster subtype less you should simply leave this blank and make BaseId point at itself (its ID pointer). The game uses this for “map generated” monsters such as the fallen in the fallen camps, which get picked based on area level (the same camp, that in the cold plains contains normal fallen will contain carvers and devilkin elsewhere, read Levels.txt to check how to adjust area level).
TransLvl: this indicates which palette (color) entry the unit will use, most monsters have a palshift.dat file in their COF folder, this file contains 8 palettes, starting from index 0. These palettes are used by the game to make the various monster sub-types appear with color variations. The game with use the palette from the palettes file corresponding to the value in this column plus 2; eg: translvl = 0 will use the third palette in the file.
NOTE: some tokens (token = IE name of a folder that contains animations) such as FC do not accept their palettes.
NOTE no 2: some monsters got unused palettes, ZM (zombie) for example will turn light-rotten-green with palette nr 5 and pink-creamy with 6.
NameStr: this column contains the string-key used in the TBL (string.tbl, expansionstring.tbl and patchstring.tbl) files to make this monsters name appear when you highlight it. Without that your monster will be displayed as "not used - tell ken" or "an evil force".
Warning: string keys are case sensitive, so if you enter a key like “Foo” in monstats.txt you must enter exactly that in the TBL file! (IE if you enter “foo” or “fOO” you will get "not used - tell ken" or "an evil force").
MonStatsEx: this column contains the ID pointer to an entry in MonStats2.txt. In 1.10 Blizzard has moved all the graphical aspects (light radius, bleeding etc) to a new file to conserve space (MonStats.txt is one column short of 256, the maximum MS Excel can handle, and that’s what they probably used for their files).
MonProp: this column contains the ID pointer to an entry in MonProp.txt which controls what special modifiers are appended to the unit, for example you can use it to give your monsters auras, states, random resistances or immunities, give them “get hit skills” and almost anything else.
MonType: this column contains the group ID of the “super group” this monster belongs to, IE all skeletons belong to the "super group" skeleton. The 1.10 MonType.txt works exactly like ItemTypes.txt, furthermore this file is used for special modifiers such as additional damage vs. monster-class.
AI: this column tells the game which AI to use for this monster. Every AI needs a specific set of animation modes (GH, A1, A2, S1, WL, RN etc). Most of AI's require a configuration in aip columns (read about them below), without that they (most of them) will do absolutely nothing.
DescStr: this column contains the string-key used in the TBL (string.tbl, expansionstring.tbl and patchstring.tbl) files for the monsters description (leave it blank for no description).
NOTE: ever wondered how to make it say something below the monster name (such as “Drains Mana and Stamina etc), well this is how you do it. Just put the string-key of the string you want to display below the monsters name in here.
Code: this is the only graphical setting (besides TransLvl) left in MonStats.txt, this controls which token (IE name of a folder that contains animations) the game uses for this monster.
enabled: Boolean, 1=enabled, 0=disabled. This controls whenever the unit can be used at all for any purpose whatsoever. This is not the only setting that controls this; there are some other things that can also disable the unit (Rarity and isSpawn columns see those for description).
rangedtype: Boolean, 1=ranged attacker, 0=melee attacker. This tells the game whenever this is a ranged attacker. It will make it possible for monsters to spawn with multiple shot modifier. Also, I suspect this has to do with the RANGEDSPAWN column in Levels.txt. (Could it be the game uses this for preference settings when spawning monsters to avoid areas being populated only with melee monsters, IE the game picks a set amount of monsters for every level, randomly, only based on their rarity values, from those specified in Levels.txt, now I assume that it could pick 4 melee monsters, however in 1.10 Blizzard added a check to prevent this from happening AFAIK and this could be how they control it.)
placespawn: Boolean, 1=spawner, 0=not a spawner. This tells the game whenever this unit is a “nest”. IE, monsters that spawn new monsters have this set to 1. Note that you can make any monster spawn new monsters, irregardless of its AI, all you need to do is adjust spawn related columns and make sure one of its skills is either “Nest” or “Minion Spawner”.
spawn: this column contains the ID pointer of the unit to spawn. (in case it is a spawner that is), so if you want to make a new monster that generates Balrogs this is where you would put the Balrog ID pointer.
spawnx, spawny: the x/y offsets at which spawned monsters are placed. IE this prevents the spawned monsters from being created at the same x/y coordinates as the spawner itself, albeit its not needed, Blizzards collision detection system is good enough to prevent them from getting stuck.
spawnmode: which animation mode will the spawned monster be spawned in. IE. If you make a golem summoner (yes I know, “very original”) you could put S1 in here to make it look as if the golems are really summoned (otherwise they would just appear), in most cases you will probably want to use NU mode or a sequence though.
minion1, minion2: these columns contain the ID pointers to the minions that spawn around this unit when it is created.
NOTE + MINI TUTORIAL: lets say you want your super-strong boss to spawn with 5 Oblivion Knights. To do this you would simply enter the Oblivion Knights ID pointer in the MINION1 column. And set PARTYMIN and PARTYMAX both to 5. MINION1/2 are used for several other things. If the monster spawns as unique or superunique then it will have the unit from MINION1/2 set as its minion instead of monsters of its own type. That’s why Lord De Seis doesn’t spawn with other oblivion knights anymore. To semi-circumvent this I suggest you simply put the monsters ID pointer in the MINION2 column (I.E. if you give the Oblivion Knights their own ID pointer in MINION2, Lord De Seis should spawn with both Doom Knights and Oblivion Knights again). The other use controls what monster is created when this unit dies. For example Flayer Shamans will spawn a regular Flayer when they are killed. To enable this you must set SPLENDDEATH to 1, make sure the unit you spawn this was has a raise or resurrect sequence otherwise it will look weird (but it works).
SetBoss: Boolean, 1=set unit as boss, 0=don’t set unit as boss. This is related to hardcoded behavior of some of the AI's. IE Scarabs are spawned a bit different than most of other monsters. There are 1 or 2 with minions of own kind. Thanks to this colums, the "bosses" of a group can have ('can" because you may set the chance in percentages ia aip5 column of Scarab AI) a chance to order "raid on tagret", what does it change is they will always use SK1 instead of A1 and A2 modes while raiding.
BossXfer: Boolean, 1=true, 0=false. This field is connected with the previous one, when "boss of the group" is killed, his "leadership" is passed to one of his minions.
PartyMin, PartyMax: how many minions are spawned together with this unit. As mentioned above in the MINION1/2 columns, this controls the quantity of minions this unit has.
MinGrp MaxGrp: exactly like the previous two columns, just that this controls how many units of the base unit to spawn. In versions 1.00-1.06, setting the minimum to more then 99 would crash the game.
sparsePopulate: this column controls the overall chance something will spawn in percentages, leaving it blank is the same as 100%. If you enter "80" in this column then whenever the game chooses to spawn this unit it will first roll out the chances. So in 2 out of 10 cases the monster will not be spawned and other one may take its place. If you use some low number there can be a situation when the game doesn't roll out the monster and if this monster has units specified in minion1/minion2 columns it will only spawn those minions without the "main" unit.
Velocity, Run controls the walking and running speed of this monster respectively.
NOTE: RUN is only used if the monster has a RN mode and its AI uses that mode.
Rarity: this column controls the overall odds that this monster will be spawned. IE Lets say in Levels.txt you have two monsters set to spawn - Monster A has rarity of 10 whereas Monster B has rarity of 1 and the level in question is limited to 1 monster type. First the game sums up the chances (11) and then calculates the odds of the monster spawning. Which would be 1/11 (9% chance) for Monster B and 10/11 (91% chance) for Monster A, thus Monster A is a lot more common than monster B. If you set this column to 0 then the monster will never be selected by Levels.txt for obvious reasons.
Level, Level(N), Level(H): controls the monsters level on the specified difficulty. This setting is only used on normal. On nightmare and hell the monsters level is identical with the area level from Levels.txt, unless your monster has BOSS column set to 1, in this case its level will be always taken from these 3 columns.
MonSound: specifies the ID pointer to this monsters “Sound Bank” in MonSound.txt when this monster is normal.
UMonSound: specifies the ID pointer to this monsters “Sound Bank” in MonSounds.txt when this monster is unique or champion. For SuperUnique monsters this is controlled by SuperUniques.txt.
threat: used by the game to tell AIs which unit to target first. The higher this is the higher the threat level. Setting this to 25 or so on Maggot Eggs would make your Merc try to destroy those first.
aidel, aidel(N), aidel(H): this controls delays between AI ticks (on normal, nightmare and hell). The lower the number, the faster the AI's will attack thanks to reduced delay between swings, casting spells, throwing missiles etc. Please remember that some AI's got individual delays between attacks, this will still make them faster and seemingly more deadly though.
aidist, aidist(N), aidist(H): the distance in cells from which AI is activated. Most AI"s have base hardcoded activation radius of 35 which stands for a distamnce of about 1 screen, thus leaving these fields blank sets this to 35 automatically.
aip1-8, aip1-8(N), aip1-8(H): these cells are very important, they pass on parameters (in percentage) to the AI code. For descriptions about what all these AI's do, check The AI Compendium.
Warning: many people have trouble with the AI of the Imps, this AI is special and uses multiple rows.
MissA1, MissA2, MissS1, MissS3, MissS4, MissC, MissSQ: these columns control “non-skill-related” missiles used by the monster. For example if you enter a missile ID pointer (from Missiles.txt) in MissA1 then, whenever the monster uses its A1 mode, it will shoot a missile, this however will succesfully prevent it from dealing any damage with the swing of A1.
NOTE: for the beginners, A1=Attack1, A2=Attack2, S1=Skill1, S2=Skill2, S3=Skill3, S4=Skill4, C=Cast, SQ=Sequence.
Align: Switch, 0=enemy, 1=aligned, 2=neutral. This setting controls whenever the monster fights on your side or fights against you (or if it just walks around, IE a critter). If you want to turn some obsolete NPCs into enemies, this is one of the settings you will need to modify. Setting it to 2 without adjusting other settings (related to AI and also some in MonStats2) it will simply attack everything.
IsSpawn: Boolean, 1=spawnable, 0=not spawnable. This controls whenever this unit can be spawned via Levels.txt.
IsMelee: Boolean, 1=melee attacker, 0=not a melee attacker. This controls whenever this unit can spawn with boss modifiers such as multiple shot or not. IE melee monsters will never spawn with multiple shot.
npc: Boolean, 1=I’m a NPC, 0=I’m not. This controls whenever the unit is a NPC or not.
interact: Boolean, 1=Special NPC features enabled, 0=No special NPC features. This controls whenever you can interact with this unit. IE this controls whenever it opens a speech-box or menu when you click on the unit. To turn units like Kaeleen or Flavie into enemies you will need to set this to 0 (you will also need to set NPC to 0 for that).
inventory: Boolean, 1=Has an inventory, 0=Has no inventory. Controls whenever this NPC or UNIT can carry items with it. For NPCs this means that you can access their Inventory and buy items (if you disable this and then try to access this feature it will cause a crash so don’t do it unless you know what you’re doing). For Monsters this means that they can access their equipment data in MonEquip.txt.
InTown: Boolean, 1=I can enter towns, 0=I can’t enter towns. This controls whenever enemies can follow you into a town or not. This should be set to 1 for everything that spawns in a town for obvious reasons. According to informations from Ogodei, it also disables/enables collision in singleplayer and allows pets to walk/not walk in city in multiplayer. In multiplayer collision is always set to 0 for pets.
lUndead: Boolean, 1=I'm the low undead, 0=I'm not. Blizzard used this to differentiate High and Low Undead (IE low undead like Zombies, Skeletons etc are set to 1 here), both this and HUNDEAD will make the unit be considered undead. Low undeads can be resurrected by high undeads. High undeads can't resurrect eachother.
hUndead: Boolean, 1=I'm the high undead, 0=I'm not. See comments under the previous column.
demon: Boolean, 1=I'm a demon, 0=I'm not. This makes the game consider this unit a demon.
flying: Boolean, 1=I can fly, 0=I can’t fly. If you set this to 1 the monster will be able to move fly over obstacles such as puddles and rivers.
TIP: Setting this to 1 for Mephisto will prevent the possibility of making him stuck and being slaughtered by blizzard or other ranged spells easily.
opendoors: Boolean, 1=I can open doors, 0=I’m too damn retarded to open doors. Ever wanted to make the game more like D1 (where closing doors could actually protect you), then this column is all you need. By setting this to 0 you will succesfully lobotomize the monster, thus he will not be able to open doors any more.
boss: Boolean, 1=I’m a boss, 0=I’m not a boss. This controls whenever this unit is a special boss, as mentioned already, monsters set as boss IGNORE the level settings, IE they will always spawn with the levels specified in MonStats.txt, thus if a superunique monster has this flag set to 1, its level will be monstats level + 3 (level from monstats because of boss flag and +3 levels because of being a super unique). Boss will gain some special resistances, such as immunity to being stunned (!!!), also crushing blow has a 1/2 effectiveness multiplier against bosses.
primeevil: Boolean, 1=I’m a prime evil, 0=I’m not a prime evil. (=Act Boss). Setting this to 1 will give your monsters huge (300% IIRC) damage bonus against hirelings and summons. Ever wondered why Diablo destroys your skeletons with 1 fire nova while barely doing anything to you? Here is your answer.
killable: Boolean, 1=Mortal, 0=Immortal. Setting this to 0 will make the monster absolutely unkillable.
switchai: Boolean, 1=Can chance sides, 0=Cannot change sides. Gives your monster something what I call "Strong Mind", it decides if this units mind may be altered by “mind altering skills” like Attract, Conversion, Revive etc or not.
noAura: Boolean, 1=Can’t get an aura, 0=Can get an aura. Monsters set to 0 here will not be effected by friendly auras.
nomultishot: Boolean, 1=Can’t get multishot modifier, 0=Can get multishot modifier. This is another layer of security to prevent this modifier from spawning, besides the ISMELEE layer.
neverCount: Boolean, 1=Never accounted for, 0=Accounted for. Setting this to 1 prevents your pets from being counted as population in said area, for example thanks to this you can finish The Den Of Evil quest while having pets summoned.
petIgnore: Boolean 1=Summons and hirelings are ignored by this unit, 0=Summons and hirelings are noticed by this unit. If you set this to 1 you will the monsters going directly for the player.
deathDmg: Boolean, 1=Damage players colliding with my death animation, 0=Don’t damage anything. This works similar to corpse explosion (its based on hitpoints) and damages the surrounding players when the unit dies. (Ever wanted to prevent those undead stygian dolls from doing damage when they die, this is all there is to it)
genericSpawn: Boolean, 1=Use generic spawning, 0=Don’t use generic spawning. Has to do something is with minions being transformed into suicide minions, the exact purpose of this is a mystery to me though.
zoo: Boolean, 1=true, 0=false. Unused.
SendSkills: Switch, 1=Unknown, 2=Used for assassin traps, 0=Don’t send skills. This is only used by two of the Assassin traps, however it doesn't serve any purpose anymore.
Skill1-8: the ID Pointer to the skill (from Skills.txt) the monster will cast when this specific slot is accessed by the AI. Which slots are used is determined by the units AI.
Sk1mode-Sk8mode: the graphical MODE (or SEQUENCE) this unit uses when it uses this skill.
Sk1lvl-Sk8lvl: the skill level of the skill in question. This gets a bonus on nightmare and hell which you can modify in DifficultyLevels.txt.
Drain, Drain(N), Drain(H): controls the effectiveness of Life and Mana steal from equipment on this unit on the respective difficulties. 0=Can’t leech at all. (negative values don't damage you, thanks to Doombreed-x for testing this), setting it to more then 100 would make LL and ML more effective. Remember that besides this, Life and Mana Steal is further limited by DifficultyLevels.txt.
coldeffect, coldeffect(N), coldeffect(H): controls the effectiveness of cold effect and its duration and freeze duration on this unit. The lower this value is, the more speed this unit looses when its under the effect of cold, also freezing/cold effect will stay for longer. Positive values will make the unit faster (thanks to Brother Laz for confirming my assumption), and 0 will make it unfreezeable. Besides this, cold length and freeze length settings are also set in DifficultyLevels.txt.
ResDm, ResDm(N), ResDm(H): damage resistance on the respective difficulties. Negative values mean that the unit takes more damage from this element, values at or above 100 will result in immunity.
NOTE: even though it may be quite obvious, I already met many people who do not know about it. Each point of resistance means 1% of reduction (or increase if the value is <0) of damage from said source. The same stands for player characters. Same stands for all other resistances. 81% of fire resist means 81% of incoming fire damage reduction.
NOTE 2: when resistance is >100 (immunity), you need 5 points of resistance reducing stat applied DIRECTLY to the unit to reduce 1% of immunity. It means if you want to break 105% immunity, you will need at least 30 resist reduction stat (105 - 6 = 99 and 6 * 5 = 30).
NOTE 3: yes, yes, indeed, "damage reduced by x%" stat that may spawn on items such as The Crown Of Ages or Ber rune is nothing else than physical resistance.
ResMa, ResMa(N), ResMa(H): magic resistance on the respective difficulties. Negative values mean that the unit takes more damage from this element, values at or above 100 will result in immunity. Check ResDm description for additional info.
ResFi, ResFi(N), ResFi(H): fire resistance on the respective difficulties. Negative values mean that the unit takes more damage from this element, values at or above 100 will result in immunity. Check ResDm description for additional info.
ResLi, ResLi(N), ResLi(H): lightning resistance on the respective difficulties. Negative values mean that the unit takes more damage from this element, values at or above 100 will result in immunity. Check ResDm description for additional info.
ResCo, ResCo(N), ResCo(H): cold resistance on the respective difficulties. Negative values mean that the unit takes more damage from this element, values at or above 100 will result in immunity. Check ResDm description for additional info.
ResPo, ResPo(N), ResPo(H): poison resistance on the respective difficulties. Negative values mean that the unit takes more damage from this element, values at or above 100 will result in immunity. Check ResDm description for additional info.
DamageRegen: this controls how much health this unit regenerates per frame. Sometimes this is altered by the units AI. The formula is (REGEN * HP) / 4096. So a monster with 200 hp and a regen rate of 10 would regenerate ~0,5 HP (~12 per second) every frame (1 second = 25 frames).
Warning: Can safely be set to a negative value in 1.10f, but in 1.11b+ a negative value will cause an immediate crash when the monster spawns
SkillDamage: ID Pointer to the skill that controls this units damage. This is used for the druids summons. IE their damage is specified solely by Skills.txt and not by MonStats.txt.
NoRatio: Boolean, 1=Don’t use MonLevel.txt, 0=Use MonLevel.txt. Does this unit use MonLevel.txt or does it use the stats listed in MonStats.txt as is. Setting this to 1 will result in an array of problems, such as the appended elemental damage being completely ignored, irregardless of the values in it.
NoShldBlock: Boolean, 1=Can block without a blocking animation, 0=Can’t block without a blocking animation. Quite self explanatory, in order for a unit to block it needs the BL mode, if this is set to 1 then it will block irregardless of what modes it has.
ToBlock, ToBlock(N), ToBlock(H): this units chance to block. See the above column for details when this applies or not. Monsters are capped at 75% block as players are AFAIK.
Crit: this units chance of scoring a critical hit (dealing double the damage).
minHp, maxHp, minHp(N), maxHp(N), minHp(H), maxHp(H): this units minimum and maximum HP on the respective difficulties.
NOTE: Monster HitPoints are calculated as the following: (minHp * Hp from MonLvl.txt)/100 for minimal hp and (maxHp * Hp from MonLvl.txt)/100 for maximum hp.
To make this guide idiot-proof, we will calculate the hit points of a Hungry Dead from vanilla on Normal difficulty and Single Player mode. It has minHp = 101 and maxHp = 186 and level 2. Hp for level 2 in MonLvl.txt = 9
It means Hungry Dead has (101*9)/100 ~ 9 of minimum hp and (186*9)/100 ~ 17 maximum hit points. You have to remember monsters on nightmare and hell take their level (unless Boss = 1) from area level of Levels.txt instead of Level column of MonStats.txt. I hope this is clear.
AC, AC(N), AC(H): this units Armor Class on the respective difficulties. The calculation is the same (analogical) as for hit points.
Exp, Exp(N), Exp(H): the experience you get when killing this unit on the respective difficulty. The calculation is the same (analogical) as for hit points.
A1MinD, A1MaxD, A1MinD(N), A1MaxD(N), A1MinD(H), A1MaxD(H): this units minimum and maximum damage when it uses A1 mode. The calculation is the same (analogical) as for hit points.
A2MinD, A2MaxD, A2MinD(N), A2MaxD(N), A2MinD(H), A2MaxD(H): this units minimum and maximum damage when it uses A2 mode. The calculation is the same (analogical) as for hit points.
S1MinD, S1MaxD, S1MinD(N), S1MaxD(N), S1MinD(H), S1MaxD(H): this units minimum and maximum damage when it uses S1 mode (or Skill 1), usually used for missiles like arrows and specially charged attacks like Sand Raider Flurry, Viper Charge or Duriel Jab etc. The calculation is the same (analogical) as for hit points.
A1TH, A1TH(N), A1TH(H): this units attack rating for A1 mode on the respective difficulties. The calculation is the same (analogical) as for hit points.
A2TH, A2TH(N), A2TH(H): this units attack rating for A2 mode on the respective difficulties. The calculation is the same (analogical) as for hit points.
S1TH, S1TH(N), S1TH(H): this units attack rating for S1 mode (or Skill 1) on the respective difficulties. Check S1MinD[...] description for additional info. The calculation is the same (analogical) as for hit points.
El1Mode-El3Mode: the mode to which the elemental damage is appended. The modes to which you would usually attack elemental damage are A1, A2, S1, S2, S3, S4, SQ or C as these are the only ones that naturally contain trigger bytes.
El1Type-El3Type: the type of the elemental damage appended to an attack. There are several elements: fire=Fire Damage, ltng=Lightning Damage, cold=Cold Damage (uses duration), pois = Poison Damage (uses duration), mag=Magic Damage, life=Life Drain (the monster heals the specified amount when it hits you), mana=Mana Drain (the monster steals the specified amount of mana when it hits you), stam=Stamina Drain (the monster steals the specified amount of stamina when it hits you), stun=Stun Damage (uses duration, damage is not used, this only effects pets and mercs, players will not get immobilized but they will get thrown into hit recovery whenever they get hit by an attack, no matter what type of attack it is, thanks to Brother Laz clearing this one up), rand=Random Damage (uses duration, either does Poison, Cold, Fire or Lightning damage, randomly picked for every attack), burn=Burning Damage (uses duration, this damage type cannot be resisted or reduced in any way), frze=Freezing Damage (uses duration, this will effect players like normal cold damage but will freeze and shatter pets). If you want to give your monster knockback use MonProp.txt.
El1Pct-El3Pct, El1Pct(N)-El3Pct(N), El1Pct(H)-El3Pct(H): chance to append elemental damage to an attack on the respective difficulties. 0=Never append, 100=Always append.
El1MinD-El3MinD, El1MaxD-El3MaxD, El1MinD-El3MinD(N), El1MaxD-El3MaxD(N), El1MinD-El3MinD(H), El1MaxD-El3MaxD(H): minimum and Maximum elemental damage to append to the attack on the respective difficulties. Note that you should only append elemental damage to those missiles that don’t have any set in Missiles.txt. The calculation is the same (analogical) as for hit points.
El1Dur-El3Dur, El1Dur(N)-El3Dur(N), El1Dur(H)-El3Dur(H): duration of the elemental effect (for freeze, burn, cold, poison and stun) on the respective difficulties.
TreasureClass1, TreasureClass1(N), TreasureClass1(H): the TreasureClass used by this unit as a normal monster on the respective difficulties.
NOTE: because of the new TreasureClass system introduced in 1.10 and later patches, TC entries are only of minor influence regarding what TC is being selected unless you change the system by editing TreasureClassEX.txt.
TreasureClass2, TreasureClass2(N), TreasureClass2(H): the TreasureClass used by this unit as a champion on the respective difficulties.
TreasureClass3, TreasureClass3(N), TreasureClass3(H): the TreasureClass used by this unit as a unique or superunique on the respective difficulties.
TreasureClass4, TreasureClass4(N), TreasureClass4(H): the Quest TreasureClass used by this monster. (For example, the act bosses always have better odds of dropping rare, set and unique items the first time you kill them).
TCQuestTId: the ID of the Quest that triggers the Quest Treasureclass drop.
TCQuestCP: the ID of the Quest State that you need to complete to trigger the Quest Treasureclass trop.
SplEndDeath: Switch, 0=no special death, 1=spawn the monster in the MINION1 column when I die, 2=kill whatever monster is mounted to me when I die (used by guard towers that kill the imps that are on top of them when they die).
SplGetModeChart: Boolean, 1=Get Special Mode Chart, 0=Don’t get special mode chart. Unknown but could be telling the game to look at some internal table. This is used for some Act Bosses and monsters like Putrid Defilers.
SplEndGeneric: Boolean, 1=true, 0=false. Works in conjunction with SPLCLIENTEND, this makes the unit untargetable when it is first spawned (used for those monsters that are under water, under ground or fly above you)
SplClientEnd: Boolean, 1=true, 0=false. Works in conjunction with SPLENDGENERIC, this makes the unit invisible when it is first spawned (used for those monsters that are under water, under ground or fly above you), this is also used for units that have other special drawing setups.
*eol: End of Line, used to avoid the trailing bit error M$ Excel usually causes when adjusting the end of the rows. This column must contain 0 unless you want to crash when the game loads.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=360]Knowledge Base - MonStats.txt[/url]

View File

@ -0,0 +1,71 @@
# D2Mods Knowledge Base: Article 362
# Title: LvlSub.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=362
LvlSub.txt
Written by: Nefarius
Written on: Fri Nov 18, 2005 2:34 am
Last modified: Wed Oct 24, 2018 3:23 pm
Views: 11925
Description: by I_only_pressed_ESC (corrections by Paul Siramy), restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
LvlSub.txt
Name: Description, reference only.
Type: This value is used in Levels.txt, in the column 'SubType'. You'll notice that in LvlSub.txt some rows use the same value, we can say they forms groups. If you count each row of a group starting from 0, then you'll obtain what is written in Levels.txt, columns 'SubTheme', 'SubWaypoint' and 'SubShrine'. (added by Paul Siramy)
for more details see: this post.
File: What .ds1 is being used.
Expansion: 0 for classic, 1 for Expansion.
CheckAll: Unknown as all have 0.
BordType: this field can contain values ranging from -1 to 2
NOTE: wall types have 0, 1 or 2, while Non-wall types have -1.
Gridsize: Set it to 1 or 2 I'm assuming this means a block of tiles ie: 4x4. (see below).
Dt1Mask: For some rows, this is their place in LvlTypes.txt. The Dt1 mask also includes the mask for the Floor.Dt1 of that level. (see Trials0 below)
Prob X: The probability of the Dt1 being spawned.
Trials X: This appears to be a chance of either a floor tile being spawned or the actual Dt1..
Max X: This appears to be how much will spawn in the Grid.
Beta: Reference only.
This addendum was written by Paul Siramy in regard to the 'trials' columns.
I just did some tests. Here's how the game put Substitution Tiles, using LvlSub.txt :
In a level it place some 'groups' of tiles. It means that usually when the game decide to place 1 substitution tile at a place, it place other ones just near around.
The rarity of these groups is controled by the ProbX column. The higher the value, the more groups will be placed in the level. Note that there can be less group than the value you set in ProbX. Apparently these groups are placed first, but they may be erased by other ds1 tiles, like a fallen camp. So don't set the ProbX to a too low value, as it sometimes happen in that case that no substitution tiles will appear.
For each group, it tries to place TrialsX substitution tiles, but the number of such tiles is capped at MaxX. So it's useless to set TrialsX
- New Input, from a PM by I_only_pressed_Esc
I've been doing a bit of experimenting with Act1 wilderness border-inner walls generation.
I've found that Type 1 controls the actual border-inner wall generation to make it look 'not square' and straight forward ie 'wall hugging to find the next exit'.
The ds1 cannot be edited as it is hardcoded to choose from god knows what. This is based on adding the ds1 to LvlPrest.txt and changing the dt1 mask.
The ds1 has a number of various tile grids 4x4 4x5 5x5 etc tiles that are picked to generate the border or inner walls. As the tile grids get bigger the variance increases.
The grids have a 1 tile border of a floor tile which obviously gets merged at generation of the level.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=362]Knowledge Base - LvlSub.txt[/url]

View File

@ -0,0 +1,285 @@
# D2Mods Knowledge Base: Article 364
# Title: Missiles.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=364
Missiles.txt
Written by: Nefarius
Written on: Sun Jan 04, 2009 8:40 am
Last modified: Mon Oct 05, 2020 4:11 pm
Views: 31280
Description: by Nefarius and Brother Laz, restyled by HarvestWombs ; additional info by Firehawk
Categories: File Guides (1.10 - 1.14)
Missiles.txt File Guide
By Nefarius and Brother Laz
Initialization
Missile: ID Pointer, this pointer is used to assign the missile to skills and units (Skills.txt and Monstats.txt), never use the same name twice (it won't cause you to crash, but only the first instance will be used when accessed via txt-linkage, note, if the ID is different you still can launch the missile via code).
Id: The actual ID of the missile the pointer above refers to, if you would access your missile via code directly, you would use this! The ID must be different for each missile (ranging between 0 and 32767). You must also take care to not leave gaps between IDs, this is known to lead to unexplained errors and other weird behaviour.
Functions
Note: I will not detail any of the missile functions here, I don't have enough experience in this field (and there already is a missile-function guide by Mishy23 -> which you can read by clicking here).
You should also be aware that some functions will work properly only when linked to a skill, such as homing missiles! - Nefarius
pCltDoFunc: Client movement function. Defines the graphical behavior of the missile while it is active ('before it vanishes').
pCltHitFunc: Client collision function. Defines the graphical behavior of the missile at the moment of collision.
pSrvDoFunc: Server movement function. Defines the actual behavior of the missile while it is active ('before it vanishes').
Note, without a matching client function, the effect will not be displayed, for example if it is to launch additional missiles, these missiles will be invisible. A 'server-side-only' missile cannot initialize any client-side code, thus any missile it will launch will also be invisible!
pSrvHitFunc: Server collision function. Defines how the missile behaves at the moment of collision, the same rules apply here as they did for the server movement function.
pSrvDmgFunc: Server damage function. Defines special routines to be done when the missile damages ('hits') a unit. This ranges from stunning units (without using stun damage!) to 'damaging' mana instead of life.
Calculations
Note: These columns are only used if the proper functions are called by this missile. Also, all columns preceded by an asterisk ('*') are comment fields!
SrvCalc1: This column contains the server movement calculation.
Param1-5: These columns contain parameters passed on to the server movement function (these parameters can also be used by the server movement calculation).
CltCalc1: This column is the client side equivalent to the SrvCalc1 column.
CltParam1-5: These columns are the client side equivalents to the Param1-5 columns. Normally their values should not be different to the Param1-5 columns, some specially client-side effects such as trails will require them to be different however (the trails are a client-side only, so they do not need a server part)!
SHítCalc1: This column contains the server collision calculation.
sHítPar1-3: These columns contain the server collision parameters, as with those for the movement functions, they can be used in the SHiíCalc1 field.
CHitCalc1: Client side equivalent to SHítCalc1.
cHitPar1-3: Client side equivalents to sHítPar1-3 columns.
DmgCalc1: Calculation used for damage modifications.
dParam1-2: Parameters for the damage functions, can be used in DmgCalc1 column.
Velocity settings
Vel: Base velocity (the speed this missile starts with), this controls the distance in pixels the missile travels each frame. Speeds near the break point (above 240) cause it to wrap around and move backwards.
MaxVel: Maximum velocity, this column is used if you use positive acceleration as the speed-limit.
VelLev: Velocity per unit level (missiles are units), in case the missile is fired by a monster its ulvl is the mlvl of the unit. In case it is fired by a skill function its ulvl is the slvl of the skill.
Accel: A positive number will make this missile accelerate until its velocity will reach the value in the MaxVel column. A negative value will make the missile slow down until it stands still (0 velocity), you can use this column to cause missiles to accelerate past the break point (FF) and thus move in a boomerang fashion (go backwards again). NOTE: Missiles slowing to 0 may not damage anything, you should use a collision function like SFIA or Freezing Arrow to release something else that does damage.
Range settings
Range: The number of frames this missile will exists after being created, see as a 'self destruction' timer. One may ask why the missiles must vanish, but imagine missiles flying infinitely into the void, not a good way to manage RAM.
LevRange: Additional range per unit level. This works exactly like VelLev, but unlike that column, this column here has an effect.
Light settings
Light: Diameter of the missiles light radius in subtiles.
Flicker: Random alternating to light radius diameter (in subtiles), use by fire-effects to cause them to flicker (hence the column name) in the existing radius diameter (IE. it doesn't make the radius any larger).
Red, Green, Blue: These columns control the RGB color values of the light radius, obviously 255,255,255 = White and so on, to get any other color then white you need to run in Direct3D (note: windowed mode = always directdraw).
Animation settings
InitSteps: Frames before the missile becomes visible (more technically, frames before the missile is created on the client).
Activate: This column is used for those missiles created from a central point (holybolts unleashed by the fist of heaven, lightning enchanted boss charged bolts, their scarab equivalent etc), it is also used for missiles that will only damage you after you touch them for a longer time (the 'fingers' of the death maulers for example). Thus, this column is the server side equivalent to InitSteps, this is the delay in frames before the missile can actually do anything besides existing graphically.
LoopAnim: Boolean, 1=Repeat this animation for the time of existence (range), 0=Play this animation once and then vanish (warning: the missile will only vanish from the client if the animation is shorter then the range).
CelFile: The name of the DCC file to used for this missile, the files are stored in data\global\missiles\, can contain subdirectories.
animrate: As far as I can say it has no function at all, I have set it to 0 and the animations still played at regular speed (16 frames per second as specified in the AnimSpeed column).
AnimLen: The length (in frames) of this animation (for a single direction). If you have a missile with 64 frames and 8 directions, you would enter 8 in this column for obvious reasons.
AnimSpeed: Number of frames played by second, this is not modified by animrate. I don't know why Blizzard has two columns that practically do almost the same, but I assume this is simply a result of the absence of missile *.COF (and thus also *.D2) files as the animrate column seams to be ignored (it was in my tests, it is probably there only to avoid crashes in the DCC routines).
RandStart: Causes the animation to start playing at the specified frame. From the name you would think it controls a random starting frame but it does not, it just causes the animation to start at the specified frame.
SubLoop: Boolean, 1=This missile will repeat a specific sequence as long as enough range is left, 0=This missile will play it's animation normally (as defined in the LoopAnim column).
SubStart: Starting frame of the SubLoop.
SubStop: Ending frame of the SubLoop (when it reaches this frame it will either go back to SubStart frame or it will play on until the missile disappears if not enough range is left)
Collision settings A
CollideType: Controls which type of collision to check for, 3=Normal collision, 6=Z-collision (a missile 'dropping from above'), 1=Used mostly for missiles that lay on the floor, waiting for the character to walk over them (like spidergoo and spikes).
NOTE: This is not required for trap missiles, 8=Fire collision (fire walls etc), related to softhit or per-frame-damage setups. Obviously, 0=No collision detection mode. There are at least 3 unused ones (2,5,7). For a better explanation of what these types of collision detection mean:
```
Type Wall-tiles Units Floor-tiles
0 false false false
1 false true false
3 true true false
6 true false false
8 true true true
```
CollideKill: Boolean, Will this missile get destroyed upon collision. 1=Always destroy this missile upon collision (overrides almost all other settings, Frozen Orb collision function is known to ignore this column), 0=Don't destroy this missile upon collision.
CollideFriend: Boolean, Can this missile collide with allies (such as holybolt), 1=Allow friendly collision, 0=Disallow friendly collision.
LastCollide: Unknown to both me and Brother Laz, but this boolean seams to be related to some special behavior on missiles that don't vanish upon collision, such as fire effects and some other effects that are client-side only. In short, it is usually enabled only for missiles with a 'physical collision effect'. - In any event, this column can be left 0, it won't effect anything noticeable.
Collision: Unknown to both me and Brother Laz, but this boolean is related to the previous one, many missiles that have no 'physical collision' but still perform a collision event will have this set to 1 (fire effects). - In any event, this column can be left 0, it won't effect anything noticeable.
ClientCol: Unknown to both me and Brother Laz, I assume this name stands for ClientCollision, but what exactly it handles remains a mystery. - In any event, this column can be left 0, it won't effect anything noticeable.
ClientSend: Boolean, controls whether missiles existing outside of a client's room are sent to clients when entering a room with them.
NextHit: Use collision timer after first collision (1=yes, 0=no), the timer is used to avoid excessive damage (and to annoy players).
NextDelay: Number of frames to deactivate all server-side collision settings for this missile post collision and to make the attacked unit ignore all subsequent missile attacks. For example, a missile with a NextDelay of 25 will be unable to 'damage' any target for 1 second after each successful server-side collision. Apparently the monster being hit will also become 'immune to missiles' for the duration of this timer.
Size / Coordinate settings
xoffset, yoffset, zoffset: Shift the placement of this missile by # pixels on the x, y or z axis, point 0 is either the top left corner of the DCC or the pivot (I haven't tested enough to be sure).
Size: Diameter in subtiles. Probably works identical to the size settings in MonStats2.txt from -1 to 3. Basically 1=Fills only 1 subtile, 2=Fills 4 subtiles, 3=Fills 9 subtiles.
Unknown settings
SrcTown: boolean, most likely controls whenever a missile vanishes when the person goes to a town via a TP ('PK trapping preventation), it is enabled only for missiles that can be used to trap a way point for example (fire walls and such effects).
CltSrcTown: Used together with the above, probably controls some graphical aspects of the vanishing (the number may control a frame, but this is just a wild guess.
CanDestroy: unknown (boolean).
Collision settings B
ToHit: Does this missile use Attack Rating ('chance to hit') or does it 'always' (it's 95% actually) hit ('guided arrow behavior'). You can easily make all missiles require Attack Rating by changing this boolean column to true (1). Whenever it uses the additional AR given by skills.txt is unknown, Brother Laz noticed that even the regular vanilla elemental arrows may be bugged and ignore their AR bonus (spankyou very much Blizzard).
AlwaysExplode: Will this missile always call it's Collision Functions when it is destroyed. 1=Yes, 0=No. (For example, Frozen Orb will always explode into a nova, even if it just runs out of range). Some collision functions, such as the Lightning Fury collision, will ignore this column and always explode server-side...
Miscellaneous Settings and Flags
Explosion: Boolean, 1=Is an explosion (meaning that it does not exist on the server, this will override all other settings!), 0=Is not an explosion.
Town: Boolean, 1=Does not vanish when spawned inside a town, 0=Vanishes when spawned inside a town (such as the trails left by the Druid's vines).
NoUniqueMod: Boolean, 1=Does not get bonuses from boss modifiers (such as fire damage if the boss spawns as Fire Enchanted), 0=Receives all bonuses applicable.
NoMultiShot: Boolean, 1=Is not effected by the multishot modifier of bosses, 0=Is effected by the multishot modifier of bosses as usual. Note: Blizzard forgot to enable this on some boss-death events, such as Shenk...
Holy: Flag, controls which units this missile can hit, 0=All units, 1=Only undead, 2=Only demons, 3=All units. – I didn't test this extensively, done from memory.
CanSlow: Boolean, 1=Is effected by skill_handofathena stat (slow missiles), 0=Is not effected by skill_handofathena stat.
ReturnFire: Boolean, 1=Can trigger 'collision events' on the target, 0=Cannot trigger collision events on the target. *Collision events are all those things that happen 'upon getting hit' for example. Blizzard erroneously enabled this on the Arctic Blast used by the Frozen Horrors and Nihlathak.
NOTE: May or may not effect other 'on hit' events, such as casting a skill or 'thorns'.
GetHit: Boolean, 1=Can knock the target into GH mode ('hit recovery') upon collision, 0=Never knock target into GH mode upon collision.
SoftHit: Boolean, unknown, used only for Shockfield on Ground and Firestorn, Apparently this setting handles the frequency of the unit being 'visually' hurt by the missile (probably the unit's lifebar being updated, which was bugged originally).
KnockBack: Percentage chance (0-100) to knock target back, the default is 0 obviously, if you enter 100 in here the target will always be knocked back after every single successful collision.
Trans: Controls how the missile is drawn. 0=Draw graphic normally, 1=Alpha-blending ('the darker the areas are the more transparent they become'), 2=Special blending mode, usually causes the missile to display black-and-white (Unholy bolt).
Qty: Does this missile use up quantity (1=use quantity, 0=don't use quantity).
NOTE: This requires a special starting function in skills.txt to work. Also, if you enable this for strafe for example, it will use the number of missiles it actually fires rather then a constant 1
Pierce: Is this missile effected by pierce (1=effected by pierce, 0=not effected by pierce). This refers to the 'pierce' modifier and to the Amazon skill Pierce.
SpecialSetup: Boolean, unknown, enabled only for potions. I am unsure what this controls, the 'arc' is not handled by this, there is a special check in code for potion itype. Maybe this has to do with displaying correct missile damage in weapons.txt?
Skill settings
MissileSkill: Boolean, used to transfer elemental damage from items to the splash radius of the missile and to dismiss all other damage modifiers (ever wondered why Freezing Arrow has SrcDmg set to 128 in skills.txt, yet the splash radius does no physical damage?).
Skill: If you enter the ID Pointer ('the name') of a skill here this missile will retrieve all of it's damage/hit data from this skill. The columns being read from skills.txt instead of missiles.txt are the following: ResultFlags, HitFlags, HitShift, HitClass, SrcDamage (SrcDam in skills.txt!), MinDam, MinLevDam1-5, MaxDam, MaxLevDam1-5, DmgSymPerCalc, EType, EMin, EMinLev1-5, EMax, EMaxLev1-5, EDmgSymPerCalc, ELen, ELenLev1-3, ELenSymPerCalc.
Event flags
ResultFlags: unknown (to both of us). 4=Used for normal missiles, 5=Used for explosions (all things with HitFlags of 2!), 8=Used for missiles that never damage anything. Most likely behaves similar to CollideType but what it really does...
HitFlags: unknown, 2=Used for explosions, 5=Used for freezing arrow. This could play a more important role then originally expected. Likely related to 'splash damage elemental carry over' mentioned further above (MissileSkill).
Damage settings
HitShift: this is a 'damage divisor', damage, as well as hitpoints, mana and stamina is handled in 256ths. 8=256/256, 7=128/256, 6=64/256, 5=32/256, 4=16/256, 3=8/256, 2=4/256, 1=2/256, 0=1/256. This roughly equals: 100%, 50%, 25%, 12.5%, 6.25%, 3.125%, 1.5625%, 0.78125% and 0.390625% of the actual damage.
ApplyMastery: Used only for MeteorFire and VampireMeteorFire. Most likely used to boost the damage of these unlinked missiles via mastery bonuses..
SrcDamage: 'Source Damage', this controls whenever the game should append the source units attack properties to the missile or not. This column is using 128ths (128=100%). This does not only reflect damage, but all other modifiers related to attack, including lifesteal and manasteal. Set this to -1 (poison clouds) to get rid of SrcDmg from skills.txt.
Half2HSrc: Boolean, 1=Half the damage when a two handed weapon is used, 0=Keep full damage when a two handed weapon is used.
SrcMissDmg: Used only for the poison clouds created by the expansion Viper's poison javelin I assume this tells it how much damage it should carry over from the base missile.
MinDamage, MaxDamage: Basic minimum and maximum physical damage of this missile.
MinLevDam1-5, MaxLevDam1-5: Additional physical damage to deal out per missile level (the unit level of the missile, either equal to the attacker's level or to the skill level). The range is: ulvl 2-8, ulvl 9-16, ulvl 17-22, ulvl 23-28 and ulvl 29+
DmgSymPerCalc: Physical damage synergy, works just like the synergy column in skills.txt, only that it has much fewer functions, AFAIK it only supports getting skill level, not way to obtain stat values etc.
EType: Elemental damage type. fire, ltng (Lightning), mag (Magic), cold, pois (Poison), life (Life-steal), mana (Mana-steal), stam (Stamina-steal), stun (note, 'stun damage' is ignored, stun uses only duration), rand (either lightning, fire, cold or poison – picked at every successful hit), burn (Burning damage, bugged, gives no EXP from kills, otherwise works like poison, you need to have low HitShift to make it work properly!), frze (Freeze, by itself this is handled like cold damage, you need to use special server damage functions to actually cause the unit to become frozen solid).
EMin, EMax: Just like MinDamage and MaxDamage, just for elemental damage (duh).
MinELev1-5, MaxELev1-5: I doubt I have to explain this. This is like MinLevDam1-5 and MaxLevDam1-5, just for elemental damage.
EDmgSymPerCalc: Same as DmgSymPerCalc, just for elemental damage.
ELen: Duration (used for stun, poison and burning damage), the duration is handled in frames, 25=1 second.
ELevLen1-3: Extra duration per missile unit level. (check intervals)
Miscellaneous Settings
HitClass: Hit classes are a rather 'enigmatic' part of D2, but they are technically just client side effects for collisions. For example the Hit class #6 is responsible for the 'pierce noise' when a throwing weapon hits something. #10 is probably the same just for 'smaller piercing missiles' like Arrows. #2 is used for throwing axes, #64 causes the 'electric sound' (used for lightning based missiles to make that special sound), #32 is used for fire walls and the like, #176 for liquid attacks (slime-missiles for example), #80 is used for Poison Nova, #48 for some cold effects. The hitclasses used in other txt files (MonStats2.txt, Skills.txt and possibly others that I forgot) can also be used here.
NumDirections: Number of directions of the DCC file loaded via the CelFile column. Make sure this matches the DCC to avoid crashes and the like. NOTE: Brother Laz says that this column is of no importance, I personally remember getting crashes in pre 1.09 days, so ignore this column or fill it, it seams more important that the 'Length' column is correct, probably like animrate, which is only there to avoid internal conflicts due to the absence of COF files.
LocalBlood: Related to skills that cause blood to be spilled around. 0=Can't bleed, 1=Can it bleed, 2=Can it bleed and is it effected by open wounds.
DamageRate: How does this missile handle magic_damage_reduced stat. An empty column means the effect is applied completely every single frame. Blizzard added this to avoid people from almost nullifying fire wall damage with just 5+ Magic Damage reducing items. (Get detailed formula)
Client side settings A: Sounds
TravelSound: ID Pointer from Sounds.txt to the WAV file the game plays when the missile is created. This is also used for sound effects that should loop for the time of the missiles existence. NOTE: Using looping sounds here can cause crashes (don't use long looping sound effects such as Music).
HitSound: ID Pointer from Sounds.txt to the WAV file the game plays when the missile collides with a target.
ProgSound: ID Pointer from Sounds.txt to the WAV file the game plays at special events, defined by the client side functions related to collisions.
Client side settings B: Graphics
ProgOverlay: ID Pointer from Overlays.txt for the DCC file to use as an overlay for special events defined by the client side functions related to collisions.
ExplosionMissile: The ID pointer from Missiles.txt for the explosion to create upon collision, this is only created if the missile successfully collides with a unit or an obstacle (what it can collide with is controlled by CollideType) or when AlwaysExplode is enabled..
Appended Missiles
Note: These columns are only accessed if the movement or collision functions use them! Also, all these columns use ID Pointers ('names')
SubMissile1-3: Server part of the missiles spawned by the movement function.
HitSubMissile1-3: Server part of the missiles spawned by the collision function.
CltSubMissile1-3: Client part of SubMissile1-3.
CltHitSubMissile1-3: Client part of HitSubMissile1-3.
EOL: End of Line, must be set to 0 if you use M$ Excel, to prevent it from blowing up the table.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=364]Knowledge Base - Missiles.txt[/url]

View File

@ -0,0 +1,58 @@
# D2Mods Knowledge Base: Article 365
# Title: MonEquip.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=365
MonEquip.txt
Written by: Nefarius
Written on: Wed Oct 26, 2005 5:39 am
Last modified: Wed Oct 24, 2018 3:24 pm
Views: 13178
Description: by Nefarius, restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
MonEquip.txt File Guide
By Nefarius
Note: Before you can do anything in here, you must set the inventory column in MonStats.txt to true (1).
this tells the game to look for equipment data inside MonEquip.txt
NOTE: Never set that column to true if you don't have the appropriate entries in MonEquip.txt, you will get an unhandled exception.
Furthermore, you should leave the last line intact, if you add new lines add them infront of the last line.
monster: This column contains the ID pointer to MonStats.txt, make sure this is accurate (otherwise you will crash for the same reasons as above).
oninit: Boolean, 0 = monster is created by skill, 1 = monster is created by level.
item1-3: The 3-4 letter code of the item from weapons, armor or misc.txt
loc1-3: The slot to equip the item in. (see BodyLocs.txt for more details)
mod1-3: Item quality of the equipped item. (see table below)
eol: End of Line.
Item Quality:
```
1 low quality
2 normal
3 superior
4 magic
5 set
6 rare
7 unique
8 crafted
9 tempered
```
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=365]Knowledge Base - MonEquip.txt[/url]

View File

@ -0,0 +1,87 @@
# D2Mods Knowledge Base: Article 367
# Title: LvlPrest.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=367
LvlPrest.txt
Written by: Nefarius
Written on: Fri Nov 18, 2005 2:29 am
Last modified: Wed Oct 24, 2018 3:23 pm
Views: 13598
Description: by Xenast, expanded and restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
Lvlprest.txt is the text file that handles preset dungeons and levels
Credits:
~SVR for Pop and PopPad explanation
~Go][um for the Logicals discovery
Name: This is a reference only and indicates name of the level
Def: Related to the automap, and must be a consecutive value
Levelid: The ID of the level from Levels.txt
NOTE: leave it to 0 if the ds1 is not a preset
Populate: If set to 0 monsters will not be able to spawn on the map.
NOTE: Causes Unhandled Exception if you add other monster objects when column is set to 0.
Logicals: Set it to 1 to allow wall transparency. Otherwise, set it to 0.
NOTE: For walls to become actually transparent, you need to follow some extra rules while building your dungeons.
Outdoors: Set to 1 for outdoor maps and 0 for indoors.
Animate: Controls wether or not animated tiles will animate in the level. 1 makes the animated tile to play their animation. 0 disables animations.
NOTE: Animated tiles, in levels with Animate = 0 , will display a random yet static frame.
KillEdge: Removes the tiles bordering the east and south edge of the ds1 in game. 1 means it will removed.
FillBlanks: Setting to 1 makes all empty spaces unwalkable.
SizeX - Size Y: Tells the X \ Y size of the map,
NOTE: Leave at 0 for preset areas since preset area size is defined in levels.txt
Automap: setting it to 1 will reveal the full automap.
NOTE: Only works for preset maps
Scan: Setting it to 1 allows warps to be selected.
Pops - PopPad:
Pops are the special tiles with the Style (main-index) of 8 - 29. These remove the target style set from the map, revealing tiles in another layer.
The Sequence number determines which Style set will be removed. These may be walls, floors or roof tiles.
To operate, two 'Pop tiles' are placed to form a square around the area of tiles to remove.
The PopPad column in lvlprest.txt determines the line of the 'trigger pad'. It determines the number of sub-tile units south & west the trigger line is offset.
You can only have one set of each style of pop. If you have 2 sets neither will operate properly, even if they have different target styles. So to have multiple pops in a level, you must use a different Style (main index) on each pair of pop tiles.
NOTE: When setting pops and poppad its best to reference an existing ds1 that contains the dt1's requiring these columns to help determine what value to use
Files: The amount of versions the map has, based on entries in File 1 to File 6 columns
File 1 to File 6: The location of the ds1 versions, leave at 0 for files that don't exist
Dt1mask: Number telling the game which tiles to use from lvltypes.txt : The calculation is 2^(your DT1 amount) -1.
Beta: 1 for beta, 0 not beta . Reference Only.
Expansion: 1 for expansion, 0 for non-expansion. Reference Only.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=367]Knowledge Base - LvlPrest.txt[/url]

View File

@ -0,0 +1,118 @@
# D2Mods Knowledge Base: Article 368
# Title: TreasureClassEx.txt File Guide (totally new)
# URL: https://d2mods.info/forum/kb/viewarticle?a=368
TreasureClassEx.txt File Guide (totally new)
Written by: Nefarius
Written on: Fri Mar 09, 2007 6:33 am
Last modified: Mon Apr 27, 2020 10:04 am
Views: 55928
Description: by Nefarius, restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
TreasureClassEx.txt File Guide
By Nefarius
Treasure Class: This column defines the ID pointer (“the name”) of the treasureclass.
This pointer is used by other files (and fields inside this file) to link to a specific line.
An ID pointer must be unique, if you have two identical ID pointers the game will always use the first occurrence and ignore all others.
Fields of this type are (almost always) case-sensitive. Files that use this ID pointer: MonStats.txt, SuperUniques.txt and TreasureClassEx.txt
Group and Level: These two columns go hand in hand.
The first is used to group several treasureclasses together to form a “super-treasureclass”, the second one then gives each of these lines a level.
The game will then use this to automatically attempt to balance the item drops according to the level you have put inside the second column.
For example: if you give a level 10 monster a treasureclass, it will pick the treasureclass with the nearest level.
So if you have one with 10 and another with 20, it will pick the first over the second, even if you linked the monster to the second treasureclass.
Picks: This column has two different functions, depending on the type of values you enter (either positive 0-6 or negative, -1 to -6).
In the first case this is used as the number of loops to run the “pick drop” routine, in the second case it is used to determine exactly which items, and how many of each, to drop (see appendix).
You cannot make the game drop more then 6 items with either method without code editing (there are other txt based methods to drop more then 6 items though).
Unique, Set, Rare, Magic: This is used to manipulate and fine-tune the drop ratio of items of the respective quality. Listing the whole “quality” calculation here is not necessary as this has been covered in many places, just know that the way this column works is:
if treasureclass-manipulator NoDrop – Probability for “nothing”, I.E. just like all other items droppable by a treasureclass, this simply defines the probability of “nothing” to drop.
Item1-10: The different items and treasureclasses linked to this line (“what it can drop”).
This can either contain item codes, item pointers (=the “names” of unique items and set items), auto-treasureclasses (see ItemTypes.txt or appendix) and other treasureclasses.
There are several special modifiers for this field that are supposedly enabled in 1.10, I have not used any of those myself so I don’t know if they work.
For gold drops, you can use the mul flag to increase the number of coins in a gold pile (this is why bosses and champions always drop more gold then regular monsters).
Prob1-10: This is the individual probability for each of the drops defined in the Item1-10 columns. (see appendix)
SumItems, TotalProb and DropChance: These columns have no purpose other then being used as comment fields (that’s what blizzard has used them for if you wonder what those values in some of them mean).
Term: This column is required to terminate the line if you’re using M$ Excel or another spreadsheet that likes messing up the table borders.
Appendix
Never replace or move the gold row around, the game needs this row to define gold drops (such as when you drop gold from your inventory AFAIK).
The chest rows are also accessed by code, albeit I am uncertain via what method, because it is definetly NOT via an ID, because one can move them around w/o any bad effects.
The auto-treasureclasses are used to group all items of a specific item type in a range of automatically generated TCs, such as armo3-99 and weap3-99. These TCs are softcoded in 1.10 and are now controlled by the TreasureClass column in ItemTypes.txt (thanks to Paul Siramy for pointing me in the right direction).
The chance to drop is generated based on the values in the prob1-10 columns (this includes NoDrop). Lets say you have NoDrop set to 100, and the probability for items 1-3 set to 25,50 and 100 respectively.
Sum = 100+100+50+25 = 275
Chance of no drops: 36.5% (100/275)
Chance of item 1: 9% (25/275)
Chance of item 2: 18% (50/275)
Chance of item 3: 36.5% (100/275)
If the picks column contains negative values then the Prob1-10 columns are used as quantity indicators instead.
For example:
Picks = -6
Item1 = 2
Item2 = 1
Item3 = 3
This will make the game drop 2,1 and 3 of these items respectively.
AutoTC's
Nefarius wrote:The game builds up auto tcs automatically (as the name implies), from all items that have armo somewhere in their itemtype chain.
That means all entries in armor.txt are covered by the armo3-99 auto TC.
qLvl = level in armor.txt
So cap, sash, leather glove, quilted armor et alia are armo3
Sacred Armor and alia would be armo99 etc.
armo3-99 contains each item with rarity greater then 0 from this file, in steps of 3. (3,6,9 ... 93,96,99)
armo3 contains items with qLvls 1-3
armo6 contains items with qLvls 4-6
And so on and so forth.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=368]Knowledge Base - TreasureClassEx.txt File Guide (totally new)[/url]

View File

@ -0,0 +1,85 @@
# D2Mods Knowledge Base: Article 369
# Title: ItemTypes.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=369
ItemTypes.txt
Written by: Nefarius
Written on: Mon Feb 02, 2009 11:15 am
Last modified: Sat Nov 23, 2024 11:24 am
Views: 24177
Description: by Nefarius, restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
ItemTypes.txt File Guide
By Nefarius (1.2 added further notes regarding socket caps and staffmodes brought to my attention by Myhrginoc a (long) while ago)
ItemType: A comment field that contains the “internal name” of this iType, you can basically enter anything you wish here, but since you can add as many comment columns as you wish, there is no reason to use it for another purpose .
Code: The ID pointer of this ItemType, this pointer is used in many txt files (armor.txt, cubemain.txt, misc.txt, skills.txt, treasureclassex.txt, weapons.txt), never use the same ID pointer twice, the game will only use the first instance and ignore all other occurrences. ID pointers are case sensitive, 3-4 chars long and can contain numbers, letters and symbols.
Equiv1-2: This is used to define the parent iType, note that an iType can have multiple parents (as will be shown in the cladogram – link below), the only thing you must avoid at all cost is creating infinite loops. I haven't ever tested what happens when you create an iType loop, but infinite loops are something you should always avoid.
Repair: Boolean, 1=Merchants can repair this item type, 0=Merchants cannot repair this iType (note, this also refers to charges being rechargeable).
Body: Boolean, 1=The character can wear this iType, 0=This iType can only be carried in the inventory, cube or stash (and belt if it is set as “beltable” in the other item related txt files)
BodyLoc1-2: If you have set the previous column to 1, you need to specify the inventory slots in which the item has to be equipped. (the codes used by this field are read from BodyLocs.txt)
Shoots: This column specifies which type of quiver (“ammo”) this iType (in case it is a weapon) requires in order to shoot (you use the ID pointer of the quiver iType here).
Caution: The place it checks which missile to pick (either arrow, bolt, explosive arrow or magic arrow) is buried deep within D2Common.dll, the section can be modified, there is an extensive post discussing this in Code Editing. - Thanks go to Kingpin for spotting a silly little mistake in here.
Quiver: The equivalent to the previous column, in here you specify which weapon this quiver is linked to. Make sure the two columns match. (this also uses the ID pointer of course).
Throwable: Can this iType be thrown (determines whenever it uses the quantity and throwing damage columns in Weapons.txt for example). Allows quantity to be repaired, if repair=1.
Reload: Can the this item be re-stacked via drag and drop. 1=Yes, 0=No.
ReEquip: If the ammo runs out, the game will automatically pick the next item of the same iType to be equipped in it's place. 1=Yes, 0=No. (more clearly, when you use up all the arrows in a quiver, the next quiver, if available, will be equipped in its place).
AutoStack: Are identical stacks automatically combined when you pick the up? 1=Yes, 0=No. (for example, which you pick up throwing potions or normal javelins, they are automatically combined with those you already have)
Magic: Is this iType always Magic? 1=Yes, 0=No.
Rare: Can this iType spawn as a rare item? 1=Yes, 0=No. Note: If you want an item that spawns only as magic or rare, you need to set the previous column to 1 as well.
Normal: Is this iType always Normal? 1=Yes, 0=No.
Charm: Does this iType function as a charm? 1=Yes, 0=No. Note: This effect is hardcoded, if you need a new charm type, you must use the char iType in one of the equivs.
Gem: Can this iType be inserted into sockets? 1=Yes, 0=No (Link your item to the sock iType instead to achieve this).
Beltable: Can this iType be placed in your characters belt slots? 1=Yes, 0=No. (This requires further tweaking in other txt files).
MaxSock1, MaxSock25, MaxSock40: Maximum sockets for iLvl 1-25, 26-40 and 40+. The range is hardcoded but the location is known, so you can alter around the range to your liking. On normal, items dropped from monsters are limited to 3, on nightmare to 4 and on hell to 6 sockets, irregardless of this columns content.
TreasureClass: Can this iType ID Pointer be used as an auto TC in TreasureClassEx.txt. 1=Yes, 0=No. *Such as armo3-99 and weap3-99 etc.
Rarity: Dunno what it does, may have to do with the chance that an armor or weapon rack will pick items of this iType. If it works like other rarity fields, the chance is rarity / total_rarity * 100.
StaffMods: Contains the class code for the character class that should get +skills from this iType (such as wands that can spawn with +Necromancer skills). Note, this only works if the item is not low quality, set or unique. Note, that this uses the vanilla min/max skill IDs for each class as the range for the skill pool, so if you add new class skills to the end of the file, you should use automagic.txt instead
CostFormula: Does the game generate the sell/repair/buy prices of this iType based on its modifiers or does it use only the cost specific in the respective item txt files.
2=Organ (probably higher price based on unit that dropped the organ), 1=Yes, 0=No.
Note: Only applies to items that are not unique or set, for those the price is solely controlled by the base item file and by the bonus to price given in SetItems and UniqueItems txt files. The exact functionality remains unknown, as for example charms, have this disabled.
Class: Contains the class code for the class that should be able to use this iType (for class specific items).
VarInvGfx: This column contains the sum of randomly picked inventory graphics this iType can have.
InvGfx1-6: This column contains the file names of the inventory graphics that are randomly picked for this iType, so if you use columns 1-3, you will set VarInvGfx to 3 (duh).
StorePage: The page code for the page a vendor should place this iType in when sold, if you enable the magic tab in D2Client.dll, you need to use the proper code here to put items in that tab. Right now the ones used are weap = weapons1 and 2, armo = armor and misc = miscellaneous.
*eol: Always needs to be filled with a value (doesn't have to be 0) in order to prevent M$ Excel and other “re-format happy” spreadsheets from messing up the table bounds.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=369]Knowledge Base - ItemTypes.txt[/url]

View File

@ -0,0 +1,420 @@
# D2Mods Knowledge Base: Article 370
# Title: SkillDesc.txt File Guide (v. 2)
# URL: https://d2mods.info/forum/kb/viewarticle?a=370
SkillDesc.txt File Guide (v. 2)
Written by: Nefarius
Written on: Fri Nov 18, 2005 2:52 am
Last modified: Tue Sep 17, 2019 9:47 pm
Views: 28671
Description: by Ric Faith, restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
SkillDesc.txt File Guide
& descline reference by RicFaith
Overview:
Skilldesc is an important part of the skill making process. It gives the modder the ability to fully customize the skill descriptions of his skills. It is also important for the placement and arrangement of skills on the skilltrees.
Files used by SkillDesc:
Missiles.txt
MonStats.txt
Skills.txt
String.tbl
Expansionstring.tbl
Patchstring.tbl
Note:
Patchstring > Expansionstring > String
This means that any entry in Patchstring will overwrite the an entry of the same index in Expansionstring or String, and any entry in Expansionstring will overwrite another entry sharing the same name in String. Thus to find the most recent string, you should check in the order stated above.
Naming convention:
So as to make certain things clearer, and to simplify this File Guide, here are some naming conventions that I will use while describing:
string(s) - refers to an entry in any of the .tbl files
tree(s) or page(s) - the skill trees available to the character
shortcut(s) - the list of skills that show up when you press 'S'
charscreen - character screen, shows up when you press 'C'
selected skill - one of the two active skills that are set to your mouse buttons
--------------------
skilldesc: Name of the skill description, referenced by skills.txt (col D).
--------------------
SkillPage: (Allowed values = 0 - 3) Determines which page the skill will show up.
```
0 - not on trees
1 - bottom page
2 - middle page
3 - top page
```
SkillRow: (Allowed values = 0 - 6) Determines which row the skill will show up.
```
0 - not on page
1 - top row
6 - bottom row
```
SkillColumn: (Allowed values = 0 - 3) Determines which column the skill will show up.
```
0 - not on page
1 - left column
2 - middle column
3 - right column
```
ListRow: (Allowed Values = -1 - 4) Determines which row the skill will show up in the shortcuts
```
-1 & every other value - skill will not shot up
0 - reserved for basic attacks and unsummon
1-3 - for skills, from bottom up, usually the same value as SkillPage, but not necessarily
4 - reserved for Identify and Town Portal
```
ListPool: (Allowed Values = 0 - 2) Used only by Identify and Town Portal scrolls.
```
0 - Everything else
1 - scroll of identify
2 - scroll of town portal
```
IconCel: (Allowed Values = 0 - X) (user defined, read below)
Used to determine the icons (usable and unusable) used by the skill. Value that is put here determines the usable icon, and the next icon will be the unusable icon.
Icons always come in pairs, so if you're making your own skill icons, do put them in the right order.
If skill is a class skill, icons will be taken from :
dataglobaluispellsXXskillicon.dc6 where XX is -
```
XX Class
am Amazon
as Assassin
ba Barbarian
dr Druid
ne Necromancer
pa Paladin
so Sorceress
```
If skill is not a class skill, icons will be taken from :
dataglobaluispellsskillicon.dc6
str name: This is the string that is used as the skill name in the trees, the shortcuts and the selected skill.
str short: This is the string that is used as the skill description in the shortcuts and the selected skill.
str long: This is the string that is used as the skill description in the trees.
str alt: This is the string that is used as the skill name in the charscreen.
str mana: Usual values = StrSkill3 or (blank)
Even if your skill has no mana cost, putting a string here will not display a 0 mana cost. You can use StrSkill3 ('Mana Cost: ') or your own fancy string for mana cost.
Eg. Raven has its own mana cost string ('Mana Cost Per Raven')
descdam: Allowed values = 1 - 24 or (blank)
If your skill deals damage, then you need to use this to tell skilldesc how to go about calculating the damage. Here is a list of the various values for descdam.
```
descdam   description
1   attack
2   kick
3   throw
4   left hand throw
5   check dmg cols
6   arrow with explode
7   attacks w dmg increases
8   inferno type dmg
9   blaze,firestorm
10   smite
11   vengeance
12   blessed hammer
13   double throw
14   hunger
15   kick combo
16   kick AoE
17   cstrike
18   royal strike
19   2h attacks
20   assn chargeups
21   lightbolt
22   javelin with explode
23   rabies
24   blade fury
```
Some skills have their own special descdam, so you should check the most relevant skill to yours to see if it requires something different, otherwise it's almost always 5.
ddam calc1 / ddam calc2 If your skill has an increase in damage, you'll need to fill in one or both of these columns. The resulting damage is given by this formula:
Damage = (Original Damage) * (100 + ddam calc1)/100 + ddam calc2
Thus if your skill has a %age increase in damage, put the increase or calc in ddam calc1. Or if your skill has a flat +X increase in damage, put the increase or calc in ddam calc2.
pXdmelem / pXdmmin / pXdmmax where X = 1 - 3
These are only used by the Assassin charge-up attacks. These columns describe the necessary details.
pXdmelem - The element type for that charge
pXdmmin - Minimum damage for that charge
pXdmmax - Maximum damage for that charge
descat: (Allowed values = 1 - 5 or (blank))
If your skill has an increase in attack rating, you will need to fill this column. I can't see any difference between 1 and 2, so I guess you should look at the skill that is closest to yours.
```
descatt  description
1   increase in attack rating
2   increase in attack rating
3   throw
4   left hand throw
5   kick finishers
```
descmissileX where X = 1 - 3 In the case where your damage, duration or other values are taken from missiles, you will need to put the primary missile in descmissile1.
Currently, it seems that the descmissile2 and descmissile3 are only used by assassin charge-ups, but I think you should be able to put other missiles here for description too.
From here, the real stuff begins. Since it is highly repetive in nature, I will explain it differently.
There are 3 main sections for descriptions, desc, dsc2 and dsc3. First a breakdown of where these descriptions show up.
desc: Shows up in trees, shortcuts and selected skill.
dsc2: Shows up in trees, shortcuts and selected skill.
dsc3: Sshows up in trees only.
Next, I'll describe what the different descriptions show.
Shortcuts and Selected skill - desc and dsc2 show current level stats only.
Trees -
desc: Show current and next level stats
dsc2: Show current stats
dsc3: Show current stats (but is currently used for synergies)
For a more precise layout of the stats, see Appendix A below.
If you leave a set blank, they will simply be ignored. So you can fill any
sets of columns, the blank ones will be skipped.
Now, we will cover the different parts of a description. I will use just 1 set of columns for simplicity, the effect is the same for all columns. Each set of columns will have:
descline, desctexta, desctextb, desccalca, desccalcb
with various numbers appended to them.
descline: (Allowed values = 1 - 75 or (blank))
This tells skilldesc the format of the description, which values to take and which order to place them. Read further for an example. All desclines and their usage can be found in Appendix B.
desctexta / desctextb: These are strings that may be filled or left blank.
Some desclines are not picky about whether these are filled, but since there are so many desclines, you can find something that matches your needs quite closely.
desccalca / desccalcb: These are numbers or calcs that may be filled or left blank.
Similar to desctexts, desccalcs may be treated as empty or 0 if not present, so if you don't need the extra space, choose a suitable descline.
--------------------
In Appendix B, I used the following notation:
S1 & S2 refer to desctexta and desctextb respectively. S for String because that is what these two columns are.
C1 & C2 refer to desccalca and desccalcb respectively. C for Calc
I used S1,S2,C1,C2 because these are immediately identifiable. Most of the desclines come with fixed text. You can change the 'fixed' part in the .tbl files, but you'll be changing them for all skills that use that descline. Anyway there are so many workarounds that you really don't have to change it, just use another descline.
Example 1:
I'll use descline 3 as an example.
Descline 3 gives the following output: S1C1S2
This means that if my input is
S1 = 'Good'
S2 = 'Nothing'
C1 = 4
C2 = 365
The result will be 'Good4Nothing'. There are no spaces, because the output merely concatenates everything. C2 is ignored because it is not included in the output.
If S1 was blank, the output is '4Nothing'
If S2 was blank, the output is 'Good4'
If C1 was blank, the output is 'GoodNothing'
I'm sure that is quite clear, now on to some of the more complex desclines
Example 2:
Some desclines don't use string or calcs, so I'll show a nice one for poison skills.
Descline 14 has the following output:
Poison Damage: X-Y
over Z seconds
Yes, some desclines produce more than one line, but they're usually a little hardcoded. This descline reads the values of EMin, EMax and ELen from skills.txt and does some math before displaying the values.
For this example, I'll use Poison Nova Lvl 1
From skills.txt:
HitShift = 4
EMin = 14
EMax = 25
ELen = 50
First, some things you have to know about the values in Len, this value is in frames, and Diablo has 25 frames to a second. Thus Poison Nova does damage for 2 seconds.
Next, for HitShift, this is because Blizzard uses 8 bits of accuracy for HitPoints, Mana and Stamina. HitShift for Poison Nova is 4, so the damage is 'divided' by 2^4 = 16.
Anyway, back to the descline and the formula.
The output has X,Y and Z, this is because even these values are not raw values. Here's how we calculate them:
X = EMin*ELen/16 = 43
Y = EMax*ELen/16 = 78
Z = ELen/25 = 2
Last thing to note, Blizzard rounds everything down to the integer. So 3/4 = 0, 41/40 = 79/40 = 1.
In the end, we get the final output:
Poison Damage: 43-78
over 2 seconds
--------------------
Conclusion:
Skilldesc can get a bit tricky, and sometimes some things just don't work so well. My advice is that even though some of the desclines may look perfect for your skill description, if they don't work, try using some of the more common ones. Some of the desclines are not used in skilldesc, I found them by trying every number. Some are only used by one skill, so I classed it as being specific, though they may still be able to work, don't get too worked up when it doesn't. In my opinion, you can do a lot with just the basic few. You can do your own calcs and display a raw number instead of leaving it to the hardcoded desclines. But it's up to the individual modder
----------------------------------------
Appendix A: Layout of Skill Description on the Tree.
-----
str name
str long
(all dsc2 lines)
Current Level: X
(all desc lines)
Next Level: X+1
(all desc lines)
(all dsc3 lines)
-----
As mentioned earlier, synergies are using dsc3 lines, so they'll be shown right at the bottom. If you want some stats that only show for current level, use dsc2. If you want stats that show for current and next levels, use desc.
----------------------------------------
Appendix B: List of desclines
This list is a bit long (75 entries), so I put it in a code. I'm thinking of making an excel page that allows you to put values in to see the result, but there may or may not be a need for it. I'll see how it goes. If you think that it'd be good, PM me so I know there's a demand.
Explanations:
descline = descline number
formula used = result from the inputs
calc/desc = in the event that the numbers are not directly related to inputs S1,S2,C1,C2, I explained it here
elem = if this descline refers to a specific elem, because of the calc method or if it can take any elem based on the EType in skills.txt, then I'll state it here
reference = the files it references, such as skills.txt, missiles.txt etc.
Appendix C: Color Codes
The values that you can put in the C1 column for skilldesc 40 and a couple of others can be found here:
```
0 - Light Gray (normal text)
1 - Red
2 - Bright Green (Set Items)
3 - Blue (Magic Items)
4 - Gold (Unique Items)
5 - Dark Gray (Socketed/Ethereal Items)
6 - Transparent (Text Doesn't Show)
7 - Tan
8 - Orange (Crafted Items)
9 - Yellow (Rare Items)
```
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=370]Knowledge Base - SkillDesc.txt File Guide (v. 2)[/url]

View File

@ -0,0 +1,496 @@
# D2Mods Knowledge Base: Article 371
# Title: Formulae Guide (by Xeno and Kingpin)
# URL: https://d2mods.info/forum/kb/viewarticle?a=371
Formulae Guide (by Xeno and Kingpin)
Written by: Nefarius
Written on: Fri Nov 18, 2005 12:48 pm
Views: 22192
Description: This tutorial (or guide rather) will teach you how to properly use the powerful formulae calculations now possible in D2.
Categories: Tutorials (1.1x) - Skill Mechanics
A short intro. Some days ago I realized that in Blizzard text files one can use not only immediate numeric values (e.g. 150 or 3.14), but also formulae, which will be interpreted in the execution time, so being much more flexible (you can see examples below). This discovery was a great shock for me, because I couldn’t even imagine all the possibilities, versatile gameplay changes, when can be implemented due to using such formulae (skill synergy from clvl, “reduce casting delay” or “increase curse effectiveness” affixes, anyone ;) ) I became very interested in this theme, maybe because professional (programmer) motives. And so I decided to research this aspect of game mechanics and to write a guide on it in order to clear out all the things and to consolidate all the info about formulae syntax in one topic.
This is my first guide at the Phrozen Keep. I’m a bit anxious about it :lol: But I know that our senior colleagues will correct and append this post if necessary. [I've marked my questions with color] Sorry for my poor English in advance. So it begins…
[1.10] Formulae guide
1. What is the benefit of using formulae in txt files?
The main idea of my answer to this question is that using formulae (i.e. through soft coding), one can implement things that for sure seem to require code editing. Some examples of such ideas:
a) various softcoded skill system changes, e.g. Char’s skill system (d2:elements mod), i.e. each skill requires [slvl] skill points to advance to [slvl] level, and the first skill point always costs required character level (e.g. 12 for Zeal or 30 for Frozen Orb), so you need hard investments into the skill to maximize it. I can also mention Will’s ideas (take a look through “One skill point per two levels, per skill...” post in General Mod Making);
b) even more deep skill interdependencies: 1)adding and ability of Skill Masteries to reduce casting delay, increase missile speed, widen aura range, e.t.c. only for particular skills, 2)making your minions using and gaining benefits from your passive abilities and active skills, 3)adding and modifying skill synergies not only for damage but also for versatile (each possible in the game) skill-specific parameters;
c): making multiple skill synergies ((C) xeno, 2004) (it’s somehow similar to skill sets with partial and full set bonuses);
et cetera, et cetera... (listing of such ideas is worth hundreds of separate posts in the appropriate forums).
2. What files are used for this and what files allow using formulae?
You’ll need to look through ItemStatCost.txt (ISC), Skills.txt (SK), Missiles.txt (MS) for identifiers (string entries) plus MissCalc.txt (MSC) and SkillCalc.txt (SKC) for using predefined internal functions. I guess almost each file, where immediate numeric values are applicable, allows using formulae. But to know this for sure, I’m now going to test some of them, including the most important: SK and MS.
3. Formulae description.
Now I’ll try to give a recursive definition (sounds scary, yeah?) and detailed description (examples are included, too) of Diablo II-formulae. Such formulae consist of some simple parts. So let’s study them firstly.
Simple formula is:
1) an immediate integer or real value.
2) a reference to a predefined (i.e. hard coded) formula from SKC or MSC (such references can ONLY be used in SK and MS, respectively). [can we define our own formulae in these files?] Detailed description of available formulae is available in Appendix A.
3) a reference to a property of skill, stat or missile. [I bet we can also reference monster props or particular item props, but I haven’t found it out yet] Such reference can be written in one of the three possible ways:
stat(‘’.),
skill(‘’.),
[missile? miss? (both do not work)](‘’.),
where , and stand for ISC, MS and SK string entries (they MUST be written in single quotas, e.g. stat(‘level’.accr) or skill(‘Holy Shock’).edmn) and is a reserved word which indicates the particular property of stat, skill or missile, we want to reference. You can see the list and detailed descriptions in the Appendix B.
Complicated formulae (more general case) are formed from simple ones with the usage of arithmetic operators (which include :'-', :'+', :'-', :'*', :'/' and :'^'. Other c-style operators don’t seem to be working :( ), standard functions (see Appendix C) and, of course, parentheses. Examples:
Skill(‘FireStorm’.clc1)*(Skill(‘FireStorm’.edmn)+ Skill(‘FireStorm’.edmx))/2 stands for average effective damage of firestorm skill (number of snakes * average dmg);
[Default value]/((100+Skill(‘Fire Mastery’)*5)/100)) If placed into “delay” column and appropriate skill row the skill’s casing delay will be reduced by Fire_Mastery_slvl*5 percent;
Stat(‘nextexp’.accr)-Stat(‘experience’.accr) stands for the your experience rest to level-up.
But all formulae syntax wouldn’t be SO flexible, if we can’t use conditional formulae. Let’s proceed by studying them.
4. Conditional formulae. Conditions are special types of formulae, but with one important difference: their values are interpreted in a special way: 0 means “false”, and 1 (and any non-zero value) stands for “true”. Both conditions and formulae can be very complicated and both of them consist of several simple parts. Let us study them firstly. Simple condition is:
1)an immediate numeric value (zero stands for “false”, and any non-zero value stands for “true”);
2)a relation of two expressions, formed using ‘>=’, ‘’,’Complicated conditions consist of simple ones with the usage of logical conjunctions: OR & AND (‘+’ and ‘*’, respectively. C-style syntax: ‘&&’ and ‘||’ doesn’t work :( ). Simple maths shows us that complicated conditions cover all possible variants of conditions in txt-files. Examples:
(stat(‘level’.accr)>=54)*(stat(‘strength’.accr)>=25)*(stat(‘dexterity’.accr)>=136)) if this condition is true, then the character can equip Phase Blades (he has at least 54 clvl, 25 str and 136 dex simultaneously);
(skill(‘Cold Mastery’.blvl)!=0)+(skill(‘Fire Mastery’.blvl)!=0)+(skill(‘Lightning Mastery’.blvl)!=0) this condition is true, if at least one of sorceress masteries has at least one skillpoint invested.
Conditional formulae have the following format:
condition?cfla1:cfla2.
Then this formula has a value of cfla1 if the condition has a value of “true” (has non-zero value), else it has a value of cfla2. Keep in mind that both condition and formulae can be conditional formulae, too. Examples:
(stat('item_cannotbefrozen'.accr)!=0)?(dm34+50):dm34 if placed into column “aurastatcalc1”, row “Resist Cold” of SK, aura “Resist Cold” will grant player additional 50% Cold Resist, if he can’t be frozen;
(lvl if placed into column “skpoints” and appropriate skill row of SK, this formula will make the skill require 3, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12… skill points to advance to 0..20th skill level (view details in “One skill point per two levels, per skill...” post in GMM);
Appendix A. MS and SC formulae.
These formulae allow referencing to certain columns in Missiles.txt and Skills.txt, respectively, so that you can, for example, use some skill-specific parameters to adjust skill damage or increase passive skill effectiveness, using active skills’ stats. They are mostly self-explanatory, so I’ll describe only not so obvious and some details. Also I don’t want to duplicate Skills.txt and Missiles.txt guides, so there won’t be a detailed explanation of these files.
SkillCalc.txt formulae (MissCalc.txt ones are analogical):
par# References skill function parameter (“param#” columns of SK);
ln## LiNear (not logarithmic) formula. Returns value of (par#1)+[slvl]*(par#2), i.e. ln12=par1+lvl*par2. Gives a constant level bonus to a stat (e.g. firestorm’s number of snakes: 3+lvl*0);
dm## DiMinishing returns. Has a value: (110*[slvl] * (par#2-par#1))/(100 * ([slvl]+6)) + par#1, i.e. dm34=(110*lvl*(par4-par3))/(100*(lvl+6))+par3. Used, when you need greatly decrease level bonus to a stat, if the skill have been heavily invested (e.g. resist cold resist bonus: (110*lvl*(150-35))/(100*(lvl+6))+25);
lvl, blvl Effective (modified by items) and Base skill level (e.g. all synergy bonuses (except ones from Prayer) use “blvl” – number of physically invested skill points);
ulvl Unit LeVeL. Stands for player or monster level. Syntactically equals to stat(‘level’.accr);
clc#, ast#, pst# References to SK’s columns “cltcalc#”, “aurastatcalc#” and “passivestatcalc#”, respectively;
skpt Required SKillPoinTs property (“skpoint” column in SK). Allows adjusting how many skillpoints do you need to invest in a skill in order to advance in it (see examples for conditional formulae);
Appendix B. Qualifiers for “stat”, “skill” and “missile?”.
With “stat” keyword one can use the following qualifiers: (thanks to adamantine):
base BASE (unmodified) value for the stat. Consult ItemStatCost.txt for more details;
accr Effective (modified by items) value;
mod Modification value. Equals to stat.accr-stat.base;
Qualifiers for skills and missiles are contained in SK and MK, respectively. Consult Appendix A for more details.
Appendix C. Standard functions.
(quoting adamantine)
rand(#,#) selects random number from two choices (don’t seem to be working);
min(#,#) always uses the lowest number;
max(#,#) always uses the highest number;
Appendix D. Formulae calculations.
Integer values. Each step of formula calculations operates only with integer values. If a temporary result has a non-zero fractional part, it is truncated. So, it’s erroneous to use “1/3*lvl” formula (it’ll always return zero). Instead of this use “lvl/3”.
Integer overflows. Game stores every temporary result in a signed dword (-2147483648…2147483647). And if the number doesn’t lie in these bounds, we get a rollover (e.g. “2147483647/1000000000” equals 2, but “2147483648/1000000000” equals -2). After calculating the final result game engine tries to store it in the appropriate variable. But the problem is that its size may be less than dword, so we’re likely to get a rollover then. Consult ISC for determining exact stat size or simply make some experiments.
Errors in formulae. 1) If game finds erroneous function, e.g. “man” instead of “min”, it doesn’t change the parameters and returns the last parameter; 2) If game can’t recognize an operator (e.g. if we’ll try to use c-operator ‘++’), it considers the whole formula to be erroneous and sets its value to zero; 3) Division by zero will return zero (e.g. “50/0” equals zero and “50/0+10” equals ten(!)); 4) Referencing self in a formula (e.g. “10+ast1” in “aurastatcalc1” column) will surely crash the game.
Appendix E. Known bugs.
1)Diablo II formulae cannot be more than 255 symbols length (the rest of the formula is truncated). But you can make a clever trick, using predefined formulae from MSC or SKC or defining your own in unused param# fields.
2)Sometimes you can get a rollover due to an arithmetic overflow (see Appendix D).
3)Some cells in text files may not recognize formulae properly (e.g. “Vel” column in MS).
4)Sometimes stats, modified by formula aren’t refreshed correctly, until your reset the skill or save&exit.
Appendix F. Calc Fields (by Kingpin).
Here is what fields that is calc fields in 1.10.
missiles SrvCalc1
missiles CltCalc1
missiles $HitCalc1
missiles CHitCalc1
missiles DmgCalc1
missiles DmgSymPerCalc
missiles EDmgSymPerCalc
skills prgcalc1
skills prgcalc2
skills prgcalc3
skills auralencalc
skills aurarangecalc
skills aurastatcalc1
skills aurastatcalc2
skills aurastatcalc3
skills aurastatcalc4
skills aurastatcalc5
skills aurastatcalc6
skills passivecalc1
skills passivecalc2
skills passivecalc3
skills passivecalc4
skills passivecalc5
skills petmax
skills sumsk1calc
skills sumsk2calc
skills sumsk3calc
skills sumsk4calc
skills sumsk5calc
skills cltcalc1
skills cltcalc2
skills cltcalc3
skills perdelay
skills skpoints
skills calc1
skills calc2
skills calc3
skills calc4
skills ToHitCalc
skills DmgSymPerCalc
skills EDmgSymPerCalc
skills ELenSymPerCalc
skilldesc ddam calc1
skilldesc ddam calc2
skilldesc p1dmmin
skilldesc p1dmmax
skilldesc p2dmmin
skilldesc p2dmmax
skilldesc p3dmmin
skilldesc p3dmmax
skilldesc desccalca1
skilldesc desccalcb1
skilldesc desccalca2
skilldesc desccalcb2
skilldesc desccalca3
skilldesc desccalcb3
skilldesc desccalca4
skilldesc desccalcb4
skilldesc desccalca5
skilldesc desccalcb5
skilldesc desccalca6
skilldesc desccalcb6
skilldesc dsc2calca1
skilldesc dsc2calcb1
skilldesc dsc2calca2
skilldesc dsc2calcb2
skilldesc dsc2calca3
skilldesc dsc2calcb3
skilldesc dsc2calca4
skilldesc dsc2calcb4
skilldesc dsc3calca1
skilldesc dsc3calcb1
skilldesc dsc3calca2
skilldesc dsc3calcb2
skilldesc dsc3calca3
skilldesc dsc3calcb3
skilldesc dsc3calca4
skilldesc dsc3calcb4
skilldesc dsc3calca5
skilldesc dsc3calcb5
skilldesc dsc3calca6
skilldesc dsc3calcb6
skilldesc dsc3calca7
skilldesc dsc3calcb7
weapons len
weapons calc1
weapons calc2
weapons calc3
weapons spelldesccalc
armor len
armor calc1
armor calc2
armor calc3
armor spelldesccalc
misc len
misc calc1
misc calc2
misc calc3
misc spelldesccalc
magicsuffix mod1param
magicsuffix mod2param
magicsuffix mod3param
magicprefix mod1param
magicprefix mod2param
magicprefix mod3param
automagic mod1param
automagic mod2param
automagic mod3param
uniqueitems par1
uniqueitems par2
uniqueitems par3
uniqueitems par4
uniqueitems par5
uniqueitems par6
uniqueitems par7
uniqueitems par8
uniqueitems par9
uniqueitems par10
uniqueitems par11
uniqueitems par12
sets pparam2a
sets pparam2b
sets pparam3a
sets pparam3b
sets pparam4a
sets pparam4b
sets pparam5a
sets pparam5b
sets fparam1
sets fparam2
sets fparam3
sets fparam4
sets fparam5
sets fparam6
sets fparam7
sets fparam8
setitems par1
setitems par2
setitems par3
setitems par4
setitems par5
setitems par6
setitems par7
setitems par8
setitems par9
setitems apar1a
setitems apar1b
setitems apar2a
setitems apar2b
setitems apar3a
setitems apar3b
setitems apar4a
setitems apar4b
setitems apar5a
setitems apar5b
gems weaponmod1param
gems weaponmod2param
gems weaponmod3param
gems helmmod1param
gems helmmod2param
gems helmmod3param
gems shieldmod1param
gems shieldmod2param
gems shieldmod3param
runes t1param1
runes t1param2
runes t1param3
runes t1param4
runes t1param5
runes t1param6
runes t1param7
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=371]Knowledge Base - Formulae Guide (by Xeno and Kingpin)[/url]

View File

@ -0,0 +1,825 @@
# D2Mods Knowledge Base: Article 383
# Title: MonStats.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=383
MonStats.txt
Written by: Nefarius
Written on: Wed Jun 21, 2006 5:18 pm
Views: 7824
Description: by Fecesfaerie [written 2000, modified by Nefarius 2006]
Categories: File Guides (1.00-1.06x)
In this tutorial, I'll provide you with all the information I've uncovered so far in the
monstats.txt file in Diablo 2. This tutorial is largely incomplete as there are still
numerous columns that I don't yet understand. Hopefully, it will be completed in time
with further study and the help of any other hackers out there willing to share their
secrets. The first part of this tutorial simply lists all the columns in this file by name and
gives a description of what they do if known. Since some of us use a spreadsheet
program like excel to view and edit these files, I'll also refer to these columns by the
letter at the top of the spreadsheet as well as their name. The second part of this tutorial
will go over a few simple tricks on what you can do with this file.
Part I:
Class (column A): This determines what name appears over the monster's head when
you move the mouse over it.
Namco (column B): I've heard (but not extensively tested) that this determines what
animation file is generated for a monster. (Nefarius: infact this is controlled by the token column in MonType.txt - not this column.)
Type (column C): Identifies monster by type.
Discriptor (column D): Short comment to describe any special or unusual attribute of this
monster. For example, all the giant maggot monsters can lay eggs, so that ability is listed
in this column beside their name.
Base ID (column E): A simple number that identifies what type of enemy this is. All
monsters of the same type generally have the same ID. This ID seems to determine what
kind of abilities or skills the game generates for that monster when it appears in the game.
For example, you may have noticed the monster entries for the Rogue Scout, Rogue
Hireling, and Rogue Town. They each have different ID's because they have some
different behavior. The Rogue Town monsters are the rogues in the Act I town who
simply stand there. A Rogue Scout and Rogue Hireling will move around and shoot
nearby monsters, but the Rogue Hireling seems different because it seems to reference
other files besides this monstats.txt to get all of its abilities (such as randomly generated
levels and magic arrow attacks). Changing these ID's causes the game to expect later
columns to have specific things set for them (like certain skills), so be aware of this if you
decide to go manipulating these numbers.
Spawned (column F): This value is set for zero or one for every monster. A one means
that monster can be randomly generated in a level. A zero means that monster can't. If
you want monsters like bosses to appear in areas other than they normally do (like the
Cow Level) then set this value to one. In part two, I'll describe what else needs to be
done to get that enemy to appear in the level of your choosing.
Beta (column G): Determines if the monster appeared in the beta version of the game.
Seems to be only for reference.
Code (column H): Another identifier for a monster along with Base ID. (Nefarius: controlls from what token-folder the palshift.dat is picked.)
Client Only (column I) and NoMap (column J): These are set at either zero or one. Not
exactly sure what they do, but every monster either has both set to zero or both set to one.
Only the little critters that appear running around (bats, rats, scorpions, etc.) have this set.
It seems to be special settings for monsters that don't do much more than act as scenery.
Size X, Size Y, Height, Overlay Height (columns K-N): Determines the physical
dimentions of the monster. (Nefarius: these columns function as for 1.10+ [MonStats2.txt])
Velocity (column O): The walking speed of the monster.
Run (column P): The running speed of the monster. There's a later column that controls
if the monster has the ability to run at all. If it doesn't, this column is unused for that
monster.
Rarity (column Q): Seems to control frequency of appearance. (Nefarius: not used prior to 1.10)
Level, Level(N), Level(H) (columns R-T): Determines what level this monster is on in
each difficulty.
Melee Rng (column U): Determines the reach of a monster's melee attack. The higher
the value, the further distance a monster can hit you with its melee attack.
Min Grp (column V): Determines the minimum number of monsters of this type that are
spawned at a time. You've noticed that some monsters (like cows) appear in larger
groups than others. Most monsters have this set around 1 to 3. Hell Bovines have it set
at 5. Increase this number to make larger minimum monster groups.
Max Grp (column W): Determines the maximum number of monsters of this type that
are spawned at a time. Make sure this value is the same or higher than Min Grp if you
decide to change these values. Most monsters have this column set around 2 to 4. Hell
Bovines have it set at 10.
(Nefarius: pre 1.10 it was impossible to modify which components a monster has, it was handled by a hardcoded table - the columns below are used after that table has been loaded, and thus serve no real purpose. )
HD (column X): Stands for head. Not sure of its significance. I think it has something to
do with wheather or not that enemy can have something equipted on its head.
TR (column Y): Stands for torso.
LG (column Z): Stands for legs.
RA (column AA): Unknown. (Nefarius: right arm )
LA (column AB): Unknown.(Nefarius: left arm )
RH (column AC): Unknown.(Nefarius: right hand )
LH (column AD): unknown.(Nefarius: left hand )
SH (column AE): Stands for shield. I think it determines if the monster can equip a
shield or not.
S1 (column AF): Some kind of setting for specials. Not sure what it means. (Nefarius: overlay 1)
S2 (column AG): unknown(Nefarius: overlay 2)
S3 (column AH): unknown(Nefarius: overlay 3)
S4 (column AI): unknown(Nefarius: overlay 4)
S5 (column AJ): unknown(Nefarius: overlay 5)
S6 (column AK): unknown(Nefarius: overlay 6)
S7 (column AL): unknown(Nefarius: overlay 7)
S8 (column AM): unknown(Nefarius: overlay 8)
TotalPieces (AN): unknown
(Nefarius: number of components)
SpawnComponets(AO): Unknown, but every monster has it set to zero, so it's probably
not important.
BaseW (AP): Base weapon that the monster carries when it appears. Several monsters
have an hth listed in this column. This means either the monster uses no weapon, or the
weapon it uses is not referenced in this file (the rogue scouts and hirelings have hth set
here).(Nefarius: back in classic changing this allowed you to make necro skeletons use a bow etc, never featured in a mod, but doable.)
AIParam 1-AIParam 5 (columns AQ-AY): These columns determine the AI parameters
for the monsters. The comment field after some entries give a description of what the AI
parameter causes the monster to do.
ModeDH (column AZ): This is set to one if the monster can die. It's set to zero if it
can't. Some monsters, like rogues or other hirelings that appear in town may have this
set at zero. You can set it to one without causing any problems, but to make that monster
actually killable you also have to set a couple of other columns that appear later.
ModeN (column BA): unknown. (Nefarius: neutral)
ModeW(column BB): Determines if the monster can walk or move. One means yes, zero
means no.
ModeGH(column BC): GH stands for get hit. This column determines if a monster can
be attacked. One means yes; zero means no.
ModeA1(column BD): Determines if the monster has a physical attack (usually melee
but not necessarily). One means yes; zero means no.
ModeA2(column BE): Determines if the monster has a second physical attack.
ModeB (column BF): Determines if a monster can block a physical attack
ModeC (column BG): Seems to determine if a monster casts spells or not.
ModeS1-ModeS4 (column BH-BL): unknown(Nefarius: Skill1 to Skill4 anims)
ModeDD (column BM): Another column that determines if a monster can die or not. As
usual, one means yes; zero means no. (Nefarius: has corpse, yes/no)
ModeKB (column BN): Determines if a monster can be knocked back by certain attacks.
ModeSQ (column BO): Some kind of sequence field. Not sure what it controls. (Nefarius: can use skill sequence yes/no)
ModeRN (column BP): Determines if a monster can run or not.
ElMode (column BQ): Some kind of setting for an element attached to a monster that
used when it attacks you.
Eltype (column BR): The type of element associated with that monster. An example
would be the Claw Vipers who have the ability to freeze a character when they attack
them. Their element type is cold.
ElOver (column BS): unknown (Nefarius: display an overlay when using element)
ElPct (column BT): Percent chance that the particular element will take effect when the
monster attacks.
ElMinD (column BU): Minimum damage caused by the elemental attack.
ElMaxD (column BV): Max damage caused by the elemental attack.
ElDur (column BW): Duration that the elemental attack has affect over the targeted
character. Cold and Poison attacks have something set in this column. The actual
duration of this attack is (number in column / 25= #seconds element has effect).
(Nefarius: the following columns are missile indexes, FFFF = no missile)
MissA1 (column BX): Not sure beyond that it has some association with an enemy's first
physical attack.
MissA2 (column BY): Has something to do with enemy's second attack.
MissS1 (column BZ): unknown
MissS2 (column CA): unknown
MissS3 (column CB): unknown
MissS4 (column CC): unknown
MissC (column CD): unknown
MissSQ (column CE): Somehow relates to whatever a monster's sequence is.
A1Move (column CF): unknown
A2Move (column CG): unknown
S1Move (column CH): unknown
S2Move (column CI): unknown
S3Move (column CJ): unknown
S4Move (column CK): unknown
Cmove (column CL): Not set for any monster, so doesn't seem to be used.
Align (colimn CM): This determines if a monster is an enemy or an ally. You can have a
lot of fun with this column. Set it to one, and that monster will fight other monsters and
not attack you. Set it to zero to make any monster an enemy.
IsMelee (column CN): Determines if the monster is a melee fighter. (Nefarius: spawn with multi-shot? yes/no)
IsSel (column CO): Determines if the monster is 'selectable.' What that means is, if it's
set to one then moving the cursor over that monster's body will cause his/her name to
display. It will also allow you to target a monster with attacks by moving the mouse
cursor over it.
IsSel2 (column CP): Not sure what this one does. Only a few NPC's have it set though.
NeverSel (column CQ): This determines if the monster can not be selected. It's basically
the opposite of IsSel. In fact, if this column is set to one for a monster, than even if you
set IsSel to one, you still can't highlight that monster by moving the mouse over it.
CourpseSel (column CR): This determines if the monster's courpse can be selected for
certain spells after it dies. Examples of spells are, Raise Skeleton, Corpse Explosion,
Find Potion, and Grim Ward. Set it to one to allow a character to use this skill on that
dead monster. You may notice that the Abyss Knight in Act 4 can have some courpse
selected spells cast on it, but a Necromancer can't revive it. There's another field that
controls that. It appears towards the end of the file.
IsAtt (column CS): This determines if the monster can be attacked.
IsNPC (column CT): Determines if the monster is an NPC or not.
IsCritter (column CU): Determines if the monster is a critter. Critters are those little
crawling monsters like scorpions and rats.
InTown (column CV): Determines if the monster can appear in or enter a town. Set it to
one for an enemy monster and it'll walk right into town to chase you. It won't be able to
attack you in town though.
Bleed (column CW): Determines if the monster bleeds when you attack it.
Shadow (column CX): Determines if the monster casts a shadow.
Light (column CY): This determines how much of a light radius the monster creates
around him. The higher the number, the greater the light it creates.
NoUniqueShift (column CZ): unknown (Nefarius: prevent bosses from using RandTransforms.dat)
CompositeDeath (column DA): unknown (Nefarius: death anim composed of more then one component.)
Skill1 (column DB): This is the first skill that a monster possesses. You can look in
skills.txt to see a full listing of all skills in the game. Each skill has an ID number. That
id number is what appears in this file. One thing to note is that changing the skill number
in this column does not seem to affect what skill the monster actually possesses. I think
the skill number is listed here just for reference, and the actual monster's skills is
determined by its ID number.
Skill1Seq (column DC): Some kind of sequence involved with a skill. I haven't messed
with this field.
Skill1Lvl (column DD): What skill level the first skill is on. Monsters have levels
associated with their skills just like characters do. Changing this value will change how
strong that skill is for the monster.
Skill2-Skill5, Skill2Seq-Skill5Seq, Skill2Lvl-Skill5Lvl (columns DE-DP): Same as the
fields for the first skill. They just affect the 2nd, 3rd, 4th, and 5th skills a monster has.
LightR: (column DQ): I haven't messed with this one, but I imagine it stands for light
red, and affects the color of the monster.
LightG: (column DR): Stands for light green.
LightB: (column DS): Light blue.
Damage Resist (column DT): Determines what percentage of a character's attack does
not hurt the monster. For example, if you hit the monster for 200 points of damage, and
the monster had a damage resist of 10, then the monster would lose 180 hit points.
Magic Resist (Column DU): Determines what percentage of magic damage does not
affect the monster. I'm not sure if magic resistance works as a general resistance towards
all magic (including poison, fire, lightning, and cold) or just a resistance to cover all
forms of magic other than the elemental ones. For example, resistance against an attack
like bone spear probably falls under this category.
Fire Resist (Column DV): Determines what percentage of fire attacks a monster ignores.
Lightning Resist (Column DW): Determines what percentage of lightning attacks the
monster ignores.
Cold Resist (Column DX): Determines what percentage of cold attacks the monster
ignores.
Poison Resist (Column DY): Determines what percentage of poison attacks a monster
ignores.
DamageResist(N) (Column DZ): Determines a monster's damage resistance for
Nightmare difficulty.
MagicResist(N) (Column EA): Magic resist for Nightmare.
FireResist(N) (Column EB): Fire resist for Nightmare.
LightningResist(N) (Column EC): Lightning resist for Nightmare.
ColdResist(N) (Column ED): Cold resist for Nightmare.
PoisonResist(N): (Column EE): Poison Resist for Nightmare.
(Columns EF-EK): Resistances for Hell difficulty.
DamageRegen (Column EL): Determines the rate at which a monster recovers hit points.
this is similer to the life replenish ability some magic items have.
eLUndead (Column EM): The first of two columns that can determines if a monster is
undead. Basic undead like skeletons and mummies have this column set. Wheather or
not a monster is undead will affect how much damage certain weapons do against it.
eHUndead (Column EN): The second undead field. I'm not sure what the difference is
between this one and the first one, but the undead who have this field set tend to be the
more magically oriented undead like Vampires, Greater Mummies, and Mephisto.
eDemon (Column EO): Determines if the monster is a demon. Again, this will determine
how much damage certain weapons do against these monsters.
eMagicUsing (Column EP): Determines if the monster is a spell caster.
eLarge (Column EQ): Determines if the monster is classified as 'large.' This won't
affect how the monster appears on screen. It again affects damage obtained by certain
weapons.
eSmall (Column ER): Classifies a monster as small.
eFlying (Column ES): Classifies a monster as flying. I don't know if setting this column
to one for a monster that has it at zero will actually give the monster the ability to fly (i.e.
walk over walls or rivers) or just affect how much damage weapons do against them.
eOpensDoors (Column ET): Determines if a monster can open doors or not.
eSpawnCol (Column EU): unknown (Nefarius: how the unit is spawned: 0 = use m1-25 columns, 1 = DS1 generated only, 2 = use s1-25 columns)
eBoss (Column EV): Determines if an enemy is classified as a boss (Duriel, Diablo, etc.).
This field is usually best left alone unless you want to make clones of bosses (more on
that later). Making an enemy a boss tends to crash the game when you kill it. You'll get
a message along the lines of 'error, boss not in table.' I don't know where this table it
refers to is located.
PixHeight (Column EW): Not sure it does anything since changing it doesn't change
how tall or short a monster appears. (Nefarius: overlay offset)
Interact (Column EX): You've noticed throughout the game that moving the mouse
corsor over someone displays differently for different monsters. More specifically,
moving the cursor over a monster displays its name inside a life bar while moving it over
a townsperson will display its name in white. This column determines which appears.
Set to zero to show the name inside the life bar. set to one to display the name in white.
MinHP (Column EY): The smallest number of hitpoints a monster can have when it's
generated in Normal difficulty.
MaxHP (Column EZ): The largest number of hitpoints a monster can have when it's
generated in Normal difficulty.
AC (Column FA): This is the enemy's defense for Normal difficulty. The higher it is,
the harder it is to hit the monster.
EXP (Column FB): How much exp you get from killing this monster in Normal
Difficulty.
ToBlock (Column FC): This determines the percentage chance a monster has to block an
attack (assuming it's capable of blocking an attack). One thing to keep in mind, is that
this number sets its blocking ability for all three difficulties.
A1MinD (Column FD): Determines the minimum amount of damage the monster does
with its first physical attack.
A1MaxD (Column FE): Determines the maximum amount of damage the monster does
with its first physical attack.
A1ToHit (Column FF): Determines the attack rating the monster has with its first hysical
attack. the higher it is, the more likely it is to hit someone with this attack.
A2MinD (Column FG): Determines the minimum damage of the monster's second
physical attack (if it has one).
A2MaxD (Column FH): Determines the max damage of a monster's second physical
attack in Normal difficulty.
A2ToHit (Column FI): Determines the attack rating of the monster's second physical
attack.
S1MinD (Column FJ): Determines the min damage done by a special attack. This field is
used mostly by traps.
S1MaxD (Column FK): Determines the max damage done by a special attack.
S1ToHit (Column FL): Determines the attack rating of a special attack.
MinHP(N) (Column FM): The smallest number of hitpoints a monster can have when it's
generated in Nightmare difficulty.
MaxHP(N) (Column FN): The largest number of hitpoints a monster can have when it's
generated in Nightmare difficulty.
AC(N) (Column FO): This is the enemy's defense for Nightmare difficulty. The higher
it is, the harder it is to hit the monster.
EXP(N) (Column FP): How much exp you get from killing this monster in Nightmare
Difficulty.
A1MinD(N) (Column FQ): Determines the minimum amount of damage the monster
does with its first physical attack.
A1MaxD(N) (Column FR): Determines the maximum amount of damage the monster
does with its first physical attack.
A1ToHit(N) (Column FS): Determines the attack rating the monster has with its first
hysical attack. the higher it is, the more likely it is to hit someone with this attack.
A2MinD(N) (Column FT): Determines the minimum damage of the monster's second
physical attack (if it has one).
A2MaxD(N) (Column FU): Determines the max damage of a monster's second physical
attack in Nightmare difficulty.
A2ToHit(N) (Column FV): Determines the attack rating of the monster's second
physical attack.
S1MinD(N) (Column FW): Determines the min damage done by a special attack. This
field is used mostly by traps.
S1MaxD(N) (Column FX): Determines the max damage done by a special attack.
S1ToHit(N) (Column FY): Determines the attack rating of a special attack.
(Columns FZ-GL): Monster stats for hell difficulty.
TreasureClass1-4 (Columns GM-GP): The numbers in the treasure class fields determine
what kind of items monsters drop when you kill them. You can see what these fields are
by looking in TreasureClasses.txt and looking at the column numbers. The number listed
in the monstats.txt file is the row of the file in TreasureClasses.txt – 1 (I think).
TreasureClass1-4(N) (Columns GQ-GT): Determines the items a monster drops in
nightmare difficulty.
TreasureClass1-4(H) (Columns GU-GX): Determins the items a monster drops in hell
difficulty.
SpawnPctBonus (Column GY): This is a fun column to play around with. This column
determines any percentage bonuses to a monster's chances of dropping an item when you
kill it. Set it to something around 100, and they'll drop items like mad (and they'll often
be magical).
Soft (Column GZ): unknown (Nefarius: soft or hard skinned foe.)
Heart (Column HA): unknown, but every monster has it set to xxx. (Nefarius: set to an item code, the monster will drop this item if MonItemPercent.txt is edited)
BodyPart (Column HB): Unknown, but every monster has it set to xxx. (Nefarius: set to an item code, the monster will drop this item if MonItemPercent.txt is edited)
Killable (Column HC): The last column that determines if a monster can be killed.
Almost everything has this column set.
Switch (Column HD): Remember when I said earlier that the ability of Reveive to work
on a monster was set by something other than the CourpseSel solumn? Well, this is that
column. Set to one to make Revive work on this enemy's courpse. Set to zero to make it
not work.
Restore (Column HE): unknown
Never Count (Column HF): unknown
Hit Class (Column HG): unknown (Nefarius: what hitclass effect is used when it hits something)
SplEndDeath (Column HH): unknown (Nefarius: as for all subsequent versions, just that the absence of minion columns makes this here useless)
SplGetModeChart (Column HI): unknown
SplEndGeneric (Column HJ): unknown
SplClientEnd (Column HK): unknown
DeadCollision (Column HL): Determines if an enemy's courpse will block a character's
path. An example is Duriel's courpse which can't be walked over when you kill him.
UnflatDead (Column HM): unknown
BloodLocal (Cloumn HN): unknown
DeathDamage (Column HO): Haven't tested, but it probably determines how much
damage a monster does when it dies. (Nefarius: boolean: does damage on death yes/no)
PetIgnore (Column HP): Set to one to make a monster fighting for you (Golem, Valkerie,
etc.) never attack it.
(Nefarius: the below work as for 1.10+)
NoGfxHitTest (Column HQ): unknown
HitTestTop (Column HR): unknown
HitTestLeft (Column HS): unknown
HitTestWidth (column HT): unknown
HitTestHeight (Column HU): unknown
Part II:
Trick One: Make any monster appear in any area
You'll need to use levels.txt for this one as well. If you're looking at monstats.txt using
a spreedsheet program of somekind, notice that the rows are numbered. These numbers-2
actually give you the monster number for each monster in the game. For example, let's
look at Hell Bovines (cows). They're on row 393. The monster number for them is 391
(393-2=391).
Now open up levels.txt. Scroll left until you see some columns labeled M1, M2, M3,
etc. You'll see numbers under these columns. These are the monsters that appear in
these levels. If you look at the entry for the secret cow level you'll notice 391 listed in
these columns. To the left of the M1 column is the column that determines how many
different monsters can appear in this level. If you add an entry to the M columns, make
sure you also change the value in the other column.
If you want to make a Boss monster like Diablo, Blood Raven or the Summoner appear,
there's one other thing you need to change. Go to the Spwaned column (column F) in
monstats.txt file and make the column entry for the monster you want to appear a one.
Trick Two: Cloning a Monster
This trick is useful if you want to spawn a Boss monster, but you think the boss is too
hard to fight as a regular enemy. It's also useful to do this in order to get around some of
the annoyances of killing Bosses. For example, killing a spawned Diablo will trigger the
counter that ends the game. Killing a spawned Andarial causes a massive explosion that
kills every other monster within several screens of her. A cloned monster will usually not
carry over any special death animation with it.
To actually clone a monster, open up both the monstats.txt file and the file name
montypes.txt. For my example, I'll clone Diablo.
-First go to the entry for Diablo in monstats.txt (Row 245).
-Copy that entire row.
-Now go to the entry labeled Diablo Clone (Row 335).
-Paste the row you copied earlier over this row.
-Set the Spawned entry (Column F) to one if you haven't already.
-Set the eBoss entry (Column EV) to zero. If you leave it at one, the game will crash
when you kill this clone.
-Now go into montypes.txt
-Find Diablo's entry (also row 245).
-Copy that entire row.
-Find the Diablo Clone entry (Row 335).
-Paste what you copied into that row.
And that's it. Go back through and change the stats for you're cloned Diablo if you'd
like. If you know how to work with string.tbl, you can even give your new Diablo clone
a different name by inserting it into the string.tbl file and then typing its name in the class
column in monstats.txt. One thing to note is that sometimes if you copy a large monster
into another spot, that clone may not display correctly. For example, copying Diablo to
somewhere other than the Diablo Clone entry may make your new Diablo appear without
a body, or he may even be invisible. It's best to use on of the unused rows in the
monstats.txt file to create your clones (there are at least 20 of them, so don't worry about
running out unless you're really imaganitive). Do not place your copied monster at the
end of the monstats.txt file after the last monster entry. The game will crash if you do.
Trick 3: Kill Jar-Jar!
Okay, so you're not really killing the Star Wars Jar-Jar, but you may have noticed that
the namco for Kaleen in the monstats.txt file lists Jar-Jar. Well, Kaleen's pretty annoying
too ('you may not pass' 'you may not pass' blah blah blah). While I don't know how to
make attacks work in town, you can make the character killable and then spawn him in
some other area of the game. Here's what to do, and this will work on other characters
that look like hirelings in the game.
-Set ModeDH (Column BA) to one if it isn't set already.
-Set ModeGH (Column BD) to one if it isn't already.
-Set ModeDD (Column BM) to one.
-Set Align (Column CM) to zero.
-Make sure the IsSel entry (Column CO) is set to one.
-Make sure NeverSel (Column CR) is set to zero.
-Set IsAtt (Column CS) is set to one.
-Set Interact (Column EX) to zero.
-Make sure Killible (Column HC) is set to one.
And there you have it. You can try this on other NPC's as well like the guards in each
act. The game tends to crash if you use these settings to make important NPC's like Cain
or Izual killable though.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=383]Knowledge Base - MonStats.txt[/url]

View File

@ -0,0 +1,312 @@
# D2Mods Knowledge Base: Article 384
# Title: Levels.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=384
Levels.txt
Written by: Nefarius
Written on: Wed Jun 21, 2006 5:18 pm
Views: 6785
Description: by Nefarius [written 2001, updated 2006]
Categories: File Guides (1.00-1.06x)
Column A Name:
The name of the level as it is represented in the txt file.
Column B Id:
the ID number of the level which represents it in this and other txt files.
Column C pal:
The palette to use, Blizz did multiple 256 color palettes.
EDIT: One for each act.
Column D Act:
Determines which act the level belongs to.
Column E Layer:
Unknown is set to 0 for the most act 1 wilderness levels.
EDIT: Determines what AutoMap layer this level uses.
Column F SizeX:
Seams to control level size.
EDIT: The horizontal expanse of this level, in subtiles
Column G
EDIT: The vertical expanse of this level, in subtiles.
Column H OffsetX:
Unknown seams to do with level size.
EDIT: The horizontal placement of this level within the worldspace.
Column I OffsetY:
Unknown seams to do with level size.
EDIT: The vertical placement of this level within the worldspace.
Column J Depend:
Unknown is set to 0 for all levels, except the first courtyard(outer cloister) and barracks(barracks) of act 1.
EDIT: Contains the level ID this levels' warp is dependant upon, so that their are always properly aligned.
Column K Rain:
Determines if it can rain in this level,(1 means it can rain 0 means it cannot).
Column L Mud:
Unknown is set to 1 only for the levels of act 3,(1 means there is mud in the level 0 means there is not).
EDIT: Blizzard originally intended there to be mud after it rains, which had a similar effect on the characters movement speed as the goo the giant spiders make when they attempt to escape. There is no underlying code, so this column serves no purpose.
Column M NoPer:
For D2 in 3D (like direct 3D) which allows perspective.
EDIT: 0 = allow perspective, 1 = forbid perspective.
Column N LOSDraw:
unknown but seams to determine if the area is an underground or none natural level.
EDIT: Infravision enabled, 0 = don't draw LoS (overground levels), 1 = draw LoS (caves). Setting this to 0 will allow you to see enemies behind walls etc.
Column O IsInside:
determines if the level is underground or none natural.
EDIT: Determines whenever the level is influenced by day and night lightning effects. 0 = use day and night lightning, 1 = always day.
Column P DrlgType:
Unknown
EDIT: Determines the type of level generation to use, 1 = random dungeon, 2 = preset map (LvlPrest.txt) and 3 = random wilderness.
Column Q LevelType:
Determines what type the level is (from LvlTypes.txt).
Column R SubType:
Unknown is set to -1 for all levels but the act 1 wilderness levels.
EDIT: This determines what subtype this level belongs to, some values are unused, so it leaves place for experimentation.
Column S SubTheme:
Unknown
EDIT: This influences what subtheme is picked from the main theme. For example, the one used for the Dark Wood will spawn more trees.
Column T SubWaypoint:
Unknown
EDIT: Related to waypoints in non-preset levels, might handle what map index the waypoint object is on. Here also there are manu unused indexes to test.
Column U SubShrine:
Unknown
EDIT: This influences how random preset shrines are spawned, as you know shrines spawn as part of the map in the wilderness, this is doubtlessly related to this in some way.
Column V-AC Vis0-7:
Unknown
EDIT: Determines the level IDs linked to this level. The Vis (for visual I think) used is based on the warp tile ID within the map.
Column AD-AK Warp0-7:
Unknown
EDIT: This handles the display part of level connections, this column contains IDs from LvlWarp.txt. The Warp used must be in-sync with the Vis used.
Column AL Intensity:
Unknown(is set to 0 for most levels(not including act4).
EDIT: This controls the intensity of the RGB lighting, setting it to 255 will make the colors the most intense (if you remember XyRAX 15.0) you know what 255 looks like in-game.
Column AM Red:
like the RGB columns in monstats.txt, stands for red.
Column AN Green:
like the RGB columns in monstats.txt, stands for Blue.
Column AO Blue:
like the RGB columns in monstats.txt, stands for Blue.
Column AP Portal:
Unknown
Column AQ Position:
Unknown
EDIT: Can a portal be re-positioned within the level? 1 = it can be repositioned, 0 = it cannot be repositioned.
Column AR SaveMonster:
0 or 1, if you set 1 in town, the NPC you set in town will not disappear when you get out of town. This has something to do with re-spawning and also monsters that are killed will be dead when you go back to the same area instead of re-spawning every time.
Column AS Quest:
Seams to have to do if the area contains quest items or other quest related stuff, (is set to 0 for almost all levels except for 2 on is set to 11 and the other one to 1).
EDIT: Determines what quest the level in question is linked to.
Column AT WarpDist:
Unknown is set to 2025 for almost all levels.
EDIT: Controls the size, in subtiles, of the saftey zone around level entrances and waypoints (to prevent stair-traps).
Column AU MonLvl1:
is determining the monster and object level of this area in normal difficulty.
EDIT: Only effects monsters spawned via DS1s.
Column AV MonLvl2:
is determining the monster and object level of this area in nightmare difficulty.
EDIT: Only effects monsters spawned via DS1s.
Column AW MonLvl3:
is determining the monster and object level of this area in Hell difficulty.
EDIT: Only effects monsters spawned via DS1s.
Column AX MonDen:
Determines the density of monsters for the area (if you type in 3000 it does not mean there 3000 monsters in the area there will be a density of 3000).
Column AY MonUMin:
minimum boss and champion monsters of the area.
Column AZ MonUMax:
Maximum Boss and champion monsters of the area.
Column BA MonWndr:
Unknown seams to determine if there are monsters in the area(towns are all set to 0).
EDIT: Can monsters which have not been activated by the player yet execute AI commands? 1 = yes (which allows them to wander around for example), 0 = no (they remain idle until activated).
Column BB MonSpcWalk:
Unknown
EDIT: Unknown, but 1 is used for levels with metal grates (Act 1 Jails, Act 2 Basement) and 5 is used for levels with 'liquid' tiles (Act 3 Jungle, Act 4 River of Flame)
Column BC Mtot:
the total amount of different monster types,(eg: if 4 different monsters can appear in an area this
Column is set to 4 for this area) note: the game cannot spawn more than 4 different non-boss monsters at a time so you can make it more random if you ad more monster types and make monden that number will make it so that almost every time you play there will be different monsters.
Column BD-CB M1-25:
the different monster types this level can spawn(to find out what monster numbers to enter into these columns check monstats and delete 2 from the monster rows number and ad it into these slots in levels.txt(note: if you ad or delete monsters from this
Column make sure Mtot(Colum BC) matches the number of different types).
Column CC-DA S1-25:
determines what nest types may appear in the area (you can also try to add other monsters with these columns).
EDIT: When M1 is spawned the game will automatically also spawn a copy of S1 (etc).
Column DB Utot:
the total amount of monster species that can appear as bosses and champions in the area (works similar to Mtot and the M1-25 columns).
Column DC-EA U1-25:
Determines the different monster types can appear as bosses for eg: if you put in a pitlord (blue Balrog) in the bloodmoor row and you haven't set Utot to more than 3 it wont appear if you want it to appear 100% make there 10 unique monsters appear in the bloodmoor (with the use of MonUMin MonUMax columns) now delete all other numbers out of the U1-25 columns and put only 360(Balrogs number) in all slots of U in this row put Utot column to 25 and ad this file to your mpq and you will get 10 Balrog bosses in the bloodmoor
Column EB-EF C1-5:
Determins which critter appears in the area (snakes, chickens, camels etc).
Column EG-EK CA1-5:
Unknown (is set to 30 for all columns that have critters in them in the C1-% columns) eg: if Colum C1 has a 149(chicken) in it then Colum CA1 has 30 in it, NOTE: does not determine the number of chickens or other critter this is determined in monstats.txt.
EDIT: Percentage chance that the critter in question will spawn.
Column EL-EO CD1-CD4:
Unknown
EDIT: Also related to critters but not used in vanilla. Might handle maximum number to spawn.
Column EP Themes:
Unknown
Column ER SoundEnv:
determines the music this area has (open soundenviron.txt for the numbers that should be put inside these slots.
Column ES Waypoint:
determines if the area has a way point (255 means none). you can also switch way points with this WARNING if you let the old way point 'as is' you will Probaly be crashed out your game you must make the old waypoint 255(for eg the way point to cold plain is number 1 put 1 into the chaos sanctuary or cowlvl and now make the cold plain 255 now you will have a way point to cowlvl or the chaos sanctuary(all has to do how you choose it).
Column ET LevelName:
determines the name of the area but it must also be changed in String and patchstring.tbl to appear in the game.
Column EU LevelWarp:
Determines the name that appear above the entrance to the area(like the caves entrance if you scroll over it will say the warps name, eg: to the den of evil(must also be changed to appear in the game in string and patchstring.tbl.
Column EV EntryFile:
Unknown:(note: this is also appearing in other level txts like lvlprest.txt).
EDIT: Determines what 'entry message' DC6 file is played when you enter this level.
Column EW-FD objGrp:
this determines what shrines and objects will appear in the level( open objgroup.txt for the numbers that should be placed into these slots).
Column FE-FK objPct:
Unknown (if you change these column the game tends to crash).
EDIT: Chance that the object group in question is spawned. Setting this to more then 100 prior to 1.10 crashed the game.
Column FM Beta:
seams to determine if the area appeared in the beta, only for reference.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=384]Knowledge Base - Levels.txt[/url]

View File

@ -0,0 +1,287 @@
# D2Mods Knowledge Base: Article 385
# Title: Armor.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=385
Armor.txt
Written by: Nefarius
Written on: Wed Jun 21, 2006 5:17 pm
Last modified: Sat Jan 06, 2018 4:28 am
Views: 7498
Description: by Nefarius [written 2001, updated 2006]
Categories: File Guides (1.00-1.06x)
A name: in this column you will find the name of the armor which represents it in uniqueitems.txt, setitems.txt and gamble.txt.
This field is used for internal reference only
B Version: unknown, was added in v1.04 when the change to save file
format was applied might have to do with the compactsave column below.
This controls what version of the game this item is available in, prior to the expansion the column was not needed, in fact it seams Blizz was preparing for LoD when they added this!
C compactsave: seams to control if the item is saved 'as is' or
will morph in the next game you join (i.e. before v1.03 of Diablo ii
the items u made in the Horadric cube morphed after you left the game u
made it in.
0 = Save seed, durability, quantity and iLvl, 1 = Don't save anything but the item code.
D rarity: unknown, seams to have no effect on the items rarity.
Unused prior to the expansion.
E spawnable: 1 means this item can be bought from a NPC, 0 means it cant.
F completed: has no effect, reference only.
G uniqueonly: setting for quest items which appear only as
unique(Khalim's flail etc) 0 means it is a basic item which can have
any quality, 1 means it is only possible as a unique.
H minac: the minimum defense this item has.
I maxax: the maximum defense this item has.
J absorbs: how much damage does this item absorb if you are hit
Unused
K speed: how much does this armor slow you down wile running/walking?
Positive speed: slower, Negative speed: faster
L reqstr: the amount of strength you need to use the item.
Can't go beyond 255.
M block: how much base percentage to block this item has (for
shields only, never tried to set a value for something else test it if
you want to experiment).
N durability: the amount of durability, note you can set it to
higher then 255, its just not recommended since you will need to repair
the item every time you start a new game.
O nodurability: this is what I used to make indestructible base
items, 1 means the item cannot be destroyed, 0 means it has durability
and therefore can be destroyed.
P level: the level you need to gamble this item.
And the level at which monsters can pick it from TreasureClass.txt
Q cost: the amount of gold this item costs as normal.
The base amount to be correct.
R code: this is the code that represents the item inside many other
files such as: .tbls .dlls and .txts. Note capital letters
are not the same as small letters. The code must match exactly to what
you type in other files. Never use a code twice unless yoy know what you
do.
About duplicate codes, prior to the expansion one could create morphing items this way, they transformed into something else when entering a new game.
S alternategfx: the animation the characters use wile wearing the item.
T OpenBetaGfx: the animation the characters use wile wearing the item, wile the game was in the beta(has no effect).
Unused
U ubercode: the code of the exceptional version of the item, 0 means it is exceptional.
V spelloffset: unknown.
W component: unknown.
This controlled what component of the animation this item will alter AND what itemtype it is. Remember, ItemTypes.txt was a hardcoded table prior to the expansion.
X bodyLoc1: the body location this item can be used at, (i.e. right/left hand etc)
Y bodyLoc2: the body location this item can be used at, (i.e. right/left hand etc)
Z invwidth: the width of inventory boxes this item has.
AA invhieght: the height of inventory boxes this item has.
AB hasinv: can this item have sockets? 1 means yes, 0 means no.
AC gemsockets: the amount of sockets this item can have for 2x4 items and 2x3 items the maximum is 6 and minimum is 1.
Nowadays the maximum is 7, back then it was indeed 6. You could only have sockets in normal items.
AD flippyfile: the flip animation of this item (i.e. the animation displayed when it is dropped).
AE invfile: the inventory graphic for this item.
AF uniqueinvfile: the graphic this item uses if it is unique.
AG rArm: controls the graphic for the right arm.
AH lArm: controls the graphic for the left arm.
AI Torso: controls the graphic for the torso.
AJ Legs: controls the graphic for the legs.
AK rSPad: unknown, might have to do with the right shoulder pad.
AL rLPad: unknown, might have to do with the left shoulder pad.
AM useable: can this item be right clicked? 1 means yes, 0 means no.
AN Throwable: 1 means it is throwable, 0 means it is not.
AO stackable: 1 means it is stackable, 0 means it is not. (note
only items that are 100% identical can stack that's why you should NOT
set this column unless you make throwing potions. Note: if you make a
throwing weapon it must have this column set unless you want infinite
quantity, the item will have quantity if this is set but will not stack
since its not identical.
AP minstack: the minimum stacked amount of the item you can find/buy it.
AQ maxstack: the maximum stacked amount of the item you can find/buy it.
And the maximum stack it can have in general.
AR type: sets the item type (i.e. shield, helm, armor).
AS sound: this is the sound the game uses when the item is dropped or put in your inventory DUH.
AT unique: unknown.
This column existed alongside the uniqueonly column, what it does is unknown, in later versions uniqueonly was removed and it's functionality was given to the unique column.
AU transparent: unknown, never tested it, might turn a item transparent.
Unused
AV transtbl: unknown, from the name seams to be related to a .tbl file of some sort.
Unused
AW quivered: is this item quivered? 1 means yes, 0 means no, I
don't know what this does so unless you want to experiment around leave
it at 0.
Does this item require ammo to fire missiles. 0=no, 1=yes
AX lightradius: does this item have a lightradius if equipped? Set the amount of the radius here, seams to have no effect.
Unused
AY belt: can this item be in your belt? 1 means yes and 0 means no.
AZ quest: does this item have to do something with a quest?
BA missiletype: what missile does this item use when thrown, use the ID numbers from missiles.txt.
BB durwarning: at what value of durability, the warning of low durability appears.
BC qntwarning: at what value of quantity, does the low quantity warning appear.
AD mindam: minimum smith damage of a shield.
AE maxdam: maximum smite damage of a shield.
BF gemoffset: unknown, probably useless or unused since no item has this set.
Unused
BG bitfield1: unknown.
1 = item is made from wood or leather, 3 = item is made from plates, (2 = item is made from chain IIRC), this is used by Iron Golem to determine what an item is made off.
BH-DY 'vendor'Min, 'vendor'Max 'vendor'MagicMin, 'vendor'MagicMax,
'vendor'MagicLvl: these columns set how much and which vendor can sell
what spawnable item. The MagicLvl columns should control the magic
level for this vendor even this seams to be controlled by the area
level value from levels.txt.
This probably worked like it does now, look at my explanation about MagicLevel in the GMM forum.
DZ Source Art: unknown probably only for reference.
Unused
EA Game Art: unknown probably only for reference.
Unused
EB-EF Amazon, Paladin, Barbarian, Necromancer, Sorceress: probably
unused, without a working code left, probably should have controlled
class specific items, when the game was yet in development.
Unused, these were likely meant to control class specific items, but the code for them was never part of the game, but you can test if you wish to experiment. There are even unused itemtypes for charms and orbs classic D2 pre 1.07, but they are likewise not used at all.
EG Transform: controls the degree the color of
the item changes on the play screen, (this might be the reason for that
unexplainable effect in XyRAX, with the Skull carapace, which gets
bright colors, while a regular bone helm will not get such bright
colors.
EH InvTrans: controls the same as above, just for the inventory graphics.
EI SkipName: unknown.
Does the game display that items base name (based on the items code) or is this skipped and only the special name of the item is used (such as rare name, unique name, set name etc).
EJ-EK NightmareUpgrade, HellUpgrade: what item will be sold in
shops instead of this item on higher difficulties, xxx means the item
will stay the same as on normal, if you want it to be replaced, for
example by its exceptional type you will need to enter the exceptional
code (or any code of any item you want sold instead).
EL mindam: note this was used before v1.04 for shield minimum smith damage, the column used now is AD.
Unused, they forgot to delete this column, it still is there in 1.'
EM maxdam: note this was used before v1.04 for shield maximum smith damage, the column used now is AE.
Unused, they forgot to delete this column, it still is there in 1.'
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=385]Knowledge Base - Armor.txt[/url]

View File

@ -0,0 +1,91 @@
# D2Mods Knowledge Base: Article 386
# Title: UniqueItems.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=386
UniqueItems.txt
Written by: Nefarius
Written on: Wed Nov 07, 2007 4:06 pm
Last modified: Sun Mar 29, 2020 7:16 pm
Views: 25450
Description: by Nefarius, restyled by Nizari
Categories: File Guides (1.10 - 1.14)
This guide contains all the information you need concerning UniqueItems.txt
- Related text files: UniqueItems.txt
- Is used together with/is related to/reads from:
Armor.txt
ItemStatCost.txt (not directly, but this is highly related to Properties.txt)
ItemTypes.txt
Misc.txt
Properties.txt
Skills.txt
States.txt
Weapons.txt
Index: the ID pointer that is referenced by the game in TreasureClassEx.txt and CubeMain.txt, this column also contains the string-key used in the TBL (string.tbl, expansionstring.tbl and patchstring.tbl).
Version: Switch, what game version was this unique item added in, 0 referes to real classic Diablo II (1.00-1.06), 1 refers to new classic Diablo II (1.07-1.11) and 100 refers to the Expansion Set. Items with 100 will be unable to drop in Classic Diablo II.
Ladder: Boolean, 1 = item available only on the realms (ladder), 0 = item available both in single player/open games, TCP/IP and on the realms.
Rarity: chance to pick this unique item if more then one unique item of the same base item exist, this uses the common rarity/total_rarity formula, so if you have two unique rings, one with a rarity of 100 the other with a rarity of 1, then the first will drop 100/101 percent of the time (99%) and the other will drop 1/101 percent of the time (1%), rarity can be anything between 1 and 255 (rarity of less then 1 will be set to 1 by the code).
NoLimit: Boolean, 0 = can drop only once per game, 1 = can drop more then once per game. Basically when the game drops a unique item it sets a check mark in a table it holds in memory of what unique items were dropped, when, should you be lucky enough to get the same item again, it will check whenever this item has been dropped already, and if NoLimit is false, it will drop a rare item with enhanced durability instead.
Lvl: the quality level of this unique item, monsters, cube recipes, vendors, objects and the like most be at least this level or higher to be able to drop this item, otherwise they would drop a rare item with enhanced durability.
Lvl Req: the character level required to use this unique item.
Code: the code of the base form of this unique item, this is an ID pointer from Weapons.txt, Armor.txt or Misc.txt.
*type: This column is not read by the game.
*uber: This column is not read by the game.
Carry1: Boolean, 0 = allow the player to hold as many of this item as he wants, 1 = allow the player to hold a single copy only. In reality this just prevents the player from picking up the item when it is dropped on the floor and it prevents the player from putting this item in the trading window.
Cost Mult: the base item's price is multiplied by this value when sold, repaired or bought from a vendor.
Cost Add: after the price has been multiplied, this amount of gold is added to the price on top.
ChrTransform: palette shift to apply to the the DCC component-file and the DC6 flippy-file (whenever or not the color shift will apply is determined by Weapons.txt, Armor.txt or Misc.txt). This is an ID pointer from Colors.txt.
InvTransform: palette shift to apply to the the DC6 inventory-file (whenever or not the color shift will apply is determined by Weapons.txt, Armor.txt or Misc.txt). This is an ID pointer from Colors.txt.
FlippyFile: overrides the flippyfile specified in Weapons.txt, Armor.txt or Misc.txt for the base item. This field contains the file name of the DC6 flippy animation.
InvFile: overrides the invfile and uniqueinvfile specified in Weapons.txt, Armor.txt or Misc.txt for the base item. This field contains the file name of the DC6 inventory graphic.
DropSound: overrides the dropsound (the sound played when the item hits the ground) specified in Weapons.txt, Armor.txt or Misc.txt for the base item. This field contains an ID pointer from Sounds.txt.
DropSfxFrame: how many frames after the flippy animation starts playing will the associated drop sound start to play. This overrides the values in Weapons.txt, Armor.txt or Misc.txt.
UseSound: overrides the usesound (the sound played when the item is consumed by the player) specified in Weapons.txt, Armor.txt or Misc.txt for the base item. This field contains an ID pointer from Sounds.txt.
Prop1-12: an ID pointer of a property from Properties.txt, these columns control each of the 12 different modifiers a unique item can grant you at most. (In a-lay-mens-terms: 'the stat that can spawn on the unique item.')
Par1-12: the parameter passed on to the associated property, this is used to pass skill IDs, state IDs, monster IDs, montype IDs and the like on to the properties that require them, these fields support calculations.
Min1-12: minimum value to assign to the associated property. (In a-lay-mans-term's: 'minimum value of the stat.')
Max1-12: maximum value to assign to the associated property. (In a-lay-man's-terms: 'maximum value of the stat.')
*eol: End of Line, used to avoid the trailing bit error M$ Excel usually causes when adjusting the end of the rows. This column must contain 0 unless you want to crash when the game loads.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=386]Knowledge Base - UniqueItems.txt[/url]

View File

@ -0,0 +1,97 @@
# D2Mods Knowledge Base: Article 387
# Title: NPC.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=387
NPC.txt
Written by: Nefarius
Written on: Mon Jun 05, 2006 7:58 pm
Last modified: Thu Oct 25, 2018 6:05 pm
Views: 12780
Description: by Nefarius (ex Mordini and Phrozen Heart), restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
NPC.TXT File Guide
By Nefarius (in part based on Phrozen Heart & Mordini's guide)
The old guide is not very accurate when it comes to how the various columns interact, I hope this one will clear the shroud.
npc: an ID pointer to that NPCs row in monstats.txt, do not change this name, otherwise you will recieve an assertion error as soon as you open that vendors inventory.
buy mult: percentage of the items base price to use when it is bought by the NPC.
This does not refer to the prices listed in armor, weapons or misc, it refers to the actual base price, that is, after all stat related boosts have been applied.
This column holds a fraction of 1024, thus 512/1024 would be equal to 50%, lets say we have Cleglaw's Tooth, its actual price is 4027 gold.
If we set this column to 1024 that is what we will recieve for selling it to an NPC, if we set this column to 512 we will recieve floor(price/1024*value) aka 2013 gold.
sell mult: this follows the same principle as the above, however this controls the price when you buy something from an NPC.
rep mult: this column controls the base price used as the basis of the item repair calculation, it follows the same principle as the two other columns above.
But this does not control the actual repair price. How does the game do it then?
First of all the base repair price is established using the same formula as for the other columns, namely floor(price/1024*value)
Now lets take Cleglaw's Tooth again for our example, if you set this column to 1024 then a full repair (when the item has 0 durability left), will cost 4027 gold, the full price of the item.
Should it have 22/44 durability, you rather pay 2013 gold. Thus the whole repair calculation is basically: cost*(1-current_dur/maximum_dur).
The recharge cost is added on top of the durability repair calculation.
Note that the recharge cost is not controlled by this field, the parameters for this calc are spread throughout the games code and skills.txt.
questflag A, B and C: this controls the quest flag that must be checked in order for the following price alterations to take place.
questbuymult A, B and C: this controls the percentage the percentage indicated in the buy mult column is modified.
Lets say buy mult contains 512, if we put 1024 in questbuymult A the item will _not_ be sold at any different price, since we tell the game to use 100% of 50%, which quite clearly is 50%.
Thus the Cleglaw's Tooth will be bought for 2013 gold, irregardless of the quest, but what if we set this column to 2048?
Well, then we will recieve 4027 gold when we sell it to the npc, since we are telling the game to use 200% of 50%, which is 100%.
Finally, if we set this column to 512 then we will recieve an item that costs 1006 gold, since we are now using 50% of 50%, which is 25%.
The subsequent columns, questbuymult B and questbuymult C stack with this one, they do not replace it. So, to clear up the mess I just wrote:
base price = GLD
buy mult = BM
questbuymult = QBM1
questbuymult = QBM2
questbuymult = QBM3
floor( GLD / 1024 * BM / 1024 * QGM1 / 1024 * QGM2 / 1024 * QMG3 ) = actual price
So if we again use the example item from above, GLD=4027. Lets say BM=512 and QBM1-3 are all 2048, then we get: 16108 gold.
questsellmult A, B and C: the same as the above, only that this applies when you buy something from an NPC.
questrepmult A, B and C: again as the above, however this controls the alteration of the base repair price.
max buy, (N) and (H): the maximum amount of gold this NPC will ever pay you for an item you sell on the respective difficulty, the maximum is 2147483647.
Other facts
NPCs will never use values below 1 gold, thus an item that is worth 0 gold will still be bought for 1 gold and sold for 1 gold.
This does not apply to gambling, where prices above the maximum result in free gambles.
Prices above 2147483647 either as result of stats, base price in a file or the NPC calculation itself will be treated as 1.
The buy-price of some items will be off the sell-price by about 10% irregardless of NPC.txt, I haven't quite understood why this happens yet.
Selling price is not influenced by the amount of durability, it used to be like that early on.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=387]Knowledge Base - NPC.txt[/url]

View File

@ -0,0 +1,69 @@
# D2Mods Knowledge Base: Article 388
# Title: Runes.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=388
Runes.txt
Written by: Nefarius
Written on: Wed Jun 07, 2006 4:55 am
Last modified: Wed Oct 24, 2018 2:31 pm
Views: 20463
Description: by Nefarius, restyled by Nizari
Categories: File Guides (1.10 - 1.14)
This guide contains all the information you need concerning Runes.txt
- Related text files: Runes.txt
- Is used together with/is related to/reads from:
Armor.txt
Gems.txt
ItemStatCost.txt (not directly, but this is highly related to Properties.txt)
ItemTypes.txt
Misc.txt
Properties.txt
Skills.txt
States.txt
Weapons.txt
Name: this column controls the string key that will be looked up inside the TBLs to display the name of this item in-game.
Rune Name: the name of the runeword, it serves reference purpose only as the string key is determined by the previous column. You can use it as note field.
Complete: Boolean, 1 = can be made in-gamemarks, 0 = cannot be made in-game. Marks this runeword as completed and useable in game if set to 1.
Server: Boolean, 1 = runeword available only on the realms (ladder), 0 = runeword available both in single player/open games, TCP/IP and on the realms.
IType1 to IType6: these are ID pointers from ItemTypes.txt and control in what item type this runeword can be made.
EType1 to EType3: these are ID pointers from ItemTypes.txt and control in what item type this runeword cannot be made, even when this item type is a subtype of an item type specified within IType1 to IType6.
*runes: the names of the runes used in the runeword, as they would appear in the item display. Comment field only, you can use it to memorize runes requires for your runewords easily.
Rune1 to Rune6: these are ID pointers from Misc.txt. The fields control what runes are required to make the rune word and in what order they are to be socketed.
T1Code1 to T1Code7: an ID pointer of a property from Properties.txt, these columns control each of the 7 modifiers that a runeword can have at most.
T1Param1 to T1Param7: the parameter passed on to the associated property, this is used to pass skill IDs, state IDs, monster IDs, montype IDs and the like on to the properties that require them. These fields support calculations.
T1Min1 to T1Min6: minimum value to assign to the associated property. Certain properties have special interpretations based on stat encoding, IE chance-to-cast and charged skills. See the File Guide for Properties.txt and ItemStatCost.txt for further details.
T1Max1 to T1Max6: maximum value to assign to the associated property. Check the description below for additional info.
eol: End of Line, used to avoid the trailing bit error M$ Excel usually causes when adjusting the end of the rows. This column must contain 0 unless you want to crash when the game loads.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=388]Knowledge Base - Runes.txt[/url]

View File

@ -0,0 +1,109 @@
# D2Mods Knowledge Base: Article 389
# Title: CharStats.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=389
CharStats.txt
Written by: Nefarius
Written on: Wed Jun 07, 2006 12:34 pm
Last modified: Sat Oct 20, 2018 10:52 pm
Views: 23810
Description: by Nefarius, restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
class: The character class this line refers to (this is just a reference field, you can't actually change this).
str: The amount of strength this character class will start with.
dex: The amount of dexterity this character class will start with.
int: The amount of energy and mana this character class will start with.
vit: The amount of vitality and a portion of life this character class will start with.
tot: This field is not used by the game, and never served any purpose, it's only there as reference (it contains the sum of str, dex, int and hp).
stamina: The amount of stamina this character class will start with.
hpadd: The amount of life added to the amount of life granted by the vit column.
PercentStr: Unused (but loaded by code and repurposeable).
PercentDex: Unused (but loaded by code and repurposeable).
PercentInt: Unused (but loaded by code and repurposeable).
PercentVit: Unused (but loaded by code and repurposeable).
ManaRegen: The number of seconds that need to elapse until mana is completely regenerated, thus lower values make mana regenerate faster, higher values slow the process down.
ToHitFactor: This value is added to the basic attack rating of this character class (not that this really makes a difference later on).
WARNING: Unless you alter the attack rating calculation in the games code, large negative values here will give the characters negative attack rating early on.
WalkVelocity: The speed of this character class when walking (used to be 7 prior to LoD).
RunVelocity: The speed of this character class when running (used to be 11 prior to LoD).
RunDrain: Rate at which this character class burns stamina when running, the lower the value the slower the loss of stamina.
Comment: I really wonder what this could be!?
NOTE: Each point of Life/Mana/Stamina is divided by 256 for precision.
LifePerLevel: Amount of life earned for each level up. This value is in fourths, thus the lowest bonus possible is 64/256 (also represented as 0.25 or 1/4).
StaminaPerLevel: Amount of stamina earned for each level up. This value is in fourths, thus the lowest bonus possible is 64/256.
ManaPerLevel: Amount of mana earned for each level up. This value is in fourths, thus the lowest bonus possible is 64/256.
LifePerVitality: Amount of life earned for each point invested in vitality. This value is in fourths, thus the lowest bonus possible is 64/256.
StaminaPerVitality: Amount of stamina earned for each point invested in vitality. This value is in fourths, thus the lowest bonus possible is 64/256.
ManaPerMagic: Amount of mana earned for each point invested in energy. This value is in fourths, thus the lowest bonus possible is 64/256.
StatPerLevel: Amount of stat points earned at each level up.
#walk: Reference field, contains the length of the WL animation in frames.
#run: Reference field, contains the length of the RN animation in frames.
#swing: Reference field, contains the length of the A1 animation (when wielding a melee weapon) in frames.
#spell: Reference field, contains the length of the SC animation in frames.
#gethit: Reference field, contains the length of the GH animation in frames.
#bow: Reference field, contains the length of the A1 animation (when wielding a bow) in frames.
BlockFactor: The amount of blocking that is added to the base shield blocking from Armor.txt for display and calculation purposes.
StartSkill: An ID pointer from Skills.txt, this controls what skill bonus will spawn on the characters starting weapon.
Skill 1: to Skill 10: The skills that this character class starts with (these skills will always be available from cLvl 1 onward), obviously these are ID pointers from Skills.txt too.
StrAllSkills: This field tells the game what string to display for the bonus to all class skills (ex: +1 to all Amazon skills).
StrSkillTab1: This field tells the game what string to display for the bonus to all skills of the first skill tab (ex: +1 to all Bow and Crossbow skills).
StrSkillTab2: This field tells the game what string to display for the bonus to all skills of the second skill tab (ex: +1 to all Passive and Magic skills).
StrSkillTab3: This field tells the game what string to display for the bonus to all skills of the third skill tab (ex: +1 to all Javelin and Spear skills).
StrClassOnly: This field tells the game what string to display for class specific items (and class specific skill boni) (ex: Amazon Only).
baseWClass: What weapon class will the game default to when no weapon is equipped (by default this is 'hth', which makes the game load the DCC files associated with that animation, and thus the player appears unarmed, for example you could change this to '1hs' and the player will appear as if wielding an invisible 1-handed slashing weapon.
item1: to item10: This field is an ID pointer from Weapons.txt, Armor.txt and Misc.txt, it controls what item this character will start with (aka the newbie equipment). To make a character start with the horadric cube for example you would set this to 'box' (without the quotes of course).
item1loc: to item10loc: The location in which the associated item will be placed, this is an ID pointer from BodyLocs.txt, to make the item appear in the inventory leave this field blank, if the item can be placed in the belt it will be created there (as long as there are belt slots left).
item1count: to item10count: The amount of items of the associated item type to create, thus if you want to make your character start with 8 rather then 4 health potions you'd set the value to 8 rather then 4.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=389]Knowledge Base - CharStats.txt[/url]

View File

@ -0,0 +1,65 @@
# D2Mods Knowledge Base: Article 391
# Title: Gems.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=391
Gems.txt
Written by: Nefarius
Written on: Fri Jun 09, 2006 4:00 pm
Last modified: Sat Oct 20, 2018 10:21 pm
Views: 13163
Description: by Nefarius, restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
name: This is a reference field, so that you know what gem or rune this line refers to.
letter: This field controls what string the game will use for the rune-letter displayed when the rune has been socketed into an item.
transform: This field controls what color the item the gem or rune has been socketed into is going to shift to, a list of colors can be found in Colors.txt (count starting from 0).
code: What item will these modifiers be appended to, this is what actually appends the stats to a gem, prior to 1.07 this was hardcoded and thus it was impossible to add new gems without editing the dlls.
nummods: This is another reference field, to make it easier to see how many different modifiers the gem or rune will have.
weaponMod1: to weaponMod3: An ID pointer to a property in Properties.txt, these columns control each of the three modifiers a gem will give to items using GemApplyType 0 (by default this is used by weapons).
weaponMod1Param: to weaponMod3Param: The parameter passed on to the associated property, this is used to pass skill IDs, state IDs, monster IDs, montype IDs and the like on to the properties that require them.
WARNING: You should not use properties that require parameters in this text file, since the parameters will stack when more then one gem of this type is socketed into the item, producing many undesired effects.
weaponMod1Min: to weaponMod3Min: Minimum value to assign to the associated property.
weaponMod1Max: to weaponMod3Max: Maximum value to assign to the associated property.
WARNING: Gem stats are not saved, thus having minimum and maximum assign different values will cause the gem stats to re-randomize every frame, until the gem is socketed into an item.
helmMod1: to helmMod3: An ID pointer to a property in Properties.txt, these columns control each of the three modifiers a gem will give to items using GemApplyType 1 (by default this is used by body armors and helmets).
helmMod1Param: to helmMod3Param: The parameter passed on to the associated property, this is used to pass skill IDs, state IDs, monster IDs, montype IDs and the like on to the properties that require them.
WARNING: You should not use properties that require parameters in this text file, since the parameters will stack when more then one gem of this type is socketed into the item, producing many undesired effects.
helmMod1Min: to helmMod3Min: Minimum value to assign to the associated property.
helmMod1Max: to helmMod3Max: Maximum value to assign to the associated property.
WARNING: Gem stats are not saved, thus having minimum and maximum assign different values will cause the gem stats to re-randomize every frame, until the gem is socketed into an item.
shieldMod1: to shieldMod3: An ID pointer to a property in Properties.txt, these columns control each of the three modifiers a gem will give to items using GemApplyType 2 (by default this is used by shields).
shieldMod1Param: to shieldMod3Param: The parameter passed on to the associated property, this is used to pass skill IDs, state IDs, monster IDs, montype IDs and the like on to the properties that require them.
WARNING: You should not use properties that require parameters in this text file, since the parameters will stack when more then one gem of this type is socketed into the item, producing many undesired effects.
shieldMod1Min: to shieldMod3Min: Minimum value to assign to the associated property.
shieldMod1Max: to shieldMod3Max: Maximum value to assign to the associated property.
WARNING: Gem stats are not saved, thus having minimum and maximum assign different values will cause the gem stats to re-randomize every frame, until the gem is socketed into an item.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=391]Knowledge Base - Gems.txt[/url]

View File

@ -0,0 +1,486 @@
# D2Mods Knowledge Base: Article 393
# Title: Objects.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=393
Objects.txt
Written by: Nefarius
Written on: Fri Jun 16, 2006 9:50 am
Last modified: Mon Feb 17, 2020 12:34 am
Views: 13646
Description: by Nefarius, Restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
NOTE: For the sake of readability the columns are here not represented the way they are in the file (their order isn't).
Name: This controls the string that is displayed when you highlight this object.
description: A reference field, it contains (or should contain) a brief description of what this object represents in-game, unforunately Blizzard didn't put much effort into these, thus the use of the info provided here is rather limited and often cryptic.
Id: Another reference field, it refers to the objects unique ID. This field is not used by the game, the IDs are based on the line number.
Token: A third reference field, this field refers to the graphics used by the object. To actually change what graphics the object uses you must edit ObjType.txt.
SpawnMax: Unused, at least altering this field didn't change a thing. Whenever, and how, an object is spawned is controlled only by PopulateFn. For reference, the Blizzard used the values 0, 1 and 2.
TrapProb: Unused, this was supposed to control the chance of the object being trapped, but this is since forever handled by object specific code.
SizeX and SizeY: This controls the amount of subtiles that this object occupies, setting this to very high values will prevent the object from spawning, so beware.
nTgtFX and nTgtFY: unknown (F probably stands for front)
nTgtBX and nTgtBY: unknown (B probably stands for back)
IsAttackable: Boolean, controls whenever the character will use mode NU or mode KK when clicking on this object.
```
0 = Use mode NU (neutral, idle)
1 = Use mode KK (kick)
```
EnvEffect: Boolean, unknown but apparently related to ambient sounds and other environment effects.
```
0 = Not related to environmental effects
1 = Related to environmental effects
```
IsDoor: Boolean, controls whenever the game treats this object as a door (this makes it display Open Door, Closed Door or Blocked Door instead of the objects actual string). This probably also controls whenever monsters capable of opening doors will detect that this object is a door.
```
0 = This object is not a door
1 = This object is a door
```
BlockVis: Boolean, controls whenever this object influences line of sight. This only works in conjunction with IsDoor.
When this is set to true you are unable to select objects, units or items that are not within the same room as you are unless the door is opened.
Otherwise you will be able to select things outside of your visions cone (this works similar to LoSDraw in Levels.txt). I'm unaware whenever this effects monsters too.
```
0 = Don't block the players vision
1 = Block the players vision
```
Orientation: Unknown, this seams to control what direction the object is facing. But changing it doesn't really have any influence that I could notice in-game (probably since most objects only have 1 direction to start with), it might be used by code to know what door to pick for what wall tile, so I'm not sure, for reference, the directions would be:
```
1 - Southwest
2 - Northwest
3 - Southeast
4 - Northeast
```
Trans: Controls what type of palette mapping is applied to the object. Though I couldn't notice any major differences in-game.
PreOperate: Boolean, unknown, they've set this to true for the same objects that have IsAttackable set to true, but I couldn't link this to any in-game behavior.
XOffset and YOffset: The graphical offset (from the animations pivot). This is in pixels rather then subtiles (at least as far as I noticed), so if you set these to -100 the objects graphics will appear shifted 100 pixels to the upper left corner from where the object actually is.
Draw: Boolean, controls whenever to draw the object's graphics or not. Note, it will still cast a shadow and the player will still be able to select it.
```
0 = Don't draw the objects graphics
1 = Draw the objects graphics
```
Red, Green and Blue: These three fields control the RGB values (the color) of the objects light radius (in case you assigned a light radius to it).
HD, TR, LG, RA, LA, RH, LH, SH and S1 to S8: Booleans, these columns control whenever the respective DCC components are selectable. Setting them to 0 will make the component in question unselectable. In my tests with TR they where still loaded however, unlike MonStats2.txt.
```
0 = Component is unselectable
1 = Component is selectable
```
TotalPieces: Total amount of selectable DCC components.
SubClass: This field determines what object special subclass this object belongs to:
```
1 = Shrine (displays ' Shrine')
2 = Obelisk (does nothing)
4 = Portal (do not use this for non-portal objects, it causes an assertion error)
8 = Container (just displays the objects string)
16 = Arcane Sanctuary Gateway (does nothing)
32 = Well (does nothing)
64 = Waypoint (displays ' ')
128 = Secret Jails Door (makes the object unselectable, while keeping it clickable)
```
XSpace and YSpace: Unknown, some value in subtiles, but I couldn't see any effects in-game.
NameOffset: How many pixels will the objects name be displaced from the pivot (on the z-axis). So setting this to -100 will make the name appear 100 pixels above the animations pixot.
MonsterOK: Boolean, unknown.
OperateRange: Apparently controls the distance in subtiles from which one can use this object, I played around with it, but didn't notice any different in-game.
ShrineFunction: Unused.
Restore: Boolean, controls whenever or not this object is stored in long-term memory and reappears when you return to a previously visited area. Setting this to 0 will make the object disappear once you leave the map.
```
0 = Allows object to disappear
1 = Object is stored in memory
```
Act: Reference field, a bit field referencing what Acts this object can appear in without glitching up. 15 refers to an object able to appear in all three acts without messing up.
Lockable: Boolean, controls whenever this object can be locked or note. Note: You need to use the proper InitFn function to make it use this column, another issue, the game will display 'Locked Chest' instead of the objects actual name.
```
0 = Unlockable
1 = Lockable
```
Gore: Boolean, unknown, set to true only for corpses.
Sync: Boolean, unknown, I suspect that this tells the game whenever it should keep the client and server copies of this object in-sync or whenever it doesn't matter. This is usually set to false for those objects that are only spawned via DS1 files and thus cannot get out of sync. This could also be related keeping some other aspects in sync (see Paul's reply to this thread).
```
0 = Don't keep this object synchronised.
1 = Keep this object synchronised.
```
Flicker: Boolean, whenever or not the light emitted by this object should flicker.
```
0 = Don't allow light to flicker.
1 = Allow light to flicker.
```
Damage: Controls the amount of damage done by this object (only used when the proper OperateFn function is used), but the ratio used is unknown. If this is set to 0 the game will display a warning if it expects there to be damage.
Beta: Reference field, this is set to true if the object appeared in the beta, and to false if it wasen't.
Overlay: Boolean, unknown, seams to control whenever the game will draw an overlay ontop of the objects graphics while it is not used, but this is just a wild guess.
CollisionSubst: Boolean, controls whenever special collision checking will take place, but I can't figure out how exactly this works.
Left, Top, Right and Bottom: Could be controlling the bounding box of the object (clickable area).
RestoreVirgins: Boolean, whenever or not to restore only unused objects (those objects the player hasen't opened or used yet).
```
0 = Restore all objects
1 = Restore only unused objects
```
BlockMissiles: Boolean, controls whenever this object will be treated as a wall by missiles.
```
0 = Missiles can fly thru this object.
1 = Missiles will collide with this object.
```
DrawUnder: Boolean, controls whenever this object is to be drawn the same way as a floor tile (so for example monsters and players will be drawn on top of this object when their graphics overlap it, even if they stand behind the object).
```
0 = Draw normally
1 = Draw as a floor tile
```
OpenWarp: Boolean, controls whenever the game will display 'To ' or 'trap door' when you highlight the object.
AutoMap: Determines how and if this object will appear on the automap, leaving it blank prevents it from spawning on the map.
Object Functions
Note: The following columns are the heart and soul of this file, they control what an object actually does when you click on it and other parts of it's behavior, they are links to an internal function table (which I will post when I get time to look for it, if it isn't posted already).
OperateFn: This controls the function called when the player clicks on the object.
```
1 - Container (can be trapped with raising undead and fireballs, always drops at least one item as it seams) [used by Caskets]
2 - Shrine (when you don't use the proper InitFn function the game will crash with an unhandled exception)
3 - Container (can be trapped with various things, like poison clouds and fire patches, rarely drops an item) [used by Urns]
4 - Container (can be trapped with various things, drops items more often then function 3 but less often then function 1) [used by Chests]
5 - Container (can only be trapped by raising undead, rarely drops items, when trapped it doesn't make the trap sound ) [used by barrels]
6 - The Tower Tome (quest object, displays the Tower Quest introduction)
7 - Exploding Object (does damage when used, never drops items) [used by exploding barrels]
8 - Door (controls whenever you can open and close the object repeatedly)
9 - Crain Stone (quest object, apply the correct sequence and a portal opens)
10 - Cains Gibbet (quest object, click it and it spawns Cain)
11 - Controls whenever it can be turned on an off, like a light switch (used for braziers which are by default unselectable , great work blizzard).
12 - Tree of Inifuss (quest object, drops the bark scroll)
13 - Doesn't work, but doesn't crash either.
14 - Container (can be trapped by various things, drops items rather infrequently) [used by crates]
15 - Portal (click to go somewhere else)
16 - Trap Door (click to reveal a level entrance)
17 - Obelisk (currently just makes the player say impossible, the actual code is gone)
18 - Secret Door (in jails, this is a door you can't close)
19 - Armor Rack (drop a random armor, based on area level)
20 - Weapon Rack (drop a random weapon, based on area level)
21 - Malus Stand (quest object, drops the horadric malus)
22 - Well (useless unless properly set up)
23 - Waypoint (click once to activate, click a second time to open the menu)
24 - Tainted Sun Altar (quest object, drops the Viper Amulet)
25 - Horadric Orifice (quest object, you insert the horadric staff into this --- I know how wrong that sounds)
26 - Book Case (drops books and scrolls of identify and town portal)
27 - Arcane Sactuary Teleport Gateway (no need to explain)
28 - Lam Esen's Tome (quest object, click it and it drops the tome)
29 - Slime Door (one way door, for the maggot lair)
30 - Exploding Object (blows up and makes a blazing-sound) [used by the exploding cow]
31 - Decoy Gidbinn Altar (quest object, click it to make the cannibal boss spawn)
32 - Stash (doesn't work outside of town)
33 - Wirt's Body (drops tons of gold and the leg)
34 - Arcane Portal (the portal that lets you enter the arcane sanctuary)
35 - Steeg Stone (not used and crashes)
36 - Guild Vault (not used and crashes)
37 - Trophy Case (not used and crashes)
38 - Message Board (not used and crashes)
39 - Quest Chest A (drops one horadric cube for each player)
40 - Quest Chest B (drops one horadric scholl for each player)
41 - Quest Chest C (drops one Staff of Kings for each player)
42 - Horazon's Journal (quest object, displays the 'seekers of the tomb of tal-rasha' intro)
43 - Duriel's Door (the entrance to duriels chamber)
44 - The stairs to the second level of the sewers (Act III)
45 - The lever needed to open said stairs
46 - The Gateway to Hell (the one in mephistos durance)
47 - Stairs (don't know which, Maybe I'll check later)
48 - Trapped Soul (don't blindly use this, it will crash when not properly set up)
49 - The Hell Forge (quest object)
50 - Stairs (again unknown, thanks to blizzards wonderful description)
51 - Container (often drops items, doesn't seam to be trapped) [used by various jungle objects]
52 - Diablo's Seal
53 - The Compelling Orb
54 - Diablo's Seal
55 - Diablo's Seal
56 - Diablo's Seal
57 - Quest Chest D (drops one one of khalims body parts for each player)
58 - Quest Chest E (drops one one of khalims body parts for each player)
59 - Quest Chest F (drops one one of khalims body parts for each player)
60 - Nothing (not used and crashes)
61 - Act V Town Gate (click to open, once)
62 - Statue that Spawns an Ancient A
63 - Statue that Spawns an Ancient B
64 - Statue that Spawns an Ancient C
65 - The altar that triggers the Ancients
66 - The door you can only open after killing the Ancients
67 - Frozen Anya
68 - Evil Urn (releases spiders, a random boss, or some items)
69 - Unknown
70 - Entrance to the Worldstone Chamber
71 - Unknown
72 - Portal to Act V (I think)
73 - Portal to Credits (I think)
```
PopulateFn: This field controls what population function the game will use to spawn this object, a value of 0 (aka blank), will make the object in question unable to spawn. The following values are used by the game (more might exist but I didn't feel like testing for such):
```
1 - Spawn random object from internal table (various caskets, various urns).
2 - Use shrine population logic.
3 - Spawn singular copies of the object, never adjacent to each other.
4 - Spawns a group of barrels (normal and exploding barrels), the object itself is removed.
5 - Spawns singular urns (randomly picked from an internal table).
6 - Spawn many copies of this object, closely adjacent to each other.
7 - Spawns a small group of staked rogues (picked from an internal table).
8 - Spawn singular copies of this object, extremely far apart.
9 - Spawn many copies of the object, slightly further apart then function 6.
```
InitFn: This controls what happens while the object is active on the map and what initially happens when the object is activated by an approaching player.
```
1 = Shrine (probably responsible for picking a random shrine function to assign to this)
2 = Container (used by urns)
3 = Container (used by chests, probably controlls the lockable part)
4 = Tower Quest Tome (likely checks quest status)
5 = Door (probably used to check whenever it is closed or open)
6 = Crain Stone (likely checks quest status)
7 = Cains Gibbet (likely checks quest status)
8 = Torch / Brazier (makes the object spawn in ON mode)
9 = Inifuss (likely checks quest status)
10 = Unused (spawns in ON mode, walking past it causes fire damage)
11 = Portal (obviously you shouldn't use this)
12 = Permanent Portal (ditto)
13 = Invisible Object (does nothing noticeable)
14 = Torch / Brazier (same as function number 8)
15 = Malus Stand (probably checks quest status)
16 = Well (probably defines how full the well is)
17 = Waypoint (probably checks whenever the waypoint has been activated before)
18 = Jerhyn Placeholder (near entrance)
19 = Jerhyn Placeholder (near palace)
20 = Tainted Sun Altar (probably checks quest status)
21 = Horadric Orifice (probably checks quest status)
22 = Fire (you take fire damage when walking past this)
23 = Lam Esen's Tome (probably checks quest status)
24 = Floor Spikes (stabs you when you stand near it)
25 = Decoy Gidbinn Altar (probably checks quest status)
26 = River of Flame Skeleton (I think it's this, dunno though)
27 = Container (used by Goo Piles)
28 = Spawns patches of gold near the object ()
29 = Arcane Sanctuary Entrance (didn't test, but it's the entrace to the whole place)
30 = Harem Blocker (checks quest status, make you unable to enter)
31 = Quest Chest A (for horadric cube)
32 = Quest Chest B (for horadric scroll)
33 = Quest Chest C (for Staff of Kings)
34 = Troch / Brazier (like function 8, however it will randomly spawn in NU or ON mode)
35 = Guild Vault (will probably crash)
36 = Trophy Case (will probably crash)
37 = Unused (does nothing)
38 = Tyrael's Portal (Act II)
39 = True Gidbinn Altar (probably checks quest status)
40 = Message Board (will probably crash)
41 = Sewer Stairs (the Act III sewers)
42 = Sewer Lever (to open said stairs)
43 = Darkwanderer Placeholder (probably checks quest status)
44 = Gateway to Hell
45 = Bridge to Gateway to Hell (raises when you come near)
46 = Trapped Soul (spawns a trapped soul, from MonStats.txt)
47 = Container (used by chests)
48 = Hell Forge (probably checks quest status)
49 = Hralti Placeholder (near entrance)
50 = Hralti Placeholder (normal spot)
51 = Container (trapped soul)
52 = Natalya Placeholder (normal spot, checks quest status)
53 = Stairs (but which I don't know)
54 = Cain Placeholder (normal spot, checks quest status)
55 = Diablo Placeholder (spawns big-D, if all seals are open)
56 = Diablo's Seal
57 = Container (used by Sparky Chests)
58 = Changes the mode to NU after some time
59 = Related to the Vile Childs the Dark Wanderer spawns.
60 = Compelling Orb (checks quest status)
61 = Cain's Portal
62 = Caged Barbarian's Portal (don't know really)
63 = Ancient Placeholder Alpha
64 = Ancient Placeholder Beta
65 = Ancient Placeholder Gamma
66 = Anya Placeholder (start)
67 = Anya Placeholder (end)
68 = Nihlathak Placeholder (start)
69 = Nihlathak Placeholder (end)
70 = Larzuk Placeholder (for greeting, unused?)
71 = Larzuk Placeholder (normal)
72 = Ancient Altar (probably checks quest status)
73 = Ancient Door (probably checks quest status)
74 = Frozen Anya (probably checks quest status)
75 = Worldstone Chamber Entrance (checks whenever baal is done with his spamming)
76 = Appears to be yet another initFn 8 clone.
77 = Tyrael's Portal (Act IV)
78 = Tyrael's Portal (Act V)
79 = Zoo (the functionality has been pulled from the game)
```
ClientFn: These are special client side functions.
```
1 = Ambient Sound Generator
2 = Rain Ripple
4 = Unused (crashes since it expects modes objects don't have)
5 = Unused (crashes since it expects modes objects don't have)
6 = Unused (crashes since it expects modes objects don't have)
7 = Burning Skeleton (for River of Flame I think)
8 = Unused (does nothing)
9 = Unused (does nothing)
10 = Bubbles
11 = Has to do with Baal's Lair
12 = Has to do with the Arreat Summit
13 = Dunno really
14 = Another burning skeleton thing (for what area?)
15 = Frozen Anya
16 = Worldstone Chamber Gateway
17 = Zoo (nothing)
18 = Zoo Keeper (nothing)
```
Per ObjMode Settings
Note: The following columns come in groups of eight, each of them controls certain aspects of the object individually for each mode the object uses.
```
0 - mode NU
1 - mode OP
2 - mode ON
3 - mode S1
4 - mode S2
5 - mode S3
6 - mode S4
7 - mode S5
```
selectable: Boolean, controls whenever you can select the object (highlight when you scroll over).
```
0 = Unselectable
1 = Selectable
```
FrameCnt: How many frames does the mode in question have, setting this to 0 will make the game skip this mode.
FrameDelta: At what rate is this animation mode played (in 256ths).
cycleAnim: Boolean, probably determines whenever to loop the animation.
Lit: Diameter of the light radius emitted by this object (in subtiles).
BlocksLight: Boolean, whenever or not this object casts a shadow.
```
0 = Don't cast a shadow
1 = Cast a shadow
```
HasCollision: Boolean, whenever or not the game uses collision checking for this mode.
```
0 = Can't walk thru the object
1 = Can walk thru the object
```
Start: At what frame should the animation start playing.
OrderFlag: Controls whenever the object is to be drawn as a physical object, a wall or a floor.
```
0 = Physical object
1 = Floor
2 = Wall
```
Mode: Boolean, controls whenever the object has this animation mode or not.
Parm: Unknown, some parameter used by the object.
Thanks to everyone who has contributed additional info
Paul Siramy
snowknight
Kingpin
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=393]Knowledge Base - Objects.txt[/url]

View File

@ -0,0 +1,35 @@
# D2Mods Knowledge Base: Article 394
# Title: ObjGroup.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=394
ObjGroup.txt
Written by: Nefarius
Written on: Fri Jun 16, 2006 10:14 am
Last modified: Mon Oct 22, 2018 11:47 am
Views: 9687
Description: by Nefarius, restyled by Ogodei
Categories: File Guides (1.10 - 1.14)
GroupName: A reference field for internal use, so you know what kind of objects this line will spawn.
Offset: The unique ID number of this group, this is the number you would use in Levels.txt to assign this object group to a level.
ID0 - ID7: This column contains the unique ID numbers of the objects assigned to this object group.
Density0 - Density7: These fields are related to how densly the level will be filled with this object. These work like the 'MonDen' column in Levels.txt. However, the density of objects is influenced by the objects PopulateFn in Objects.txt to a much higher degree. This column cannot exceed 125, higher values will cause the game to crash.
Prob0 - Prob7: These fields represent the chance that these object will be picked, and work on a direct basis, which means that the value entered in this field is the actual chance for the objects to spawn.
NOTE: Due to this mechanic, setting one of the objects in the group to have a probability of 100% will prevent the other ones from spawning. (it should actually equal 100 for best results, but no single object should have 100, it is best to divide 100 by number of objects and use that value in this field).
Shrines: Whenever to use shrine-logic when spawning this object group in a level, note that the object must not have 'DensityX' assigned and it also needs to use the proper PopulateFn for this to work.
Wells: Whenever to use well-logic when spawning this object group in a level, note that the object must not have 'DensityX' assigned and it also needs to use the proper PopulateFn for this to work.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=394]Knowledge Base - ObjGroup.txt[/url]

View File

@ -0,0 +1,56 @@
# D2Mods Knowledge Base: Article 395
# Title: MonSeq.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=395
MonSeq.txt
Written by: Nefarius
Written on: Fri Jun 16, 2006 4:47 pm
Last modified: Mon Oct 22, 2018 1:15 am
Views: 10814
Description: by Nefarius, restyled by HarvestWombs
Categories: File Guides (1.10 - 1.14)
MonSeq.txt
This file is a softcoded monster sequence table (the character sequences remain hardcoded), each line herein represents one frame of the sequence, a sequence can have 0xFF (255) lines and the file can hold 0xFF individual sequences. The ID of the sequence (the first column) is used to group the lines together to a single record.
sequence: The ID of this sequence when used inside the sequence columns of MonStats.txt, this is also what is used to group the various frames associated with this sequence together.
mode: The animation mode to use for this frame of the sequence (this is an ID pointer from MonMode.txt).
frame: The frame from the associated animation mode that will be used for this frame of the sequence, so if you use A1 as the mode, and use 12 as the frame for your first like, then the monster will use frame 12 as the first frame of the animation, rather then frame 0.
dir: What direction will the above frame be taken from, most animations have 8 directions.
```
0 South West
1 North West
2 North East
3 South East
4 South
5 West
6 North
7 Wast
```
event: What event will this frame trigger.
```
0 No event
1 Melee attack (missiles are only released client-side)
2 Missile attack (melee attacks will deal no damage)
3 Play a sound
4 Launch a spell
```
eol: End of line, this field prevents M$ Excel from messing up the file, if you fill the empty cells of the previous column with 0 this is not needed.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=395]Knowledge Base - MonSeq.txt[/url]

View File

@ -0,0 +1,98 @@
# D2Mods Knowledge Base: Article 396
# Title: Gems.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=396
Gems.txt
Written by: Nefarius
Written on: Wed Jun 21, 2006 5:19 pm
Views: 5790
Description: by Phrozen Heart [written 2000]
Categories: File Guides (1.00-1.06x)
Name: The name of the gem.
Transform: The number for the color the socketed item changes to.
code: The 3 character code that the game uses to represent the item in the other text files.
nummods: Number of magic codes on that gem for each item.
weaponMod1Code: 1st magical property code to apply to the socketed weapon.
weaponMod1Offset: Unknown.
weaponMod1Min: Minimum value for the 1st magical property code to apply to the socketed weapon.
weaponMod1Max: Maximum value for the 1st magical property code to apply to the socketed weapon.
weaponMod2Code: 2nd magical property code to apply to the socketed weapon.
weaponMod2Offset: Unknown.
weaponMod2Min: Minimum value for the 2nd magical property code to apply to the socketed weapon.
weaponMod2Max: Maximum value for the 2nd magical property code to apply to the socketed weapon.
weaponMod3Code: 3rd magical property code to apply to the socketed weapon.
weaponMod3Offset: Unknown.
weaponMod3Min: Minimum value for the 3rd magical property code to apply to the socketed weapon.
weaponMod3Max: Maximum value for the 3rd magical property code to apply to the socketed weapon.
helmMod1Code: 1st magical property code to apply to the socketed helm.
helmMod1Offset: Unknown.
helmMod1Min: Minimum value for the 1st magical property code to apply to the socketed helm.
helmMod1Max: Maximum value for the 1st magical property code to apply to the socketed helm.
helmMod2Code: 2nd magical property code to apply to the socketed helm.
helmMod2Offset: Unknown.
helmMod2Min: Minimum value for the 2nd magical property code to apply to the socketed helm.
helmMod2Max: Maximum value for the 2nd magical property code to apply to the socketed helm.
helmMod3Code: 3rd magical property code to apply to the socketed helm.
weaponMod3Offset: Unknown.
helmMod3Min: Minimum value for the 3rd magical property code to apply to the socketed helm.
helmMod3Max: Maximum value for the 3rd magical property code to apply to the socketed helm.
shieldMod1Code: 1st magical property code to apply to the socketed shield.
shieldMod1Offset: Unknown.
shieldMod1Min: Minimum value for the 1st magical property code to apply to the socketed shield.
shieldMod1Max: Maximum value for the 1st magical property code to apply to the socketed shield.
shieldMod2Code: 2nd magical property code to apply to the socketed shield.
shieldMod2Offset: Unknown.
shieldMod2Min: Minimum value for the 2nd magical property code to apply to the socketed shield.
shieldMod2Max: Maximum value for the 2nd magical property code to apply to the socketed shield.
shieldMod3Code: 3rd magical property code to apply to the socketed shield.
shieldMod3Offset: Unknown.
shieldMod3Min: Minimum value for the 3rd magical property code to apply to the socketed shield.
shieldMod3Max: Maximum value for the 3rd magical property code to apply to the socketed shield.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=396]Knowledge Base - Gems.txt[/url]

View File

@ -0,0 +1,328 @@
# D2Mods Knowledge Base: Article 397
# Title: MonStats.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=397
MonStats.txt
Written by: Nefarius
Written on: Wed Jun 21, 2006 5:37 pm
Views: 6849
Description: by Nefarius [written 2002]
Categories: File Guides (1.08)
Column A Class: the monsters name used as the string code for string.tbl.
Column B namco: additional monster name used in the montype/monstats.txt only.
Column C type: the monsters type (I.e. skeleton, zombie etc)
Column D Descriptor: line for the string code for the monsters special abilities (such as revives fallen etc)
Column E BaseId: the ID number for the monsters type, controls its skills monsters of the same type have the same ID.
Column F PopulateId: the number you need to use in levels.txt in order to spawn this monster.
Column G Spawned: 1 means this monster can be spawned, 0 means it cant.
Column H Beta: reference only, 1 means it was in d2 beta, 0 means it wasn’t.
Column I Code: the token code for this monster type, has no effect in monstats but in montype.txt this controls the monsters graphics.
Column J ClientOnly: this controls if the monster is spawned only client side or only server side, 0 means the server(host) controls this monsters appearance, 1 means only the client can see this monster(client=person who joins a game).
Column K NoMap: Disable in v1.08+, used to make monsters appear on the auto map if set to 1.
Column L SizeX: controls monster overlay dimensions.
Column M SizeY: controls monster overlay dimensions.
Column N Hieght: unknown, seams to control monster height?
Column O NoOverlays: unknown, set to 0 for all classic d2 monsters is used only on a few expansions monsters.
Column P OverlayHieght: unknown, controls the height of the monsters overlay?
Column Q Velocity: controls the monsters walking speed.
Column R Run: controls the monsters running speed(if it can run).
Column S CanStealFrom: controls if you can leech back mana/life from this monster.
Column T ColdEffect: unknown, seams to control how long this monster can be chilled?
Column U Rarity: unknown, probably has no effect.
Column V Level: monster level on normal difficulty NOTE: maximum is not 99 in XyRAX I spawned monsters with lvl 150+.
Column W Level(N): monster level on nightmare difficulty NOTE: maximum is not 99 in XyRAX I spawned monsters with lvl 150+.
Column X Leve(lH): monster level on hell difficulty NOTE: maximum is not 99 in XyRAX I spawned monsters with lvl 150+.
Column Y MeleeRange: the attack range this monsters melee attacks have, limit is probably identical to weapons.txt and is above 50.
Column Z MinGrp: minimum group this monster will appear in.
Column AA MaxGrp: maximum Group the monster will appear in.
Column AB HD: Stands for head 1 probably means the head has more then 1 look (skeletons, corrupted rogues etc) 0 means it doesn’t. (note if you plan to switch graphics for a monster you must make sure these Columns match if not you will have to rename some .cof files for it to work).
Column AC TR: Stands for Torso 1 probably means the torso has more then 1 look (skeletons, corrupted rogues etc) 0 means it doesn’t. (note if you plan to switch graphics for a monster you must make sure these Columns match if not you will have to rename some .cof files for it to work).
Column AD LG: Stands for Legs 1 probably means the torso has more then 1 look (skeletons, corrupted rogues etc) 0 means it doesn’t. (note if you plan to switch graphics for a monster you must make sure these Columns match if not you will have to rename some .cof files for it to work).
Column AE RA: Stands for Right Arm 1 probably means the torso has more then 1 look (skeletons, corrupted rogues etc) 0 means it doesn’t. (note if you plan to switch graphics for a monster you must make sure these Columns match if not you will have to rename some .cof files for it to work).
Column AF LA: Stands for Left Arm 1 probably means the torso has more then 1 look (skeletons, corrupted rogues etc) 0 means it doesn’t. (note if you plan to switch graphics for a monster you must make sure these Columns match if not you will have to rename some .cof files for it to work).
Column AG RH: Probably stands for Right hand for monsters that can hold different weapon types randomly 1 probably means the torso has more then 1 look (skeletons, corrupted rogues etc) 0 means it doesn’t. (note if you plan to switch graphics for a monster you must make sure these Columns match if not you will have to rename some .cof files for it to work).
Column AH LH: Probably stands for Left hand for monsters that can hold different weapon types randomly 1 probably means the torso has more then 1 look (skeletons, corrupted rogues etc) 0 means it doesn’t. (note if you plan to switch graphics for a monster you must make sure these Columns match if not you will have to rename some .cof files for it to work).
Column AI SH: is set for monsters that can use a shield, this is mostly the .cof file missing when you switch graphics between monsters and will require renaming of another .cof file. Works similar to the above Column s.
Column AJ S1: stands for skill 1 .cof file.
Column AK S2: stands for skill 2 .cof file.
Column AL S3: stands for skill 3 .cof file.
Column AM S4: stands for skill 4 .cof file.
Column AN S5: stands for skill 5 .cof file.
Column AO S6: stands for skill 6 .cof file.
Column AP S7: stands for skill 7 .cof file.
Column AQ S8: stands for skill 8 .cof file.
Column AR TotalPieces: how many pieces is the animation made of (refereeing to the HD, TR, LG, RA, LA, RH, LH, SH, S1-8 Columns) .
Column AS SpawnComponents: Probably disable and unimportant due to the fact all monsters are set to 0 for this.
Column AT BaseW: Base Weapon this monster uses (if it can use a weapon).
Column AU, AW, AY, BA, BC AIParam 1-5: determines the AI (Artificial Intelligence) parameters for the monsters behavior.
Column AV, AX, AZ, BB, BD Comment: a comment about the AI parameter about the AIParam Column next to it.
Column BE ModeDH: note does not stand for death if you refere to MonMode.txt DT stands for death DH is not referred in there.
Column BF ModeN: Unknown.
Column BG ModeGH: determines if the monster can be knocked back referring to MonMode.txt.
Column BI ModeA1: determines the first hth (hand to hand) attack of the monster.
Column BJ ModeA2: determines the second hth (hand to hand) attack of the monster.
Column BK ModeB: unknown does not stand for blocking, blocking would be BL.
Column BL ModeC: unknown.
Column BM ModeS1: determines the first skill of the monster.
Column BN ModeS2: determines the second skill of the monster.
Column BO ModeS3: determines the third skill of the monster.
Column BP ModeS4: determines the fourth Skill of the Monster.
Column BQ ModeDD: determines the monster after its death (i.e. corpse on ground).
Column BR ModeKB: doesn’t determine if it can be knocked back for more info see MonMode.txt.
Column BS ModeSQ: sequence, seams to be unused since in MonMode.txt sequence is set to xx which means unused.
Column BR ModeRN: determines if the monster can run.
Column BU ElMode: base elemental attack, such as cold hit, fire hit etc, 4 means on hit didn’t test others yet, this is one of the Columns I used to make my blue skeletons in XyRAX do cold damage.
Column BV ElType: elemental damage type, like in skills, missiles.txt note, the number set for doom knights means random elemental damage.
Column BW ElOver: unknown, better to leave it alone if you cut/paste an attack.
Column BX ElPct: the percent that the monster will use its elemental enchantment on a melee attack.
Column BY ElMinD: the minimum damage of this attack.
Column BZ ElMaxD: the maximum damage of this attack.
Column CA ElDur: the duration of the attack effect if poison or cold.
Column CB-CI MissA1, A2, S1, S2, S3, S4, C, SQ: unknown, seams to have to do if the monster misses you with an attack.
Column CJ A1Move: seams to have to do if the monster can move wile it uses its first attack.
Column CK A2Move: seams to have to do if the monster can move wile it uses its first attack.
Column CL-CO S1, S2, S3 S4Move: seams to have to do if the monster can move wile using one of its skills.
Column CP CMove: unknown.
Column CQ Aligh: set this to 1 to make any monster fight for you, tends to cause trouble if u set a act boss to be an ally.
Column CR IsMelee: is this monster a primary melee attacker? 1 means yes 0 means no.
Column CS IsSel: determines if the monster is highlight able if you scroll over it and click on it.
Column CT IsSel2: only some npcs have set this, I am not sure but it might highlight them on the auto map with there name above there heads on the map like npcs, correct me if I m wrong on this one.
Column CU NeverSel: determines if the monster can never be highlighted even with IsSel set to 1.
Column CV CorpseSel: determines if you can use skills requiring a corpse on this monsters corpse, note all skills except revive and rise skeletons will work on act bosses.
Column CW IsAtt: can this monster be attacked? 1 means yes 0 means no.
Column CX IsNPC: is this a NPC? 1 means yes 0 means no.
Column CY IsCritter: is this monster a dummy? Like chickens etc.
Column CZ InTown: if this is set to 1 it means the monster CAN follow you into town a real fun and confusing thing in open games.
Column DA Bleed: determines if the monster bleeds if you hit it, note to reduce lag set all monsters to 0.
Column DB Shadow: does this monster have a shadow? Try as for bleed to set this to 0 to reduce lag.
Column DC Light: how much light radius does this monster have around itself.
Column DD NoUniqueShift: unknown, set only for a few npcs.
Column DE CompositeDeath: not 100% sure here its set only to 1 for monsters that can be revived by other monsters, such as fallen, skeletons etc.
Column DF, DI, DL, DO, DR Skill1-5: determines the monsters skill (only for reference the monsters skills are hardcoded inside there ID numbers).
Column DG, DJ, DM, DP, DS Skill1-5Seq: unknown but stands for Skill sequence.
Column DH, DK, DN, DQ, DT Skill1-5Lvl: the base skill level of this monsters skill.
Column DU-DW Light R,G,B: stands for Red, Green, Blue does not determine monsters color since that’s determined inside the palshift.dat files for that specific monster, you will have to hex edit these pallets or switch between them to change a monsters color.
Column DX-EO monster resistance Columns: for every difficulty there is a different sequence of Columns like DamageResist, DamageResist(N), DamageResist(H) this is the place to set the 50% physical resist to 0 on hell to remove this penalty. Note not like many ppl thought immunes are NOT hardcoded just set the monsters with Columns with the value 100 in there to less then 100 and you have removed all he immunes.
Column EP DamageRegen: damage regeneration, sets the mount of hit points the monster can regenerate don’t set this to high or you might be in a battle with a specific monster for VERY long.
Column EQ eLUndead: is this monster a regular undead (zombies, skeletons).
Column ER eHUndead: is this monster a caster undead (greater mummies, vampires etc).
Column ES eDemon: is this monster a demon 1 means yes 0 means no.
Column ET eMagicUsing: is this monster using magic skills.
Column EU eLarge: is this monster large? (urdars, threshers).
Column EV eSmall: is this monster small? (fallen, fetish).
Column EW eFlying: can this monster fly (move above water, lava), set this to 1 for lets say a golem and yes it will chase those finger mages on river of flame all thru the lava.
Column EX eOpenDoors: can this monster open doors? 1 means yes 0 means no.
Column EY eSpawnCol: is this monster area restricted (mosquito, frogs , water watchers) set it to 0 to spawn the monster thru levels.txt.
Column EZ eBoss: NOTE do NOT set this for a monster that doesn’t has this set already! It will cause a 100% crash since the boss does not appear in the boss table in a .dll.
Column FA PixHeight: how many pixels is this monster high?
Column FB Interact: for npcs (i.e. if you can speak to them etc). also determines if the name appears in a life bar or not.
Note the following Columns will be displayed for ever difficulty separate but since that would just be the same explanation I will just bring them for normal difficulty.
Columns FC-GP
MinHP: minimum value of hit points (life) this monster has.
MaxHP: maximum value of hit points (life) this monster has.
AC: armor class, the amount of DR(defense rating) this monster has.
Exp: the amount of experience you gain when killing this monster if it is spawned on level load (monsters hatching from eggs or nests DON’T give you exp even if they have a billion in here).
ToBlock: (only appears once) how much percent chance to block does this monster have. Note, not like showed on the chaos sanctuary some monster WILL block even if they don’t use a shield such as Diablo.
A1MinD: the minimum damage for the first physical attack of this monster.
A1MaxD: the maximum damage for the first physical attack for this monster.
A1ToHit: how much AR (attack rating) does the monster have for this attack.
A2MinD: the minimum damage for the second physical attack of this monster.
A2MaxD: the maximum damage for the second physical attack for this monster.
A2ToHit: how much AR (attack rating) does the monster have for this attack.
S1MinD: the minimum damage for the first skill.
S1MaxD: the maximum damage for the first skill.
S1ToHit: the chance to hit for the first skill.
Now back to Column by Column style
Column CQ-HB Treasureclass ### (where ### stands there is a number and difficulty setting but in general all of these work similar), enter the row name from TreasureclassEx to make it drop a specific treasureclass.
Column HC SpawnPctBonus: set this to higher values then 0 and the monster will drop more items.
Column HD soft: unknown.
Column HE heart: was used to spawn the heart organs now disabled since MonItemPercent.txt has no function any more.
Column HF BodyPart: Was used to spawn body parts now disabled since MonItemPercent.txt has no function any more.
Column HG killable: can this monster be killed? 1 means yes 0 means no, set this to 0 for golems or Diablo to cause confusion in multiplayer games on open, such as lamers that want to close your game cant kill Diablo now, and you can have a infinite number of golems, but take care, if u have about 50 golems they will over load the graphical limits and cause clients to drop.
Column HH Switch: this has to do with revive set it to 1 to revive any monster.
Column HI Restore: unknown
Column HJ NeverCount: unknown
Column HK HitClass: open HitClass.txt for more info.
Column HL SplEndDeath: unknown
Column HM SplGetModeChart: unknown
Column HN SplEndGeneric: unknown
Column HO SplclientEnd: unknown, has to do with client/server issues on multiplayer.
Column HP DeadColission: determines if the corpse can be walked above or not (Duriel etc).
Column HQ unflatdead: unknown maybe has to do with a monster exploding when its dead.
Column HR BloodLocal: unknown
Column HS DeathDamage: does this monster do damage when it dies (undead fetishes etc)
Column HT Petignore: unknown. Maybe determines if the monster will go strait for the player and not for his minions.
Column HU NoGfxHitTest: unknown.
Column HV HitTestTop: unknown.
Column HW HitTestLeft: unknown.
Column HX HitTestWidth: unknown.
Column HY HitTestHeight: unknown.
Column HZ GenericSpawn: might have to do if the monster can appear only in act 5 of d2x or not.
Column IA AutomapCel: might be a replacement for the NoMap Column not tested thought.
Column IB SparsePopulate: untested.
Column IC zoo: seams to be set for revive able like skeletons, fallen unknown what its function is.
Column ID Object collision: unknown.
Column IE inet: Unknown.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=397]Knowledge Base - MonStats.txt[/url]

View File

@ -0,0 +1,152 @@
# D2Mods Knowledge Base: Article 398
# Title: Misc.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=398
Misc.txt
Written by: Nefarius
Written on: Wed Jun 21, 2006 6:14 pm
Views: 5999
Description: by Phrozen Heart
Categories: File Guides (1.00-1.06x)
Name: The name of the item
namco: An alternate name for the item
level: Minimum level at which the item will drop based on the current monster levels
Rarity: How often the item will drop (1=very common, 4=very rare?)
Spawnable: Whether or not the item is spawnable by the chosen vendors
completed: Just a Blizzard comment
speed: Unknown
nodurability: Whether or not the item is indestructable
uniqueonly: Whether or not this item only appears as a unique and not a regular item. eg. Horadric Staff
cost: How much the item costs to buy (selling price is one quarter of this value)
code: The item's reference code and also it's string key from the string.tbl file
alternategfx: Not sure how this works exactly
spelloffset: Unknown
component: The in-game body location for this item eg. The Bone Helm would change your characters head gfx
bodyLoc1: Where can this item be placed in your inventory eg. Head slot, belt slot, in belt slots etc
bodyLoc2: Just space for another value from bodyLoc1 if item can placed in multiple locations
invwidth: How many inventory squares this item's width takes up
invheight: How many inventory squares this item's height takes up
flippyfile: The name of the animation file the item uses in-game when it's dropped
invfile: The DC6 file that this item uses in your inventory
uniqueinvfile: The DC6 file that the unique version of this item uses in your inventory
special: Another Blizzard comments field
Transmogrify: Whether or not the item can be right clicked and be changed into another item
TMogType: The 3 character code which respresents the item that this item becomes when right clicked (see Transmogrify)
TMogMin: The minimum quantity appearing of the item in Transmogrify: Whether or not the item can be right clicked and be changed into another item the TMogType field
TMogMax: The maximum quantity appearing of the item in Transmogrify: Whether or not the item can be right clicked and be changed into another item the TMogType field
useable: Whether or not this item can be 'used' by right clicking it eg. potions, scrolls etc
throwable: Whether or not the item can be thrown
type: The group this item belongs to eg. Books, potions etc
sound: The number of the sound the item makes when dropped or moved in the inventory.
unique: Unknown
transparent: Unknown
transtbl: Used for gems to apply their 'color' to a socketed item. Not sure of the values, but 5 seems to make the item change to the appropriate color
quivered: Whether or not the item requires a quiver of arrows/bolts
lightradius: The light radius of the item (the higher the brighter)
belt: Whether or not the item can be placed in a belt slot
autobelt: Whether or not the item appears in your belt when picked up
stackable: Whether or not the item can be stacked
minstack: Minimum number in stack found for stackable items
maxstack: Maximum number in stack found for stackable items
quest: Which quest this item is related to (if a quest item)
missiletype: What missile type this item uses when this item is thrown.
spellicon: Which spellicon should be used, when you use the item ( eg. the throwing-icon for jav's )
durwarning: Which icon appears for low durability warnings
qntwarning: How low the durability of the item can get before it starts warning you
gemoffset: Unknown
BetterGem: (Gems only) What gem code is the next step up when it's upgraded by a shrine or cube
bitfield1: Unknown
{vendorname}Min: Minimum number of the item that {vendorname} will have for sale if the item is spawnable
{vendorname}Max: Maximum number of the item that {vendorname} will have for sale if the item is spawnable
{vendorname}MagicMin: Minimum number of magical versions of the item that {vendorname} will have for sale if the item is spawnable
{vendorname}MagicMax: Maximum number of magical versions of the item that {vendorname} will have for sale if the item is spawnable
shopMagicLvl: Not 100%, somehow relates to the level of the prefixes that the magical items sold by {vendorname} can have
Source Art: Unknown
Game Art: Unknown
Amazon: Unknown
Paladin: Unknown
Barbarian: Unknown
Amazon: Unknown
Necomancer: Unknown
Sorceress: Unknown
Transform: Not certain, related to either the unique in-game gfx or a flag as to whether the item color shifts for magical versions of itself
InvTrans: Not certain, related to either the unique inventory gfx or a flag as to whether the item color shifts for magical versions of itself
SkipName: Unknown
NightmareUpgrade: When this item appears in Nightmare difficulty, the item x rows down will actually appear instead (x being the value entered)
HellUpgrade: When this item appears in Hell difficulty, the item x rows down will actually appear instead (x being the value entered)
mindam: If useable as a weapon, what is the minimum damage caused
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=398]Knowledge Base - Misc.txt[/url]

View File

@ -0,0 +1,401 @@
# D2Mods Knowledge Base: Article 400
# Title: Adding New Items To Armor.txt
# URL: https://d2mods.info/forum/kb/viewarticle?a=400
Adding New Items To Armor.txt
Written by: Nefarius
Written on: Fri Aug 04, 2006 12:21 pm
Last modified: Sat Jan 06, 2018 2:15 am
Views: 8554
Description: by 54x
Categories: Tutorials (1.08)
OK, there are two ways to do this: either you can copy
an item, and change the attributes you feel confident
with, or you can start totally from scratch. I'm going
to deal with the second one, because it will answer a
lot more questions.
I'll also be telling you about columns by their names
and excel letter assignments, because with excel you
can skip to any column you know the letter of with
that nifty little box in the topleft corner.
The first column here is purely cosmetic, however
you'll want to put the name you have in string.tbl
here, too, so you know what your item is.
Next to it is version. If for any reason you'd like to
disable an item, put 1 or 100 in this column. You can
enable x-pack items in CD2 by changing their versions
to 0.
Compactsave is simply set to 0 for everything. I don't
think armor use this, and I have no idea why it is
still included in the 1.08 texts...
Rarity gives a little control over the frequency of
the item's drop, but not much. It is mostly controlled
in treasureclass. Only excessively high numbers will
have an effect here (notice gems have double-digit
numbers, and they drop less frequently)
Spawnable is always set to 1 in 1.08- however if you
simply copied a row to make an exceptional version of
one of you items, set it to 0 to save yourself the
work of editing shopkeeper entries.
Minac and Maxac are what control armor DR. If set to
the same figure your armor will ALWAYS generate that
amount of defense, and if set differently then the
formula to find out the range is: Maxac - Minac - 1
for CD2, and Maxac - Minac for D2X.
Absorbs, I believe is subtracted from monster AR...
not sure though, it does have some non-DR defensive
value though
Speed controls how this armor slows the character.
You'll notice most heavy armors have 10, and that
mails have 5. You can make an armor speed someone up
by putting -5 or -10 or negative anything here.
Reqstr is how many points in strength you need to
equip the armor.
Block is only for shields, and is the block % in CD2
without class modifiers (if they look too small, this
is why), and is the block % in D2X without class
modifiers and without accounting for level and dex.
Durability and nodurability explain themselves.
Setting nodurability to 0 allows durability, and
setting it to one will make the item indestructable.
Setting durability to won't work without setting
nodurability to 1.
Level is the itemlevel, used for determining what sort
of mods it should get and whether monsters should
realistically be able to drop this item.
level requirement, cost, and gamble cost, should all
explain themselves.
Code is VERY important. It is the source of most of
the bugs when you first try to make a new item. Change
this to an UNUSED code. It may not be used in
misc.txt, armor.txt, or weapons.txt. Exceptional and
Elite items as a general rule either have x, u, or a
number in front of their code. You will need to make
an entry in patchstring.tbl with the same name as this
code, and then put your item's name in it, if you want
to avoid: 'not xlated call ken' errors.
Magic level is currently only set on circlets - I
believe it makes the level of affixes on the item a
bit more concrete.
Auto prefix is covered in detail in the exclusive item
tutorial. This column makes the game pick an affix
from automagic.txt, with the group number you put in
this column, every time the item is generated. This
could make for interesting items, such as elf/drow
chainmail that gains/loses defense in the night
respectively...
alternategfx is what graphics the game uses on your
character to display an item. You CAN'T add a new code
in here at the moment. You will have to copy this from
an item you like the look of. Don't copy it from the
expansion columns if your mod is for CD2. It doesn't
contain those graphics.
Openbetagfx does nothing. It's a reference column.
Fill it if you like
Normal, uber, and ultra codes need to be filled in the
same for the normal, exceptional, and elite versions
of items. For skull caps they are skp, xkp, and ukp
respectively- if the x and u codes you want are taken,
use 1-0 instead (note: blizzard have avoided using 0
in their text files for codes, so if you want to be
SURE a code won't conflict, use a 0 in front of it)
Note that these codes will need to match an actual
item. I don't know what will happen if you leave them
blank, but if you point to a version 1/100 item the
item won't upgrade.
Spelloffset is another 'set to 0 and ignore' column,
as far as I know.
Component should be copied from an item of the same
type. If you're making a helm, use the same entry as
for one of the helms.
Invwidth and invheight are the size of an item in your
inventory. Long staves are 1 width and 4 height, for
example.
Hasinv is set to 1 for items with sockets, 0 for those
without. I'd follow this rule.
Gemsockets is the number of sockets this particular
item can have.
Gemapplytype controls whether the item uses helm,
shield, or weapon socketing affects. (helm and armor
use the same type, dispite getting different listings
on gem descriptions)
Flippyfile is the graphic this item has when dropping.
I'm not sure if we can make new ones at the moment,
but the codes you put in this column match the files
that look like: 'flpltp.dc6.'
Invfile is the filename of the item graphics to use.
If you've inserted your own, use it's file name, and
insert the .dc6 file to data\global\items\.
Uniqueinvfile and Setinvfile work the same as invfile,
except they display only when they item is set or
unique.
The next six columns are for body armors only- press
'del' in these columns if you are making an item that
is not a body armor. Otherwise, 0 is the 'nude'
graphic for this part of the character, 2 is the fully
decked out one. You'll notice that in D2 each
combination isn't unique. You can modify it so that
you can tell what armor someone is wearing by their
ingame graphics, if you want
The next file columns should be set to 0. They were
probably kept from an early stage in programming when
weapons.txt and armor.txt were the same file.
Type should match one of the ones in itemtypes.txt. If
you don't want to use a new one, simply go to a
similar item that you used for your 'component'
column, and copy it's entry.
Sound is the sound the item makes when it is moved in
your inventory.
Unique should be set to 0. It is only used for quest
items, or items, for some odd reason, you would like
to ONLY show up as unique.
Not sure if transperent does anything. Set it to 1 if
you'd like to experiment. Otherwise simply zero it and
ignore it.
transtbl is set to 5. Do this, then ignore it
Quivered was inherited from weapons.txt. Set to 0 and
ignore.
Lightradius COULD be used to make this item give you a
larger light radius, without it listing this quality.
Set it to 0 unless you want to make some cool
always-glowing item
Belt is used ONLY for belt types (or another itemtype
mimicing belts), and refers to a row in belts.txt. Set
this to the same as the belt you'd like to mimic the
capacity of.
Quest and missiletype can be set to 0 and ingored.
Durwarning is when the armor indicated shows up,
telling the player their armor is damaged.
qntwarning is set to 0 and ignored in armor.txt.
mindam and maxdam are for shields. They control smite
damage.
Set gemoffset to 0.
Bitfield should mimic a similar item. I have no idea
what it does, but it seems to vary.
The next million columns control how items appear at
NPCs. NPCmin and NPCmax control how many
normal/superior/damaged/socketed items show up,
NPCmagmin and NPCmagmax control how many magic ones
show up. If you are adding a lot of items, I suggest
setting the min columns for every item to 0, thus
NEVER allowing the shopkeepers to be so full they
crash the game.
I just set NPCmaglevel to 1 if the item is sold, 255
if it isn't. I'm not sure if changing it otherwise
will do much.
Sourceart and Gameart ignored. Press 'del' in them if
you accidentally add something.
Transform and invtrans have something to do with how
the game processes the graphics files. Mimic a similar
item for this.
Skipname should be set to 0. This may give you bugs if
you set it to 1.
Nightmareupgrade and Hellupgrade will replace this
item with another at vendors in nightmare and hell. So
if you want to make gambling in higher difficulties
obsolete, set these to it's exceptional and elite
codes
Mindam and Maxdam here control smite damage. I'm not
sure which one is the one that is read, so set them
both.
Nameable is whether the naming quest reward in D2X can
be used on this item.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=400]Knowledge Base - Adding New Items To Armor.txt[/url]

View File

@ -0,0 +1,74 @@
# D2Mods Knowledge Base: Article 403
# Title: DC6 Graphic Tutorial
# URL: https://d2mods.info/forum/kb/viewarticle?a=403
DC6 Graphic Tutorial
Written by: Nefarius
Written on: Fri Aug 04, 2006 12:30 pm
Views: 7335
Description: By DigiBo
Categories: Tutorials (1.00-1.06x)
Many people have asked me(and other people) how to add items in Diablo 2.
In this tutorial I won't explain how to add new items,just new graphics for the items.
1.Tools
For my graphics I make .pcx files and convert them in .dc6.At http://www.phrozenkeep.com
you can find Diablo 1 graphics in .pcx format.I used some of the in my mod because they
are very easy to convert and look great.You can start from there then try making your own
graphics.To convert the .pcx in .dc6 you need DC6CON,you can find it at http://www.phrozenkeep.com.
For editing the .pcx files(you will need to edit them even if they are the complete D1 graphics) I use
Paint Shop Pro 7.You can use any other program able to edit .pcx files.The last thing you need is the palette.
On my page you will find the palette I use for Paint Shop Pro 7.If you have other version of PSP or you use
another program you can make your own palette - just follow the tutorial at http://www.phrozenkeep.com
2.Prepaering the picture
I repeat - I use PSP to edit the pics and I can't help you with other programs.
First open the picture and apply the palette(you may need switching to 256 colors).If you are making
your own pictures first apply the palette then start making the pic.Now make color 0 transparent
(color 0 - Pure Black R-G-B 0-0-0).If there are parts of the background which don't become transparent just
choose Pure Black and correct them.It is possible that some black parts of the picture to become transparent.
Make them a color near the black but not Pure Black.When changing the palette some parts of the picture may become
strange so you will need to fix them.After everything is ready save the picture.
3.Converting
Now use DC6CON to convert the picture.Use 'dc6con [filename] -transcol 0'.You will have the dc6 now.
You may want to make the dc6 back to pcx to check is everything ok.If the new pcx looks ok the dc6 is ready.
4.Finishing
Rename the dc6 to inv***.dc6(where *** is what you want).I think that D2 won't be able to read the graphic if
there are more than 3 characters after 'inv'.Now use mpq2k(found at
http://www.campaigncreations.com/starcraft/mpq2k
and http://www.phrozenkeep.com too)to put the file in your patch_d2.mpq
Find a good tutorial about weapons.txt or armor.txt and make a new item with the new graphic.
Link to this article: Select all
[url=https://d2mods.info/forum/kb/viewarticle?a=403]Knowledge Base - DC6 Graphic Tutorial[/url]

Some files were not shown because too many files have changed in this diff Show More