# ▼▲▼ XRXS_BP11. バトラーモーションXC. ver..04b ▼▲▼
# by 桜雅 在土
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
class Scene_Battle
# 「状況に応じたフォーム変化を行う」
# (基本的に true で使用しますが、"待機アニメ"だけ使用したいとき、または
# Full-Move Battle Systemを使用する場合、false に設定して下さい。)
DO_FORM_UPDATE = true
#
# Animacion automatica
#
AUTO_UPDATE_DECPLACE = true
# "Animación automática": En el marco del un solo dígito para añadir
# de forma automática una serie de movimientos.
AUTO_UPDATE_NUMBERS = [1, 31, 41, 51, 91, 221, 231]
# Repetir la moción de secuencias animadas.
AUTO_UPDATE_LOOP = [1, 41, 51, 81, 91, 221, 231]
end
class Game_Battler
#
# "バッドステート"であると判断するステートのIDの配列
#
BAD_STATE_IDS = [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
#--------------------------------------------------------------------------
# ○ スキルが魔法スキルがどうかの判別
#--------------------------------------------------------------------------
def skill_is_a_magic?(skill)
return skill == nil ? false : (skill.str_f < skill.int_f)
end
end
# Conjunto fijo de valores
module XRXS_BP11
# Formulario de lista ID
BASIC = 1 # 待機:基本(1に固定)
BAD_STATE = 81 # 待機:バッドステート
DOWN = 91 # ダウン(91固定)
STEP3_ATTACK = 1 # 通常攻撃 :行動側アニメ時
STEP4_ATTACK = 121 # 通常攻撃 :対象側アニメ時
STEP3_GUARD = 61 # 防御選択 :行動側アニメ時
STEP4_GUARD = 61 # 防御選択 :対象側アニメ時
STEP3_ESCAPE = 51 # 逃げる :行動側アニメ時
STEP4_ESCAPE = 51 # 逃げる :対象側アニメ時
STEP3_NOMOVE = 1 # なにもしない :行動側アニメ時
STEP4_NOMOVE = 1 # なにもしない :対象側アニメ時
STEP3_SKILL = 201 # スキル(非魔法):行動側アニメ時
STEP4_SKILL = 211 # スキル(非魔法):対象側アニメ時
STEP3_MAGIC = 221 # スキル( 魔法 ):行動側アニメ時
STEP4_MAGIC = 231 # スキル( 魔法 ):対象側アニメ時
STEP3_ITEM = 241 # アイテム使用 :行動側アニメ時
STEP4_ITEM = 251 # アイテム使用 :対象側アニメ時
STEP4_DAMAGE = 71 # ダメージ受け
STEP4_GUARD = 61 # 攻撃を防御時
STEP4_HEALED = 251 # 非ダメージ受け時(回復等)
STEP4_AVOID = 51 # 回避時
WIN_ACTION = 991 # 戦闘勝利時
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :now_form_id # フォームID
attr_accessor :battler_name_basic_form # バトラーの基本バトラーグラフィック
#--------------------------------------------------------------------------
# ○ フォームID
#--------------------------------------------------------------------------
def now_form_id
if @now_form_id != nil
return @now_form_id
else
return 1
end
end
#--------------------------------------------------------------------------
# ○graficos de muerte o cambio de estado para aliados y enemigos
#--------------------------------------------------------------------------
def transgraphic_basic_form
if dead? and battler_graphic_exist?(XRXS_BP11::DOWN)
self.motion.do_down
form_id = XRXS_BP11::DOWN
else
form_id = XRXS_BP11::BASIC
for state_id in @states
form_id = XRXS_BP11::BAD_STATE if BAD_STATE_IDS.include?(state_id)
end
end
transgraphic(form_id)
end
#--------------------------------------------------------------------------
# ○ バトラーグラフィックの変更
# form_id : 変更後のフォームのID
#--------------------------------------------------------------------------
def transgraphic(form_id)
# 現在フォームID の更新。
@now_form_id = form_id
if form_id == 0
# 0 が指定された場合、グラフィックを消す
@battler_name = ""
return
elsif form_id == 1
# 1 が指定された場合、初期グラフィックへ戻す
@battler_name = @battler_name_basic_form.to_s
else
# 有無チェック
if battler_graphic_exist?(form_id)
# グラフィック変更
@battler_name = form_id_to_name(form_id)
end
end
end
#--------------------------------------------------------------------------
# ○ バトラーグラフィックの有無
#--------------------------------------------------------------------------
def battler_graphic_exist?(form_id)
# バトラーグラフィックス読み込みテスト
begin
RPG::Cache.battler(form_id_to_name(form_id), @battler_hue)
rescue
# 無かったときの処理
return false
end
return true
end
#--------------------------------------------------------------------------
# ○ form_id と @battler_name_basic_form から form_name を作成 (String)
#--------------------------------------------------------------------------
def form_id_to_name(form_id)
form_name = @battler_name_basic_form.to_s + "_battler/" + @battler_name_basic_form.to_s + "_"
if form_id < 10
form_name += "00"
elsif form_id < 100
form_name += "0"
end
form_name += form_id.to_s
return form_name
end
end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# ● コラプス
#--------------------------------------------------------------------------
def collapse
if @battler.battler_graphic_exist?(91)
else
super
end
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias xrxs_bp11_update update
def update
xrxs_bp11_update
return if @battler == nil
if @battler.dead? and @battler.battler_graphic_exist?(XRXS_BP11::DOWN)
self.opacity = 255
end
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :battler_name_basic_form # バトラー ファイル名:基本
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias xrxs_bp11_setup setup
def setup(actor_id)
xrxs_bp11_setup(actor_id)
@battler_name_basic_form = @battler_name
end
#--------------------------------------------------------------------------
# ● グラフィックの変更
#--------------------------------------------------------------------------
alias xrxs_bp11_set_graphic set_graphic
def set_graphic(character_name, character_hue, battler_name, battler_hue)
xrxs_bp11_set_graphic(character_name, character_hue, battler_name, battler_hue)
@battler_name_basic_form = @battler_name
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias xrxs_bp11_initialize initialize
def initialize(troop_id, member_index)
xrxs_bp11_initialize(troop_id, member_index)
@battler_name_basic_form = @battler_name
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias xrxs_bp11_main main
def main
@wait_count_motion = 0
xrxs_bp11_main
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias xrxs_bp11_update update
def update
xrxs_bp11_update
# バトラーグラフィック表示更新
if @wait_count_motion > 0
# ウェイトカウントを減らす
@wait_count_motion -= 1
elsif AUTO_UPDATE_DECPLACE
for battler in $game_party.actors + $game_troop.enemies
# バトラー待機グラフィックの更新
trance_id = battler.now_form_id
#
if AUTO_UPDATE_NUMBERS.include?(trance_id/10 * 10 + 1)
if trance_id%10 == 8
# 1に戻す
if AUTO_UPDATE_LOOP.include?(trance_id - 7)
trance_id -= 7
battler.transgraphic(trance_id)
end
else
# 一つ進める
trance_id += 1
battler.transgraphic(trance_id)
end
end
end
@wait_count_motion = 1
end
end
#--------------------------------------------------------------------------
# ● プレバトルフェーズ開始
#--------------------------------------------------------------------------
alias xrxs_bp11_start_phase1 start_phase1
def start_phase1
xrxs_bp11_start_phase1
# モーションをリセット
actors_motion_reset
end
#--------------------------------------------------------------------------
# ○ アクター達のモーションをリセット
#--------------------------------------------------------------------------
def actors_motion_reset
for actor in $game_party.actors
actor.transgraphic_basic_form
end
end
#--------------------------------------------------------------------------
# ● バトル終了
#--------------------------------------------------------------------------
alias xrxs_bp11_battle_end battle_end
def battle_end(result)
# モーションを基本に戻す
for actor in $game_party.actors
actor.set_graphic(actor.character_name, actor.character_hue, actor.battler_name_basic_form, actor.battler_hue)
end
# 呼び戻す
xrxs_bp11_battle_end(result)
end
if DO_FORM_UPDATE
#--------------------------------------------------------------------------
# ● 勝敗判定
#--------------------------------------------------------------------------
alias xrxs_bp11_judge judge
def judge
bool = xrxs_bp11_judge
if bool
for battler in $game_party.actors
if battler.dead? == false
battler.transgraphic(XRXS_BP11::WIN_ACTION)
end
end
end
return bool
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
#--------------------------------------------------------------------------
alias xrxs_bp11_update_phase4_step3 update_phase4_step3
def update_phase4_step3
# モーション:行動側のモーション
# アクションの種別で分岐
case @active_battler.current_action.kind
when 0 # 基本
# 攻撃の場合
if @active_battler.current_action.basic == 0
@active_battler.transgraphic(XRXS_BP11::STEP3_ATTACK)
end
# 防御の場合
if @active_battler.current_action.basic == 1
@active_battler.transgraphic(XRXS_BP11::STEP3_GUARD)
end
# 逃げるの場合
if @active_battler.is_a?(Game_Enemy) and @active_battler.current_action.basic == 2
@active_battler.transgraphic(XRXS_BP11::STEP3_ESCAPE)
end
# 何もしないの場合
if @active_battler.current_action.basic == 3
@active_battler.transgraphic(XRXS_BP11::STEP3_NOMOVE)
end
when 1 # スキル時、魔法判別
if @active_battler.skill_is_a_magic?(@skill)
@active_battler.transgraphic(XRXS_BP11::STEP3_MAGIC)
else
@active_battler.transgraphic(XRXS_BP11::STEP3_SKILL)
end
when 2 # アイテム
@active_battler.transgraphic(XRXS_BP11::STEP3_ITEM)
end
# 戻す
xrxs_bp11_update_phase4_step3
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
#--------------------------------------------------------------------------
alias xrxs_bp11_update_phase4_step4 update_phase4_step4
def update_phase4_step4
# モーション:行動側のモーション
# アクションの種別で分岐
case @active_battler.current_action.kind
when 0 # 基本
# 攻撃の場合
if @active_battler.current_action.basic == 0
@active_battler.transgraphic(XRXS_BP11::STEP4_ATTACK)
end
# 防御の場合
if @active_battler.current_action.basic == 1
@active_battler.transgraphic(XRXS_BP11::STEP4_GUARD)
end
# 逃げるの場合
if @active_battler.is_a?(Game_Enemy) and @active_battler.current_action.basic == 2
@active_battler.transgraphic(XRXS_BP11::STEP4_ESCAPE)
end
# 何もしないの場合
if @active_battler.current_action.basic == 3
@active_battler.transgraphic(XRXS_BP11::STEP4_NOMOVE)
end
when 1 # スキル時、魔法判別
if @active_battler.skill_is_a_magic?(@skill)
@active_battler.transgraphic(XRXS_BP11::STEP4_MAGIC)
else
@active_battler.transgraphic(XRXS_BP11::STEP4_SKILL)
end
when 2 # アイテム
@active_battler.transgraphic(XRXS_BP11::STEP4_ITEM)
end
# モーション:対象側のダメージ
for target in @target_battlers
if target.damage == "Miss"
target.transgraphic(XRXS_BP11::STEP4_AVOID)
elsif target.damage.is_a?(Numeric) and target.damage > 0
if target.guarding?
target.transgraphic(XRXS_BP11::STEP4_GUARD)
else
target.transgraphic(XRXS_BP11::STEP4_DAMAGE)
end
else
target.transgraphic(XRXS_BP11::STEP4_HEALED)
end
end
# 戻す
xrxs_bp11_update_phase4_step4
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
#--------------------------------------------------------------------------
alias xrxs_bp11_update_phase4_step6 update_phase4_step6
def update_phase4_step6
# 行動者のモーションのリセット
@active_battler.transgraphic_basic_form
# 対象のモーションリセット
if @target_battlers != nil
for target in @target_battlers
target.transgraphic_basic_form
end
end
xrxs_bp11_update_phase4_step6
end
end #---DO_FORM_UPDATE
end