lunariafantasia/Scripts/_.92.rb
2024-01-12 03:12:38 -06:00

162 lines
No EOL
7.6 KiB
Ruby
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#==============================================================================
# ■ Game_Player
#------------------------------------------------------------------------------
#  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
# 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :item_stack #アイテムスイッチ格納ハッシュ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias item_revive_initialize initialize
def initialize
item_revive_initialize
@item_stack = {}
end
#--------------------------------------------------------------------------
# ● 復活アイテム用セルフスイッチの格納
#--------------------------------------------------------------------------
def stack_key_set(map_id, event_id, self_type)
key = [map_id, event_id, self_type]
@item_stack[key] = true
end
#--------------------------------------------------------------------------
# ● アイテムスイッチ格納のリセット
#--------------------------------------------------------------------------
def clear_stack
@item_stack = {}
end
#--------------------------------------------------------------------------
# ● フィールドに出た際アイテムを復活させスタックをリセット
# 実行は Scene_Map に記述
#--------------------------------------------------------------------------
def item_stack_revive
keys = item_stack.keys
keys.each {|key| $game_self_switches[key] = false}
clear_stack
end
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ○ 復活用アイテム取得後はこのスクリプトでセルフスイッチをスタックに格納
# 基本セルフスイッチはAを用いるが A 以外を使う時の為引数指定出来るようにしてある
# デフォルト引数を A にしてあるので普段は引数省略でOK
#--------------------------------------------------------------------------
def item_stack(self_type = "A")
$game_player.stack_key_set(@map_id, @event_id, self_type)
end
#--------------------------------------------------------------------------
# ○ 別マップのアイテムスタック用
#--------------------------------------------------------------------------
def another_item_stack(map_id, event_id, self_type = "A")
$game_player.stack_key_set(map_id, event_id, self_type)
end
#--------------------------------------------------------------------------
# ○ アイテムの復活 ※イベントコマンド用
#--------------------------------------------------------------------------
def delete_self_switchs
$game_player.item_stack_revive
end
#--------------------------------------------------------------------------
# ○ 他所のセルフスイッチの操作 ※ssc = self swith control
#--------------------------------------------------------------------------
def another_ssc(m_id, e_id, s_type = "A", control = true)
#m_id = $game_map.map_id if m_id == 0 # 0を指定すると現在のマップIDになる
m_id = @map_id if m_id == 0 # 0を指定すると現在のマップIDになる
if e_id.instance_of?(Array) # 配列で指定すると[0]の数字から[1]の数字までをまとめて操作
skip = e_id[2] ? e_id[2] : [] # 配列[2]に配列を入れるとその配列に格納されている数字はスキップ
(e_id[0]..e_id[1]).each do |id|
next if skip.include?(id)
key = [m_id, id, s_type]
$game_self_switches[key] = control
end
else
key = [m_id, e_id, s_type]
$game_self_switches[key] = control
end
end
#--------------------------------------------------------------------------
# ○ 他所のセルフスイッチを反転 ※ssc = self swith control
#--------------------------------------------------------------------------
def reverse_ssc(m_id, e_id, s_type = "A")
m_id = @map_id if m_id == 0 # 0を指定すると現在のマップIDになる
if e_id.instance_of?(Array)
skip = e_id[2] ? e_id[2] : []
(e_id[0]..e_id[1]).each do |id|
next if skip.include?(id)
key = [m_id, id, s_type]
$game_self_switches[key] ^= true
end
else
key = [m_id, e_id, s_type]
$game_self_switches[key] ^= true
end
end
=begin
#--------------------------------------------------------------------------
# ○ 他所のセルフスイッチをまとめて操作
#--------------------------------------------------------------------------
def each_ssc(m_id, ary, s_type = "A", control = true)
m_id = $game_map.map_id if m_id == 0 # 0を指定すると現在のマップIDになる
ary[0]..ary[1].each do |e_id|
key = [m_id, e_id, s_type]
$game_self_switches[key] = control
end
end
=end
#--------------------------------------------------------------------------
# ○ 他所のセルフスイッチのチェック
#--------------------------------------------------------------------------
def ss_check(m_id, e_id, s_type = "A")
m_id = @map_id if m_id == 0 # 0を指定すると現在のマップIDになる
key = [m_id, e_id, s_type]
return $game_self_switches[key]
end
#--------------------------------------------------------------------------
# ○ 他所のセルフスイッチのチェック
#--------------------------------------------------------------------------
def all_ss_check(m_id, e_id, s_type = "A")
m_id = @map_id if m_id == 0 # 0を指定すると現在のマップIDになる
skip = e_id[2] ? e_id[2] : []
(e_id[0]..e_id[1]).all? do |id|
if skip.include?(id)
true
else
key = [m_id, id, s_type]
$game_self_switches[key]
end
end
#key = [m_id, e_id, s_type]
#return $game_self_switches[key]
end
end
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  マップ画面の処理を行うクラスです。
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ● 場所移動の処理 ※マップがフィールドの場合アイテム復活実行
#--------------------------------------------------------------------------
alias item_revive_perform_transfer perform_transfer
def perform_transfer
item_revive_perform_transfer
$game_player.item_stack_revive if $game_map.note.include?("<スイッチオフ>")
end
end