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:
parent
cc12e7bc66
commit
4294a16a48
|
|
@ -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 |
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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]
|
||||
|
|
@ -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
Loading…
Reference in New Issue