本帖最后由 kunikai 于 2020-1-30 00:04 编辑
以下是个人用于抛砖引玉的简单方法。匆忙写的,有逻辑漏洞烦请提醒我改正。
首先预留至少16个变量、8个开关。将变量8个分为一组,分别称为A组和B组。
让“回溯技能”为目标附加状态“准备回溯”;
同时让“回溯技能”执行“公共事件A”,在“公共事件A”中用A组变量分别记录下所有处于状态“准备回溯”敌人的HP,
并打开敌人所分别对应的开关防止HP被重复记录。
设置另一个技能,让该技能解除“准备回溯”状态;或为“准备回溯”状态设定另外的解除条件。(由你决定何时回溯。)
将下方脚本插入默认脚本以下、Main以上,使状态“准备回溯”结束时触发“公共事件B”,
不断为B组变量分别赋予1-8号敌人的当前HP,同时不断增/减对应敌人HP使B组变量最终等于A组对应变量。
若敌人仍处于状态“准备回溯”或对应原HP变量为0,则不对其HP进行处理。
处理完成后,使被处理敌人所对应的A组变量归零、所对应的开关关闭。
为了避免某些“不可预料的BUG”,请在每场战斗开始时将“回溯技能”用到的变量全部归零、开关全部关闭。
class Game_Battler < Game_BattlerBase def remove_state(state_id) if state?(state_id) if state_id == 26 #如果解除的状态编号为26号 $game_temp.reserve_common_event(7) #执行7号公共事件 end revive if state_id == death_state_id erase_state(state_id) refresh @result.removed_states.push(state_id).uniq! end end end
class Game_Battler < Game_BattlerBase
def remove_state(state_id)
if state?(state_id)
if state_id == 26 #如果解除的状态编号为26号
$game_temp.reserve_common_event(7) #执行7号公共事件
end
revive if state_id == death_state_id
erase_state(state_id)
refresh
@result.removed_states.push(state_id).uniq!
end
end
end
|