#==============================================================================
# 「お一人様メニュー」(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 = false
# 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 = Graphics.height - @gold_window.height
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