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

Project1

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

[已经过期] 关于整合脚本的状态和怒气技能的脚本问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
94
在线时间
306 小时
注册时间
2008-3-2
帖子
164
跳转到指定楼层
1
发表于 2012-4-11 00:54:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 I爱幻想 于 2012-4-11 21:10 编辑

      我用了STR33g1_Battle Status  0.5 08/03/20  加上怒气技能脚本  可是怒气槽显示不出来 ,,
# 脚本
  脚本有用  就是怒气槽显示不出来。。。

我想让那前面像这样

求助各位大虾。。 有没有这样的整合  主要就是就是状态可以循环,,

有没单独的状态显示循环的脚本+怒气的, 不然多重状态显示不出来。

我用的整合范例地址 http://girlsoul.5d6d.com/thread-508-1-1.html  

想加入天空传说那个范例的怒气系统,, 就是怒气槽显示不出来  
下面是怒气脚本
  1. _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ オーバードライブ - KGC_OverDrive ◆ VX ◆
  3. #_/    ◇ Last update : 2008/08/24 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  専用のゲージを消費して使用するスキルを作成します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. #==============================================================================
  8. # ★ カスタマイズ項目 - Customize ★
  9. #==============================================================================

  10. module KGC
  11. module OverDrive
  12.   # ◆ ドライブゲージ最大値
  13.   #  普通はこのままでOK。微調整したい場合に変更。
  14.   GAUGE_MAX = 1000
  15.   # ◆ ドライブゲージ増加量
  16.   #  高いほどゲージが溜まりやすい。
  17.   #  マイナス値を指定すると減少。
  18.   #  「被ダメージ」は、受けたダメージの最大 HP に対する割合で増加量を算出。
  19.   #  (500 だと、最大 HP 相当のダメージで 500 溜まる)
  20.   GAIN_RATE = [
  21.      30,  # 攻撃
  22.     200,  # 被ダメージ
  23.       0,  # 胜利
  24.    -300,  # 逃走
  25.     100,  # 孤独
  26.      20,  # 行動
  27.     500,  # 瀕死
  28.      25,  # 防御
  29.   ]  # ← この ] は消さないこと!

  30.   # ◆ ゲージの初期本数
  31.   DEFAULT_GAUGE_NUMBER = 3

  32.   # ◆ アクターのデフォルトドライブタイプ
  33.   #   0..攻撃  1..被ダメージ  2..勝利  3..逃走  4..孤独  5..行動  6..瀕死
  34.   #   7..防御
  35.   DEFAULT_ACTOR_DRIVE_TYPE = [0,1,2,3,4,5,6]
  36.   # ◆ エネミーのデフォルトドライブタイプ
  37.   DEFAULT_ENEMY_DRIVE_TYPE = []

  38.   # ◆ ドライブゲージの開始色 (通常時)
  39.   #  数値  : \C[n] と同じ色。
  40.   #  Color : 指定した色。 ( Color.new(255, 128, 128) など )
  41.   GAUGE_NORMAL_START_COLOR = 14
  42.   # ◆ ドライブゲージの終了色 (通常時)
  43.   GAUGE_NORMAL_END_COLOR   = 6
  44.   # ◆ ドライブゲージの開始色 (最大時)
  45.   GAUGE_MAX_START_COLOR    = 13
  46.   # ◆ ドライブゲージの終了色 (最大時)
  47.   GAUGE_MAX_END_COLOR      = 2

  48.   # ◆ ドライブゲージの Y 座標補正値
  49.   #  -8 にすると、HP/MP ゲージと同じ位置になります。
  50.   GAUGE_OFFSET_Y = -8
  51.   # ◆ ゲージ蓄積量の数値表記
  52.   #   0 .. なし  ※ゲージが 2 本以上の場合は非推奨
  53.   #   1 .. 即値 (蓄積量そのまま)
  54.   #   2 .. 割合 --> x%
  55.   #   3 .. 割合 (詳細1) --> x.x%
  56.   #   4 .. 割合 (詳細2) --> x.xx%
  57.   #   5 .. 蓄積済み本数
  58.   GAUGE_VALUE_STYLE = 3
  59.   # ◆ ゲージ蓄積量のフォントサイズ
  60.   #  大きくしすぎると名前に被ります。
  61.   GAUGE_VALUE_FONT_SIZE = 14

  62.   # ◆ 死亡(HP 0)時にドライブゲージを 0 にする
  63.   EMPTY_ON_DEAD = true

  64.   # ◆ ドライブゲージを表示しないアクター
  65.   #  ゲージを隠すアクターのIDを配列に格納。
  66.   HIDE_GAUGE_ACTOR = []
  67.   # ◆ 非戦闘時はドライブゲージを隠す
  68.   HIDE_GAUGE_NOT_IN_BATTLE = true
  69.   # ◆ オーバードライブスキル未修得ならゲージを隠す
  70.   HIDE_GAUGE_NO_OD_SKILLS  = true
  71.   # ◆ ゲージを隠している場合はゲージを増加させない
  72.   NOT_GAIN_GAUGE_HIDING    = true

  73.   # ◆ ゲージ不足のときはオーバードライブスキルを隠す
  74.   HIDE_SKILL_LACK_OF_GAUGE = false
  75. end
  76. end

  77. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  78. $imported = {} if $imported == nil
  79. $imported["OverDrive"] = true

  80. module KGC::OverDrive
  81.   # ドライブタイプ
  82.   module Type
  83.     ATTACK  = 0  # 攻撃
  84.     DAMAGE  = 1  # 被ダメージ
  85.     VICTORY = 2  # 勝利
  86.     ESCAPE  = 3  # 逃走
  87.     ALONE   = 4  # 孤独
  88.     ACTION  = 5  # 行動
  89.     FATAL   = 6  # 瀕死
  90.     GUARD   = 7  # 防御
  91.   end

  92.   # 蓄積量表記
  93.   module ValueStyle
  94.     NONE         = 0  # なし
  95.     IMMEDIATE    = 1  # 即値
  96.     RATE         = 2  # 割合
  97.     RATE_DETAIL1 = 3  # 割合 (詳細1)
  98.     RATE_DETAIL2 = 4  # 割合 (詳細2)
  99.     NUMBER       = 5  # 蓄積済み本数
  100.   end

  101.   # 正規表現
  102.   module Regexp
  103.     # スキル
  104.     module Skill
  105.       # オーバードライブ
  106.       OVER_DRIVE = /<(?:OVER_DRIVE|オーバードライブ)\s*(\d+)?>/i
  107.       # ゲージ増加率
  108.       OD_GAIN_RATE = /<(?:OD_GAIN_RATE|ODゲージ増加率)\s*(\d+)[%%]?>/i
  109.     end
  110.   end
  111. end

  112. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  113. #==============================================================================
  114. # □ KGC::Commands
  115. #==============================================================================

  116. module KGC
  117. module Commands
  118.   module_function
  119.   #--------------------------------------------------------------------------
  120.   # ○ アクターのドライブゲージの増減
  121.   #     actor_id : アクター ID (-1 : パーティ全体)
  122.   #     value    : 増加量 (マイナスも可)
  123.   #--------------------------------------------------------------------------
  124.   def gain_actor_od_gauge(actor_id, value)
  125.     if actor_id == -1
  126.       # 生存メンバー全員のゲージを操作
  127.       $game_party.existing_members.each { |actor|
  128.         actor.overdrive += value
  129.       }
  130.     else
  131.       actor = $game_actors[actor_id]
  132.       actor.overdrive += value if actor != nil && actor.exist?
  133.     end
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ○ エネミーのドライブゲージの増減
  137.   #     enemy_index : エネミー index (-1 : 全体)
  138.   #     value       : 増加量 (マイナスも可)
  139.   #--------------------------------------------------------------------------
  140.   def gain_enemy_od_gauge(enemy_index, value)
  141.     if enemy_index == -1
  142.       # 生存エネミー全員のゲージを操作
  143.       $game_troop.existing_members.each { |enemy|
  144.         enemy.overdrive += value
  145.       }
  146.     else
  147.       enemy = $game_troop.members[enemy_index]
  148.       enemy.overdrive += value if enemy != nil && enemy.exist?
  149.     end
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ○ アクターのドライブゲージの取得
  153.   #     actor_id    : アクター ID
  154.   #     variable_id : 戻り値を格納する変数 ID
  155.   #--------------------------------------------------------------------------
  156.   def get_actor_od_gauge(actor_id, variable_id = 0)
  157.     actor = $game_actors[actor_id]
  158.     n = (actor != nil ? actor.overdrive : 0)
  159.     if variable_id > 0
  160.       $game_variables[variable_id] = n
  161.     end
  162.     return n
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   # ○ エネミーのドライブゲージの取得
  166.   #     enemy_index : エネミー index
  167.   #     variable_id : 戻り値を格納する変数 ID
  168.   #--------------------------------------------------------------------------
  169.   def get_enemy_od_gauge(enemy_index, variable_id = 0)
  170.     enemy = $game_troop.members[enemy_index]
  171.     n = (enemy != nil ? enemy.overdrive : 0)
  172.     if variable_id > 0
  173.       $game_variables[variable_id] = n
  174.     end
  175.     return n
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ○ アクターのドライブゲージの本数を設定
  179.   #     actor_id : アクター ID (-1 : パーティ全体)
  180.   #     number   : ゲージ本数
  181.   #--------------------------------------------------------------------------
  182.   def set_actor_od_gauge_number(actor_id, number)
  183.     if actor_id == -1
  184.       # メンバー全員の本数を設定
  185.       $game_party.members.each { |actor|
  186.         actor.drive_gauge_number = number
  187.       }
  188.     else
  189.       actor = $game_actors[actor_id]
  190.       actor.drive_gauge_number = number if actor != nil
  191.     end
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ○ エネミーのドライブゲージの本数を設定
  195.   #     enemy_index : エネミー index (-1 : 全体)
  196.   #     number   : ゲージ本数
  197.   #--------------------------------------------------------------------------
  198.   def set_enemy_od_gauge_number(enemy_index, number)
  199.     if enemy_index == -1
  200.       # 生存エネミー全員の本数を設定
  201.       $game_troop.members.each { |enemy|
  202.         enemy.drive_gauge_number = number
  203.       }
  204.     else
  205.       enemy = $game_troop.members[enemy_index]
  206.       enemy.drive_gauge_number = number if enemy != nil
  207.     end
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ○ アクターのドライブゲージが最大か判定
  211.   #     actor_id : アクター ID
  212.   #--------------------------------------------------------------------------
  213.   def actor_od_gauge_max?(actor_id)
  214.     actor = $game_actors[actor_id]
  215.     return false if actor == nil
  216.     return actor.overdrive == actor.max_overdrive
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ○ エネミーのドライブゲージが最大か判定
  220.   #     enemy_index : エネミー index
  221.   #--------------------------------------------------------------------------
  222.   def enemy_od_gauge_max?(enemy_index)
  223.     enemy = $game_troop.members[enemy_index]
  224.     return false if enemy == nil
  225.     return enemy.overdrive == enemy.max_overdrive
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   # ○ アクターのドライブタイプの変更
  229.   #     actor_id : アクター ID (-1 : パーティ全体)
  230.   #     types    : ドライブタイプの配列 (省略時 : 初期化)
  231.   #--------------------------------------------------------------------------
  232.   def set_actor_drive_type(actor_id, types = nil)
  233.     if actor_id == -1
  234.       # メンバー全員のドライブタイプを変更
  235.       $game_party.members.each { |actor|
  236.         actor.drive_type = types
  237.       }
  238.     else
  239.       actor = $game_actors[actor_id]
  240.       actor.drive_type = types if actor != nil
  241.     end
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # ○ エネミーのドライブタイプの変更
  245.   #     enemy_index : エネミー index (-1 : 全体)
  246.   #     types       : ドライブタイプの配列 (省略時 : 初期化)
  247.   #--------------------------------------------------------------------------
  248.   def set_enemy_drive_type(enemy_index, types = nil)
  249.     if enemy_index == -1
  250.       # エネミー全員のドライブタイプを変更
  251.       $game_troop.members.each { |enemy|
  252.         enemy.drive_type = types
  253.       }
  254.     else
  255.       enemy = $game_troop.members[enemy_index]
  256.       enemy.drive_type = types if enemy != nil
  257.     end
  258.   end
  259. end
  260. end

  261. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  262. #==============================================================================
  263. # ■ RPG::Skill
  264. #==============================================================================

  265. class RPG::Skill < RPG::UsableItem
  266.   #--------------------------------------------------------------------------
  267.   # ○ オーバードライブのキャッシュ生成
  268.   #--------------------------------------------------------------------------
  269.   def create_overdrive_cache
  270.     @__is_overdrive = false
  271.     @__od_cost = KGC::OverDrive::GAUGE_MAX
  272.     @__od_gain_rate = 100

  273.     self.note.split(/[\r\n]+/).each { |line|
  274.       case line
  275.       when KGC::OverDrive::Regexp::Skill::OVER_DRIVE
  276.         # オーバードライブ
  277.         @__is_overdrive = true
  278.         @__od_cost = $1.to_i if $1 != nil
  279.       when KGC::OverDrive::Regexp::Skill::OD_GAIN_RATE
  280.         # ゲージ増加率
  281.         @__od_gain_rate = $1.to_i
  282.       end
  283.     }

  284.     # ドライブスキルでなければ、ゲージ消費量 0
  285.     unless @__is_overdrive
  286.       @__od_cost = 0
  287.     end
  288.   end
  289.   #--------------------------------------------------------------------------
  290.   # ○ ドライブスキルであるか
  291.   #--------------------------------------------------------------------------
  292.   def overdrive?
  293.     create_overdrive_cache if @__is_overdrive == nil
  294.     return @__is_overdrive
  295.   end
  296.   #--------------------------------------------------------------------------
  297.   # ○ ドライブゲージ消費量
  298.   #--------------------------------------------------------------------------
  299.   def od_cost
  300.     create_overdrive_cache if @__od_cost == nil
  301.     return @__od_cost
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # ○ ドライブゲージ増加率
  305.   #--------------------------------------------------------------------------
  306.   def od_gain_rate
  307.     create_overdrive_cache if @__od_gain_rate == nil
  308.     return @__od_gain_rate
  309.   end
  310. end

  311. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  312. #==============================================================================
  313. # ■ Game_Battler
  314. #==============================================================================

  315. class Game_Battler
  316.   #--------------------------------------------------------------------------
  317.   # ● 公開インスタンス変数
  318.   #--------------------------------------------------------------------------
  319.   attr_writer   :drive_type               # ドライブタイプ
  320.   #--------------------------------------------------------------------------
  321.   # ○ ドライブゲージ量取得
  322.   #--------------------------------------------------------------------------
  323.   def overdrive
  324.     @overdrive = 0 if @overdrive == nil
  325.     return @overdrive
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ○ ドライブゲージの操作
  329.   #--------------------------------------------------------------------------
  330.   def overdrive=(value)
  331.     @overdrive = [[value, max_overdrive].min, 0].max
  332.   end
  333.   #--------------------------------------------------------------------------
  334.   # ○ ドライブゲージ最大量取得
  335.   #--------------------------------------------------------------------------
  336.   def max_overdrive
  337.     return KGC::OverDrive::GAUGE_MAX * drive_gauge_number
  338.   end
  339.   #--------------------------------------------------------------------------
  340.   # ○ ドライブゲージ本数取得
  341.   #--------------------------------------------------------------------------
  342.   def drive_gauge_number
  343.     if @drive_gauge_number == nil
  344.       @drive_gauge_number = KGC::OverDrive::DEFAULT_GAUGE_NUMBER
  345.     end
  346.     return @drive_gauge_number
  347.   end
  348.   #--------------------------------------------------------------------------
  349.   # ○ ドライブゲージ本数の操作
  350.   #--------------------------------------------------------------------------
  351.   def drive_gauge_number=(value)
  352.     @drive_gauge_number = [value, 1].max
  353.   end
  354.   #--------------------------------------------------------------------------
  355.   # ○ ドライブタイプの取得
  356.   #--------------------------------------------------------------------------
  357.   def drive_type
  358.     return []
  359.   end
  360.   #--------------------------------------------------------------------------
  361.   # ○ ドライブスキル習得済み判定
  362.   #--------------------------------------------------------------------------
  363.   def overdrive_skill_learned?
  364.     return true
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ○ ゲージ表示判定
  368.   #--------------------------------------------------------------------------
  369.   def od_gauge_visible?
  370.     return false
  371.   end
  372.   #--------------------------------------------------------------------------
  373.   # ○ ゲージ増加可否判定
  374.   #--------------------------------------------------------------------------
  375.   def can_gain_overdrive?
  376.     return true
  377.   end
  378.   #--------------------------------------------------------------------------
  379.   # ○ 攻撃時増加判定
  380.   #--------------------------------------------------------------------------
  381.   def drive_attack?
  382.     return drive_type.include?(KGC::OverDrive::Type::ATTACK)
  383.   end
  384.   #--------------------------------------------------------------------------
  385.   # ○ 被ダメージ時増加判定
  386.   #--------------------------------------------------------------------------
  387.   def drive_damage?
  388.     return drive_type.include?(KGC::OverDrive::Type::DAMAGE)
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ○ 勝利時増加判定
  392.   #--------------------------------------------------------------------------
  393.   def drive_victory?
  394.     return drive_type.include?(KGC::OverDrive::Type::VICTORY)
  395.   end
  396.   #--------------------------------------------------------------------------
  397.   # ○ 逃走時増加判定
  398.   #--------------------------------------------------------------------------
  399.   def drive_escape?
  400.     return drive_type.include?(KGC::OverDrive::Type::ESCAPE)
  401.   end
  402.   #--------------------------------------------------------------------------
  403.   # ○ 孤独時増加判定
  404.   #--------------------------------------------------------------------------
  405.   def drive_alone?
  406.     return drive_type.include?(KGC::OverDrive::Type::ALONE)
  407.   end
  408.   #--------------------------------------------------------------------------
  409.   # ○ 行動時増加判定
  410.   #--------------------------------------------------------------------------
  411.   def drive_action?
  412.     return drive_type.include?(KGC::OverDrive::Type::ACTION)
  413.   end
  414.   #--------------------------------------------------------------------------
  415.   # ○ 瀕死時増加判定
  416.   #--------------------------------------------------------------------------
  417.   def drive_fatal?
  418.     return drive_type.include?(KGC::OverDrive::Type::FATAL)
  419.   end
  420.   #--------------------------------------------------------------------------
  421.   # ○ 防御時増加判定
  422.   #--------------------------------------------------------------------------
  423.   def drive_guard?
  424.     return drive_type.include?(KGC::OverDrive::Type::GUARD)
  425.   end
  426.   #--------------------------------------------------------------------------
  427.   # ● ステートの付加
  428.   #     state_id : ステート ID
  429.   #--------------------------------------------------------------------------
  430.   alias add_state_KGC_OverDrive add_state
  431.   def add_state(state_id)
  432.     add_state_KGC_OverDrive(state_id)

  433.     reset_overdrive_on_dead if dead?
  434.   end
  435.   #--------------------------------------------------------------------------
  436.   # ○ スキルの消費ドライブゲージ計算
  437.   #     skill : スキル
  438.   #--------------------------------------------------------------------------
  439.   def calc_od_cost(skill)
  440.     return 0 unless skill.is_a?(RPG::Skill)

  441.     return skill.od_cost
  442.   end
  443.   #--------------------------------------------------------------------------
  444.   # ● スキルの使用可能判定
  445.   #     skill : スキル
  446.   #--------------------------------------------------------------------------
  447.   alias skill_can_use_KGC_OverDrive? skill_can_use?
  448.   def skill_can_use?(skill)
  449.     return false unless skill_can_use_KGC_OverDrive?(skill)

  450.     return false if calc_od_cost(skill) > overdrive
  451.     return true
  452.   end
  453.   #--------------------------------------------------------------------------
  454.   # ● ダメージの反映
  455.   #     user : スキルかアイテムの使用者
  456.   #    呼び出し前に @hp_damage、@mp_damage、@absorbed が設定されていること。
  457.   #--------------------------------------------------------------------------
  458.   alias execute_damage_KGC_OverDrive execute_damage
  459.   def execute_damage(user)
  460.     execute_damage_KGC_OverDrive(user)

  461.     increase_overdrive(user)
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # ○ 死亡時ドライブゲージ初期化処理
  465.   #--------------------------------------------------------------------------
  466.   def reset_overdrive_on_dead
  467.     return unless KGC::OverDrive::EMPTY_ON_DEAD

  468.     self.overdrive = 0
  469.   end
  470.   #--------------------------------------------------------------------------
  471.   # ○ ドライブゲージ増加処理
  472.   #     attacker : 攻撃者
  473.   #--------------------------------------------------------------------------
  474.   def increase_overdrive(attacker = nil)
  475.     return unless attacker.is_a?(Game_Battler)  # 攻撃者がバトラーでない
  476.     return if self.class == attacker.class      # 攻撃側と防御側が同じ
  477.     return if hp_damage == 0 && mp_damage == 0  # ダメージなし

  478.     if can_gain_overdrive?
  479.       increase_attacker_overdrive(attacker)
  480.       increase_defender_overdrive(attacker)
  481.     end
  482.     reset_overdrive_on_dead if dead?
  483.   end
  484.   #--------------------------------------------------------------------------
  485.   # ○ 攻撃側のドライブゲージ増加処理
  486.   #     attacker : 攻撃者
  487.   #--------------------------------------------------------------------------
  488.   def increase_attacker_overdrive(attacker)
  489.     return unless attacker.drive_attack?  # ドライブタイプ「攻撃」なし

  490.     od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ATTACK]
  491.     if attacker.action.kind == 1
  492.       rate = attacker.action.skill.od_gain_rate  # スキルの倍率を適用
  493.       od_gain = od_gain * rate / 100
  494.       if rate > 0
  495.         od_gain = [od_gain, 1].max
  496.       elsif rate < 0
  497.         od_gain = [od_gain, -1].min
  498.       end
  499.     end
  500.     attacker.overdrive += od_gain
  501.   end
  502.   #--------------------------------------------------------------------------
  503.   # ○ 防御側のドライブゲージ増加処理
  504.   #     attacker : 攻撃者
  505.   #--------------------------------------------------------------------------
  506.   def increase_defender_overdrive(attacker)
  507.     return unless self.drive_damage?  # ドライブタイプ「ダメージ」なし

  508.     rate = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::DAMAGE]
  509.     od_gain = 0
  510.     od_gain += hp_damage * rate / maxhp if hp_damage > 0
  511.     od_gain += mp_damage * rate / maxmp if mp_damage > 0 && maxmp > 0
  512.     if rate > 0
  513.       od_gain = [od_gain, 1].max
  514.     elsif rate < 0
  515.       od_gain = [od_gain, -1].min
  516.     end
  517.     self.overdrive += od_gain
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ● スキルの効果適用
  521.   #     user  : スキルの使用者
  522.   #     skill : スキル
  523.   #--------------------------------------------------------------------------
  524.   alias skill_effect_KGC_OverDrive skill_effect
  525.   def skill_effect(user, skill)
  526.     skill_effect_KGC_OverDrive(user, skill)

  527.     # アイテムでスキルを発動した場合はゲージ消費判定を無視
  528.     if $imported["ReproduceFunctions"] && $game_temp.exec_skill_on_item
  529.       return
  530.     end
  531.   end
  532. end

  533. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  534. #==============================================================================
  535. # ■ Game_Actor
  536. #==============================================================================

  537. class Game_Actor < Game_Battler
  538.   #--------------------------------------------------------------------------
  539.   # ● セットアップ
  540.   #     actor_id : アクター ID
  541.   #--------------------------------------------------------------------------
  542.   alias setup_KGC_OverDrive setup
  543.   def setup(actor_id)
  544.     setup_KGC_OverDrive(actor_id)

  545.     @overdrive = 0
  546.     @drive_type = nil
  547.   end
  548.   #--------------------------------------------------------------------------
  549.   # ○ ドライブタイプの取得
  550.   #--------------------------------------------------------------------------
  551.   def drive_type
  552.     unless @drive_type.is_a?(Array)
  553.       return KGC::OverDrive::DEFAULT_ACTOR_DRIVE_TYPE
  554.     end
  555.     return @drive_type
  556.   end
  557.   #--------------------------------------------------------------------------
  558.   # ○ ドライブスキル習得済み判定
  559.   #--------------------------------------------------------------------------
  560.   def overdrive_skill_learned?
  561.     result = false
  562.     # 一時的に戦闘中フラグを解除
  563.     last_in_battle = $game_temp.in_battle
  564.     $game_temp.in_battle = false

  565.     self.skills.each { |skill|
  566.       if skill.overdrive?
  567.         result = true
  568.         break
  569.       end
  570.     }
  571.     $game_temp.in_battle = last_in_battle
  572.     return result
  573.   end
  574.   #--------------------------------------------------------------------------
  575.   # ○ ゲージ増加可否判定
  576.   #--------------------------------------------------------------------------
  577.   def can_gain_overdrive?
  578.     if KGC::OverDrive::NOT_GAIN_GAUGE_HIDING
  579.       # 非表示
  580.       return false if KGC::OverDrive::HIDE_GAUGE_ACTOR.include?(self.id)
  581.     end
  582.     if KGC::OverDrive::HIDE_GAUGE_NO_OD_SKILLS
  583.       # 未修得
  584.       return false unless overdrive_skill_learned?
  585.     end

  586.     return true
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ○ ゲージ表示判定
  590.   #--------------------------------------------------------------------------
  591.   def od_gauge_visible?
  592.     # 戦闘中非表示
  593.     if KGC::OverDrive::HIDE_GAUGE_NOT_IN_BATTLE && !$game_temp.in_battle
  594.       return false
  595.     end
  596.     # 非表示
  597.     return false if KGC::OverDrive::HIDE_GAUGE_ACTOR.include?(self.id)
  598.     # ゲージ増加不可
  599.     return false unless can_gain_overdrive?

  600.     return true
  601.   end
  602. end

  603. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  604. #==============================================================================
  605. # ■ Game_Enemy
  606. #==============================================================================

  607. class Game_Enemy < Game_Battler
  608.   #--------------------------------------------------------------------------
  609.   # ● オブジェクト初期化
  610.   #     index    : 敵グループ内インデックス
  611.   #     enemy_id : 敵キャラ ID
  612.   #--------------------------------------------------------------------------
  613.   alias initialize_KGC_OverDrive initialize
  614.   def initialize(index, enemy_id)
  615.     initialize_KGC_OverDrive(index, enemy_id)

  616.     @overdrive = 0
  617.     @drive_type = nil
  618.   end
  619.   #--------------------------------------------------------------------------
  620.   # ○ ドライブタイプの取得
  621.   #--------------------------------------------------------------------------
  622.   def drive_type
  623.     unless @drive_type.is_a?(Array)
  624.       return KGC::OverDrive::DEFAULT_ENEMY_DRIVE_TYPE
  625.     end
  626.     return @drive_type
  627.   end
  628. end

  629. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  630. #==============================================================================
  631. # ■ Window_Base
  632. #==============================================================================

  633. class Window_Base < Window
  634.   #--------------------------------------------------------------------------
  635.   # ○ ドライブゲージの通常時の色 1 の取得
  636.   #--------------------------------------------------------------------------
  637.   def od_gauge_normal_color1
  638.     color = KGC::OverDrive::GAUGE_NORMAL_START_COLOR
  639.     return (color.is_a?(Integer) ? text_color(color) : color)
  640.   end
  641.   #--------------------------------------------------------------------------
  642.   # ○ ドライブゲージの通常時の色 2 の取得
  643.   #--------------------------------------------------------------------------
  644.   def od_gauge_normal_color2
  645.     color = KGC::OverDrive::GAUGE_NORMAL_END_COLOR
  646.     return (color.is_a?(Integer) ? text_color(color) : color)
  647.   end
  648.   #--------------------------------------------------------------------------
  649.   # ○ ドライブゲージの最大時の色 1 の取得
  650.   #--------------------------------------------------------------------------
  651.   def od_gauge_max_color1
  652.     color = KGC::OverDrive::GAUGE_MAX_START_COLOR
  653.     return (color.is_a?(Integer) ? text_color(color) : color)
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ○ ドライブゲージの最大時の色 2 の取得
  657.   #--------------------------------------------------------------------------
  658.   def od_gauge_max_color2
  659.     color = KGC::OverDrive::GAUGE_MAX_END_COLOR
  660.     return (color.is_a?(Integer) ? text_color(color) : color)
  661.   end
  662.   #--------------------------------------------------------------------------
  663.   # ● 名前の描画
  664.   #     actor : アクター
  665.   #     x     : 描画先 X 座標
  666.   #     y     : 描画先 Y 座標
  667.   #--------------------------------------------------------------------------
  668.   alias draw_actor_name_KGC_OverDrive draw_actor_name
  669.   def draw_actor_name(actor, x, y)
  670.     draw_actor_od_gauge(actor, x+50, y, 50)

  671.     draw_actor_name_KGC_OverDrive(actor, x, y)
  672.   end
  673.   #--------------------------------------------------------------------------
  674.   # ○ ドライブゲージの描画
  675.   #     actor : アクター
  676.   #     x     : 描画先 X 座標
  677.   #     y     : 描画先 Y 座標
  678.   #     width : 幅
  679.   #--------------------------------------------------------------------------
  680.   def draw_actor_od_gauge(actor, x, y, width = 120)  
  681.     return unless actor.od_gauge_visible?
  682.     draw_gauge_base(x, y, width)
  683.     n = actor.overdrive % KGC::OverDrive::GAUGE_MAX
  684.     n = KGC::OverDrive::GAUGE_MAX if actor.overdrive == actor.max_overdrive
  685.     gw = width * n / KGC::OverDrive::GAUGE_MAX
  686.     gc1 = (gw == width ? od_gauge_max_color1 : od_gauge_normal_color1)
  687.     gc2 = (gw == width ? od_gauge_max_color2 : od_gauge_normal_color2)
  688.     self.contents.fill_rect(x, y + WLH + KGC::OverDrive::GAUGE_OFFSET_Y,
  689.       width, 6, gauge_back_color)
  690.     self.contents.gradient_fill_rect(
  691.       x, y + WLH + KGC::OverDrive::GAUGE_OFFSET_Y, gw, 6, gc1, gc2)
  692.     draw_actor_od_gauge_value(actor, x, y, width)

  693.   end
  694.   #--------------------------------------------------------------------------
  695.   # ○ ドライブゲージの描画
  696.   #     actor : アクター
  697.   #     x     : 描画先 X 座標
  698.   #     y     : 描画先 Y 座標
  699.   #     width : 幅
  700.   #--------------------------------------------------------------------------
  701.   def draw_actor_od_gauge_value(actor, x, y, width = 120)
  702.     text = ""
  703.     value = actor.overdrive * 100.0 / KGC::OverDrive::GAUGE_MAX
  704.     case KGC::OverDrive::GAUGE_VALUE_STYLE
  705.     when KGC::OverDrive::ValueStyle::IMMEDIATE
  706.       text = actor.overdrive.to_s
  707.     when KGC::OverDrive::ValueStyle::RATE
  708.       text = sprintf("%d%%", actor.overdrive * 100 / KGC::OverDrive::GAUGE_MAX)
  709.     when KGC::OverDrive::ValueStyle::RATE_DETAIL1
  710.       text = sprintf("%0.1f%%", value)
  711.     when KGC::OverDrive::ValueStyle::RATE_DETAIL2
  712.       text = sprintf("%0.2f%%", value)
  713.     when KGC::OverDrive::ValueStyle::NUMBER
  714.       text = "#{actor.overdrive / KGC::OverDrive::GAUGE_MAX}"
  715.     else
  716.       return
  717.     end

  718.     last_font_size = self.contents.font.size
  719.     new_font_size = KGC::OverDrive::GAUGE_VALUE_FONT_SIZE
  720.     self.contents.font.size = new_font_size
  721.     self.contents.draw_text(
  722.       x, y + WLH + KGC::OverDrive::GAUGE_OFFSET_Y - new_font_size / 2,
  723.       width, new_font_size, text, 2)
  724.     self.contents.font.size = last_font_size
  725.   end
  726. end

  727. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  728. #==============================================================================
  729. # ■ Window_Skill
  730. #==============================================================================

  731. if KGC::OverDrive::HIDE_SKILL_LACK_OF_GAUGE

  732. class Window_Skill < Window_Selectable
  733.   #--------------------------------------------------------------------------
  734.   # ○ スキルをリストに含めるかどうか
  735.   #     skill : スキル
  736.   #--------------------------------------------------------------------------
  737.   unless $@
  738.     alias include_KGC_OverDrive? include? if method_defined?(:include?)
  739.   end
  740.   def include?(skill)
  741.     return false if skill == nil

  742.     if defined?(include_KGC_OverDrive?)
  743.       return false unless include_KGC_OverDrive?(skill)
  744.     end

  745.     if skill.overdrive?
  746.       return (@actor.calc_od_cost(skill) <= @actor.overdrive)
  747.     else
  748.       return true
  749.     end
  750.   end

  751. if method_defined?(:include_KGC_OverDrive?)
  752.   #--------------------------------------------------------------------------
  753.   # ● リフレッシュ
  754.   #--------------------------------------------------------------------------
  755.   def refresh
  756.     @data = []
  757.     for skill in @actor.skills
  758.       next unless include?(skill)
  759.       @data.push(skill)
  760.       if skill.id == @actor.last_skill_id
  761.         self.index = @data.size - 1
  762.       end
  763.     end
  764.     @item_max = @data.size
  765.     create_contents
  766.     for i in 0...@item_max
  767.       draw_item(i)
  768.     end
  769.   end
  770. end

  771. end  # <-- class
  772. end  # <-- if KGC::OverDrive::HIDE_SKILL_LACK_OF_GAUGE

  773. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  774. #==============================================================================
  775. # ■ Scene_Skill
  776. #==============================================================================

  777. class Scene_Skill < Scene_Base
  778.   #--------------------------------------------------------------------------
  779.   # ● スキルの使用 (味方対象以外の使用効果を適用)
  780.   #--------------------------------------------------------------------------
  781.   alias use_skill_nontarget_KGC_OverDrive use_skill_nontarget
  782.   def use_skill_nontarget
  783.     consume_od_gauge

  784.     use_skill_nontarget_KGC_OverDrive
  785.   end
  786.   #--------------------------------------------------------------------------
  787.   # ○ スキル使用時のドライブゲージ消費
  788.   #--------------------------------------------------------------------------
  789.   def consume_od_gauge
  790.     @actor.overdrive -= @actor.calc_od_cost(@skill)
  791.   end
  792. end

  793. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  794. #==============================================================================
  795. # ■ Scene_Battle
  796. #==============================================================================

  797. class Scene_Battle < Scene_Base
  798.   #--------------------------------------------------------------------------
  799.   # ● 戦闘終了
  800.   #     result : 結果 (0:勝利 1:逃走 2:敗北)
  801.   #--------------------------------------------------------------------------
  802.   alias battle_end_KGC_OverDrive battle_end
  803.   def battle_end(result)
  804.     increase_overdrive_on_battle_end(result)

  805.     battle_end_KGC_OverDrive(result)
  806.   end
  807.   #--------------------------------------------------------------------------
  808.   # ○ 戦闘終了時のドライブゲージ増加処理
  809.   #     result : 結果 (0:勝利 1:逃走 2:敗北)
  810.   #--------------------------------------------------------------------------
  811.   def increase_overdrive_on_battle_end(result)
  812.     case result
  813.     when 0  # 勝利
  814.       od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::VICTORY]
  815.       $game_party.existing_members.each { |actor|
  816.         actor.overdrive += od_gain if actor.drive_victory?
  817.       }
  818.     when 1  # 逃走
  819.       od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ESCAPE]
  820.       $game_party.existing_members.each { |actor|
  821.         actor.overdrive += od_gain if actor.drive_escape?
  822.       }
  823.     end
  824.   end
  825.   #--------------------------------------------------------------------------
  826.   # ● 戦闘行動の実行
  827.   #--------------------------------------------------------------------------
  828.   alias execute_action_KGC_OverDrive execute_action
  829.   def execute_action
  830.     increase_overdrive_on_action

  831.     execute_action_KGC_OverDrive
  832.   end
  833.   #--------------------------------------------------------------------------
  834.   # ○ 行動時のドライブゲージ増加処理
  835.   #--------------------------------------------------------------------------
  836.   def increase_overdrive_on_action
  837.     battler = @active_battler
  838.     od_gain = 0
  839.     unit = (battler.actor? ? $game_party : $game_troop)

  840.     # 孤独戦闘
  841.     if battler.drive_alone? && unit.existing_members.size == 1
  842.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ALONE]
  843.     end
  844.     # 行動
  845.     if battler.drive_action?
  846.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ACTION]
  847.     end
  848.     # 瀕死
  849.     if battler.drive_fatal? && battler.hp < battler.maxhp / 4
  850.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::FATAL]
  851.     end
  852.     # 防御
  853.     if battler.drive_guard? && battler.action.kind == 0 &&
  854.         battler.action.basic == 1
  855.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::GUARD]
  856.     end
  857.     battler.overdrive += od_gain
  858.   end
  859.   #--------------------------------------------------------------------------
  860.   # ● 戦闘行動の実行 : スキル
  861.   #--------------------------------------------------------------------------
  862.   alias execute_action_skill_KGC_OverDrive execute_action_skill
  863.   def execute_action_skill
  864.     execute_action_skill_KGC_OverDrive

  865.     consume_od_gauge
  866.   end
  867.   #--------------------------------------------------------------------------
  868.   # ○ スキル使用時のドライブゲージ消費
  869.   #--------------------------------------------------------------------------
  870.   def consume_od_gauge
  871.     skill = @active_battler.action.skill
  872.     @active_battler.overdrive -= @active_battler.calc_od_cost(skill)
  873.   end
  874. end
复制代码

点评

STR33g1_Battle Status 0.5 这个系统不是人人都有,请附上脚本或链接  发表于 2012-4-11 11:30
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-15 23:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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