用YEP插件可以实现你的需求,不过有点绕,我尽量解释清楚……
首先你的技能A,技能效果就是为使用者赋予A状态,然后在注释栏填入以下代码,这段代码效果就是:
使用A技能时如果使用者MP满足条件就决定技能释放成功,并记录变量值,如果MP不足一半,则技能释放失败不赋予状态:
<Before Eval> if (user.mpRate() >= 0.5){ this.item().successRate = 100; user._skillAmask = user.mp * 0.5 || 0; }else{ this.item().successRate = 0; } </Before Eval>
<Before Eval>
if (user.mpRate() >= 0.5){
this.item().successRate = 100;
user._skillAmask = user.mp * 0.5 || 0;
}else{
this.item().successRate = 0;
}
</Before Eval>
其次是技能B,需要针对释放条件和伤害判定都进行代码处理,需要填入以下代码(假设你的状态A是ID为10的状态),
如果角色身上没有状态A,就释放技能失败,反之就会根据此前赋值的变量值来指定技能伤害,同时使用技能后将变量值重置为0:
<Before Eval> if (user.isStateAffected(10)){ this.item().successRate = 100; }else{ this.item().successRate = 0; } </Before Eval> <damage formula> var damage = user._skillAmask || 0; value = Math.floor(damage); </damage formula> <After Eval> user._skillAmask = 0; </After Eval>
<Before Eval>
if (user.isStateAffected(10)){
this.item().successRate = 100;
}else{
this.item().successRate = 0;
}
</Before Eval>
<damage formula>
var damage = user._skillAmask || 0;
value = Math.floor(damage);
</damage formula>
<After Eval>
user._skillAmask = 0;
</After Eval>
如果你还想给这个状态进行堆叠层数判定,或者加入状态有回合数限制亦或状态被提前净化消除会导致变量值重置的设计,就需要更复杂的判定机制,建议你先试下上面写的效果 |