#============================================================================== # ■ 敵グループレベル制限 #---------------------------------------------------------------------------- # 敵グループにレベル制限の概念を加えて # 条件を満たしていない状態のパーティではエンカウントできないようにする # エネミー設定でメモ欄にlevel[レベル下限, レベル上限]を指定する # 指定しなかった場合level[1, 1]と同じになる # 片方だけを設定することは不可 #============================================================================== module An_LE #算出方法指定一覧↓ #0=>min(最小レベル) 1=>avg(平均レベル) 2=>max(最大レベル) 3=>sum(合計レベル) #敵グループ最小レベル制限 #この方法で算出した数値以下のレベルのパーティとエンカウントしない Encounter = 3 #敵グループ最大レベル制限 #この方法で算出した数値以上のレベルのパーティとエンカウントしない Limit_Encounter = 3 #味方パーティレベル算出方法 Party_Level = 3 end #============================================================================== # ■ Game_Troop #============================================================================== class Game_Troop < Game_Unit #-------------------------------------------------------------------------- # ● 敵グループレベル #-------------------------------------------------------------------------- def level(troop_id) return 0 if troop_id == nil @level = 0 @limit_level = 0 for member in $data_troops[troop_id].members next if $data_enemies[member.enemy_id] == nil if $data_enemies[member.enemy_id].note =~ /level\[*(.+), *(.+)\]/i enemy_level = $1.to_i limit_level = $2.to_i else enemy_level = 1 limit_level = 1 end case An_LE::Encounter when 0 @level = enemy_level if @level > enemy_level when 1,3 @level += enemy_level when 2 @level = enemy_level if @level < enemy_level end case An_LE::Limit_Encounter when 0 @limit_level = limit_level if @limit_level > limit_level when 1,3 @limit_level += limit_level when 2 @limit_level = limit_level if @limit_level < limit_level end end if An_LE::Encounter == 1 @level /= $data_troops[troop_id].members.size end if An_LE::Limit_Encounter == 1 @limit_level /= $data_troops[troop_id].members.size end return [@level, @limit_level] end end #============================================================================== # ■ Game_Player #============================================================================== class Game_Player < Game_Character #-------------------------------------------------------------------------- # ● エンカウントする敵グループの ID を作成 #-------------------------------------------------------------------------- def make_encounter_troop_id encounter_list = $game_map.encounter_list.clone for area in $data_areas.values encounter_list += area.encounter_list if in_area?(area) end for troop in encounter_list case An_LE::Party_Level when 0 comparing = $game_party.min_level when 1 comparing = $game_party.avg_level when 2 comparing = $game_party.max_level when 3 comparing = $game_party.sum_level end if comparing < $game_troop.level(troop)[0]|| comparing > $game_troop.level(troop)[1] encounter_list[encounter_list.index(troop)] = nil end end if encounter_list.empty? make_encounter_count return 0 end encounter_list.compact! return encounter_list[rand(encounter_list.size)] end end