找回密码
 点一下
楼主: 星之骑士

关于一定几率双倍伤害的问题

[复制链接]
发表于 2010-8-27 12:09:26 | 显示全部楼层
你看這樣合不合用…補充…這個是普通攻擊的測試…技能沒加上…

Crit. Hit Test.SC2Map

170 KB, 下载次数: 21

回复

使用道具 举报

发表于 2010-8-27 12:23:56 | 显示全部楼层
不要想太多。。不要怕鄙视。。。直接用脚本吧..又方便又简单- -
回复

使用道具 举报

发表于 2010-8-27 13:14:22 | 显示全部楼层
不要用Buff了吧。。。致命一击这种东西应该属于技能之一吧。。。不过Ability里面是找不到什么关于Chance的。。。。。用Validator怎么样。。?
回复

使用道具 举报

 楼主| 发表于 2010-8-27 21:56:47 | 显示全部楼层

回 20楼(wilson98k) 的帖子

你的演示和高达兄的一模一样...

话说,触发里那个改变单位伤害,怎么只能变为10%或者90%?
回复

使用道具 举报

发表于 2010-8-27 22:38:05 | 显示全部楼层
那個能改10%/300%/100%/0%…不然你可以自己弄個新的變數看看…我沒測試過不知可行不…
回复

使用道具 举报

发表于 2010-8-27 22:53:43 | 显示全部楼层

Re:回 20楼(wilson98k) 的帖子

引用第23楼星之骑士于2010-08-27 21:56发表的 回 20楼(wilson98k) 的帖子 :
你的演示和高达兄的一模一样...

话说,触发里那个改变单位伤害,怎么只能变为10%或者90%?
英雄所见略同啊,灭哈哈
回复

使用道具 举报

 楼主| 发表于 2010-8-27 22:55:19 | 显示全部楼层

回 24楼(wilson98k) 的帖子

没用的,我试了,自己输入数字,只对1,2,3,4有反应,对应0%,10%,100%,300%四种状态,具体对应可能有误差,我没仔细测试
回复

使用道具 举报

发表于 2010-8-27 23:01:20 | 显示全部楼层
个人认为那1\\2\\3\\4是个索引,还有另外控制百分比的玩意。嗯。
回复

使用道具 举报

发表于 2010-8-27 23:16:25 | 显示全部楼层
暴击这个东西存在一个问题,分次数的攻击,如何顾全“一次攻击”下的“多次效果”,每一次的效果还会链接别的效果
回复

使用道具 举报

发表于 2010-8-28 00:10:30 | 显示全部楼层

Re:回 20楼(wilson98k) 的帖子

引用第23楼星之骑士于2010-08-27 21:56发表的 回 20楼(wilson98k) 的帖子 :
你的演示和高达兄的一模一样...

话说,触发里那个改变单位伤害,怎么只能变为10%或者90%?
话说那个trigger的实现其实丑陋无比。。。。还是别用了吧
说白了就是给apply几个buff,你还不如自己创建几个buff来搞呢
  1. void libNtve_gf_ChangeUnitDamage (unit lp_unit, int lp_takeDeal, int lp_option) {
  2.     int autoFCC9BD29_val;
  3.     int auto01104878_val;
  4.     int autoAD3C10F2_val;
  5.     int auto328DEC3D_val;
  6.     // Implementation
  7.     autoFCC9BD29_val = lp_takeDeal;
  8.     if (autoFCC9BD29_val == 0) {
  9.         UnitBehaviorRemove(lp_unit, "DamageTakenMega", 1);
  10.         UnitBehaviorRemove(lp_unit, "DamageTakenMinimal", 1);
  11.         UnitBehaviorRemove(lp_unit, "DamageTakenNone", 1);
  12.     }
  13.     else if (autoFCC9BD29_val == 1) {
  14.         UnitBehaviorRemove(lp_unit, "DamageDealtMega", 1);
  15.         UnitBehaviorRemove(lp_unit, "DamageDealtMinimal", 1);
  16.         UnitBehaviorRemove(lp_unit, "DamageDealtNone", 1);
  17.     }
  18.     else {
  19.         return ;
  20.     }
  21.     if ((lp_option == 0)) {
  22.         return ;
  23.     }
  24.     else {
  25.     }
  26.     auto01104878_val = lp_takeDeal;
  27.     if (auto01104878_val == 0) {
  28.         autoAD3C10F2_val = lp_option;
  29.         if (autoAD3C10F2_val == 3) {
  30.             UnitBehaviorAdd(lp_unit, "DamageTakenMega", lp_unit, 1);
  31.         }
  32.         else if (autoAD3C10F2_val == 2) {
  33.             UnitBehaviorAdd(lp_unit, "DamageTakenMinimal", lp_unit, 1);
  34.         }
  35.         else if (autoAD3C10F2_val == 1) {
  36.             UnitBehaviorAdd(lp_unit, "DamageTakenNone", lp_unit, 1);
  37.         }
  38.         else {
  39.         }
  40.     }
  41.     else if (auto01104878_val == 1) {
  42.         auto328DEC3D_val = lp_option;
  43.         if (auto328DEC3D_val == 3) {
  44.             UnitBehaviorAdd(lp_unit, "DamageDealtMega", lp_unit, 1);
  45.         }
  46.         else if (auto328DEC3D_val == 2) {
  47.             UnitBehaviorAdd(lp_unit, "DamageDealtMinimal", lp_unit, 1);
  48.         }
  49.         else if (auto328DEC3D_val == 1) {
  50.             UnitBehaviorAdd(lp_unit, "DamageDealtNone", lp_unit, 1);
  51.         }
  52.         else {
  53.         }
  54.     }
  55.     else {
  56.         return ;
  57.     }
  58. }
复制代码
回复

使用道具 举报

发表于 2010-8-28 00:29:21 | 显示全部楼层
我这里也有个一样的思路【http://bbs.islga.org/read.php?tid=40634&page=1#457283
不过可以确定的是,Buff的duration只需要0.0004,这么短的时间会重复的可能性很低,我的狂战士就是两下连击,不会干扰

给对方+Buff不是个好办法,因为这会覆盖对方的闪避(或称之为格挡)效果——直说就是暴击必中,这样不和谐

触发器的受到伤害事件,它的机制就是计算了伤害之后,不是延时的问题


最准确的办法还是effect-damage定做,但这就实在是麻烦了
回复

使用道具 举报

发表于 2010-8-28 00:34:50 | 显示全部楼层
Damage-Response是针对每一次伤害,而不会针对一个【伤害链】同时起作用,也不够和谐
回复

使用道具 举报

发表于 2010-8-28 00:52:53 | 显示全部楼层
刚试了一下,对于增加两倍伤害之类的持续Buff,无法作用于Damage-Response(Effect-Damage)上面(普通攻击当然受到影响)






然后在Damage-Response中给自己添加增加伤害的Buff也不行,用增加伤害的Buff来模拟暴击的话,平时那些【按照百分比增加伤害的效果】不会算入【这样的暴击机制】


逐个排除吧...














另外,谁知道怎么真正的闪避?
回复

使用道具 举报

发表于 2010-8-28 17:30:56 | 显示全部楼层
引用第24楼wilson98k于2010-08-27 22:38发表的  :
那個能改10%/300%/100%/0%…


我猜這個 trigger 大概是用來在特殊情況下用, 如 cinematic, 或模擬單位獲得了 enrage (像 wow 的 boss) 的效果, 所以才做成這樣吧.
回复

使用道具 举报

 楼主| 发表于 2010-8-29 00:00:01 | 显示全部楼层
看过你的演示了,实际上跟高达他们思路一样,不过他们用了受到伤害倍数(ModifyFraction)的办法,而你用了无视伤害(Damage Response - Kind)的办法

测试了一下,发现了这两者的区别

首先我们假设,攻击者为狂战士,一次攻击二次伤害,单次伤害8点这种,目标1点护甲分以下几种情况

1、狂战士打出的致命一击debuff为无视-1倍伤害,则打中普通单位造成2倍伤害,伤害为14/14;打中拥有受到伤害倍数为0的单位则强制2倍伤害,伤害为14/14
2、狂战士打出的致命一击debuff为无视-1倍伤害,则打中普通单位造成2倍伤害,伤害为14/14;打中拥有无视1倍伤害的单位会出现奇怪的叠加,伤害9/9
3、狂战士打出的致命一击debuff为受到2倍伤害,则打中普通单位造成2倍伤害,伤害为15/15;打中拥有受到伤害倍数为0的单位伤害最小化,伤害0.5/0.5
4、狂战士打出的知名一击debuff为受到2倍伤害,则打中普通单位造成2倍伤害,伤害为15/15;打中拥有无视1倍伤害的单位会强制无效,伤害0/0


结论:

1、无视伤害在判定上会覆盖受到伤害倍数,做致命一击的效果会无视对方闪避,做闪避效果会无视对方致命一击,wow系统为后者,RO系统为前者
2、受到0倍伤害无法突破伤害下限:0.5,而无视1倍伤害则可以将伤害减到0
3、无视伤害会先计算护甲,再计算倍数,实例中伤害为(8-1)*(1-(-1))=14
4、受到伤害会先计算倍数,再计算护甲,实例中伤害为8*2-1=15
5、一次攻击多次伤害的单位,是按每次伤害单独计算暴击的,类似wow中双持、奥术飞弹、暴雪、腐蚀术等效果

如果按wow的系统做,先判断是否命中再判断是否暴击的话,应该用第四种方法
回复

使用道具 举报

发表于 2010-8-29 00:11:37 | 显示全部楼层
我觉得,这个必须等官方暴击以及闪避,这就像暴雪给闪烁这个技能加上了“忽视迷雾、忽视山坡、忘了”的flag
回复

使用道具 举报

 楼主| 发表于 2010-8-29 17:01:02 | 显示全部楼层
目前这样的办法做出的暴击和闪避效果,无法捕捉到这个发生的几率啊...比如wow战士的乱舞效果,暴击后攻击者提高攻击速度,就没办法做到
回复

使用道具 举报

发表于 2010-8-31 12:48:24 | 显示全部楼层
順便問一下, 如果做一個有一定機率闪避的技能, 有辦法在敵人單位每次闪避時在單位頭上顯示"missed" 的文字嗎? 或者在自己的單位頭上顯示"dodged"也可以.
回复

使用道具 举报

发表于 2010-8-31 12:52:59 | 显示全部楼层
你可以試一下用trigger只要傷害=0 就顯示一個miss =3=反正護甲再高也是0.5…只有閃避會0……
回复

使用道具 举报

发表于 2010-9-1 09:52:12 | 显示全部楼层
目前,我做了个伪暴击,是一个行为技能,该行为有回应攻击的效果,这个效果是一个伤害效果。

在行为的Damage Response 里面设置了机率。

由于伤害效果设置伤害按武器比例提升存在问题,没有生效,只能产生固定的伤害。于是该技能就成了普通攻击的时候一定几率造成一次额外的伤害效果。(该效果有独立的伤害范围判定)

这样的暴击技能产生的伤害是固定的,不能随着角色属性提升。

我看到伤害效果上有按xx比例提升的效果,但是貌似是对某些单位造成以基础伤害为基准的额外伤害。


估计研究伤害类的特效能使用武器基础伤害进行额外伤害判定。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-4-28 01:20 , Processed in 0.294283 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表