#============================================================================== # ■ XP-RGSS-44 サイドビュー戦闘[Formation]  by Claimh #------------------------------------------------------------------------------ # アクターの位置(陣形)です。 # アクターの位置によるダメージの増減はありません。 #------------------------------------------------------------------------------ #【再定義】 # Game_Actor : screen_x # screen_y # screen_z # Game_Enemy : screen_z # Spriteset_Battle : initialize #============================================================================== module Battle_Formation #------------------------------------------------------------------------------ # [陣形設定] # $game_system.battle_formation = 陣形ID # で陣形を変更可能(イベントスクリプトでも可) FORM = { # 陣形ID => [[メンバー1のx、y], [メンバー2のx, y], # [メンバー3のx, y], [メンバー4のx, y]] 0 => [[480,200], [500, 280], [560, 220], [600, 300]], 1 => [[480,240], [540, 200], [560, 300], [600, 250]], 2 => [[480,250], [580, 215], [590, 260], [600, 305]], 3 => [[535,240], [540, 300], [595, 245], [600, 305]], 4 => [[510,220], [550, 315], [570, 230], [600, 295]] } #------------------------------------------------------------------------------ end #============================================================================== # ■ Game_System #============================================================================== class Game_System attr_accessor :battle_formation # 陣形ID #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias init_game_system initialize def initialize init_game_system @battle_formation = 1 # 初期陣形 end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● バトル画面 X 座標の取得 [再定義] #-------------------------------------------------------------------------- def screen_x return Battle_Formation::FORM[$game_system.battle_formation][self.index][0] end #-------------------------------------------------------------------------- # ● バトル画面 Y 座標の取得 [再定義] #-------------------------------------------------------------------------- def screen_y return Battle_Formation::FORM[$game_system.battle_formation][self.index][1] end #-------------------------------------------------------------------------- # ● バトル画面 Z 座標の取得 [再定義] #-------------------------------------------------------------------------- def screen_z bitmap = RPG::Cache.character(self.character_name, self.character_hue) # 高さ+Y 座標 return screen_y + bitmap.height / 4 end end #============================================================================== # ■ Game_Enemy #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ● バトル画面 Z 座標の取得 #-------------------------------------------------------------------------- def screen_z bitmap = RPG::Cache.battler(self.battler_name, self.battler_hue) # 高さ+Y 座標 return screen_y + bitmap.height end end #============================================================================== # ■ Spriteset_Battle #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :viewport1 # エネミー側のビューポート attr_reader :viewport2 # アクター側のビューポート #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize # ビューポートを作成 @viewport1 = Viewport.new(0, 0, 640, 320) @viewport2 = Viewport.new(0, 0, 640, 480) @viewport3 = Viewport.new(0, 0, 640, 480) @viewport4 = Viewport.new(0, 0, 640, 480) @viewport2.z = 101 @viewport3.z = 200 @viewport4.z = 5000 # バトルバックスプライトを作成 @battleback_sprite = Sprite.new(@viewport1) # エネミースプライトを作成 @enemy_sprites = [] for enemy in $game_troop.enemies.reverse @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy)) end # アクタースプライトを作成 @actor_sprites = [] @actor_sprites.push(Sprite_Battler.new(@viewport1)) @actor_sprites.push(Sprite_Battler.new(@viewport1)) @actor_sprites.push(Sprite_Battler.new(@viewport1)) @actor_sprites.push(Sprite_Battler.new(@viewport1)) # 天候を作成 @weather = RPG::Weather.new(@viewport1) # ピクチャスプライトを作成 @picture_sprites = [] for i in 51..100 @picture_sprites.push(Sprite_Picture.new(@viewport3, $game_screen.pictures[i])) end # タイマースプライトを作成 @timer_sprite = Sprite_Timer.new # フレーム更新 update end end #============================================================================== # ■ Arrow_Actor #============================================================================== class Arrow_Actor < Arrow_Base #-------------------------------------------------------------------------- # ● フレーム更新 [再定義] #-------------------------------------------------------------------------- alias update_alias update def update update_alias # スプライトの座標を設定 if self.actor != nil self.y = self.actor.screen_y + 50 end end end