
# XMS.「XRXS33.アイテム消費スキル」 Tetra-Zリメイク版
# 原作 : 刻宮 様、桜雅 在土 様
# by Tetra-Z
#
# XMS.にあった「アイテム消費スキル」を我流に一からリメイク……したはず。
#==============================================================================
# XRXS33
#==============================================================================
module XRXS33
def XRXS33.skill_use_item_array(skill_id)
case skill_id
#==========================================================================
# □ カスタマイズポイント
#==========================================================================
when 1
return [{}, {}, false]
# when スキルID
# return [{消費}, {媒体}, 対象]
#
# 消費 : 「消費アイテムID => 消費数」のハッシュにて指定。
# スキル使用時、設定されたアイテムを消費。
# 媒体 : 「必要アイテムID => 必要数」のハッシュにて指定。
# 持っていればよいだけで、消費はしない。
# 対象 : true = ターゲット分消費。一人分あれば、一応スキル使用は可能。
# false = 上で設定した分消費。
#
# (例)
# when 1
# return [{}, {1=>1}, false]
# ヒールを使用するには、ポーションを持っている必要がある。消費はしない。
# when 2
# return [{1=>1}, {}, false]
# ヒール+を使用する度に、ポーションを消費する必要がある。
# when 3
# return [{1=>2}, {}, true]
# ヒールΩを使用する度に、対象一人あたりポーションを2個消費する必要がある。
# 一人分の2個あれば、一応使用はできる。
#==========================================================================
end
return [{}, {}, false]
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● スキルの使用可能判定
# skill_id : スキル ID
#--------------------------------------------------------------------------
alias xrxs33_skill_can_use? skill_can_use?
def skill_can_use?(skill_id)
return xrxs33_skill_can_use?(skill_id) if !(self.is_a?(Game_Actor))
array = XRXS33.skill_use_item_array(skill_id).dup
for i in array[0].keys
next if (i <= 0 or i >= $data_items.size)
if $game_party.item_number(i) < array[0][i]
return false
end
end
for j in array[1].keys
next if (j <= 0 or j >= $data_items.size)
if $game_party.item_number(j) < array[1][j]
return false
end
end
return xrxs33_skill_can_use?(skill_id)
end
#--------------------------------------------------------------------------
# ● スキルの効果適用
# user : スキルの使用者 (バトラー)
# skill : スキル
#--------------------------------------------------------------------------
alias xrxs33_skill_effect skill_effect
def skill_effect(user, skill)
result = xrxs33_skill_effect(user, skill)
$game_temp.skill_happened |= result
$game_temp.target_count += 1
if (result or $game_temp.in_battle_stack)
$game_temp.skill_happened = true
end
return result
end
end
#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :skill_happened # スキル発生
attr_accessor :in_battle_stack # 戦闘中か?
attr_accessor :target_count # スキルターゲットカウント
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias xrxs33_initialize initialize
def initialize
xrxs33_initialize
@skill_happened = nil
@in_battle_stack = @in_battle
@target_count = 0
end
end
#==============================================================================
# ■ Scene_Skill
#==============================================================================
class Scene_Skill
#--------------------------------------------------------------------------
# ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
alias xrxs33_update_target update_target
def update_target
$game_temp.skill_happened = false
$game_temp.target_count = 0
$game_temp.in_battle_stack = false
# 呼び戻す
xrxs33_update_target
if $game_temp.skill_happened
array = XRXS33.skill_use_item_array(@skill.id).dup
j = array[2] ? $game_temp.target_count : 1
for i in array[0].keys
$game_party.lose_item(i, array[0][i] * j)
end
# スキルウィンドウの内容をもう一度再作成
@skill_window.refresh
end
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● スキルアクション 結果作成
#--------------------------------------------------------------------------
alias xrxs33_make_skill_action_result make_skill_action_result
def make_skill_action_result
$game_temp.skill_happened = false
$game_temp.in_battle_stack = true
$game_temp.target_count = 0
# 呼び戻す
xrxs33_make_skill_action_result
if $game_temp.skill_happened
array = XRXS33.skill_use_item_array(@active_battler.current_action.skill_id).dup
j = array[2] ? $game_temp.target_count : 1
for i in array[0].keys
$game_party.lose_item(i, array[0][i] * j)
end
end
$game_temp.in_battle_stack = false
end
end