=begin スキルブック 作成:稲妻と雷鳴 配布元:RPGの参考書(URL http://19800.net/rpg-sankou) Scene_Debug 〜 Main 間に新しいセクションを作成し、全文を貼り付けてください。 =end #========================================================================== # ▼ 簡易カスタマイズ項目 (始) #========================================================================== =begin 「ここから」「ここまで」の間に when アイテムID book_id[0] = スキルID と設定します。本がある限りすべてセットします。 どこまで長くなっても問題ありません。 (デフォルトで設定されている when 33 book_id[0] = 7 などは消してください。) =end class Game_Battler def skill_comvert(book_id) case book_id[0] #--ここから when 33 # アイテムID33 book_id[0] = 7 # スキルID7(ファイア) when 34 book_id[0] = 10 #--ここまで end end end #========================================================================== # ▲ 簡易カスタマイズ項目 (終) #========================================================================== class Game_Actor attr_reader :actor_id end class Game_Battler #-------------------------------------------------------------------------- # ● アイテムの効果適用 # item : アイテム #-------------------------------------------------------------------------- def item_effect(item) # クリティカルフラグをクリア self.critical = false # アイテムの効果範囲が HP 1 以上の味方で、自分の HP が 0、 # またはアイテムの効果範囲が HP 0 の味方で、自分の HP が 1 以上の場合 if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or ((item.scope == 5 or item.scope == 6) and self.hp >= 1) # メソッド終了 return false end item_element = item.element_set # 有効フラグをクリア effective = false # コモンイベント ID が有効の場合は有効フラグをセット effective |= item.common_event_id > 0 # 命中判定 hit_result = (rand(100) < item.hit) # 不確実なスキルの場合は有効フラグをセット effective |= item.hit < 100 # 命中の場合 if hit_result == true # 回復量を計算 recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp if recover_hp < 0 recover_hp += self.pdef * item.pdef_f / 20 recover_hp += self.mdef * item.mdef_f / 20 recover_hp = [recover_hp, 0].min end # 属性修正 recover_hp *= elements_correct(item.element_set) recover_hp /= 100 recover_sp *= elements_correct(item.element_set) recover_sp /= 100 # 分散 if item.variance > 0 and recover_hp.abs > 0 amp = [recover_hp.abs * item.variance / 100, 1].max recover_hp += rand(amp+1) + rand(amp+1) - amp end if item.variance > 0 and recover_sp.abs > 0 amp = [recover_sp.abs * item.variance / 100, 1].max recover_sp += rand(amp+1) + rand(amp+1) - amp end # 回復量の符号が負の場合 if recover_hp < 0 # 防御修正 if self.guarding? recover_hp /= 2 end end # HP 回復量の符号を反転し、ダメージの値に設定 self.damage = -recover_hp # HP および SP を回復 last_hp = self.hp last_sp = self.sp self.hp += recover_hp self.sp += recover_sp effective |= self.hp != last_hp effective |= self.sp != last_sp # ステート変化 @state_changed = false effective |= states_plus(item.plus_state_set) effective |= states_minus(item.minus_state_set) # パラメータ上昇値が有効の場合 if item.parameter_type > 0 and item.parameter_points != 0 # パラメータで分岐 case item.parameter_type when 1 # MaxHP @maxhp_plus += item.parameter_points when 2 # MaxSP @maxsp_plus += item.parameter_points when 3 # 腕力 @str_plus += item.parameter_points when 4 # 器用さ @dex_plus += item.parameter_points when 5 # 素早さ @agi_plus += item.parameter_points when 6 # 魔力 @int_plus += item.parameter_points end # 有効フラグをセット effective = true end # HP 回復率と回復量が 0 の場合 if item.recover_hp_rate == 0 and item.recover_hp == 0 # ダメージに空文字列を設定 self.damage = "" # SP 回復率と回復量が 0、パラメータ上昇値が無効の場合 if item.recover_sp_rate == 0 and item.recover_sp == 0 and (item.parameter_type == 0 or item.parameter_points == 0) # ステートに変化がない場合 unless @state_changed # ダメージに "Miss" を設定 self.damage = "Miss" end end end # ミスの場合 else # ダメージに "Miss" を設定 self.damage = "Miss" end # 戦闘中でない場合 unless $game_temp.in_battle # ダメージに nil を設定 self.damage = nil end # 本かどうかを判定 for i in 0...item_element.size actor_id = self.actor_id if $data_system.elements[item_element[i]] == "本" book_id = [item.id, actor_id] skill_comvert(book_id) # スキル変換 # スキルを覚えていない場合のみスキル習得 unless $game_actors[book_id[1]].skill_learn?(book_id[0]) $game_actors[book_id[1]].learn_skill(book_id[0]) # 有効フラグをセット effective = true end end end # メソッド終了 return effective end end