赞 | 4 |
VIP | 0 |
好人卡 | 0 |
积分 | 16 |
经验 | 0 |
最后登录 | 2024-8-26 |
在线时间 | 220 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1606
- 在线时间
- 220 小时
- 注册时间
- 2022-2-3
- 帖子
- 160
|
本帖最后由 apple5740 于 2022-9-16 14:30 编辑
因为我还没有学习到这个部分,也是小白了!
不过我参考第一个帖子的回答。
可以通过修改一个方法可能达到你需要的效果,具体思路是这样的,一起来学习把。
因为使用技能,相当于角色一个动作也就是action,那么我们可能需要修改action,当角色触发这个action时,同时做其他的事情。
var new_Game_Action_prototype_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target){
new_Game_Action_prototype_apply.call(this,target);
//如果是魔法技能,且技能id是2 则再造成一次伤害,这个条件可以按照你的需求更改
if(this.isMagicSkill() && this.item().id == 2){
//对目标再造成一次伤害 value 为伤害数值, 这个伤害数值,也可以按照你的需求进行导入公式,或者再强制执行一次技能
//看到楼下的提醒才知道, executeDamage 这个方法里面还有一个判断,。。抱歉如果要直接执行hp伤害的话就用下面的方法把。或者直接target.gainHp(-value);?
this.executeHpDamage(target, value);
}
var new_Game_Action_prototype_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target){
new_Game_Action_prototype_apply.call(this,target);
//如果是魔法技能,且技能id是2 则再造成一次伤害,这个条件可以按照你的需求更改
if(this.isMagicSkill() && this.item().id == 2){
//对目标再造成一次伤害 value 为伤害数值, 这个伤害数值,也可以按照你的需求进行导入公式,或者再强制执行一次技能
//看到楼下的提醒才知道, executeDamage 这个方法里面还有一个判断,。。抱歉如果要直接执行hp伤害的话就用下面的方法把。或者直接target.gainHp(-value);?
this.executeHpDamage(target, value);
}
//强制执行一次技能,参考第二个帖子,将 this.executeDamage(target, value); 这句改为下面的。
Game_Interpreter.prototype.command339([1,1,12,target]);
大概思路是制作一个插件,并重写 执行动作的方法,并将你的需求,加入到这个方法中。这是一个思路,可能会有很多问题,我并没有测试。。
最后
我在这个 Game_Action.prototype.apply 方法中 发现this.subject() 可能就是指技能发动者。
因为在 rmmz_object.js这个文件 中看到了下面的语句。。
/* 主体 */
Game_Action.prototype.subject = function() {
if (this._subjectActorId > 0) {
return $gameActors.actor(this._subjectActorId);
} else {
return $gameTroop.members()[this._subjectEnemyIndex];
}
};
你的思路是寻找到技能发动者,让技能发动者再发动一次技能,我感觉也是可行的,总之有很多种解决问题的方式。但是这个思路,我之前也是这样想的,但我并没有参考资料。。所以不能做更多的回答了 |
|