幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1546|回复: 5

[RMVX] 谁有  集气脚本呢? 发下  什么是集气?看

[复制链接]

15

主题

56

帖子

512

积分

⑤进阶

积分
512
发表于 2010-1-29 17:14:00 | 显示全部楼层 |阅读模式
   就是气 集到 满的时候 可以放 奥义 技能     
回复

使用道具 举报

19

主题

98

帖子

777

积分

⑤进阶

积分
777
发表于 2010-1-29 17:34:04 | 显示全部楼层

Re:谁有  集气脚本呢? 发下  什

应该是这种类型的东西了  

6R失踪 中文版失踪 就算是日文这也应该不难懂
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ オーバードライブ - KGC_OverDrive ◆ VX ◆
  3. #_/    ◇ Last update : 2009/11/01 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  専用のゲージを消費して使用するスキルを作成します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  7. #==============================================================================
  8. # ★ カスタマイズ項目 - Customize BEGIN ★
  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.      80,  # 攻撃
  22.     500,  # 被ダメージ
  23.     200,  # 勝利
  24.     100,  # 逃走
  25.     160,  # 孤独
  26.      40,  # 行動
  27.     160,  # 瀕死
  28.      50,  # 防御
  29.   ]  # ← この ] は消さないこと!
  30.   # ◆ ゲージの初期本数
  31.   DEFAULT_GAUGE_NUMBER = 1
  32.   # ◆ デフォルトドライブタイプ
  33.   #   0..攻撃  1..被ダメージ  2..勝利  3..逃走  4..孤独  5..行動
  34.   #   6..瀕死  7..防御
  35.   DEFAULT_ACTOR_DRIVE_TYPE = [0, 1, 6]        # アクター
  36.   DEFAULT_ENEMY_DRIVE_TYPE = [0, 1, 4, 5, 6]  # 敵
  37.   # ◆ ドライブゲージの色
  38.   #  数値  : \\C[n] と同じ色。
  39.   #  Color : 指定した色。 ( Color.new(255, 128, 128) など )
  40.   GAUGE_NORMAL_START_COLOR = 14  # 通常時開始色
  41.   GAUGE_NORMAL_END_COLOR   =  6  # 通常時終了色
  42.   GAUGE_MAX_START_COLOR    = 10  # 最大時開始色
  43.   GAUGE_MAX_END_COLOR      =  2  # 最大時終了色
  44.   # ◆ ドライブゲージに汎用ゲージを使用する
  45.   #  ≪汎用ゲージ描画≫ 導入時のみ有効。
  46.   ENABLE_GENERIC_GAUGE = true
  47.   # ◆ ドライブゲージ設定
  48.   #  画像は "Graphics/System" から読み込む。
  49.   GAUGE_IMAGE     = "GaugeOD"     # 通常時画像
  50.   GAUGE_MAX_IMAGE = "GaugeODMax"  # 最大時画像
  51.   GAUGE_OFFSET    = [-23, -2]     # 位置補正 [x, y]
  52.   GAUGE_LENGTH    = -4            # 長さ補正
  53.   GAUGE_SLOPE     = 30            # 傾き (-89 ~ 89)
  54.   # ◆ ドライブゲージの Y 座標補正値
  55.   #  汎用ゲージ未使用の場合に使用。
  56.   #  -8 にすると、HP/MP ゲージと同じ位置になります。
  57.   GAUGE_OFFSET_Y = -8
  58.   # ◆ ゲージ蓄積量の数値表記
  59.   #   0 .. なし  ※ゲージが 2 本以上の場合は非推奨
  60.   #   1 .. 即値 (蓄積量そのまま)
  61.   #   2 .. 割合 --> x%
  62.   #   3 .. 割合 (詳細1) --> x.x%
  63.   #   4 .. 割合 (詳細2) --> x.xx%
  64.   #   5 .. 蓄積済み本数
  65.   GAUGE_VALUE_STYLE = 2
  66.   # ◆ ゲージ蓄積量のフォントサイズ
  67.   #  大きくしすぎると名前に被ります。
  68.   GAUGE_VALUE_FONT_SIZE = 14
  69.   # ◆ 死亡(HP 0)時にドライブゲージを 0 にする
  70.   EMPTY_ON_DEAD = true
  71.   # ◆ ドライブゲージを表示しないアクター
  72.   #  ゲージを隠すアクターのIDを配列に格納。
  73.   HIDE_GAUGE_ACTOR = []
  74.   # ◆ 非戦闘時はドライブゲージを隠す
  75.   HIDE_GAUGE_NOT_IN_BATTLE = false
  76.   # ◆ オーバードライブスキル未修得ならゲージを隠す
  77.   HIDE_GAUGE_NO_OD_SKILLS  = true
  78.   # ◆ ゲージを隠している場合はゲージを増加させない
  79.   NOT_GAIN_GAUGE_HIDING    = true
  80.   # ◆ ゲージ不足のときはオーバードライブスキルを隠す
  81.   HIDE_SKILL_LACK_OF_GAUGE = false
  82.   # ◆ ドライブゲージ名
  83.   GAUGE_NAME = "ドライブゲージ"
  84.   # ◆ ドライブゲージ変動アイテム使用時のメッセージ
  85.   OD_GAIN_MESSAGE = {
  86.     :drain_a   => "%sは%sを奪われた!",  # 吸収: アクター
  87.     :drain_e   => "%sの%sを奪った!",    # 吸収: 敵
  88.     :loss_a    => "%sの%sが減った!",    # 減少: アクター
  89.     :loss_e    => "%sの%sが減った!",    # 減少: 敵
  90.     :recover_a => "%sの%sが増えた!",    # 増加: アクター
  91.     :recover_e => "%sの%sが増えた!",    # 増加: 敵
  92.   }
  93. end
  94. end
  95. #==============================================================================
  96. # ☆ カスタマイズ項目終了 - Customize END ☆
  97. #==============================================================================
  98. $imported = {} if $imported == nil
  99. $imported["OverDrive"] = true
  100. module KGC::OverDrive
  101.   # ドライブタイプ
  102.   module Type
  103.     ATTACK  = 0  # 攻撃
  104.     DAMAGE  = 1  # 被ダメージ
  105.     VICTORY = 2  # 勝利
  106.     ESCAPE  = 3  # 逃走
  107.     ALONE   = 4  # 孤独
  108.     ACTION  = 5  # 行動
  109.     FATAL   = 6  # 瀕死
  110.     GUARD   = 7  # 防御
  111.   end
  112.   # 蓄積量表記
  113.   module ValueStyle
  114.     NONE         = 0  # なし
  115.     IMMEDIATE    = 1  # 即値
  116.     RATE         = 2  # 割合
  117.     RATE_DETAIL1 = 3  # 割合 (詳細1)
  118.     RATE_DETAIL2 = 4  # 割合 (詳細2)
  119.     NUMBER       = 5  # 蓄積済み本数
  120.   end
  121.   module Regexp
  122.     module UsableItem
  123.       # ドライブゲージ増加
  124.       OD_GAIN = /<(?:OD_GAIN|(?:OD|ドライブ)ゲージ増加)\\s*([\\+\\-]?\\d+)>/i
  125.     end
  126.     module Skill
  127.       # オーバードライブ
  128.       OVER_DRIVE = /<(?:OVER_DRIVE|オーバードライブ)\\s*(\\d+)?(\\+)?>/i
  129.       # ゲージ増加率
  130.       OD_GAIN_RATE =
  131.         /<(?:OD_GAIN_RATE|(?:OD|ドライブ)ゲージ増加率)\\s*(\\d+)[%%]?>/i
  132.     end
  133.   end
  134. end
  135. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  136. #==============================================================================
  137. # □ KGC::Commands
  138. #==============================================================================
  139. module KGC
  140. module Commands
  141.   module_function
  142.   #--------------------------------------------------------------------------
  143.   # ○ アクターのドライブゲージの増減
  144.   #     actor_id : アクター ID (-1 : パーティ全体)
  145.   #     value    : 増加量 (マイナスも可)
  146.   #--------------------------------------------------------------------------
  147.   def gain_actor_od_gauge(actor_id, value)
  148.     if actor_id == -1
  149.       # 生存メンバー全員のゲージを操作
  150.       $game_party.existing_members.each { |actor|
  151.         next unless actor.can_gain_overdrive?
  152.         actor.overdrive += value
  153.       }
  154.     else
  155.       actor = $game_actors[actor_id]
  156.       actor.overdrive += value if actor != nil && actor.exist?
  157.     end
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ○ エネミーのドライブゲージの増減
  161.   #     enemy_index : エネミー index (-1 : 全体)
  162.   #     value       : 増加量 (マイナスも可)
  163.   #--------------------------------------------------------------------------
  164.   def gain_enemy_od_gauge(enemy_index, value)
  165.     if enemy_index == -1
  166.       # 生存エネミー全員のゲージを操作
  167.       $game_troop.existing_members.each { |enemy|
  168.         enemy.overdrive += value
  169.       }
  170.     else
  171.       enemy = $game_troop.members[enemy_index]
  172.       enemy.overdrive += value if enemy != nil && enemy.exist?
  173.     end
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ○ アクターのドライブゲージの取得
  177.   #     actor_id    : アクター ID
  178.   #     variable_id : 戻り値を格納する変数 ID
  179.   #--------------------------------------------------------------------------
  180.   def get_actor_od_gauge(actor_id, variable_id = 0)
  181.     actor = $game_actors[actor_id]
  182.     n = (actor != nil ? actor.overdrive : 0)
  183.     if variable_id > 0
  184.       $game_variables[variable_id] = n
  185.     end
  186.     return n
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # ○ エネミーのドライブゲージの取得
  190.   #     enemy_index : エネミー index
  191.   #     variable_id : 戻り値を格納する変数 ID
  192.   #--------------------------------------------------------------------------
  193.   def get_enemy_od_gauge(enemy_index, variable_id = 0)
  194.     enemy = $game_troop.members[enemy_index]
  195.     n = (enemy != nil ? enemy.overdrive : 0)
  196.     if variable_id > 0
  197.       $game_variables[variable_id] = n
  198.     end
  199.     return n
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # ○ アクターのドライブゲージの本数を設定
  203.   #     actor_id : アクター ID (-1 : パーティ全体)
  204.   #     number   : ゲージ本数
  205.   #--------------------------------------------------------------------------
  206.   def set_actor_od_gauge_number(actor_id, number)
  207.     if actor_id == -1
  208.       # メンバー全員の本数を設定
  209.       $game_party.members.each { |actor|
  210.         actor.drive_gauge_number = number
  211.       }
  212.     else
  213.       actor = $game_actors[actor_id]
  214.       actor.drive_gauge_number = number if actor != nil
  215.     end
  216.   end
  217.   #--------------------------------------------------------------------------
  218.   # ○ エネミーのドライブゲージの本数を設定
  219.   #     enemy_index : エネミー index (-1 : 全体)
  220.   #     number   : ゲージ本数
  221.   #--------------------------------------------------------------------------
  222.   def set_enemy_od_gauge_number(enemy_index, number)
  223.     if enemy_index == -1
  224.       # 生存エネミー全員の本数を設定
  225.       $game_troop.members.each { |enemy|
  226.         enemy.drive_gauge_number = number
  227.       }
  228.     else
  229.       enemy = $game_troop.members[enemy_index]
  230.       enemy.drive_gauge_number = number if enemy != nil
  231.     end
  232.   end
  233.   #--------------------------------------------------------------------------
  234.   # ○ アクターのドライブゲージが最大か判定
  235.   #     actor_id : アクター ID
  236.   #--------------------------------------------------------------------------
  237.   def actor_od_gauge_max?(actor_id)
  238.     actor = $game_actors[actor_id]
  239.     return false if actor == nil
  240.     return actor.overdrive == actor.max_overdrive
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ○ エネミーのドライブゲージが最大か判定
  244.   #     enemy_index : エネミー index
  245.   #--------------------------------------------------------------------------
  246.   def enemy_od_gauge_max?(enemy_index)
  247.     enemy = $game_troop.members[enemy_index]
  248.     return false if enemy == nil
  249.     return enemy.overdrive == enemy.max_overdrive
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # ○ アクターのドライブタイプの変更
  253.   #     actor_id : アクター ID (-1 : パーティ全体)
  254.   #     types    : ドライブタイプの配列 (省略時 : 初期化)
  255.   #--------------------------------------------------------------------------
  256.   def set_actor_drive_type(actor_id, types = nil)
  257.     if actor_id == -1
  258.       # メンバー全員のドライブタイプを変更
  259.       $game_party.members.each { |actor|
  260.         actor.drive_type = types
  261.       }
  262.     else
  263.       actor = $game_actors[actor_id]
  264.       actor.drive_type = types if actor != nil
  265.     end
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ○ エネミーのドライブタイプの変更
  269.   #     enemy_index : エネミー index (-1 : 全体)
  270.   #     types       : ドライブタイプの配列 (省略時 : 初期化)
  271.   #--------------------------------------------------------------------------
  272.   def set_enemy_drive_type(enemy_index, types = nil)
  273.     if enemy_index == -1
  274.       # エネミー全員のドライブタイプを変更
  275.       $game_troop.members.each { |enemy|
  276.         enemy.drive_type = types
  277.       }
  278.     else
  279.       enemy = $game_troop.members[enemy_index]
  280.       enemy.drive_type = types if enemy != nil
  281.     end
  282.   end
  283. end
  284. end
  285. class Game_Interpreter
  286.   include KGC::Commands
  287. end
  288. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  289. #==============================================================================
  290. # ■ RPG::UsableItem
  291. #==============================================================================
  292. class RPG::UsableItem < RPG::BaseItem
  293.   #--------------------------------------------------------------------------
  294.   # ○ オーバードライブのキャッシュ生成
  295.   #--------------------------------------------------------------------------
  296.   def create_overdrive_cache
  297.     @__od_gain = 0
  298.     self.note.each_line { |line|
  299.       case line
  300.       when KGC::OverDrive::Regexp::UsableItem::OD_GAIN
  301.         # ドライブゲージ増加
  302.         @__od_gain = $1.to_i
  303.       end
  304.     }
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ○ ドライブゲージ増加量
  308.   #--------------------------------------------------------------------------
  309.   def od_gain
  310.     create_overdrive_cache if @__od_gain == nil
  311.     return @__od_gain
  312.   end
  313.   #--------------------------------------------------------------------------
  314.   # ○ ドライブスキルであるか
  315.   #--------------------------------------------------------------------------
  316.   def overdrive
  317.     return false
  318.   end
  319.   alias overdrive? overdrive
  320. end
  321. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  322. #==============================================================================
  323. # ■ RPG::Skill
  324. #==============================================================================
  325. class RPG::Skill < RPG::UsableItem
  326.   #--------------------------------------------------------------------------
  327.   # ○ オーバードライブのキャッシュ生成
  328.   #--------------------------------------------------------------------------
  329.   def create_overdrive_cache
  330.     super
  331.     @__is_overdrive   = false
  332.     @__od_cost        = KGC::OverDrive::GAUGE_MAX
  333.     @__od_consume_all = false
  334.     @__od_gain_rate   = 100
  335.     self.note.each_line { |line|
  336.       case line
  337.       when KGC::OverDrive::Regexp::Skill::OVER_DRIVE
  338.         # オーバードライブ
  339.         @__is_overdrive   = true
  340.         @__od_cost        = $1.to_i if $1 != nil
  341.         @__od_consume_all = ($2 != nil)
  342.       when KGC::OverDrive::Regexp::Skill::OD_GAIN_RATE
  343.         # ゲージ増加率
  344.         @__od_gain_rate = $1.to_i
  345.       end
  346.     }
  347.     # ドライブスキルでなければ、ゲージ消費量 0
  348.     unless @__is_overdrive
  349.       @__od_cost = 0
  350.     end
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # ○ ドライブスキルであるか
  354.   #--------------------------------------------------------------------------
  355.   def overdrive
  356.     create_overdrive_cache if @__is_overdrive == nil
  357.     return @__is_overdrive
  358.   end
  359.   alias overdrive? overdrive
  360.   #--------------------------------------------------------------------------
  361.   # ○ ドライブゲージ消費量
  362.   #--------------------------------------------------------------------------
  363.   def od_cost
  364.     create_overdrive_cache if @__od_cost == nil
  365.     return @__od_cost
  366.   end
  367.   #--------------------------------------------------------------------------
  368.   # ○ ドライブゲージ全消費か
  369.   #--------------------------------------------------------------------------
  370.   def od_consume_all
  371.     create_overdrive_cache if @__od_consume_all == nil
  372.     return @__od_consume_all
  373.   end
  374.   alias od_consume_all? od_consume_all
  375.   #--------------------------------------------------------------------------
  376.   # ○ ドライブゲージ増加率
  377.   #--------------------------------------------------------------------------
  378.   def od_gain_rate
  379.     create_overdrive_cache if @__od_gain_rate == nil
  380.     return @__od_gain_rate
  381.   end
  382. end
  383. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  384. #==============================================================================
  385. # ■ Vocab
  386. #==============================================================================
  387. module Vocab
  388.   # ドライブゲージ名
  389.   def self.overdrive
  390.     return KGC::OverDrive::GAUGE_NAME
  391.   end
  392.   # アクター側メッセージ
  393.   ActorODDrain    = KGC::OverDrive::OD_GAIN_MESSAGE[:drain_a]
  394.   ActorODLoss     = KGC::OverDrive::OD_GAIN_MESSAGE[:loss_a]
  395.   ActorODRecovery = KGC::OverDrive::OD_GAIN_MESSAGE[:recover_a]
  396.   # 敵側メッセージ
  397.   EnemyODDrain    = KGC::OverDrive::OD_GAIN_MESSAGE[:drain_e]
  398.   EnemyODLoss     = KGC::OverDrive::OD_GAIN_MESSAGE[:loss_e]
  399.   EnemyODRecovery = KGC::OverDrive::OD_GAIN_MESSAGE[:recover_e]
  400. end
  401. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  402. #==============================================================================
  403. # ■ Game_Battler
  404. #==============================================================================
  405. class Game_Battler
  406.   #--------------------------------------------------------------------------
  407.   # ● 公開インスタンス変数
  408.   #--------------------------------------------------------------------------
  409.   attr_writer   :drive_type               # ドライブタイプ
  410.   attr_reader   :od_damage                # 行動結果: ドライブダメージ
  411.   #--------------------------------------------------------------------------
  412.   # ● 行動効果の保持用変数をクリア
  413.   #--------------------------------------------------------------------------
  414.   alias clear_action_results_KGC_OverDrive clear_action_results
  415.   def clear_action_results
  416.     clear_action_results_KGC_OverDrive
  417.     @od_damage = 0
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # ○ ドライブゲージ量取得
  421.   #--------------------------------------------------------------------------
  422.   def overdrive
  423.     @overdrive = 0 if @overdrive == nil
  424.     return @overdrive
  425.   end
  426.   #--------------------------------------------------------------------------
  427.   # ○ ドライブゲージの操作
  428.   #--------------------------------------------------------------------------
  429.   def overdrive=(value)
  430.     @overdrive = [[value, max_overdrive].min, 0].max
  431.   end
  432.   #--------------------------------------------------------------------------
  433.   # ○ ドライブゲージ最大量取得
  434.   #--------------------------------------------------------------------------
  435.   def max_overdrive
  436.     return KGC::OverDrive::GAUGE_MAX * drive_gauge_number
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # ○ ゲージ Max 判定
  440.   #--------------------------------------------------------------------------
  441.   def overdrive_max?
  442.     return (overdrive == max_overdrive)
  443.   end
  444.   #--------------------------------------------------------------------------
  445.   # ○ ドライブゲージ本数取得
  446.   #--------------------------------------------------------------------------
  447.   def drive_gauge_number
  448.     if @drive_gauge_number == nil
  449.       @drive_gauge_number = KGC::OverDrive::DEFAULT_GAUGE_NUMBER
  450.     end
  451.     return @drive_gauge_number
  452.   end
  453.   #--------------------------------------------------------------------------
  454.   # ○ ドライブゲージ本数の操作
  455.   #--------------------------------------------------------------------------
  456.   def drive_gauge_number=(value)
  457.     @drive_gauge_number = [value, 1].max
  458.   end
  459.   #--------------------------------------------------------------------------
  460.   # ○ ドライブタイプの取得
  461.   #--------------------------------------------------------------------------
  462.   def drive_type
  463.     return []
  464.   end
  465.   #--------------------------------------------------------------------------
  466.   # ○ ドライブスキル習得済み判定
  467.   #--------------------------------------------------------------------------
  468.   def overdrive_skill_learned?
  469.     return true
  470.   end
  471.   #--------------------------------------------------------------------------
  472.   # ○ ゲージ表示判定
  473.   #--------------------------------------------------------------------------
  474.   def od_gauge_visible?
  475.     return false
  476.   end
  477.   #--------------------------------------------------------------------------
  478.   # ○ ゲージ増加可否判定
  479.   #--------------------------------------------------------------------------
  480.   def can_gain_overdrive?
  481.     return true
  482.   end
  483.   #--------------------------------------------------------------------------
  484.   # ○ 攻撃時増加判定
  485.   #--------------------------------------------------------------------------
  486.   def drive_attack?
  487.     return drive_type.include?(KGC::OverDrive::Type::ATTACK)
  488.   end
  489.   #--------------------------------------------------------------------------
  490.   # ○ 被ダメージ時増加判定
  491.   #--------------------------------------------------------------------------
  492.   def drive_damage?
  493.     return drive_type.include?(KGC::OverDrive::Type::DAMAGE)
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ○ 勝利時増加判定
  497.   #--------------------------------------------------------------------------
  498.   def drive_victory?
  499.     return drive_type.include?(KGC::OverDrive::Type::VICTORY)
  500.   end
  501.   #--------------------------------------------------------------------------
  502.   # ○ 逃走時増加判定
  503.   #--------------------------------------------------------------------------
  504.   def drive_escape?
  505.     return drive_type.include?(KGC::OverDrive::Type::ESCAPE)
  506.   end
  507.   #--------------------------------------------------------------------------
  508.   # ○ 孤独時増加判定
  509.   #--------------------------------------------------------------------------
  510.   def drive_alone?
  511.     return drive_type.include?(KGC::OverDrive::Type::ALONE)
  512.   end
  513.   #--------------------------------------------------------------------------
  514.   # ○ 行動時増加判定
  515.   #--------------------------------------------------------------------------
  516.   def drive_action?
  517.     return drive_type.include?(KGC::OverDrive::Type::ACTION)
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ○ 瀕死時増加判定
  521.   #--------------------------------------------------------------------------
  522.   def drive_fatal?
  523.     return drive_type.include?(KGC::OverDrive::Type::FATAL)
  524.   end
  525.   #--------------------------------------------------------------------------
  526.   # ○ 防御時増加判定
  527.   #--------------------------------------------------------------------------
  528.   def drive_guard?
  529.     return drive_type.include?(KGC::OverDrive::Type::GUARD)
  530.   end
  531.   #--------------------------------------------------------------------------
  532.   # ● ステートの付加
  533.   #     state_id : ステート ID
  534.   #--------------------------------------------------------------------------
  535.   alias add_state_KGC_OverDrive add_state
  536.   def add_state(state_id)
  537.     add_state_KGC_OverDrive(state_id)
  538.     reset_overdrive_on_dead if dead?
  539.   end
  540.   #--------------------------------------------------------------------------
  541.   # ○ スキルの消費ドライブゲージ計算
  542.   #     skill : スキル
  543.   #--------------------------------------------------------------------------
  544.   def calc_od_cost(skill)
  545.     return 0 unless skill.is_a?(RPG::Skill)
  546.     return skill.od_cost
  547.   end
  548.   #--------------------------------------------------------------------------
  549.   # ● スキルの使用可能判定
  550.   #     skill : スキル
  551.   #--------------------------------------------------------------------------
  552.   alias skill_can_use_KGC_OverDrive? skill_can_use?
  553.   def skill_can_use?(skill)
  554.     return false unless skill_can_use_KGC_OverDrive?(skill)
  555.     return false if calc_od_cost(skill) > overdrive
  556.     return true
  557.   end
  558.   #--------------------------------------------------------------------------
  559.   # ● スキルまたはアイテムによるダメージ計算
  560.   #     user : スキルまたはアイテムの使用者
  561.   #     obj  : スキルまたはアイテム
  562.   #    結果は @hp_damage または @mp_damage に代入する。
  563.   #--------------------------------------------------------------------------
  564.   alias make_obj_damage_value_KGC_OverDrive make_obj_damage_value
  565.   def make_obj_damage_value(user, obj)
  566.     make_obj_damage_value_KGC_OverDrive(user, obj)
  567.     apply_od_consume_all_for_damage(user, obj)
  568.   end
  569.   #--------------------------------------------------------------------------
  570.   # ○ ゲージ全消費時の効果の適用
  571.   #     user : スキルまたはアイテムの使用者
  572.   #     obj  : スキルまたはアイテム
  573.   #    結果は @hp_damage または @mp_damage に代入する。
  574.   #--------------------------------------------------------------------------
  575.   def apply_od_consume_all_for_damage(user, obj)
  576.     return unless obj.is_a?(RPG::Skill)
  577.     return unless obj.overdrive? && obj.od_consume_all?
  578.     # 余剰消費量に応じて強化 (例: 最低消費量 1000 でゲージが 1200 なら 1.2 倍)
  579.     rate = [user.overdrive * 1000 / obj.od_cost, 1000].max
  580.     @hp_damage = @hp_damage * rate / 1000
  581.     @mp_damage = @mp_damage * rate / 1000
  582.   end
  583.   #--------------------------------------------------------------------------
  584.   # ● ダメージの反映
  585.   #     user : スキルかアイテムの使用者
  586.   #    呼び出し前に @hp_damage、@mp_damage、@absorbed が設定されていること。
  587.   #--------------------------------------------------------------------------
  588.   alias execute_damage_KGC_OverDrive execute_damage
  589.   def execute_damage(user)
  590.     execute_damage_KGC_OverDrive(user)
  591.     increase_overdrive(user)
  592.     increase_overdrive_by_item(user)
  593.   end
  594.   #--------------------------------------------------------------------------
  595.   # ○ 死亡時ドライブゲージ初期化処理
  596.   #--------------------------------------------------------------------------
  597.   def reset_overdrive_on_dead
  598.     return unless KGC::OverDrive::EMPTY_ON_DEAD
  599.     self.overdrive = 0
  600.   end
  601.   #--------------------------------------------------------------------------
  602.   # ○ ドライブゲージ増加処理
  603.   #     attacker : 攻撃者
  604.   #--------------------------------------------------------------------------
  605.   def increase_overdrive(attacker = nil)
  606.     return unless attacker.is_a?(Game_Battler)  # 攻撃者がバトラーでない
  607.     return unless actor? ^ attacker.actor?      # 攻撃側と防御側が同じ
  608.     return if hp_damage == 0 && mp_damage == 0  # ダメージなし
  609.     increase_attacker_overdrive(attacker)
  610.     increase_defender_overdrive(attacker)
  611.     reset_overdrive_on_dead if dead?
  612.   end
  613.   #--------------------------------------------------------------------------
  614.   # ○ 攻撃側のドライブゲージ増加処理
  615.   #     attacker : 攻撃者
  616.   #--------------------------------------------------------------------------
  617.   def increase_attacker_overdrive(attacker)
  618.     return unless can_gain_overdrive?
  619.     return unless attacker.drive_attack?  # ドライブタイプ「攻撃」なし
  620.     od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ATTACK]
  621.     if attacker.action.kind == 1
  622.       rate = attacker.action.skill.od_gain_rate  # スキルの倍率を適用
  623.       od_gain = od_gain * rate / 100
  624.       if rate > 0
  625.         od_gain = [od_gain, 1].max
  626.       elsif rate < 0
  627.         od_gain = [od_gain, -1].min
  628.       end
  629.     end
  630.     attacker.overdrive += od_gain
  631.   end
  632.   #--------------------------------------------------------------------------
  633.   # ○ 防御側のドライブゲージ増加処理
  634.   #     attacker : 攻撃者
  635.   #--------------------------------------------------------------------------
  636.   def increase_defender_overdrive(attacker)
  637.     return unless can_gain_overdrive?
  638.     return unless self.drive_damage?  # ドライブタイプ「ダメージ」なし
  639.     rate = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::DAMAGE]
  640.     od_gain = 0
  641.     od_gain += hp_damage * rate / maxhp if hp_damage > 0
  642.     od_gain += mp_damage * rate / maxmp if mp_damage > 0 && maxmp > 0
  643.     if rate > 0
  644.       od_gain = [od_gain, 1].max
  645.     elsif rate < 0
  646.       od_gain = [od_gain, -1].min
  647.     end
  648.     self.overdrive += od_gain
  649.   end
  650.   #--------------------------------------------------------------------------
  651.   # ○ アイテムによるドライブゲージ増加処理
  652.   #     user : 使用者
  653.   #--------------------------------------------------------------------------
  654.   def increase_overdrive_by_item(user = nil)
  655.     return unless user.is_a?(Game_Battler)
  656.     return unless can_gain_overdrive?
  657.     if user.action.skill?
  658.       obj = user.action.skill
  659.     elsif user.action.item?
  660.       obj = user.action.item
  661.     else
  662.       return
  663.     end
  664.     @od_damage = -obj.od_gain
  665.     self.overdrive -= @od_damage
  666.   end
  667.   #--------------------------------------------------------------------------
  668.   # ● スキルの効果適用
  669.   #     user  : スキルの使用者
  670.   #     skill : スキル
  671.   #--------------------------------------------------------------------------
  672.   alias skill_effect_KGC_OverDrive skill_effect
  673.   def skill_effect(user, skill)
  674.     skill_effect_KGC_OverDrive(user, skill)
  675.     # アイテムでスキルを発動した場合はゲージ消費判定を無視
  676.     if $imported["ReproduceFunctions"] && $game_temp.exec_skill_on_item
  677.       return
  678.     end
  679.   end
  680. end
  681. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  682. #==============================================================================
  683. # ■ Game_Actor
  684. #==============================================================================
  685. class Game_Actor < Game_Battler
  686.   #--------------------------------------------------------------------------
  687.   # ● セットアップ
  688.   #     actor_id : アクター ID
  689.   #--------------------------------------------------------------------------
  690.   alias setup_KGC_OverDrive setup
  691.   def setup(actor_id)
  692.     setup_KGC_OverDrive(actor_id)
  693.     @overdrive  = 0
  694.     @drive_type = nil
  695.   end
  696.   #--------------------------------------------------------------------------
  697.   # ○ ドライブタイプの取得
  698.   #--------------------------------------------------------------------------
  699.   def drive_type
  700.     unless @drive_type.is_a?(Array)
  701.       return KGC::OverDrive::DEFAULT_ACTOR_DRIVE_TYPE
  702.     end
  703.     return @drive_type
  704.   end
  705.   #--------------------------------------------------------------------------
  706.   # ○ ドライブスキル習得済み判定
  707.   #--------------------------------------------------------------------------
  708.   def overdrive_skill_learned?
  709.     result = false
  710.     # 一時的に戦闘中フラグを解除
  711.     last_in_battle = $game_temp.in_battle
  712.     $game_temp.in_battle = false
  713.     self.skills.each { |skill|
  714.       if skill.overdrive?
  715.         result = true
  716.         break
  717.       end
  718.     }
  719.     $game_temp.in_battle = last_in_battle
  720.     return result
  721.   end
  722.   #--------------------------------------------------------------------------
  723.   # ○ ゲージ増加可否判定
  724.   #--------------------------------------------------------------------------
  725.   def can_gain_overdrive?
  726.     if KGC::OverDrive::NOT_GAIN_GAUGE_HIDING
  727.       # 非表示
  728.       return false unless od_gauge_visible_l?
  729.     end
  730.     if KGC::OverDrive::HIDE_GAUGE_NO_OD_SKILLS
  731.       # 未修得
  732.       return false unless overdrive_skill_learned?
  733.     end
  734.     return true
  735.   end
  736.   #--------------------------------------------------------------------------
  737.   # ○ ゲージ表示判定
  738.   #--------------------------------------------------------------------------
  739.   def od_gauge_visible?
  740.     return false unless od_gauge_visible_l?
  741.     return false unless can_gain_overdrive?
  742.     return true
  743.   end
  744.   #--------------------------------------------------------------------------
  745.   # ○ ゲージ表示判定 (簡易版)
  746.   #--------------------------------------------------------------------------
  747.   def od_gauge_visible_l?
  748.     # 戦闘中非表示
  749.     if KGC::OverDrive::HIDE_GAUGE_NOT_IN_BATTLE && !$game_temp.in_battle
  750.       return false
  751.     end
  752.     # 非表示
  753.     return false if KGC::OverDrive::HIDE_GAUGE_ACTOR.include?(self.id)
  754.     return true
  755.   end
  756. end
  757. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  758. #==============================================================================
  759. # ■ Game_Enemy
  760. #==============================================================================
  761. class Game_Enemy < Game_Battler
  762.   #--------------------------------------------------------------------------
  763.   # ● オブジェクト初期化
  764.   #     index    : 敵グループ内インデックス
  765.   #     enemy_id : 敵キャラ ID
  766.   #--------------------------------------------------------------------------
  767.   alias initialize_KGC_OverDrive initialize
  768.   def initialize(index, enemy_id)
  769.     initialize_KGC_OverDrive(index, enemy_id)
  770.     @overdrive  = 0
  771.     @drive_type = nil
  772.   end
  773.   #--------------------------------------------------------------------------
  774.   # ○ ドライブタイプの取得
  775.   #--------------------------------------------------------------------------
  776.   def drive_type
  777.     unless @drive_type.is_a?(Array)
  778.       return KGC::OverDrive::DEFAULT_ENEMY_DRIVE_TYPE
  779.     end
  780.     return @drive_type
  781.   end
  782. end
  783. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  784. #==============================================================================
  785. # ■ Window_Base
  786. #==============================================================================
  787. class Window_Base < Window
  788.   #--------------------------------------------------------------------------
  789.   # ○ ドライブゲージの通常時の色 1 の取得
  790.   #--------------------------------------------------------------------------
  791.   def od_gauge_normal_color1
  792.     color = KGC::OverDrive::GAUGE_NORMAL_START_COLOR
  793.     return (color.is_a?(Integer) ? text_color(color) : color)
  794.   end
  795.   #--------------------------------------------------------------------------
  796.   # ○ ドライブゲージの通常時の色 2 の取得
  797.   #--------------------------------------------------------------------------
  798.   def od_gauge_normal_color2
  799.     color = KGC::OverDrive::GAUGE_NORMAL_END_COLOR
  800.     return (color.is_a?(Integer) ? text_color(color) : color)
  801.   end
  802.   #--------------------------------------------------------------------------
  803.   # ○ ドライブゲージの最大時の色 1 の取得
  804.   #--------------------------------------------------------------------------
  805.   def od_gauge_max_color1
  806.     color = KGC::OverDrive::GAUGE_MAX_START_COLOR
  807.     return (color.is_a?(Integer) ? text_color(color) : color)
  808.   end
  809.   #--------------------------------------------------------------------------
  810.   # ○ ドライブゲージの最大時の色 2 の取得
  811.   #--------------------------------------------------------------------------
  812.   def od_gauge_max_color2
  813.     color = KGC::OverDrive::GAUGE_MAX_END_COLOR
  814.     return (color.is_a?(Integer) ? text_color(color) : color)
  815.   end
  816.   #--------------------------------------------------------------------------
  817.   # ● 名前の描画
  818.   #     actor : アクター
  819.   #     x     : 描画先 X 座標
  820.   #     y     : 描画先 Y 座標
  821.   #--------------------------------------------------------------------------
  822.   alias draw_actor_name_KGC_OverDrive draw_actor_name
  823.   def draw_actor_name(actor, x, y)
  824.     draw_actor_od_gauge(actor, x, y, 108)
  825.     draw_actor_name_KGC_OverDrive(actor, x, y)
  826.   end
  827.   #--------------------------------------------------------------------------
  828.   # ○ ドライブゲージの描画
  829.   #     actor : アクター
  830.   #     x     : 描画先 X 座標
  831.   #     y     : 描画先 Y 座標
  832.   #     width : 幅
  833.   #--------------------------------------------------------------------------
  834.   def draw_actor_od_gauge(actor, x, y, width = 120)
  835.     return unless actor.od_gauge_visible?
  836.     n = actor.overdrive % KGC::OverDrive::GAUGE_MAX
  837.     n = KGC::OverDrive::GAUGE_MAX if actor.overdrive_max?
  838.     if KGC::OverDrive::ENABLE_GENERIC_GAUGE && $imported["GenericGauge"]
  839.       # 汎用ゲージ
  840.       file = (actor.overdrive_max? ?
  841.         KGC::OverDrive::GAUGE_MAX_IMAGE : KGC::OverDrive::GAUGE_IMAGE)
  842.       draw_gauge(file,
  843.         x, y, width, n, KGC::OverDrive::GAUGE_MAX,
  844.         KGC::OverDrive::GAUGE_OFFSET,
  845.         KGC::OverDrive::GAUGE_LENGTH,
  846.         KGC::OverDrive::GAUGE_SLOPE)
  847.     else
  848.       # デフォルトゲージ
  849.       gw = width * n / KGC::OverDrive::GAUGE_MAX
  850.       gc1 = (gw == width ? od_gauge_max_color1 : od_gauge_normal_color1)
  851.       gc2 = (gw == width ? od_gauge_max_color2 : od_gauge_normal_color2)
  852.       self.contents.fill_rect(x, y + WLH + KGC::OverDrive::GAUGE_OFFSET_Y,
  853.         width, 6, gauge_back_color)
  854.       self.contents.gradient_fill_rect(
  855.         x, y + WLH + KGC::OverDrive::GAUGE_OFFSET_Y, gw, 6, gc1, gc2)
  856.     end
  857.     draw_actor_od_gauge_value(actor, x, y, width)
  858.   end
  859.   #--------------------------------------------------------------------------
  860.   # ○ ドライブゲージ蓄積量の描画
  861.   #     actor : アクター
  862.   #     x     : 描画先 X 座標
  863.   #     y     : 描画先 Y 座標
  864.   #     width : 幅
  865.   #--------------------------------------------------------------------------
  866.   def draw_actor_od_gauge_value(actor, x, y, width = 120)
  867.     text = ""
  868.     value = actor.overdrive * 100.0 / KGC::OverDrive::GAUGE_MAX
  869.     case KGC::OverDrive::GAUGE_VALUE_STYLE
  870.     when KGC::OverDrive::ValueStyle::IMMEDIATE
  871.       text = actor.overdrive.to_s
  872.     when KGC::OverDrive::ValueStyle::RATE
  873.       text = sprintf("%d%%", actor.overdrive * 100 / KGC::OverDrive::GAUGE_MAX)
  874.     when KGC::OverDrive::ValueStyle::RATE_DETAIL1
  875.       text = sprintf("%0.1f%%", value)
  876.     when KGC::OverDrive::ValueStyle::RATE_DETAIL2
  877.       text = sprintf("%0.2f%%", value)
  878.     when KGC::OverDrive::ValueStyle::NUMBER
  879.       text = "#{actor.overdrive / KGC::OverDrive::GAUGE_MAX}"
  880.     else
  881.       return
  882.     end
  883.     last_font_size = self.contents.font.size
  884.     new_font_size  = KGC::OverDrive::GAUGE_VALUE_FONT_SIZE
  885.     self.contents.font.size = new_font_size
  886.     self.contents.draw_text(
  887.       x, y + WLH + KGC::OverDrive::GAUGE_OFFSET_Y - new_font_size / 2,
  888.       width, new_font_size, text, 2)
  889.     self.contents.font.size = last_font_size
  890.   end
  891. end
  892. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  893. #==============================================================================
  894. # ■ Window_Skill
  895. #==============================================================================
  896. if KGC::OverDrive::HIDE_SKILL_LACK_OF_GAUGE
  897. class Window_Skill < Window_Selectable
  898.   #--------------------------------------------------------------------------
  899.   # ○ スキルをリストに含めるかどうか
  900.   #     skill : スキル
  901.   #--------------------------------------------------------------------------
  902.   unless $@
  903.     alias include_KGC_OverDrive? include? if method_defined?(:include?)
  904.   end
  905.   def include?(skill)
  906.     return false if skill == nil
  907.     if defined?(include_KGC_OverDrive?)
  908.       return false unless include_KGC_OverDrive?(skill)
  909.     end
  910.     if skill.overdrive?
  911.       return (@actor.calc_od_cost(skill) <= @actor.overdrive)
  912.     else
  913.       return true
  914.     end
  915.   end
  916. if method_defined?(:include_KGC_OverDrive?)
  917.   #--------------------------------------------------------------------------
  918.   # ● リフレッシュ
  919.   #--------------------------------------------------------------------------
  920.   def refresh
  921.     @data = []
  922.     for skill in @actor.skills
  923.       next unless include?(skill)
  924.       @data.push(skill)
  925.       if skill.id == @actor.last_skill_id
  926.         self.index = @data.size - 1
  927.       end
  928.     end
  929.     @item_max = @data.size
  930.     create_contents
  931.     for i in 0...@item_max
  932.       draw_item(i)
  933.     end
  934.   end
  935. end
  936. end  # <-- class
  937. end  # <-- if KGC::OverDrive::HIDE_SKILL_LACK_OF_GAUGE
  938. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  939. #==============================================================================
  940. # ■ Scene_Skill
  941. #==============================================================================
  942. class Scene_Skill < Scene_Base
  943.   #--------------------------------------------------------------------------
  944.   # ● スキルの使用 (味方対象以外の使用効果を適用)
  945.   #--------------------------------------------------------------------------
  946.   alias use_skill_nontarget_KGC_OverDrive use_skill_nontarget
  947.   def use_skill_nontarget
  948.     consume_od_gauge
  949.     use_skill_nontarget_KGC_OverDrive
  950.   end
  951.   #--------------------------------------------------------------------------
  952.   # ○ スキル使用時のドライブゲージ消費
  953.   #--------------------------------------------------------------------------
  954.   def consume_od_gauge
  955.     if @skill.od_consume_all?
  956.       @actor.overdrive = 0
  957.     else
  958.       @actor.overdrive -= @actor.calc_od_cost(@skill)
  959.     end
  960.   end
  961. end
  962. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  963. #==============================================================================
  964. # ■ Scene_Battle
  965. #==============================================================================
  966. class Scene_Battle < Scene_Base
  967.   #--------------------------------------------------------------------------
  968.   # ● 戦闘終了
  969.   #     result : 結果 (0:勝利 1:逃走 2:敗北)
  970.   #--------------------------------------------------------------------------
  971.   alias battle_end_KGC_OverDrive battle_end
  972.   def battle_end(result)
  973.     increase_overdrive_on_battle_end(result)
  974.     battle_end_KGC_OverDrive(result)
  975.   end
  976.   #--------------------------------------------------------------------------
  977.   # ○ 戦闘終了時のドライブゲージ増加処理
  978.   #     result : 結果 (0:勝利 1:逃走 2:敗北)
  979.   #--------------------------------------------------------------------------
  980.   def increase_overdrive_on_battle_end(result)
  981.     case result
  982.     when 0  # 勝利
  983.       od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::VICTORY]
  984.       $game_party.existing_members.each { |actor|
  985.         actor.overdrive += od_gain if actor.drive_victory?
  986.       }
  987.     when 1  # 逃走
  988.       od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ESCAPE]
  989.       $game_party.existing_members.each { |actor|
  990.         actor.overdrive += od_gain if actor.drive_escape?
  991.       }
  992.     end
  993.   end
  994.   #--------------------------------------------------------------------------
  995.   # ● 戦闘行動の実行
  996.   #--------------------------------------------------------------------------
  997.   alias execute_action_KGC_OverDrive execute_action
  998.   def execute_action
  999.     increase_overdrive_on_action
  1000.     execute_action_KGC_OverDrive
  1001.   end
  1002.   #--------------------------------------------------------------------------
  1003.   # ○ 行動時のドライブゲージ増加処理
  1004.   #--------------------------------------------------------------------------
  1005.   def increase_overdrive_on_action
  1006.     battler = @active_battler
  1007.     od_gain = 0
  1008.     unit = (battler.actor? ? $game_party : $game_troop)
  1009.     # 孤独戦闘
  1010.     if battler.drive_alone? && unit.existing_members.size == 1
  1011.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ALONE]
  1012.     end
  1013.     # 行動
  1014.     if battler.drive_action?
  1015.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ACTION]
  1016.     end
  1017.     # 瀕死
  1018.     if battler.drive_fatal? && battler.hp < battler.maxhp / 4
  1019.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::FATAL]
  1020.     end
  1021.     # 防御
  1022.     if battler.drive_guard? && battler.action.kind == 0 &&
  1023.         battler.action.basic == 1
  1024.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::GUARD]
  1025.     end
  1026.     battler.overdrive += od_gain
  1027.   end
  1028.   #--------------------------------------------------------------------------
  1029.   # ● 戦闘行動の実行 : スキル
  1030.   #--------------------------------------------------------------------------
  1031.   alias execute_action_skill_KGC_OverDrive execute_action_skill
  1032.   def execute_action_skill
  1033.     execute_action_skill_KGC_OverDrive
  1034.     consume_od_gauge
  1035.   end
  1036.   #--------------------------------------------------------------------------
  1037.   # ○ スキル使用時のドライブゲージ消費
  1038.   #--------------------------------------------------------------------------
  1039.   def consume_od_gauge
  1040.     return unless @active_battler.action.skill?
  1041.     skill = @active_battler.action.skill
  1042.     if skill.od_consume_all?
  1043.       @active_battler.overdrive = 0
  1044.     else
  1045.       @active_battler.overdrive -= @active_battler.calc_od_cost(skill)
  1046.     end
  1047.   end
  1048.   #--------------------------------------------------------------------------
  1049.   # ● ダメージの表示
  1050.   #     target : 対象者
  1051.   #     obj    : スキルまたはアイテム
  1052.   #--------------------------------------------------------------------------
  1053.   alias display_damage_KGC_OverDrive display_damage
  1054.   def display_damage(target, obj = nil)
  1055.     display_damage_KGC_OverDrive(target, obj)
  1056.     return if target.missed || target.evaded
  1057.     display_od_damage(target, obj)
  1058.   end
  1059.   #--------------------------------------------------------------------------
  1060.   # ○ ドライブダメージ表示
  1061.   #     target : 対象者
  1062.   #     obj    : スキルまたはアイテム
  1063.   #--------------------------------------------------------------------------
  1064.   def display_od_damage(target, obj = nil)
  1065.     return if target.dead?
  1066.     return if target.od_damage == 0
  1067.     if target.absorbed                      # 吸収
  1068.       fmt = target.actor? ? Vocab::ActorODDrain : Vocab::EnemyODDrain
  1069.       text = sprintf(fmt, target.name, Vocab::overdrive)
  1070.     elsif target.od_damage > 0              # ダメージ
  1071.       fmt = target.actor? ? Vocab::ActorODLoss : Vocab::EnemyODLoss
  1072.       text = sprintf(fmt, target.name, Vocab::overdrive)
  1073.     else                                    # 回復
  1074.       fmt = target.actor? ? Vocab::ActorODRecovery : Vocab::EnemyODRecovery
  1075.       text = sprintf(fmt, target.name, Vocab::overdrive)
  1076.       Sound.play_recovery
  1077.     end
  1078.     @message_window.add_instant_text(text)
  1079.     wait(30)
  1080.   end
  1081. end
复制代码
回复 支持 反对

使用道具 举报

15

主题

56

帖子

512

积分

⑤进阶

积分
512
 楼主| 发表于 2010-1-29 17:38:38 | 显示全部楼层
  感谢 看看 能不能用..
回复 支持 反对

使用道具 举报

15

主题

56

帖子

512

积分

⑤进阶

积分
512
 楼主| 发表于 2010-1-29 17:41:17 | 显示全部楼层
  日文看 不懂 悲剧了...
回复 支持 反对

使用道具 举报

19

主题

98

帖子

777

积分

⑤进阶

积分
777
发表于 2010-1-29 18:16:22 | 显示全部楼层

Re:谁有  集气脚本呢? 发下  什

日文苦手 大概就这样。

怒气条最大值以及行动后的增加量之类的
# ◆ ドライブゲージ最大値
  #  普通はこのままでOK。微調整したい場合に変更。
  GAUGE_MAX = 1000
  # ◆ ドライブゲージ増加量
  #  高いほどゲージが溜まりやすい。
  #  マイナス値を指定すると減少。
  #  「被ダメージ」は、受けたダメージの最大 HP に対する割合で増加量を算出。
  #  (500 だと、最大 HP 相当のダメージで 500 溜まる)
  GAIN_RATE = [
     80,  # 攻撃
    500,  # 被ダメージ
    200,  # 勝利
    100,  # 逃走
    160,  # 孤独
     40,  # 行動
    160,  # 瀕死
     50,  # 防御
  ]  # ← この ] は消さないこと!

什么行动增加怒气条

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

关于怒气条的绘制

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

引用怒气条图片 没有图片建议 ENABLE_GENERIC_GAUGE = false

  # ◆ ドライブゲージに汎用ゲージを使用する
  #  ≪汎用ゲージ描画≫ 導入時のみ有効。
  ENABLE_GENERIC_GAUGE = true
  # ◆ ドライブゲージ設定
  #  画像は "Graphics/System" から読み込む。
  GAUGE_IMAGE     = "GaugeOD"     # 通常時画像
  GAUGE_MAX_IMAGE = "GaugeODMax"  # 最大時画像
  GAUGE_OFFSET    = [-23, -2]     # 位置補正 [x, y]
  GAUGE_LENGTH    = -4            # 長さ補正
  GAUGE_SLOPE     = 30            # 傾き (-89 ~ 89)

怒气条值显示方面

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


死亡后怒气条是否清零

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

不使用怒气条的角色

  # ◆ ドライブゲージを表示しないアクター
  #  ゲージを隠すアクターのIDを配列に格納。
  HIDE_GAUGE_ACTOR = []

不是战斗画面时隐藏怒气条

  # ◆ 非戦闘時はドライブゲージを隠す
  HIDE_GAUGE_NOT_IN_BATTLE = false

没有学会消耗怒气的技能 是否隐藏

  # ◆ オーバードライブスキル未修得ならゲージを隠す
  HIDE_GAUGE_NO_OD_SKILLS  = true

在隐藏怒气条的情况下 是否增加怒气条

  # ◆ ゲージを隠している場合はゲージを増加させない
  NOT_GAIN_GAUGE_HIDING    = true

怒气条不足的时候 隐藏怒气不足的技能

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

战斗时的消息显示

  # ◆ ドライブゲージ名
  GAUGE_NAME = "ドライブゲージ"
  # ◆ ドライブゲージ変動アイテム使用時のメッセージ
  OD_GAIN_MESSAGE = {
    :drain_a   => "%sは%sを奪われた!",  # 吸収: アクター
    :drain_e   => "%sの%sを奪った!",    # 吸収: 敵
    :loss_a    => "%sの%sが減った!",    # 減少: アクター
    :loss_e    => "%sの%sが減った!",    # 減少: 敵
    :recover_a => "%sの%sが増えた!",    # 増加: アクター
    :recover_e => "%sの%sが増えた!",    # 増加: 敵

下面的用法 请自己去试

至于使用 在技能的备注栏
<over_drive n>  N=消耗量
技能备注栏填写  使用后  怒气条增加量加成
<od_gain_rate n%>  N=多少
在技能或者物品栏 备注填写
<ドライブゲージ増加 n> 加
<ドライブゲージ増加 -n> 减  
回复 支持 反对

使用道具 举报

15

主题

56

帖子

512

积分

⑤进阶

积分
512
 楼主| 发表于 2010-1-29 18:47:08 | 显示全部楼层
感谢   
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-15 19:13 , Processed in 0.024093 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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