设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2283|回复: 3
打印 上一主题 下一主题

[已经过期] 如何制作被动技能?像是学会某个特技后,能力会得到提升

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
155
在线时间
61 小时
注册时间
2011-3-9
帖子
92
跳转到指定楼层
1
发表于 2011-6-2 10:45:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如何制作被动技能?像是学会某个特技后,能力会得到提升。
我的梦幻让我用双手让他飞翔。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1031 小时
注册时间
2011-3-22
帖子
1069
2
发表于 2011-6-2 11:17:41 | 只看该作者
用公共事件。。。。。。。。。。。。。。。。。。。。。。

警告!企鹅是很多滴~请注意是否是正身~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
155
在线时间
61 小时
注册时间
2011-3-9
帖子
92
3
 楼主| 发表于 2011-6-6 00:52:40 | 只看该作者
谁能给个这类的脚本啊?
我的梦幻让我用双手让他飞翔。
回复 支持 反对

使用道具 举报

Lv2.观梦者

姬魂

梦石
0
星屑
428
在线时间
400 小时
注册时间
2009-8-30
帖子
612

开拓者

4
发表于 2011-6-6 09:56:28 | 只看该作者
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ パッシブスキル - KGC_PassiveSkill ◆ VX ◆
  3. #_/    ◇ Last update : 2009/11/01 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  習得するだけで能力値上昇効果を発揮するスキルを作成します。
  6. #_/============================================================================
  7. #_/ 【基本機能】≪200x/XP 機能再現≫ より下に導入してください。
  8. #_/ 【装備】≪装備品オプション追加≫ より下に導入してください。
  9. #_/ 【装備】≪装備拡張≫ より下に導入してください。
  10. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  11. $imported = {} if $imported == nil
  12. $imported["PassiveSkill"] = true

  13. module KGC
  14. module PassiveSkill
  15.   # パッシブスキル用条件リスト
  16.   CONDITIONS = {
  17.     :weapon    => "WEAPON|武器",
  18.     :armor     => "ARMOR|防具",
  19.     :armor_set => "ARMOR_SET|防具セット",
  20.     :state     => "STATE|ステート",
  21.   }

  22.   # パッシブスキル用パラメータリスト
  23.   PARAMS = {
  24.     :maxhp => "MAXHP|最大HP",
  25.     :maxmp => "MAXMP|最大MP",
  26.     :atk   => "ATK|攻撃力",
  27.     :def   => "DEF|防御力",
  28.     :spi   => "SPI|精神力",
  29.     :agi   => "AGI|敏捷性",
  30.     :hit   => "HIT|命中率",
  31.     :eva   => "EVA|回避率",
  32.     :cri   => "CRI|クリティカル率",
  33.     :odds  => "ODDS|狙われやすさ",
  34.   }

  35.   # パッシブスキル用属性・ステートリスト
  36.   ARRAYS = {
  37.     :attack_element => "ATTACK_ELEMENT|攻撃属性",
  38.     :plus_state     => "PLUS_STATE|付加ステート",
  39.     :invalid_state  => "INVALID_STATE|無効化ステート",
  40.     :auto_state     => "AUTO_STATE|オートステート",
  41.   }

  42.   # パッシブスキル用耐性リスト
  43.   RESISTANCES = {
  44.     # ≪装備品オプション追加≫
  45.     :element => "ELEMENT_RESISTANCE|属性耐性",
  46.     :state   => "STATE_RESISTANCE|ステート耐性",
  47.   }

  48.   # パッシブスキル用特殊効果リスト
  49.   EFFECTS = {
  50.     # デフォ
  51.     :two_swords_style => "TWO_SWORDS_STYLE|二刀流",
  52.     :auto_battle      => "AUTO_BATTLE|自動戦闘",
  53.     :super_guard      => "SUPER_GUARD|強力防御",
  54.     :pharmacology     => "PHARMACOLOGY|薬の知識",
  55.     :fast_attack      => "FAST_ATTACK|ターン内先制",
  56.     :dual_attack      => "DUAL_ATTACK|連続攻撃",
  57.     :critical_bonus   => "CRITICAL_BONUS|クリティカル頻発",
  58.     :prevent_critical => "PREVENT_CRITICAL|クリティカル防止",
  59.     :half_mp_cost     => "HALF_MP_COST|消費MP半分",
  60.     :double_exp_gain  => "DOUBLE_EXP_GAIN|取得経験値[22]倍",
  61.     # ≪200x/XP 機能再現≫
  62.     :whole_attack => "WHOLE_ATTACK|全体攻撃",
  63.     :ignore_eva   => "IGNORE_EVA|回避率?無視",
  64.     # ≪装備品オプション追加≫
  65.     :multi_attack_count => '(\d+)\s*(?:TIMES_ATTACK|回攻撃)',
  66.   }

  67.   module Regexp
  68.     module Skill
  69.       # パッシブスキル開始
  70.       BEGIN_PASSIVE = /<(?:PASSIVE_SKILL|パッシブスキル)>/i
  71.       # パッシブスキル終了
  72.       END_PASSIVE = /<\/(?:PASSIVE_SKILL|パッシブスキル)>/i

  73.       # 発動条件
  74.       PASSIVE_CONDITIONS =
  75.         /^\s*条件\s*([^:\+\-\d\s]+)\s*([\-\d]+(?:\s*,\s*[\-\d]+)*)\s*$/i
  76.       # パラメータ修正
  77.       #  MAXHP +20  など
  78.       PASSIVE_PARAMS = /^\s*([^:\+\-\d\s]+)\s*([\+\-]\d+)([%%])?\s*$/i
  79.       # 属性・ステートリスト
  80.       #  攻撃属性 1,2,3  など
  81.       PASSIVE_ARRAYS = /^\s*([^:\+\-\d\s]+)\s*(\d+(?:\s*,\s*\d+)*)\s*$/i
  82.       # 耐性
  83.       PASSIVE_RESISTANCES = /^\s*([^:\+\-\d\s]+)\s(\d+):(\-?\d+)[%%]?\s*$/i
  84.       # 特殊効果
  85.       PASSIVE_EFFECTS = /^\s*([^:\+\-\d\s]+)/i
  86.     end
  87.   end
  88. end
  89. end

  90. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  91. #==============================================================================
  92. # □ KGC::Commands
  93. #==============================================================================

  94. module KGC
  95. module Commands
  96.   module_function
  97.   #--------------------------------------------------------------------------
  98.   # ○ パッシブスキルの修正値を再設定
  99.   #--------------------------------------------------------------------------
  100.   def restore_passive_rev
  101.     (1...$data_actors.size).each { |i|
  102.       actor = $game_actors[i]
  103.       actor.restore_passive_rev
  104.     }
  105.   end
  106. end
  107. end

  108. class Game_Interpreter
  109.   include KGC::Commands
  110. end

  111. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  112. #==============================================================================
  113. # ■ RPG::Skill
  114. #==============================================================================

  115. class RPG::Skill < RPG::UsableItem
  116.   #--------------------------------------------------------------------------
  117.   # ○ パッシブスキルのキャッシュを生成
  118.   #--------------------------------------------------------------------------
  119.   def create_passive_skill_cache
  120.     @__passive = false
  121.     @__passive_conditions  = {}
  122.     @__passive_params      = {}
  123.     @__passive_params_rate = {}
  124.     @__passive_arrays      = {}
  125.     @__passive_resistances = {}
  126.     @__passive_effects     = { :multi_attack_count => 1 }

  127.     KGC::PassiveSkill::CONDITIONS.each_key { |k|
  128.       @__passive_conditions[k] = []
  129.     }

  130.     passive_flag = false
  131.     self.note.each_line { |line|
  132.       case line
  133.       when KGC::PassiveSkill::Regexp::Skill::BEGIN_PASSIVE
  134.         # パッシブスキル定義開始
  135.         passive_flag = true
  136.         @__passive = true
  137.       when KGC::PassiveSkill::Regexp::Skill::END_PASSIVE
  138.         # パッシブスキル定義終了
  139.         passive_flag = false
  140.       when KGC::PassiveSkill::Regexp::Skill::PASSIVE_CONDITIONS
  141.         # 発動条件
  142.         if passive_flag
  143.           apply_passive_conditions($1, $2)
  144.         end
  145.       when KGC::PassiveSkill::Regexp::Skill::PASSIVE_PARAMS
  146.         # 能力値修正
  147.         if passive_flag
  148.           apply_passive_params($1, $2.to_i, $3 != nil)
  149.         end
  150.       when KGC::PassiveSkill::Regexp::Skill::PASSIVE_ARRAYS
  151.         # 属性・ステート
  152.         if passive_flag
  153.           apply_passive_arrays($1, $2.scan(/\d+/))
  154.         end
  155.       when KGC::PassiveSkill::Regexp::Skill::PASSIVE_RESISTANCES
  156.         # 耐性
  157.         if passive_flag
  158.           apply_passive_resistances($1, $2.to_i, $3.to_i)
  159.         end
  160.       else
  161.         # 特殊効果
  162.         if passive_flag
  163.           apply_passive_effects(line)
  164.         end
  165.       end
  166.     }
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ○ パッシブスキルの発動条件を適用
  170.   #     cond   : 条件
  171.   #     values : 条件値
  172.   #--------------------------------------------------------------------------
  173.   def apply_passive_conditions(cond, values)
  174.     KGC::PassiveSkill::CONDITIONS.each { |k, v|
  175.       if cond =~ /(?:#{v})/i
  176.         cond = k
  177.         break
  178.       end
  179.     }
  180.     return unless cond.is_a?(Symbol)

  181.     @__passive_conditions[cond] = [] if @__passive_conditions[cond] == nil

  182.     values.scan(/[\-\d]+/).each { |v|
  183.       case v
  184.       when /^(\d+)\-(\d+)$/  # 範囲
  185.         @__passive_conditions[cond] += ( ($1.to_i)..($2.to_i) ).to_a
  186.       when /^\d+$/           # 単一
  187.         @__passive_conditions[cond] << v.to_i
  188.       end
  189.     }
  190.     @__passive_conditions[cond].uniq!
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ○ パッシブスキルの能力値修正を適用
  194.   #     param : 対象パラメータ
  195.   #     value : 修正値
  196.   #     rate  : true なら % 指定
  197.   #--------------------------------------------------------------------------
  198.   def apply_passive_params(param, value, rate)
  199.     KGC::PassiveSkill::PARAMS.each { |k, v|
  200.       if param =~ /(?:#{v})/i
  201.         if rate
  202.           @__passive_params_rate[k] = 0 if @__passive_params_rate[k] == nil
  203.           @__passive_params_rate[k] += value
  204.         else
  205.           @__passive_params[k] = 0 if @__passive_params[k] == nil
  206.           @__passive_params[k] += value
  207.         end
  208.         break
  209.       end
  210.     }
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ○ パッシブスキルの追加属性・ステートを適用
  214.   #     param : 対象パラメータ
  215.   #     list  : 属性・ステート一覧
  216.   #--------------------------------------------------------------------------
  217.   def apply_passive_arrays(param, list)
  218.     KGC::PassiveSkill::ARRAYS.each { |k, v|
  219.       if param =~ /(?:#{v})/i
  220.         values = []
  221.         list.each { |num| values << num.to_i }
  222.         @__passive_arrays[k] = [] if @__passive_arrays[k] == nil
  223.         @__passive_arrays[k] |= values
  224.         break
  225.       end
  226.     }
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ○ パッシブスキルの耐性を適用
  230.   #     param : 対象パラメータ
  231.   #     id    : 属性・ステート ID
  232.   #     rate  : 変動率
  233.   #--------------------------------------------------------------------------
  234.   def apply_passive_resistances(param, id, rate)
  235.     KGC::PassiveSkill::RESISTANCES.each { |k, v|
  236.       if param =~ /(?:#{v})/i
  237.         if @__passive_resistances[k] == nil
  238.           @__passive_resistances[k] = []
  239.         end
  240.         n = @__passive_resistances[k][id]
  241.         n = 100 if n == nil
  242.         @__passive_resistances[k][id] = n + rate - 100
  243.         break
  244.       end
  245.     }
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ○ パッシブスキルの特殊効果を適用
  249.   #     effect : 対象効果
  250.   #--------------------------------------------------------------------------
  251.   def apply_passive_effects(effect)
  252.     KGC::PassiveSkill::EFFECTS.each { |k, v|
  253.       if effect =~ /^\s*(#{v})/i
  254.         case k
  255.         when :multi_attack_count
  256.           # 攻撃回数
  257.           $1 =~ /#{v}/i
  258.           @__passive_effects[k] = [ $1.to_i, @__passive_effects[k] ].max
  259.         else
  260.           @__passive_effects[k] = true
  261.         end
  262.         break
  263.       end
  264.     }
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ○ パッシブスキルであるか
  268.   #--------------------------------------------------------------------------
  269.   def passive
  270.     create_passive_skill_cache if @__passive == nil
  271.     return @__passive
  272.   end
  273.   alias passive? passive
  274.   #--------------------------------------------------------------------------
  275.   # ○ パッシブスキルの発動条件
  276.   #--------------------------------------------------------------------------
  277.   def passive_conditions
  278.     create_passive_skill_cache if @__passive_conditions == nil
  279.     return @__passive_conditions
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ○ パッシブスキルの能力値修正 (即値)
  283.   #--------------------------------------------------------------------------
  284.   def passive_params
  285.     create_passive_skill_cache if @__passive_params == nil
  286.     return @__passive_params
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ○ パッシブスキルの能力値修正 (割合)
  290.   #--------------------------------------------------------------------------
  291.   def passive_params_rate
  292.     create_passive_skill_cache if @__passive_params_rate == nil
  293.     return @__passive_params_rate
  294.   end
  295.   #--------------------------------------------------------------------------
  296.   # ○ パッシブスキルの属性・ステートリスト
  297.   #--------------------------------------------------------------------------
  298.   def passive_arrays
  299.     create_passive_skill_cache if @__passive_arrays == nil
  300.     return @__passive_arrays
  301.   end
  302.   #--------------------------------------------------------------------------
  303.   # ○ パッシブスキルの耐性リスト
  304.   #--------------------------------------------------------------------------
  305.   def passive_resistances
  306.     create_passive_skill_cache if @__passive_resistances == nil
  307.     return @__passive_resistances
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ○ パッシブスキルの特殊効果リスト
  311.   #--------------------------------------------------------------------------
  312.   def passive_effects
  313.     create_passive_skill_cache if @__passive_effects == nil
  314.     return @__passive_effects
  315.   end
  316. end

  317. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  318. #==============================================================================
  319. # ■ Game_Actor
  320. #==============================================================================

  321. class Game_Actor < Game_Battler
  322.   #--------------------------------------------------------------------------
  323.   # ○ クラス変数
  324.   #--------------------------------------------------------------------------
  325.   @@passive_equip_test = false  # パッシブスキル用装備テストフラグ
  326.   #--------------------------------------------------------------------------
  327.   # ○ 公開インスタンス変数
  328.   #--------------------------------------------------------------------------
  329.   attr_accessor :passive_dummy_flag  # パッシブスキル発動条件無効化
  330.   #--------------------------------------------------------------------------
  331.   # ● セットアップ
  332.   #     actor_id : アクター ID
  333.   #--------------------------------------------------------------------------
  334.   alias setup_KGC_PassiveSkill setup
  335.   def setup(actor_id)
  336.     reset_passive_rev
  337.     @__passive_rev_restoring = true

  338.     setup_KGC_PassiveSkill(actor_id)

  339.     @__passive_rev_restoring = nil
  340.     restore_passive_rev
  341.   end
  342.   #--------------------------------------------------------------------------
  343.   # ○ パッシブスキルの修正値を初期化
  344.   #--------------------------------------------------------------------------
  345.   def reset_passive_rev
  346.     @passive_params      = {}
  347.     @passive_params_rate = {}
  348.     @passive_arrays      = {}
  349.     @passive_resistances = {}
  350.     @passive_effects     = {}
  351.     KGC::PassiveSkill::PARAMS.each_key { |k|
  352.       @passive_params[k]      =   0
  353.       @passive_params_rate[k] = 100
  354.     }
  355.     KGC::PassiveSkill::ARRAYS.each_key { |k|
  356.       @passive_arrays[k] = []
  357.     }
  358.     KGC::PassiveSkill::RESISTANCES.each_key { |k|
  359.       @passive_resistances[k] = []
  360.     }
  361.     KGC::PassiveSkill::EFFECTS.each_key { |k|
  362.       @passive_effects[k] = false
  363.     }
  364.     @passive_effects[:multi_attack_count] = 1
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ○ パッシブスキルの修正値を再設定
  368.   #--------------------------------------------------------------------------
  369.   def restore_passive_rev
  370.     return if @__passive_rev_restoring

  371.     # ダミー生成
  372.     unless @passive_dummy_flag
  373.       dummy = Marshal.load(Marshal.dump(self))
  374.       dummy.passive_dummy_flag = true
  375.       dummy.restore_passive_rev
  376.     end

  377.     # 修正前の値を保持
  378.     last_effects = @passive_effects.clone if @passive_effects != nil

  379.     reset_passive_rev

  380.     # ≪スキルCP制≫ の併用を考慮し、戦闘中フラグを一時的にオン
  381.     last_in_battle = $game_temp.in_battle
  382.     $game_temp.in_battle = true
  383.     # 修正値を取得
  384.     self.skills.each { |skill|
  385.       next unless passive_skill_valid?(skill, dummy)

  386.       skill.passive_params.each      { |k, v| @passive_params[k] += v }
  387.       skill.passive_params_rate.each { |k, v| @passive_params_rate[k] += v }
  388.       skill.passive_arrays.each      { |k, v| @passive_arrays[k] |= v }
  389.       skill.passive_resistances.each { |k, v|
  390.         v.each_with_index { |n, i|
  391.           next if n == nil
  392.           @passive_resistances[k][i] = 100 if @passive_resistances[k][i] == nil
  393.           @passive_resistances[k][i] += n - 100
  394.         }
  395.       }
  396.       skill.passive_effects.each { |k, v|
  397.         case k
  398.         when :multi_attack_count
  399.           @passive_effects[k] = [ v, @passive_effects[k] ].max
  400.         else
  401.           @passive_effects[k] |= v
  402.         end
  403.       }
  404.     }
  405.     $game_temp.in_battle = last_in_battle

  406.     @__passive_rev_restoring = true
  407.     # HP/MP を修正
  408.     self.hp = self.hp
  409.     self.mp = self.mp

  410.     # 二刀流違反を修正
  411.     if !two_swords_style_KGC_PassiveSkill &&
  412.         last_effects[:two_swords_style] != nil &&
  413.         last_effects[:two_swords_style] != two_swords_style
  414.       @__one_time_two_swords_style = last_effects[:two_swords_style]
  415.       change_equip(1, nil, @@passive_equip_test)
  416.       @__one_time_two_swords_style = nil
  417.     end
  418.     @__passive_rev_restoring = nil
  419.     dummy = nil
  420.     Graphics.frame_reset
  421.   end
  422.   #--------------------------------------------------------------------------
  423.   # ○ パッシブスキル有効判定
  424.   #--------------------------------------------------------------------------
  425.   def passive_skill_valid?(skill, dummy)
  426.     return false unless skill.passive
  427.     return true  if @passive_dummy_flag

  428.     # 発動条件
  429.     skill.passive_conditions.each { |k, v|
  430.       next if v.empty?

  431.       ids = []
  432.       case k
  433.       when :weapon
  434.         dummy.weapons.compact.each { |w| ids << w.id }
  435.         return false if (v & ids).empty?          # 必要武器を未装備
  436.       when :armor
  437.         dummy.armors.compact.each { |a| ids << a.id }
  438.         return false if (v & ids).empty?          # 必要防具を未装備
  439.       when :state
  440.         dummy.states.compact.each { |s| ids << s.id }
  441.         return false if (v & ids).empty?          # 必要ステートでない
  442.       end
  443.     }

  444.     return true
  445.   end
  446.   #--------------------------------------------------------------------------
  447.   # ○ パッシブスキル発動条件
  448.   #--------------------------------------------------------------------------
  449.   def passive_conditions
  450.     restore_passive_rev if @passive_conditions == nil
  451.     return @passive_conditions
  452.   end
  453.   #--------------------------------------------------------------------------
  454.   # ○ パッシブスキルによるパラメータ修正値 (即値)
  455.   #--------------------------------------------------------------------------
  456.   def passive_params
  457.     restore_passive_rev if @passive_params == nil
  458.     return @passive_params
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # ○ パッシブスキルによるパラメータ修正値 (割合)
  462.   #--------------------------------------------------------------------------
  463.   def passive_params_rate
  464.     restore_passive_rev if @passive_params_rate == nil
  465.     return @passive_params_rate
  466.   end
  467.   #--------------------------------------------------------------------------
  468.   # ○ パッシブスキルによる追加属性・ステート
  469.   #--------------------------------------------------------------------------
  470.   def passive_arrays
  471.     restore_passive_rev if @passive_arrays == nil
  472.     return @passive_arrays
  473.   end
  474.   #--------------------------------------------------------------------------
  475.   # ○ パッシブスキルによる耐性
  476.   #--------------------------------------------------------------------------
  477.   def passive_resistances
  478.     restore_passive_rev if @passive_resistances == nil
  479.     return @passive_resistances
  480.   end
  481.   #--------------------------------------------------------------------------
  482.   # ○ パッシブスキルによる特殊効果
  483.   #--------------------------------------------------------------------------
  484.   def passive_effects
  485.     restore_passive_rev if @passive_effects == nil
  486.     return @passive_effects
  487.   end
  488.   #--------------------------------------------------------------------------
  489.   # ● ステートの付加
  490.   #     state_id : ステート ID
  491.   #--------------------------------------------------------------------------
  492.   unless method_defined?(:add_state_KGC_PassiveSkill)
  493.     alias add_state_KGC_PassiveSkill add_state
  494.   end
  495.   def add_state(state_id)
  496.     add_state_KGC_PassiveSkill(state_id)

  497.     restore_passive_rev
  498.   end
  499.   #--------------------------------------------------------------------------
  500.   # ● ステートの解除
  501.   #     state_id : ステート ID
  502.   #--------------------------------------------------------------------------
  503.   unless method_defined?(:remove_state_KGC_PassiveSkill)
  504.     alias remove_state_KGC_PassiveSkill remove_state
  505.   end
  506.   def remove_state(state_id)
  507.     remove_state_KGC_PassiveSkill(state_id)

  508.     restore_passive_rev
  509.   end
  510.   #--------------------------------------------------------------------------
  511.   # ● 装備の変更 (オブジェクトで指定)
  512.   #     equip_type : 装備部位 (0..4)
  513.   #     item       : 武器 or 防具 (nil なら装備解除)
  514.   #     test       : テストフラグ (戦闘テスト、または装備画面での一時装備)
  515.   #--------------------------------------------------------------------------
  516.   alias change_equip_KGC_PassiveSkill change_equip
  517.   def change_equip(equip_type, item, test = false)
  518.     @@passive_equip_test = test

  519.     change_equip_KGC_PassiveSkill(equip_type, item, test)

  520.     restore_passive_rev
  521.     @@passive_equip_test = false
  522.   end
  523.   #--------------------------------------------------------------------------
  524.   # ● 装備の破棄
  525.   #     item : 破棄する武器 or 防具
  526.   #    武器/防具の増減で「装備品も含める」のとき使用する。
  527.   #--------------------------------------------------------------------------
  528.   alias discard_equip_KGC_PassiveSkill discard_equip
  529.   def discard_equip(item)
  530.     discard_equip_KGC_PassiveSkill(item)

  531.     restore_passive_rev
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # ● 経験値の変更
  535.   #     exp  : 新しい経験値
  536.   #     show : レベルアップ表示フラグ
  537.   #--------------------------------------------------------------------------
  538.   alias change_exp_KGC_PassiveSkill change_exp
  539.   def change_exp(exp, show)
  540.     @__passive_rev_restoring = true

  541.     change_exp_KGC_PassiveSkill(exp, show)

  542.     @__passive_rev_restoring = nil
  543.     restore_passive_rev
  544.   end

  545.   if $imported["AddEquipmentOptions"]
  546.   #--------------------------------------------------------------------------
  547.   # ○ 属性耐性の取得
  548.   #     element_id : 属性 ID
  549.   #--------------------------------------------------------------------------
  550.   alias element_resistance_KGC_PassiveSkill element_resistance
  551.   def element_resistance(element_id)
  552.     n = element_resistance_KGC_PassiveSkill(element_id)
  553.     rate = passive_resistances[:element][element_id]
  554.     n += (rate == nil ? 100 : rate) - 100
  555.     return n
  556.   end
  557.   #--------------------------------------------------------------------------
  558.   # ○ ステート耐性の取得
  559.   #     state_id : ステート ID
  560.   #--------------------------------------------------------------------------
  561.   alias state_resistance_KGC_PassiveSkill state_resistance
  562.   def state_resistance(state_id)
  563.     n = state_resistance_KGC_PassiveSkill(state_id)
  564.     rate = passive_resistances[:state][state_id]
  565.     n += (rate == nil ? 100 : rate) - 100
  566.     return [n, 0].max
  567.   end
  568.   end  # <-- if $imported["AddEquipmentOptions"]

  569.   #--------------------------------------------------------------------------
  570.   # ● ステート無効化判定
  571.   #     state_id : ステート ID
  572.   #--------------------------------------------------------------------------
  573.   alias state_resist_KGC_PassiveSkill? state_resist?
  574.   def state_resist?(state_id)
  575.     return true if passive_arrays[:invalid_state].include?(state_id)

  576.     return state_resist_KGC_PassiveSkill?(state_id)
  577.   end
  578.   #--------------------------------------------------------------------------
  579.   # ● 通常攻撃の属性取得
  580.   #--------------------------------------------------------------------------
  581.   alias element_set_KGC_PassiveSkill element_set
  582.   def element_set
  583.     return (element_set_KGC_PassiveSkill | passive_arrays[:attack_element])
  584.   end
  585.   #--------------------------------------------------------------------------
  586.   # ● 通常攻撃の追加効果 (ステート変化) 取得
  587.   #--------------------------------------------------------------------------
  588.   alias plus_state_set_KGC_PassiveSkill plus_state_set
  589.   def plus_state_set
  590.     return (plus_state_set_KGC_PassiveSkill | passive_arrays[:plus_state])
  591.   end
  592.   #--------------------------------------------------------------------------
  593.   # ● 基本 MaxHP の取得
  594.   #--------------------------------------------------------------------------
  595.   alias base_maxhp_KGC_PassiveSkill base_maxhp
  596.   def base_maxhp
  597.     n = base_maxhp_KGC_PassiveSkill + passive_params[:maxhp]
  598.     n = n * passive_params_rate[:maxhp] / 100
  599.     return n
  600.   end
  601.   #--------------------------------------------------------------------------
  602.   # ● 基本 MaxMP の取得
  603.   #--------------------------------------------------------------------------
  604.   alias base_maxmp_KGC_PassiveSkill base_maxmp
  605.   def base_maxmp
  606.     n = base_maxmp_KGC_PassiveSkill + passive_params[:maxmp]
  607.     n = n * passive_params_rate[:maxmp] / 100
  608.     return n
  609.   end
  610.   #--------------------------------------------------------------------------
  611.   # ● 基本攻撃力の取得
  612.   #--------------------------------------------------------------------------
  613.   alias base_atk_KGC_PassiveSkill base_atk
  614.   def base_atk
  615.     n = base_atk_KGC_PassiveSkill + passive_params[:atk]
  616.     n = n * passive_params_rate[:atk] / 100
  617.     return n
  618.   end
  619.   #--------------------------------------------------------------------------
  620.   # ● 基本防御力の取得
  621.   #--------------------------------------------------------------------------
  622.   alias base_def_KGC_PassiveSkill base_def
  623.   def base_def
  624.     n = base_def_KGC_PassiveSkill + passive_params[:def]
  625.     n = n * passive_params_rate[:def] / 100
  626.     return n
  627.   end
  628.   #--------------------------------------------------------------------------
  629.   # ● 基本精神力の取得
  630.   #--------------------------------------------------------------------------
  631.   alias base_spi_KGC_PassiveSkill base_spi
  632.   def base_spi
  633.     n = base_spi_KGC_PassiveSkill + passive_params[:spi]
  634.     n = n * passive_params_rate[:spi] / 100
  635.     return n
  636.   end
  637.   #--------------------------------------------------------------------------
  638.   # ● 基本敏捷性の取得
  639.   #--------------------------------------------------------------------------
  640.   alias base_agi_KGC_PassiveSkill base_agi
  641.   def base_agi
  642.     n = base_agi_KGC_PassiveSkill + passive_params[:agi]
  643.     n = n * passive_params_rate[:agi] / 100
  644.     return n
  645.   end
  646.   #--------------------------------------------------------------------------
  647.   # ● 命中率の取得
  648.   #--------------------------------------------------------------------------
  649.   alias hit_KGC_PassiveSkill hit
  650.   def hit
  651.     n = hit_KGC_PassiveSkill + passive_params[:hit]
  652.     n = n * passive_params_rate[:hit] / 100
  653.     return n
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ● 回避率の取得
  657.   #--------------------------------------------------------------------------
  658.   alias eva_KGC_PassiveSkill eva
  659.   def eva
  660.     n = eva_KGC_PassiveSkill + passive_params[:eva]
  661.     n = n * passive_params_rate[:eva] / 100
  662.     return n
  663.   end
  664.   #--------------------------------------------------------------------------
  665.   # ● クリティカル率の取得
  666.   #--------------------------------------------------------------------------
  667.   alias cri_KGC_PassiveSkill cri
  668.   def cri
  669.     n = cri_KGC_PassiveSkill + passive_params[:cri]
  670.     n = n * passive_params_rate[:cri] / 100
  671.     n += 4 if passive_effects[:critical_bonus]
  672.     return n
  673.   end
  674.   #--------------------------------------------------------------------------
  675.   # ● 狙われやすさの取得
  676.   #--------------------------------------------------------------------------
  677.   alias odds_KGC_PassiveSkill odds
  678.   def odds
  679.     n = odds_KGC_PassiveSkill + passive_params[:odds]
  680.     n = n * passive_params_rate[:odds] / 100
  681.     return n
  682.   end
  683.   #--------------------------------------------------------------------------
  684.   # ● オプション [二刀流] の取得
  685.   #--------------------------------------------------------------------------
  686.   alias two_swords_style_KGC_PassiveSkill two_swords_style
  687.   def two_swords_style
  688.     return @__one_time_two_swords_style if @__one_time_two_swords_style != nil

  689.     return (two_swords_style_KGC_PassiveSkill ||
  690.       passive_effects[:two_swords_style])
  691.   end
  692.   #--------------------------------------------------------------------------
  693.   # ● オプション [自動戦闘] の取得
  694.   #--------------------------------------------------------------------------
  695.   alias auto_battle_KGC_PassiveSkill auto_battle
  696.   def auto_battle
  697.     return (auto_battle_KGC_PassiveSkill || passive_effects[:auto_battle])
  698.   end
  699.   #--------------------------------------------------------------------------
  700.   # ● オプション [強力防御] の取得
  701.   #--------------------------------------------------------------------------
  702.   alias super_guard_KGC_PassiveSkill super_guard
  703.   def super_guard
  704.     return (super_guard_KGC_PassiveSkill || passive_effects[:super_guard])
  705.   end
  706.   #--------------------------------------------------------------------------
  707.   # ● オプション [薬の知識] の取得
  708.   #--------------------------------------------------------------------------
  709.   alias pharmacology_KGC_PassiveSkill pharmacology
  710.   def pharmacology
  711.     return (pharmacology_KGC_PassiveSkill || passive_effects[:pharmacology])
  712.   end
  713.   #--------------------------------------------------------------------------
  714.   # ● 武器オプション [ターン内先制] の取得
  715.   #--------------------------------------------------------------------------
  716.   alias fast_attack_KGC_PassiveSkill fast_attack
  717.   def fast_attack
  718.     return (fast_attack_KGC_PassiveSkill || passive_effects[:fast_attack])
  719.   end
  720.   #--------------------------------------------------------------------------
  721.   # ● 武器オプション [連続攻撃] の取得
  722.   #--------------------------------------------------------------------------
  723.   alias dual_attack_KGC_PassiveSkill dual_attack
  724.   def dual_attack
  725.     if $imported["AddEquipmentOptions"]
  726.       # 2回攻撃以上なら無視
  727.       return false if passive_effects[:multi_attack_count] >= 2
  728.     end

  729.     return (dual_attack_KGC_PassiveSkill || passive_effects[:dual_attack])
  730.   end
  731.   #--------------------------------------------------------------------------
  732.   # ● 防具オプション [クリティカル防止] の取得
  733.   #--------------------------------------------------------------------------
  734.   alias prevent_critical_KGC_PassiveSkill prevent_critical
  735.   def prevent_critical
  736.     return (prevent_critical_KGC_PassiveSkill ||
  737.       passive_effects[:prevent_critical])
  738.   end
  739.   #--------------------------------------------------------------------------
  740.   # ● 防具オプション [消費 MP 半分] の取得
  741.   #--------------------------------------------------------------------------
  742.   alias half_mp_cost_KGC_KGC_PassiveSkill half_mp_cost
  743.   def half_mp_cost
  744.     return (half_mp_cost_KGC_KGC_PassiveSkill ||
  745.       passive_effects[:half_mp_cost])
  746.   end
  747.   #--------------------------------------------------------------------------
  748.   # ● 防具オプション [取得経験値 2 倍] の取得
  749.   #--------------------------------------------------------------------------
  750.   alias double_exp_gain_KGC_PassiveSkill double_exp_gain
  751.   def double_exp_gain
  752.     return (double_exp_gain_KGC_PassiveSkill ||
  753.       passive_effects[:double_exp_gain])
  754.   end
  755.   #--------------------------------------------------------------------------
  756.   # ● スキルを覚える
  757.   #     skill_id : スキル ID
  758.   #--------------------------------------------------------------------------
  759.   alias learn_skill_KGC_PassiveSkill learn_skill
  760.   def learn_skill(skill_id)
  761.     learn_skill_KGC_PassiveSkill(skill_id)

  762.     restore_passive_rev
  763.   end
  764.   #--------------------------------------------------------------------------
  765.   # ● スキルを忘れる
  766.   #     skill_id : スキル ID
  767.   #--------------------------------------------------------------------------
  768.   alias forget_skill_KGC_PassiveSkill forget_skill
  769.   def forget_skill(skill_id)
  770.     forget_skill_KGC_PassiveSkill(skill_id)

  771.     restore_passive_rev
  772.   end

  773. if $imported["ReproduceFunctions"]

  774.   #--------------------------------------------------------------------------
  775.   # ○ オートステートの配列を取得
  776.   #     id_only : ID のみを取得
  777.   #--------------------------------------------------------------------------
  778.   alias auto_states_KGC_PassiveSkill auto_states
  779.   def auto_states(id_only = false)
  780.     result = auto_states_KGC_PassiveSkill(id_only)

  781.     passive_arrays[:auto_state].each { |i|
  782.       result << (id_only ? i : $data_states[i])
  783.     }
  784.     result.uniq!
  785.     return result
  786.   end
  787.   #--------------------------------------------------------------------------
  788.   # ○ 装備オプション [全体攻撃] の取得
  789.   #--------------------------------------------------------------------------
  790.   alias whole_attack_KGC_PassiveSkill whole_attack
  791.   def whole_attack
  792.     return (whole_attack_KGC_PassiveSkill || passive_effects[:whole_attack])
  793.   end
  794.   #--------------------------------------------------------------------------
  795.   # ○ 装備オプション [回避無視] の取得
  796.   #--------------------------------------------------------------------------
  797.   alias ignore_eva_KGC_PassiveSkill ignore_eva
  798.   def ignore_eva
  799.     return (ignore_eva_KGC_PassiveSkill || passive_effects[:ignore_eva])
  800.   end

  801. end  # <-- if $imported["ReproduceFunctions"]

  802. if $imported["AddEquipmentOptions"]

  803.   #--------------------------------------------------------------------------
  804.   # ○ 攻撃回数の取得
  805.   #--------------------------------------------------------------------------
  806.   alias multi_attack_count_KGC_PassiveSkill multi_attack_count
  807.   def multi_attack_count
  808.     n = multi_attack_count_KGC_PassiveSkill
  809.     return [ n, passive_effects[:multi_attack_count] ].max
  810.   end

  811. end  # <-- if $imported["AddEquipmentOptions"]

  812. end  # <-- class

  813. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  814. #==============================================================================
  815. # ■ Window_EquipItem
  816. #==============================================================================

  817. class Window_EquipItem < Window_Item
  818.   #--------------------------------------------------------------------------
  819.   # ● オブジェクト初期化
  820.   #     x          : ウィンドウの X 座標
  821.   #     y          : ウィンドウの Y 座標
  822.   #     width      : ウィンドウの幅
  823.   #     height     : ウィンドウの高さ
  824.   #     actor      : アクター
  825.   #     equip_type : 装備部位 (0~4)
  826.   #--------------------------------------------------------------------------
  827.   unless private_method_defined?(:initialize_KGC_PassiveSkill)
  828.     alias initialize_KGC_PassiveSkill initialize
  829.   end
  830.   def initialize(x, y, width, height, actor, equip_type)
  831.     @original_equip_type = equip_type

  832.     initialize_KGC_PassiveSkill(x, y, width, height, actor, equip_type)
  833.   end
  834.   #--------------------------------------------------------------------------
  835.   # ● リフレッシュ
  836.   #--------------------------------------------------------------------------
  837.   unless method_defined?(:refresh_KGC_PassiveSkill)
  838.     alias refresh_KGC_PassiveSkill refresh
  839.   end
  840.   def refresh
  841.     if @original_equip_type == 1
  842.       @equip_type = (@actor.two_swords_style ? 0 : 1)
  843.     end

  844.     refresh_KGC_PassiveSkill
  845.   end
  846. end

  847. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  848. #==============================================================================
  849. # ■ Scene_File
  850. #==============================================================================

  851. class Scene_File < Scene_Base
  852.   #--------------------------------------------------------------------------
  853.   # ● セーブデータの読み込み
  854.   #     file : 読み込み用ファイルオブジェクト (オープン済み)
  855.   #--------------------------------------------------------------------------
  856.   alias read_save_data_KGC_PassiveSkill read_save_data
  857.   def read_save_data(file)
  858.     read_save_data_KGC_PassiveSkill(file)

  859.     KGC::Commands.restore_passive_rev
  860.     Graphics.frame_reset
  861.   end
  862. end
复制代码
【RPG MAKER MZ 】游戏制作新手群:185916404
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 22:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表