#============================================================================== # ■ RGSS3 追加スキルタイプ Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 別のスキルタイプコマンドから一つのスキルを使用できるようになります。 # ただし、増やしたスキルタイプの分だけスキルタイプ封印の影響を受けます。 # また、あくまで基本的なスキル使用条件とスキル表示の部分のみを想定している為 # 「スキルタイプを参照して処理を行う」というタイプのスクリプト素材とは # 相性が悪いかもしれません。 # A1さんのところにも同じようなスクリプトがありますが # 競合してうまく動作しない等の場合はこちらを試されるのもいいかもしれません。 #============================================================================== # スキルのメモ欄に指定 #------------------------------------------------------------------------------ # <追加スキルタイプ:2> # # このスキルはスキル一覧を表示する際、スキルタイプ2のスキルとしても扱います。 # また、スキルタイプ封印でスキルタイプ2が指定されている場合も影響を受けます。 #------------------------------------------------------------------------------ # <追加スキルタイプ:2,3> # # このスキルはスキル一覧を表示する際、スキルタイプ2及び3のスキルとしても扱います。 # また、スキルタイプ封印でスキルタイプ2や3が指定されている場合も影響を受けます。 #============================================================================== # 当方の自動戦闘プチ拡張・修正を使用されている場合 # このスクリプトは自動戦闘プチ拡張・修正よりも下に配置して下さい。 #============================================================================== class MultiSkillType #追加スキルタイプの設定用キーワードを指定。 Word = "追加スキルタイプ" end class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # 追加スキルタイプ #-------------------------------------------------------------------------- def multi_skill_type [] end end class RPG::Skill < RPG::UsableItem #-------------------------------------------------------------------------- # 追加スキルタイプ #-------------------------------------------------------------------------- def multi_skill_type @multi_skill_type ||= create_multi_skill_type end #-------------------------------------------------------------------------- # 追加スキルタイプ作成 #-------------------------------------------------------------------------- def create_multi_skill_type (/<#{MultiSkillType::Word}[::](\S+)>/ =~ note ? $1.to_s : "" ).split(/\s*,\s*/).inject([]) {|r,i| r.push(i.to_i)} end end class Window_SkillList < Window_Selectable #-------------------------------------------------------------------------- # スキルをリストに含めるかどうか #-------------------------------------------------------------------------- alias include_multi_skill_type? include? def include?(item) l = @stype_id @stype_id = item.stype_id if item && item.multi_skill_type.include?(@stype_id) r = include_multi_skill_type?(item) @stype_id = l r end end class Game_BattlerBase #-------------------------------------------------------------------------- # スキルの使用可能条件チェック #-------------------------------------------------------------------------- alias skill_conditions_met_multi_skill_type? skill_conditions_met? def skill_conditions_met?(skill) return false if skill.multi_skill_type.any? {|i| skill_type_sealed?(i)} skill_conditions_met_multi_skill_type?(skill) end end class Game_Action #-------------------------------------------------------------------------- # スキルタイプ利用可否による使用可否判定 #-------------------------------------------------------------------------- if method_defined?(:st_usable?) && !method_defined?(:st_usable_multi_skill_type?) alias st_usable_multi_skill_type? st_usable? def st_usable?(item) return st_usable_multi_skill_type?(item) if subject.enemy? if item.is_a?(RPG::Skill) l = item.stype_id item.stype_id = 0 if !item.multi_skill_type.empty? else l = -1 end f = st_usable_multi_skill_type?(item) if l > -1 a1 = subject.added_skill_types if f && l > 0 a2 = [l] + item.multi_skill_type f = false unless a2.any? {|i| a1.include?(i)} end item.stype_id = l end f end end end