| 赞 | 16  | 
 
| VIP | 71 | 
 
| 好人卡 | 24 | 
 
| 积分 | 37 | 
 
| 经验 | 70116 | 
 
| 最后登录 | 2025-4-19 | 
 
| 在线时间 | 3077 小时 | 
 
 
 
 
 
Lv3.寻梦者 
	- 梦石
 - 0 
 
        - 星屑
 - 3668 
 
        - 在线时间
 - 3077 小时
 
        - 注册时间
 - 2011-11-17
 
        - 帖子
 - 980
 
 
 
 | 
	
- # ————————————————————————————————————
 
 - # 本脚本来自www.66rpg.com,转载请保留此信息
 
 - # ————————————————————————————————————
 
  
- # ▼▲▼ XRXS19. 特殊効果詰め合わせ:戦闘用 with 29 parts ver..18a ▼▲▼
 
 - # by 桜雅 在土, 和希, シムナフ
 
  
- #==============================================================================
 
 - # ■ 以下内容定义各特技的属性名
 
 - #==============================================================================
 
 - class Game_Battler
 
 -   RERAISE_STATE_NAME = /复活/           
 
 -   LIBLA_SKILL_ELEMENT_NAME = "透视"     
 
 -   POWERSTOCK_SKILL_ELEMENT_NAME = "聚气"
 
 -   POWERSTOCK_BASE_RATE = 1.0            #——每回合聚气威力上升倍率
 
 -   STEAL_SKILL_ELEMENT_NAME = "偷窃" 
 
 -   ELEMENT_NAME_SP_DAMAGE = "SP损伤" 
 
 -   ELEMENT_NAME_HP_DRAIN = "HP吸收"
 
 -   ELEMENT_NAME_SP_DRAIN = "SP吸收" 
 
 -   ELEMENT_NAME_CRITICAL_HIT = "必杀" 
 
 -   ELEMENT_NAME_CERTAIN_HIT = "必中" 
 
 -   ELEMENT_NAME_HP_COST = "HP消耗"
 
 - end
 
 - class Game_BattleAction
 
 -   ELEMENT_NAME_SPEED_PRIORITY = "优先度" 
 
 - end
 
 - class Scene_Battle
 
 -   ELEMENT_NAME_HP_COST = "HP消耗" 
 
 -   ELEMENT_NAME_DERIVER = "派生" 
 
 -   ELEMENT_NAME_MOVE_TIMES = "行动回数" 
 
 -   ELEMENT_NAME_AREA_ENEMY_ALL = "全体化" 
 
 -   ELEMENT_NAME_AREA_WHOLE = "全域化" 
 
 -   ELEMENT_NAME_AREA_ENEMY_RAND = "敌方随机" 
 
 -   ELEMENT_NAME_AREA_ACTOR_RAND ="我方随机"
 
 -   ELEMENT_NAME_AREA_ALL_RANDOM ="对象随机"
 
 -   RERAISE_HP = 1 
 
 -   RERAISE_HP_PERCENT = 0 
 
 -   RERAISE_ANIMATION_ID = 26 
 
 - end
 
 - module Cover_Module 
 
 -   ELEMENT_NAME_COVER = "援助" 
 
 -   STATE_NAME_COVER = "援助" 
 
 -   COVER_HP_PERCENT = 100 
 
 -   COVER_EFFECT_PERCENT = 100 
 
 -   COVER_EFFECT_CHAR = "Covered!" 
 
 -   COVER_ANIMATION_ID = 64 
 
 -   COVER_DEFAULT_NUMBER = 2 
 
 - end
 
 - #==============================================================================
 
 - $xrxs19_special_effections_set_work = true
 
 - #--------------------------------------------------------------------------
 
 - # ● 属性修正の計算?改
 
 - #--------------------------------------------------------------------------
 
 - class Game_Battler
 
 - def elements_correct(element_set)
 
 - # 無属性の場合 100 を返す
 
 - return 100 if element_set == []
 
 - # 与えられた属性のレートを全て乗算
 
 - result = 100
 
 - for i in element_set
 
 - result *= self.element_rate(i) / 100.0
 
 - end
 
 - return result.to_i
 
 - end
 
 - end
 
 - #==============================================================================
 
 - # ■ Game_Battler
 
 - #==============================================================================
 
 - class Game_Battler
 
 - #--------------------------------------------------------------------------
 
 - # ● 追加公開インスタンス変数
 
 - #--------------------------------------------------------------------------
 
 - attr_accessor :reraise_state
 
 - attr_accessor :reraised # リレイズしたかどうか
 
 - attr_accessor :metamor_target # 変身対象
 
 - attr_accessor :battler_name # バトラーグラフィック
 
 - attr_reader :battler_name_original # バトラーグラフィック初期値
 
 - attr_writer :hp0_ban # HP/SPの 0 化または最大制限の解除
 
 - attr_writer :certain_hit # 必中受け(Trueだと攻撃を避けられない)
 
 - attr_accessor :covered_friends #庇っている味方の配列
 
 - attr_accessor :effect_message #
 
 - attr_accessor :current_friend #かばっている味方
 
 - attr_accessor :cover_remain #かばう可能な残り回数
 
 - #--------------------------------------------------------------------------
 
 - # ● 初期化
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_battler_initialize initialize
 
 - def initialize
 
 - xrxs19_battler_initialize
 
 - # 「かばう」用変数初期化
 
 - @covered_friends = []
 
 - @effect_message = nil
 
 - @current_friend = nil
 
 - @cover_remain = 0
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● ステートの付加
 
 - # state_id : ステート ID
 
 - # force : 強制付加フラグ (オートステートの処理で使用)
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_add_state add_state 
 
 - def add_state(state_id, force = false)
 
 - xrxs19_add_state(state_id, force)
 
 - # 「かばう」のステート付加の場合
 
 - if state_id == get_cover_state_id()
 
 - self.cover_remain = COVER_DEFAULT_NUMBER
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● HP の変更
 
 - #--------------------------------------------------------------------------
 
 - def hp=(hp)
 
 - if @hp0_ban
 
 - @hp = hp
 
 - else
 
 - @hp = [[hp, maxhp].min, 0].max
 
 - # 戦闘不能を付加または解除
 
 - for i in 1...$data_states.size
 
 - if $data_states[i].zero_hp
 
 - if self.dead?
 
 - # 追加
 
 - for x in 1...$data_states.size
 
 - # ステート名は変更可。
 
 - if $data_states[x].name[RERAISE_STATE_NAME] != nil
 
 - reraise_id = $data_states[x].id
 
 - break
 
 - end
 
 - end
 
 - # リレイズ復活
 
 - if reraise_id != nil && self.state?(reraise_id)
 
 - self.remove_state(reraise_id)
 
 - @reraised = true
 
 - # 戦闘不能マイナスステートに設定されているものを解除
 
 - if $data_states[i].minus_state_set != []
 
 - for j in $data_states[i].minus_state_set
 
 - remove_state(j)
 
 - end
 
 - end
 
 - elsif
 
 - # ここまで
 
 - add_state(i)
 
 - end
 
 - else
 
 - remove_state(i)
 
 - end
 
 - end
 
 - end
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● SP の変更
 
 - #--------------------------------------------------------------------------
 
 - def sp=(sp)
 
 - if @hp0_ban
 
 - @sp = sp
 
 - else
 
 - @sp = [[sp, maxsp].min, 0].max
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● ステート [攻撃を回避できない] 判定
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_cant_evade? cant_evade?
 
 - def cant_evade?
 
 - return true if @certain_hit
 
 - return xrxs19_cant_evade?
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 通常攻撃の効果適用
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_attack_effect attack_effect# alias したものは effect_it 内で使用
 
 - def attack_effect(attacker)
 
 - # 通常攻撃の場合、skill = nil で呼ぶ
 
 - return effect_it(attacker, nil)
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● スキルの効果適用
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_skill_effect skill_effect # alias したものは effect_it 内で使用
 
 - def skill_effect(user, skill)
 
 - # スキルの場合は、skill を指定して呼ぶ
 
 - return effect_it(user, skill)
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 効果適用
 
 - #--------------------------------------------------------------------------
 
 - def effect_it(user, skill = nil)
 
 - # 実行前の数値を保持
 
 - last_hp = self.hp
 
 - last_sp = self.sp
 
 - @hp0_ban = true
 
 - # 武器IDの取得
 
 - weapon_id = user.is_a?(Game_Actor) ? user.weapon_id : 0
 
 - # 特殊効果:必中
 
 - if skill != nil and skill_element_include?(skill, ELEMENT_NAME_CERTAIN_HIT)
 
 - self.certain_hit = true
 
 - elsif skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_CERTAIN_HIT)
 
 - self.certain_hit = true
 
 - end
 
 - # 基本実行、skill が nil かどうかで通常攻撃とスキルを分別
 
 - if skill == nil
 
 - bool = xrxs19_attack_effect(user)
 
 - else
 
 - bool = xrxs19_skill_effect(user, skill)
 
 - end
 
 - # ダメージ測定
 
 - damage = last_hp - self.hp
 
 - # 必中の解除
 
 - self.certain_hit = false
 
 - # 特殊効果:スティール/アイテム奪取
 
 - if skill != nil and skill_element_include?(skill, STEAL_SKILL_ELEMENT_NAME)
 
 - self.steal_effect(user, skill) if self.is_a?(Game_Enemy)
 
 - elsif skill == nil and equip_weapon_element_include?(user, STEAL_SKILL_ELEMENT_NAME)
 
 - self.steal_effect(user, skill) if self.is_a?(Game_Enemy)
 
 - end
 
 - # 特殊効果:対象に変身
 
 - if skill != nil and skill_element_include?(skill, "变身")
 
 - if user.metamor_target == nil
 
 - if self.metamor_target == nil
 
 - # 変身状態で無い場合、変身
 
 - user.metamor_target = self
 
 - else
 
 - # 対象が変身状態の場合、対象の変身対象に変身する。
 
 - user.metamor_target = self.metamor_target
 
 - end
 
 - else
 
 - # 変身状態の場合、変身を解除する
 
 - user.metamor_target = user
 
 - end
 
 - # 自分への変身を禁止
 
 - user.metamor_target = nil if user.metamor_target == user
 
 - # 対象のダメージ表示を消す
 
 - self.damage = nil if self.damage == "Miss"
 
 - # HP/SP最大値変更への対応
 
 - @hp0_ban = false
 
 - user.hp = user.hp
 
 - user.sp = user.sp
 
 - end
 
 - # 特殊効果:武器を投げる
 
 - if (skill != nil and skill_element_include?(skill, "武器投掷"))
 
 - # 投擲武器の取得
 
 - throw_weapon = $data_weapons[user.current_action.basic]
 
 - # 武器の消費
 
 - if $xrxs24_weapon_property_system_work
 
 - $game_party.lose_weapon(throw_weapon.id, user.current_action.basic_ex)
 
 - else
 
 - $game_party.lose_weapon(throw_weapon.id, 1)
 
 - end
 
 - # ダメージの変更
 
 - self.hp += damage if bool
 
 - damage = throw_weapon.atk
 
 - if weapon_element_include?(throw_weapon.id, "投掷威力")
 
 - damage = damage * @one.to_i / 100
 
 - end
 
 - self.damage = damage
 
 - self.hp -= self.damage
 
 - bool = true
 
 - end
 
 - # 特殊効果:消費金額に順ずる固定ダメージ
 
 - if skill != nil and skill_element_include?(skill, "金钱投掷")
 
 - # ゴールドの消費
 
 - last_gold = $game_party.gold
 
 - $game_party.gain_gold(-1 * ($game_party.gold * skill.variance / 100 + skill.power))
 
 - self.hp += damage if bool
 
 - damage = last_gold - $game_party.gold
 
 - self.damage = damage
 
 - self.hp -= self.damage
 
 - bool = true
 
 - end
 
 - # 基本実行でfalse(Miss等)の場合、ここで終了する
 
 - # つまり、この上までにダメージに関係なく実行される特殊効果をいれて
 
 - # これより下はダメージに関係する特殊効果を入れる。
 
 - # "武器投擲"と"銭投げ"はMissでも金額を消費するため上に。
 
 - return false if bool == false
 
 - # 特殊効果:防御能力の判定
 
 - if damage > 0 and self.guarding?
 
 - # 特殊効果:防御能力 2(強防御)
 
 - if battler_element_rank?(self, "防御能力") == 2
 
 - damage /= 2
 
 - self.damage -= damage
 
 - self.hp += damage
 
 - end
 
 - # 特殊効果:防御能力 1(無効防御)
 
 - if battler_element_rank?(self, "防御能力") == 1
 
 - self.hp += damage
 
 - damage = 0
 
 - self.damage = damage
 
 - end
 
 - end
 
 - # 特殊効果:必殺確実クリティカル
 
 - if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_CRITICAL_HIT)) or
 
 - (skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_CRITICAL_HIT)) and damage > 0
 
 - if self.critical
 
 - self.critical = false
 
 - damage /= 2
 
 - self.damage -= damage
 
 - self.hp += damage
 
 - end
 
 - if @one == nil or rand(100) < @one.to_i
 
 - damage += 4 * self.pdef + rand(100)
 
 - self.damage = damage
 
 - self.hp -= damage
 
 - self.critical = true
 
 - end
 
 - end
 
 - # 特殊効果:使用者の 最大HP - 現在HP 固定ダメージ
 
 - if skill != nil and skill_element_include?(skill, "固定HP差分")
 
 - self.hp += damage
 
 - damage = user.maxhp - user.hp
 
 - self.damage = damage
 
 - self.hp -= self.damage
 
 - self.critical = false # 固定ダメージ故クリティカルを禁止
 
 - end
 
 - # 特殊効果:使用者の 現在HP 固定ダメージ
 
 - if skill != nil and skill_element_include?(skill, "现在HP损伤")
 
 - self.hp += damage
 
 - damage = user.hp
 
 - self.damage = damage
 
 - self.hp -= self.damage
 
 - self.critical = false # 固定ダメージ故クリティカルを禁止
 
 - end
 
 - # 特殊効果:現在HPに順ずる固定ダメージ
 
 - if skill != nil and skill_element_include?(skill, "固定现在HP")
 
 - self.hp += damage
 
 - damage = self.hp * skill.variance / 100 + skill.power
 
 - damage *= -1 if skill.power < 0
 
 - self.damage = damage
 
 - self.hp -= self.damage
 
 - self.critical = false # 固定ダメージ故クリティカルを禁止
 
 - end
 
 - # 特殊効果:最大HPに順ずる固定ダメージ
 
 - if skill != nil and skill_element_include?(skill, "固定最大HP")
 
 - self.hp += damage
 
 - damage = self.maxhp * @one.to_i / 100
 
 - damage *= -1 if skill.power < 0
 
 - self.damage = damage
 
 - self.hp -= self.damage
 
 - self.critical = false # 固定ダメージ故クリティカルを禁止
 
 - end
 
 - # 特殊効果:HPではなくSPにダメージを与える
 
 - if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_SP_DAMAGE)) or
 
 - (skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_SP_DAMAGE))
 
 - self.hp += damage
 
  
- sp_save = self.sp <= self.maxsp * 5 /100
 
 - case skill.id
 
 - when 463
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 5 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
  
- when 464
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 10 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
  
- when 465
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 15 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 466
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 20 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 467
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 25 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 468
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 30 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 469
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 35 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 470
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 40 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 471
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 45 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 472
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 50 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 528
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 5 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 529
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 10 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 530
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 15 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 531
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 20 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 739
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 5 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 740
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 10 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 741
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 15 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 742
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 20 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - when 743
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 25 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
 - else
 
 - unless sp_save
 
 - sp_damage = (damage / 100) + (self.sp * 30 / 100)
 
 - else
 
 - sp_damage = 0
 
 - end
 
  
- end
 
  
- self.sp -= sp_damage
 
 - self.damage = sp_damage.to_s#damage.to_s
 
  
- # このタイミングで戦闘不能判定
 
 - @hp0_ban = false
 
 - self.sp = self.sp
 
 - real_damage = last_sp - self.sp
 
 - else
 
 - # このタイミングで戦闘不能判定
 
 - @hp0_ban = false
 
 - self.hp = self.hp
 
 - real_damage = last_hp - self.hp
 
 - end
 
 - # 使用者のHP/SPもリセット
 
 - user.hp = user.hp
 
 - user.sp = user.sp
 
 - # 特殊効果:与えたダメージを自分のHPとして吸収
 
 - if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_HP_DRAIN)) or
 
 - (skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_HP_DRAIN))
 
 - user.damage = -real_damage * @one.to_i / 100
 
 - user.hp -= user.damage
 
 - end
 
 - # 特殊効果:与えたダメージを自分のSPとして吸収
 
 - if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_SP_DRAIN)) or
 
 - (skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_SP_DRAIN))
 
 - user.damage -= real_damage * @one.to_i / 100
 
 - user.sp -= user.damage
 
 - user.damage = user.damage.to_s
 
 - end
 
 - return true
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● バトラーの指定名の属性のランクを判定
 
 - #--------------------------------------------------------------------------
 
 - def battler_element_rank?(battler, element_name)
 
 - for i in 1..$data_system.elements.size
 
 - if $data_system.elements[i] == element_name
 
 - if self.is_a?(Game_Actor)
 
 - return $data_classes[battler.class_id].element_ranks[i]
 
 - else
 
 - return $data_enemies[battler.id].element_ranks[i]
 
 - end
 
 - end
 
 - end
 
 - return 3
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● MaxHP の取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_maxhp maxhp
 
 - def maxhp
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.maxhp
 
 - end
 
 - xrxs19_maxhp
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● MaxSP の取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_maxsp maxsp
 
 - def maxsp
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.maxsp
 
 - end
 
 - xrxs19_maxsp
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 腕力の取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_str str
 
 - def str
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.str
 
 - end
 
 - xrxs19_str
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 器用さの取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_dex dex
 
 - def dex
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.dex
 
 - end
 
 - xrxs19_dex
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 素早さの取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_agi agi
 
 - def agi
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.agi
 
 - end
 
 - xrxs19_agi
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 魔力の取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_int int
 
 - def int
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.int
 
 - end
 
 - xrxs19_int
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 攻撃力の取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_atk atk
 
 - def atk
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.atk
 
 - end
 
 - xrxs19_atk
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 物理防御の取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_pdef pdef
 
 - def pdef
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.pdef
 
 - end
 
 - xrxs19_pdef
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 魔法防御の取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_mdef mdef
 
 - def mdef
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.mdef
 
 - end
 
 - xrxs19_mdef
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 回避修正の取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_eva eva
 
 - def eva
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.eva
 
 - end
 
 - xrxs19_eva
 
 - end
 
 - end
 
  
- #==============================================================================
 
 - # ■ Game_BattleAction
 
 - #==============================================================================
 
 - class Game_BattleAction
 
 - #--------------------------------------------------------------------------
 
 - # ● 公開インスタンス変数
 
 - #--------------------------------------------------------------------------
 
 - attr_accessor :speed_priority # スピード優先度
 
 - attr_accessor :weapon_id # 武器 ID
 
 - attr_accessor :basic_ex # 基本拡張(補助的に数値を保持)
 
 - #--------------------------------------------------------------------------
 
 - # ● クリア
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_clear clear
 
 - def clear
 
 - @weapon_id = 0
 
 - xrxs19_clear
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● スキルの優先度取得
 
 - #--------------------------------------------------------------------------
 
 - def speed_priority
 
 - if @kind == 0 and @basic == 0
 
 - # 通常攻撃の場合
 
 - elsif @kind == 1
 
 - # スキルの場合
 
 - return 0 if $data_skills[@skill_id] == nil
 
 - for i in $data_skills[@skill_id].element_set
 
 - if $data_system.elements[i] != nil
 
 - if $data_system.elements[i] =~ /^#{ELEMENT_NAME_SPEED_PRIORITY}([+-]?[0-9]+)/
 
 - return $1.to_i
 
 - end
 
 - end
 
 - end
 
 - end
 
 - return 0
 
 - end
 
 - end
 
 - #==============================================================================
 
 - # ■ Game_Actor
 
 - #==============================================================================
 
 - class Game_Actor < Game_Battler
 
 - #--------------------------------------------------------------------------
 
 - # ● セットアップ
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_setup setup
 
 - def setup(actor_id)
 
 - xrxs19_setup(actor_id)
 
 - @reraised = false
 
 - @reraise_state = 0
 
 - @metamor_target = nil
 
 - @battler_name_original = @battler_name
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● MaxHP の取得
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_maxhp maxhp
 
 - def maxhp
 
 - if !@metamor_target.nil?
 
 - return @metamor_target.maxhp
 
 - end
 
 - xrxs19_maxhp
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● スキルの使用可能判定
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_skill_can_use? skill_can_use?
 
 - def skill_can_use?(skill_id)
 
 - # スキルを取得
 
 - @skill = $data_skills[skill_id]
 
 - # HP消費スキルの場合
 
 - if skill_element_include?(@skill, ELEMENT_NAME_HP_COST) and @actor_id > 0
 
 - # HP が足りない場合は使用不可
 
 - if $data_skills[skill_id].sp_cost > self.hp
 
 - return false
 
 - end
 
 - # SP消費量を回復させ、SP が足りない場合を回避(最大値を超えて回復)
 
 - self.hp0_ban = true
 
 - self.sp += @skill.sp_cost
 
 - bool = xrxs19_skill_can_use?(skill_id)
 
 - # SPを元に戻す
 
 - self.sp -= @skill.sp_cost
 
 - self.hp0_ban = false
 
 - return bool
 
 - else
 
 - return xrxs19_skill_can_use?(skill_id)
 
 - end
 
  
 
 
 
 
 
 
 
- end
 
 - end
 
 - #==============================================================================
 
 - # ■ Game_Enemy
 
 - #==============================================================================
 
 - class Game_Enemy < Game_Battler
 
 - #--------------------------------------------------------------------------
 
 - # ● オブジェクト初期化
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_initialize initialize
 
 - def initialize(troop_id, member_index)
 
 - xrxs19_initialize(troop_id, member_index)
 
 - @reraised = false
 
 - @reraise_state = 0
 
 - @metamor_target = nil
 
 - @battler_name_original = @battler_name
 
 - end
 
 - end
 
 - #==============================================================================
 
 - # ■ Window_Item
 
 - #==============================================================================
 
 - class Window_Item < Window_Selectable
 
 - #--------------------------------------------------------------------------
 
 - # ● オブジェクト初期化
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_initialize initialize
 
 - def initialize
 
 - xrxs19_initialize
 
 - refresh
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 値の受け渡し
 
 - #--------------------------------------------------------------------------
 
 - def set_itemkind(itemkind)
 
 - @itemkind = itemkind
 
 - refresh
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 値の受け渡し
 
 - #--------------------------------------------------------------------------
 
 - def set_restrict(restrict)
 
 - @restrict = restrict
 
 - refresh
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● リフレッシュ
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_refresh refresh
 
 - def refresh
 
 - if @itemkind != 11
 
 - xrxs19_refresh
 
 - return
 
 - end
 
 - # 11 = 制限:投擲武器のみ
 
 - if self.contents != nil
 
 - self.contents.dispose
 
 - self.contents = nil
 
 - end
 
 - @data = []
 
 - @data_id = []
 
 - for i in 1...$data_weapons.size
 
 - if $game_party.weapon_number(i) > 0
 
 - @data.push($data_weapons[i]) if weapon_element_include?(i, "投掷威力")
 
 - end
 
 - end
 
 - # 項目数が 0 でなければビットマップを作成し、全項目を描画
 
 - @item_max = @data.size
 
 - if @item_max > 0
 
 - self.contents = Bitmap.new(width - 32, row_max * 32)
 
 - for i in 0...@item_max
 
 - draw_item(i)
 
 - end
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 項目の描画
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_draw_item draw_item
 
 - def draw_item(index)
 
 - if @itemkind != 11
 
 - xrxs19_draw_item(index)
 
 - return
 
 - end
 
 - # 11 = 制限:投擲武器のみ
 
 - item = @data[index]
 
 - number = $game_party.weapon_number(item.id)
 
 - self.contents.font.color = normal_color
 
 - x = 4 + index % @column_max * (288 + 32)
 
 - y = index / @column_max * 32
 
 - rect = Rect.new(x, y, self.width / @column_max - 32, 32)
 
 - self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
 
 - bitmap = RPG::Cache.icon(item.icon_name)
 
 - opacity = self.contents.font.color == normal_color ? 255 : 128
 
 - self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
 
 - self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
 
 - self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
 
 - self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
 
 - end
 
 - end
 
 - #==============================================================================
 
 - # ■ Scene_Battle
 
 - #==============================================================================
 
 - class Scene_Battle
 
 - #--------------------------------------------------------------------------
 
 - # ● メイン処理
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_main main
 
 - def main
 
 - @phase4_5_done = false
 
 - xrxs19_main
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● フレーム更新 (アクターコマンドフェーズ)
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_update_phase3 update_phase3
 
 - def update_phase3
 
 - # 武器のみアイテムウィンドウが有効の場合
 
 - if @item_window_weapons != nil and @item_window_weapons.visible
 
 - update_phase3_item_window_weapons
 
 - return
 
 - end
 
 - # 他
 
 - xrxs19_update_phase3
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● フレーム更新 (アクターコマンドフェーズ : スキル選択)
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_update_phase3_skill_select update_phase3_skill_select
 
 - def update_phase3_skill_select
 
 - # C ボタンが押された場合
 
 - if Input.trigger?(Input::C)
 
 - # スキルウィンドウで現在選択されているデータを取得
 
 - @skill = @skill_window.skill
 
 - if skill_element_include?(@skill, "武器投掷")
 
 - # 使用できない場合
 
 - if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
 
 - # ブザー SE を演奏
 
 - $game_system.se_play($data_system.buzzer_se)
 
 - return
 
 - end
 
 - # 決定 SE を演奏
 
 - $game_system.se_play($data_system.decision_se)
 
 - # アクションを設定
 
 - @active_battler.current_action.skill_id = @skill.id
 
 - # アイテム選択へ移行する
 
 - start_item_select_from_skill(@one.to_i)
 
 - return
 
 - end
 
 - end
 
 - xrxs19_update_phase3_skill_select
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● フレーム更新 (アクターコマンドフェーズ : 武器のみアイテム選択)
 
 - #--------------------------------------------------------------------------
 
 - def update_phase3_item_window_weapons
 
 - # 武器アイテムウィンドウを可視状態にする
 
 - @item_window_weapons.visible = true
 
 - # 武器アイテムウィンドウを更新
 
 - @item_window_weapons.update
 
 - # B ボタンが押された場合
 
 - if Input.trigger?(Input::B)
 
 - # キャンセル SE を演奏
 
 - $game_system.se_play($data_system.cancel_se)
 
 - # 武器アイテムの選択を終了
 
 - end_item_select_from_skill
 
 - return
 
 - end
 
 - # C ボタンが押された場合
 
 - if Input.trigger?(Input::C)
 
 - # 決定 SE を演奏
 
 - $game_system.se_play($data_system.decision_se)
 
 - # アイテムウィンドウで現在選択されているデータを取得
 
 - @item = @item_window_weapons.item
 
 - # アクションを設定
 
 - @active_battler.current_action.basic = @item.id
 
 - if $xrxs24_weapon_property_system_work
 
 - # アイテムウィンドウで現在選択されているデータを取得
 
 - @item_room_no = @item_window_weapons.item_room_no
 
 - # アクションを設定
 
 - @active_battler.current_action.basic_ex = @item_room_no
 
 - end
 
 - # 武器のみアイテムウィンドウを不可視化
 
 - @item_window_weapons.visible = false
 
 - # 効果範囲が敵単体の場合
 
 - if @skill.scope == 1
 
 - # エネミーの選択を開始
 
 - start_enemy_select
 
 - # 効果範囲が味方単体の場合
 
 - elsif @skill.scope == 3 or @skill.scope == 5
 
 - # アクターの選択を開始
 
 - start_actor_select
 
 - # 効果範囲が単体ではない場合
 
 - else
 
 - # アイテムの選択を終了
 
 - end_item_select_from_skill
 
 - # 次のアクターのコマンド入力へ
 
 - phase3_next_actor
 
 - end
 
 - return
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● スキルからのアイテム選択開始
 
 - #--------------------------------------------------------------------------
 
 - def start_item_select_from_skill(restrict = 0)
 
 - # 投擲アイテムウィンドウを作成 ( 武器のみ:投擲可能のみ )
 
 - @item_window_weapons = Window_Item.new
 
 - if restrict == 1
 
 - @item_window_weapons.set_itemkind(11)
 
 - else
 
 - @item_window_weapons.set_itemkind(1)
 
 - end
 
 - # ヘルプウィンドウを関連付け
 
 - @item_window_weapons.help_window = @help_window
 
 - # スキルウィンドウを無効化
 
 - @skill_window.active = false
 
 - @skill_window.visible = false
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● スキルからのアイテム選択終了
 
 - #--------------------------------------------------------------------------
 
 - def end_item_select_from_skill
 
 - # 武器のみアイテムウィンドウを解放
 
 - @item_window_weapons.dispose
 
 - @item_window_weapons = nil
 
 - # ヘルプウィンドウを隠す
 
 - @help_window.visible = false
 
 - # スキルウィンドウを有効化
 
 - @skill_window.active = true
 
 - @skill_window.visible = true
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● エネミー選択開始
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_start_enemy_select start_enemy_select
 
 - def start_enemy_select
 
 - return if start_select_check
 
 - xrxs19_start_enemy_select
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● アクター選択開始
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_start_actor_select start_actor_select
 
 - def start_actor_select
 
 - return if start_select_check
 
 - xrxs19_start_actor_select
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 選択開始時のチェック
 
 - #--------------------------------------------------------------------------
 
 - def start_select_check
 
 - # "全体化"、"全域化"、"対象ランダム"の判定
 
 - case @active_battler.current_action.kind
 
 - when 0 # 攻撃
 
 - # ここで「攻撃」使用者の武器IDを保持しておく
 
 - @active_battler.current_action.weapon_id = @active_battler.weapon_id
 
 - # チェックに戻る
 
 - if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ENEMY_ALL) or
 
 - equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_WHOLE) or
 
 - equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ENEMY_RAND) or
 
 - equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ACTOR_RAND) or
 
 - equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ALL_RANDOM)
 
 - phase3_next_actor
 
 - return true
 
 - end
 
 - when 1 # スキル
 
 - if skill_element_include?(@skill, ELEMENT_NAME_AREA_ENEMY_ALL) or
 
 - skill_element_include?(@skill, ELEMENT_NAME_AREA_WHOLE) or
 
 - skill_element_include?(@skill, ELEMENT_NAME_AREA_ENEMY_RAND) or
 
 - skill_element_include?(@skill, ELEMENT_NAME_AREA_ACTOR_RAND) or
 
 - skill_element_include?(@skill, ELEMENT_NAME_AREA_ALL_RANDOM)
 
 - end_skill_select
 
 - phase3_next_actor
 
 - return true
 
 - end
 
 - when 2 # アイテム
 
 - if item_element_include?(@item, ELEMENT_NAME_AREA_ENEMY_ALL) or
 
 - item_element_include?(@item, ELEMENT_NAME_AREA_WHOLE) or
 
 - item_element_include?(@item, ELEMENT_NAME_AREA_ENEMY_RAND) or
 
 - item_element_include?(@item, ELEMENT_NAME_AREA_ACTOR_RAND) or
 
 - item_element_include?(@item, ELEMENT_NAME_AREA_ALL_RANDOM)
 
 - end_item_select
 
 - phase3_next_actor
 
 - return true
 
 - end
 
 - end
 
 - return false
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_update_phase4_step1 update_phase4_step1
 
 - def update_phase4_step1
 
 - # 初期化
 
 - @phase4_act_continuation = 0
 
 - @phase4_act_times_max = 1
 
 - @skill = nil
 
 - @weapon_id = nil
 
 - # 戻す
 
 - xrxs19_update_phase4_step1
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_update_phase4_step2 update_phase4_step2
 
 - def update_phase4_step2
 
 - #リレイズ判定
 
 - next_phase_ok = true
 
 - next_phase_ok = update_reraise_effect(@active_battler)
 
 - if !next_phase_ok
 
 - return
 
 - end
 
 - if next_phase_ok
 
 - # ステップ 2 へ
 
 - xrxs19_update_phase4_step2
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 基本アクション 結果作成
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_make_basic_action_result make_basic_action_result
 
 - def make_basic_action_result
 
 - # 攻撃の場合
 
 - if @active_battler.current_action.basic == 0
 
 - # 武器IDの取得
 
 - @weapon_id = @active_battler.is_a?(Game_Actor) ? @active_battler.weapon_id : 0
 
 - # 指定行動回数取得 ( "行動回数"が無い場合は 1 のまま )
 
 - weapon_element_include?(@weapon_id, ELEMENT_NAME_MOVE_TIMES)
 
 - @phase4_act_times_max = @one.to_i if @one != nil
 
 - # アニメーション ID を設定
 
 - @animation1_id = @active_battler.animation1_id
 
 - @animation2_id = @active_battler.animation2_id
 
 - # 初期化
 
 - @target_battlers = []
 
 - # 対象側バトラーの配列を設定
 
 - # "全体化"の判定
 
 - if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ENEMY_ALL)
 
 - # 行動側バトラーがエネミーの場合
 
 - if @active_battler.is_a?(Game_Enemy)
 
 - if @active_battler.restriction == 3
 
 - @target_battlers = $game_troop.enemies
 
 - else
 
 - @target_battlers = $game_party.actors
 
 - end
 
 - end
 
 - # 行動側バトラーがアクターの場合
 
 - if @active_battler.is_a?(Game_Actor)
 
 - if @active_battler.restriction == 3
 
 - @target_battlers = $game_party.actors
 
 - else
 
 - @target_battlers = $game_troop.enemies
 
 - end
 
 - end
 
 - end
 
 - # "敵ランダム"の判定
 
 - if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ENEMY_RAND)
 
 - # 行動側バトラーがエネミーの場合
 
 - if @active_battler.is_a?(Game_Enemy)
 
 - if @active_battler.restriction == 3
 
 - tb_array = $game_troop.enemies
 
 - else
 
 - tb_array = $game_party.actors
 
 - end
 
 - end
 
 - # 行動側バトラーがアクターの場合
 
 - if @active_battler.is_a?(Game_Actor)
 
 - if @active_battler.restriction == 3
 
 - tb_array = $game_party.actors
 
 - else
 
 - tb_array = $game_troop.enemies
 
 - end
 
 - end
 
 - @target_battlers = [tb_array[rand(tb_array.size)]]
 
 - end
 
 - # "味方ランダム"の判定
 
 - if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ACTOR_RAND)
 
 - # 行動側バトラーがエネミーの場合
 
 - if @active_battler.is_a?(Game_Enemy)
 
 - if @active_battler.restriction == 3
 
 - tb_array = $game_party.actors
 
 - else
 
 - tb_array = $game_troop.enemies
 
 - end
 
 - end
 
 - # 行動側バトラーがアクターの場合
 
 - if @active_battler.is_a?(Game_Actor)
 
 - if @active_battler.restriction == 3
 
 - tb_array = $game_troop.enemies
 
 - else
 
 - tb_array = $game_party.actors
 
 - end
 
 - end
 
 - @target_battlers = [tb_array[rand(tb_array.size)]]
 
 - end
 
 - # "全域化"の判定
 
 - if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_WHOLE)
 
 - @target_battlers = $game_party.actors + $game_troop.enemies
 
 - @target_battlers -= [@active_battler]
 
 - for target in @target_battlers
 
 -   if target.dead? or target.hp0? or target.hidden
 
 -     @target_battlers -= [target]
 
 -   end
 
 - end
 
 - end
 
  
- # "対象ランダム"の判定
 
 - if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ALL_RANDOM)
 
 - tb_array = $game_party.actors + $game_troop.enemies
 
 - @target_battlers = [tb_array[rand(tb_array.size)]]
 
 - end
 
 - if @target_battlers.size > 0
 
 - ##かばう追加
 
 - get_target_battlers_after_cover!(@target_battlers, @active_battler)
 
 - # 通常攻撃の効果を適用
 
 - for target in @target_battlers
 
 - target.attack_effect(@active_battler)
 
 - end
 
 - return
 
 - end
 
 - end
 
 - xrxs19_make_basic_action_result
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● スキルまたはアイテムの対象側バトラー設定
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_set_target_battlers set_target_battlers
 
 - def set_target_battlers(scope)
 
 - case @active_battler.current_action.kind
 
 - when 1
 
 - # "全体化"の判定
 
 - if skill_element_include?(@skill, ELEMENT_NAME_AREA_ENEMY_ALL)
 
 - scope = 2
 
 - return
 
 - end
 
 - # "全域化"の判定
 
 - scope = 8 if skill_element_include?(@skill, ELEMENT_NAME_AREA_WHOLE)
 
 - # "敵ランダム"の判定
 
 - scope = 9 if skill_element_include?(@skill, ELEMENT_NAME_AREA_ENEMY_RAND)
 
 - # "味方ランダム"の判定
 
 - scope =10 if skill_element_include?(@skill, ELEMENT_NAME_AREA_ACTOR_RAND)
 
 - # "対象ランダム"の判定
 
 - scope =11 if skill_element_include?(@skill, ELEMENT_NAME_AREA_ALL_RANDOM)
 
 - when 2
 
 - # "全体化"の判定
 
 - if item_element_include?(@item, ELEMENT_NAME_AREA_ENEMY_ALL)
 
 - scope = 2
 
 - return
 
 - end
 
 - # "全域化"の判定
 
 - scope = 8 if item_element_include?(@item, ELEMENT_NAME_AREA_WHOLE)
 
 - # "敵ランダム"の判定
 
 - scope = 9 if item_element_include?(@item, ELEMENT_NAME_AREA_ENEMY_RAND)
 
 - # "味方ランダム"の判定
 
 - scope =10 if item_element_include?(@item, ELEMENT_NAME_AREA_ACTOR_RAND)
 
 - # "対象ランダム"の判定
 
 - scope =11 if item_element_include?(@item, ELEMENT_NAME_AREA_ALL_RANDOM)
 
 - end
 
 - case scope
 
 - when 8
 
 - @target_battlers = $game_party.actors + $game_troop.enemies
 
 - @target_battlers -= [@active_battler]
 
 - for target in @target_battlers
 
 -   if target.dead? or target.hp0? or target.hidden
 
 -     @target_battlers -= [target]
 
 -   end
 
 - end
 
  
 
- return
 
 - when 9
 
 - # 行動側バトラーがエネミーの場合
 
 - if @active_battler.is_a?(Game_Enemy)
 
 - tb_array = $game_party.actors
 
 - target = $game_party.random_target_actor
 
  
 
-           
 
 -          alive_num = 0 #同伴生还人数
 
 -          for actor in tb_array
 
 -            if actor.hp > 0
 
 -              alive_num += 1
 
 -            end
 
 -          end
 
 -          #人数大于1的话
 
 -          if alive_num > 0
 
 -            #重复随机选择己方角色,直到目标不是自己时停止
 
 -            until target != @target_battlers
 
 -              target = $game_party.random_target_enemy
 
 -            end
 
 -          end
 
 -          
 
 -          
 
 - end
 
 - # 行動側バトラーがアクターの場合
 
 - if @active_battler.is_a?(Game_Actor)
 
 - tb_array = $game_troop.enemies
 
 - target = $game_troop.random_target_enemy
 
  
 
-           
 
 -          alive_num = 0 #同伴生还人数
 
 -          for enemy in tb_array
 
 -            if enemy.hp > 0
 
 -              alive_num += 1
 
 -            end
 
 -          end
 
 -          #人数大于1的话
 
 -          if alive_num > 0
 
 -            #重复随机选择己方角色,直到目标不是自己时停止
 
 -            until target != @target_battlers
 
 -              target = $game_party.random_target_actor
 
 -            end
 
 -          end
 
 -          
 
 -          
 
 - end
 
 - @target_battlers = [target]
 
 - #@target_battlers = [tb_array[rand(tb_array.size)]]
 
 - return
 
 - when 10
 
 - # 行動側バトラーがエネミーの場合
 
 - if @active_battler.is_a?(Game_Enemy)
 
 - tb_array = $game_troop.enemies
 
 - end
 
 - # 行動側バトラーがアクターの場合
 
 - if @active_battler.is_a?(Game_Actor)
 
 - tb_array = $game_party.actors
 
 - end
 
 - @target_battlers = [tb_array[rand(tb_array.size)]]
 
 - return
 
 - when 11
 
 - tb_array = $game_party.actors + $game_troop.enemies
 
 - @target_battlers = [tb_array[rand(tb_array.size)]]
 
 - return
 
 - end
 
 - # 呼び戻す
 
 - xrxs19_set_target_battlers(scope)
 
 - ##追加
 
 - get_target_battlers_after_cover!(@target_battlers, @active_battler)
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● スキルアクション 結果作成
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_make_skill_action_result make_skill_action_result
 
 - def make_skill_action_result
 
 - # スキルを取得
 
 - @skill = $data_skills[@active_battler.current_action.skill_id]
 
 - # 既に一回以上行動している場合
 
 - if @phase4_act_continuation >= 1
 
 - # SP消費分のSPを回復させて擬似的にSPを減らさない
 
 - @active_battler.sp += @skill.sp_cost
 
 - else
 
 - # 指定行動回数取得
 
 - skill_element_include?(@skill, ELEMENT_NAME_MOVE_TIMES)
 
 - @phase4_act_times_max = @one.to_i if @one != nil
 
 - # 特殊効果:消費金額に順ずる固定ダメージ
 
 - if skill_element_include?(@skill, "金钱投掷")
 
 - # ゴールドウィンドウを作成
 
 - if @gold_window == nil or @gold_window.visible == false
 
 - @gold_window = Window_Gold.new
 
 - @gold_window.x = 640 - @gold_window.width
 
 - @gold_window.y = 64
 
 - @gold_window.opacity = 160
 
 - @gold_window.visible = true
 
 - end
 
 - end
 
 - # HP消費スキルの場合
 
 - if skill_element_include?(@skill, ELEMENT_NAME_HP_COST)
 
 - # HPが足りるか判定
 
 - if @active_battler.hp <= @skill.sp_cost
 
 - # 足りない場合
 
 - # ステップ 1 に移行
 
 - @phase4_step = 1
 
 - return
 
 - end
 
 - # SP消費分のSPを回復させて擬似的にSPを減らさない(最大値を超えて回復)
 
 - @active_battler.hp0_ban = true
 
 - @active_battler.sp += @skill.sp_cost
 
 - # 戻す
 
 - xrxs19_make_skill_action_result
 
 - # HPを消費
 
 - @active_battler.hp -= @skill.sp_cost
 
 - # HP/SPの制限の解除
 
 - @active_battler.hp0_ban = false
 
 - return
 
 - end
 
 - end
 
 - xrxs19_make_skill_action_result
 
 - ##追加
 
 - make_cover_skill_action_result()
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_update_phase4_step3 update_phase4_step3
 
 - def update_phase4_step3
 
 -   
 
 -    ## 连续伤害
 
 -     # if @active_battler.hp > 0 and @active_battler.slip_damage?
 
 -      #  @active_battler.slip_damage_effect
 
 -       # @active_battler.damage_pop = true
 
 -       # @active_battler.battle_solid_damage = true
 
 -     # end
 
  
-   
 
 - # 既に一回以上行動している場合
 
 - if @phase4_act_continuation >= 1
 
 - @active_battler.current_action.basic = 0  
 
 - @active_battler.animation_id = @active_battler.animation1_id
 
  
- # ステップ 4 に移行
 
 - @phase4_step = 4
 
 - @wait_count = 0
 
 - return
 
 - end
 
 - xrxs19_update_phase4_step3
 
 - # ちからためメッセージ表示。
 
 - for target in @target_battlers
 
 - if !target.action_message.nil?
 
 - #@help_window.set_text(target.action_message, 1)
 
 - target.action_message = nil
 
 - end
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_update_phase4_step4 update_phase4_step4
 
 - def update_phase4_step4
 
 - # 武器投擲時、「武器のアニメーション」を対象に使う
 
 - if skill_element_include?(@skill, "武器投掷")
 
 - @animation2_id = $data_weapons[@active_battler.current_action.basic].animation2_id
 
 - end
 
 - # ゴールドウィンドウを更新
 
 - @gold_window.refresh if @gold_window != nil
 
 - if skill_element_include?(@skill, "变身")
 
 - tb_array = @target_battlers
 
 - @target_battlers = [@active_battler]
 
 - xrxs19_update_phase4_step4
 
 - @target_battlers = tb_array
 
 - else
 
 - xrxs19_update_phase4_step4
 
 - end
 
 - # かばわれたメンバーのアニメーション
 
 - for target in @target_battlers
 
 - if target.current_friend != nil
 
 - target.current_friend.animation_id = COVER_ANIMATION_ID
 
 - end
 
 - end
 
 - # 既に一回以上行動している場合
 
 - if @phase4_act_continuation >= 1
 
 - @wait_count = 0
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_update_phase4_step5 update_phase4_step5
 
 - def update_phase4_step5
 
 - # 呼び戻す
 
 - xrxs19_update_phase4_step5
 
 - # かばわれたメンバーのダメージ
 
 - for target in @target_battlers
 
 - if target.current_friend != nil
 
 - target.current_friend.damage_pop = true
 
 - #かばっている状態の初期化
 
 - target.current_friend = nil
 
 - end
 
 - end
 
 - # 生存確認
 
 - target_still_left = false
 
 - for target in @target_battlers
 
 - # ターゲットが生き残っているか判別
 
 - target_still_left = true if !target.dead?
 
 - # 戦闘不能時で、変身を解除
 
 - if target.dead? and target.metamor_target != nil
 
 - target.animation_id = 17 # 戦闘不能変身解除時のアニメーションID
 
 - target.animation_hit = true
 
 - target.battler_name = target.battler_name_original
 
 - target.metamor_target = nil
 
 - end
 
 - end
 
 - # ダメージ表示
 
 - if @active_battler.damage != nil
 
 - @active_battler.damage_pop = true 
 
 - end
 
 - # 変身対象のバトラーグラフィックをコピー
 
 - if skill_element_include?(@skill, "变身")
 
 - if @active_battler.metamor_target != nil
 
 - @active_battler.battler_name = @active_battler.metamor_target.battler_name
 
 - else
 
 - @active_battler.battler_name = @active_battler.battler_name_original
 
 - end
 
 - end
 
 - # ターゲットの敵への処理
 
 - for target in @target_battlers
 
 - # スティール結果メッセージ表示。ただし、複数ターゲットの表示は不可能
 
 - if !target.effect_message.nil?
 
 - #@help_window.set_text(target.effect_message, 1)
 
 - target.effect_message = nil
 
 - end
 
 - end
 
 - # 行動した回数のカウントを 1 加算
 
 - @phase4_act_continuation += 1
 
 - # 実行済み行動回数が、指定行動回数に達したかを判別
 
 - if @phase4_act_continuation < @phase4_act_times_max
 
 - # 達していない場合
 
 - # 生存している場合、続ける。
 
 - if target_still_left
 
 - # 指定行動回数に満たない場合は繰り返す為、ステップ 2 に移行
 
 - @phase4_step = 2
 
 - @wait_count = 0
 
 - # スキル使用中の場合はヘルプウィンドウを隠すのをやめる
 
 - if @active_battler.current_action.kind == 1
 
 - @help_window.visible = false  
 
 - #@help_window.visible = true
 
 - end
 
 - end
 
 - else
 
 - # 達した場合
 
 - # 敵が生存、かつ skillが"派生"属性を持つ場合
 
 - if target_still_left and
 
 - (skill_element_include?(@skill, ELEMENT_NAME_DERIVER) or
 
 - (@weapon_id != nil and equip_weapon_element_include?(@active_battler, ELEMENT_NAME_DERIVER)))
 
 - if @one.to_i > 0
 
 - # 回数をリセット
 
 - @phase4_act_continuation = 0
 
 - @phase4_act_times_max = 1
 
 - # 武器攻撃ではなくなるため @weapon_id を nil 化
 
 - @weapon_id = nil
 
 - # 新しいスキルID
 
 - @active_battler.current_action.kind = 1
 
 - @active_battler.current_action.skill_id = @one.to_i
 
 - # ステップ 2 に移行
 
 - @phase4_step = 2
 
 - @wait_count = 0
 
 - end
 
 - end
 
 - end
 
 - # ゴールドウィンドウを隠す
 
 - @gold_window.visible = false if @gold_window != nil
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● フレーム更新 (メインフェーズ ステップ 6 : リレイズ表示→リフレッシュ)
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_update_phase4_step6 update_phase4_step6
 
 - def update_phase4_step6
 
 - next_phase_ok = true
 
 - #リレイズ判定
 
 - for enemy in $game_troop.enemies 
 
 - next_phase_ok = update_reraise_effect(enemy)
 
 - if !next_phase_ok
 
 - return
 
 - end
 
 - end
 
 - for actor in $game_party.actors
 
 - next_phase_ok = update_reraise_effect(actor)
 
 - if !next_phase_ok
 
 - return
 
 - end
 
 - end
 
 - if next_phase_ok
 
 - xrxs19_update_phase4_step6
 
 - end
 
 - end
 
 - #===================================================
 
 - #リレイズエフェクト
 
 - #===================================================
 
 - def update_reraise_effect(battler)
 
 - if battler.reraised
 
 - case battler.reraise_state
 
 - when 0
 
 - battler.reraise_state = 1 # コラプス待ち
 
 - @wait_count = 16
 
 - return false
 
 - when 1
 
 - battler.reraise_state = 2 # 復活アニメーション
 
 - ##IDは好きなアニメーションIDを指定
 
 - battler.animation_id = RERAISE_ANIMATION_ID
 
 - @wait_count = 8
 
 - return false#
 
 - when 2
 
 - #復活処理
 
 - battler.hp = battler.maxhp * RERAISE_HP_PERCENT / 100 + RERAISE_HP
 
 - battler.reraise_state = 3 #アピアーアニメーション
 
 - @wait_count = 8
 
 - return false#
 
 - when 3
 
 - battler.reraise_state = 0 #終了?通常処理に戻る
 
 - battler.reraised = false #フラグを初期値へ
 
 - @status_window.refresh
 
 - return true
 
 - end
 
 - else
 
 - return true
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● アフターバトルフェーズ開始
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_update_phase5 update_phase5
 
 - def update_phase5
 
 - next_phase_ok = false
 
 - # 次のアクターへ
 
 - @phase5_i = -1 if @phase5_i == nil
 
 - @phase5_i += 1
 
 - if @phase5_i < $game_party.actors.size
 
 - actor = $game_party.actors[@phase5_i]
 
 - # 変身状態の味方がいるか判別し、それを解除する
 
 - if actor.metamor_target != nil
 
 - actor.animation_id = 17 # 戦闘終了変身解除時のアニメーションID
 
 - actor.animation_hit = true
 
 - actor.battler_name = actor.battler_name_original
 
 - actor.metamor_target = nil
 
 - # ステータスウィンドウをリフレッシュ
 
 - @status_window.refresh
 
 - # アニメーションの長さにかかわらず、最低 4 フレーム待つ
 
 - @wait_count = 4
 
 - end
 
 - else
 
 - next_phase_ok = true
 
 - end
 
 - if next_phase_ok
 
 - xrxs19_update_phase5
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 行動順序作成
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_make_action_orders make_action_orders
 
 - def make_action_orders
 
 - xrxs19_make_action_orders
 
 - # 優先度の大きい順 (同値の場合は素早さの速い順) に並び替え
 
 - @action_battlers.sort! do |a, b|
 
 - if a.current_action.speed_priority > b.current_action.speed_priority
 
 - -1
 
 - elsif a.current_action.speed_priority < b.current_action.speed_priority
 
 - +1
 
 - elsif a.current_action.speed > b.current_action.speed
 
 - -1
 
 - elsif a.current_action.speed < b.current_action.speed
 
 - +1
 
 - else
 
 - 0 # a <=> b
 
 - end
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● バトル終了
 
 - #--------------------------------------------------------------------------
 
 - alias xrxs19_battle_end battle_end
 
 - def battle_end(result)
 
 - for i in 0...$game_party.actors.size
 
 - actor = $game_party.actors[i]
 
 - # 変身状態の味方がいるか判別し、それを解除する
 
 - if actor.metamor_target != nil
 
 - actor.battler_name = actor.battler_name_original
 
 - actor.metamor_target = nil
 
 - end
 
 - end
 
 - xrxs19_battle_end(result)
 
 - end
 
 - end
 
 - #=============================================================================
 
 - # ◇ スティール
 
 - #=============================================================================
 
 - class Game_Battler
 
 - #--------------------------------------------------------------------------
 
 - # ● 公開インスタンス変数
 
 - #--------------------------------------------------------------------------
 
 - attr_accessor :effect_message
 
 - #--------------------------------------------------------------------------
 
 - # ● オブジェクト初期化
 
 - #--------------------------------------------------------------------------
 
 - alias before_steal_original_battler_initialize initialize
 
 - def initialize
 
 - before_steal_original_battler_initialize()
 
 - @effect_message = nil
 
 - @steal_skill_id = $data_system.elements.index(STEAL_SKILL_ELEMENT_NAME)
 
 - end
 
 - end
 
 - class Game_Enemy < Game_Battler
 
 - #--------------------------------------------------------------------------
 
 - # ● オブジェクト初期化
 
 - #--------------------------------------------------------------------------
 
 - alias before_steal_original_enemy_initialize initialize 
 
 - def initialize(troop_id, member_index)
 
 - before_steal_original_enemy_initialize(troop_id, member_index)
 
 - @item_possession = true
 
 - end
 
 - #===================================================
 
 - #
 
 - #===================================================
 
 - def name
 
 - name = $data_enemies[@enemy_id].name.split(/-/)[0]
 
 - if !name.nil?
 
 - return name = name.strip()
 
 - else
 
 - return ''
 
 - end
 
 - end
 
 - #===================================================
 
 - #ノーマルアイテムの指定 
 
 - #エネミーネームに -n種類 ID 個数(-na 10 10) と入れて指定。
 
 - #種類は、i(アイテム) w(武器) a(防具)のいずれか一つ
 
 - #個数は省略可能、自動で1扱い。
 
 - #また、ドロップアイテムと同一にしたい場合は
 
 - #エネミーネームに -nd 個数(-nd 2) と入れて指定。
 
 - #個数は省略可能、自動で1扱い。
 
 - #===================================================
 
  
- def normal_item
 
 - return get_item_from_name("n")#オプション"n"の文字列から取得
 
 - end
 
  
- #===================================================
 
 - #レアアイテムの指定 
 
 - #エネミーネームに -r種類 ID 個数(-na 10 10) と入れて指定。
 
 - #種類は、i(アイテム) w(武器) a(防具)のいずれか一つ
 
 - #個数は省略可能、自動で1扱い。
 
 - #また、ドロップアイテムと同一にしたい場合は
 
 - #エネミーネームに -rd 個数(-nd 2) と入れて指定。
 
 - #個数は省略可能、自動で1扱い。
 
 - #===================================================
 
  
- def rare_item
 
 - return get_item_from_name("r")#オプション"r"の文字列から取得
 
 - end
 
  
- #===================================================
 
 - #*Nameからアイテムを抜き出す処理
 
 - #===================================================
 
 - def get_item_from_name(opt)
 
 - names = $data_enemies[@enemy_id].name.split(/-/)
 
 - if names.size > 1
 
 - for i in 1...names.size
 
 - if names[i][0,1] != opt
 
 - next
 
 - end
 
  
- names[i].sub!(/^.(.*)/){$1}
 
 - ary = names[i].split(/ /)
 
  
- if ary[0][0,1] == "g"
 
 - cgy = "g"
 
 - id = 0
 
 - if ary[1].nil?
 
 - ary[1] = "1"
 
 - elsif ary[1].sub!(/^([0-9]+)/){$1}.nil?
 
 - ary[1] = "1"
 
 - end
 
 - possession = {"Category"=>cgy, "ID"=>id, "Num"=>ary[1].to_i}
 
 - return possession
 
  
- elsif ary[0][0,1] == "d"
 
 - cgy = ""
 
 - id = 0
 
 - if self.item_id != 0
 
 - cgy = "i"
 
 - id = self.item_id
 
 - elsif self.weapon_id != 0 
 
 - cgy = "w"
 
 - id = self.weapon_id
 
 - elsif self.armor_id != 0
 
 - cgy = "a"
 
 - id = self.armor_id
 
 - else
 
 - return nil
 
 - end
 
  
- if ary[1].nil?
 
 - ary[1] = "1"
 
 - elsif ary[1].sub!(/^([0-9]+)/){$1}.nil?
 
 - ary[1] = "1"
 
 - end
 
 - possession = {"Category"=>cgy, "ID"=>id, "Num"=>ary[1].to_i}
 
 - return possession
 
  
- elsif !ary[0].sub!(/^([iwa])/){$1}.nil? && !ary[1].sub!(/^([0-9]+)/){$1}.nil?
 
 - if ary[2].nil? || ary[2].sub!(/^([0-9]+)/){$1}.nil?
 
 - ary[2] = "1"
 
 - end
 
 - possession = {"Category"=>ary[0], "ID"=>ary[1].to_i, "Num"=>ary[2].to_i}
 
 - return possession
 
  
- end
 
 - end
 
 - end
 
 - return nil 
 
 - end
 
  
- #===================================================
 
 - #スティールエフェクト
 
 - #===================================================
 
  
- def steal_effect(user, skill) # 引数skillを追加
 
  
- pos = self.normal_item
 
  
- if !@item_possession || pos.nil?
 
 - @effect_message = "没有东西可偷。"
 
 - Audio.se_play("Audio/SE/cgsys20", 100, 100)
 
 - $am = "没有东西可偷。"
 
 - #self.damage = "Miss"
 
 - return false
 
 - end
 
  
- #盗み成功判定 アジリティが同一で50%、2倍で100%
 
 - if rand(100) <= ((user.agi+0.01)/(self.agi+0.01))*100/2
 
 - r_pos = self.rare_item
 
 - #レアアイテム判定
 
 - if !r_pos.nil? && rand(10) <= 1
 
 - pos = r_pos
 
 - end
 
  
- case pos["Category"]
 
 - when "i"
 
 - item = $data_items[pos["ID"]]
 
 - if item.nil?
 
 - #print "这个物品不存在!"
 
 - Audio.se_play("Audio/SE/cgsys20", 100, 100)
 
 - $am = "这个物品不存在!"
 
 - return false
 
 - end
 
 - $game_party.gain_item(item.id, pos["Num"])
 
 - when "w"
 
 - item = $data_weapons[pos["ID"]]
 
 - if item.nil?
 
 - #print "这个物品不存在!"
 
 - Audio.se_play("Audio/SE/cgsys20", 100, 100)
 
 - $am = "这个物品不存在!"
 
 - return false
 
 - end
 
 - $game_party.gain_weapon(item.id, pos["Num"])
 
 - when "a"
 
 - item = $data_armors[pos["ID"]]
 
 - if item.nil?
 
 - #print "这个物品不存在!"
 
 - Audio.se_play("Audio/SE/cgsys20", 100, 100)
 
 - $am = "这个物品不存在!"
 
 - return false
 
 - end
 
 - $game_party.gain_armor(item.id, pos["Num"])
 
 - when "g"
 
 - # ゴールド獲得
 
 - $game_party.gain_gold(pos["Num"])
 
 - end
 
  
- if pos["Category"] == "g"
 
 - @effect_message = "#{pos["Num"]}#{$data_system.words.gold}偷到!"
 
 - Audio.se_play("Audio/SE/cgsys20", 100, 100)
 
 - $am = "偷到#{pos["Num"]}#{$data_system.words.gold}!"
 
 - else
 
 - @effect_message = "#{item.name}#{pos["Num"]}个偷到!"
 
 - $am = "偷到#{pos["Num"]}个#{item.name}!"
 
 - end
 
 - @item_possession = false
 
  
- self.damage = "Steal!" if self.damage == "Miss"
 
 - return true
 
 - else
 
 - @effect_message = "没有东西可偷???"
 
 - Audio.se_play("Audio/SE/cgsys20", 100, 100)
 
 - $am = "没有东西可偷???"
 
 - #self.damage = "Miss
 
 - return false
 
 - end
 
  
- return false # 念のためfalse返す処理追加
 
 - # 多分なくてもifの結果(false)が返ると思うけど…
 
 - end
 
 - end
 
 - #=============================================================================
 
 - # ■ ライブラ スキル実装スクリプト 2004/09/24 - 0.1α
 
 - #=============================================================================
 
 - class Game_Battler
 
 - #--------------------------------------------------------------------------
 
 - # ● 追加公開インスタンス変数
 
 - #--------------------------------------------------------------------------
 
 - attr_accessor :libla_reserve # ライブラ予約
 
 - #--------------------------------------------------------------------------
 
 - # ● 初期化
 
 - #--------------------------------------------------------------------------
 
 - alias before_libra_initialize initialize
 
  
- def initialize
 
 - before_libra_initialize
 
 - # 「ライブラ」属性のID取得
 
 - @libra_element_id = $data_system.elements.index(LIBLA_SKILL_ELEMENT_NAME)
 
 - @libra_element_id = 0 if @libra_element_id.nil?
 
 - # 今回の行動フェイズでライブラを受けたかどうかフラグ、初期化
 
 - @libla_reserve = false
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● スキルの効果適用
 
 - # user : 使用者 (バトラー)
 
 - # skill: スキル
 
 - #--------------------------------------------------------------------------
 
 - alias before_libra_skill_effect skill_effect
 
 - def skill_effect(user, skill)
 
 - #「ライブラ」スキルかどうかの判定。
 
 - if skill.element_set.include?(@libra_element_id)
 
 - # 命中率を適用する場合は下のif文のコメントを外してください
 
 - #if rand(100) < skill.hit
 
 - # このバトラーがエネミーなら情報ウィンドウを表示する
 
 - if self.is_a?(Game_Enemy)
 
 - self.libla_reserve = true
 
 - end
 
 - # 命中率を適用する場合は下のelse~endのコメントを外してください
 
 - #else
 
 - # self.damage = "Miss"
 
 - #end
 
 - # 普通のスキル判定は行わない。
 
 - return true
 
 - else
 
 - return before_libra_skill_effect(user, skill)
 
 - end
 
 - end
 
 - end
 
 - #==============================================================================
 
 - # ■ Scene_Battle
 
 - #==============================================================================
 
 - class Scene_Battle
 
 - #--------------------------------------------------------------------------
 
 - # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
 
 - #--------------------------------------------------------------------------
 
 - alias before_libra_update_phase4_step5 update_phase4_step5
 
 - def update_phase4_step5
 
 - # ダメージ表示
 
 - for target in @target_battlers
 
 - if target.libla_reserve
 
 - libra_window = Window_EnemyStatus.new(target)
 
 - loop do
 
 - # ゲーム画面を更新
 
 - Graphics.update
 
 - # 入力情報を更新
 
 - Input.update
 
 - # ボタンが押されたら情報ウィンドウを閉じてループを中断
 
 - if Input.trigger?(Input::C) or Input.trigger?(Input::B)
 
 - libra_window.dispose
 
 - libra_window = nil
 
 - break
 
 - end
 
 - end
 
 - end
 
 - # ライブラ予約フラグを解除
 
 - target.libla_reserve = false
 
 - end
 
 - before_libra_update_phase4_step5
 
 - end
 
 - end
 
 - #==============================================================================
 
 - # ■ Window_EnemyStatus
 
 - #------------------------------------------------------------------------------
 
 - #  エネミーのステータスを表示するステータスウィンドウです。
 
 - #==============================================================================
 
 - class Window_EnemyStatus < Window_Base
 
 - #--------------------------------------------------------------------------
 
 - # ● オブジェクト初期化
 
 - # enemy : エネミー
 
 - #--------------------------------------------------------------------------
 
 - def initialize(enemy)
 
 - super(0, 64, 640, 256)
 
 - self.contents = Bitmap.new(width - 32, height - 32)
 
 - self.back_opacity = 127
 
 - @enemy = enemy
 
 - refresh
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● リフレッシュ
 
 - #--------------------------------------------------------------------------
 
 - def refresh
 
 - self.contents.clear
 
 - draw_enemy_name(@enemy, 4, 0)
 
 - #draw_enemy_state(@enemy, 4, 48)
 
 - draw_enemy_hp(@enemy,196, 48, 172)
 
 - draw_enemy_sp(@enemy,196, 72, 172)
 
 - draw_enemy_parameter(@enemy, 4, 120, 0)
 
 - draw_enemy_parameter(@enemy, 4, 144, 1)
 
 - draw_enemy_parameter(@enemy, 4, 168, 2)
 
 - draw_enemy_parameter(@enemy, 4, 192, 7)
 
 - draw_enemy_parameter(@enemy,196, 120, 3)
 
 - draw_enemy_parameter(@enemy,196, 144, 4)
 
 - draw_enemy_parameter(@enemy,196, 168, 5)
 
 - draw_enemy_parameter(@enemy,196, 192, 6)
 
 - self.contents.font.color = system_color
 
 - self.contents.draw_text(384, 24, 80, 32, "EXP")
 
  
- if @enemy.gold != 0
 
 - self.contents.draw_text(384, 48, 80, 32, "等级")
 
 - #self.contents.draw_text(384, 48, 80, 32, "金钱")
 
 - end
 
  
- self.contents.draw_text(384, 96, 96, 32, "战利品")
 
 - self.contents.draw_text(384, 144, 96, 32, "偷窃物")
 
 - self.contents.font.color = normal_color
 
 - self.contents.draw_text(384 + 80, 24, 84, 32, @enemy.exp.to_s, 2)
 
  
- if @enemy.gold != 0
 
 - self.contents.draw_text(384 + 80, 48, 84, 32, @enemy.gold.to_s, 2)
 
 - #self.contents.draw_text(384 + 80, 48, 84, 32, @enemy.gold.to_s, 2)
 
 - end
 
  
- draw_item_name(get_enemy_item(@enemy,1), 384 + 16, 120)
 
 - draw_item_name(get_enemy_item(@enemy,2), 384 + 16, 168)
 
 - draw_item_name(get_enemy_item(@enemy,3), 384 + 16, 192)
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ○ アイテムの取得
 
 - #--------------------------------------------------------------------------
 
 - def get_enemy_item( enemy, type )
 
 - case type
 
 - when 1:
 
 - if enemy.item_id != nil and enemy.item_id != 0
 
 - return $data_items[enemy.item_id]
 
 - elsif enemy.weapon_id != nil and enemy.weapon_id != 0
 
 - return $data_weapons[enemy.weapon_id]
 
 - elsif enemy.armor_id != nil and enemy.armor_id != 0
 
 - return $data_armors[enemy.armor_id]
 
 - else
 
 - return nil
 
 - end
 
 - when 2:
 
 - info = enemy.get_item_from_name("n")
 
 - return nil if info == nil
 
 - case info["Category"]
 
 - when "i"
 
 - return $data_items[info["ID"]]
 
 - when "w"
 
 - return $data_weapons[info["ID"]]
 
 - when "a"
 
 - return $data_armors[info["ID"]]
 
 - otherwise
 
 - return nil
 
 - end
 
 - when 3:
 
 - info = enemy.get_item_from_name("r")
 
 - return nil if info == nil
 
 - case info["Category"]
 
 - when "i"
 
 - return $data_items[info["ID"]]
 
 - when "w"
 
 - return $data_weapons[info["ID"]]
 
 - when "a"
 
 - return $data_armors[info["ID"]]
 
 - otherwise
 
 - return nil
 
 - end
 
 - otherwise
 
 - return nil
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 名前の描画
 
 - # enemy : エネミー
 
 - # x : 描画先 X 座標
 
 - # y : 描画先 Y 座標
 
 - #--------------------------------------------------------------------------
 
 - def draw_enemy_name(enemy, x, y)
 
 - self.contents.font.color = normal_color
 
 - self.contents.draw_text(x, y, 120, 32, enemy.name)
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● ステートの描画
 
 - # enemy : エネミー
 
 - # x : 描画先 X 座標
 
 - # y : 描画先 Y 座標
 
 - # width : 描画先の幅
 
 - #--------------------------------------------------------------------------
 
 - def draw_enemy_state(enemy, x, y, width = 120)
 
 - text = make_battler_state_text(enemy, width, true)
 
 - self.contents.font.color = enemy.hp == 0 ? knockout_color : normal_color
 
 - self.contents.draw_text(x, y, width, 32, text)
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● HP の描画
 
 - # enemy : エネミー
 
 - # x : 描画先 X 座標
 
 - # y : 描画先 Y 座標
 
 - # width : 描画先の幅
 
 - #--------------------------------------------------------------------------
 
 - def draw_enemy_hp(enemy, x, y, width = 144)
 
 - # 文字列 "HP" を描画
 
 - self.contents.font.color = system_color
 
 - self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
 
 - # MaxHP を描画するスペースがあるか計算
 
 - if width - 32 >= 108
 
 - hp_x = x + width - 108
 
 - flag = true
 
 - elsif width - 32 >= 48
 
 - hp_x = x + width - 48
 
 - flag = false
 
 - end
 
 - # HP を描画
 
 - self.contents.font.color = enemy.hp == 0 ? knockout_color :
 
 - enemy.hp <= enemy.maxhp / 4 ? crisis_color : normal_color
 
 - self.contents.draw_text(hp_x, y, 48, 32, enemy.hp.to_s, 2)
 
 - # MaxHP を描画
 
 - if flag
 
 - self.contents.font.color = normal_color
 
 - self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
 
 - self.contents.draw_text(hp_x + 60, y, 48, 32, enemy.maxhp.to_s)
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● SP の描画
 
 - # enemy : エネミー
 
 - # x : 描画先 X 座標
 
 - # y : 描画先 Y 座標
 
 - # width : 描画先の幅
 
 - #--------------------------------------------------------------------------
 
 - def draw_enemy_sp(enemy, x, y, width = 144)
 
 - # 文字列 "SP" を描画
 
 - self.contents.font.color = system_color
 
 - self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
 
 - # MaxSP を描画するスペースがあるか計算
 
 - if width - 32 >= 108
 
 - sp_x = x + width - 108
 
 - flag = true
 
 - elsif width - 32 >= 48
 
 - sp_x = x + width - 48
 
 - flag = false
 
 - end
 
 - # SP を描画
 
 - self.contents.font.color = enemy.sp == 0 ? knockout_color :
 
 - enemy.sp <= enemy.maxsp / 4 ? crisis_color : normal_color
 
 - self.contents.draw_text(sp_x, y, 48, 32, enemy.sp.to_s, 2)
 
 - # MaxSP を描画
 
 - if flag
 
 - self.contents.font.color = normal_color
 
 - self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
 
 - self.contents.draw_text(sp_x + 60, y, 48, 32, enemy.maxsp.to_s)
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● パラメータの描画
 
 - # enemy : エネミー
 
 - # x : 描画先 X 座標
 
 - # y : 描画先 Y 座標
 
 - # type : パラメータの種類 (0~6)
 
 - #--------------------------------------------------------------------------
 
 - def draw_enemy_parameter(enemy, x, y, type)
 
 - case type
 
 - when 0
 
 - parameter_name = $data_system.words.atk
 
 - parameter_value = enemy.atk
 
 - when 1
 
 - parameter_name = $data_system.words.pdef
 
 - parameter_value = enemy.pdef
 
 - when 2
 
 - parameter_name = $data_system.words.mdef
 
 - parameter_value = enemy.mdef
 
 - when 3
 
 - parameter_name = $data_system.words.str
 
 - parameter_value = enemy.str
 
 - when 4
 
 - parameter_name = $data_system.words.dex
 
 - parameter_value = enemy.dex
 
 - when 5
 
 - parameter_name = $data_system.words.agi
 
 - parameter_value = enemy.agi
 
 - when 6
 
 - parameter_name = $data_system.words.int
 
 - parameter_value = enemy.int
 
 - when 7
 
 - parameter_name = "闪躲"
 
 - parameter_value = enemy.eva
 
 - end
 
 - self.contents.font.color = system_color
 
 - self.contents.draw_text(x, y, 120, 32, parameter_name)
 
 - self.contents.font.color = normal_color
 
 - self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
 
 - end
 
 - end
 
 - #=============================================================================
 
 - # ◇ ちからため スキル実装スクリプト by 和希
 
 - #=============================================================================
 
 - class Game_Battler
 
 - #--------------------------------------------------------------------------
 
 - # ● 追加公開インスタンス変数
 
 - #--------------------------------------------------------------------------
 
 - attr_accessor :powerstock # 「ちからため」回数
 
 - attr_accessor :action_message # ヘルプウィンドウに表示する文字
 
 - #--------------------------------------------------------------------------
 
 - # ● 初期化
 
 - #--------------------------------------------------------------------------
 
 - alias before_powerstock_original_initialize initialize
 
 - def initialize
 
 - before_powerstock_original_initialize
 
 - @powerstock = 0
 
 - @powerstock_skill_id = $data_system.elements.index(POWERSTOCK_SKILL_ELEMENT_NAME)
 
 - @powerstock_skill_id = 0 if @powerstock_skill_id == nil
 
 - @effect_message = nil
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 通常攻撃の効果適用
 
 - # attacker : 攻撃者 (バトラー)
 
 - #--------------------------------------------------------------------------
 
 - alias before_powerstock_original_attack_effect attack_effect
 
 - def attack_effect(attacker)
 
 - # 攻撃者が「ちからため」しているか?
 
 - if attacker.powerstock > 0
 
 - bool_powerstock = true
 
 - # 攻撃者の力を一時的に上昇させる
 
 - stock_attacker_str = attacker.str
 
 - attacker.str += ( stock_attacker_str * POWERSTOCK_BASE_RATE * attacker.powerstock ).to_i
 
 - # ヘルプメッセージに「ちからためx?」を出す
 
 - @action_message = POWERSTOCK_SKILL_ELEMENT_NAME
 
 - @action_message += " x"
 
 - @action_message += attacker.powerstock.to_s
 
 - # ストックを消す
 
 - attacker.powerstock = 0
 
 - else
 
 - bool_powerstock = false
 
 - end
 
 - # fukuyamaさん↓のミス発見ありがとうございました
 
 - result = before_powerstock_original_attack_effect(attacker)
 
 - # 力を上昇させていた場合、元に戻す
 
 - if bool_powerstock
 
 - attacker.str = stock_attacker_str
 
 - end
 
 - return result
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● スキルの効果適用
 
 - # user : 使用者 (バトラー)
 
 - # skill: スキル
 
 - #--------------------------------------------------------------------------
 
 - alias before_powerstock_original_skill_effect skill_effect
 
 - def skill_effect(user, skill)
 
 - #「ちからため」スキルかどうかの判定。
 
 - if skill.element_set.include?(@powerstock_skill_id)
 
 - # 命中率を適用する場合は下のif文のコメントを外してください
 
 - #if rand(100) < skill.hit
 
 - @powerstock += 1 # 「ちからため」回数を1増やす
 
 - # ダメージに"Charge"をセットする
 
 - self.damage = "Charge"
 
 - # 命中率を適用する場合は下のelse~endのコメントを外してください
 
 - #else
 
 - # self.damage = "Miss"
 
 - #end
 
 - # 普通のスキル判定は行わない。
 
 - return true
 
 - else
 
 - return before_powerstock_original_skill_effect(user, skill)
 
 - end
 
 - end
 
 - end
 
 - #=============================================================================
 
 - # ◇ 見切りステート by 和希
 
 - #=============================================================================
 
 - class Game_Battler
 
 - # 見切りステートの名前
 
 - ABANDONS_SKILL_STATE_NAME = "断念"
 
 - #--------------------------------------------------------------------------
 
 - # ● 通常攻撃の効果適用
 
 - #--------------------------------------------------------------------------
 
 - alias before_abandons_original_attack_effect attack_effect
 
  
- def attack_effect(attacker)
 
 - # 見切りステートが存在するか?
 
 - if nil != (abandons_skill = get_abandons_id)
 
 - # 見切りステートにかかっているか?
 
 - if self.state?(abandons_skill)
 
 - ## 避ける!
 
 - # クリティカルフラグをクリア
 
 - self.critical = false
 
 - # ダメージに "Avoid!!" を設定
 
 - self.damage = "Avoid!!"
 
 - # 見切りステートを解除
 
 - self.remove_state(abandons_skill,true)
 
 - # メソッド終了
 
 - return false
 
 - end
 
 - end
 
 - # 見切りステート状態でなかった時は通常どおり
 
 - return before_abandons_original_attack_effect(attacker)
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 見切りステータスのID取得
 
 - #--------------------------------------------------------------------------
 
 - def get_abandons_id
 
 - result = nil
 
 - if @abandons_status_id == nil
 
 - for i in 1 ... $data_states.size
 
 - if $data_states[i].name[/\A#{ABANDONS_SKILL_STATE_NAME}\Z/]
 
 - result = $data_states[i].id
 
 - break
 
 - end
 
 - end
 
 - @abandons_status_id = ( result != nil ? result : 0 )
 
 - elsif @abandons_status_id > 0
 
 - result = @abandons_status_id
 
 - end
 
 - return result
 
 - end
 
 - end
 
 - #=============================================================================
 
 - # ◇ かばう by シムナフ
 
 - #=============================================================================
 
 - #==============================================================================
 
 - # ■ Scene_Battle
 
 - #==============================================================================
 
 - class Scene_Battle
 
 - #追加
 
 - attr_reader :active_battler
 
 - #ここまで
 
 - ##新メソッド
 
 - def make_cover_skill_action_result
 
 - cover_num = 0
 
 - cover_bool = false
 
 - for i in @skill.element_set
 
 - if !($data_system.elements[i][/^#{ELEMENT_NAME_COVER}/].nil?)
 
 - cover_bool = true
 
 - elm_num = $data_system.elements[i][/([+-]*[0-9]+)/]
 
 - if !(elm_num.nil?)
 
 - cover_num += elm_num.to_i
 
 - end
 
 - end
 
 - end
 
  
- if cover_bool.equal?(true)
 
 - ##自分のみが対象だった場合は味方からランダムに1人をかばう
 
 - if @target_battlers.include?(@active_battler)
 
 - if @target_battlers.size == 1
 
 - if @target_battlers[0].is_a?(Game_Actor)
 
 - friends = $game_party.actors.dup
 
 - friends.delete(@active_battler)
 
 - @target_battlers = [friends[rand(friends.size)]]
 
 - elsif @target_battlers[0].is_a?(Game_Enemy)
 
 - friends = $game_troop.enemies.dup
 
 - friends.delete(@active_battler)
 
 - @target_battlers = [friends[rand(friends.size)]]
 
 - end
 
 - else
 
 - @target_battlers.delete(@active_battler)
 
 - end
 
 - end
 
  
- @active_battler.covered_friends = @target_battlers.dup
 
 - @active_battler.add_state(get_cover_state_id())##ステート付加時にデフォルト回数で発動回数が設定される
 
 - if (cover_num > 0)
 
 - @active_battler.cover_remain = cover_num#発動回数が有った場合はその回数で上書き
 
 - end
 
 - for target in @target_battlers
 
 - target.damage = COVER_EFFECT_CHAR
 
 - end
 
 - end
 
 - end
 
 - ##ここまで
 
 - end
 
  
- class Game_Party
 
 - ##追加エイリアス
 
 - include Cover_Module
 
 - #--------------------------------------------------------------------------
 
 - # ● 対象アクターのスムーズな決定
 
 - # actor_index : アクターインデックス
 
 - #--------------------------------------------------------------------------
 
  
- alias before_cover_original_smooth_target_actor smooth_target_actor
 
  
- def smooth_target_actor(actor_index)
 
 - if $scene.is_a?(Scene_Battle)
 
 - battler = $scene.active_battler()
 
 - else
 
 - battler = nil
 
 - end
 
  
- target = [before_cover_original_smooth_target_actor(actor_index)]
 
 - get_target_battlers_after_cover!(target, battler)
 
  
- return target[0]
 
 - end
 
 - ##ここまで
 
 - end 
 
  
- class Game_Troop
 
 - ##追加エイリアス
 
 - include Cover_Module
 
 - #--------------------------------------------------------------------------
 
 - # ● 対象エネミーのスムーズな決定
 
 - # enemy_index : エネミーインデックス
 
 - #--------------------------------------------------------------------------
 
  
- alias before_cover_original_smooth_target_enemy smooth_target_enemy 
 
  
- def smooth_target_enemy(enemy_index)
 
 - if $scene.is_a?(Scene_Battle)
 
 - battler = $scene.active_battler()
 
 - else
 
 - battler = nil
 
 - end
 
  
- target = [before_cover_original_smooth_target_enemy(enemy_index)]
 
 - get_target_battlers_after_cover!(target, battler)
 
  
- return target[0]
 
 - end
 
 - ##ここまで
 
 - end
 
  
 
- #==============================================================================
 
 - # ◇ 付加属性名称判定モジュール
 
 - #==============================================================================
 
 - module Check_ElementName_Set
 
 - #--------------------------------------------------------------------------
 
 - # ● スキルが指定名の属性を持つか判定
 
 - #--------------------------------------------------------------------------
 
 - def skill_element_include?(skill, element_name)
 
 - @one = @two = nil
 
 - return false if skill == nil or !skill.is_a?(RPG::Skill)
 
 - for i in skill.element_set
 
 - if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
 
 - @one = $1
 
 - @two = $2
 
 - return true
 
 - end
 
 - end
 
 - return false
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● アイテムが指定名の属性を持つか判定
 
 - #--------------------------------------------------------------------------
 
 - def item_element_include?(item, element_name)
 
 - @one = @two = nil
 
 - return false if item == nil or !item.is_a?(RPG::Item)
 
 - for i in item.element_set
 
 - if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
 
 - @one = $1
 
 - @two = $2
 
 - return true
 
 - end
 
 - end
 
 - return false
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 武器が指定名の属性を持つか判定
 
 - #--------------------------------------------------------------------------
 
 - def weapon_element_include?(weapon_id, element_name)
 
 - @one = @two = nil
 
 - return false if weapon_id == nil or weapon_id <= 0
 
 - for i in $data_weapons[weapon_id].element_set
 
 - if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
 
 - @one = $1
 
 - @two = $2
 
 - return true
 
 - end
 
 - end
 
 - return false
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 防具が指定名の属性を持つか判定
 
 - #--------------------------------------------------------------------------
 
 - def armor_element_include?(armor_id, element_name)
 
 - @one = @two = nil
 
 - return false if armor_id == nil or armor_id <= 0
 
 - for i in $data_armors[armor_id].guard_element_set
 
 - if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
 
 - @one = $1
 
 - @two = $2
 
 - return true
 
 - end
 
 - end
 
 - return false
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● 防具が指定名の属性を持つ場合その後に付く接尾テキストを取得
 
 - #--------------------------------------------------------------------------
 
 - def armor_element_suftext(armor_id, element_name)
 
 - return nil if armor_id == nil or armor_id <= 0
 
 - for i in $data_armors[armor_id].guard_element_set
 
 - if $data_system.elements[i] =~ /#{element_name}(.*)/
 
 - return $1
 
 - end
 
 - end
 
 - return nil
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● アクターが指定名の属性を持つ武器を装備しているかか判定
 
 - #--------------------------------------------------------------------------
 
 - def equip_weapon_element_include?(actor, element_name)
 
 - @one = @two = nil
 
 - return false if !actor.is_a?(Game_Actor)
 
 - return false if actor.weapon_id == nil or actor.weapon_id <= 0
 
 - bool = false
 
 - one_total = 0
 
 - for i in $data_weapons[actor.weapon_id].element_set
 
 - if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
 
 - one_total += $1.to_i
 
 - @two = $2
 
 - bool = true
 
 - end
 
 - end
 
 - # 武器管理システムXC.が導入されている場合
 
 - if $xrxs24_weapon_property_system_work
 
 - for i in [PROPERTY_ELEMENT_GRANT_1st, PROPERTY_ELEMENT_GRANT_2nd,
 
 - PROPERTY_ELEMENT_GRANT_3rd, PROPERTY_ELEMENT_GRANT_4th]
 
 - if $data_system.elements[actor.weapon_property[i]] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
 
 - one_total += $1.to_i
 
 - @two = $2
 
 - bool = true
 
 - end
 
 - end
 
 - end
 
 - @one = one_total
 
 - return bool
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● アクターが指定名の属性を持つ武器/防具を装備中か判定 数値の合計も保持
 
 - #--------------------------------------------------------------------------
 
 - def actor_element_equip?(actor, element_name)
 
 - one_total = 0
 
 - bool = false
 
 - return false if !actor.is_a?(Game_Actor)
 
 - weapon = $data_weapons[actor.weapon_id]
 
 - armor1 = $data_armors[actor.armor1_id]
 
 - armor2 = $data_armors[actor.armor2_id]
 
 - armor3 = $data_armors[actor.armor3_id]
 
 - armor4 = $data_armors[actor.armor4_id]
 
 - if equip_weapon_element_include?(actor, element_name)
 
 - one_total += @one.to_i
 
 - bool = true
 
 - end
 
 - if armor_element_include?(armor1.id, element_name)
 
 - one_total += @one.to_i
 
 - bool = true
 
 - end
 
 - if armor_element_include?(armor2.id, element_name)
 
 - one_total += @one.to_i
 
 - bool = true
 
 - end
 
 - if armor_element_include?(armor3.id, element_name)
 
 - one_total += @one.to_i
 
 - bool = true
 
 - end
 
 - if armor_element_include?(armor4.id, element_name)
 
 - one_total += @one.to_i
 
 - bool = true
 
 - end
 
 - @one = one_total
 
 - return bool
 
 - end
 
 - end
 
 - #=============================================================================
 
 - # ◇ かばうModule
 
 - #=============================================================================
 
 - ####以下新規追加Module
 
 - module Cover_Module
 
 - #--------------------------------------------------------------------------
 
 - # ● かばう 後のターゲット配列生成
 
 - #--------------------------------------------------------------------------
 
 - def get_target_battlers_after_cover!(target_battlers, active_battler = nil)
 
 - #HP割合の低い順にソート
 
 - #target_battlers.sort_by!{|b| (b.hp.to_f/b.maxhp.to_f)}
 
 - target_battlers.sort!{|a,b| (a.hp.to_f/a.maxhp.to_f) <=> (b.hp.to_f/b.maxhp.to_f)}
 
 - #HP割合の多い順にソート
 
 - actors = $game_party.actors.sort_by{|b| (b.hp.to_f/b.maxhp.to_f)}.reverse
 
 - enemies = $game_troop.enemies.sort_by{|b| (b.hp.to_f/b.maxhp.to_f)}.reverse
 
  
- for i in 0...target_battlers.size 
 
 - if target_battlers[i].is_a?(Game_Actor)
 
 - for actor in actors
 
 - new_target = get_target_after_cover(active_battler,target_battlers[i],actor)
 
 - if !new_target.equal?(target_battlers[i]) && new_target.current_friend.nil? #かばう人がすでにかばっていた場合かばえない
 
 - #new_target.effect_message = "#{new_target.name}为#{target_battlers[i].name}抵挡了攻击!"
 
 - $am = "#{new_target.name}为#{target_battlers[i].name}抵挡了攻击!"
 
 - new_target.current_friend = target_battlers[i]
 
 - new_target.current_friend.damage = COVER_EFFECT_CHAR
 
 - target_battlers[i] = new_target
 
 - break
 
 - end
 
 - end
 
 - end
 
  
- if target_battlers[i].is_a?(Game_Enemy)
 
 - for enemy in enemies
 
 - new_target = get_target_after_cover(active_battler,target_battlers[i],enemy)
 
 - if !new_target.equal?(target_battlers[i]) && new_target.current_friend.nil? #かばう人がすでにかばっていた場合かばえない
 
 - #new_target.effect_message = "#{new_target.name}为#{target_battlers[i].name}抵挡了攻击!"
 
 - $am = "#{new_target.name}为#{target_battlers[i].name}抵挡了攻击!"
 
 - new_target.current_friend = target_battlers[i]
 
 - new_target.current_friend.damage = COVER_EFFECT_CHAR
 
 - target_battlers[i] = new_target
 
 - break
 
 - end
 
 - end
 
 - end
 
 - end
 
 - #ターゲット重複を排除する(かばった人が2度ダメージを受けない)
 
 - target_battlers.uniq!()
 
 - #「かばう」ステートの解除判定
 
 - for target in target_battlers
 
 - if !target.current_friend.nil?
 
 - #かばう 残り回数がなくなった場合
 
 - target.cover_remain -= 1
 
 - if target.cover_remain <= 0
 
 - target.remove_state(get_cover_state_id())
 
 - target.cover_remain = 0
 
 - end
 
 - end
 
 - end
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● かばう の発動判定
 
 - #--------------------------------------------------------------------------
 
 - def get_target_after_cover(battler, target, coverer)
 
 - #味方からのターゲットは庇わない
 
 - if battler.is_a?(Game_Actor)
 
 - if target.is_a?(Game_Actor)
 
 - return target
 
 - end
 
 - end
 
 - if battler.is_a?(Game_Enemy)
 
 - if target.is_a?(Game_Enemy)
 
 - return target
 
 - end
 
 - end
 
 - #庇う人が動けない時は庇わない
 
 - if !(coverer.movable? && coverer.exist?)
 
 - return target
 
 - end
 
 - #庇う人が かばう のステートになっている時のみ
 
 - if !coverer.state?(get_cover_state_id())
 
 - return target
 
 - end
 
 - #ターゲットが既に他の人を庇っている時は無効
 
 - if target.state?(get_cover_state_id())
 
 - return target
 
 - end
 
 - #ターゲットと庇う人が同じの場合は無効
 
 - if target.equal?(coverer)
 
 - return target
 
 - end
 
 - #発動確率判定
 
 - if !(rand(100) <= COVER_EFFECT_PERCENT)
 
 - return taget
 
 - end
 
 - #ターゲットのHP割合判定
 
 - if !(100.0*target.hp.to_f/target.maxhp.to_f <= COVER_HP_PERCENT)
 
 - return target
 
 - end
 
 - #「かばっている味方配列」が空だったら、全ての味方を庇う
 
 - if coverer.covered_friends.size.zero?
 
 - return coverer
 
 - else
 
 - for covered_friend in coverer.covered_friends
 
 - if target.equal?(covered_friend)
 
 - return coverer
 
 - end
 
 - end
 
 - end
 
 - return target
 
 - end
 
 - #--------------------------------------------------------------------------
 
 - # ● かばう のStateID
 
 - #--------------------------------------------------------------------------
 
 - def get_cover_state_id
 
 - result = nil
 
 - if @cover_status_id == nil
 
 - for i in 1 ... $data_states.size
 
 - if $data_states[i].name[/\A#{STATE_NAME_COVER}\Z/]
 
 - result = $data_states[i].id
 
 - break
 
 - end
 
 - end
 
 - @cover_status_id = ( result != nil ? result : 0 )
 
 - elsif @cover_status_id > 0
 
 - result = @cover_status_id
 
 - end
 
 - return result
 
 - end
 
 - end
 
 - ####Module End
 
 - #//////////////////////////////////////////////////////////////////////////////
 
 - # ◇ インクルード
 
 - #//////////////////////////////////////////////////////////////////////////////
 
 - module Check_ElementName_Set
 
 - include Fixed_PropertyNumber if $xrxs24_weapon_property_system_work
 
 - end
 
 - class Game_Battler
 
 - include Check_ElementName_Set
 
 - include Cover_Module
 
 - end
 
 - class Window_Item < Window_Selectable
 
 - include Check_ElementName_Set
 
 - end
 
 - class Scene_Battle
 
 - include Check_ElementName_Set
 
 - include Cover_Module
 
 - end
 
 - #==============================================================================
 
 - # ◇ RPG::再定義「"SP "を含む場合SPダメージとして色を変更」
 
 - #==============================================================================
 
 - module RPG
 
 - class Sprite < ::Sprite
 
 - alias xrxs19_damage damage
 
 - def damage(value, critical)
 
 - if value.is_a?(String) and value.include?($data_system.words.sp)
 
 - # 解放
 
 - dispose_damage
 
 - # 数値部分を抜き取る
 
 - value = value.scan(/[+-]?[0-9]+/)[0].to_i
 
 - # 表示文字列の設定
 
 - damage_string = $data_system.words.sp + " " + value.abs.to_s
 
 - # 描写
 
 - bitmap = Bitmap.new(160, 48)
 
 - #bitmap.font.name = "黑体"
 
 - bitmap.font.size = 32
 
 - bitmap.font.color.set(0, 0, 0)
 
 - bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
 
 - bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
 
 - bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
 
 - bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
 
 - if value < 0
 
 - bitmap.font.color.set(128, 255, 255)
 
 - else
 
 - bitmap.font.color.set(255, 176, 144)
 
 - end
 
 - bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
 
 - if critical
 
 - bitmap.font.size = 20
 
 - bitmap.font.color.set(0, 0, 0)
 
 - bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
 
 - bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
 
 - bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
 
 - bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
 
 - bitmap.font.color.set(255, 255, 255)
 
 - bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
 
 - end
 
 - @_damage_sprite = ::Sprite.new(self.viewport)
 
 - @_damage_sprite.bitmap = bitmap
 
 - @_damage_sprite.ox = 80
 
 - @_damage_sprite.oy = 20
 
 - @_damage_sprite.x = self.x
 
 - @_damage_sprite.y = self.y - self.oy / 2
 
 - @_damage_sprite.z = 3000
 
 - @_damage_duration = 40
 
 - else
 
 - # 通常時?戻す
 
 - xrxs19_damage(value, critical)
 
 - end
 
 - end
 
 - end
 
 - end
 
  复制代码 这个脚本能满足你大多特效需求  |   
 
 
 
 |