• 4526阅读
  • 113回复

煮sor杖有出息么 [复制链接]

上一主题 下一主题
离线老胡胡
发帖
874
金钱
5313
91币
0
信誉
0
资产
0 IST
在线时间
505 小时
注册时间
2009-03-25
最后登录
2019-10-04
只看该作者 90楼 发表于: 2011-07-13 13:31:36
引用第84楼zsselina于2011-07-13 13:21发表的  :
不是验证
virgo对错的问题
呵呵,我只是不想简单的人云亦云而已
.......

我买了个手机,从各种能看到的指标都是行货,你硬说是山寨的,然后说那些判断标准都错了,你又说不明白你为啥对,你说我信你的?
离线zsselina
发帖
728
金钱
5378
91币
110
信誉
0
资产
0 IST
在线时间
173 小时
注册时间
2011-03-21
最后登录
2012-04-08
只看该作者 91楼 发表于: 2011-07-13 13:31:56
用户被禁言,该主题自动屏蔽!
离线zsselina
发帖
728
金钱
5378
91币
110
信誉
0
资产
0 IST
在线时间
173 小时
注册时间
2011-03-21
最后登录
2012-04-08
只看该作者 92楼 发表于: 2011-07-13 13:32:45
用户被禁言,该主题自动屏蔽!
离线老胡胡
发帖
874
金钱
5313
91币
0
信誉
0
资产
0 IST
在线时间
505 小时
注册时间
2009-03-25
最后登录
2019-10-04
只看该作者 93楼 发表于: 2011-07-13 13:34:33
Someone asks me how many Fire Damage are necessary to trigger GetHit Mode Animation (aka as FHR State)
I answer that only dmg > 1/12 Max Life triggers this effect.
This information was given by GFraizer on Arreat summit before the release of LOD and never confirmed AFAIK.
So I decided to run GEtHit Trigger Function into my debugger (Patch 1.11b)
Here is the result

At the end of combat Resolution a function manage Combat Trigger Effects. This function calls the GetHit Function.
I will trace this function this week end to confirm what the conditions to call the GetHit Function are.
For Example, I know that Death's trigger (Flag 2) cancel GetHit (for obvious reason) the GetHit column in missiles.txt must be set to 1 ...

Now it's time to a direct translation of GetHit function from assembly

1) GetHit Validation Checks

If Target is Frozen then Exit
If poison Damage > 0 and Sum of Damage = Poison damage then exit (<=> Poison only then Exit)
Id Damage < 1 then exit (a kind of blizzard optimization)

2) GetHitTriggerNumber

Here is how this compute
First get Target Max Life
Then Set divisor

GetHitTriggerNumber = Max Life / divisor (the old 1/12 Max HP before LOD)

The divisor is related to HitClass
(Mostly hardcoded, initially read from "HitClass.bin"
, Monstats2.bin , Skills.bin or Missiles.bin)

The HitClass Divisor table is
hitClass 5 --> 64
hitClass 4 et 8 --> 32
HitClass 2,6,10,11 --> 8
hitclass 1,3,7,9,12 and Hitclass > 12 --> 16

I will do some debug this Week-end in order to clarify the HitClass handling
Here is some informations

HitClasses Table is
Hit Class Code
0 None
1 Hand To Hand hth
2 One Hand Swing vs. Small 1hss
3 One Hand Swing vs. Large 1hsl
4 Two Hand Swing vs. Small 2hss
5 Two Hand Swing vs. Large 2hsl
6 One Hand Thrust 1ht
7 Two Hand Thrust 2ht
8 Club club
9 Staff staf
10 Bow bow
11 Crossbow xbow
12 Claw claw
13 Overlay over

Monsters have mostly Hitclass 3 or 12

Most of the magic skills have hitclass > 12

3) GetHit Resolution

Here are the different checks

If damage < GetHitTriggerNumber Then Exit
If damage < GetHitTriggerNumber * 2 Then RND(2) If result = 0 then Exit
If damage < GetHitTriggerNumber * 4 Then RND(4) If result = 0 then Exit
If damage > GetHitTriggerNumber * 4 Then GetHit = True


Here is an example for the default Divisor (16)

If Damage > 1/4MaxHP Then GetHit = True
If 1/4MaxHP > Damage > 1/8MaxHP Then GetHit Probability = 75%
IF 1/8MaxHP > damage > 1/16MaxHP GetHit Probability = 50% * 75% = 37.5%

then a final check test if Monster can be in GetHit Mode
离线老胡胡
发帖
874
金钱
5313
91币
0
信誉
0
资产
0 IST
在线时间
505 小时
注册时间
2009-03-25
最后登录
2019-10-04
只看该作者 94楼 发表于: 2011-07-13 13:36:35
引用第75楼zsselina于2011-07-13 12:37发表的  :
还有被命中这个事
如果divisor是16
1/4 MaxHP < Dam 即被命中
1/8 MaxHP < Dam< 1/4 MaxHP 及75%的可能被命中
1/16 MaxHP < Dam < 1/8MaxHP 50%的可能
.......

你就是这么翻译最下面那段话的?
离线zsselina
发帖
728
金钱
5378
91币
110
信誉
0
资产
0 IST
在线时间
173 小时
注册时间
2011-03-21
最后登录
2012-04-08
只看该作者 95楼 发表于: 2011-07-13 13:37:00
用户被禁言,该主题自动屏蔽!
离线zsselina
发帖
728
金钱
5378
91币
110
信誉
0
资产
0 IST
在线时间
173 小时
注册时间
2011-03-21
最后登录
2012-04-08
只看该作者 96楼 发表于: 2011-07-13 13:50:25
用户被禁言,该主题自动屏蔽!
离线zsselina
发帖
728
金钱
5378
91币
110
信誉
0
资产
0 IST
在线时间
173 小时
注册时间
2011-03-21
最后登录
2012-04-08
只看该作者 97楼 发表于: 2011-07-13 13:53:22
用户被禁言,该主题自动屏蔽!
离线zsselina
发帖
728
金钱
5378
91币
110
信誉
0
资产
0 IST
在线时间
173 小时
注册时间
2011-03-21
最后登录
2012-04-08
只看该作者 98楼 发表于: 2011-07-13 13:56:05
用户被禁言,该主题自动屏蔽!
离线老胡胡
发帖
874
金钱
5313
91币
0
信誉
0
资产
0 IST
在线时间
505 小时
注册时间
2009-03-25
最后登录
2019-10-04
只看该作者 99楼 发表于: 2011-07-13 13:56:26
打击恢复动作(Hit Recovery)的判断机理
代码解析:Nefarius,Myrdinn
原帖链接:http://phrozenkeep.planetdiablo.gamespy.com/forum/viewtopic.php?t=47619
          http://www.theamazonbasin.com/d2/forums/index.php?showtopic=77949
    翻译:virgol,GoodLuck
    测试:virgol
相关链接:http://www.隔壁.cc/bbs/viewthread.php?tid=558366&extra=page%3D1
          http://www.隔壁.cc/bbs/viewthread.php?tid=558682&extra=page%3D1
          http://til.sggo.cn/showthread.php?t=30248

遭受攻击时HR动作判断的流程
1. 打击恢复动作(以下简称HR动作)只有在攻击动作的resultflag参数=4时才会产生。
2. 检测受攻击目标是否处于眩晕状态(stun)。如果是,直接进入HR状态。
3. 检测受攻击目标是否处于冰冻状态(frozen)。如果是,判断结束,不产生HR动作。
4. 检测本次攻击是否包含毒素伤害。
  4.1 如果是纯毒素伤害,判断结束,不产生HR动作。
  4.2 同时包含毒伤害和其他类型的伤害。若受攻击目标受到的总伤害小于1,判断结束,不产生HR动作。反之转入步骤5
  4.3 不包含毒素伤害。检测受攻击目标受到的总伤害是否大于等于1。是则转入步骤5,否则判断结束,不产生HR动作。
5. HR动作判断开始
  5.1 获取受攻击目标最大生命值MaxHP。根据攻击类别(Hit Class)获取参数divisor,具体分类详见下文。
  5.2 若目标受到本次攻击的伤害DAM<MaxHP/divisor,退出判定,不产生HR动作。反之转入步骤5.3。
  5.3 若DAM≥MaxHP/(divisor/2),本行判断结束,转到步骤5.4。否则系统将取随机数0和1,若为0则不产生HR动作,退出判定;为1则转到步骤5.4。
  5.4 若DAM≥MaxHP/(divisor/4),转入步骤5.5。反之系统取随机数0-3,若为0则不产生HR动作,退出判定;取其他数则转到步骤5.5。
  5.5 系统检测受攻击目标是否允许产生HR动作。若判断允许,则产生HR动作,反之不产生。判断结束。


简单来说判断标准如下
纯毒素伤害不会造成HR动作。
非纯毒素伤害的情况下,记本次攻击所造成的伤害值为DAM,受攻击目标的最大生命值为MaxHP,相关参数为divisor,则
若DAM<MaxHP/divisor,则不产生HR动作;
若MaxHP/divisor≤DAM<2*MaxHP/divisor,则有3/8的几率产生HR动作;
若2*MaxHP/divisor≤DAM<4*MaxHP/divisor,则有3/4的几率产生HR动作;
若4*MaxHP/divisor≤DAM,则100%产生HR动作。

[ 本贴由 悄然花开 在 10-26 13:56 编辑过. ] 

resultflag的事人家第一条就说了,我就不知你矫情啥着呢
快速回复
限100 字节
 
上一个 下一个