Permanent
Creation

RPGツクールXP/VX用のRGSS素材です。
一部英語版対応です。 (A few materials can be used for English RPG MAKER XP/VX.)
競合率はルファーの独断と偏見なのでたまにハズレます。


#==============================================================================
# ■ ダブルプレイヤーモード (分割定義 2)
#------------------------------------------------------------------------------
#  2 つのデータを読み込んで対戦するシーンクラスの定義です。
# ゲーム内で使うには、 $scene = Scene_DoublePlayersLoad.new というスクリプトを
# どこかに挿入する必要があります。
# (C) ルファー
# HP  https://tkoolerlufar.pages.dev/
#==============================================================================

#----------------------------------------------------------------------------
# ◆ Game_Temp クラス
#----------------------------------------------------------------------------
class Game_Temp
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :doubleplayers_mode       # ダブルプレイヤーモードフラグ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias lfr4_old_init initialize
  def initialize
    lfr4_old_init
    @doubleplayers_mode = false
  end
end
#----------------------------------------------------------------------------
# ◆ Game_Actor クラス
#----------------------------------------------------------------------------
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :player_index             # プレイヤーインデックス
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor_id    : アクター ID
  #--------------------------------------------------------------------------
  alias lfr4_old_init initialize
  def initialize(actor_id)
    @player_index = nil
    lfr4_old_init(actor_id)
  end
  #--------------------------------------------------------------------------
  # ● インデックス取得
  #     player_index : プレイヤーインデックス
  #--------------------------------------------------------------------------
  alias lfr4_old_index index
  def index
    if @player_index != nil
      $game_doubleplayers[@player_index].actors.index(self)
    else
      lfr4_old_index
    end
  end
  #--------------------------------------------------------------------------
  # ● MaxHP の取得
  #--------------------------------------------------------------------------
  alias lfr4_old_maxhp maxhp
  def maxhp
    n = lfr4_old_maxhp
    $game_temp.doubleplayers_mode && Lfer::DP_MHP ? n * (@level + 1) + 99 : n
  end
  #--------------------------------------------------------------------------
  # ● スキルの使用可能判定
  #     skill_id : スキル ID
  #--------------------------------------------------------------------------
  def skill_can_use?(skill_id)
    if not skill_learn?(skill_id)
      return false
    end
    if $data_skills[skill_id].common_event_id > 0 and
       $game_temp.doubleplayers_mode
      return false
    end
    return super
  end
end
#----------------------------------------------------------------------------
# ◆ Game_DoublePlayers クラス
#----------------------------------------------------------------------------
class Game_DoublePlayers < Game_Party
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     game_actors  : アクターのゲームデータ
  #     game_party   : パーティのゲームデータ
  #     player_index : プレイヤーインデックス
  #--------------------------------------------------------------------------
  def initialize(game_actors, game_party, player_index)
    @game_actors = game_actors
    @actors = game_party.actors
    @player_index = player_index
    for actor in @actors
      actor.player_index = @player_index
    end
  end
  #--------------------------------------------------------------------------
  # ● パーティメンバーのリフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    new_actors = []
    for i in 0...@actors.size
      if $data_actors[@actors[i].id] != nil
        new_actors.push(@game_actors[@actors[i].id])
      end
    end
    @actors = new_actors
    for actor in @actors
      actor.player_index = @player_index
    end
  end
  #--------------------------------------------------------------------------
  # ● 全滅判定
  #--------------------------------------------------------------------------
  def all_dead?
    if @actors.size == 0
      return false
    end
    for actor in @actors
      if actor.hp > 0
        return false
      end
    end
    return true
  end
end

戻る