Project1

标题: 帮忙翻译下 [打印本页]

作者: 气味123    时间: 2011-1-1 15:54
标题: 帮忙翻译下
本帖最后由 气味123 于 2011-1-3 11:13 编辑
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 連係スキル - KGC_CooperationSkill ◆ VX ◆
  3. #_/    ◇ Last update : 2009/01/25 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  複数のスキルを組み合わせ、別のスキルを発動させる機能です。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

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

  10. module KGC
  11. module CooperationSkill
  12.   # ◆ 連係発動時の名前の区切り文字
  13.   NAME_SEPARATOR = "、"

  14.   # ◆ 連係元スキル発動
  15.   #  true  : 連係元となるスキルもすべて発動する。
  16.   #  false : 連係スキルのみ発動する。
  17.   #   ※ 併用するスクリプトによっては効果がない場合があります。
  18.   EXECUTE_ORIGIN_SKILL = false

  19.   # ◆ ターゲットが同じ場合のみ連係を発動
  20.   #  true  : 元のスキルがすべて同じターゲット(または全体)の場合のみ発動。
  21.   #           ※ ターゲットがランダムのスキルとは相性が良くありません。
  22.   #  false : ターゲットが誰でもスキル条件さえ満たせば発動。
  23.   #          連係スキルのターゲットは、発動時の行動者のターゲット。
  24.   SAME_TARGET_ONLY = true

  25.   # ◆ 敵連係スキル許可
  26.   #  true  : 敵も連係スキル判定を行う。
  27.   #  false : 敵は連係スキルを使用不可。
  28.   PERMIT_ENEMY = true
  29. end
  30. end

  31. #==============================================================================
  32. # ☆ カスタマイズ項目終了 - Customize END ☆
  33. #==============================================================================

  34. $imported = {} if $imported == nil
  35. $imported["CooperationSkill"] = true

  36. module KGC
  37. module CooperationSkill
  38.   # 連係スキル用条件パラメータ
  39.   PARAMS = {
  40.     :level_avg => "LEVEL_AVG|平均レベル",
  41.     :level_min => "LEVEL_MIN|最[小低]レベル",
  42.     :level_max => "LEVEL_MAX|最[大高]レベル",
  43.   }

  44.   # 連係スキル用属性・ステートリスト
  45.   ARRAYS = {
  46.     :attack_element => "ATTACK_ELEMENT|攻撃属性",
  47.     :state          => "STATE|ステート",
  48.   }

  49.   module Regexp
  50.     module Skill
  51.       # 連係スキル開始
  52.       BEGIN_COOPERATE = /<(?:COOPERATION_SKILL|連[係繋]スキル)>/i
  53.       # 連係スキル終了
  54.       END_COOPERATE   = /<\/(?:COOPERATION_SKILL|連[係繋]スキル)>/i
  55.       # 必要スキルリスト
  56.       NEED_SKILLS = /^\s*(?:NEED_SKILLS?|必要スキル)\s*(\d+(?:\s*,\s*\d+)*)\s*/i

  57.       REG_NAME = '[^:\+\-\d\s]+'
  58.       REG_OU   = 'OVER|UNDER|以上|以下'

  59.       # 条件パラメータ
  60.       #  レベル 10 以上  など
  61.       COOPERATE_PARAMS = /^\s*(#{REG_NAME})\s*(\d+)\s*(#{REG_OU})?\s*$/i
  62.       # 属性・ステートリスト
  63.       #  ステート 1,-2,3  など
  64.       COOPERATE_ARRAYS = /^\s*(#{REG_NAME})\s*(\d+(?:\s*,\s*\-?\d+)*)\s*$/i
  65.     end
  66.   end
  67. end
  68. end

  69. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  70. #==============================================================================
  71. # ■ RPG::Skill
  72. #==============================================================================

  73. class RPG::Skill < RPG::UsableItem
  74.   #--------------------------------------------------------------------------
  75.   # ○ 連係スキルであるか
  76.   #--------------------------------------------------------------------------
  77.   def is_cooperation?
  78.     self.note.each_line { |line|
  79.       # 開始タグを探す
  80.       if line =~ KGC::CooperationSkill::Regexp::Skill::BEGIN_COOPERATE
  81.         return true
  82.       end
  83.     }
  84.     return false
  85.   end
  86. end

  87. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  88. #==============================================================================
  89. # ■ Game_Temp
  90. #==============================================================================

  91. class Game_Temp
  92.   #--------------------------------------------------------------------------
  93.   # ● 公開インスタンス変数
  94.   #--------------------------------------------------------------------------
  95.   attr_accessor :judging_cooperation_skill # 連係スキル判定中フラグ
  96.   #--------------------------------------------------------------------------
  97.   # ● オブジェクト初期化
  98.   #--------------------------------------------------------------------------
  99.   alias initialize_KGC_CooperationSkill initialize
  100.   def initialize
  101.     initialize_KGC_CooperationSkill

  102.     @judging_cooperation_skill = false
  103.   end
  104. end

  105. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  106. #==============================================================================
  107. # □ Game_CooperationSkill
  108. #------------------------------------------------------------------------------
  109. #   連係スキルの情報を扱うクラスです。
  110. #==============================================================================

  111. class Game_CooperationSkill
  112.   #--------------------------------------------------------------------------
  113.   # ○ 公開インスタンス変数
  114.   #--------------------------------------------------------------------------
  115.   attr_reader   :id                       # 発動スキル ID
  116.   attr_reader   :need_skills              # 必要スキル ID リスト
  117.   attr_reader   :params                   # 条件パラメータ
  118.   attr_reader   :params_over              # 条件パラメータ: ~以上
  119.   attr_reader   :need_arrays              # 必要属性・ステートリスト
  120.   attr_reader   :disuse_arrays            # 不要属性・ステートリスト
  121.   #--------------------------------------------------------------------------
  122.   # ○ オブジェクト初期化
  123.   #     skill_id : スキル ID
  124.   #     note     : メモ
  125.   #--------------------------------------------------------------------------
  126.   def initialize(skill_id, note)
  127.     @id            = skill_id
  128.     @need_skills   = []
  129.     @params        = {}
  130.     @params_over   = {}
  131.     @need_arrays   = {}
  132.     @disuse_arrays = {}
  133.     parse_note(note)
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ○ スキルを取得
  137.   #--------------------------------------------------------------------------
  138.   def skill
  139.     return $data_skills[@id]
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ○ メモ欄を解析
  143.   #     note : メモ
  144.   #--------------------------------------------------------------------------
  145.   def parse_note(note)
  146.     coop_flag = false
  147.     note.each_line { |line|
  148.       case line
  149.       when KGC::CooperationSkill::Regexp::Skill::BEGIN_COOPERATE
  150.         # 連係スキル定義開始
  151.         coop_flag = true
  152.       when KGC::CooperationSkill::Regexp::Skill::END_COOPERATE
  153.         # 連係スキル定義終了
  154.         coop_flag = false
  155.       end
  156.       next unless coop_flag

  157.       case line
  158.       when KGC::CooperationSkill::Regexp::Skill::NEED_SKILLS
  159.         # 必要スキル
  160.         parse_need_skills($1.scan(/\-?\d+/))
  161.       when KGC::CooperationSkill::Regexp::Skill::COOPERATE_PARAMS
  162.         # パラメータ
  163.         parse_params($1, $2.to_i, $3)
  164.       when KGC::CooperationSkill::Regexp::Skill::COOPERATE_ARRAYS
  165.         # 属性・ステート
  166.         parse_arrays($1, $2.scan(/\-?\d+/))
  167.       end
  168.     }
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ○ 必要スキルを解析
  172.   #     list  : スキル ID 一覧
  173.   #--------------------------------------------------------------------------
  174.   def parse_need_skills(list)
  175.     skills = []
  176.     list.each { |num|
  177.       skills |= [num.to_i]
  178.     }
  179.     @need_skills << skills
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ○ 連係スキルの能力値修正を適用
  183.   #     param : 対象パラメータ
  184.   #     value : 修正値
  185.   #     cond  : 以上 or 以下
  186.   #--------------------------------------------------------------------------
  187.   def parse_params(param, value, cond)
  188.     KGC::CooperationSkill::PARAMS.each { |k, v|
  189.       next if param !~ /(?:#{v})/i

  190.       @params[k]      = value
  191.       @params_over[k] = (cond !~ /UNDER|以下/i)
  192.       break
  193.     }
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ○ 連係スキルの追加属性・ステートを適用
  197.   #     param : 対象パラメータ
  198.   #     list  : 属性・ステート一覧
  199.   #--------------------------------------------------------------------------
  200.   def parse_arrays(param, list)
  201.     KGC::CooperationSkill::ARRAYS.each { |k, v|
  202.       next if param !~ /(?:#{v})/i

  203.       if @need_arrays[k] == nil
  204.         @need_arrays[k]   = []
  205.         @disuse_arrays[k] = []
  206.       end
  207.       list.each { |num|
  208.         n = num.to_i
  209.         if n > 0
  210.           @need_arrays[k] |= [n]
  211.         else
  212.           @disuse_arrays[k] |= [n.abs]
  213.         end
  214.       }
  215.       break
  216.     }
  217.   end
  218. end

  219. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  220. $data_skills = load_data("Data/Skills.rvdata") if $data_skill == nil

  221. module KGC::CooperationSkill
  222.   # 連係スキルリストを変換
  223.   list = []
  224.   $data_skills.each { |skill|
  225.     next if skill == nil
  226.     next unless skill.is_cooperation?

  227.     list << Game_CooperationSkill.new(skill.id, skill.note)
  228.   }
  229.   SKILLS = list
  230. end

  231. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  232. #==============================================================================
  233. # ■ Game_Actor
  234. #==============================================================================

  235. class Game_Actor < Game_Battler
  236.   #--------------------------------------------------------------------------
  237.   # ● スキルの使用可能判定
  238.   #     skill : スキル
  239.   #--------------------------------------------------------------------------
  240.   def skill_can_use?(skill)
  241.     return super
  242.   end
  243. end

  244. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  245. #==============================================================================
  246. # □ Game_CooperationSkillUser
  247. #------------------------------------------------------------------------------
  248. #   連係スキル発動者の情報を扱うクラスです。
  249. #==============================================================================

  250. class Game_CooperationSkillUser
  251.   #--------------------------------------------------------------------------
  252.   # ○ 公開インスタンス変数
  253.   #--------------------------------------------------------------------------
  254.   attr_reader   :index                    # 発動者のインデックス
  255.   attr_reader   :skill_id                 # 発動者が使用したスキル ID
  256.   attr_reader   :target_battlers          # 攻撃対象
  257.   #--------------------------------------------------------------------------
  258.   # ○ オブジェクト初期化
  259.   #--------------------------------------------------------------------------
  260.   def initialize(battler)
  261.     if $imported["Counter"]
  262.       battler.action.made_targets = nil
  263.     end
  264.     @index = battler.index
  265.     @skill_id = battler.action.skill_id
  266.     @target_battlers = []
  267.     battler.action.make_targets.each { |t|
  268.       @target_battlers << t.index
  269.     }
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ○ 同値判定
  273.   #--------------------------------------------------------------------------
  274.   def equal?(obj)
  275.     return false unless obj.is_a?(Game_CooperationSkillUser)
  276.     return false if @index != obj.index
  277.     return false if skill_id != obj.skill_id
  278.     return false if @target_battlers != obj.target_battlers

  279.     return true
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ○ 等値演算子
  283.   #--------------------------------------------------------------------------
  284.   def ==(obj)
  285.     return self.equal?(obj)
  286.   end
  287. end

  288. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  289. #==============================================================================
  290. # □ Game_CooperationBattler
  291. #------------------------------------------------------------------------------
  292. #   連係スキル発動時のダミーバトラークラスです。
  293. #==============================================================================

  294. class Game_CooperationBattler < Game_Battler
  295.   #--------------------------------------------------------------------------
  296.   # ● 公開インスタンス変数
  297.   #--------------------------------------------------------------------------
  298.   attr_accessor :battler_type             # :actor or :enemy
  299.   attr_accessor :exec_battlers            # 発動者リスト
  300.   attr_accessor :coop_skill               # 連係スキル情報
  301.   #--------------------------------------------------------------------------
  302.   # ● オブジェクト初期化
  303.   #--------------------------------------------------------------------------
  304.   def initialize
  305.     @battler_type  = :actor
  306.     @exec_battlers = []
  307.     @coop_skill    = nil
  308.     super
  309.   end
  310.   #--------------------------------------------------------------------------
  311.   # ● アクターか否かの判定
  312.   #--------------------------------------------------------------------------
  313.   def actor?
  314.     return (@battler_type == :actor)
  315.   end
  316.   #--------------------------------------------------------------------------
  317.   # ● インデックス取得
  318.   #--------------------------------------------------------------------------
  319.   def index
  320.     return 0
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ● 表示名の取得
  324.   #--------------------------------------------------------------------------
  325.   def name
  326.     str = ""
  327.     members = (actor? ? $game_party : $game_troop).members
  328.     exec_battlers.each_with_index { |b, i|
  329.       str += members[b.index].name
  330.       if i < exec_battlers.size - 1
  331.         str += KGC::CooperationSkill::NAME_SEPARATOR
  332.       end
  333.     }
  334.     return str
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ● レベルの取得
  338.   #--------------------------------------------------------------------------
  339.   def level
  340.     values = []
  341.     exec_battlers.each { |b| values << b.level }
  342.     return values.max
  343.   end
  344.   #--------------------------------------------------------------------------
  345.   # ○ 最大レベルの取得
  346.   #--------------------------------------------------------------------------
  347.   def level_max
  348.     return level
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ○ 平均レベルの取得
  352.   #--------------------------------------------------------------------------
  353.   def level_avg
  354.     n = 0
  355.     exec_battlers.each { |b| n += b.level }
  356.     return (n / exec_battlers.size)
  357.   end
  358.   #--------------------------------------------------------------------------
  359.   # ● MaxHP の取得
  360.   #--------------------------------------------------------------------------
  361.   def maxhp
  362.     values = []
  363.     exec_battlers.each { |b| values << b.maxhp }
  364.     return values.max
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ● MaxMP の取得
  368.   #--------------------------------------------------------------------------
  369.   def maxmp
  370.     values = []
  371.     exec_battlers.each { |b| values << b.maxmp }
  372.     return values.max
  373.   end
  374.   #--------------------------------------------------------------------------
  375.   # ● HP の取得
  376.   #--------------------------------------------------------------------------
  377.   def hp
  378.     values = []
  379.     exec_battlers.each { |b| values << b.hp }
  380.     return values.min
  381.   end
  382.   #--------------------------------------------------------------------------
  383.   # ● MP の取得
  384.   #--------------------------------------------------------------------------
  385.   def mp
  386.     values = []
  387.     exec_battlers.each { |b| values << b.mp }
  388.     return values.min
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ○ ドライブゲージ量取得
  392.   #--------------------------------------------------------------------------
  393.   def overdrive
  394.     values = []
  395.     exec_battlers.each { |b| values << b.overdrive }
  396.     return values.min
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● 攻撃力の取得
  400.   #--------------------------------------------------------------------------
  401.   def atk
  402.     values = []
  403.     exec_battlers.each { |b| values << b.atk }
  404.     return values.max
  405.   end
  406.   #--------------------------------------------------------------------------
  407.   # ● 防御力の取得
  408.   #--------------------------------------------------------------------------
  409.   def def
  410.     values = []
  411.     exec_battlers.each { |b| values << b.def }
  412.     return values.max
  413.   end
  414.   #--------------------------------------------------------------------------
  415.   # ● 精神力の取得
  416.   #--------------------------------------------------------------------------
  417.   def spi
  418.     values = []
  419.     exec_battlers.each { |b| values << b.spi }
  420.     return values.max
  421.   end
  422.   #--------------------------------------------------------------------------
  423.   # ● 敏捷性の取得
  424.   #--------------------------------------------------------------------------
  425.   def agi
  426.     values = []
  427.     exec_battlers.each { |b| values << b.agi }
  428.     return values.max
  429.   end
  430.   #--------------------------------------------------------------------------
  431.   # ● 命中率の取得
  432.   #--------------------------------------------------------------------------
  433.   def hit
  434.     values = []
  435.     exec_battlers.each { |b| values << b.hit }
  436.     return [values.max, 100].max
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # ● 回避率の取得
  440.   #--------------------------------------------------------------------------
  441.   def eva
  442.     return 0
  443.   end
  444.   #--------------------------------------------------------------------------
  445.   # ● クリティカル率の取得
  446.   #--------------------------------------------------------------------------
  447.   def cri
  448.     values = []
  449.     exec_battlers.each { |b| values << b.cri }
  450.     return values.max
  451.   end
  452.   #--------------------------------------------------------------------------
  453.   # ● MP の変更
  454.   #     mp : 新しい MP
  455.   #--------------------------------------------------------------------------
  456.   def mp=(mp)
  457.     # 加担者全員の MP を減らす
  458.     diff = self.mp - mp
  459.     exec_battlers.each { |b| b.mp -= diff }
  460.   end
  461.   #--------------------------------------------------------------------------
  462.   # ○ ドライブゲージの操作
  463.   #--------------------------------------------------------------------------
  464.   def overdrive=(value)
  465.     # 加担者全員のドライブゲージを減らす
  466.     diff = self.overdrive - overdrive
  467.     exec_battlers.each { |b| b.overdrive -= diff }
  468.   end
  469.   #--------------------------------------------------------------------------
  470.   # ● 全回復
  471.   #--------------------------------------------------------------------------
  472.   def recover_all
  473.     # 何もしない
  474.   end
  475.   #--------------------------------------------------------------------------
  476.   # ● 戦闘不能判定
  477.   #--------------------------------------------------------------------------
  478.   def dead?
  479.     exec_battlers.each { |b|
  480.       return true if b.dead?
  481.     }
  482.     return false
  483.   end
  484.   #--------------------------------------------------------------------------
  485.   # ● 存在判定
  486.   #--------------------------------------------------------------------------
  487.   def exist?
  488.     exec_battlers.each { |b|
  489.       return false unless b.exist?
  490.     }
  491.     return true
  492.   end
  493.   #--------------------------------------------------------------------------
  494.   # ● コマンド入力可能判定
  495.   #--------------------------------------------------------------------------
  496.   def inputable?
  497.     exec_battlers.each { |b|
  498.       return false unless b.inputtable?
  499.     }
  500.     return true
  501.   end
  502.   #--------------------------------------------------------------------------
  503.   # ● 行動可能判定
  504.   #--------------------------------------------------------------------------
  505.   def movable?
  506.     exec_battlers.each { |b|
  507.       return false unless b.movable?
  508.     }
  509.     return true
  510.   end
  511.   #--------------------------------------------------------------------------
  512.   # ● 沈黙状態判定
  513.   #--------------------------------------------------------------------------
  514.   def silent?
  515.     exec_battlers.each { |b|
  516.       return true if b.silent?
  517.     }
  518.     return false
  519.   end
  520.   #--------------------------------------------------------------------------
  521.   # ● 暴走状態判定
  522.   #--------------------------------------------------------------------------
  523.   def berserker?
  524.     return false
  525.   end
  526.   #--------------------------------------------------------------------------
  527.   # ● 混乱状態判定
  528.   #--------------------------------------------------------------------------
  529.   def confusion?
  530.     return false
  531.   end
  532.   #--------------------------------------------------------------------------
  533.   # ● 防御中判定
  534.   #--------------------------------------------------------------------------
  535.   def guarding?
  536.     return false
  537.   end
  538.   #--------------------------------------------------------------------------
  539.   # ● 通常攻撃の属性取得
  540.   #--------------------------------------------------------------------------
  541.   def element_set
  542.     result = []
  543.     exec_battlers.each { |b| result |= b.element_set }
  544.     return result
  545.   end
  546.   #--------------------------------------------------------------------------
  547.   # ● 通常攻撃のステート変化 (+) 取得
  548.   #--------------------------------------------------------------------------
  549.   def plus_state_set
  550.     result = []
  551.     exec_battlers.each { |b| result |= b.plus_state_set }
  552.     return result
  553.   end
  554.   #--------------------------------------------------------------------------
  555.   # ● 通常攻撃のステート変化 (-) 取得
  556.   #--------------------------------------------------------------------------
  557.   def minus_state_set
  558.     result = []
  559.     exec_battlers.each { |b| result |= b.minus_state_set }
  560.     return result
  561.   end
  562.   #--------------------------------------------------------------------------
  563.   # ● ステート [スリップダメージ] 判定
  564.   #--------------------------------------------------------------------------
  565.   def slip_damage?
  566.     return false
  567.   end
  568.   #--------------------------------------------------------------------------
  569.   # ● ステート [命中率減少] 判定
  570.   #--------------------------------------------------------------------------
  571.   def reduce_hit_ratio?
  572.     return false
  573.   end
  574. end

  575. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  576. #==============================================================================
  577. # ■ Scene_Battle
  578. #==============================================================================

  579. class Scene_Battle < Scene_Base
  580.   #--------------------------------------------------------------------------
  581.   # ● 開始処理
  582.   #--------------------------------------------------------------------------
  583.   alias start_KGC_CooperationSkill start
  584.   def start
  585.     start_KGC_CooperationSkill

  586.     init_cooperation_skill
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ○ 連係スキル用変数初期化
  590.   #--------------------------------------------------------------------------
  591.   def init_cooperation_skill
  592.     @cooperation_skill_judged = false
  593.     @cooperation_skill_exec   = false
  594.     @cooperation_skill_data   = nil
  595.     @cooperate_actors  = []
  596.     @cooperate_enemies = []
  597.   end
  598.   #--------------------------------------------------------------------------
  599.   # ● パーティコマンド選択の開始
  600.   #--------------------------------------------------------------------------
  601.   alias start_party_command_selection_KGC_CooperationSkill
  602.     start_party_command_selection
  603.   def start_party_command_selection
  604.     if $game_temp.in_battle
  605.       init_cooperation_skill
  606.     end

  607.     start_party_command_selection_KGC_CooperationSkill
  608.   end
  609.   #--------------------------------------------------------------------------
  610.   # ● 戦闘処理の実行開始
  611.   #--------------------------------------------------------------------------
  612.   alias start_main_KGC_CooperationSkill start_main
  613.   def start_main
  614.     start_main_KGC_CooperationSkill

  615.     init_cooperate_battler_list
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ○ 判定用データ初期化
  619.   #--------------------------------------------------------------------------
  620.   def init_cooperate_battler_list
  621.     [:actor, :enemy].each { |i|
  622.       case i
  623.       when :actor
  624.         cooperate_battlers = @cooperate_actors
  625.         members = $game_party.members
  626.       when :enemy
  627.         cooperate_battlers = @cooperate_enemies
  628.         members = $game_troop.members
  629.       end
  630.       # 対象側バトラーを設定
  631.       cooperate_battlers.clear
  632.       unless KGC::CooperationSkill::EXECUTE_ORIGIN_SKILL
  633.         members.each { |battler|
  634.           next unless battler.action.skill?
  635.           cooperate_battlers << Game_CooperationSkillUser.new(battler)
  636.         }
  637.       end
  638.     }
  639.   end
  640.   #--------------------------------------------------------------------------
  641.   # ● 戦闘行動の実行
  642.   #--------------------------------------------------------------------------
  643.   alias execute_action_KGC_CooperationSkill execute_action
  644.   def execute_action
  645.     @cooperation_skill_judged = false

  646.     if KGC::CooperationSkill::EXECUTE_ORIGIN_SKILL
  647.       execute_action_KGC_CooperationSkill
  648.       judge_cooperation_skill(@active_battler)
  649.     else
  650.       judge_cooperation_skill(@active_battler)
  651.       unless @cooperation_skill_judged && @cooperation_skill_exec
  652.         execute_action_KGC_CooperationSkill
  653.       end
  654.     end

  655.     if @cooperation_skill_exec
  656.       if @cooperation_skill_judged
  657.         execute_cooperation_skill
  658.       else
  659.         finish_cooperation_skill
  660.       end
  661.     end
  662.   end
  663.   #--------------------------------------------------------------------------
  664.   # ○ 連係スキル第一発動判定
  665.   #     battler : 行動者
  666.   #--------------------------------------------------------------------------
  667.   def judge_cooperation_skill(battler)
  668.     return false if @cooperation_skill_judged
  669.     return false if @cooperation_skill_exec
  670.     @cooperation_skill_judged = true

  671.     unit = (battler.is_a?(Game_Actor) ? $game_troop : $game_party)
  672.     if battler.action.kind == 1
  673.       # 対象が残っていれば第二発動判定
  674.       unless unit.all_dead?
  675.         return judge_cooperation_skill_second(battler)
  676.       end
  677.     else
  678.       # 行動がスキル以外なら判定用配列から削除
  679.       if unit.is_a?(Game_Party)
  680.         remove_cooperate_battler(:actor, battler)
  681.       elsif unit.is_a?(Game_Troop)
  682.         remove_cooperate_battler(:enemy, battler)
  683.       end
  684.     end
  685.     return false
  686.   end
  687.   #--------------------------------------------------------------------------
  688.   # ○ 連係加担者削除
  689.   #     type    : :actor or :enemy
  690.   #     battler : 削除対象
  691.   #--------------------------------------------------------------------------
  692.   def remove_cooperate_battler(type, battler)
  693.     battlers = (type == :actor ? @cooperate_actors : @cooperate_enemies)
  694.     battlers.each_index { |i|
  695.       if battlers[i].index == battler.index
  696.         battlers[i] = nil
  697.       end
  698.     }
  699.     battlers.compact!
  700.   end
  701.   #--------------------------------------------------------------------------
  702.   # ○ 連係スキル第二発動判定
  703.   #     battler : 行動者
  704.   #--------------------------------------------------------------------------
  705.   def judge_cooperation_skill_second(battler)
  706.     # 判定用データ作成
  707.     @current_cooperate_user = Game_CooperationSkillUser.new(battler)
  708.     if battler.is_a?(Game_Actor)
  709.       remove_cooperate_battler(:actor, battler)
  710.       @cooperate_actors |= [@current_cooperate_user]
  711.     elsif battler.is_a?(Game_Enemy)
  712.       remove_cooperate_battler(:enemy, battler)
  713.       @cooperate_enemies |= [@current_cooperate_user]
  714.     end
  715.     # 連係スキル発動判定
  716.     KGC::CooperationSkill::SKILLS.each { |cs|
  717.       # アクター判定
  718.       if battler.is_a?(Game_Actor)
  719.         judge_cooperation_skill_third(:actor, cs)
  720.       # エネミー判定
  721.       elsif battler.is_a?(Game_Enemy)
  722.         judge_cooperation_skill_third(:enemy, cs)
  723.       end

  724.       break if @cooperation_skill_exec
  725.     }
  726.     return @cooperation_skill_exec
  727.   end
  728.   #--------------------------------------------------------------------------
  729.   # ○ 連係スキル第三発動判定
  730.   #     type    : :actor or :enemy
  731.   #     cs_data : Cooperation skill data
  732.   #--------------------------------------------------------------------------
  733.   def judge_cooperation_skill_third(type, cs_data)
  734.     if type == :enemy
  735.       # エネミーに発動させない場合は戻る
  736.       return unless KGC::CooperationSkill::PERMIT_ENEMY
  737.     end

  738.     @cooperation_skill_exec = false
  739.     case type
  740.     when :actor
  741.       cooperate_battlers = @cooperate_actors
  742.       members = $game_party.members
  743.     when :enemy
  744.       cooperate_battlers = @cooperate_enemies
  745.       members = $game_troop.members
  746.     end

  747.     @exec_battlers = create_cooperation_exec_battlers(cs_data,
  748.       cooperate_battlers, members)
  749.     # 行動者が加担していなければ戻る
  750.     return if @exec_battlers.empty?

  751.     # 同一ターゲットを指定していなければ戻る
  752.     return unless same_target_include?(cs_data, cooperate_battlers, members)

  753.     $game_temp.judging_cooperation_skill = true
  754.     prepare_cooperation_exec(type, cs_data, cooperate_battlers, members)
  755.     $game_temp.judging_cooperation_skill = false
  756.   end
  757.   #--------------------------------------------------------------------------
  758.   # ○ 連係スキル発動者リスト作成
  759.   #     cs_data            : Cooperation skill data
  760.   #     cooperate_battlers : 連係加担者リスト
  761.   #     members            : 連係加担側のメンバー全体
  762.   #--------------------------------------------------------------------------
  763.   def create_cooperation_exec_battlers(cs_data, cooperate_battlers, members)
  764.     battlers = []
  765.     cs_data.need_skills.each { |ns|
  766.       battlers.clear
  767.       # 行動者加担判定
  768.       next unless ns.include?(@current_cooperate_user.skill_id)

  769.       # 全必要スキル充足判定
  770.       skills = ns.clone
  771.       ns.each { |skill_id|
  772.         user = cooperate_battlers.find { |cb|
  773.           skill_id == cb.skill_id && !battlers.include?(cb)
  774.         }
  775.         # 使用者がいなければ失敗判定
  776.         if user == nil
  777.           battlers.clear
  778.           skills = [0]
  779.           break
  780.         end
  781.         battlers << user
  782.         skills.delete(skill_id)
  783.       }
  784.       break if skills.empty?  # 判定用配列が空 ==> 必要スキル充足
  785.     }

  786.     unless cooperation_conditions_satisfy?(cs_data, battlers, members)
  787.       battlers = []
  788.     end

  789.     return battlers
  790.   end
  791.   #--------------------------------------------------------------------------
  792.   # ○ 使用条件充足判定
  793.   #     cs_data            : Cooperation skill data
  794.   #     candidate_battlers : 判定対象の連係加担者リスト
  795.   #     members            : 連係加担側のメンバー全体
  796.   #--------------------------------------------------------------------------
  797.   def cooperation_conditions_satisfy?(cs_data, candidate_battlers, members)
  798.     return if candidate_battlers.empty?

  799.     # パラメータ算出
  800.     level_avg = 0
  801.     levels = []
  802.     candidate_battlers.each { |cb|
  803.       battler = members[cb.index]
  804.       level_avg += battler.level
  805.       levels << battler.level
  806.     }
  807.     level_avg /= members.size

  808.     comp = Proc.new { |a, b, over| over ? a >= b : a <= b }  # 判定用 Proc

  809.     cs_data.params.each { |k, v|
  810.       param = 0
  811.       case k
  812.       when :level_avg  # 平均レベル
  813.         param = level_avg
  814.       when :level_min  # 最低レベル
  815.         param = levels.min
  816.       when :level_max  # 最高レベル
  817.         param = levels.max
  818.       end
  819.       return false unless comp.call(param, v, cs_data.params_over[k])
  820.     }

  821.     return true
  822.   end
  823.   #--------------------------------------------------------------------------
  824.   # ○ 連係ターゲット一致判定
  825.   #     cs_data            : Cooperation skill data
  826.   #     cooperate_battlers : 連係加担者リスト
  827.   #     members            : 連係加担側のメンバー全体
  828.   #--------------------------------------------------------------------------
  829.   def same_target_include?(cs_data, cooperate_battlers, members)
  830.     return true unless KGC::CooperationSkill::SAME_TARGET_ONLY

  831.     # 同じターゲットを指定しているか判定
  832.     duplicate_battlers = (0..99).to_a
  833.     @exec_battlers.each { |eb|
  834.       duplicate_battlers &= eb.target_battlers
  835.     }
  836.     return (duplicate_battlers.size > 0)
  837.   end
  838.   #--------------------------------------------------------------------------
  839.   # ○ 連係発動準備
  840.   #     type               : :actor or :enemy
  841.   #     cs_data            : Cooperation skill data
  842.   #     cooperate_battlers : 連係加担者リスト
  843.   #     members            : 連係加担側のメンバー全体
  844.   #--------------------------------------------------------------------------
  845.   def prepare_cooperation_exec(type, cs_data, cooperate_battlers, members)
  846.     # 発動可否判定
  847.     @exec_battlers.each { |eb|
  848.       battler = members[eb.index]
  849.       unless battler.exist? && battler.skill_can_use?(cs_data.skill)
  850.         return
  851.       end
  852.     }

  853.     @cooperation_skill_exec = true
  854.     @cooperation_skill_data = cs_data
  855.     @cooperation_skill_user = type

  856.     # 発動者を行動順リストから削除
  857.     cooperate_battlers.each_with_index { |cb, i|
  858.       if @exec_battlers.include?(cb)
  859.         @action_battlers.delete(members[cb.index])
  860.         cooperate_battlers[i] = nil
  861.       end
  862.     }
  863.     cooperate_battlers.compact!
  864.   end
  865.   #--------------------------------------------------------------------------
  866.   # ○ 連係スキル発動
  867.   #--------------------------------------------------------------------------
  868.   def execute_cooperation_skill
  869.     # ダミーを登録
  870.     @action_battlers.unshift(create_cooperation_skill_battler)
  871.   end
  872.   #--------------------------------------------------------------------------
  873.   # ○ 連係発動者 (ダミーバトラー) 作成
  874.   #--------------------------------------------------------------------------
  875.   def create_cooperation_skill_battler
  876.     battler = Game_CooperationBattler.new
  877.     battler.battler_type = @cooperation_skill_user
  878.     battler.coop_skill   = @cooperation_skill_data
  879.     battler.action.set_skill(@cooperation_skill_data.id)

  880.     # ターゲット取得
  881.     members = (@cooperation_skill_user == :actor ?
  882.       $game_party : $game_troop).members
  883.     target = (0..99).to_a
  884.     @exec_battlers.each { |eb|
  885.       battler.exec_battlers << members[eb.index]
  886.       target &= eb.target_battlers
  887.     }
  888.     if target.empty?
  889.       # ターゲット不明なら最後の行動者のターゲットを採用
  890.       target = @current_cooperate_user.target_battlers
  891.     end
  892.     battler.action.target_index = target[rand(target.size)]

  893.     return battler
  894.   end
  895.   #--------------------------------------------------------------------------
  896.   # ○ 連係スキル終了
  897.   #--------------------------------------------------------------------------
  898.   def finish_cooperation_skill
  899.     @cooperation_skill_exec = false
  900.     @cooperation_skill_data = nil
  901.     @exec_battlers          = []
  902.   end
  903.   #--------------------------------------------------------------------------
  904.   # ○ 連係スキル加担判定
  905.   #     battler : 判定するバトラー
  906.   #--------------------------------------------------------------------------
  907.   def cooperation_exec?(battler)
  908.     return false unless @cooperation_skill_exec

  909.     if battler.is_a?(Game_Actor) || KGC::CooperationSkill::PERMIT_ENEMY
  910.       # 発動者に含まれているか判定
  911.       @exec_battlers.each_index { |i|
  912.         return true if @exec_battlers[i].index == battler.index
  913.       }
  914.     end
  915.     return false
  916.   end
  917. end
复制代码

作者: 一箭烂YiJL    时间: 2011-1-1 16:00
这个脚本是不是合体技?
作者: 315038639    时间: 2011-1-1 16:14
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_ /_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_ /联络技巧◆ - KGC_CooperationSkill◆◆VX的
#_ /◇最后更新:2009/01/25◇
#_/----------------------------------------------- -----------------------------
#_ /组合多种技能,有能力调用另一个技能。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_ /_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#================================================= =============================
货号#自定义★ - ★自定义的BEGIN
#================================================= =============================

KGC的模块
模块CooperationSkill
  #分隔符时启动◆作品名称
  NAME_SEPARATOR =“,”

  ◆消防联络技巧#元
  #真:所有的技能从中消防工程。
  #错误:只有技能,消防工程。
  #※没有脚本的综合效果。
  EXECUTE_ORIGIN_SKILL =假

  #只有当您激活相同的目标◆
  #正确的:原来的目标是所有(或所有)只有激活时同样的技能。
  #技能,而不是一个随机的目标是很好的※。
  #错误:解雇任何人,即使符合技能要求的目标。
  联络技巧#目标,激活时的行动目标。
  SAME_TARGET_ONLY =真

  #◆工程技术允许敌人
  #真:判断敌人的技能一起工作。
  #错误:没有敌人的联络能力。
  PERMIT_ENEMY =真
结束
结束

#================================================= =============================
#☆结束定制内容 - 自定义完☆
#================================================= =============================

进口= $ $ {}如果进口零==
进口$ [“CooperationSkill”] =真

KGC的模块
模块CooperationSkill
  对技能要求#中的参数结合
  参数= {
    :Level_avg“=>”LEVEL_AVG |平均水平,“
    :Level_min“=>”LEVEL_MIN |的最小型低]的水平,“
    :Level_max“=>”LEVEL_MAX |顶部[Oodaka]的水平,“
  }

  #属性列表的技能,为国家的联系
  阵列= {
    :Attack_element“=>”ATTACK_ELEMENT |攻击属性“
    :国家“=>”态|国“
  }

  模块的regexp
    技能模块
      #启动联络技巧
      BEGIN_COOPERATE = /<(?: COOPERATION_SKILL |连续[脚腕关系]技能)“/我
      #结束联络技巧
      END_COOPERATE = / <\ /(:?COOPERATION_SKILL |连续[脚腕关系]技能)“/我
      #所需技能列表
      NEED_SKILLS = / ^ \秒*(:?NEED_SKILLS |技能要求?)\秒*(\ d +可(:\ S的*,\的*是\ D +)*?)\的* /我

      REG_NAME ='[^:\ + \ - \ ð \秒] +'
      REG_OU =结束了|下|更多|少'

      条件参数#
      #10或更高的水平
      COOPERATE_PARAMS = / ^ \秒*(#{REG_NAME})\秒*(\ d +可)\秒*(#{REG_OU})?\ S的* $ /我
      #属性的国家名单
      国家#1,2,3,
      COOPERATE_ARRAYS = / ^ \秒*(#{REG_NAME})\秒*(\ d +可(:\ S的*,\秒* \ - \的D +)*?)\的* $ /我
    结束
  结束
结束
结束

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#================================================= =============================
#■角色扮演::技能
#================================================= =============================

角色扮演类::技能<角色扮演::UsableItem
  #------------------------------------------------- -------------------------
  ○什么是联络技巧#
  #------------------------------------------------- -------------------------
  高清is_cooperation?
    self.note.each_line {|行|
      #查找开始标记
      如果行=〜KGC的::CooperationSkill::正则表达式::技能::BEGIN_COOPERATE
        返回true
      结束
    }
    返回false
  结束
结束

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#================================================= =============================
#■Game_Temp
#================================================= =============================

类Game_Temp
  #------------------------------------------------- -------------------------
  ●拓基米#实例变量
  #------------------------------------------------- -------------------------
  attr_accessor:judging_cooperation_skill#旗决定联络技巧
  #------------------------------------------------- -------------------------
  ●#对象初始化
  #------------------------------------------------- -------------------------
  别名initialize_KGC_CooperationSkill初始化
  高清初始化
    initialize_KGC_CooperationSkill

    @ Judging_cooperation_skill =假
  结束
结束

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#================================================= =============================
#□Game_CooperationSkill
#------------------------------------------------- -----------------------------
#类联络技巧来处理信息。
#================================================= =============================

类Game_CooperationSkill
  #------------------------------------------------- -------------------------
  #实例变量拓博○
  #------------------------------------------------- -------------------------
  attr_reader:身份证编号#技能触发
  attr_reader:need_skills#先决条件ID列表
  attr_reader:条件参数参数#
  attr_reader:params_over#状态参数: - 更多
  attr_reader:need_arrays#列出所需状态的属性
  attr_reader:disuse_arrays#列出所需状态的属性
  #------------------------------------------------- -------------------------
  #初始化对象○
  #Skill_id:技能的ID
  #注:请注意
  #------------------------------------------------- -------------------------
  高清初始化(skill_id,注)
    @标识= skill_id
    @ Need_skills = []
    @参数= {}
    @ Params_over = {}
    @ Need_arrays = {}
    @ Disuse_arrays = {}
    parse_note(注)
  结束
  #------------------------------------------------- -------------------------
  #获取技能○
  #------------------------------------------------- -------------------------
  高清技术
    返回$ data_skills [@ id]的
  结束
  #------------------------------------------------- -------------------------
  ○现场分析注释#
  #注:请注意
  #------------------------------------------------- -------------------------
  高清parse_note(注)
    coop_flag =假
    note.each_line {|行|
      案件线
      当KGC前::CooperationSkill::正则表达式::技能::BEGIN_COOPERATE
        #启动耀西沙达联络技巧
        coop_flag =真
      当KGC前::CooperationSkill::正则表达式::技能::END_COOPERATE
        #完耀西沙达联络技巧
        coop_flag =假
      结束
      未来除非coop_flag

      案件线
      当KGC前::CooperationSkill::正则表达式::技能::NEED_SKILLS
        #技能要求
        parse_need_skills($ 1.scan(/ \ - ?\的D + /))
      当KGC前::CooperationSkill::正则表达式::技能::COOPERATE_PARAMS
        #中的参数
        parse_params($ 1,$ 2.to_i,$ 3)
      当KGC前::CooperationSkill::正则表达式::技能::COOPERATE_ARRAYS
        国家#属性
        parse_arrays($ 1,$ 2.scan(/ \ - ?\的D + /))
      结束
    }
  结束
  #------------------------------------------------- -------------------------
  #○必要的技能解析
  #列出:技能ID列表
  #------------------------------------------------- -------------------------
  高清parse_need_skills(名单)
    技能= []
    list.each {|编号|
      技能| = [num.to_i]
    }
    @ Need_skills <<技能
  结束
  #------------------------------------------------- -------------------------
  #修复的能力,同时适用于○技能
  #参数:目标参数
  #值:修饰符
  #电导率:或多或少
  #------------------------------------------------- -------------------------
  高清parse_params(参数,价值,待续)
    KGC前::CooperationSkill::PARAMS.each {| K表,五|
      下一步,如果参数!〜/(?:#{ v}的)/我

      @参数[k]的值=
      @ Params_over [k]的=(cond!〜/下|少/我)
      打破
    }
  结束
  #------------------------------------------------- -------------------------
  #附加属性向国家联络技巧○
  #参数:目标参数
  #列出:国家属性列表
  #------------------------------------------------- -------------------------
  高清parse_arrays(参数,列表)
    KGC前::CooperationSkill::ARRAYS.each {| K表,五|
      下一步,如果参数!〜/(?:#{ v}的)/我

      如果@ need_arrays [k]的零==
        @ Need_arrays [k]的= []
        @ Disuse_arrays [k]的= []
      结束
      list.each {|编号|
        每组num.to_i
        如果n> 0
          @ Need_arrays [k]的| = [n]的
        其他
          @ Disuse_arrays [k]的| = [n.abs]
        结束
      }
      打破
    }
  结束
结束

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$ Data_skills = load_data(“数据/ Skills.rvdata”),如果$ data_skill ==无

KGC的模块::CooperationSkill
  #转换技能的联络名单
  名单= []
  $ Data_skills.each {|技术|
    下一步,如果无技能==
    未来除非skill.is_cooperation?

    清单<<Game_CooperationSkill.new(skill.id,skill.note)
  }
  技巧=列表
结束

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#================================================= =============================
#■Game_Actor
#================================================= =============================

类Game_Actor <Game_Battler
  #------------------------------------------------- -------------------------
  #●测定可用技能
  #技能:技能
  #------------------------------------------------- -------------------------
  高清skill_can_use?(技能)
    超级回报
  结束
结束

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#================================================= =============================
#□Game_CooperationSkillUser
#------------------------------------------------- -----------------------------
#一流的技能,处理消防工程的信息。
#================================================= =============================

类Game_CooperationSkillUser
  #------------------------------------------------- -------------------------
  #实例变量拓博○
  #------------------------------------------------- -------------------------
  attr_reader:#指数运动指数
  attr_reader:skill_id#身份证火的技能
  attr_reader:target_battlers#攻击
  #------------------------------------------------- -------------------------
  #初始化对象○
  #------------------------------------------------- -------------------------
  高清初始化(战斗者)
    如果$进口[“反”]
      battler.action.made_targets =无
    结束
    @指数= battler.index
    @ Skill_id = battler.action.skill_id
    @ Target_battlers = []
    battler.action.make_targets.each {|吨|
      @ Target_battlers <<t.index
    }
  结束
  #------------------------------------------------- -------------------------
  ○#当量的测定
  #------------------------------------------------- -------------------------
  高清平等的吗?(OBJ文件)
    返回false,除非obj.is_a?(Game_CooperationSkillUser)
    如果@指数返回false!= obj.index
    返回false skill_id!= obj.skill_id
    返回false如果@ target_battlers!= obj.target_battlers

    返回true
  结束
  #------------------------------------------------- -------------------------
  ○#相等运算符
  #------------------------------------------------- -------------------------
  高清==(obj的)
    返回self.equal?(OBJ文件)
  结束
结束

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#================================================= =============================
#□Game_CooperationBattler
#------------------------------------------------- -----------------------------
#这是联络时调用Damibatorakurasu技能。
#================================================= =============================

类Game_CooperationBattler <Game_Battler
  #------------------------------------------------- -------------------------
  ●拓基米#实例变量
  #------------------------------------------------- -------------------------
  attr_accessor:battler_type#:演员或:敌人
  attr_accessor:exec_battlers#列出火
  attr_accessor:coop_skill#联络技能的信息
  #------------------------------------------------- -------------------------
  ●#对象初始化
  #------------------------------------------------- -------------------------
  高清初始化
    @ Battler_type =:演员
    @ Exec_battlers = []
    @ Coop_skill =无
    超
  结束
  #------------------------------------------------- -------------------------
  #确定演员●
  #------------------------------------------------- -------------------------
  高清演员?
    返回(@ battler_type ==:演员)
  结束
  #------------------------------------------------- -------------------------
  #获取指数●
  #------------------------------------------------- -------------------------
  高清指数
    返回0
  结束
  #------------------------------------------------- -------------------------
  #获取显示名称●
  #------------------------------------------------- -------------------------
  高清名称
    海峡=“”
    成员=($ game_party演员:?$ game_troop)的成员。
    exec_battlers.each_with_index {| B,我|
      海峡+ =成员[b.index]。名称
      如果我<exec_battlers.size - 1
        KGC的海峡+ =::CooperationSkill::NAME_SEPARATOR
      结束
    }
    返回海峡
  结束
  #------------------------------------------------- -------------------------
  #取得的水平●
  #------------------------------------------------- -------------------------
  高清水平
    值= []
    exec_battlers.each {| b |值<<b.level}
    返回values.max
  结束
  #------------------------------------------------- -------------------------
  #得到最大○
  #------------------------------------------------- -------------------------
  高清level_max
    回报水平
  结束
  #------------------------------------------------- -------------------------
  #取得平均水平○
  #------------------------------------------------- -------------------------
  高清level_avg
    n = 0时
    exec_battlers.each {| b |名词+ = b.level}
    返回(牛顿/ exec_battlers.size)
  结束
  #------------------------------------------------- -------------------------
  ●MaxHP获取#
  #------------------------------------------------- -------------------------
  高清maxhp
    值= []
    exec_battlers.each {| b |值<<b.maxhp}
    返回values.max
  结束
  #------------------------------------------------- -------------------------
  ●MaxMP获取#
  #------------------------------------------------- -------------------------
  高清maxmp
    值= []
    exec_battlers.each {| b |值<<b.maxmp}
    返回values.max
  结束
  #------------------------------------------------- -------------------------
  #●惠普收购
  #------------------------------------------------- -------------------------
  高清马力
    值= []
    exec_battlers.each {| b |值<<b.hp}
    返回values.min
  结束
  #------------------------------------------------- -------------------------
  ●MP的获取#
  #------------------------------------------------- -------------------------
  高清MP的
    值= []
    exec_battlers.each {| b |值<<b.mp}
    返回values.min
  结束
  #------------------------------------------------- -------------------------
  #取得的驱动器数量计○
  #------------------------------------------------- -------------------------
  高清超速
    值= []
    exec_battlers.each {| b |值<<b.overdrive}
    返回values.min
  结束
  #------------------------------------------------- -------------------------
  #攻击●取得
  #------------------------------------------------- -------------------------
  高清攻击力
    值= []
    exec_battlers.each {| b |值<<b.atk}
    返回values.max
  结束
  #------------------------------------------------- -------------------------
  #取得防御●
  #------------------------------------------------- -------------------------
  高清画质
    值= []
    exec_battlers.each {| b |值<<b.def}
    返回values.max
  结束
  #------------------------------------------------- -------------------------
  #获取精神力量●
  #------------------------------------------------- -------------------------
  高清的SPI
    值= []
    exec_battlers.each {| b |值<<b.spi}
    返回values.max
  结束
  #------------------------------------------------- -------------------------
  #取得敏捷●
  #------------------------------------------------- -------------------------
  高清阿吉
    值= []
    exec_battlers.each {| b |值<<b.agi}
    返回values.max
  结束
  #------------------------------------------------- -------------------------
  #取得●精度
  #------------------------------------------------- -------------------------
  高清打
    值= []
    exec_battlers.each {| b |值<<b.hit}
    返回[values.max,100]。最大
  结束
  #------------------------------------------------- -------------------------
  #取得逃税●
  #------------------------------------------------- -------------------------
  高清伊娃
    返回0
  结束
  #------------------------------------------------- -------------------------
  #取得暴击●
  #------------------------------------------------- -------------------------
  高清国际广播电台
    值= []
    exec_battlers.each {| b |值<<b.cri}
    返回values.max
  结束
  #------------------------------------------------- -------------------------
  ●MP的变化#
  #手机:新国会议员
  #------------------------------------------------- -------------------------
  高清熔点=(议员)
    减少每个人的国会议员#共谋
    差异= self.mp - MP的
    exec_battlers.each {| b | b.mp -=差异}
  结束
  #------------------------------------------------- -------------------------
  ○车道#操作规范
  #------------------------------------------------- -------------------------
  高清超速=(值)
    车道#减轻所有共犯计
    差异= self.overdrive - 超速
    exec_battlers.each {| b | b.overdrive -=差异}
  结束
  #------------------------------------------------- -------------------------
  #●全部收回
  #------------------------------------------------- -------------------------
  高清recover_all
    #什么都不做
  结束
  #------------------------------------------------- -------------------------
  ●无行为能力的决心#
  #------------------------------------------------- -------------------------
  高清死了吗?
    exec_battlers.each {| b |
      返回true,如果b.dead?
    }
    返回false
  结束
  #------------------------------------------------- -------------------------
  #判断有无●
  #------------------------------------------------- -------------------------
  高清存在?
    exec_battlers.each {| b |
      返回除非b.exist假?
    }
    返回true
  结束
  #------------------------------------------------- -------------------------
  #命令可以输入●确定
  #------------------------------------------------- -------------------------
  高清可输入的?
    exec_battlers.each {| b |
      返回false,除非b.inputtable?
    }
    返回true
  结束
  #------------------------------------------------- -------------------------
  ●#可操作的决定
  #------------------------------------------------- -------------------------
  高清移动?
    exec_battlers.each {| b |
      返回false,除非b.movable?
    }
    返回true
  结束
  #------------------------------------------------- -------------------------
  ●#沉默状态确定
  #------------------------------------------------- -------------------------
  高清沉默?
    exec_battlers.each {| b |
      返回true,如果b.silent?
    }
    返回false
  结束
  #------------------------------------------------- -------------------------
  ●#失控状态确定
  #------------------------------------------------- -------------------------
  高清狂战士?
    返回false
  结束
  #------------------------------------------------- -------------------------
  ●确定混乱#
  #------------------------------------------------- -------------------------
  高清混乱呢?
    返回false
  结束
  #------------------------------------------------- -------------------------
  #测定保护●
  #------------------------------------------------- -------------------------
  高清护卫?
    返回false
  结束
  #------------------------------------------------- -------------------------
  #得到一个正常的属性攻击●
  #------------------------------------------------- -------------------------
  高清element_set
    结果= []
    exec_battlers.each {| b |结果| = b.element_set}
    返回结果
  结束
  #------------------------------------------------- -------------------------
  #改变一个普通攻击●(+)的收购状态
  #------------------------------------------------- -------------------------
  高清plus_state_set
    结果= []
    exec_battlers.each {| b |结果| = b.plus_state_set}
    返回结果
  结束
  #------------------------------------------------- -------------------------
  #改变一个普通攻击●国家( - )获得
  #------------------------------------------------- -------------------------
  高清minus_state_set
    结果= []
    exec_battlers.each {| b |结果| = b.minus_state_set}
    返回结果
  结束
  #------------------------------------------------- -------------------------
  国家#●[损伤滑]测试
  #------------------------------------------------- -------------------------
  高清slip_damage?
    返回false
  结束
  #------------------------------------------------- -------------------------
  国家#●[精度下降]测试
  #------------------------------------------------- -------------------------
  高清reduce_hit_ratio?
    返回false
  结束
结束

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#================================================= =============================
#■Scene_Battle
#================================================= =============================

类Scene_Battle <Scene_Base
  #------------------------------------------------- -------------------------
  #开始处理●
  #------------------------------------------------- -------------------------
  别名start_KGC_CooperationSkill启动
  高清开始
    start_KGC_CooperationSkill

    init_cooperation_skill
  结束
  #------------------------------------------------- -------------------------
  #初始化变量进行联络的能力○
  #------------------------------------------------- -------------------------
  高清init_cooperation_skill
    @ Cooperation_skill_judged =假
    @ Cooperation_skill_exec =假
    @ Cooperation_skill_data =无
    @ Cooperate_actors = []
    @ Cooperate_enemies = []
  结束
  #------------------------------------------------- -------------------------
  ●党#启动命令的选择
  #------------------------------------------------- -------------------------
  别名start_party_command_selection_KGC_CooperationSkill
    start_party_command_selection
  高清start_party_command_selection
    如果$ game_temp.in_battle
      init_cooperation_skill
    结束

    start_party_command_selection_KGC_CooperationSkill
  结束
  #------------------------------------------------- -------------------------
  #开始执行作战●
  #------------------------------------------------- -------------------------
  别名start_main_KGC_CooperationSkill start_main
  高清start_main
    start_main_KGC_CooperationSkill

    init_cooperate_battler_list
  结束
  #------------------------------------------------- -------------------------
  #初始化数据为决策○
  #------------------------------------------------- -------------------------
  高清init_cooperate_battler_list
    [:演员:敌人]每个{|我|。
      万一我
      当:演员
        cooperate_battlers = @ cooperate_actors
        成员= $ game_party.members
      当:敌人
        cooperate_battlers = @ cooperate_enemies
        成员= $ game_troop.members
      结束
      巴特勒#设定目标
      cooperate_battlers.clear
      除非KGC前::CooperationSkill::EXECUTE_ORIGIN_SKILL
        members.each {|战斗者|
          未来除非battler.action.skill?
          cooperate_battlers <<Game_CooperationSkillUser.new(战斗者)
        }
      结束
    }
  结束
  #------------------------------------------------- -------------------------
  #担负战备●
  #------------------------------------------------- -------------------------
  别名execute_action_KGC_CooperationSkill execute_action
  高清execute_action
    @ Cooperation_skill_judged =假

    如果KGC前::CooperationSkill::EXECUTE_ORIGIN_SKILL
      execute_action_KGC_CooperationSkill
      judge_cooperation_skill(@ active_battler)
    其他
      judge_cooperation_skill(@ active_battler)
      除非@ cooperation_skill_judged&&@ cooperation_skill_exec
        execute_action_KGC_CooperationSkill
      结束
    结束

    如果@ cooperation_skill_exec
      如果@ cooperation_skill_judged
        execute_cooperation_skill
      其他
        finish_cooperation_skill
      结束
    结束
  结束
  #------------------------------------------------- -------------------------
  ○决定引发了第一次联络技巧#
  #战斗者:参与
  #------------------------------------------------- -------------------------
  高清judge_cooperation_skill(战斗者)
    返回false如果@ cooperation_skill_judged
    返回false如果@ cooperation_skill_exec
    @ Cooperation_skill_judged =真

    单位=(battler.is_a(Game_Actor)$ game_troop:??$ game_party)
    如果battler.action.kind == 1
      #决定如果火灾左边第二个目标
      除非unit.all_dead?
        返回judge_cooperation_skill_second(战斗者)
      结束
    其他
      #如果不删除从行动的技能确定阵列
      如果unit.is_a?(Game_Party)
        remove_cooperate_battler(:演员,战斗者)
      elsif unit.is_a?(Game_Troop)
        remove_cooperate_battler(:敌人,战斗者)
      结束
    结束
    返回false
  结束
  #------------------------------------------------- -------------------------
  #删除Works帮凶○
  #类型::演员或:敌人
  #战斗者:删除
  #------------------------------------------------- -------------------------
  高清remove_cooperate_battler(类型,战斗者)
    battlers =(类型==:演员@ cooperate_actors:@ cooperate_enemies)
    battlers.each_index {|我|
      如果battlers [我]。指数== battler.index
        battlers [我] =无
      结束
    }
    battlers.compact!
  结束
  #------------------------------------------------- -------------------------
  #激活第二联○决心技能
  #战斗者:参与
  #------------------------------------------------- -------------------------
  高清judge_cooperation_skill_second(战斗者)
    #创建决策数据
    @ Current_cooperate_user = Game_CooperationSkillUser.new(战斗者)
    如果battler.is_a?(Game_Actor)
      remove_cooperate_battler(:演员,战斗者)
      @ Cooperate_actors | = [@ current_cooperate_user]
    elsif battler.is_a?(Game_Enemy)
      remove_cooperate_battler(:敌人,战斗者)
      @ Cooperate_enemies | = [@ current_cooperate_user]
    结束
    #决定触发联络技巧
    KGC前::CooperationSkill::SKILLS.each {|客服|
      #测定演员
      如果battler.is_a?(Game_Actor)
        judge_cooperation_skill_third(:演员,CS)的
      #决定敌人
      elsif battler.is_a?(Game_Enemy)
        judge_cooperation_skill_third(:敌人,CS)的
      结束

      如果@ cooperation_skill_exec突破
    }
    返回@ cooperation_skill_exec
  结束
  #------------------------------------------------- -------------------------
  ○联络技巧#第三行使决策
  #类型::演员或:敌人
  #Cs_data:合作技术统计
  #------------------------------------------------- -------------------------
  高清judge_cooperation_skill_third(类型,cs_data)
    如果type ==:敌人
      #如果你不回敌人的炮火
      KGC的回报,除非::CooperationSkill::PERMIT_ENEMY
    结束

    @ Cooperation_skill_exec =假
    案件类型
    当:演员
      cooperate_battlers = @ cooperate_actors
      成员= $ game_party.members
    当:敌人
      cooperate_battlers = @ cooperate_enemies
      成员= $ game_troop.members
    结束

    @ Exec_battlers = create_cooperation_exec_battlers(cs_data,
      cooperate_battlers,委员)
    #返回,如果没有在他们的行动的同谋
    返回if@exec_battlers.empty

    #返回,除非您指定相同的目标
    除非same_target_include回报?(cs_data,cooperate_battlers,委员)

    $ Game_temp.judging_cooperation_skill =真
    prepare_cooperation_exec(类型,cs_data,cooperate_battlers,委员)
    $ Game_temp.judging_cooperation_skill =假
  结束
  #------------------------------------------------- -------------------------
  #创建列表的工作技能锻炼○
  #Cs_data:合作技术统计
  #Cooperate_battlers:列出帮凶工程
  #成员:一个全员工程的共谋
  #------------------------------------------------- -------------------------
  高清create_cooperation_exec_battlers(cs_data,cooperate_battlers,委员)
    battlers = []
    cs_data.need_skills.each {|南北|
      battlers.clear
      #部分确定其行为
      未来除非ns.include?(@ current_cooperate_user.skill_id)

      #技能要求满足所有的决定
      技能= ns.clone
      ns.each {| skill_id |
        用户= cooperate_battlers.find {|会CB |
          skill_id == cb.skill_id&&!battlers.include?(CB)的
        }
        #如果用户没有确定
        如果用户==无
          battlers.clear
          技能= [0]
          打破
        结束
        battlers <<用户
        skills.delete(skill_id)
      }
      BREAK如果skills.empty?确定为空阵列#==>技能要求的满意度
    }

    除非cooperation_conditions_satisfy?(cs_data,battlers,委员)
      battlers = []
    结束

    返回battlers
  结束
  #------------------------------------------------- -------------------------
  #决定○条件的满足
  #Cs_data:合作技术统计
  #Candidate_battlers:工程计划表进行测试同谋
  #成员:一个全员工程的共谋
  #------------------------------------------------- -------------------------
  高清cooperation_conditions_satisfy?(cs_data,candidate_battlers,委员)
    返回,如果candidate_battlers.empty?

    #参数的计算
    level_avg = 0
    各级= []
    candidate_battlers.each {|会CB |
      战斗者=成员[cb.index]
      level_avg + = battler.level
      水平“<battler.level
    }
    level_avg / = members.size

    比赛= Proc.new {|甲,乙过来,|在一个> = B的:一个<= B的}#触发的决心

    cs_data.params.each {| K表,五|
      参数= 0
      方案K
      当:level_avg#平均水平
        参数= level_avg
      当:level_min#最低水平
        参数= levels.min
      当:level_max#最高水平
        参数= levels.max
      结束
      返回false,除非comp.call(参数,五,cs_data.params_over [k]的)
    }

    返回true
  结束
  #------------------------------------------------- -------------------------
  #匹配目标决策联系○
  #Cs_data:合作技术统计
  #Cooperate_battlers:列出帮凶工程
  #成员:一个全员工程的共谋
  #------------------------------------------------- -------------------------
  高清same_target_include?(cs_data,cooperate_battlers,委员)
    返回true,除非KGC的::CooperationSkill::SAME_TARGET_ONLY

    #如果目标确定为
    duplicate_battlers =(0 .. 99)。to_a
    @ Exec_battlers.each {|光大|
      duplicate_battlers&= eb.target_battlers
    }
    返回(duplicate_battlers.size> 0)
  结束
  #------------------------------------------------- -------------------------
  ○准备消防工程#
  #类型::演员或:敌人
  #Cs_data:合作技术统计
  #Cooperate_battlers:列出帮凶工程
  #成员:一个全员工程的共谋
  #------------------------------------------------- -------------------------
  高清prepare_cooperation_exec(类型,cs_data,cooperate_battlers,委员)
    #决定是否行使
    @ Exec_battlers.each {|光大|
      战斗者=成员[eb.index]
      除非battler.exist?&&battler.skill_can_use?(cs_data.skill)
        返回
      结束
    }

    @ Cooperation_skill_exec =真
    @ Cooperation_skill_data = cs_data
    @ Cooperation_skill_user =类型

    #从列表中删除那些谁行使行为
    cooperate_battlers.each_with_index {|淙斌,我|
      if@exec_battlers.include?(CB)的
        @ Action_battlers.delete(成员[cb.index])
        cooperate_battlers [我] =无
      结束
    }
    cooperate_battlers.compact!
  结束
  #------------------------------------------------- -------------------------
  ○消防联络技巧#
  #------------------------------------------------- -------------------------
  高清execute_cooperation_skill
    #注册一个虚拟
    @ Action_battlers.unshift(create_cooperation_skill_battler)
  结束
  #------------------------------------------------- -------------------------
  #触发连锁○(巴特勒假人)创建
  #------------------------------------------------- -------------------------
  高清create_cooperation_skill_battler
    战斗者= Game_CooperationBattler.new
    battler.battler_type = @ cooperation_skill_user
    battler.coop_skill = @ cooperation_skill_data
    battler.action.set_skill(@ cooperation_skill_data.id)

    #获取目标
    成员=(@ cooperation_skill_user ==:演员?
      $ Game_party:$ game_troop)成员。
    目标=(0 .. 99)。to_a
    @ Exec_battlers.each {|光大|
      battler.exec_battlers <<成员[eb.index]
      目标&= eb.target_battlers
    }
    如果target.empty?
      #目标采取的行动最后为人所知的,如果目标
      目标= @ current_cooperate_user.target_battlers
    结束
    battler.action.target_index =目标[兰特(target.size)]

    返回战斗者
  结束
  #------------------------------------------------- -------------------------
  ○联络技能#退出
  #------------------------------------------------- -------------------------
  高清finish_cooperation_skill
    @ Cooperation_skill_exec =假
    @ Cooperation_skill_data =无
    @ Exec_battlers = []
  结束
  #------------------------------------------------- -------------------------
  #技能的一部分,确定联动○
  #战斗者:巴特勒法官
  #------------------------------------------------- -------------------------
  高清cooperation_exec?(战斗者)
    返回false,除非@ cooperation_skill_exec

    如果battler.is_a(Game_Actor)| | KGC的:?:CooperationSkill::PERMIT_ENEMY
      #确定是否大火已被所载
      @ Exec_battlers.each_index {|我|
        返回true如果@ exec_battlers [我]。指数== battler.index
      }
    结束
    返回false
  结束
结束




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1