找回密码
 新建会员

QQ登录

只需一步,快速开始

查看: 37894|回复: 49

[探讨]“骷髅法师”雷电宏的思路探讨

[复制链接]

13

主题

177

回帖

2441

积分

金牌会员

积分
2441

雷电宏发展贡献者

发表于 2019-5-22 10:39:57 | 显示全部楼层 |阅读模式
本帖最后由 michael_han1986 于 2019-5-23 10:09 编辑

“骷髅法师”技能的适用性:

J10Etc/GMT-8GMT-8000000201905221010177125.png

骷髅法师-精魂灌注——拉斯玛魂法、散件魂法等围绕惊魂灌注符文为主要输出手段的魂法BD
J10Etc/GMT-8GMT-8000000201905221010343091.png
骷髅法师-骷髅弓手——S17散件冰枪、散件冰枪响骨等以骷髅弓手提供攻速BUFF


雷电宏思路构建:
当60码内存在敌人(因为是BUFF,所以无需鼠标指向敌人)
当符文“骷髅弓手”时;
当“骷髅弓手”BUFF不存在时;
当精魂≥40时,施放“骷髅法师-骷髅弓手”;
否则,当“骷髅弓手”BUFF存在且小于1秒时,施放“骷髅法师-骷髅弓手”;

当符文“精魂灌注”时;
当鼠标指向为敌人时;
当“骷髅法师”不存在时;
当精魂≥40时,施放“骷髅法师-精魂灌注”;
否则,当“骷髅法师”存在且小于1秒时,施放“骷髅法师-精魂灌注”;

否则,当精魂值=MAX时,施放“骷髅法师-精魂灌注”;

注释:
“骷髅弓手”符文属于BUFF类,尽可能保持BUFF即可,所以不必无脑释放

“精魂灌注”符文整体思路有点像蛮子5+3雷电宏(满怒施放技能,而此处最后一条则是满精魂施放技能)
不过由于不同BD不同配装,导致“骷髅法师”的存在时间有浮动(如装备“奈鲁维的轮回”,被动“求死不能”等等),精魂上限有浮动(如“血魂双分”等)所以才用
当“骷髅法师”存在且小于1秒时,施放“骷髅法师-精魂灌注”
当精魂值=MAX时,施放“骷髅法师-精魂灌注”

这样的判断做法。

请其他玩家提供更完善的思路,若无,请管理大大有空时,可否帮忙构建一下此雷电宏,不胜感谢

附:一些可能用到骷髅法师的BD
拉斯玛魂法https://www.d3planner.com/415610153
散件魂法https://www.d3planner.com/939632684
散件魂法2https://www.d3planner.com/404959758
散件魂法-小米https://www.d3planner.com/304475591
散件魂法-悬赏https://www.d3planner.com/528547322
S17散冰https://www.d3planner.com/783710359
散冰响骨https://www.d3planner.com/914090282
散冰荆棘响骨https://www.d3planner.com/294880374
回复

使用道具 举报

13

主题

177

回帖

2441

积分

金牌会员

积分
2441

雷电宏发展贡献者

 楼主| 发表于 2019-5-23 10:02:01 | 显示全部楼层
本帖最后由 michael_han1986 于 2019-5-23 10:11 编辑

更新:楼主层


为什么一定要指向敌人时?这有什么特别讲究?
另外,是不是应该优先保持拉斯玛4件特效?带血魂双分的话是只在血魂双分期间才招骷髅?其他时候不招?

J51Etc/GMT-8GMT-8000000201905230951118242.png
J51Etc/GMT-8GMT-8000000201905230951337427.png
J52Etc/GMT-8GMT-8000000201905230952302096.png
当然,能做到鼠标存在目标才施放最好,因为这样集火输出更高
若不然,直接写成判断周围有怪就施放,也是可行的

不考虑拉斯玛特效,毕竟考虑到魂法除了拉斯玛魂法还有散件魂法,如果把套装定死,那会导致散件魂法无法使用该雷电宏
关于血魂双分,我个人认为是增伤手段,应由人为控制,例如卡元素,等精英,等BOSS才施放,骷髅法师的施放判断(精魂)读取当前精魂MAX或最小值即可
接上句,平推小怪的时候(单人为例)那就不必非要开血魂双分,甚至,拉斯玛魂法的有些速刷BD内,都不带血魂双分,所以只根据精魂值来判断,我认为是这样的

我大概写了个试了下,怎么感觉能量很不够呢,当然我装备词条是极烂的,我也不知道怎么输出手法,会的可以自己试试

谢谢,昨晚都没来得及上来看,现在赛季初,我也只是构建了思路,我自己装备也还没齐,可能周末有空能测试一下,这两天玩游戏时间不够
再次感谢,百忙之中还如此效率的写出了雷电宏,我原计划下周再“出货”的,没想到变成了“当日件”,当天就到货了,再次感谢
回复 支持 反对

使用道具 举报

13

主题

177

回帖

2441

积分

金牌会员

积分
2441

雷电宏发展贡献者

 楼主| 发表于 2019-5-23 17:51:49 | 显示全部楼层
TurboHUD 发表于 2019-5-23 15:16
那我看来看去好像只需要判断周围有怪并满能量自动放就完事了啊?我试了下,指向敌人也不是把骷髅放在敌人身 ...

有目标时,召唤出的骷髅法师直接攻击目标
没有目标时,召唤出的骷髅法师随机攻击周围的目标,一般是最近的或者是半径X码内血量最少的,这个我不确定
召唤出的骷髅法师总是在身边的,如果它的目标过远,会自动移动一些距离去攻击目标,但是当骷髅法师离开死灵X码之后,可能是50码,可能是60码,它就会回到死灵身边
回复 支持 反对

使用道具 举报

13

主题

177

回帖

2441

积分

金牌会员

积分
2441

雷电宏发展贡献者

 楼主| 发表于 2019-5-23 19:12:16 | 显示全部楼层
本帖最后由 michael_han1986 于 2019-5-23 19:15 编辑
不考虑拉斯玛特效,毕竟考虑到魂法除了拉斯玛魂法还有散件魂法,如果把套装定死,那会导致散件魂法无法使用该雷电宏

8#说的没错,我之前已经提到过了,而且涉及的相关BD我也已经贴出来了,请管理大大下次更新的时候删除该条件,谢谢了
当符文“精魂灌注”时;
当鼠标指向为敌人时;
当“骷髅法师”不存在时;
当精魂≥40时,施放“骷髅法师-精魂灌注”;
否则,当“骷髅法师”存在且小于1秒时,施放“骷髅法师-精魂灌注”;
否则,当精魂值=MAX时,施放“骷髅法师-精魂灌注”;


反而,我觉得标红的这条,我当初是不是考虑的有点多余了,毕竟再过1秒,就符合第二行当“骷髅法师”不存在时;这句条件了,或许这句可以删除,不知其他玩家如何看待?
回复 支持 反对

使用道具 举报

13

主题

177

回帖

2441

积分

金牌会员

积分
2441

雷电宏发展贡献者

 楼主| 发表于 2019-5-23 23:31:44 | 显示全部楼层
TurboHUD 发表于 2019-5-23 21:59
用到的条件我都备注在已经更新的插件里,你可以看一下适当修改,给我一个合适的方案我更新上去。那么多buil ...

谢谢管理大大的及时处理,不过十分抱歉的是,我要是还没凑齐散件魂法的装备,无法进行完美测试。待我装备提升后,再来测试,在此期间,也请其他玩家建言献策,谢谢了。
回复 支持 反对

使用道具 举报

13

主题

177

回帖

2441

积分

金牌会员

积分
2441

雷电宏发展贡献者

 楼主| 发表于 2019-5-30 10:51:55 | 显示全部楼层
过了那么多天,终于把散件魂法凑出来了,因为节奏太快,经常来不及观察魂法释放的情况,毕竟魂法也是魂斗罗职业
暂时发现了一个疑问,就是如果当前并未召唤过任何骷髅法师,则不会主动召唤,所有后续的召唤都是以进门后首次手动召唤之后,才继续下去的,这个跟雷电宏的脚本有关吗?

精魂灌注符文部分
想法,
1,当“骷髅法师”不存在时,施放“骷髅法师-精魂灌注”;
2,当骷髅法师数量小于10,且精魂≥40时,施放“骷髅法师-精魂灌注”;(目的:尽快堆积起数量,尽早滚起雪球,初期由于骷髅法师少,档子弹、吸引仇恨的太少,导致本体猝死率太高,一般出现在清场、进门、换层等情况)
否则,当“骷髅法师”存在且小于1秒时,施放“骷髅法师-精魂灌注”;(由于“2”保证了骷髅法师始终在8个以上,所以此条用不上了)
3,否则,当精魂值=MAX时,施放“骷髅法师-精魂灌注”;(无视当前骷髅法师数量,用满精魂召唤的高伤害骷髅法师顶掉先前不满精魂所召唤的骷髅法师,此时雪球已经滚起来了,有尸体,回精魂)


关于上述2,还请各位玩家建言献策,是否有必要先凑10个帮忙阻挡伤害,滚起雪球,防止大概率猝死?(我是在做悬赏的是否发现这个问题的,当时频繁换图,然后带着2个法师躲啊躲啊,伤害起不来,精魂跟不上,只能手动先召唤了)


J47Etc/GMT-8GMT-8000000201905301047594096.png

欢迎探讨,谢谢
回复 支持 反对

使用道具 举报

13

主题

177

回帖

2441

积分

金牌会员

积分
2441

雷电宏发展贡献者

 楼主| 发表于 2019-5-30 16:39:32 | 显示全部楼层
本帖最后由 michael_han1986 于 2019-5-30 16:42 编辑
TurboHUD 发表于 2019-5-30 16:20
要改成你这样都只需要改慢能量条件后执行ThenCastElseContinue()即可,表示满能量就放,否则往下判断是否 ...

好的,这周末我先测试一下,如果会造成滚雪球或者恶性循环,我晚些时候再来汇报
反正两种思路都有了,现在只是打三五分钟的速刷层,节奏非常快,两种都需要多次测试,对比。
不过幸运的是,伤害暂时没有遇到瓶颈,所以即使40能量的魂法也能弄死T16和90大米的小怪。后期再做更细化的测试了
回复 支持 反对

使用道具 举报

13

主题

177

回帖

2441

积分

金牌会员

积分
2441

雷电宏发展贡献者

 楼主| 发表于 2019-6-1 07:22:02 | 显示全部楼层
part.1
1,因为考虑天鹰的保持需要90%的能量,所以提高了骷髅弓手的施放条件,有精英和BOSS才自动施放,也避免在过图时,满足了怪物数量条件就施放,降低了天鹰的覆盖率
2,为了提高单位精魂量内骷髅弓手的覆盖率,将消失前1.5秒改为了0.5秒
3,我还没转散件尸矛,所以这个思路仍然仅供参考

                .IfTrue(ctx => ctx.Skill.Rune == 4).ThenContinueElseNoCast()//弓箭手符文
                .IfCanCastSkill(100, 150, 1000).ThenContinueElseNoCast()
                .IfInTown().ThenNoCastElseContinue()
                .IfCastingIdentify().ThenNoCastElseContinue()
                .IfCastingPortal().ThenNoCastElseContinue()
                .IfOnCooldown().ThenNoCastElseContinue()
                .IfPrimaryResourceAmountIsAbove(ctx => (int)(40 - 40 * Hud.Game.Me.Stats.ResourceCostReduction) + 1).ThenContinueElseNoCast()//确保有保底能量
                .IfEliteOrBossIsNearby(ctx => 60).ThenContinueElseNoCast()//附近60码内有精英和BOSS
                .IfSpecificBuffIsActive(Hud.Sno.SnoPowers.AquilaCuirass, 1).ThenContinueElseNoCast()//天鹰激活
                .IfSpecificBuffIsActive(Hud.Sno.SnoPowers.Necromancer_SkeletalMage, 6).ThenNoCastElseContinue()//骷髅法师激活
                .IfSpecificBuffIsAboutToExpire(Hud.Sno.SnoPowers.Necromancer_SkeletalMage, 3, 1000, 500).ThenCastElseContinue()//弓箭手BUFF即将过期(0.5秒以内)
                ;

part.2
注:确实在实战中碰到了“为了保持10个骷髅法师”而能量跟不上,又或者即使召唤出了10个骷髅法师,始终在能量低位召唤导致伤害不足的问题,因此做出了如下调整及想法,至于把侦测范围从60码调低至55码也是为了提高骷髅法师在生存时间内产生更多一点的输出,毕竟一次召唤,满打满算也只有10秒,戒指特效低的话,只有8~9秒。

1,夺魂者裹腕特效一个生命球提供30%的能量,外加吞噬存储的能量,那么只要吃上3个生命球就能立刻在能量高位释放出骷髅法师了,也不必刻意等到99%或者100%了
2,分三种情况,第一种,有精英,保持最少2个骷髅,精魂可以在较高位释放骷髅法师;第二种,没有精英,刚接触一个小怪,保持最少2个骷髅法师(来个挡子弹的小弟);第三种,没有精英,周围十五个以上小怪,保持8个骷髅法师(召唤更多吸引仇恨的小弟)
因此会用到.IfEliteOrBossIsNearby(ctx => 55)和.IfEnoughMonstersNearby(ctx => 55, ctx => 1)以及.IfEnoughMonstersNearby(ctx => 55, ctx => 10)


                .IfTrue(ctx => ctx.Skill.Rune == 1).ThenContinueElseNoCast()//精魂灌注符文
                .IfCanCastSkill(100, 150, 1000).ThenContinueElseNoCast()
                .IfInTown().ThenNoCastElseContinue()
                .IfCastingIdentify().ThenNoCastElseContinue()
                .IfCastingPortal().ThenNoCastElseContinue()
                .IfOnCooldown().ThenNoCastElseContinue()
                .IfPrimaryResourceAmountIsAbove(ctx => (int)(40 - 40 * Hud.Game.Me.Stats.ResourceCostReduction) + 1).ThenContinueElseNoCast()//确保有保底能量
                .IfEliteOrBossIsNearby(ctx =>,55, ctx => 1).ThenContinueElseNoCast()//附近55码内存在精英或BOSS
                .IfPrimaryResourcePercentageIsAbove(90).ThenCastElseContinue()//90%能量时
                .IfTrue(ctx =>
                {
                    var buff = Hud.Game.Me.Powers.GetBuff(Hud.Sno.SnoPowers.Necromancer_SkeletalMage.Sno);
                    return (buff.IconCounts[6] < 3);//小于3个骷髅且满能量施放
                }).ThenCastElseContinue()

3,根据上述2,是否在后面加入如下2段
                .IfnoEliteOrBossIsNearby(ctx => 55).ThenCastElseContinue()//附近55码没有精英或BOSS
                .IfEnoughMonstersNearby(ctx => 55, ctx => 1).ThenContinueElseNoCast()//附近60码内至少1个
                .IfPrimaryResourcePercentageIsAbove(90).ThenContinueElseNoCast()//90%能量时
                .IfTrue(ctx =>
                {
                    var buff = Hud.Game.Me.Powers.GetBuff(Hud.Sno.SnoPowers.Necromancer_SkeletalMage.Sno);
                    return (buff.IconCounts[6] < 3);//小于3个骷髅且90%能量施放
                }).ThenCastElseContinue()


                .IfnoEliteOrBossIsNearby(ctx => 55).ThenCastElseContinue()//附近55码没有精英或BOSS
                .IfEnoughMonstersNearby(ctx => 55, ctx => 15).ThenContinueElseNoCast()//附近60码内至少15个
                .IfPrimaryResourcePercentageIsAbove(90).ThenContinueElseNoCast()//90%能量时
                .IfTrue(ctx =>
                {
                    var buff = Hud.Game.Me.Powers.GetBuff(Hud.Sno.SnoPowers.Necromancer_SkeletalMage.Sno);
                    return (buff.IconCounts[6] < 8);//小于8个骷髅且90%量施放
                }).ThenCastElseContinue()
至于这三段中如何使用.ThenCastElseContinue()和).ThenContinueElseNoCast()以及.ThenNoCastElseContinue()来分开判断和段落分割,我就用不来了。
不过至少,通过提高释放条件,降低释放次数,可以保证更高质量的骷髅法师被召唤出来,略微提高了每次召唤骷髅法师的质量,适当避免了恶性循环的发生。
以上,还请管理大大给出准确的语句构造,我这个懒人是在玩不溜。

点评

.IfSpecificBuffIsAboutToExpire(buff, index, min, max) 注意这个参数  发表于 2019-6-1 16:09
回复 支持 反对

使用道具 举报

13

主题

177

回帖

2441

积分

金牌会员

积分
2441

雷电宏发展贡献者

 楼主| 发表于 2019-6-2 10:55:27 | 显示全部楼层
本帖最后由 michael_han1986 于 2019-6-2 13:51 编辑
TurboHUD 发表于 2019-6-1 16:13
如果高于90%能量的话,它总是招的骷髅都会是90%的,那么就白白少了10%的总伤害

附件按照你说的规则设 ...

确实,不过除了血球回复的能量之外,还有吞噬回复的能量,所以这方面并未做过于苛刻的限制,只是我自己把原先的90改为了91
后续还会详细测试第一段,关于骷髅弓手的召唤设置,现在暂时有如下想法:
1,死地期间(10秒),保持骷髅弓手存在(>0)即可,存在之后就不要再召唤了(即>1之后,只需判断BUFF时间,无需判断能量状态),直到消失前0.5秒,不考虑能量状态,为的是能在死地期间多打尸矛(召唤骷髅弓手有抬手动作,影响尸矛数量),所以在一轮死地期间一般召唤2次,最少召唤1次(如果手动在死地前正好刚召唤过一次,可以正好覆盖一半死地时间)。
死地判断(抄自血魂双分雷电宏)
                .IfTrue(ctx =>
                {
                    var buff = Hud.Game.Me.Powers.GetBuff(Hud.Sno.SnoPowers.Necromancer_LandOfTheDead.Sno);
                    return buff?.TimeElapsedSeconds[0] < 1 && buff?.TimeElapsedSeconds[0] != 0;

我看到并发现了管理大大在20#上传的附件有过修改,我先前还一直在用第一版,尤其判断精英/BOSS,小怪的情况,简化了语句,谢谢
但是貌似有一个地方写错了,导致不召唤骷髅 J50Etc/GMT-8GMT-8000000201906021350483154.png
红框部分如果改为.ThenContinueElseNoCast()貌似就正常了,不知道是不是呢?

现在基本都在用散魂farm,都说散魂是断手的操作,魂斗罗的命,火多重的层数,现在有了这个雷电宏,手不断了,真是痛快啊,再次谢谢




回复 支持 反对

使用道具 举报

13

主题

177

回帖

2441

积分

金牌会员

积分
2441

雷电宏发展贡献者

 楼主| 发表于 2019-6-3 09:51:15 | 显示全部楼层
TurboHUD 发表于 2019-6-2 19:12
优化了一下高能判定,亡者领域期间 或者 (屏幕内血球*夺魂者特效+地面尸体*10+当前能量 >= 总能量)时为10 ...

初步看了一下,已经基本上没什么问题了,感觉可以开始上线公测该雷电宏了,后续等广大用户实测后再做微调

另外,血魂双分的持续时间比死地更久,所以正确的操作应该是先开双分后开死地
所以,可以在双分开启后的1秒内激活一次弓手,然后双分宏本来就会激活死地,于是就能保证死地开启前有过一次骷髅弓手的召唤
当然,仍然要保留死地期间的监测,也就是说,通过上述双分后召唤的弓手,在死地一半时间的时候,会再召唤一次弓手
如此一来,就能保证死地期间只召唤一次弓手,也能保证死地前会召唤一次弓手

当然,也要考虑到有玩家会先开死地后开双分,虽然这样并不明智……

你们看呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 新建会员

本版积分规则

手机版|TurboHUD交流社区

GMT+8, 2024-9-27 20:49 , Processed in 0.248802 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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