#============================================================================== # ■ XP-RGSS-44-V3 サイドビュー戦闘[Sprite_Battler(graphic)] by Claimh #------------------------------------------------------------------------------ # バトラーのモーション制御部分。ここはバトラーの表示処理部分 #------------------------------------------------------------------------------ #【再定義】Spriteset_Battle : 全て #============================================================================== #============================================================================== # ■ Sprite_Battler #------------------------------------------------------------------------------ #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、 # スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Battler < RPG::Sprite #-------------------------------------------------------------------------- # ● グラフィック描画共通(ループなし) #-------------------------------------------------------------------------- def draw_base(dev) @width = self.bitmap.width / dev @height = self.bitmap.height self.ox = @width / 2 self.oy = @height / 2 # 転送元の矩形を設定 sx = @pattern * @width self.src_rect.set(sx, 0, @width, @height) end #-------------------------------------------------------------------------- # ● グラフィック描画共通(ループあり) #-------------------------------------------------------------------------- def draw_base_loop(dev) draw_base(dev) @pattern = (@pattern + 1) % dev end #-------------------------------------------------------------------------- # ● 待機グラフィック表示 #-------------------------------------------------------------------------- def draw_stay_graphic self.bitmap = @bt_data.stay_bitmap draw_base_loop(@bt_data.stay_count) end #-------------------------------------------------------------------------- # ● ダメージグラフィック表示 #-------------------------------------------------------------------------- def draw_damage_graphic self.bitmap = @bt_data.damage_bitmap dev = @bt_data.damage_count draw_base(dev) @pattern += 1 # モーション:ダメージ → 待機 if @pattern == dev if @battler.dead? @battler.mt_mode = MT_DEAD else @battler.mt_mode = MT_STAY end motion_update end end #-------------------------------------------------------------------------- # ● ダメージMISSグラフィック表示 #-------------------------------------------------------------------------- def draw_miss_graphic @pattern = 0 draw_stay_graphic case @battler when Game_Actor @battler_x_plus = Setting::AVOID_X when Game_Enemy @battler_x_plus = -Setting::AVOID_X end end #-------------------------------------------------------------------------- # ● 戦闘不能グラフィック表示 #-------------------------------------------------------------------------- def draw_dead_graphic self.bitmap = @bt_data.dead_bitmap draw_base_loop(@bt_data.dead_count) case @battler when Game_Actor @battler_x_plus = Setting::DEAD_X when Game_Enemy end end #-------------------------------------------------------------------------- # ● 回復グラフィック表示 #-------------------------------------------------------------------------- def draw_recover_graphic self.bitmap = @bt_data.recover_bitmap dev = @bt_data.recover_count draw_base(dev) @pattern += 1 # モーション:回復 → 待機 if @pattern == dev @battler.mt_mode = MT_STAY motion_update end end #-------------------------------------------------------------------------- # ● 勝利グラフィック表示 #-------------------------------------------------------------------------- def draw_win_graphic self.bitmap = @bt_data.win_bitmap dev = @bt_data.win_count draw_base(dev) @pattern += 1 if @pattern == dev @win_wait = true end end #-------------------------------------------------------------------------- # ● 通常攻撃グラフィック表示 #-------------------------------------------------------------------------- def draw_attack_graphic self.bitmap = @bt_data.attack_bitmap dev = @bt_data.attack_count draw_base(dev) @pattern += 1 # モーション:攻撃アニメ → 攻撃戻り if @pattern == dev @pattern = dev - 1 end end #-------------------------------------------------------------------------- # ● 移動(行き)グラフィック表示 #-------------------------------------------------------------------------- def draw_go_graphic self.bitmap = @bt_data.go_bitmap draw_base_loop(@bt_data.go_count) end #-------------------------------------------------------------------------- # ● 移動(戻り)グラフィック表示 #-------------------------------------------------------------------------- def draw_back_graphic self.bitmap = @bt_data.back_bitmap draw_base_loop(@bt_data.back_count) end #-------------------------------------------------------------------------- # ● 魔法待機グラフィック表示 #-------------------------------------------------------------------------- def draw_magic_graphic self.bitmap = @bt_data.magic_bitmap(@battler.current_action.skill_id) dev = @bt_data.magic_count(@battler.current_action.skill_id) draw_base(dev) @pattern += 1 if @pattern == dev @magic_wait = true end end #-------------------------------------------------------------------------- # ● 近接魔法 移動(行き)グラフィック表示 #-------------------------------------------------------------------------- def draw_magic_go_graphic self.bitmap = @bt_data.magic_go_bitmap(@battler.current_action.skill_id) draw_base_loop(@bt_data.magic_go_count(@battler.current_action.skill_id)) end #-------------------------------------------------------------------------- # ● 近接魔法 移動(戻り)グラフィック表示 #-------------------------------------------------------------------------- def draw_magic_back_graphic self.bitmap = @bt_data.magic_back_bitmap(@battler.current_action.skill_id) draw_base_loop(@bt_data.magic_back_count(@battler.current_action.skill_id)) end #-------------------------------------------------------------------------- # ● アイテム待機グラフィック表示 #-------------------------------------------------------------------------- def draw_item_graphic self.bitmap = @bt_data.item_bitmap dev = @bt_data.item_count draw_base(dev) @pattern += 1 if @pattern == dev @item_wait = true end end #-------------------------------------------------------------------------- # ● 投げ攻撃用ダミーグラフィック表示 #-------------------------------------------------------------------------- def draw_throw_graphic @throw_sprite = Sprite.new @throw_sprite.bitmap = @bt_data.attack_bitmap dev = @bt_data.attack_count @width = @throw_sprite.bitmap.width / dev @height = @throw_sprite.bitmap.height @throw_sprite.ox = @width / 2 @throw_sprite.oy = @height / 2 # 転送元の矩形を設定 sx = (dev - 1) * @width @throw_sprite.src_rect.set(sx, 0, @width, @height) # 本体のダミーであるので、見た目が変わらないように細工を。 @throw_sprite.x = self.x @throw_sprite.y = self.y @throw_sprite.z = self.z - 1 end end