4.进行调用,这里拿默认战斗系统举例,在任何其他战斗系统中也可以自行调用
先在Scene_Battle中设置一个值为空数组的类变量,@@item_single_use = []
@@item_single_use,内部存储已设置使用状态的item
实现条件1:当某个角色选择使用拥有单人使用属性的物品时,设置其single_use属性并进行记录
实现条件2:当角色指令返回时,检测并取消之前的设置
实现条件3:行动回合开始时,清除@@item_single_use中记录的数据并恢复所有item的single_use属性
class Scene_Battle
@@item_single_use = []
def update_phase3_item_select
# 设置物品窗口为可视状态
@item_window.visible = true
# 刷新物品窗口
@item_window.update
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 选择物品结束
end_item_select
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 获取物品窗口现在选择的物品资料
@item = @item_window.item
# 无法使用的情况下
unless $game_party.item_can_use?(@item.id)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 设置行动
@active_battler.current_action.item_id = @item.id
@item.single_use = @active_battler
@@item_single_use << @item
# 设置物品窗口为不可见状态
@item_window.visible = false
# 效果范围是敌单体的情况下
if @item.scope == 1
# 开始选择敌人
start_enemy_select
# 效果范围是我方单体的情况下
elsif @item.scope == 3 or @item.scope == 5
# 开始选择角色
start_actor_select
# 效果范围不是单体的情况下
else
# 物品选择结束
end_item_select
# 转到下一位角色的指令输入
phase3_next_actor
end
return
end
end
alias mf250703update_phase4 update_phase4
def update_phase4
$game_party.clear_item_single_use *@@item_single_use
@@item_single_use = []
mf250703update_phase4
end
def phase3_prior_actor
# 循环
begin
# 角色的明灭效果 OFF
if @active_battler != nil
@active_battler.blink = false
end
# 最初的角色的情况下
if @actor_index == 0
# 开始同伴指令回合
start_phase2
return
end
# 返回角色索引
@actor_index -= 1
@active_battler = $game_party.actors[@actor_index]
@active_battler.blink = true
item = $data_items[@active_battler.current_action.item_id]
if @@item_single_use.include? item
item.single_use = nil
@@item_single_use.delete item
end
# 如果角色是在无法接受指令的状态就再试
end until @active_battler.inputable?
# 设置角色的命令窗口
phase3_setup_command_window
end
end