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

424 lines
No EOL
17 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

module FAKEREAL
EVENT_RUNNING = 84 # イベント実行中判定
end
#==============================================================================
# ■ Game_Switches
#------------------------------------------------------------------------------
#  スイッチを扱うクラスです。組み込みクラス Array のラッパーです。このクラス
# のインスタンスは $game_switches で参照されます。
#==============================================================================
class Game_PublicSystem
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
@message = {} # 既読判定追加
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def memory(data)
data.each_pair{|k, v| @message[k] = v }
#@message = data # 既読判定追加
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def remember
#$game_system.kidoku_load(@message) # 既読判定追加
$game_temp.kidoku_load(@message) # 既読判定追加
end
end
# 既読スキップ機能を削除する場合は
# このセクションの削除と  # 既読判定追加 の検索で出てくる行を全て削除
#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  文章表示に使うメッセージウィンドウです。
#==============================================================================
class Window_Message < Window_Base
#--------------------------------------------------------------------------
# ● 全テキストの処理
#--------------------------------------------------------------------------
alias kidoku_process_all_text process_all_text
def process_all_text
#$game_temp.kidoku_reserve($game_message.all_text)
kidoku_process_all_text
end
#--------------------------------------------------------------------------
# ● 入力処理
#--------------------------------------------------------------------------
alias kidoku_process_input process_input
def process_input
kidoku_process_input
#$game_system.kidoku_set
end
end
#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
#  システム周りのデータを扱うクラスです。セーブやメニューの禁止状態などを保存
# します。このクラスのインスタンスは $game_system で参照されます。
#==============================================================================
=begin
class Game_System
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :kidoku # 既読文章配列 保存は通常セーブ及びシステムデータの保存と同時
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias kidoku_initialize initialize
def initialize
kidoku_initialize
@kidoku = {}
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def kidoku_set(flag)
@kidoku ||= {}
@kidoku[flag] = true
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def kidoku?
k = $game_temp.kidoku_flag
@kidoku ||= {}
return @kidoku[k]
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def kidoku_load(data)
data.each_pair{|k, v| @kidoku[k] = v if !@kidoku[k] }
#@kidoku = data
end
end
=end
#==============================================================================
# ■ Game_Temp
#------------------------------------------------------------------------------
#  セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン
# スタンスは $game_temp で参照されます。
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :kidoku_flag #
attr_accessor :kidoku #
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias kidoku_initialize initialize
def initialize
kidoku_initialize
@kidoku = {}
kidoku_flag_init
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def kidoku_flag_init
@kidoku_flag = nil
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def kidoku_load(data)
@kidoku = data
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
#def kidoku_set(flag, value = true)
#@kidoku[flag] = value
def kidoku_set(flag, value = true)
return if !flag
k = flag.dup
e = k.size == 4 ? k.pop : 0
@kidoku[k] ||= []
@kidoku[k][e] = value
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def kidoku?
return false if !kidoku_flag
return true if $game_switches[Option::Skip]
return true if $game_switches[Option::PeopleSkip] && $game_party.in_battle
return true if !message_skipable? && $game_switches[Option::PeopleSkip]
return false if !message_skipable?
return false if $game_party.in_battle
k = kidoku_flag.dup
e = k.size == 4 ? k.pop : 0
return false if @kidoku[k] == nil #@kidoku[k] ||= []
return @kidoku[k][e]
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def message_skipable?
$game_switches[FAKEREAL::EVENT_RUNNING] || $game_system.h_event
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def kidoku_test(num)
k = [num, 80, 3]
@kidoku[k] = [true, true, true]
end
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :page #
attr_accessor :flag_ext #
attr_accessor :trigger_type #
attr_accessor :ce_flag #コモンイベント用フラグで追加
#--------------------------------------------------------------------------
# ● クリア
#--------------------------------------------------------------------------
alias kidoku_clear clear
def clear
kidoku_clear
@ce_flag = false #コモンイベント用フラグで追加
@page = 0
@trigger_type = 0
@writable = true
flag_init
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def flag(f = 1)
if @flag_ext
#$game_system.kidoku_set(kidoku_flag)
$game_temp.kidoku_set(kidoku_flag) if kidoku_write?
@flag_ext = f
else
@flag_ext = f
end
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def flag_end
#$game_system.kidoku_set(kidoku_flag)
$game_temp.kidoku_set(kidoku_flag) if kidoku_write?
flag_reset
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def flag_write
$game_temp.kidoku_set(kidoku_flag)
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def flag_reset
@flag_ext = nil
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def flag_init
if @trigger_type != 4 && (@event_id != 0 && @map_id != 0)
@flag_ext = nil
$game_temp.kidoku_flag_init
end
end
#--------------------------------------------------------------------------
# ● 実行
#--------------------------------------------------------------------------
alias kidoku_run run
def run
kidoku_run
#$game_system.kidoku_set(kidoku_flag) if $game_temp.kidoku_flag && !$game_party.in_battle
#$game_temp.kidoku_set(kidoku_flag) if $game_temp.kidoku_flag && !$game_party.in_battle && kidoku_write?
#if $game_temp.kidoku_flag && !$game_party.in_battle && kidoku_write?
#$game_temp.kidoku_set(kidoku_flag)
#end
$game_temp.kidoku_set(kidoku_flag) if !$game_party.in_battle && kidoku_write?
flag_init
end
#--------------------------------------------------------------------------
# ● コモンイベント ※既読判定が正常に動作しないのでコモンイベントのみ元々の動作に戻す
#--------------------------------------------------------------------------
def command_117
common_event = $data_common_events[@params[0]]
if common_event
child = Game_Interpreter.new(@depth + 1)
child.setup(common_event.list, same_map? ? @event_id : 0)
child.ce_flag = @ce_flag ? @ce_flag : [@map_id, @event_id, @page, @flag_ext].compact #コモンイベント用フラグで追加
child.neutral_run
end
end
#--------------------------------------------------------------------------
# ● 実行 ※元々の実行動作。コモンイベントや外部呼出しイベントに
#--------------------------------------------------------------------------
def neutral_run
wait_for_message
while @list[@index] do
execute_command
@index += 1
end
Fiber.yield
@fiber = nil
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def kidoku_flag
#if flag_ext
if @ce_flag #コモンイベント用フラグで追加
k = @ce_flag.size == 3 ? (@ce_flag + [@flag_ext]).compact : @ce_flag
else
k = [@map_id, @event_id, @page, @flag_ext].compact
end
#else
#k = [@map_id, @event_id, @page]
#end
return k
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def kidoku_write?
$game_switches[FAKEREAL::EVENT_RUNNING] && @trigger_type != 4 &&
@list.any? {|ev| ev.code == 401 } && writable?
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def writable?
@writable
end
#--------------------------------------------------------------------------
# ● 注釈
#--------------------------------------------------------------------------
alias kidoku_command_108 command_108
def command_108
kidoku_command_108
@writable = false if @comments.include?("既読登録なし")
end
#--------------------------------------------------------------------------
# 並列イベントのセットアップ
#--------------------------------------------------------------------------
#def parallel_setup(list, event_id, map_id, page)
#clear
#@map_id = map_id
#@event_id = event_id
#@page = page
#@trigger_type = 4
#@list = list
#create_fiber
#end
#--------------------------------------------------------------------------
# ● 文章の表示
#--------------------------------------------------------------------------
# キャラ立ち絵スクリプト制御で設定
#alias kidoku_command_101 command_101
#def command_101
#$game_temp.k_map = @map_id
#$game_temp.k_event = @event_id
#kidoku_command_101
#end
end
#==============================================================================
# ■ Game_Event
#------------------------------------------------------------------------------
#  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
# イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :page_number #
#--------------------------------------------------------------------------
# ● イベントページの設定をセットアップ
#--------------------------------------------------------------------------
alias kidoku_setup_page_settings setup_page_settings
def setup_page_settings
kidoku_setup_page_settings
@page_number = @event.pages.index(@page)
end
#--------------------------------------------------------------------------
# ● イベントページの設定をクリア
#--------------------------------------------------------------------------
alias kidoku_clear_page_settings clear_page_settings
def clear_page_settings
kidoku_clear_page_settings
@page_number = -1
end
#--------------------------------------------------------------------------
# ● フレーム更新 ※再定義
#--------------------------------------------------------------------------
def update
super
check_event_trigger_auto
return unless @interpreter
unless @interpreter.running?
@interpreter.setup(@list, @event.id)
@interpreter.trigger_type = @trigger
@interpreter.page = page_number # 追加 上記一部変更
end
@interpreter.update
end
end
#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
#  マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
# このクラスのインスタンスは $game_map で参照されます。
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# ● 起動中のマップイベントを検出/セットアップ ※再定義
#--------------------------------------------------------------------------
def setup_starting_map_event
event = @events.values.find {|event| event.starting }
event.clear_starting_flag if event
@interpreter.setup(event.list, event.id) if event
@interpreter.page = event.page_number if event # 追加
event
end
#--------------------------------------------------------------------------
# ● 自動実行のコモンイベントを検出/セットアップ ※再定義
#--------------------------------------------------------------------------
def setup_autorun_common_event
event = $data_common_events.find do |event|
event && event.autorun? && $game_switches[event.switch_id]
end
@interpreter.setup(event.list) if event
@interpreter.page = event.page_number if event # 追加
event
end
end