# 設定項目_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ module KS_Extend class Mutant_Enemy # パラメータの変動を禁止するスイッチ。0で無効。 NO_MUTATE_SWITCH_ID = 0 # 特異なパラメーターの敵に付ける称号 # 100以下は、値より低い変化率の場合、100以上は値より高い変化率の場合に称号が付きます。 UNIQUE_NAMES = { :mutant=>'突然', :hp =>{60=>'病弱', 80=>'薄命', 120=>'巨大', 140=>'肉壁', }, :atk=>{60=>'スプーン', 80=>'モヤシ', 120=>'トオリマ', 140=>'マッサツ', }, :def=>{60=>'トーフ', 80=>'スポンジ', 120=>'ムチムチ', 140=>'メタル', }, :agi=>{60=>'アッガイ', 80=>'キャタピラ', 120=>'ジェット', 140=>'シャア専用', }, :spi=>{60=>'ツインテール', 80=>'グドン', 120=>'バルタン', 140=>'メフィラス', }, #:mdef=>{60=>'ネンユ', 80=>'タキツケ', 120=>'フネン', 140=>'ソダイ', }, } # まだつくってない。 #~ # 複数の称号を持つ敵に与えられる新たな称号 #~ # 上ほど優先順位が高い #~ UNIQUE_NAME_COMBINE = [ #~ [['']] #~ ] # 変動する能力値と、その幅の設定 # ":" + 能力値のメソッド名 をキーとして、 # [最小変化率, 最大変化率, ":" + 対応する能力+のインスタンス変数名] となる。 # 変化率100でデータベースどおりの能力値になる。 # :hp =>[80, 120, :@maxhp_plus], なら、HPがデータベースの 80〜120% PARAMS = { :mutant=>5, # 突然変異率、UNIQUE_NAMES[:mutant]が名前に付き、能力幅2倍。 :hp =>[75, 125, :@maxhp_plus], :mp =>[75, 125, :@maxmp_plus], :atk =>[75, 125, :@atk_plus], :def =>[75, 125, :@def_plus], :spi =>[75, 125, :@spi_plus], :agi =>[75, 125, :@agi_plus], #:mdef =>[75, 125, :@mdef_plus], } # 固有の変化率を持つエネミーIDの指定。 # 指定方法は前項と同じ、ただしインスタンス変数名は必要ない。 UNIQ_PARAMS = { # 例・1番の敵はHPの幅が 50〜200%、突然変異85% #1=>{:mutant=>65, :hp=>[50, 200], } } UNIQ_PARAMS.default = {} end end # 設定項目_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ =begin ★ks_敵能力ランダム化 最終更新日 2011/05/07 05/07 敵のランダム変化を抑制するスイッチを設定できるようにした。 □===制作・著作===□ MaidensnowOnline 暴兎 使用プロジェクトを公開する場合、readme等に当HP名とそのアドレスを記述してください。 使用報告はしてくれると喜びます。 □===配置場所===□ 基本スクリプトおよび基本エリアスは必要ありません。 エリアスのみで構成されているので、 可能な限り"▼ メイン"の上、近くに配置してください。 □===説明・使用方法===□ エネミーが生成される際に、ランダムで能力値に幅を持たせます。 能力値の変化率に応じてエネミーの表示名を変更することもできます。 初期設定の変更内容がとてもシュールなので注意してください。 設定した確率により突然変異が発生すると、能力幅が2倍+突然変異名称が付きます。 これらの設定は、エネミーIDごとに個別に設定することもできます。 なお、エネミーを作成すると同時にステートを付加するようなスクリプトがあったら、 そのステートによる能力値変化が加味されて変な事になります。 □===エリアスしているメソッド===□ class Game_Enemy < Game_Battler def name# Game_Enemy alias class Game_Troop < Game_Unit def setup(troop_id)# Game_Troop alias =end class RPG::Enemy def mutant_param(key) vv = KS_Extend::Mutant_Enemy::UNIQ_PARAMS[@id][key] return vv unless vv.nil? vv = KS_Extend::Mutant_Enemy::PARAMS[key] return vv end end class Game_Enemy < Game_Battler attr_accessor :mutant_name #-------------------------------------------------------------------------- # ● 表示名の取得 #-------------------------------------------------------------------------- alias name_for_mutant name def name# Game_Enemy alias result = name_for_mutant return @mutant_name ? @mutant_name + result : result end end class Game_Troop < Game_Unit alias setup_for_mutant setup def setup(troop_id)# Game_Troop alias setup_for_mutant(troop_id) return if KS_Extend::Mutant_Enemy::NO_MUTATE_SWITCH_ID != 0 && $game_switches[KS_Extend::Mutant_Enemy::NO_MUTATE_SWITCH_ID] modu = KS_Extend::Mutant_Enemy names = [] names2 = [] for battler in members mutanted = rand(100) < battler.enemy.mutant_param(:mutant) names.clear names2.clear for key in modu::PARAMS.keys next if key == :mutant set = battler.enemy.mutant_param(key) det = KS_Extend::Mutant_Enemy::PARAMS[key] xv = mutanted ? (set[1] - set[0]) / 2 : 0 vv = rand(set[1] - set[0] + 1 + xv * 2) + set[0] - xv met = det[2] iv = battler.instance_variable_get(met) battler.instance_variable_set(met, iv + battler.__send__(key) * vv / 100 - battler.__send__(key)) #p battler.name, vv, key, battler.__send__(key), battler.instance_variable_get(met) next unless modu::UNIQUE_NAMES[key] case vv <=> 100 when -1 for v in modu::UNIQUE_NAMES[key].keys.sort next unless v < 100 next unless vv < v names << modu::UNIQUE_NAMES[key][v] break end when 1 for v in modu::UNIQUE_NAMES[key].keys.sort{|a,b| b <=> a} next unless v > 100 next unless vv > v names << modu::UNIQUE_NAMES[key][v] break end end end battler.hp = battler.maxhp battler.mp = battler.maxmp until names.empty? names2 << names.delete_at(rand(names.size)) end battler.mutant_name = "" + modu::UNIQUE_NAMES[:mutant] if mutanted for str in names2 if battler.mutant_name.nil? battler.mutant_name = "" else battler.mutant_name += "・" end battler.mutant_name += str end battler.letter = "(#{battler.letter})" unless names2.empty? end end end