#==============================================================================
# 「宝箱鑑定」(ACE) Ver.1.2
# 製作者:奈々(なな)
# へぷたなすくろーる http://heptanas.mamagoto.com/
#
# ◇使用規約
# 使用される場合はスクリプト作成者として「奈々」を明記して下さい。
# スクリプトの改変は自由に行って頂いて構いませんが
# その場合も元のスクリプトの作成者として名前を載せて下さい。
# また配布前に必ず、ブログにある利用規約を確認して下さい。
#
#------------------------------------------------------------------------------
#
# 宝箱の中身を識別する、いわゆるイ○パスのような
# 「鑑定」魔法を再現するためのスクリプトです。
#
# 使い方は、まずイベントの「注釈」で設定を行います。
#
# <鑑定 n> 全方向から鑑定可能
# <正面鑑定 n> イベントの正面からのみ鑑定可能
# <下鑑定 n> 下からのみ鑑定可能(他に左右上も設定可能)
# <画面鑑定 n> 全画面鑑定(後述)でのみ使用
#
# nはアニメーションIDで、鑑定時に表示されます。
# アニメーションなので、フラッシュや効果音も設定できます。
# 各タグは重複可能、ページ内の好きな場所に設定可能で
# 設定はページ毎になるため、ページ変更で切り替えが可能です。
#
# 次に、鑑定行動は以下のイベントコマンド「スクリプト」で行います。
#
# n7_ez_imp 通常鑑定
# n7_screen_imp 全画面鑑定
#
# 鑑定魔法を作る場合は、適当なコモンイベントに n7_ez_imp を設定し
# そのコモンイベントを呼び出すスキルやアイテムを作って下さい。
# イベントを介すため、文章や外れ効果音などの追加も可能です。
#
# 通常鑑定を行った場合、目の前にあるイベントを鑑定し
# 設定されている番号のアニメーションを表示します。
# また初期設定で、指定の変数に鑑定結果を取得できます。
#
# 全画面鑑定を行った場合、画面内の全てのイベントを鑑定します。
# これはどちらかと言えば、隠し罠の発見や、友好度の識別など
# 宝箱の鑑定とは異なる用途を想定した機能です。(使い方次第ですが)
# なので、設定タグは通常鑑定のものと別にしてあります。
#
#==============================================================================
#初期設定
module N7_EZ_IMP
#鑑定結果(アニメーションID)を取得する変数のID
VA = 0
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
# イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ● 宝箱鑑定の発動
#--------------------------------------------------------------------------
def n7_ez_imp
$game_variables[N7_EZ_IMP::VA] = 0 if N7_EZ_IMP::VA > 0
tx = $game_player.x
ty = $game_player.y
pd = $game_player.direction
case pd
when 2
ty += 1
when 4
tx -= 1
when 6
tx += 1
when 8
ty -= 1
end
te = $game_map.events_xy(tx, ty)[0]
if te && te.list
te.list.each do |ev|
next unless ev.code == 108 || ev.code == 408
if ev.parameters[0][/\<鑑定\s*(\d+)>/]
$game_variables[N7_EZ_IMP::VA] = $1.to_i if N7_EZ_IMP::VA > 0
te.animation_id = $1.to_i
break
end
if ev.parameters[0][/\<正面鑑定\s*(\d+)>/]
case pd
when 2
break unless te.direction == 8
when 4
break unless te.direction == 6
when 6
break unless te.direction == 4
when 8
break unless te.direction == 2
end
$game_variables[N7_EZ_IMP::VA] = $1.to_i if N7_EZ_IMP::VA > 0
te.animation_id = $1.to_i
break
end
if ev.parameters[0][/\<下鑑定\s*(\d+)>/] && pd == 8
$game_variables[N7_EZ_IMP::VA] = $1.to_i if N7_EZ_IMP::VA > 0
te.animation_id = $1.to_i
break
elsif ev.parameters[0][/\<左鑑定\s*(\d+)>/] && pd == 6
$game_variables[N7_EZ_IMP::VA] = $1.to_i if N7_EZ_IMP::VA > 0
te.animation_id = $1.to_i
break
elsif ev.parameters[0][/\<右鑑定\s*(\d+)>/] && pd == 4
$game_variables[N7_EZ_IMP::VA] = $1.to_i if N7_EZ_IMP::VA > 0
te.animation_id = $1.to_i
break
elsif ev.parameters[0][/\<上鑑定\s*(\d+)>/] && pd == 2
$game_variables[N7_EZ_IMP::VA] = $1.to_i if N7_EZ_IMP::VA > 0
te.animation_id = $1.to_i
break
end
end
end
end
#--------------------------------------------------------------------------
# ● 宝箱鑑定の発動(全画面)
#--------------------------------------------------------------------------
def n7_screen_imp
$game_map.events.each do |key, te|
next unless te.list && te.near_the_screen?
te.list.each do |ev|
next unless ev.code == 108 || ev.code == 408
if ev.parameters[0][/\<画面鑑定\s*(\d+)>/]
te.animation_id = $1.to_i
break
end
end
end
end
end