スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

web拍手 by FC2   

[RGSS]敵レベル

使い方は → こちら

※このスクリプトはレベルの設定が少し曖昧なので修正していく可能性があります。

[RGSS]敵レベル
敵にもレベルの概念を作成します。 当然レベルが上がるとパラメーターも上がり強くなります。

スクリーンショット サムネイルクリックで拡大画像が見られます。

プログラムは続きにあります。

=begin
===============================================================================
    ☆★☆★☆★☆★ 敵レベル ★☆★☆★☆★☆
=============================================================================== 

 製作・開発:STERS
  アイデア:ルルベル様

  Page::http://stersblog.blog15.fc2.com/

導入方法------------------------------------------------------------------

    このスクリプトを Scene_Debug より下 Main より上に
   新しく作ったセクションにコピペして入れてください。

--------------------------------------------------------------------------

これを導入することで、
エネミーの能力値がレベルに応じて、変化させられる
ようになります。

使い方--------------------------------------------------------------------
1.まずはこのスクリプトを導入してください。

2.設定項目を自分のに合う用に変更してください。

3.エネミーの設定で
    エネミーの名前の最後に [LV12]などと指定します。
    ( 上記の場合初期レベルは12です )
    ( 省略可能ですが、その場合初期レベルは1 )

3.5.設定時のパラメーターが初期レベルでのパラメーターとなります。

    
4.エネミーのレベルを変えたい場面では、
    $level[index] = ○○
    ( indexはエネミーのインデックス )
    ( ○○はエネミーの変更後のレベル )
    と指定すればOK!
--------------------------------------------------------------------------
例えば

スラスラ [LV1]
HP100 SP100 腕力10 器用さ10 素早さ10 魔力10 ・・・・

スラリン [LV10]
HP100 SP100 腕力10 器用さ10 素早さ10 魔力10 ・・・・

と設定したとすると、
スラスラ より スラリン の方が弱い

=end
#--------------------------------------------------------------------------
# ☆ 設定項目
#--------------------------------------------------------------------------
class Game_Enemy < Game_Battler
  # パーティーのレベルの
  # 平均値に比例させるか?
  # ┌────────────────────┐
  # │ ※ ここを真(true)にしますと、          │ 
  # │    レベルが手動で変えられなくなります。│
  # └────────────────────┘
  PARTY_AVE = false
  
  #
  # パーティレベルに比例する が有効時に、
  # パーティ平均レベル+X の指定
  #
  PARTY_LV_X = -1  if(PARTY_AVE==true) # ←の[if~~]は消したらだめ
  
  # 最高レベル
  # (最低レベルは1)
  MAX_LEVEL = 99
  
  # エネミーの名前にレベルを表示するか?
  ENEMY_LEVEL = true
  
  # 表示時の書式
  # #{$1}:レベル 記号などは前に\を付けないとうまく表示されないかもしれません。
  ENEMY_NAME_LV = "Lv.#{$1}"
  
  #--------------------------------------------------------------------------
  # ○  能力値の計算式
  #--------------------------------------------------------------------------
  def keisan(parameter)
    level_change if PARTY_AVE == true
    #=========================================================
    #│first_level・・・レベル1での能力値           │
    #|second_level・・・レベル2での能力値          |
    #│level・・・現在のレベル                       │
    #
       n = (second_level(parameter) - first_level(parameter)) * level
    #
    #=========================================================
    return  n
  end
end

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  タイトル画面の処理を行うクラスです。
#------------------------------------------------------------------------------
#  「戦闘テスト」にも対応させてあります。
#==============================================================================

class Scene_Title
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  alias enemy_level_main main unless $@
  def main
    $data_enemies       = load_data("Data/Enemies.rxdata")
    # エネミーのレベルをつくり、初期化
    $level = []
    for i in 1...$data_enemies.size
      $level[i] =  $data_enemies[i].name =~ /\[LV[ ]*(\d+)\]/i ? [$1.to_i,1].max : 1
    end
    enemy_level_main
  end
  #--------------------------------------------------------------------------
  # ● 戦闘テスト
  #--------------------------------------------------------------------------
  alias enemy_level_battle_test battle_test unless $@
  def battle_test
    # データベースをロード
    $data_enemies       = load_data("Data/BT_Enemies.rxdata")
    # エネミーのレベルをつくり、初期化
    $level = []
    for i in 1...$data_enemies.size
      $level[i] =  $data_enemies[i].name =~ /\[LV[ ]*(\d+)\]/i ? [$1.to_i,1].max : 1
    end
    enemy_level_battle_test
  end
end

#==============================================================================
# ■ Game_Enemy
#------------------------------------------------------------------------------
#  エネミーを扱うクラスです。このクラスは Game_Troop クラス ($game_troop) の
#   内部で使用されます。
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ○ レベル取得
  #--------------------------------------------------------------------------
  def level
    return [[$level[@enemy_id], 1].max, MAX_LEVEL].min
  end
  def max_level
    return MAX_LEVEL
  end
  #--------------------------------------------------------------------------
  # ○ レベルを比例させる
  #--------------------------------------------------------------------------
  def level_change
    plevel = 0
    for actor in $game_party.actors
      plevel += actor.level
    end
    $level = (plevel / $game_party.actors.size).round + PARTY_LV_X
  end
  #--------------------------------------------------------------------------
  # ○ レベル1での能力値
  #--------------------------------------------------------------------------
  def first_level(parameter)
    n = get_parameter(parameter)
    lv = name =~ /\[LV[ ]*(\d+)\]/i ? $1.to_i : false
    n /= [[lv, 1].max, MAX_LEVEL].min if lv != false
    n = 0 if n < 0
    return n.round
  end
  #--------------------------------------------------------------------------
  # ○ レベル2での能力値
  #--------------------------------------------------------------------------
  def second_level(parameter)
    n = first_level(parameter)
    n *= 2
    return n.round
  end
  #--------------------------------------------------------------------------
  # ○ パラメータ取得
  #--------------------------------------------------------------------------
  def get_parameter(para)
    n = 0
    case para
    when 0
      n = $data_enemies[@enemy_id].maxhp
    when 1
      n = $data_enemies[@enemy_id].maxsp
    when 2
      n = $data_enemies[@enemy_id].str
    when 3
      n = $data_enemies[@enemy_id].dex
    when 4
      n = $data_enemies[@enemy_id].agi
    when 5
      n = $data_enemies[@enemy_id].int
    when 6
      n = $data_enemies[@enemy_id].atk
    when 7
      n = $data_enemies[@enemy_id].pdef
    when 8
      n = $data_enemies[@enemy_id].mdef
    when 10
      n = $data_enemies[@enemy_id].exp
    when 11
      n = $data_enemies[@enemy_id].gold
    end
    return n
  end
  #--------------------------------------------------------------------------
  # ● 基本 MaxHP の取得
  #--------------------------------------------------------------------------
  alias enemy_level_base_maxhp base_maxhp unless $@
  def base_maxhp
    n = enemy_level_base_maxhp
    return n + keisan(0) - get_parameter(0)
  end
  #--------------------------------------------------------------------------
  # ● 基本 MaxSP の取得
  #--------------------------------------------------------------------------
  alias enemy_level_base_maxsp base_maxsp unless $@
  def base_maxsp
    n = enemy_level_base_maxsp
    return n + keisan(1) - get_parameter(1)
  end
  #--------------------------------------------------------------------------
  # ● 基本腕力の取得
  #--------------------------------------------------------------------------
  alias enemy_level_base_str base_str unless $@
  def base_str
    n = enemy_level_base_str
    return n + keisan(2) - get_parameter(2)
  end
  #--------------------------------------------------------------------------
  # ● 基本器用さの取得
  #--------------------------------------------------------------------------
  alias enemy_level_base_dex base_dex unless $@
  def base_dex
    n = enemy_level_base_dex
    return n + keisan(3) - get_parameter(3)
  end
  #--------------------------------------------------------------------------
  # ● 基本素早さの取得
  #--------------------------------------------------------------------------
  alias enemy_level_base_agi base_agi unless $@
  def base_agi
    n = enemy_level_base_agi
    return n + keisan(4) - get_parameter(4)
  end
  #--------------------------------------------------------------------------
  # ● 基本魔力の取得
  #--------------------------------------------------------------------------
  alias enemy_level_base_int base_int unless $@
  def base_int
    n = enemy_level_base_int
    return n + keisan(5) - get_parameter(5)
  end
  #--------------------------------------------------------------------------
  # ● 基本攻撃力の取得
  #--------------------------------------------------------------------------
  alias enemy_level_base_atk base_atk unless $@
  def base_atk
    n = enemy_level_base_atk
    return n + keisan(6) - get_parameter(6)
  end
  #--------------------------------------------------------------------------
  # ● 基本物理防御の取得
  #--------------------------------------------------------------------------
  alias enemy_level_base_pdef base_pdef unless $@
  def base_pdef
    n = enemy_level_base_pdef
    return n + keisan(7) - get_parameter(7)
  end
  #--------------------------------------------------------------------------
  # ● 基本魔法防御の取得
  #--------------------------------------------------------------------------
  alias enemy_level_base_mdef base_mdef unless $@
  def base_mdef
    n = enemy_level_base_mdef
    return n + keisan(8) - get_parameter(8)
  end
  #--------------------------------------------------------------------------
  # ● EXP の取得
  #--------------------------------------------------------------------------
  alias enemy_level_exp exp unless $@
  def exp
    n = enemy_level_exp
    return n + keisan(10) - get_parameter(10)
  end
  #--------------------------------------------------------------------------
  # ● ゴールドの取得
  #--------------------------------------------------------------------------
  alias enemy_level_gold gold unless $@
  def gold
    n = enemy_level_gold
    return n + keisan(11) - get_parameter(11)
  end
  #--------------------------------------------------------------------------
  # ● 名前
  #--------------------------------------------------------------------------
  alias enemy_level_name name unless $@
  def name
    na = enemy_level_name
    if ENEMY_LEVEL
      na.gsub!(/\[LV[ ]*(\d+)\]/i) { ENEMY_NAME_LV }
    else
      na.gsub!(/\[LV[ ]*(\d+)\]/i) { "" }
    end
    return na
  end
end

web拍手 by FC2   

コメントの投稿


非公開コメント

コメント

STERS's Development Room

STERSの開発室っぽい何か。


プロフィール

Name:STERS
Unity3D/C#/PHP/js/C++/VB
などを勉強中です

[STERS's Room]
[ファイル置き場]

カテゴリー
最近の記事
最近のコメント
カレンダー
06 ≪│2017/07│≫ 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
RSSリンクの表示
ブログ内Google検索
Google
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。