Project1

标题: 请问类似于战斗续行的效果如果实现 [打印本页]

作者: 卫宫白    时间: 2017-11-18 14:59
标题: 请问类似于战斗续行的效果如果实现
如题,我想做一个战斗续行的技能,就是在死亡时解除死亡状态并回血。我的思路是这样,给一个战斗
续行的状态,用公共事件并行处理。当角色拥有着战续这一状态且死亡时,解除死亡状态在回血最后解
除战续状态。可是到最后却没用,角色还是该死的死。这该如何解决?
作者: chd114    时间: 2017-11-18 19:08
你的意思是不是这样的技能(来自DOTA2):

虚妄之诺
暂时篡改队友的命运,技能期间受到的任何治疗和伤害效果将在虚妄之诺结束后结算,其中治疗效果加倍结算。施放时将移除目标身上大部分的负面状态效果。 驱散类型:强驱散敌人和虚妄的先知一样常常会编造他人的命运。
持续时间:8 9 10
影响:友方英雄
技能:单位目标

魔法消耗 100
冷却时间 100 65 30

tips: 伤害和治疗效果虽然被延缓结算,但是结算时依然会考虑护甲和魔法抗性的减免。
经过延缓的伤害和治疗效果在目标失去本技能效果后立刻结算。




如果是这样的技能,可以在计算致死伤害的时候判定,持有某状态时不会受到致死的伤害(但是要用另外的变量计算受到的伤害和期间得到的治疗效果,在状态移除时用剩余生命和变量进行计算,如果变量是负的就受到结算伤害死亡,是正的就回血)
作者: 卫宫白    时间: 2017-11-18 19:43
chd114 发表于 2017-11-18 19:08
你的意思是不是这样的技能(来自DOTA2):

虚妄之诺

感谢大佬的回复,但是我想要的效果是使用了这个技能后会给使用者附加一个状态,在这个状态下如果使用者死亡的话,会自动复活并回复一定的血量。这个效果触发后就会消除这个状态。望大佬解答
作者: chd114    时间: 2017-11-18 21:28
卫宫白 发表于 2017-11-18 19:43
感谢大佬的回复,但是我想要的效果是使用了这个技能后会给使用者附加一个状态,在这个状态下如果使用者死 ...

这样的话,不管是先死再复活还是跳过致死伤害强制改变血量都能达到你要的效果
作者: 卫宫白    时间: 2017-11-18 21:32
chd114 发表于 2017-11-18 21:28
这样的话,不管是先死再复活还是跳过致死伤害强制改变血量都能达到你要的效果 ...

但是当只有一个人的时候死亡还是会gameover啊
作者: chd114    时间: 2017-11-18 21:46
卫宫白 发表于 2017-11-18 21:32
但是当只有一个人的时候死亡还是会gameover啊

那就做成不受致死伤害就行了(不管用哪种方式你都要动脚本)
作者: 卫宫白    时间: 2017-11-18 22:02
chd114 发表于 2017-11-18 21:46
那就做成不受致死伤害就行了(不管用哪种方式你都要动脚本)

哦,脑壳痛啊!!!脚本渣渣啊
作者: chd114    时间: 2017-11-18 22:28
本帖最后由 chd114 于 2017-11-19 14:30 编辑
卫宫白 发表于 2017-11-18 22:02
哦,脑壳痛啊!!!脚本渣渣啊

Game_Battler里面找到处理伤害的部分,修改self.hp -= @result.hp_damage

改成
  1. if self.state?(x) and self.hp<[email protected]_damage#x号状态持有并且这次伤害是致死伤害时
  2. self.hp=self.mhp#被作用单位生命强制变为最大生命
  3. self.remove_state(x)#移除x号状态
  4. else
  5. self.hp -= @result.hp_damage
  6. end
复制代码

作者: 卫宫白    时间: 2017-11-19 07:54
chd114 发表于 2017-11-18 22:28
Game_Battler里面找到处理伤害的部分,修改self.hp -= @result.hp_damage

改成

我试了下的,貌似大佬你的写法和我的其他脚本有冲突,一进行攻击时就报错了。是和横版脚本有冲突么?
作者: xing~~    时间: 2017-11-19 09:08
角色不是死亡而是变成零血可以吗?如果可以请往下看
作者: xing~~    时间: 2017-11-19 09:13
额,手滑发出去了。如果是只有一场战斗需要这个特殊复活事件的话就很简单了:首先,战斗前给主角附加一个透明的状态,状态效果为免疫无法战斗。然后在要对战的事件页那里设置角色0血以下触发此事件,至于你是想无限复活还是只有一次就更好办了。一次的话把间隔打在战斗上就好了,无限打在及时上就行,一定回合的话设置一个变量,每复活一次变量加一,直到满足你的次数的前一次,条件分歧把那个免疫死亡的状态去掉就好了
作者: chd114    时间: 2017-11-19 14:31
卫宫白 发表于 2017-11-19 07:54
我试了下的,貌似大佬你的写法和我的其他脚本有冲突,一进行攻击时就报错了。是和横版脚本有冲突么? ...

修改了一下,你先在默认工程试试看,没问题了再放进你现在的工程
作者: soulsaga    时间: 2017-11-19 17:19
公共事件判断在战斗中..是否拥有该状态 状态效果为免疫无法战斗
再判断HP0时解除状态
作者: 卫宫白    时间: 2017-11-19 22:05
chd114 发表于 2017-11-19 14:31
修改了一下,你先在默认工程试试看,没问题了再放进你现在的工程

依旧感谢,但我放进默认工程里面试过了,攻击时倒是不报错了,但这次倒好,一进我的工程的战斗时就报错,连攻击都免了……emmmmmm……

QQ图片20171119122856.jpg (22.22 KB, 下载次数: 27)

QQ图片20171119122856.jpg

作者: chd114    时间: 2017-11-19 22:43
卫宫白 发表于 2017-11-19 22:05
依旧感谢,但我放进默认工程里面试过了,攻击时倒是不报错了,但这次倒好,一进我的工程的战斗时就报错, ...

那就是你工程里其他脚本和这个冲突了
作者: 卫宫白    时间: 2017-11-20 19:42
chd114 发表于 2017-11-19 22:43
那就是你工程里其他脚本和这个冲突了

虽然还是没能够解决,但还是多谢了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1