• 2008阅读
  • 5回复

Object Drop Principle(瓶瓶罐罐等掉落物品的原理) [复制链接]

上一主题 下一主题
 
发帖
4422
金钱
748
91币
0
信誉
0
资产
0 IST
在线时间
1314 小时
注册时间
2007-11-01
最后登录
2022-05-14
只看楼主 倒序阅读 使用道具 楼主  发表于: 2008-05-14 16:57:08
— 本帖被 redseal 执行加亮操作(2008-05-22) —
关键词: pk
本文转自impk, 原帖地址:http://impk.blizzard.cn/ShowTopic-635426-34

游戏中有各种各样的目标(object),包括箱子,尸体,石头,陷阱,金钱等等,他们的物品掉落规则根据他们在object.txt中initFN(initiationFN)和 controlFN 这两个标识的不同而不同。有些object看起来可能一样,但是事实上他们是不同的object,initFN和 controlFN 标识不同,因而在物品掉落过程中会使用不同的初始值(initiation)和控制函数(control)。而有些外形不同的object则可能使
用相同的初始值(initiation)和控制函数(control)。在object.txt中共有接近600种object,本文不打算将他们一一列出,而是在initFN和 controlFN 标识的基础下,简述object drop的原理。文章最后将指出大家所关心的宝箱(sparkly chest,OperateFn=4, InitFN=57)的特殊掉落规则作为例子。

因为我一直在玩英文版,加上很多东西不太好直接翻,所以一些英文名称所代表的东西还请大家自己到游戏中去对照寻找。
最后想说的是看这篇帖子,需要对TC系统和mf过程已经有足够的认识。
发帖
4422
金钱
748
91币
0
信誉
0
资产
0 IST
在线时间
1314 小时
注册时间
2007-11-01
最后登录
2022-05-14
只看该作者 沙发  发表于: 2008-05-14 16:57:40
一.initFN and controlFN
首先需要了解一下不同的initFN and controlFN分别控制的什么object
initFN:
initfn 2, 其他initFN不能处理的object都归它处理。
initfn 3, 主要用于处理chest。
initfn 57, 用于处理sparkly chest和special chest(就是宝箱类,很多箱子都是special chest,比如act2的Arcane Sanctuary场景有三个方向是以箱子作为结束的。那些箱子也是由initfn 57处理。更多的细节在object.txt中查找)
initfn 27, 用于处理sand maggot lair中的goo piles(就是看上去是绿色的,粘粘的)
initfn 28 ,用于地上摆放着的gold的生成

controlFN
operatefn 4, 主要用于处理chest,包括sparkly chest 和special chest。同时也用来处理ratnest(老鼠窝), caskets(棺材) in arcane sanctuary, hidden stashes in act 5, tombs, and some dead bodies.
operatefn 1, 用来处理绝大部分的棺材,石馆什么的。caskets, beds and sarcophaguses
operatefn 3, urns(瓮), rock piles, baskets(篮子) and jars
operatefn 5, barrels(木桶)
operatefn 14, crates(柳条箱), rogue corpses(rogue的尸体), jugs, rock piles, logs(原木), boulders, stashes, cocoons(茧), goo piles, dead guards and some more.
operatefn 26, bookshelves(书架)
发帖
4422
金钱
748
91币
0
信誉
0
资产
0 IST
在线时间
1314 小时
注册时间
2007-11-01
最后登录
2022-05-14
只看该作者 板凳  发表于: 2008-05-14 16:58:24
二.TC选择。
所有的object在这里是相同的。
选择的原理:在TearsureClas**屏蔽词语**.txt中(Ex是指资料片)有关于箱子的TC定义,其命名规则如下:
"Act "+act_number+" "+difficulty_code{"","(N)","(H)"}+" Chest "+area_code{"A","B","C"}
比如hell难度下act3的object有以下三个TC:Act 3 (H) Chest A,Act 3 (H) Chest B,Act 3 (H) Chest C。
每一act都有A,B,C三种TC,系统按照如下规则确定到底该object属于a,b还是c:
首先,对于每一act系统会选取某一场景,将其alvl作为最高值;同时选择另一场景,将其alvl作为最低值。
然后,根据最高值和最低值将他们中间的区域3等份。
最后,考虑待判定TC的object所在的场景的alvl是属于以上3个区间中的那一个。
    第一个则为A,第二个则为B,第三个则为C。

对于每一act所选取的作为最高值和最低值的场景是固定的。
Blood Moor = act 1 (最低值)
Catacombs Level 4 = act 1 (最高值)
Rocky Waste = act 2 (最低值)
Duriel's Lair= act 2 (最高值)
Spider Forest= act 3 (最低值)
Durance of Hate Level 3= act 3 (最高值)
Outer Steppes= act 4 (最低值)
Chaos Sanctum = act 4 (最高值)
Harrogath = act 5 (最低值)
World stone Chamber = act 5 (最高值)

note:1.其实这里选取的最高/低值并不是真正的最高/低值,如act1的真正最高值应该是act1的一些85场景      2.比较特殊的是act5的最低值,系统选择了alvl=0的harrogath,导致act5的所有object TC几乎都是选择act5的C。

通过以上规则算出的各个场景object TC选择如下。
普通    噩梦    地狱      场景名称
Act 1
A________A________A________Blood Moor
A________A________A________Cold Plains
A________A________A________Stony Field
B________B________A________Dark Wood
B________B________B________Black Marsh
B________B________B________Tamoe Highland
A________A________C________Den of Evil
A________A________C________Cave Level 1
A________A________B________Underground Passage Level 1
B________B________C________Hole Level 1
B________B________C________Pit Level 1
A________A________C________Cave Level 2
A________B________C________Underground Passage Level 2
B________B________C________Hole Level 2
B________C________C________Pit Level 2
A________A________C________Burial Grounds
A________A________C________Crypt
A________A________C________Mausoleum
A________A________A________Forgotten Tower
B________B________C________Tower Cellar Level 1
B________B________C________Tower Cellar Level 2
B________C________C________Tower Cellar Level 3
B________C________C________Tower Cellar Level 4
B________C________C________Tower Cellar Level 5
B________C________B________Monastery Gate
C________C________B________Outer Cloister
C________C________B________Barracks
C________C________C________Jail Level 1
C________C________C________Jail Level 2
C________C________C________Jail Level 3
C________C________C________Inner Cloister
C________C________C________Cathedral
C________C________C________Catacombs Level 1
C________C________C________Catacombs Level 2
C________C________C________Catacombs Level 3
C________C________C________Catacombs Level 4
B________B________C________Tristram
C________C________C________Moo Moo Farm
Act 2
A________A________A________Rocky Waste
B________A________A________Dry Hills
C________B________A________Far Oasis
C________B________B________Lost City
C________B________B________Valley of Snakes
C________C________C________Canyon of the Magi
A________A________A________Sewers Level 1
A________A________A________Sewers Level 2
A________A________A________Sewers Level 3
A________A________A________Harem Level 1
A________C________B________Harem Level 2
A________C________B________Palace Cellar Level 1
A________C________B________Palace Cellar Level 2
A________C________B________Palace Cellar Level 3
A________A________B________Stony Tomb Level 1
A________A________C________Halls of the Dead Level 1
A________B________C________Halls of the Dead Level 2
A________C________C________Claw Viper Temple Level 1
A________A________C________Stony Tomb Level 2
A________B________C________Halls of the Dead Level 3
A________C________C________Claw Viper Temple Level 2
C________B________C________Maggot Lair Level 1
C________B________C________Maggot Lair Level 2
C________B________C________Maggot Lair Level 3
C________B________C________Ancient Tunnels
C________C________C________Tal Rasha's Tomb
AC________C________C________Tal Rasha's Tomb
C________C________C________Tal Rasha's Tomb
C________C________C________Tal Rasha's Tomb
C________C________C________Tal Rasha's Tomb
C________C________C________Tal Rasha's Tomb
C________C________C________Tal Rasha's Tomb
C________C________C________Duriel's Lair
A________C________C________Arcane Sanctuary
Act 3
A________A________A________Spider Forest
A________A________B________Great Marsh
B________A________B________Flayer Jungle
B________B________B________Lower Kurast
B________B________C________Kurast Bazaar
C________B________C________Upper Kurast
C________C________C________Kurast Causeway
C________C________C________Travincal
A________A________A________Spider Cave
A________A________A________Spider Cavern
A________B________B________Swampy Pit Level 1
A________B________C________Swampy Pit Level 2
B________B________C________Flayer Dungeon Level 1
B________B________C________Flayer Dungeon Level 2
A________B________C________Swampy Pit Level 3
B________B________C________Flayer Dungeon Level 3
C________B________C________Sewers Level 1
C________C________C________Sewers Level 2
C________C________C________Ruined Temple
C________C________C________Disused Fane
C________C________C________Forgotten Reliquary
C________C________C________Forgotten Temple
C________C________C________Ruined Fane
C________C________C________Disused Reliquary
C________C________C________Durance of Hate Level 1
C________C________C________Durance of Hate Level 2
C________C________C________Durance of Hate Level 3
Act 4
A________A________A________Outer Steppes
A________A________B________Plains of Despair
B________B________C________City of the Damned
B________B________C________River of Flame
C________C________C________Chaos Sanctum
Expansion
Act 5
A________A________A________Harrogath(不过Harrogath没有object)
B________C________C________Bloody Foothills
B________C________C________Rigid Highlands
B________C________C________Arreat Plateau
C________C________C________Crystalized Cavern Level 1
C________C________C________Cellar of Pity
C________C________C________Crystalized Cavern Level 2
C________C________C________Echo Chamber
B________C________C________Tundra Wastelands
C________C________C________Glacial Caves Level 1
C________C________C________Glacial Caves Level 2
C________C________C________Rocky Summit
C________C________C________Nihlathaks Temple
C________C________C________Halls of Anguish
C________C________C________Halls of Death's Calling
C________C________C________Halls of Vaught
C________C________C________Hell1
C________C________C________Hell2
C________C________C________Hell3
C________C________C________The Worldstone Keep Level 1
C________C________C________The Worldstone Keep Level 2
C________C________C________The Worldstone Keep Level 3
C________C________C________Throne of Destruction
C________C________C________The Worldstone Chamber

至于这些TC名称代表了什么,这里作个简单介绍:
1.任何object的TC都包括4 pick,即最多掉4件物品。把包含4-picks的一次drop称为对TC的一次调用。(这个概念在后面的宝箱的物品掉落规律中要多次用到,为什么有些箱子能掉很多东西,远远大于4,因为他们在drop过程中会多次调用某一TC)
2.任何object的TC都包括nodrop参数,即每一次pick都有可能选择不掉东西。
3.我列出了地狱难度下,不同act的A,B,C TC能掉落的最高rune和最高qlvl的物品,以便大家对A/B/C掉落物品的优劣有直接的印象。
  TC 名称                      rune                qlvl
Act 1 (H) Chest A                26                  63
Act 1 (H) Chest B                26                  66
Act 1 (H) Chest C                26                  66
Act 2 (H) Chest A                28                  69
Act 2 (H) Chest B                28                  69
Act 2 (H) Chest C                28                  69
Act 3 (H) Chest A                30                  72
Act 3 (H) Chest B                30                  75
Act 3 (H) Chest C                30                  75
Act 4 (H) Chest A                32                  78
Act 4 (H) Chest B                32                  78
Act 4 (H) Chest C                32                  78
Act 5 (H) Chest A                33                  84
Act 5 (H) Chest B                33                  87
Act 5 (H) Chest C                33                  87
至于普通和噩梦有兴趣的朋友可以到TearsureClas**屏蔽词语**.txt中查找。
发帖
4422
金钱
748
91币
0
信誉
0
资产
0 IST
在线时间
1314 小时
注册时间
2007-11-01
最后登录
2022-05-14
只看该作者 3楼 发表于: 2008-05-14 16:58:52
三.object的物品掉落的一般过程。
1.再创建游戏的过程中,地图被创建,同时确定所有的object的位置。

2.对于所有合适的object检测它是否变为一个陷阱。变为陷阱的几率是(monlvl1/8 + 5) %.其中monlvl1是从levels.txt中读取,代表普通难度下D2C模式该场景的alvl。如果变为陷阱,则等几率变为8种不同陷阱中的任何一个。注意,有些场景的陷阱只能变为8种陷阱中的少数几个,如sand maggot lair。

3.对于所有合适的chest检测它上锁的几率。上锁的几率是(monlvl1/2 + 8) % ,其中monlvl1同上。未上锁的普通箱子在drop过程中只对TC进行一次调用,而上锁的箱子会对TC进行两次调用。所以上锁的箱子会比不上锁的掉更多的东西

4.按照前面的法则,确定该object的TC。

5.接下来的部分是object中最为特殊的部分。
系统中有些dlls函数会检测不同object的controlFN ,从而确定一个X值,使得该object有(100-X)%的几率不掉任何装备,X%的几率按照选定的TC进行drop。
以下是一些object的X值。
operatefn1, caskets, sarcophagues and beds
始终按照选定TC进行drop。但是有18.07%的几率生成怪物。

operatefn3, urns, jars, baskets, dead body sewers, rock piles
21%的几率按照选定的几率drop。

operatefn14, creates, rogue corpses, skull piles, jugs, loose rocks, a bunch of stashes, rat nests, cocoons, various other

bodies, some beds and a bunch of other stuff too
始终按照选定TC进行drop。

operatefn26, bookhelf
35%掉书, 65%掉卷轴. 鉴定和回城的几率是1:1

operatefn5, barell
21%几率按照选定TC进行drop. 同时18.07%的几率生成怪物

operatefn4, chest
始终按照选定TC进行drop。


6.mf及其他
object掉落的物品成色判断等同于怪物掉落物品的成色判断。但是有时候会有一个特定的品质参数,比如下面要说的sparkly chest和special chest的drop过程。

最后想提醒一下的是,这部分仅仅是object drop的一般过程。如前所述,系统会根据object的initFN和 controlFN 标识的不同而使用dll中不同的函数来修正drop过程。所以很多object的drop过程并不是这么简单。其中最为复杂的就是sparkly chest和special chest的drop过程。
发帖
4422
金钱
748
91币
0
信誉
0
资产
0 IST
在线时间
1314 小时
注册时间
2007-11-01
最后登录
2022-05-14
只看该作者 4楼 发表于: 2008-05-14 16:59:21
四.sparkly chest和special chest的drop过程
当一个sparkly chest或special chest打开时,系统按照不同的概率选择不同的drop方案:
方案1 ==  2% chance
方案2 ==  4% chance
方案3 ==  6% chance
方案4 ==  20% chance
方案5 ==  30% chance
方案6 ==  38% chance

方案1:unique drop:这个方案有特定的品质参数,为unique。系统会对该箱子的TC进行第一次调用,并且强制性将所有掉落的物品设定为暗

金的。除去以下3种情况;
1)该物品类型没有unique形态,则物品降格为rare形态,耐久度*3
2)该物品的ilvl不满足unique形态的qlvl要求,则物品降格为rare形态,耐久度*3
补充说明object drop的ilvl计算:兵器架上的物品, ilvl = arealvl -1; 其它物品 ilvl = arealvl 。
3)掉落的是rune,gold等物品。

系统将检测该次调用所掉落的最后一件物品,如果是暗金的,则本次drop结束。该sparkly chest不会再掉落任何东西。
但是如果最后一件物品属于以上3种情况,则系统会对TC进行第二次调用,并且对第二次调用中最后掉落的物品进行unique检测。
如果成功,则本次drop结束;如果再次失败,则转到方案6继续drop。


方案2:set drop:和1的区别是,该方案的特定品质参数是set。
系统同样首先进行第一次调用,并强制设定掉落物品为set 形态。同样会有3种例外:
1)该物品无set形态,则物品降格为magic形态,耐久度*2
2)ilvl不满足对应的set形态的qlvl要求,则物品降格为magic形态,耐久度*2
3)掉落的是rune,gold等。

系统同样会检测最后一件物品的品质,如果失败则再次调用,如果再次失败则转到方案6继续。


方案3:rare drop:特定的品质参数是rare。其他同1,2
唯一的区别是只有一种例外:即rune,gold等不可能为rare形态的物品。
同样两次检测失败后转到方案6继续。


方案4:magic drop:这里开始有所不同。
特定的品质参数是magic。
系统会前后最多进行10次调用,并检测每次调用最后掉出物品的品质。
如果检测到有3次调用的最后掉落物品是magic形态,则停止下次调用,drop完成。
即使10次调用全部失败,也不会转到方案6去。


方案5:magic drop:特定的品质参数还是magic。
系统会前后最多进行10次调用,并检测每次调用最后掉出物品的品质。
如果检测到有2次调用的最后掉落物品是magic形态,则停止下次调用。而继续掉落(7-#)堆金钱。#的数目等于
前面检测失败的调用次数。至此drop完成。
即使10次调用全部失败,也不会转到方案6去。


方案6:magic drop:首先系统还是前后最多进行10次调用并检测每次调用最后掉出物品的品质。这10次调用的品质参数是magic。
如果检测到有1次调用的最后掉落物品是magic形态,则系统还会调用一次TC,但是这次的调用是没有品质参数的。同时这次调用
的pick次数=(4-#),其中#的数目等于前面检测失败的调用次数。在这次调用中,玩家的mf值将决定掉落物品的品质。(前面过程中
玩家的mf值没起作用)。调用结束后,系统再掉落5堆gold, 2个血瓶和2 个mana瓶.至此drop结束。
离线seaermail
发帖
57
金钱
18
91币
0
信誉
0
资产
0 IST
在线时间
52 小时
注册时间
2008-09-29
最后登录
2010-06-13
只看该作者 5楼 发表于: 2008-12-25 20:08:42
快速回复
限100 字节
 
上一个 下一个