351 lines
14 KiB
Ruby
351 lines
14 KiB
Ruby
#==============================================================================
|
|
# 「お一人様メニュー」(ACE) Ver.1.4
|
|
# 製作者:奈々(なな)
|
|
# へぷたなすくろーる http://heptanas.mamagoto.com/
|
|
#
|
|
# ◇使用規約
|
|
# 使用される場合はスクリプト作成者として「奈々」を明記して下さい。
|
|
# このスクリプトを改変したり、改変したものを配布するなどは自由ですが
|
|
# その場合も元のスクリプトの作成者として名前は載せて下さい。
|
|
# その他、詳しい利用規約はブログを参照して下さい。
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
#
|
|
# パーティメンバーが1人の場合に使いやすいメニューです。
|
|
# 1人なのにいちいちアクターを選択する無駄な手間を省きます。
|
|
#
|
|
# 導入すると、パーティメンバーが1人の場合
|
|
# メニュー画面の「スキル」「装備」「ステータス」及び
|
|
# スキル・アイテムの使用対象で、アクター選択が行われません。
|
|
#
|
|
# 更に初期設定の各項目をtrueにすることで
|
|
# より1人パーティに適したメニュー画面にすることができます。
|
|
#
|
|
#==============================================================================
|
|
#◇初期設定
|
|
module Nana
|
|
|
|
#複数メンバー時の設定
|
|
LONELY_ONLY = true
|
|
# true パーティメンバーが複数でも、自動で先頭メンバーを選ぶ
|
|
# false パーティメンバーが複数なら、アクター選択を行う
|
|
|
|
#並び替えの設定
|
|
LONELY_FORMATION = true
|
|
# true 並び替えをメニューから削除
|
|
|
|
#ステータス画面の設定
|
|
LONELY_STATUS = true
|
|
# true ステータス画面がメニュー画面と一体化する
|
|
|
|
#アイテム画面の設定
|
|
LONELY_ITEM = true
|
|
# true アイテム画面をスキル画面と同じ構成にする
|
|
|
|
#戦闘画面の設定
|
|
LONELY_BATTLE = true
|
|
# true 戦闘画面のスキル・アイテム選択にも適用する
|
|
|
|
end
|
|
#==============================================================================
|
|
|
|
#==============================================================================
|
|
# ■ Scene_Menu
|
|
#------------------------------------------------------------------------------
|
|
# メニュー画面の処理を行うクラスです。
|
|
#==============================================================================
|
|
|
|
class Scene_Menu < Scene_MenuBase
|
|
|
|
#--------------------------------------------------------------------------
|
|
# ● コマンド[アイテム]
|
|
#--------------------------------------------------------------------------
|
|
def command_item
|
|
if Nana::LONELY_ITEM
|
|
SceneManager.call(Scene_Item_Skill)
|
|
else
|
|
SceneManager.call(Scene_Item)
|
|
end
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● コマンド[スキル][装備][ステータス]
|
|
#--------------------------------------------------------------------------
|
|
alias n7_lonely_command_personal command_personal
|
|
def command_personal
|
|
if Nana::LONELY_ONLY || ($game_party && $game_party.members.size == 1)
|
|
on_personal_ok
|
|
else
|
|
n7_lonely_command_personal
|
|
end
|
|
end
|
|
|
|
if Nana::LONELY_STATUS
|
|
#--------------------------------------------------------------------------
|
|
# ● 開始処理
|
|
#--------------------------------------------------------------------------
|
|
def start
|
|
super
|
|
@status_window = Window_Status.new($game_party.leader)
|
|
create_command_window
|
|
# create_gold_window
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● ゴールドウィンドウの作成
|
|
#--------------------------------------------------------------------------
|
|
#def create_gold_window
|
|
# @gold_window = Window_Gold.new
|
|
# @gold_window.x = Graphics.width - @gold_window.width
|
|
# @gold_window.y = 48
|
|
#end
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Scene_MenuBase
|
|
#------------------------------------------------------------------------------
|
|
# メニュー画面系の基本処理を行うクラスです。
|
|
#==============================================================================
|
|
|
|
class Scene_MenuBase < Scene_Base
|
|
|
|
if Nana::LONELY_ONLY || ($game_party && $game_party.members.size == 1)
|
|
#--------------------------------------------------------------------------
|
|
# ● 次のアクターに切り替え
|
|
#--------------------------------------------------------------------------
|
|
def next_actor
|
|
on_actor_change
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● 前のアクターに切り替え
|
|
#--------------------------------------------------------------------------
|
|
def prev_actor
|
|
on_actor_change
|
|
end
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Window_MenuCommand
|
|
#------------------------------------------------------------------------------
|
|
# メニュー画面で表示するコマンドウィンドウです。
|
|
#==============================================================================
|
|
|
|
class Window_MenuCommand < Window_Command
|
|
|
|
if Nana::LONELY_FORMATION
|
|
#--------------------------------------------------------------------------
|
|
# ● 並び替えをコマンドリストに追加
|
|
#--------------------------------------------------------------------------
|
|
def add_formation_command
|
|
end
|
|
end
|
|
|
|
if Nana::LONELY_STATUS
|
|
#--------------------------------------------------------------------------
|
|
# ● ウィンドウ幅の取得
|
|
#--------------------------------------------------------------------------
|
|
def window_width
|
|
return Graphics.width
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● 桁数の取得
|
|
#--------------------------------------------------------------------------
|
|
def col_max
|
|
return 5
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● 表示行数の取得
|
|
#--------------------------------------------------------------------------
|
|
def visible_line_number
|
|
return 1
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● 主要コマンドをリストに追加
|
|
#--------------------------------------------------------------------------
|
|
def add_main_commands
|
|
add_command(Vocab::item, :item, main_commands_enabled)
|
|
add_command(Vocab::skill, :skill, main_commands_enabled)
|
|
add_command(Vocab::equip, :equip, main_commands_enabled)
|
|
end
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Window_Status
|
|
#------------------------------------------------------------------------------
|
|
# ステータス画面で表示する、フル仕様のステータスウィンドウです。
|
|
#==============================================================================
|
|
|
|
class Window_Status < Window_Selectable
|
|
|
|
if Nana::LONELY_STATUS
|
|
#--------------------------------------------------------------------------
|
|
# ● オブジェクト初期化
|
|
#--------------------------------------------------------------------------
|
|
def initialize(actor)
|
|
super(0, line_height * 2, Graphics.width, Graphics.height - line_height * 2)
|
|
@actor = actor
|
|
refresh
|
|
activate
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● リフレッシュ
|
|
#--------------------------------------------------------------------------
|
|
def refresh
|
|
contents.clear
|
|
draw_block1 (line_height * 0)
|
|
draw_horz_line(line_height * 1)
|
|
draw_block2 (line_height * 2)
|
|
draw_horz_line(line_height * 6)
|
|
draw_block3 (line_height * 7)
|
|
end
|
|
end
|
|
|
|
end
|
|
#==============================================================================
|
|
# ■ Scene_Skill
|
|
#------------------------------------------------------------------------------
|
|
# スキル画面の処理を行うクラスです。処理共通化の便宜上、スキルも「アイテム」
|
|
# として扱っています。
|
|
#==============================================================================
|
|
|
|
class Scene_Skill < Scene_ItemBase
|
|
#--------------------------------------------------------------------------
|
|
# ● アイテムの決定
|
|
#--------------------------------------------------------------------------
|
|
alias lonely_determine_item determine_item
|
|
def determine_item
|
|
if item.for_friend? && (Nana::LONELY_ONLY || ($game_party && $game_party.members.size == 1))
|
|
on_actor_ok
|
|
activate_item_window
|
|
else
|
|
lonely_determine_item
|
|
end
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● アイテムの使用対象となるアクターを配列で取得
|
|
#--------------------------------------------------------------------------
|
|
def item_target_actors
|
|
if !item.for_friend?
|
|
[]
|
|
elsif item.for_all?
|
|
$game_party.members
|
|
elsif (Nana::LONELY_ONLY || ($game_party && $game_party.members.size == 1))
|
|
[$game_party.members[0]]
|
|
else
|
|
[$game_party.members[@actor_window.index]]
|
|
end
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Scene_Item_Skill
|
|
#------------------------------------------------------------------------------
|
|
# スキル画面を元にしたアイテム画面。
|
|
#==============================================================================
|
|
|
|
class Scene_Item_Skill < Scene_Skill
|
|
#--------------------------------------------------------------------------
|
|
# ● コマンドウィンドウの作成
|
|
#--------------------------------------------------------------------------
|
|
def create_command_window
|
|
wy = @help_window.height
|
|
@command_window = Window_ItemCategory_SkillCommand.new(0, wy)
|
|
@command_window.viewport = @viewport
|
|
@command_window.help_window = @help_window
|
|
@command_window.actor = @actor
|
|
@command_window.set_handler(:ok, method(:command_skill))
|
|
@command_window.set_handler(:cancel, method(:return_scene))
|
|
@command_window.set_handler(:pagedown, method(:next_actor))
|
|
@command_window.set_handler(:pageup, method(:prev_actor))
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● アイテムウィンドウの作成
|
|
#--------------------------------------------------------------------------
|
|
def create_item_window
|
|
wx = 0
|
|
wy = @status_window.y + @status_window.height
|
|
ww = Graphics.width
|
|
wh = Graphics.height - wy
|
|
@item_window = Window_ItemList.new(wx, wy, ww, wh)
|
|
@item_window.viewport = @viewport
|
|
@item_window.help_window = @help_window
|
|
@item_window.set_handler(:ok, method(:on_item_ok))
|
|
@item_window.set_handler(:cancel, method(:on_item_cancel))
|
|
@command_window.item_window = @item_window
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● アイテム[決定]
|
|
#--------------------------------------------------------------------------
|
|
def on_item_ok
|
|
$game_party.last_item.object = item
|
|
determine_item
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● アクターの切り替え
|
|
#--------------------------------------------------------------------------
|
|
def on_actor_change
|
|
@command_window.actor = @actor
|
|
@status_window.actor = @actor
|
|
@command_window.activate
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Window_ItemCategory_SkillCommand
|
|
#------------------------------------------------------------------------------
|
|
# スキルコマンドを元にしたアイテムカテゴリー。
|
|
#==============================================================================
|
|
|
|
class Window_ItemCategory_SkillCommand < Window_SkillCommand
|
|
#--------------------------------------------------------------------------
|
|
# ● フレーム更新
|
|
#--------------------------------------------------------------------------
|
|
def update
|
|
super
|
|
@item_window.category = current_symbol if @item_window
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● コマンドリストの作成
|
|
#--------------------------------------------------------------------------
|
|
def make_command_list
|
|
add_command(Vocab::item, :item)
|
|
# add_command(Vocab::weapon, :weapon)
|
|
add_command(Vocab::armor, :armor)
|
|
add_command(Vocab::key_item, :key_item)
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● アイテムウィンドウの設定
|
|
#--------------------------------------------------------------------------
|
|
def item_window=(item_window)
|
|
@item_window = item_window
|
|
update
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Scene_Battle
|
|
#------------------------------------------------------------------------------
|
|
# バトル画面の処理を行うクラスです。
|
|
#==============================================================================
|
|
|
|
class Scene_Battle < Scene_Base
|
|
|
|
if Nana::LONELY_BATTLE
|
|
#--------------------------------------------------------------------------
|
|
# ● アクター選択の開始
|
|
#--------------------------------------------------------------------------
|
|
alias n7_lonely_select_actor_selection select_actor_selection
|
|
def select_actor_selection
|
|
if Nana::LONELY_ONLY || ($game_party && $game_party.members.size == 1)
|
|
BattleManager.actor.input.target_index = 0
|
|
@skill_window.hide
|
|
@item_window.hide
|
|
next_command
|
|
else
|
|
n7_lonely_select_actor_selection
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|