#============================================================================== # ■ RGSS2 KGC_PassiveSkill拡張 レベル依存パッシブスキル Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 習得者のレベルに依存して能力値が変化する # パッシブスキルの作成が可能となります。 # 非戦闘時のアイテム使用者はアイテム使用対象となります。 #------------------------------------------------------------------------------ # 使用例 #------------------------------------------------------------------------------ # ★スキルのメモ欄に以下のように記述する。 # # <レベル依存:a,b,c,d> # aに能力値番号 #(0:最大HP 1:最大MP 2:攻撃力 3:防御力 4:精神力 5:敏捷性 # 6:命中率 7:回避率 8:クリティカル率) # bにレベルに対する処理 # (0:加算 1:減算 2:乗算 3:除算) # cにレベルに対する処理に用いる数字(任意) # dに能力値に対する処理 # (0:加算 1:減算 2:乗算 3:除算) # 以上4つの数字を記述。一つでも漏れがある場合無効。 # # 記入例 # # <レベル依存:0,0,10,3> # 使用者のレベル+10の数値を最大HPに除算する。 # # <レベル依存:1,1,5,2> # 使用者のレベル−5の数値を最大MPに乗算する。 # # <レベル依存:2,2,7,1> # 使用者のレベル×7の数値を攻撃力に減算する。 # # <レベル依存:3,3,6,0> # 使用者のレベル÷6の数値を防御力に加算する。 # #------------------------------------------------------------------------------ # なお、全ての能力値についてcの値とレベルをbの方法で計算した際に # 結果が0となった場合、能力値へのdの方法による計算と処理は行われません。 # 例 レベルが1の時に<レベル依存:0,1,1,2> # 個の場合、1-1で0になる為、最大HP×0の処理は行われません。 #============================================================================== module ALVD #スキル設定用ワード WORD = "レベル依存" end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 能力値に加算する値をクリア #-------------------------------------------------------------------------- alias clear_extra_values_alvd clear_extra_values unless $! def clear_extra_values clear_extra_values_alvd @alvd_flag = false end def alvd_make @alvd_flag = true @alvd1 = [] @alvd2 = [] @alvd3 = [] @alvd4 = [] number = 9 number.times do @alvd1.push(0) @alvd2.push(0) @alvd3.push(0) @alvd4.push(0) end skill_data2 = nil if $imported["SkillCPSystem"] skill_data1 = skills skill_data2 = battle_skills skill_data3 = @battle_skills else skill_data1 = skills end for i in skill_data1 if $imported["SkillCPSystem"] if KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL if KGC::SkillCPSystem::PASSIVE_NEED_TO_SET next if !skill_data2.include?(i) && i.cp_cost > 0 end else if KGC::SkillCPSystem::PASSIVE_NEED_TO_SET next unless skill_data3.include?(i.id) end end end i.note.each_line { |line| memo = line.scan(/<#{ALVD::WORD}[::](\S+),(\S+),(\S+),(\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? data = level case memo[1].to_i#レベルに対する処理 when 0#加算 data += memo[2].to_i when 1#減算 data -= memo[2].to_i when 2#乗算 data *= memo[2].to_i when 3#除算 data /= memo[2].to_i end case memo[0].to_i#変化パラメータ when 0#HP case memo[3].to_i#レベルを処理した数値をパラメータに対しどう処理するか when 0#加算 @alvd1[0] += data when 1#減算 @alvd2[0] += data when 2#乗算 @alvd3[0] += data when 3#除算 @alvd4[0] += data end when 1#MP case memo[3].to_i#レベルを処理した数値をパラメータに対しどう処理するか when 0#加算 @alvd1[1] += data when 1#減算 @alvd2[1] += data when 2#乗算 @alvd3[1] += data when 3#除算 @alvd4[1] += data end when 2#ATK case memo[3].to_i#レベルを処理した数値をパラメータに対しどう処理するか when 0#加算 @alvd1[2] += data when 1#減算 @alvd2[2] += data when 2#乗算 @alvd3[2] += data when 3#除算 @alvd4[2] += data end when 3#DEF case memo[3].to_i#レベルを処理した数値をパラメータに対しどう処理するか when 0#加算 @alvd1[3] += data when 1#減算 @alvd2[3] += data when 2#乗算 @alvd3[3] += data when 3#除算 @alvd4[3] += data end when 4#SPI case memo[3].to_i#レベルを処理した数値をパラメータに対しどう処理するか when 0#加算 @alvd1[4] += data when 1#減算 @alvd2[4] += data when 2#乗算 @alvd3[4] += data when 3#除算 @alvd4[4] += data end when 5#AGI case memo[3].to_i#レベルを処理した数値をパラメータに対しどう処理するか when 0#加算 @alvd1[5] += data when 1#減算 @alvd2[5] += data when 2#乗算 @alvd3[5] += data when 3#除算 @alvd4[5] += data end when 6#HIT case memo[3].to_i#レベルを処理した数値をパラメータに対しどう処理するか when 0#加算 @alvd1[6] += data when 1#減算 @alvd2[6] += data when 2#乗算 @alvd3[6] += data when 3#除算 @alvd4[6] += data end when 7#EVA case memo[3].to_i#レベルを処理した数値をパラメータに対しどう処理するか when 0#加算 @alvd1[7] += data when 1#減算 @alvd2[7] += data when 2#乗算 @alvd3[7] += data when 3#除算 @alvd4[7] += data end when 8#CRI case memo[3].to_i#レベルを処理した数値をパラメータに対しどう処理するか when 0#加算 @alvd1[8] += data when 1#減算 @alvd2[8] += data when 2#乗算 @alvd3[8] += data when 3#除算 @alvd4[8] += data end end end } end end #-------------------------------------------------------------------------- # ● 基本 MaxHP の取得 #-------------------------------------------------------------------------- alias base_maxhp_alvd base_maxhp def base_maxhp alvd_make if @alvd_flag == false or @alvd_flag == nil i = 0 data = base_maxhp_alvd data += @alvd1[i] if @alvd1[i] != 0 data -= @alvd2[i] if @alvd2[i] != 0 data *= @alvd3[i] if @alvd3[i] != 0 data /= @alvd4[i] if @alvd4[i] != 0 return data end #-------------------------------------------------------------------------- # ● 基本 MaxMP の取得 #-------------------------------------------------------------------------- alias base_maxmp_alvd base_maxmp def base_maxmp alvd_make if @alvd_flag == false or @alvd_flag == nil i = 1 data = base_maxmp_alvd data += @alvd1[i] if @alvd1[i] != 0 data -= @alvd2[i] if @alvd2[i] != 0 data *= @alvd3[i] if @alvd3[i] != 0 data /= @alvd4[i] if @alvd4[i] != 0 return data end #-------------------------------------------------------------------------- # ● 基本攻撃力の取得 #-------------------------------------------------------------------------- alias base_atk_alvd base_atk def base_atk alvd_make if @alvd_flag == false or @alvd_flag == nil i = 2 data = base_atk_alvd data += @alvd1[i] if @alvd1[i] != 0 data -= @alvd2[i] if @alvd2[i] != 0 data *= @alvd3[i] if @alvd3[i] != 0 data /= @alvd4[i] if @alvd4[i] != 0 return data end #-------------------------------------------------------------------------- # ● 基本防御力の取得 #-------------------------------------------------------------------------- alias base_def_alvd base_def def base_def alvd_make if @alvd_flag == false or @alvd_flag == nil i = 3 data = base_def_alvd data += @alvd1[i] if @alvd1[i] != 0 data -= @alvd2[i] if @alvd2[i] != 0 data *= @alvd3[i] if @alvd3[i] != 0 data /= @alvd4[i] if @alvd4[i] != 0 return data end #-------------------------------------------------------------------------- # ● 基本精神力の取得 #-------------------------------------------------------------------------- alias base_spi_alvd base_spi def base_spi alvd_make if @alvd_flag == false or @alvd_flag == nil i = 4 data = base_spi_alvd data += @alvd1[i] if @alvd1[i] != 0 data -= @alvd2[i] if @alvd2[i] != 0 data *= @alvd3[i] if @alvd3[i] != 0 data /= @alvd4[i] if @alvd4[i] != 0 return data end #-------------------------------------------------------------------------- # ● 基本敏捷性の取得 #-------------------------------------------------------------------------- alias base_agi_alvd base_agi def base_agi alvd_make if @alvd_flag == false or @alvd_flag == nil i = 5 data = base_agi_alvd data += @alvd1[i] if @alvd1[i] != 0 data -= @alvd2[i] if @alvd2[i] != 0 data *= @alvd3[i] if @alvd3[i] != 0 data /= @alvd4[i] if @alvd4[i] != 0 return data end #-------------------------------------------------------------------------- # ● 命中率の取得 #-------------------------------------------------------------------------- alias hit_alvd hit def hit alvd_make if @alvd_flag == false or @alvd_flag == nil i = 6 data = hit_alvd data += @alvd1[i] if @alvd1[i] != 0 data -= @alvd2[i] if @alvd2[i] != 0 data *= @alvd3[i] if @alvd3[i] != 0 data /= @alvd4[i] if @alvd4[i] != 0 return data end #-------------------------------------------------------------------------- # ● 回避率の取得 #-------------------------------------------------------------------------- alias eva_alvd eva def eva alvd_make if @alvd_flag == false or @alvd_flag == nil i = 7 data = eva_alvd data += @alvd1[i] if @alvd1[i] != 0 data -= @alvd2[i] if @alvd2[i] != 0 data *= @alvd3[i] if @alvd3[i] != 0 data /= @alvd4[i] if @alvd4[i] != 0 return data end #-------------------------------------------------------------------------- # ● クリティカル率の取得 #-------------------------------------------------------------------------- alias cri_alvd cri def cri alvd_make if @alvd_flag == false or @alvd_flag == nil i = 8 data = cri_alvd data += @alvd1[i] if @alvd1[i] != 0 data -= @alvd2[i] if @alvd2[i] != 0 data *= @alvd3[i] if @alvd3[i] != 0 data /= @alvd4[i] if @alvd4[i] != 0 return data end #-------------------------------------------------------------------------- # ○ パッシブスキルの修正値を再設定 #-------------------------------------------------------------------------- alias restore_passive_rev_alvd restore_passive_rev def restore_passive_rev @alvd_flag = false restore_passive_rev_alvd end end