#============================================================================== # ■ RGSS3 ランダム変身エネミー Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 指定したエネミーに変身した際に別のエネミーにランダム変身させます。 #============================================================================== # エネミーのメモ欄に指定。 #------------------------------------------------------------------------------ # <ランダム変身:2:10,3:5,4:3,5:2,6:1> # # それぞれカンマで区切った部位のうち、右側の値を足していく。→合計は21。 # 左側から順番に、変化率の値を合計から減算しつつ計算していく。 # # 10/21の確率でエネミーID2に変化。 # 5/11の確率でエネミーID3に変化。 # 3/6の確率でエネミーID4に変化。 # 2/3の確率でエネミーID5に変化。 # 1/1の確率でエネミーID6に変化。 #------------------------------------------------------------------------------ # <ランダム変身時HP全快> # # ランダム変身でスクリプト抜きの状態で本来変身するはずだったエネミー以外の # エネミーに変身した際、HPを全快させます。 #------------------------------------------------------------------------------ # <ランダム変身時MP全快> # # ランダム変身でスクリプト抜きの状態で本来変身するはずだったエネミー以外の # エネミーに変身した際、MPを全快させます。 #------------------------------------------------------------------------------ # <ランダム変身時TP全快> # # ランダム変身でスクリプト抜きの状態で本来変身するはずだったエネミー以外の # エネミーに変身した際、TPを全快させます。 #============================================================================== module RandomTransform #ランダム変身の設定用キーワードを指定。 Word1 = "ランダム変身" #ランダム変身時HP全快の設定用キーワードを指定。 Word2 = "ランダム変身時HP全快" #ランダム変身時MP全快の設定用キーワードを指定。 Word3 = "ランダム変身時MP全快" #ランダム変身時TP全快の設定用キーワードを指定。 Word4 = "ランダム変身時TP全快" end class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # 変身 #-------------------------------------------------------------------------- alias transform_random_transform transform def transform(enemy_id) base_enemy = $data_enemies[enemy_id] h = base_enemy.random_transform true_enemy_id = h.empty? ? enemy_id : random_transform_result(h) transform_random_transform(true_enemy_id) if true_enemy_id != enemy_id a = base_enemy.random_transform_recover self.hp = mhp if a[0] self.mp = mmp if a[1] if a[2] self.tp = max_tp refresh end end end #-------------------------------------------------------------------------- # ランダム変身結果 #-------------------------------------------------------------------------- def random_transform_result(hash) total = hash.values.inject(0) {|r,i| r += i} hash.each {|k,v| return k if v.to_f / total > rand total -= v} hash.keys[0] end end class RPG::Enemy < RPG::BaseItem #-------------------------------------------------------------------------- # ランダム変身 #-------------------------------------------------------------------------- def random_transform @random_transform ||= create_random_transform end #-------------------------------------------------------------------------- # ランダム変身データ作成 #-------------------------------------------------------------------------- def create_random_transform h = {} (/<#{RandomTransform::Word1}[::](\S+)>/ =~ note ? $1.to_s : "" ).split(/\s*,\s*/).each {|t| h[$1.to_i] = $2.to_i if /(\d+)[::](\d+)/ =~ t} h end #-------------------------------------------------------------------------- # ランダム変身後回復 #-------------------------------------------------------------------------- def random_transform_recover @random_transform_recover ||= create_random_transform_recover end #-------------------------------------------------------------------------- # ランダム変身後回復データ作成 #-------------------------------------------------------------------------- def create_random_transform_recover a = [] a.push(/<#{RandomTransform::Word2}>/ =~ note) a.push(/<#{RandomTransform::Word3}>/ =~ note) a.push(/<#{RandomTransform::Word4}>/ =~ note) a end end