#============================================================================== # ○アイテム・装備すききらい Ver1.02 # for RGSS2 # 西瓜 / Space not far # http://muspell.raindrop.jp/ # アイテムや装備の“好き度”を百分率で設定して、 # 各アクターへの効果量、能力値修正を変更できます。 #============================================================================== # ■更新履歴 # Ver1.02 # ・装備品にも対応。 # ・機能追加に伴う改題。 # Ver1.01 # ・戦闘シーンでアイテムを使用した場合、 #  対象ではなく使用者で効果量が変わってしまうバグを修正。 #============================================================================== # 各アイテムのメモ欄に <アクターID:好き度n%> という形で書き込んでください。 # 成長量と回復量が n/100倍 されます。nは整数にしてください。 # “好き度”はLIKE_WORDを編集することで好きなように変えることが出来ます。 # 装備品のメモ欄に書き込んだ場合、攻撃力/防御力/精神力/敏捷性の # 修正がn/100倍されます。 =begin ●メモ欄の設定例 <1:好き度120%> => ラルフの回復/成長量1.2倍 または 能力値修正1.2倍 <2:好き度15%> => ウルリカの回復/成長量0.15倍 または 能力値修正0.15倍 =end module SNF LIKE_WORD = "好き度" # キーワードの設定 EQUIP_LIKEHATE = true # 装備品にも対応するか?(true/false) LIKE_SOUND_CHANGE = true # 好き度が100以外の時に使用SEを変えるか?(true/false) # 戦闘シーンではSEは変わりません。 LIKE_SOUND = RPG::SE.new("Chime2", 100, 100) # 好き度100超のアイテムの効果音("ファイル名", 音量, ピッチ) HATE_SOUND = RPG::SE.new("Paralyze2", 100, 100) # 好き度100未満のアイテムの効果音("ファイル名", 音量, ピッチ) # どちらも音量とピッチの設定は省略可能です。 def self.like_effect(user, item) # アイテム効果補正 itemnote = item.note.scan(/<(\d+):#{SNF::LIKE_WORD}(\S+)%>/) like = itemnote.assoc(user.id.to_s) # メモのアクターIDが対象IDかどうか if like == nil # メモにない場合は普通 rate = 100 else rate = like.pop end return rate end def self.equip_likehate(actor_id, value, note) # 装備能力補正 memo = note.scan(/<(\d+):#{SNF::LIKE_WORD}(\S+)%>/) like = memo.assoc(actor_id.to_s) if like == nil # メモにない場合は普通 rate = 100 else rate = like.pop end value *= rate.to_i value /= 100 return value end end class Game_Battler def calc_hp_recovery(user, item) rate = SNF.like_effect(self, item) result = maxhp * item.hp_recovery_rate / 100 + item.hp_recovery result *= 2 if user.pharmacology # 薬の知識で効果 2 倍 result = result * rate.to_i / 100 return result end def calc_mp_recovery(user, item) rate = SNF.like_effect(self, item) result = maxmp * item.mp_recovery_rate / 100 + item.mp_recovery result *= 2 if user.pharmacology # 薬の知識で効果 2 倍 result = result * rate.to_i / 100 return result end alias snf_likehate_item_growth_effect item_growth_effect def item_growth_effect(user, item) default = item.parameter_points rate = SNF.like_effect(user, item) result = item.parameter_points * rate.to_i / 100 item.parameter_points = result snf_likehate_item_growth_effect(user, item) item.parameter_points = default # 元に戻す end end if SNF::LIKE_SOUND_CHANGE class Scene_Item < Scene_Base def use_item_nontarget target = $game_party.members[@target_window.index] likely = SNF.like_effect(target, @item) if likely.to_i < 100 # すき SNF::HATE_SOUND.play elsif likely.to_i > 100 # きらい SNF::LIKE_SOUND.play else Sound.play_use_item end $game_party.consume_item(@item) @item_window.draw_item(@item_window.index) @target_window.refresh if $game_party.all_dead? $scene = Scene_Gameover.new elsif @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $scene = Scene_Map.new end end end end if SNF::EQUIP_LIKEHATE class Game_Actor < Game_Battler # 再定義 #-------------------------------------------------------------------------- # ● 基本攻撃力の取得 #-------------------------------------------------------------------------- def base_atk n = actor.parameters[2, @level] for item in equips.compact do n += item.item_atk(actor.id) end return n end #-------------------------------------------------------------------------- # ● 基本防御力の取得 #-------------------------------------------------------------------------- def base_def n = actor.parameters[3, @level] for item in equips.compact do n += item.item_def(actor.id) end return n end #-------------------------------------------------------------------------- # ● 基本精神力の取得 #-------------------------------------------------------------------------- def base_spi n = actor.parameters[4, @level] for item in equips.compact do n += item.item_spi(actor.id) end return n end #-------------------------------------------------------------------------- # ● 基本敏捷性の取得 #-------------------------------------------------------------------------- def base_agi n = actor.parameters[5, @level] for item in equips.compact do n += item.item_agi(actor.id) end return n end end module RPG class Weapon < BaseItem def item_atk(actor_id) n = SNF.equip_likehate(actor_id, @atk, @note) return n end def item_def(actor_id) n = SNF.equip_likehate(actor_id, @def, @note) return n end def item_spi(actor_id) n = SNF.equip_likehate(actor_id, @spi, @note) return n end def item_agi(actor_id) n = SNF.equip_likehate(actor_id, @agi, @note) return n end end class Armor < BaseItem # Weaponと同じ def item_atk(actor_id) n = SNF.equip_likehate(actor_id, @atk, @note) return n end def item_def(actor_id) n = SNF.equip_likehate(actor_id, @def, @note) return n end def item_spi(actor_id) n = SNF.equip_likehate(actor_id, @spi, @note) return n end def item_agi(actor_id) n = SNF.equip_likehate(actor_id, @agi, @note) return n end end end end