#============================================================================== # ■ RGSS3 ステート/強化/弱体付与拡張 Ver3.02 by 星潟 #------------------------------------------------------------------------------ # アイテム/スキルの使用効果のステート/強化/弱体付与で # アイテム/スキル別にステート付与率補正/ターン数補正、 # 各特徴を有する項目別に付与率補正/ターン数補正を設定できるようになります。 # また、指定したステートを受けた際 # 効果ターン数に一定割合補正を与えたり # 一定値の補正を与える特徴が作成出来るようになります。 # 本来常に100%の強化/弱体の付与に対し、付与成功率を指定することもできます。 #============================================================================== # 同じ式を1つのIDに割り振りたいだけの場合は設定共通1、 # 同じ式を2つ以上のIDに割り振りたい場合は設定共通2を使用してください。 # なお、設定共通2のやり方がよくわからない方でも # 設定共通1だけ理解されていれば、十分設定は可能です。 #------------------------------------------------------------------------------ # ★設定共通1 # <????:x,y> # ????の部分に、どういう形の設定をするかを決めるキーワードを入れます。 # xに、ステートもしくは、強化、弱体のIDを入れます。 # (ステートの場合はステートのID。ステートIDに0を入れると全ステートが対象。 # 強化/弱体の場合は、0が最大HP、1が最大MP、2が攻撃力...6が敏捷性で、7が運) # yに、どれだけ変化させるかの式もしくは値を入れます。 #------------------------------------------------------------------------------ # ★設定共通2 # <????:x1,x2,y> # ????の部分に、どういう形の設定をするかを決めるキーワードを入れます。 # x1やx2に、ステートもしくは、強化、弱体のIDを入れます。 # この際、やり方を倣ってx3やx4などを追加しても構いません。 # yに、どれだけ変化させるかの式もしくは値を入れます。 # つまり、「,」で区切って自由に記入していく最後の部分のみを式として扱い # それ以前の部分を全てID指定として扱います。 #============================================================================== # ★アイテム/スキルへの設定(アイテム/スキルのメモ欄に設定) #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルでのステートID2の付与成功率に # 使用者のHP%分の補正を受ける。 #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルで付与されたステートID3の効果時間が # 対象者のMP%分増加する。 #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルでのステートID4の付与基本成功率が # 4000増加する。(元が50%の場合、4050%となる) #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルで付与されたステートID5の効果時間が # 使用者の魔法力の100分の1の値分だけ増加する。 #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルでの最大HP強化の付与時 # 成功率がTP%分の補正を受ける。 #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルでの最大MP強化の付与時 # 成功率が-50%分の補正を受ける。(デフォルトの100%に対する補正となる) #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルで付与された最大HPの強化効果の有効ターンが # 元々のターン数に対し、変数1の値%分の値となる。 #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルで付与された最大MPの強化効果の有効ターンが # 元々のターン数から変数5の値を引いた値となる。 #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルでの最大HP弱体の付与時 # 成功率がTP%分の補正を受ける。 #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルでの最大MP弱体の付与時 # 成功率が-50%分の補正を受ける。(デフォルトの100%に対する補正となる) #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルで付与された攻撃力の弱体効果の有効ターンが # 元々のターン数に対し、使用者のTPの値%分の値となる。 #------------------------------------------------------------------------------ # # # この場合、このアイテム/スキルで付与された防御力の弱体効果の有効ターンが # 元々のターン数から対象者の攻撃力の50分の1の値を足した値となる。 #============================================================================== # ★特徴を有する項目への設定(それぞれの項目のメモ欄に設定) #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # ステートID6を付与する際の付与成功率は基本成功率の150%となる。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # ステートID6を付与する際の付与成功率は基本成功率に+20した値となる。 # (基本成功率50%の場合、70%となる) #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # ステートID7を付与した際のステート効果ターン数は本来の200%となる。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # ステートID9を付与した際のステート効果ターン数が1増加する。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # ステートID10を付与された際のステート効果ターン数は本来の200%となる。 # 「付与した際」ではなく「付与された際」なので注意。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # ステートID11を付与された際のステート効果ターン数が2増加する。 # 「付与した際」ではなく「付与された際」なので注意。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 防御強化を付与する際の付与成功率は基本成功率の50%となる。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 魔法力強化を付与する際の付与成功率は基本成功率(100%)に-20した値となる。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 魔法力の強化効果を付与した際、強化の効果ターン数は本来の150%となる。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 魔法防御の強化効果を付与した際の効果ターン数が2増加する。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 敏捷性の強化効果を付与された際、強化の効果ターン数は本来の50%となる。 # 「付与した際」ではなく「付与された際」なので注意。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 運の強化効果を付与された際の効果ターン数が3増加する。 # 「付与した際」ではなく「付与された際」なので注意。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 魔法防御弱体を付与する際の付与成功率は基本成功率の50%となる。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 敏捷性弱体を付与する際の付与成功率は基本成功率(100%)に-30した値となる。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 最大HPの弱体効果を付与した際、弱体の効果ターン数は本来の75%となる。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 最大MPの弱体効果を付与した際の効果ターン数が1増加する。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 攻撃力の弱体効果を付与された際、弱体の効果ターン数は本来の150%となる。 # 「付与した際」ではなく「付与された際」なので注意。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 防御力の弱体効果を付与された際の効果ターン数が1減少する。 # 「付与した際」ではなく「付与された際」なので注意。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 魔法力の強化効果を付与した際、強化の効果ターン数は本来の150%となる。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 魔法防御の強化効果を付与した際の効果ターン数が2増加する。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 攻撃力の弱体効果を付与された際、弱体の効果ターン数は本来の150%となる。 # 「付与した際」ではなく「付与された際」なので注意。 #------------------------------------------------------------------------------ # # # この場合、この特徴を有するキャラクターが # 防御力の弱体効果を付与された際の効果ターン数が1減少する。 # 「付与した際」ではなく「付与された際」なので注意。 #============================================================================== module EX_ST_RATE #特定アイテム/スキル使用時のステート付与率補正割合設定用キーワードを指定します。 WORD1 = "S使用時付与率補正率" #特定アイテム/スキル使用時のステートターン補正割合設定用キーワードを指定します。 WORD2 = "S使用時ターン補正率" #特定アイテム/スキル使用時のステート付与率補正値設定用キーワードを指定します。 WORD3 = "S使用時付与率補正値" #特定アイテム/スキル使用時のステートターン補正値設定用キーワードを指定します。 WORD4 = "S使用時ターン補正値" #特徴へのステート付与率補正割合設定用キーワードを指定します。 WORD5 = "S使用者付与率補正率" #特徴へのステートターン補正割合設定用キーワードを指定します。 WORD6 = "S使用者ターン補正率" #特徴へのステート付与率補正値設定用キーワードを指定します。 WORD7 = "S使用者付与率補正値" #特徴へのステートターン補正値設定用キーワードを指定します。 WORD8 = "S使用者ターン補正値" #自分がステートを付与された時用の #特徴へのステートターン補正割合設定用キーワードを指定します。 WORD9 = "S被付与ターン補正率" #自分がステートを付与された時用の #特徴へのステートターン補正値設定用キーワードを指定します。 WORD10 = "S被付与ターン補正値" #特定アイテム/スキル使用時の強化ターン補正割合設定用キーワードを指定します。 WORD11 = "B使用時ターン補正率" #特定アイテム/スキル使用時の強化ターン補正値設定用キーワードを指定します。 WORD12 = "B使用時ターン補正値" #特徴への強化ターン補正割合設定用キーワードを指定します。 WORD13 = "B使用者ターン補正率" #特徴への強化ターン補正値設定用キーワードを指定します。 WORD14 = "B使用者ターン補正値" #自分が強化を付与された時用の #特徴への強化ターン補正割合設定用キーワードを指定します。 WORD15 = "B被付与ターン補正率" #自分が強化を付与された時用の #特徴への強化ターン補正値設定用キーワードを指定します。 WORD16 = "B被付与ターン補正値" #特定アイテム/スキル使用時の弱体ターン補正割合設定用キーワードを指定します。 WORD17 = "D使用時ターン補正率" #特定アイテム/スキル使用時の弱体ターン補正値設定用キーワードを指定します。 WORD18 = "D使用時ターン補正値" #特徴への弱体ターン補正割合設定用キーワードを指定します。 WORD19 = "D使用者ターン補正率" #特徴への弱体ターン補正値設定用キーワードを指定します。 WORD20 = "D使用者ターン補正値" #自分が弱体を付与された時用の #特徴への弱体ターン補正割合設定用キーワードを指定します。 WORD21 = "D被付与ターン補正率" #自分が弱体を付与された時用の #特徴への弱体ターン補正値設定用キーワードを指定します。 WORD22 = "D被付与ターン補正値" #特定アイテム/スキル使用時の強化付与率補正割合設定用キーワードを指定します。 WORD23 = "B使用時付与率補正率" #特定アイテム/スキル使用時の強化付与率補正値設定用キーワードを指定します。 WORD24 = "B使用時付与率補正値" #特定アイテム/スキル使用時の弱体付与率補正割合設定用キーワードを指定します。 WORD25 = "D使用時付与率補正率" #特定アイテム/スキル使用時の弱体付与率補正値設定用キーワードを指定します。 WORD26 = "D使用時付与率補正値" #特徴への強化付与率補正割合設定用キーワードを指定します。 WORD27 = "B使用者付与率補正率" #特徴への強化付与率補正値設定用キーワードを指定します。 WORD28 = "B使用者付与率補正値" #特徴への弱体付与率補正割合設定用キーワードを指定します。 WORD29 = "D使用者付与率補正率" #特徴への弱体付与率補正値設定用キーワードを指定します。 WORD30 = "D使用者付与率補正値" #-------------------------------------------------------------------------- # キーワードを取得 #-------------------------------------------------------------------------- def self.word(num) eval("WORD" + num.to_s) end end class Game_Temp attr_accessor :ex_st_rate_item attr_accessor :ex_st_rate_user attr_accessor :ex_st_rate_self end class Game_BattlerBase #-------------------------------------------------------------------------- # 攻撃時ステートの発動率取得 #-------------------------------------------------------------------------- alias atk_states_rate_ex_st_rate atk_states_rate def atk_states_rate(state_id) rb = atk_states_rate_ex_st_rate(state_id) if $game_temp.ex_st_rate_item && $game_temp.ex_st_rate_user && $game_temp.ex_st_rate_self i = $game_temp.ex_st_rate_item a = $game_temp.ex_st_rate_user b = $game_temp.ex_st_rate_self v = $game_variables #1つ目のデータとして、アイテム/スキルの付与割合配列を取得する。 data1 = i.item_state_add_point #2つ目のデータとして、使用者の付与割合配列を取得する。 data2 = a.user_state_add_point #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[state_id] ? eval(data1[state_id]).to_f / 100 : 0.0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(0) {|r, f| r += f[state_id] ? eval(f[state_id]).to_f : 0} #2つのデータを加算した物を返す。 rb += data1 + data2.to_f / 100 #1つ目のデータとして、アイテム/スキルの付与割合配列を取得する。 data1 = i.item_state_add_rate #2つ目のデータとして、使用者の付与割合配列を取得する。 data2 = a.user_state_add_rate #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[state_id] ? eval(data1[state_id]).to_f / 100 : 1.0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(1.0) {|r, f| r *= f[state_id] ? eval(f[state_id]).to_f / 100 : 1.0} #2つのデータを乗算した物を返す。 rb *= data1 * data2 end rb end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # 強化付与率 #-------------------------------------------------------------------------- def add_buff_rate(user, item, effect) ((100 + item_buff_add_point(user,item,effect)).to_f / 100) * item_buff_add_rate(user,item,effect) end #-------------------------------------------------------------------------- # 弱体付与率 #-------------------------------------------------------------------------- def add_debuff_rate(user, item, effect) ((100 + item_debuff_add_point(user,item,effect)).to_f / 100) * item_debuff_add_rate(user,item,effect) end #-------------------------------------------------------------------------- # 強化付与率割合 #-------------------------------------------------------------------------- def item_buff_add_rate(user,item,effect) #計算式用のデータを取得する。 i = item a = user b = self d = effect.data_id v = $game_variables #1つ目のデータとして、アイテム/スキルのターン割合配列を取得する。 data1 = (i && i.item_buff_add_rate) ? i.item_buff_add_rate : {} #2つ目のデータとして、使用者のターン割合配列を取得する。 data2 = (a && a.user_buff_add_rate) ? a.user_buff_add_rate : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[d] ? eval(data1[d]).to_f / 100 : 1.0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(1.0) {|r, f| r *= f[d] ? eval(f[d]).to_f / 100 : 1.0} data2 = 1.0 if !data2 data1 * data2 end #-------------------------------------------------------------------------- # 強化付与率固定値 #-------------------------------------------------------------------------- def item_buff_add_point(user,item,effect) #計算式用のデータを取得する。 i = item a = user b = self d = effect.data_id v = $game_variables #1つ目のデータとして、アイテム/スキルの補正値配列を取得する。 data1 = (i && i.item_buff_add_point) ? i.item_buff_add_point : {} #2つ目のデータとして、使用者の補正値配列を取得する。 data2 = (a && a.user_buff_add_point) ? a.user_buff_add_point : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[d] ? eval(data1[d]) : 0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(0) {|r, f| r += f[d] ? eval(f[d]) : 0} data2 = 0 if !data2 data1 + data2 end #-------------------------------------------------------------------------- # 弱体付与率割合 #-------------------------------------------------------------------------- def item_debuff_add_rate(user,item,effect) #計算式用のデータを取得する。 i = item a = user b = self d = effect.data_id v = $game_variables #1つ目のデータとして、アイテム/スキルのターン割合配列を取得する。 data1 = (i && i.item_debuff_add_rate) ? i.item_debuff_add_rate : {} #2つ目のデータとして、使用者のターン割合配列を取得する。 data2 = (a && a.user_debuff_add_rate) ? a.user_debuff_add_rate : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[d] ? eval(data1[d]).to_f / 100 : 1.0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(1.0) {|r, f| r *= f[d] ? eval(f[d]).to_f / 100 : 1.0} data2 = 1.0 if !data2 data1 * data2 end #-------------------------------------------------------------------------- # 弱体付与率固定値 #-------------------------------------------------------------------------- def item_debuff_add_point(user,item,effect) #計算式用のデータを取得する。 i = item a = user b = self d = effect.data_id v = $game_variables #1つ目のデータとして、アイテム/スキルの補正値配列を取得する。 data1 = (i && i.item_debuff_add_point) ? i.item_debuff_add_point : {} #2つ目のデータとして、使用者の補正値配列を取得する。 data2 = (a && a.user_debuff_add_point) ? a.user_debuff_add_point : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[d] ? eval(data1[d]) : 0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(0) {|r, f| r += f[d] ? eval(f[d]) : 0} data2 = 0 if !data2 data1 + data2 end #-------------------------------------------------------------------------- # 通常攻撃でのステート付与 #-------------------------------------------------------------------------- alias item_effect_add_state_attack_ex_st_rate item_effect_add_state_attack def item_effect_add_state_attack(user, item, effect) #割合情報の作成。 st_rate_make(user, item) #本来の処理を実行。 item_effect_add_state_attack_ex_st_rate(user, item, effect) #割合情報の削除 st_rate_clear end #-------------------------------------------------------------------------- # アイテム/スキルでのステート付与 #-------------------------------------------------------------------------- alias item_effect_add_state_normal_ex_st_rate item_effect_add_state_normal def item_effect_add_state_normal(user, item, effect) #割合情報の作成。 st_rate_make(user, item) #本来の処理を実行。 item_effect_add_state_normal_ex_st_rate(user, item, effect) #割合情報の削除。 st_rate_clear end #-------------------------------------------------------------------------- # 能力強化 #-------------------------------------------------------------------------- alias item_effect_add_buff_ex_st_rate item_effect_add_buff def item_effect_add_buff(user, item, effect) return unless add_buff_rate(user,item,effect) > rand #割合情報の作成。 st_rate_make(user, item) #本来の処理を実行。 item_effect_add_buff_ex_st_rate(user, item, effect) #割合情報の削除。 st_rate_clear end #-------------------------------------------------------------------------- # 能力弱体 #-------------------------------------------------------------------------- alias item_effect_add_debuff_ex_st_rate item_effect_add_debuff def item_effect_add_debuff(user, item, effect) return unless add_debuff_rate(user,item,effect) > rand #割合情報の作成。 st_rate_make(user, item) #本来の処理を実行。 item_effect_add_debuff_ex_st_rate(user, item, effect) #割合情報の削除。 st_rate_clear end #-------------------------------------------------------------------------- # 割合情報の作成 #-------------------------------------------------------------------------- def st_rate_make(user, item) #各種データに配列を入れる。 $game_temp.ex_st_rate_item = item $game_temp.ex_st_rate_user = user $game_temp.ex_st_rate_self = self end #-------------------------------------------------------------------------- # 割合情報の削除 #-------------------------------------------------------------------------- def st_rate_clear #各種データを削除する。 $game_temp.ex_st_rate_item = nil $game_temp.ex_st_rate_user = nil $game_temp.ex_st_rate_self = nil end #-------------------------------------------------------------------------- # 使用者のステート付与補正割合情報取得 #-------------------------------------------------------------------------- def user_state_add_rate #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_state_add_rate) unless f.user_state_add_rate.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者のステートターン補正割合情報取得 #-------------------------------------------------------------------------- def user_state_turn_rate #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_state_turn_rate) unless f.user_state_turn_rate.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者のステート付与補正値情報取得 #-------------------------------------------------------------------------- def user_state_add_point #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_state_add_point) unless f.user_state_add_point.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者のステートターン補正値情報取得 #-------------------------------------------------------------------------- def user_state_turn_point #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_state_turn_point) unless f.user_state_turn_point.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 被付与者のステート付与補正割合情報取得 #-------------------------------------------------------------------------- def own_state_turn_rate #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.own_state_turn_rate) unless f.own_state_turn_rate.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 被付与者のステートターン補正値情報取得 #-------------------------------------------------------------------------- def own_state_turn_point #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.own_state_turn_point) unless f.own_state_turn_point.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者の強化付与補正割合情報取得 #-------------------------------------------------------------------------- def user_buff_add_rate #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_buff_add_rate) unless f.user_buff_add_rate.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者の強化付与補正値情報取得 #-------------------------------------------------------------------------- def user_buff_add_point #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_buff_add_point) unless f.user_buff_add_point.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者の強化ターン補正割合情報取得 #-------------------------------------------------------------------------- def user_buff_turn_rate #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_buff_turn_rate) unless f.user_buff_turn_rate.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者の強化ターン補正値情報取得 #-------------------------------------------------------------------------- def user_buff_turn_point #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_buff_turn_point) unless f.user_buff_turn_point.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 被付与者の強化ターン補正割合情報取得 #-------------------------------------------------------------------------- def own_buff_turn_rate #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.own_buff_turn_rate) unless f.own_buff_turn_rate.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 被付与者の強化ターン補正値情報取得 #-------------------------------------------------------------------------- def own_buff_turn_point #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.own_buff_turn_point) unless f.own_buff_turn_point.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者の弱体付与補正割合情報取得 #-------------------------------------------------------------------------- def user_debuff_add_rate #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_debuff_add_rate) unless f.user_debuff_add_rate.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者の弱体付与補正値情報取得 #-------------------------------------------------------------------------- def user_debuff_add_point #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_debuff_add_point) unless f.user_debuff_add_point.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者の弱体ターン補正割合情報取得 #-------------------------------------------------------------------------- def user_debuff_turn_rate #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_debuff_turn_rate) unless f.user_debuff_turn_rate.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 使用者の弱体ターン補正値情報取得 #-------------------------------------------------------------------------- def user_debuff_turn_point #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.user_debuff_turn_point) unless f.user_debuff_turn_point.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 被付与者の弱体ターン補正割合情報取得 #-------------------------------------------------------------------------- def own_debuff_turn_rate #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.own_debuff_turn_rate) unless f.own_debuff_turn_rate.empty?} #空の配列を返す。 array end #-------------------------------------------------------------------------- # 被付与者の弱体ターン補正値情報取得 #-------------------------------------------------------------------------- def own_debuff_turn_point #空の配列を作成する。 array = [] #特徴からデータを取得し、空でない場合のみ配列に入れる。 data = feature_objects.each {|f| array.push(f.own_debuff_turn_point) unless f.own_debuff_turn_point.empty?} #空の配列を返す。 array end end class RPG::BaseItem #-------------------------------------------------------------------------- # 共通処理 #-------------------------------------------------------------------------- def create_ex_state_rate_common(num) h = {} w = EX_ST_RATE.word(num) note.each_line {|l| next unless /<#{w}[::](\S+)>/ =~ l a = $1.split(/\s*,\s*/) next unless a.size > 1 r = a.pop a.each {|i| h[i.to_i] = r}} h end #-------------------------------------------------------------------------- # 特徴のステート付与補正割合情報取得 #-------------------------------------------------------------------------- def user_state_add_rate #キャッシュが存在する場合はキャッシュを返す。 @user_state_add_rate ||= create_ex_state_rate_common(5) end #-------------------------------------------------------------------------- # 特徴のステートターン補正割合情報取得 #-------------------------------------------------------------------------- def user_state_turn_rate #キャッシュが存在する場合はキャッシュを返す。 @user_state_turn_rate ||= create_ex_state_rate_common(6) end #-------------------------------------------------------------------------- # 特徴のステート付与補正値情報取得 #-------------------------------------------------------------------------- def user_state_add_point #キャッシュが存在する場合はキャッシュを返す。 @user_state_add_point ||= create_ex_state_rate_common(7) end #-------------------------------------------------------------------------- # 特徴のステートターン補正値情報取得 #-------------------------------------------------------------------------- def user_state_turn_point #キャッシュが存在する場合はキャッシュを返す。 @user_state_turn_point ||= create_ex_state_rate_common(8) end #-------------------------------------------------------------------------- # 特徴のステートターン補正割合情報取得 #-------------------------------------------------------------------------- def own_state_turn_rate #キャッシュが存在する場合はキャッシュを返す。 @own_state_turn_rate ||= create_ex_state_rate_common(9) end #-------------------------------------------------------------------------- # 特徴のステートターン補正値情報取得 #-------------------------------------------------------------------------- def own_state_turn_point #キャッシュが存在する場合はキャッシュを返す。 @own_state_turn_point ||= create_ex_state_rate_common(10) end #-------------------------------------------------------------------------- # 特徴の強化付与成功率補正割合情報取得 #-------------------------------------------------------------------------- def user_buff_add_rate #キャッシュが存在する場合はキャッシュを返す。 @user_buff_add_rate ||= create_ex_state_rate_common(27) end #-------------------------------------------------------------------------- # 特徴の強化付与成功率補正値情報取得 #-------------------------------------------------------------------------- def user_buff_add_point #キャッシュが存在する場合はキャッシュを返す。 @user_buff_add_point ||= create_ex_state_rate_common(28) end #-------------------------------------------------------------------------- # 特徴の強化ターン補正割合情報取得 #-------------------------------------------------------------------------- def user_buff_turn_rate #キャッシュが存在する場合はキャッシュを返す。 @user_buff_turn_rate ||= create_ex_state_rate_common(13) end #-------------------------------------------------------------------------- # 特徴の強化ターン補正値情報取得 #-------------------------------------------------------------------------- def user_buff_turn_point #キャッシュが存在する場合はキャッシュを返す。 @user_buff_turn_point ||= create_ex_state_rate_common(14) end #-------------------------------------------------------------------------- # 特徴の強化ターン補正割合情報取得 #-------------------------------------------------------------------------- def own_buff_turn_rate #キャッシュが存在する場合はキャッシュを返す。 @own_buff_turn_rate ||= create_ex_state_rate_common(15) end #-------------------------------------------------------------------------- # 特徴の強化ターン補正値情報取得 #-------------------------------------------------------------------------- def own_buff_turn_point #キャッシュが存在する場合はキャッシュを返す。 @own_buff_turn_point ||= create_ex_state_rate_common(16) end #-------------------------------------------------------------------------- # 特徴の弱体付与成功率補正割合情報取得 #-------------------------------------------------------------------------- def user_debuff_add_rate #キャッシュが存在する場合はキャッシュを返す。 @user_debuff_add_rate ||= create_ex_state_rate_common(29) end #-------------------------------------------------------------------------- # 特徴の弱体付与成功率補正値情報取得 #-------------------------------------------------------------------------- def user_debuff_add_point #キャッシュが存在する場合はキャッシュを返す。 @user_debuff_add_point ||= create_ex_state_rate_common(30) end #-------------------------------------------------------------------------- # 特徴の弱体ターン補正割合情報取得 #-------------------------------------------------------------------------- def user_debuff_turn_rate #キャッシュが存在する場合はキャッシュを返す。 @user_debuff_turn_rate ||= create_ex_state_rate_common(19) end #-------------------------------------------------------------------------- # 特徴の弱体ターン補正値情報取得 #-------------------------------------------------------------------------- def user_debuff_turn_point #キャッシュが存在する場合はキャッシュを返す。 @user_debuff_turn_point ||= create_ex_state_rate_common(20) end #-------------------------------------------------------------------------- # 特徴の弱体ターン補正割合情報取得 #-------------------------------------------------------------------------- def own_debuff_turn_rate #キャッシュが存在する場合はキャッシュを返す。 @own_debuff_turn_rate ||= create_ex_state_rate_common(21) end #-------------------------------------------------------------------------- # 特徴の弱体ターン補正値情報取得 #-------------------------------------------------------------------------- def own_debuff_turn_point #キャッシュが存在する場合はキャッシュを返す。 @own_debuff_turn_point ||= create_ex_state_rate_common(22) end end class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # アイテム/スキルのステート付与補正割合情報取得 #-------------------------------------------------------------------------- def item_state_add_rate #キャッシュが存在する場合はキャッシュを返す。 @item_state_add_rate ||= create_ex_state_rate_common(1) end #-------------------------------------------------------------------------- # アイテム/スキルのステートターン補正割合情報取得 #-------------------------------------------------------------------------- def item_state_turn_rate #キャッシュが存在する場合はキャッシュを返す。 @item_state_turn_rate ||= create_ex_state_rate_common(2) end #-------------------------------------------------------------------------- # アイテム/スキルのステート付与補正値情報取得 #-------------------------------------------------------------------------- def item_state_add_point #キャッシュが存在する場合はキャッシュを返す。 @item_state_add_point ||= create_ex_state_rate_common(3) end #-------------------------------------------------------------------------- # アイテム/スキルのステートターン補正値情報取得 #-------------------------------------------------------------------------- def item_state_turn_point #キャッシュが存在する場合はキャッシュを返す。 @item_state_turn_point ||= create_ex_state_rate_common(4) end #-------------------------------------------------------------------------- # アイテム/スキルの強化付与成功率補正割合情報取得 #-------------------------------------------------------------------------- def item_buff_add_rate #キャッシュが存在する場合はキャッシュを返す。 @item_buff_add_rate ||= create_ex_state_rate_common(23) end #-------------------------------------------------------------------------- # アイテム/スキルの強化付与成功率補正値情報取得 #-------------------------------------------------------------------------- def item_buff_add_point #キャッシュが存在する場合はキャッシュを返す。 @item_buff_add_point ||= create_ex_state_rate_common(24) end #-------------------------------------------------------------------------- # アイテム/スキルの強化ターン補正割合情報取得 #-------------------------------------------------------------------------- def item_buff_turn_rate #キャッシュが存在する場合はキャッシュを返す。 @item_buff_turn_rate ||= create_ex_state_rate_common(11) end #-------------------------------------------------------------------------- # アイテム/スキルの強化ターン補正値情報取得 #-------------------------------------------------------------------------- def item_buff_turn_point #キャッシュが存在する場合はキャッシュを返す。 @item_buff_turn_point ||= create_ex_state_rate_common(12) end #-------------------------------------------------------------------------- # アイテム/スキルの弱体付与成功率補正割合情報取得 #-------------------------------------------------------------------------- def item_debuff_add_rate #キャッシュが存在する場合はキャッシュを返す。 @item_debuff_add_rate ||= create_ex_state_rate_common(25) end #-------------------------------------------------------------------------- # アイテム/スキルの弱体付与成功率補正値情報取得 #-------------------------------------------------------------------------- def item_debuff_add_point #キャッシュが存在する場合はキャッシュを返す。 @item_debuff_add_point ||= create_ex_state_rate_common(26) end #-------------------------------------------------------------------------- # アイテム/スキルの弱体ターン補正割合情報取得 #-------------------------------------------------------------------------- def item_debuff_turn_rate #キャッシュが存在する場合はキャッシュを返す。 @item_debuff_turn_rate ||= create_ex_state_rate_common(17) end #-------------------------------------------------------------------------- # アイテム/スキルの弱体ターン補正値情報取得 #-------------------------------------------------------------------------- def item_debuff_turn_point #キャッシュが存在する場合はキャッシュを返す。 @item_debuff_turn_point ||= create_ex_state_rate_common(18) end end class RPG::UsableItem::Effect #-------------------------------------------------------------------------- # 値1のデータを取得 #-------------------------------------------------------------------------- unless method_defined?(:value1_ex_st_rate) alias value1_ex_st_rate value1 def value1 r = value1_ex_st_rate #ステート付与か否かで処理を分岐。 case @code when 21;(r + state_add_point) * state_add_rate when 31;[((r + buff_turn_boost_point) * buff_turn_boost_rate).to_i, 1].max when 32;[((r + debuff_turn_boost_point) * debuff_turn_boost_rate).to_i, 1].max else ;r end end end #-------------------------------------------------------------------------- # ステートの付与率補正割合の最終値を取得 #-------------------------------------------------------------------------- def state_add_rate #計算式用のデータを取得する。 i = $game_temp.ex_st_rate_item a = $game_temp.ex_st_rate_user b = $game_temp.ex_st_rate_self v = $game_variables #1つ目のデータとして、アイテム/スキルの付与割合配列を取得する。 data1 = (i && i.item_state_add_rate) ? i.item_state_add_rate : {} #2つ目のデータとして、使用者の付与割合配列を取得する。 data2 = (a && a.user_state_add_rate) ? a.user_state_add_rate : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[self.data_id] ? eval(data1[self.data_id]).to_f / 100 : 1.0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(1.0) {|r, f| r *= f[self.data_id] ? eval(f[self.data_id]).to_f / 100 : 1.0} #2つのデータを乗算した物を返す。 data1 * data2 end #-------------------------------------------------------------------------- # ステートの付与率補正値の最終値を取得 #-------------------------------------------------------------------------- def state_add_point #計算式用のデータを取得する。 i = $game_temp.ex_st_rate_item a = $game_temp.ex_st_rate_user b = $game_temp.ex_st_rate_self v = $game_variables #1つ目のデータとして、アイテム/スキルの付与割合配列を取得する。 data1 = (i && i.item_state_add_point) ? i.item_state_add_point : {} #2つ目のデータとして、使用者の付与割合配列を取得する。 data2 = (a && a.user_state_add_point) ? a.user_state_add_point : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[self.data_id] ? eval(data1[self.data_id]).to_f / 100 : 0.0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(0) {|r, f| r += f[self.data_id] ? eval(f[self.data_id]).to_f : 0} #2つのデータを加算した物を返す。 data1 + data2.to_f / 100 end #-------------------------------------------------------------------------- # 強化のターン補正割合の最終値を取得 #-------------------------------------------------------------------------- def buff_turn_boost_rate #計算式用のデータを取得する。 i = $game_temp.ex_st_rate_item a = $game_temp.ex_st_rate_user b = $game_temp.ex_st_rate_self v = $game_variables #1つ目のデータとして、アイテム/スキルのターン割合配列を取得する。 data1 = (i && i.item_buff_turn_rate) ? i.item_buff_turn_rate : {} #2つ目のデータとして、使用者のターン割合配列を取得する。 data2 = (a && a.user_buff_turn_rate) ? a.user_buff_turn_rate : [] #3つ目のデータとして、受ける側のターン割合配列を取得する。 data3 = (b && b.own_buff_turn_rate) ? b.own_buff_turn_rate : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[self.data_id] ? eval(data1[self.data_id]).to_f / 100 : 1.0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(1.0) {|r, f| r *= f[self.data_id] ? eval(f[self.data_id]).to_f / 100 : 1.0} data2 = 1.0 if !data2 #3つ目のデータ配列から該当ステートのデータを抜きだす。 data3 = data3.inject(1.0) {|r, f| r *= f[self.data_id] ? eval(f[self.data_id]).to_f / 100 : 1.0} data3 = 1.0 if !data3 #2つのデータを乗算した物を返す。 data1 * data2 * data3 end #-------------------------------------------------------------------------- # 強化のターン補正値の最終値を取得 #-------------------------------------------------------------------------- def buff_turn_boost_point #計算式用のデータを取得する。 i = $game_temp.ex_st_rate_item a = $game_temp.ex_st_rate_user b = $game_temp.ex_st_rate_self v = $game_variables #1つ目のデータとして、アイテム/スキルのターン補正値配列を取得する。 data1 = (i && i.item_buff_turn_point) ? i.item_buff_turn_point : {} #2つ目のデータとして、使用者のターン補正値配列を取得する。 data2 = (a && a.user_buff_turn_point) ? a.user_buff_turn_point : [] #3つ目のデータとして、受ける側のターン補正値配列を取得する。 data3 = (b && b.own_buff_turn_point) ? b.own_buff_turn_point : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[self.data_id] ? eval(data1[self.data_id]) : 0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(0) {|r, f| r += f[self.data_id] ? eval(f[self.data_id]) : 0} data2 = 0 if !data2 #3つ目のデータ配列から該当ステートのデータを抜きだす。 data3 = data3.inject(0) {|r, f| r += f[self.data_id] ? eval(f[self.data_id]) : 0} data3 = 0 if !data3 #3つのデータを合計した物を返す。 data1 + data2 + data3 end #-------------------------------------------------------------------------- # 弱体のターン補正割合の最終値を取得 #-------------------------------------------------------------------------- def debuff_turn_boost_rate #計算式用のデータを取得する。 i = $game_temp.ex_st_rate_item a = $game_temp.ex_st_rate_user b = $game_temp.ex_st_rate_self v = $game_variables #1つ目のデータとして、アイテム/スキルのターン割合配列を取得する。 data1 = (i && i.item_debuff_turn_rate) ? i.item_debuff_turn_rate : {} #2つ目のデータとして、使用者のターン割合配列を取得する。 data2 = (a && a.user_debuff_turn_rate) ? a.user_debuff_turn_rate : [] #3つ目のデータとして、受ける側のターン割合配列を取得する。 data3 = (b && b.own_debuff_turn_rate) ? b.own_debuff_turn_rate : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[self.data_id] ? eval(data1[self.data_id]).to_f / 100 : 1.0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(1.0) {|r, f| r *= f[self.data_id] ? eval(f[self.data_id]).to_f / 100 : 1.0} data2 = 1.0 if !data2 #3つ目のデータ配列から該当ステートのデータを抜きだす。 data3 = data3.inject(1.0) {|r, f| r *= f[self.data_id] ? eval(f[self.data_id]).to_f / 100 : 1.0} data3 = 1.0 if !data3 #2つのデータを乗算した物を返す。 data1 * data2 * data3 end #-------------------------------------------------------------------------- # 弱体のターン補正値の最終値を取得 #-------------------------------------------------------------------------- def debuff_turn_boost_point #計算式用のデータを取得する。 i = $game_temp.ex_st_rate_item a = $game_temp.ex_st_rate_user b = $game_temp.ex_st_rate_self v = $game_variables #1つ目のデータとして、アイテム/スキルのターン補正値配列を取得する。 data1 = (i && i.item_debuff_turn_point) ? i.item_debuff_turn_point : {} #2つ目のデータとして、使用者のターン補正値配列を取得する。 data2 = (a && a.user_debuff_turn_point) ? a.user_debuff_turn_point : [] #3つ目のデータとして、受ける側のターン補正値配列を取得する。 data3 = (b && b.own_debuff_turn_point) ? b.own_debuff_turn_point : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = data1[self.data_id] ? eval(data1[self.data_id]) : 0 #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(0) {|r, f| r += f[self.data_id] ? eval(f[self.data_id]) : 0} data2 = 0 if !data2 #3つ目のデータ配列から該当ステートのデータを抜きだす。 data3 = data3.inject(0) {|r, f| r += f[self.data_id] ? eval(f[self.data_id]) : 0} data3 = 0 if !data3 #3つのデータを合計した物を返す。 data1 + data2 + data3 end end class RPG::State < RPG::BaseItem #-------------------------------------------------------------------------- # ステート効果時間最小値を取得 #-------------------------------------------------------------------------- unless method_defined?(:min_turns_ex_st_rate) alias min_turns_ex_st_rate min_turns def min_turns #本来のデータにターン割合を乗算。 r = ((min_turns_ex_st_rate + state_turn_boost_point) * state_turn_boost_rate).to_i r = 0 if r < 0 r end end #-------------------------------------------------------------------------- # ステート効果時間最大値を取得 #-------------------------------------------------------------------------- unless method_defined?(:max_turns_ex_st_rate) alias max_turns_ex_st_rate max_turns def max_turns #本来のデータにターン補正値を加算し、割合を乗算。 r = ((max_turns_ex_st_rate + state_turn_boost_point) * state_turn_boost_rate).to_i r = 0 if r < 0 r end end #-------------------------------------------------------------------------- # ターン補正割合の最終値を取得 #-------------------------------------------------------------------------- def state_turn_boost_rate #計算式用のデータを取得する。 i = $game_temp.ex_st_rate_item a = $game_temp.ex_st_rate_user b = $game_temp.ex_st_rate_self v = $game_variables #1つ目のデータとして、アイテム/スキルのターン割合配列を取得する。 data1 = (i && i.item_state_turn_rate) ? i.item_state_turn_rate : {} #2つ目のデータとして、使用者のターン割合配列を取得する。 data2 = (a && a.user_state_turn_rate) ? a.user_state_turn_rate : [] #3つ目のデータとして、受ける側のターン割合配列を取得する。 data3 = (b && b.own_state_turn_rate) ? b.own_state_turn_rate : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 n = (data1[0] ? eval(data1[0]).to_f / 100 : 1.0) data1 = n * (data1[self.id] ? eval(data1[self.id]).to_f / 100 : 1.0) #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(1.0) {|r, f| r *= f[0] ? eval(f[0]).to_f / 100 : 1.0 r *= f[self.id] ? eval(f[self.id]).to_f / 100 : 1.0} data2 = 1.0 if !data2 #3つ目のデータ配列から該当ステートのデータを抜きだす。 data3 = data3.inject(1.0) {|r, f| r *= f[0] ? eval(f[0]).to_f / 100 : 1.0 r *= f[self.id] ? eval(f[self.id]).to_f / 100 : 1.0} data3 = 1.0 if !data3 #2つのデータを乗算した物を返す。 data1 * data2 * data3 end #-------------------------------------------------------------------------- # ターン補正値の最終値を取得 #-------------------------------------------------------------------------- def state_turn_boost_point #計算式用のデータを取得する。 i = $game_temp.ex_st_rate_item a = $game_temp.ex_st_rate_user b = $game_temp.ex_st_rate_self v = $game_variables #1つ目のデータとして、アイテム/スキルのターン補正値配列を取得する。 data1 = (i && i.item_state_turn_point) ? i.item_state_turn_point : {} #2つ目のデータとして、使用者のターン補正値配列を取得する。 data2 = (a && a.user_state_turn_point) ? a.user_state_turn_point : [] #3つ目のデータとして、受ける側のターン補正値配列を取得する。 data3 = (b && b.own_state_turn_point) ? b.own_state_turn_point : [] #1つ目のデータ配列から該当ステートのデータを抜きだす。 data1 = (data1[0] ? eval(data1[0]) : 0) + (data1[self.id] ? eval(data1[self.id]) : 0) #2つ目のデータ配列から該当ステートのデータを抜きだす。 data2 = data2.inject(0) {|r, f| r += f[0] ? eval(f[0]) : 0 r += f[self.id] ? eval(f[self.id]) : 0} data2 = 0 if !data2 #3つ目のデータ配列から該当ステートのデータを抜きだす。 data3 = data3.inject(0) {|r, f| r += f[0] ? eval(f[0]) : 0 r += f[self.id] ? eval(f[self.id]) : 0} data3 = 0 if !data3 #3つのデータを合計した物を返す。 data1 + data2 + data3 end end