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

Project1

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

[已经解决] 关于增加最大HP的状态

[复制链接]

Lv1.梦旅人

梦石
0
星屑
48
在线时间
2459 小时
注册时间
2011-12-18
帖子
1484
跳转到指定楼层
1
发表于 2012-6-13 11:09:56 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
怎么做一个状态,在该状态下角色的最大HP增加30%?
这是一个深不见底的坑,这是一个广袤无边的坑,我才刚刚放上了一抔泥土……

《六道·陈国篇》开坑了……↓点我

Lv1.梦旅人

梦石
0
星屑
50
在线时间
181 小时
注册时间
2010-7-20
帖子
347
4
发表于 2012-6-13 23:25:43 | 只看该作者
RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 200x/XP 機能再現 - KGC_ReproduceFunctions ◆ VX ◆
  3. #_/    ◇ Last update : 2009/01/02 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  200x/XP の機能を再現します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  7.  
  8. #==============================================================================
  9. # ★ カスタマイズ項目 - Customize BEGIN ★
  10. #==============================================================================
  11.  
  12. module KGC
  13. module ReproduceFunctions
  14.   # ◆ MP 消費武器使用時、消費した MP を表示する
  15.   SHOW_WEAPON_MP_COST_ON_ATTACK = true
  16.  
  17.   # ◆ 「武器属性」と見なす属性の範囲
  18.   #  この属性を持つスキルは、同じ属性を持つ武器を装備していないと
  19.   #  使用できなくなります。
  20.   #   ※素手は 1(格闘)扱いです。
  21.   #  範囲オブジェクト(1..6 など)または整数の配列で指定します。
  22.   WEAPON_ELEMENTS = []
  23.   # [1..6] は [1, 2, 3, 4, 5, 6] と書いてもOK。
  24.   # [1..4, 5, 6] のように、両方が混ざってもOK。
  25. end
  26. end
  27.  
  28. #==============================================================================
  29. # ☆ カスタマイズ項目終了 - Customize END ☆
  30. #==============================================================================
  31.  
  32. $imported = {} if $imported == nil
  33. $imported["ReproduceFunctions"] = true
  34.  
  35. module KGC::ReproduceFunctions
  36.   #--------------------------------------------------------------------------
  37.   # ○ 武器属性を整数配列に変換
  38.   #--------------------------------------------------------------------------
  39.   def self.create_weapon_element_list
  40.     result = []
  41.     WEAPON_ELEMENTS.each { |e|
  42.       if e.is_a?(Range)
  43.         result |= e.to_a
  44.       elsif e.is_a?(Integer)
  45.         result |= [e]
  46.       end
  47.     }
  48.     return result.sort
  49.   end
  50.  
  51.   # 武器属性配列
  52.   WEAPON_ELEMENT_ID_LIST = create_weapon_element_list
  53.  
  54.   # 正規表現を定義
  55.   module Regexp
  56.     # ベースアイテム
  57.     module BaseItem
  58.       # オートステート
  59.       AUTO_STATE = /<(?:AUTO_STATE|オートステート)\s*(\d+(?:\s*,\s*\d+)*)>/i
  60.       # 全体攻撃
  61.       WHOLE_ATTACK = /<(?:WHOLE_ATTACK|全体攻撃)>/i
  62.       # 回避率無視
  63.       IGNORE_EVA = /<(?:IGNORE_EVA|回避率無視)>/i
  64.       # 消費MP
  65.       MP_COST = /<(?:MP_COST|消費MP)\s*([\-]?\d+)>/i
  66.       # クリティカル率
  67.       CRITICAL = /<(?:CRITICAL|クリティカル率)\s*(\-?\d+)>/i
  68.     end
  69.  
  70.     # アイテム
  71.     module Item
  72.       # アイテム使用回数
  73.       MULTI_USABLE = /<(?:MULTI_USABLE|使用回数)\s*(\d+)>/i
  74.       # スキル発動アイテム
  75.       EXEC_SKILL = /<(?:EXEC_SKILL|スキル発動)\s*(\d+)>/i
  76.     end
  77.  
  78.     # エネミー
  79.     module Enemy
  80.       # 半透明
  81.       TRANSLUCENT = /<(?:TRANSLUCENT|半透明)>/i
  82.       # クリティカル率
  83.       CRITICAL = /<(?:CRITICAL|クリティカル率)\s*(\d+)>/i
  84.     end
  85.  
  86.     # ステート
  87.     module State
  88.       # パラメータ名
  89.       PARAMETER_NAME = {
  90.         "maxhp"=>"MAXHP_RATE|最大HP",
  91.         "maxmp"=>"MAXMP_RATE|最大MP"
  92.       }
  93.       # 打撃関係度で封印 (日本語)
  94.       SEAL_ATK_F_JP = /<打撃関係度\s*(\d+)\s*以上封印>/
  95.       # 打撃関係度で封印 (英語)
  96.       SEAL_ATK_F_EN = /<SEAL_ATK_F\s*(\d+)>/i
  97.       # 精神関係度で封印 (日本語)
  98.       SEAL_SPI_F_JP = /<精神関係度\s*(\d+)\s*以上封印>/
  99.       # 精神関係度で封印 (英語)
  100.       SEAL_SPI_F_EN = /<SEAL_SPI_F\s*(\d+)>/i
  101.       # 付加ステート
  102.       PLUS_STATE = /<(?:PLUS_STATE|付加ステート)\s*(\d+(?:\s*,\s*\d+)*)>/i
  103.     end
  104.   end
  105. end
  106.  
  107. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  108.  
  109. #==============================================================================
  110. # ■ RPG::BaseItem
  111. #==============================================================================
  112.  
  113. class RPG::BaseItem
  114.   #--------------------------------------------------------------------------
  115.   # ○ 再現機能のキャッシュ生成
  116.   #--------------------------------------------------------------------------
  117.   def create_reproduce_functions_cache
  118.     @__whole_attack = false
  119.     @__ignore_eva = false
  120.     @__mp_cost = 0
  121.     @__cri = 0
  122.  
  123.     self.note.each_line { |line|
  124.       case line
  125.       when KGC::ReproduceFunctions::Regexp::BaseItem::WHOLE_ATTACK
  126.         # 全体攻撃
  127.         @__whole_attack = true
  128.       when KGC::ReproduceFunctions::Regexp::BaseItem::IGNORE_EVA
  129.         # 回避率無視
  130.         @__ignore_eva = true
  131.       when KGC::ReproduceFunctions::Regexp::BaseItem::MP_COST
  132.         # 通常攻撃消費 MP
  133.         @__mp_cost += $1.to_i
  134.       when KGC::ReproduceFunctions::Regexp::BaseItem::CRITICAL
  135.         # クリティカル修正
  136.         @__cri += $1.to_i
  137.       end
  138.     }
  139.  
  140.     create_auto_state_cache
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ○ オートステートのキャッシュ生成
  144.   #--------------------------------------------------------------------------
  145.   def create_auto_state_cache
  146.     # ID のキャッシュ生成
  147.     @__auto_state_ids = []
  148.     @__auto_state_ids_battle = []
  149.     self.note.each_line { |line|
  150.       next unless line =~ KGC::ReproduceFunctions::Regexp::BaseItem::AUTO_STATE
  151.       $1.scan(/\d+/).each { |num|
  152.         if (state = $data_states[num.to_i]) != nil
  153.           @__auto_state_ids_battle << state.id
  154.           unless state.battle_only
  155.             @__auto_state_ids << state.id
  156.           end
  157.         end
  158.       }
  159.     }
  160.  
  161.     # オブジェクトのキャッシュ作成
  162.     @__auto_states = []
  163.     @__auto_state_ids.each { |i|
  164.       @__auto_states << $data_states[i]
  165.     }
  166.     @__auto_states_battle = []
  167.     @__auto_state_ids_battle.each { |i|
  168.       @__auto_states_battle << $data_states[i]
  169.     }
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ○ 全体攻撃判定
  173.   #--------------------------------------------------------------------------
  174.   def whole_attack
  175.     create_reproduce_functions_cache if @__whole_attack == nil
  176.     return @__whole_attack
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ○ 回避無視判定
  180.   #--------------------------------------------------------------------------
  181.   def ignore_eva
  182.     create_reproduce_functions_cache if @__ignore_eva == nil
  183.     return @__ignore_eva
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ○ 通常攻撃消費 MP
  187.   #--------------------------------------------------------------------------
  188.   def mp_cost
  189.     create_reproduce_functions_cache if @__mp_cost == nil
  190.     return @__mp_cost
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ○ クリティカル修正
  194.   #--------------------------------------------------------------------------
  195.   def cri
  196.     create_reproduce_functions_cache if @__cri == nil
  197.     return @__cri
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ○ オートステート ID
  201.   #--------------------------------------------------------------------------
  202.   def auto_state_ids
  203.     return ($game_temp.in_battle ? auto_state_ids_battle : auto_state_ids_always)
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ○ オートステート ID (常時)
  207.   #--------------------------------------------------------------------------
  208.   def auto_state_ids_always
  209.     create_reproduce_functions_cache if @__auto_state_ids == nil
  210.     return @__auto_state_ids
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ○ オートステート ID (戦闘時)
  214.   #--------------------------------------------------------------------------
  215.   def auto_state_ids_battle
  216.     create_reproduce_functions_cache if @__auto_state_ids_battle == nil
  217.     return @__auto_state_ids_battle
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ○ オートステート
  221.   #--------------------------------------------------------------------------
  222.   def auto_states
  223.     return ($game_temp.in_battle ? auto_states_battle : auto_states_always)
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ○ オートステート (常時)
  227.   #--------------------------------------------------------------------------
  228.   def auto_states_always
  229.     create_reproduce_functions_cache if @__auto_states == nil
  230.     return @__auto_states
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ○ オートステート (戦闘時)
  234.   #--------------------------------------------------------------------------
  235.   def auto_states_battle
  236.     create_reproduce_functions_cache if @__auto_states_battle == nil
  237.     return @__auto_states_battle
  238.   end
  239. end
  240.  
  241. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  242.  
  243. #==============================================================================
  244. # ■ RPG::Item
  245. #==============================================================================
  246.  
  247. class RPG::Item < RPG::UsableItem
  248.   #--------------------------------------------------------------------------
  249.   # ○ 再現機能のキャッシュ生成
  250.   #--------------------------------------------------------------------------
  251.   def create_reproduce_functions_cache
  252.     super
  253.     @__usable_count = 1
  254.     @__skill_id = 0
  255.  
  256.     self.note.each_line { |line|
  257.       case line
  258.       when KGC::ReproduceFunctions::Regexp::Item::MULTI_USABLE
  259.         # 使用可能回数
  260.         @__usable_count = $1.to_i
  261.       when KGC::ReproduceFunctions::Regexp::Item::EXEC_SKILL
  262.         # 発動スキル ID
  263.         @__skill_id = $1.to_i
  264.       end
  265.     }
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● アニメーション ID
  269.   #--------------------------------------------------------------------------
  270.   def animation_id
  271.     if exec_skill?
  272.       return $data_skills[skill_id].animation_id
  273.     else
  274.       return @animation_id
  275.     end
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ○ 使用可能回数
  279.   #--------------------------------------------------------------------------
  280.   def usable_count
  281.     create_reproduce_functions_cache if @__usable_count == nil
  282.     return @__usable_count
  283.   end
  284.   #--------------------------------------------------------------------------
  285.   # ○ スキル発動判定
  286.   #--------------------------------------------------------------------------
  287.   def exec_skill?
  288.     return (skill_id > 0)
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ○ 発動スキル ID
  292.   #--------------------------------------------------------------------------
  293.   def skill_id
  294.     create_reproduce_functions_cache if @__skill_id == nil
  295.     return @__skill_id
  296.   end
  297. end
  298.  
  299. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  300.  
  301. #==============================================================================
  302. # ■ RPG::Skill
  303. #==============================================================================
  304.  
  305. class RPG::Skill < RPG::UsableItem
  306.   #--------------------------------------------------------------------------
  307.   # ○ 再現機能のキャッシュ生成
  308.   #--------------------------------------------------------------------------
  309.   def create_reproduce_functions_cache
  310.     super
  311.  
  312.     @__weapon_element_set =
  313.       self.element_set & KGC::ReproduceFunctions::WEAPON_ELEMENT_ID_LIST
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ○ 使用時に必要な武器属性を取得
  317.   #--------------------------------------------------------------------------
  318.   def weapon_element_set
  319.     create_reproduce_functions_cache if @__weapon_element_set == nil
  320.     return @__weapon_element_set
  321.   end
  322. end
  323.  
  324. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  325.  
  326. #==============================================================================
  327. # ■ RPG::Enemy
  328. #==============================================================================
  329.  
  330. class RPG::Enemy
  331.   #--------------------------------------------------------------------------
  332.   # ○ 再現機能のキャッシュ生成
  333.   #--------------------------------------------------------------------------
  334.   def create_reproduce_functions_cache
  335.     @__translucent = false
  336.     @__cri = 0
  337.  
  338.     self.note.each_line { |line|
  339.       case line
  340.       when KGC::ReproduceFunctions::Regexp::Enemy::TRANSLUCENT
  341.         # 半透明
  342.         @__translucent = true
  343.       when KGC::ReproduceFunctions::Regexp::Enemy::CRITICAL
  344.         # クリティカル修正
  345.         @__cri += $1.to_i
  346.       end
  347.     }
  348.   end
  349.   #--------------------------------------------------------------------------
  350.   # ○ 半透明
  351.   #--------------------------------------------------------------------------
  352.   def translucent?
  353.     create_reproduce_functions_cache if @__translucent == nil
  354.     return @__translucent
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # ○ クリティカル修正
  358.   #--------------------------------------------------------------------------
  359.   def cri
  360.     create_reproduce_functions_cache if @__cri == nil
  361.     return @__cri
  362.   end
  363. end
  364.  
  365. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  366.  
  367. #==============================================================================
  368. # ■ RPG::State
  369. #==============================================================================
  370.  
  371. class RPG::State
  372.   #--------------------------------------------------------------------------
  373.   # ○ 再現機能のキャッシュ生成
  374.   #--------------------------------------------------------------------------
  375.   def create_reproduce_functions_cache
  376.     @__seal_atk_f = 999
  377.     @__seal_spi_f = 999
  378.     @__plus_state_set = []
  379.  
  380.     self.note.each_line { |line|
  381.       case line
  382.       when KGC::ReproduceFunctions::Regexp::State::SEAL_ATK_F_JP,
  383.            KGC::ReproduceFunctions::Regexp::State::SEAL_ATK_F_EN
  384.         # 封印するスキルの打撃関係度
  385.         @__seal_atk_f = $1.to_i
  386.       when KGC::ReproduceFunctions::Regexp::State::SEAL_SPI_F_JP,
  387.            KGC::ReproduceFunctions::Regexp::State::SEAL_SPI_F_EN
  388.         # 封印するスキルの精神関係度
  389.         @__seal_spi_f = $1.to_i
  390.       when KGC::ReproduceFunctions::Regexp::State::PLUS_STATE
  391.         # 付加ステート
  392.         $1.scan(/\d+/).each { |num|
  393.           if (state = $data_states[num.to_i]) != nil
  394.             @__plus_state_set << state.id
  395.           end
  396.         }
  397.       end
  398.     }
  399.  
  400.     create_parameter_rate_cache
  401.   end
  402.   #--------------------------------------------------------------------------
  403.   # ○ パラメータ修正値のキャッシュ生成
  404.   #--------------------------------------------------------------------------
  405.   def create_parameter_rate_cache
  406.     @__parameter_rate = {}
  407.     # 初期化
  408.     KGC::ReproduceFunctions::Regexp::State::PARAMETER_NAME.each_key { |k|
  409.       @__parameter_rate[k] = 100
  410.     }
  411.     # メモ反映
  412.     self.note.each_line { |line|
  413.       KGC::ReproduceFunctions::Regexp::State::PARAMETER_NAME.each { |k, v|
  414.         if line =~ /<(?:#{v})[ ]*(\d+)[%%]>/i
  415.           @__parameter_rate[k] = @__parameter_rate[k] * $1.to_i / 100
  416.           break
  417.         end
  418.       }
  419.     }
  420.   end
  421.   #--------------------------------------------------------------------------
  422.   # ○ MaxHP 修正
  423.   #--------------------------------------------------------------------------
  424.   def maxhp_rate
  425.     create_reproduce_functions_cache if @__parameter_rate == nil
  426.     return @__parameter_rate["maxhp"]
  427.   end
  428.   #--------------------------------------------------------------------------
  429.   # ○ MaxMP 修正
  430.   #--------------------------------------------------------------------------
  431.   def maxmp_rate
  432.     create_reproduce_functions_cache if @__parameter_rate == nil
  433.     return @__parameter_rate["maxmp"]
  434.   end
  435.   #--------------------------------------------------------------------------
  436.   # ○ 封印するスキルの打撃関係度
  437.   #--------------------------------------------------------------------------
  438.   def seal_atk_f
  439.     create_reproduce_functions_cache if @__seal_atk_f == nil
  440.     return @__seal_atk_f
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # ○ 封印するスキルの精神関係度
  444.   #--------------------------------------------------------------------------
  445.   def seal_spi_f
  446.     create_reproduce_functions_cache if @__seal_spi_f == nil
  447.     return @__seal_spi_f
  448.   end
  449.   #--------------------------------------------------------------------------
  450.   # ○ 付加ステート
  451.   #--------------------------------------------------------------------------
  452.   def plus_state_set
  453.     create_reproduce_functions_cache if @__plus_state_set == nil
  454.     return @__plus_state_set
  455.   end
  456. end
  457.  
  458. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  459.  
  460. #==============================================================================
  461. # ■ Game_Temp
  462. #==============================================================================
  463.  
  464. class Game_Temp
  465.   #--------------------------------------------------------------------------
  466.   # ● 公開インスタンス変数
  467.   #--------------------------------------------------------------------------
  468.   attr_accessor :exec_skill_on_item       # アイテムによるスキル発動フラグ
  469.   #--------------------------------------------------------------------------
  470.   # ● オブジェクト初期化
  471.   #--------------------------------------------------------------------------
  472.   alias initialize_KGC_ReproduceFunctions initialize
  473.   def initialize
  474.     initialize_KGC_ReproduceFunctions
  475.  
  476.     @exec_skill_on_item = false
  477.   end
  478. end
  479.  
  480. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  481.  
  482. #==============================================================================
  483. # ■ Game_Battler
  484. #==============================================================================
  485.  
  486. class Game_Battler
  487.   #--------------------------------------------------------------------------
  488.   # ● 現在のステートをオブジェクトの配列で取得
  489.   #--------------------------------------------------------------------------
  490.   alias states_KGC_ReproduceFunctions states
  491.   def states
  492.     result = states_KGC_ReproduceFunctions + auto_states
  493.     result.sort! { |a, b| b.priority <=> a.priority }
  494.     return result
  495.   end
  496.   #--------------------------------------------------------------------------
  497.   # ● MaxHP の取得
  498.   #--------------------------------------------------------------------------
  499.   alias maxhp_KGC_ReproduceFunctions maxhp
  500.   def maxhp
  501.     n = maxhp_KGC_ReproduceFunctions
  502.     states.each { |state| n *= state.maxhp_rate / 100.0 }
  503.     return [[Integer(n), 1].max, maxhp_limit].min
  504.   end
  505.   #--------------------------------------------------------------------------
  506.   # ● MaxMP の取得
  507.   #--------------------------------------------------------------------------
  508.   alias maxmp_KGC_ReproduceFunctions maxmp
  509.   def maxmp
  510.     n = maxmp_KGC_ReproduceFunctions
  511.     states.each { |state| n *= state.maxmp_rate / 100.0 }
  512.     limit = (defined?(maxmp_limit) ? maxmp_limit : 9999)
  513.     return [[Integer(n), 0].max, limit].min
  514.   end
  515.   #--------------------------------------------------------------------------
  516.   # ● HP の取得
  517.   #--------------------------------------------------------------------------
  518.   alias hp_KGC_ReproduceFunctions_Battler hp
  519.   def hp
  520.     @hp = maxhp if @hp > maxhp
  521.     return hp_KGC_ReproduceFunctions_Battler
  522.   end
  523.   #--------------------------------------------------------------------------
  524.   # ● MP の取得
  525.   #--------------------------------------------------------------------------
  526.   alias mp_KGC_ReproduceFunctions_Battler mp
  527.   def mp
  528.     @mp = maxmp if @mp > maxmp
  529.     return mp_KGC_ReproduceFunctions_Battler
  530.   end
  531.   #--------------------------------------------------------------------------
  532.   # ○ オートステートの ID を取得
  533.   #--------------------------------------------------------------------------
  534.   def auto_state_ids
  535.     return auto_states(true)
  536.   end
  537.   #--------------------------------------------------------------------------
  538.   # ○ オートステートの配列を取得
  539.   #     id_only : ID のみを取得
  540.   #--------------------------------------------------------------------------
  541.   def auto_states(id_only = false)
  542.     return []
  543.   end
  544.   #--------------------------------------------------------------------------
  545.   # ● ステートの検査
  546.   #     state_id : ステート ID
  547.   #    該当するステートが付加されていれば true を返す。
  548.   #--------------------------------------------------------------------------
  549.   alias state_KGC_ReproduceFunctions? state?
  550.   def state?(state_id)
  551.     return (state_KGC_ReproduceFunctions?(state_id) || auto_state?(state_id))
  552.   end
  553.   #--------------------------------------------------------------------------
  554.   # ● ステートの付加
  555.   #     state_id : ステート ID
  556.   #--------------------------------------------------------------------------
  557.   alias add_state_KGC_ReproduceFunctions add_state
  558.   def add_state(state_id)
  559.     last_states = @states.dup
  560.  
  561.     add_state_KGC_ReproduceFunctions(state_id)
  562.  
  563.     if (@states - last_states).include?(state_id)  # ステートが付加された場合
  564.       state = $data_states[state_id]
  565.       # [付加するステート] を適用
  566.       state.plus_state_set.each { |i|
  567.         add_state(i)
  568.       }
  569.     end
  570.   end
  571.   #--------------------------------------------------------------------------
  572.   # ○ オートステートの検査
  573.   #     state_id : ステート ID
  574.   #    該当するステートが付加されていれば true を返す。
  575.   #--------------------------------------------------------------------------
  576.   def auto_state?(state_id)
  577.     return auto_state_ids.include?(state_id)
  578.   end
  579.   #--------------------------------------------------------------------------
  580.   # ● ステートの解除
  581.   #     state_id : ステート ID
  582.   #--------------------------------------------------------------------------
  583.   alias remove_state_KGC_ReproduceFunctions remove_state
  584.   def remove_state(state_id)
  585.     if auto_state?(state_id)  # オートステートは解除しない
  586.       return
  587.     end
  588.  
  589.     remove_state_KGC_ReproduceFunctions(state_id)
  590.   end
  591.   #--------------------------------------------------------------------------
  592.   # ○ 半透明化判定
  593.   #--------------------------------------------------------------------------
  594.   def translucent?
  595.     # エネミーの場合は Game_Enemy で再定義
  596.     return false
  597.   end
  598.   #--------------------------------------------------------------------------
  599.   # ○ 装備オプション [全体攻撃] の取得
  600.   #--------------------------------------------------------------------------
  601.   def whole_attack
  602.     return false
  603.   end
  604.   #--------------------------------------------------------------------------
  605.   # ○ 装備オプション [回避無視] の取得
  606.   #--------------------------------------------------------------------------
  607.   def ignore_eva
  608.     return false
  609.   end
  610.   #--------------------------------------------------------------------------
  611.   # ○ MP ダメージ加算
  612.   #     value : 加算する値
  613.   #--------------------------------------------------------------------------
  614.   def add_mp_damage(value)
  615.     @mp_damage += value
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ○ 通常攻撃の消費 MP 計算
  619.   #--------------------------------------------------------------------------
  620.   def calc_attack_mp_cost
  621.     return 0
  622.   end
  623.   #--------------------------------------------------------------------------
  624.   # ● スキルの使用可能判定
  625.   #     skill : スキル
  626.   #--------------------------------------------------------------------------
  627.   alias skill_can_use_KGC_ReproduceFunctions? skill_can_use?
  628.   def skill_can_use?(skill)
  629.     return false unless skill.is_a?(RPG::Skill)
  630.     unless $imported["CooperationSkill"] && $game_temp.judging_cooperation_skill
  631.       return false if skill_seal?(skill)
  632.       return false unless skill_satisfied_weapon_element?(skill)
  633.     end
  634.  
  635.     return skill_can_use_KGC_ReproduceFunctions?(skill)
  636.   end
  637.   #--------------------------------------------------------------------------
  638.   # ○ スキル封印判定
  639.   #--------------------------------------------------------------------------
  640.   def skill_seal?(skill)
  641.     return (seal_atk_f <= skill.atk_f || seal_spi_f <= skill.spi_f)
  642.   end
  643.   #--------------------------------------------------------------------------
  644.   # ○ 封印する打撃関係度を取得
  645.   #--------------------------------------------------------------------------
  646.   def seal_atk_f
  647.     n = 999
  648.     states.each { |state| n = [n, state.seal_atk_f].min }
  649.     return n
  650.   end
  651.   #--------------------------------------------------------------------------
  652.   # ○ 封印する精神関係度を取得
  653.   #--------------------------------------------------------------------------
  654.   def seal_spi_f
  655.     n = 999
  656.     states.each { |state| n = [n, state.seal_spi_f].min }
  657.     return n
  658.   end
  659.   #--------------------------------------------------------------------------
  660.   # ○ 必要な武器属性を満たしているか判定
  661.   #--------------------------------------------------------------------------
  662.   def skill_satisfied_weapon_element?(skill)
  663.     return true
  664.   end
  665.   #--------------------------------------------------------------------------
  666.   # ● 最終回避率の計算
  667.   #     user : 攻撃者、スキルまたはアイテムの使用者
  668.   #     obj  : スキルまたはアイテム (通常攻撃の場合は nil)
  669.   #--------------------------------------------------------------------------
  670.   alias calc_eva_KGC_ReproduceFunctions calc_eva
  671.   def calc_eva(user, obj = nil)
  672.     eva = calc_eva_KGC_ReproduceFunctions(user, obj)
  673.  
  674.     if obj == nil && user.ignore_eva  # 通常攻撃かつ回避無視の場合
  675.       eva = 0
  676.     end
  677.     return eva
  678.   end
  679.   #--------------------------------------------------------------------------
  680.   # ● アイテムの効果適用
  681.   #     user : アイテムの使用者
  682.   #     item : アイテム
  683.   #--------------------------------------------------------------------------
  684.   alias item_effect_KGC_ReproduceFunctions item_effect
  685.   def item_effect(user, item)
  686.     # スキル発動判定
  687.     if item.exec_skill?
  688.       $game_temp.exec_skill_on_item = true
  689.       skill_effect(user, $data_skills[item.skill_id])
  690.       $game_temp.exec_skill_on_item = false
  691.     else
  692.       item_effect_KGC_ReproduceFunctions(user, item)
  693.     end
  694.   end
  695. end
  696.  
  697. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  698.  
  699. #==============================================================================
  700. # ■ Game_BattleAction
  701. #==============================================================================
  702.  
  703. class Game_BattleAction
  704.   #--------------------------------------------------------------------------
  705.   # ● 通常攻撃のターゲット作成
  706.   #--------------------------------------------------------------------------
  707.   alias make_attack_targets_KGC_ReproduceFunctions make_attack_targets
  708.   def make_attack_targets
  709.     unless battler.whole_attack  # 全体攻撃でない
  710.       return make_attack_targets_KGC_ReproduceFunctions
  711.     end
  712.  
  713.     targets = []
  714.     if battler.confusion?
  715.       targets += friends_unit.existing_members
  716.     else
  717.       targets += opponents_unit.existing_members
  718.     end
  719.     if battler.dual_attack      # 連続攻撃
  720.       targets += targets
  721.     end
  722.     return targets.compact
  723.   end
  724. end
  725.  
  726. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  727.  
  728. #==============================================================================
  729. # ■ Game_Actor
  730. #==============================================================================
  731.  
  732. class Game_Actor < Game_Battler
  733.   #--------------------------------------------------------------------------
  734.   # ● クリティカル率の取得
  735.   #--------------------------------------------------------------------------
  736.   alias cri_KGC_ReproduceFunctions cri
  737.   def cri
  738.     n = cri_KGC_ReproduceFunctions
  739.  
  740.     equips.compact.each { |item| n += item.cri }
  741.     return n
  742.   end
  743.   #--------------------------------------------------------------------------
  744.   # ○ オートステートの配列を取得
  745.   #     id_only : ID のみを取得
  746.   #--------------------------------------------------------------------------
  747.   def auto_states(id_only = false)
  748.     result = []
  749.     equips.compact.each { |item|
  750.       result |= (id_only ? item.auto_state_ids : item.auto_states)
  751.     }
  752.     return result
  753.   end
  754.   #--------------------------------------------------------------------------
  755.   # ○ 装備オプション [全体攻撃] の取得
  756.   #--------------------------------------------------------------------------
  757.   def whole_attack
  758.     equips.compact.each { |item|
  759.       return true if item.whole_attack
  760.     }
  761.     return false
  762.   end
  763.   #--------------------------------------------------------------------------
  764.   # ○ 装備オプション [回避無視] の取得
  765.   #--------------------------------------------------------------------------
  766.   def ignore_eva
  767.     equips.compact.each { |item|
  768.       return true if item.ignore_eva
  769.     }
  770.     return false
  771.   end
  772.   #--------------------------------------------------------------------------
  773.   # ○ 通常攻撃の消費 MP 計算
  774.   #--------------------------------------------------------------------------
  775.   def calc_attack_mp_cost
  776.     n = 0
  777.     equips.compact.each { |item|
  778.       n += item.mp_cost
  779.     }
  780.     return n
  781.   end
  782.   #--------------------------------------------------------------------------
  783.   # ○ 必要な武器属性を満たしているか判定
  784.   #--------------------------------------------------------------------------
  785.   def skill_satisfied_weapon_element?(skill)
  786.     elements = skill.weapon_element_set
  787.     return (self.element_set & elements) == elements
  788.   end
  789. end
  790.  
  791. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  792.  
  793. #==============================================================================
  794. # ■ Game_Enemy
  795. #==============================================================================
  796.  
  797. class Game_Enemy < Game_Battler
  798.   #--------------------------------------------------------------------------
  799.   # ○ 半透明化判定
  800.   #--------------------------------------------------------------------------
  801.   def translucent?
  802.     return enemy.translucent?
  803.   end
  804.   #--------------------------------------------------------------------------
  805.   # ● クリティカル率の取得
  806.   #--------------------------------------------------------------------------
  807.   alias cri_KGC_ReproduceFunctions cri
  808.   def cri
  809.     n = cri_KGC_ReproduceFunctions
  810.     if enemy.has_critical && enemy.cri != 0
  811.       n += enemy.cri - 10
  812.     end
  813.     return n
  814.   end
  815. end
  816.  
  817. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  818.  
  819. #==============================================================================
  820. # ■ Game_Party
  821. #==============================================================================
  822.  
  823. class Game_Party < Game_Unit
  824.   #--------------------------------------------------------------------------
  825.   # ● オブジェクト初期化
  826.   #--------------------------------------------------------------------------
  827.   alias initialize_KGC_ReproduceFunctions initialize
  828.   def initialize
  829.     initialize_KGC_ReproduceFunctions
  830.  
  831.     @item_use_count = {}  # 所持品使用回数ハッシュ (アイテム ID)
  832.   end
  833.   #--------------------------------------------------------------------------
  834.   # ● アイテムの減少
  835.   #     item          : アイテム
  836.   #     n             : 個数
  837.   #     include_equip : 装備品も含める
  838.   #--------------------------------------------------------------------------
  839.   alias lose_item_KGC_ReproduceFunctions lose_item
  840.   def lose_item(item, n, include_equip = false)
  841.     lose_item_KGC_ReproduceFunctions(item, n, include_equip)
  842.  
  843.     # アイテムが無くなったら使用回数をリセット
  844.     if item.is_a?(RPG::Item) && item.consumable && item_number(item) == 0
  845.       @item_use_count[item.id] = 0
  846.     end
  847.   end
  848.   #--------------------------------------------------------------------------
  849.   # ● アイテムの消耗
  850.   #     item : アイテム
  851.   #--------------------------------------------------------------------------
  852.   alias consume_item_KGC_ReproduceFunctions consume_item
  853.   def consume_item(item)
  854.     if item.is_a?(RPG::Item) && item.consumable
  855.       update_use_count(item)
  856.  
  857.       # 使用回数が 0 の場合のみ消耗
  858.       if @item_use_count[item.id] == 0
  859.         consume_item_KGC_ReproduceFunctions(item)
  860.       end
  861.     else
  862.       consume_item_KGC_ReproduceFunctions(item)
  863.     end
  864.   end
  865.   #--------------------------------------------------------------------------
  866.   # ○ 使用回数の更新
  867.   #     item : アイテム
  868.   #    指定アイテムの使用回数を 1 増やす。
  869.   #    使用後に消耗する場合は、使用回数を 0 にする。
  870.   #--------------------------------------------------------------------------
  871.   def update_use_count(item)
  872.     if @item_use_count == nil
  873.       @item_use_count = {}
  874.     end
  875.  
  876.     unless @item_use_count.has_key?(item.id)
  877.       @item_use_count[item.id] = 0
  878.     end
  879.     @item_use_count[item.id] += 1
  880.     # 使用可能回数に達したら、使用回数を 0 にする
  881.     if @item_use_count[item.id] >= item.usable_count
  882.       @item_use_count[item.id] = 0
  883.     end
  884.   end
  885. end
  886.  
  887. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  888.  
  889. #==============================================================================
  890. # ■ Sprite_Battler
  891. #==============================================================================
  892.  
  893. class Sprite_Battler < Sprite_Base
  894.   #--------------------------------------------------------------------------
  895.   # ● エフェクトの更新
  896.   #--------------------------------------------------------------------------
  897.   alias update_effect_KGC_ReproduceFunctions update_effect
  898.   def update_effect
  899.     # エフェクト実行前に半透明化判定をしておく
  900.     trans_flag = (@effect_duration > 0 && @battler.translucent?)
  901.  
  902.     update_effect_KGC_ReproduceFunctions
  903.  
  904.     if trans_flag
  905.       self.opacity /= 2
  906.     end
  907.   end
  908. end
  909.  
  910. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  911.  
  912. #==============================================================================
  913. # ■ Scene_Battle
  914. #==============================================================================
  915.  
  916. class Scene_Battle < Scene_Base
  917.   #--------------------------------------------------------------------------
  918.   # ● 対象敵キャラ選択の開始
  919.   #--------------------------------------------------------------------------
  920.   alias start_target_enemy_selection_KGC_ReproduceFunctions start_target_enemy_selection
  921.   def start_target_enemy_selection
  922.     # 全体通常攻撃なら選択をスキップ
  923.     if @active_battler.action.kind == 0 &&
  924.         @active_battler.action.basic == 0 &&
  925.         @active_battler.whole_attack
  926.       next_actor
  927.       return
  928.     end
  929.  
  930.     start_target_enemy_selection_KGC_ReproduceFunctions
  931.   end
  932.   #--------------------------------------------------------------------------
  933.   # ● 戦闘行動の実行 : 攻撃
  934.   #--------------------------------------------------------------------------
  935.   alias execute_action_attack_KGC_ReproduceFunctions execute_action_attack
  936.   def execute_action_attack
  937.     execute_action_attack_KGC_ReproduceFunctions
  938.  
  939.     # 攻撃者の MP 消費
  940.     mp_cost = @active_battler.calc_attack_mp_cost
  941.     return if mp_cost == 0
  942.     @active_battler.mp -= mp_cost
  943.     if KGC::ReproduceFunctions::SHOW_WEAPON_MP_COST_ON_ATTACK
  944.       @active_battler.add_mp_damage(mp_cost)
  945.       display_mp_damage(@active_battler)
  946.     end
  947.   end
  948. end


在状态的备注中写入 <maxhp_rate 150%>  为增加最大HP的150%
回复

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
3
发表于 2012-6-13 18:47:22 | 只看该作者
本帖最后由 tommay 于 2012-6-13 20:37 编辑

Game_Battler里修改下面的方法:
  def maxhp
    maxhp = base_maxhp + @maxhp_plus
    maxhp = Integer(1.3 * maxhp) if state?(999)
    return [[maxhp, 1].max, maxhp_limit].min
  end

注:999号状态就是最大HP增加30%的状态(可更改序号)

点评

修改了,可是不行哦  发表于 2012-6-13 22:43
感谢楼上的点评,疏忽了抱歉。  发表于 2012-6-13 20:37
额……脚本第3行的maphp应该改成maxhp。  发表于 2012-6-13 20:36

评分

参与人数 1星屑 +160 收起 理由
Luciffer + 160 我很赞同

查看全部评分

http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
290 小时
注册时间
2012-6-8
帖子
109
2
发表于 2012-6-13 12:25:46 | 只看该作者
本帖最后由 UdlDruid 于 2012-6-13 12:28 编辑

好吧我没听懂。。。
原来VX不能弄成HP,MP上限的。。。
白弄刚才的帖子和截图了{:2_271:}
↓已经作废。。。

1.jpg (69.32 KB, 下载次数: 16)

1.jpg

2.jpg (71.95 KB, 下载次数: 17)

2.jpg

3.jpg (72.41 KB, 下载次数: 16)

3.jpg

评分

参与人数 1星屑 +100 收起 理由
Luciffer + 100 我很赞同

查看全部评分

冰龙龙我最喜欢了~~快快点击让他们更强壮吧
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-28 20:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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