赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 197 |
最后登录 | 2014-9-1 |
在线时间 | 132 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 132 小时
- 注册时间
- 2012-1-21
- 帖子
- 512
|
的却是缺少end一个,已经帮你补上了,下面代码覆盖原代码就行了- #==============================================================================
- # ■ Game_Battler (分割定义 3)
- #------------------------------------------------------------------------------
- # 处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
- # 超级类来使用。
- #==============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # ● 可以使用特技的判定
- # skill_id : 特技 ID
- #--------------------------------------------------------------------------
- def skill_can_use?(skill_id)
- # SP 不足的情况下不能使用
- if $data_skills[skill_id].sp_cost > self.sp
- return false
- end
- # 战斗不能的情况下不能使用
- if dead?
- return false
- end
- # 沉默状态的情况下、物理特技以外的特技不能使用
- if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
- return false
- end
- # 获取可以使用的时机
- occasion = $data_skills[skill_id].occasion
- # 战斗中的情况下
- if $game_temp.in_battle
- # [平时] 或者是 [战斗中] 可以使用
- return (occasion == 0 or occasion == 1)
- # 不是战斗中的情况下
- else
- # [平时] 或者是 [菜单中] 可以使用
- return (occasion == 0 or occasion == 2)
- end
- end
- #--------------------------------------------------------------------------
- # ● 应用通常攻击效果
- # attacker : 攻击者 (battler)
- #--------------------------------------------------------------------------
- def attack_effect(attacker)
- # 清除会心一击标志
- $必杀 = 0
- @active_battler = attacker
- self.critical = false
- # 第一命中判定
- hit_result = (rand(100) < attacker.hit)
- # 命中的情况下
- if hit_result == true
- # 计算基本伤害
- atk = [attacker.atk - self.pdef / 1, attacker.atk / 10].max
- if @active_battler.is_a?(Game_Actor)
- for kds in self.actions
- if $data_skills[kds.skill_id].element_set.include?(42)
- atk = [@active_battler.atk - self.pdef*120/100, @active_battler.atk / 12].max
- break
- elsif $data_skills[kds.skill_id].element_set.include?(41)
- atk = [@active_battler.atk - self.pdef*110/100, @active_battler.atk / 11].max
- end
- end
- end
- if @active_battler.is_a?(Game_Enemy)
- for kds in self.skills
- if $data_skills[kds].element_set.include?(42)
- atk = [@active_battler.atk - self.pdef*120/100, @active_battler.atk / 12].max
- break
- elsif $data_skills[kds].element_set.include?(41)
- atk = [@active_battler.atk - self.pdef*110/100, @active_battler.atk / 11].max
- end
- end
- end
- self.damage = atk*2 + attacker.str/5
- # 属性修正
- self.damage *= elements_correct(attacker.element_set)
- self.damage /= 100
- @kds_30 = nil
- @kds_32 = nil
-
- if @active_battler.is_a?(Game_Enemy)
- for kds in @active_battler.actions
- if $data_skills[kds.skill_id].element_set.include?(30)
- self.damage = self.damage*125/100
- @kds_30 = 0
- elsif $data_skills[kds.skill_id].element_set.include?(29) and @kds_30 == nil
- self.damage = self.damage*113/100
- end
- if $data_skills[kds.skill_id].element_set.include?(32)
- $必杀 += 25
- @kds_32 = 0
- elsif $data_skills[kds.skill_id].element_set.include?(31) and @kds_32 == nil
- $必杀 += 13
- end
- end
- end
- if @active_battler.is_a?(Game_Actor)
- for kds in @active_battler.skills
- if $data_skills[kds].element_set.include?(30)
- self.damage = self.damage*120/100
- @kds_30 = 0
- elsif $data_skills[kds].element_set.include?(29) and @kds_30 == nil
- self.damage = self.damage*110/100
- end
- if $data_skills[kds].element_set.include?(32)
- $必杀 += 20
- @kds_32 = 0
- elsif $data_skills[kds].element_set.include?(31) and @kds_32 == nil
- $必杀 += 10
- end
- end
- end
-
- # 伤害符号正确的情况下
- if self.damage > 0
- # 会心一击修正
- if rand(100) < 5 * attacker.dex / self.agi + $必杀
- self.damage *= 1.5
- self.critical = true
- end
- # 防御修正
- if self.guarding?
- self.damage /= 2
- end
- end
-
-
- # 分散
- if self.damage.abs > 0
- amp = [self.damage.abs * 15 / 100, 1].max
- self.damage += rand(amp+1) + rand(amp+1) - amp
- end
- # 第二命中判定
- eva = 8 * self.agi / attacker.dex + self.eva
- hit = self.damage < 0 ? 100 : 100 - eva
- hit = self.cant_evade? ? 100 : hit
- hit_result = (rand(100) < hit)
- end
- # 命中的情况下
- if hit_result == true
- #保护系统-内部伤害计算
- if self.is_a?(Game_Actor) and self.baohu.size >= 1
- @baohu_agi = []
- for i in 0..self.baohu.size-1
- @baohu_agi[i] = $game_party.actors[self.baohu[i]].agi
- end
- for a in 0..@baohu_agi.size-1
- for s in 0..@baohu_agi.size-1
- if s < @baohu_agi.size-1 and @baohu_agi[s] < @baohu_agi[s+1]
- elsif s < @baohu_agi.size-1 and @baohu_agi[s] > @baohu_agi[s+1]
- @abc = @baohu_agi[s]
- @baohu_agi[s] = @baohu_agi[s+1]
- @baohu_agi[s+1] = @abc
-
- @bcd = self.baohu[s]
- self.baohu[s] = self.baohu[s+1]
- self.baohu[s+1] = @bcd
- end
- end
- end
- @baohu_duixiang = 1
- for i in 1..self.baohu.size
- if $game_party.actors[self.baohu[self.baohu.size-i]].hp <= 0
- @baohu_duixiang += 1
- else
- break
- end
- end
- if @baohu_duixiang == self.baohu.size + 1
- self.hp -= self.damage
- else
- $game_party.actors[self.baohu[self.baohu.size-@baohu_duixiang]].damage = self.damage*80/100
- if $game_party.actors[self.baohu[self.baohu.size-@baohu_duixiang]].damage <= 0
- $game_party.actors[self.baohu[self.baohu.size-@baohu_duixiang]].damage = rand(6)+4
- end
- $game_party.actors[self.baohu[self.baohu.size-@baohu_duixiang]].hp -= self.damage*80/100
- self.damage = self.damage*20/100
- if self.damage <= 0
- self.damage = rand(2)+1
- end
- self.hp -= self.damage*20/100
- if self.baohu_dx == nil
- self.baohu_dx = $game_party.actors[self.baohu[self.baohu.size-@baohu_duixiang]].ac_id
- else
- self.baohu_dxb = $game_party.actors[self.baohu[self.baohu.size-@baohu_duixiang]].ac_id
- end
-
- self.baohu.delete(self.baohu[self.baohu.size-@baohu_duixiang])
- end
- else
- self.hp -= self.damage
- end
-
-
- if @active_battler.is_a?(Game_Actor) and self.is_a?(Game_Enemy)
- for kds in self.actions
- if $data_skills[kds.skill_id].element_set.include?(36)
- if rand(100) < 35 and self.hp <= 0
- self.damage = -self.maxhp
- self.hp += self.maxhp
- self.sp += self.maxsp
- self.critical = false
- end
- break
- elsif $data_skills[kds.skill_id].element_set.include?(35)
- if rand(100) < 25 and self.hp <= 0
- self.damage = -self.maxhp/2
- self.hp += self.maxhp/2
- self.sp += self.maxsp/2
- self.critical = false
- end
- break
- end
- end
- end
- if @active_battler.is_a?(Game_Enemy) and self.is_a?(Game_Actor)
- for kds in self.skills
- if $data_skills[kds].element_set.include?(36)
- if rand(100) < 35 and self.hp <= 0
- self.damage = -self.maxhp
- self.hp += self.maxhp
- self.sp += self.maxsp
- self.critical = false
- end
- break
- elsif $data_skills[kds].element_set.include?(35)
- if rand(100) < 25 and self.hp <= 0
- self.damage = -self.maxhp/2
- self.hp += self.maxhp/2
- self.sp += self.maxsp/2
- self.critical = false
- end
- break
- end
- end
- end
-
-
- # 状态冲击解除
- remove_states_shock
- # HP 的伤害计算
- # 状态变化
- @state_changed = false
- states_plus(attacker.plus_state_set)
- states_minus(attacker.minus_state_set)
- # Miss 的情况下
- else
- # 伤害设置为 "Miss"
- self.damage = "Miss"
- # 清除会心一击标志
- self.critical = false
- end
- # 过程结束
- return true
- end
- #--------------------------------------------------------------------------
- # ● 应用特技效果
- # user : 特技的使用者 (battler)
- # skill : 特技
- #--------------------------------------------------------------------------
- def skill_effect(user, skill)
- # 清除会心一击标志
- $必杀 = 0
- @active_battler = user
- attacker = user
- self.critical = false
- # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
- # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
- if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
- ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
- # 过程结束
- return false
- end
- # 清除有效标志
- effective = false
- # 公共事件 ID 是有效的情况下,设置为有效标志
- effective |= skill.common_event_id > 0
- # 第一命中判定
- hit = skill.hit
- if skill.atk_f > 0
- hit *= user.hit / 100
- end
- hit_result = (rand(100) < hit)
- # 不确定的特技的情况下设置为有效标志
- effective |= hit < 100
- # 命中的情况下
- if hit_result == true
- # 计算威力
- power = (skill.power + user.int * skill.atk_f / 100)* user.int / self.mdef
- if power > 0
- power -= self.pdef * skill.pdef_f / 200
- power -= self.mdef * skill.mdef_f / 200
- power = [power, 0].max
- end
- # 计算倍率
- rate = 20
- rate += (user.str * skill.str_f / 100)
- rate += (user.dex * skill.dex_f / 100)
- rate += (user.agi * skill.agi_f / 100)
- rate += (user.int * skill.int_f / 100)
- # 计算基本伤害
- self.damage = power * rate / 18
- # 伤害符号正确的情况下
- if self.damage > 0
- # 防御修正
- if self.guarding?
- self.damage /= 1
- end
- end
-
- if skill.element_set.include?(13)
- atk = [@active_battler.atk - self.pdef / 1, @active_battler.atk / 10].max
- if @active_battler.is_a?(Game_Actor)
- for kds in self.actions
- if $data_skills[kds.skill_id].element_set.include?(42)
- atk = [@active_battler.atk - self.pdef*120/100, @active_battler.atk / 12].max
- break
- elsif $data_skills[kds.skill_id].element_set.include?(41)
- atk = [@active_battler.atk - self.pdef*110/100, @active_battler.atk / 11].max
- end
- end
- end
- if @active_battler.is_a?(Game_Enemy)
- for kds in self.skills
- if $data_skills[kds].element_set.include?(42)
- atk = [@active_battler.atk - self.pdef*120/100, @active_battler.atk / 12].max
- break
- elsif $data_skills[kds].element_set.include?(41)
- atk = [@active_battler.atk - self.pdef*110/100, @active_battler.atk / 11].max
- end
- end
- end
- self.damage = atk + @active_battler.str * 2
- end
- kds_24 = nil
- kds_30 = nil
- kds_32 = nil
- kds_28 = nil
- if @active_battler.is_a?(Game_Actor)
- for kds in @active_battler.skills
- if $data_skills[kds].element_set.include?(24) and skill.element_set.include?(13) == false
- self.damage = self.damage*120/100
- kds_24 = 0
- elsif $data_skills[kds].element_set.include?(23) and skill.element_set.include?(13) == false and kds_24 == nil
- self.damage = self.damage*110/100
- end
- if $data_skills[kds].element_set.include?(30) and skill.element_set.include?(13)
- kds_30 = 0
- self.damage = self.damage*120/100
- elsif $data_skills[kds].element_set.include?(29) and skill.element_set.include?(13) and kds_30 == nil
- self.damage = self.damage*110/100
- end
- if $data_skills[kds].element_set.include?(32) and skill.element_set.include?(13)
- kds_32 = 0
- $必杀 += 20
- elsif $data_skills[kds].element_set.include?(31) and skill.element_set.include?(13) and kds_32 == nil
- $必杀 += 10
- end
- end
- if self.is_a?(Game_Enemy)
- for kds in self.actions
- if $data_skills[kds.skill_id].element_set.include?(28) and skill.element_set.include?(13) == false
- kds_28 = 0
- self.damage = self.damage*80/100
- elsif $data_skills[kds.skill_id].element_set.include?(27) and skill.element_set.include?(13) == false and kds_28 == nil
- self.damage = self.damage*90/100
- end
- end
- end
- end
-
- if @active_battler.is_a?(Game_Enemy)
- for kds in @active_battler.actions
- if $data_skills[kds.skill_id].element_set.include?(24) and skill.element_set.include?(13) == false
- kds_24 = 0
- self.damage = self.damage*120/100
- elsif $data_skills[kds.skill_id].element_set.include?(23) and skill.element_set.include?(13) == false and kds_24 == nil
- self.damage = self.damage*110/100
- end
- if $data_skills[kds.skill_id].element_set.include?(30) and skill.element_set.include?(13)
- kds_30 = 0
- self.damage = self.damage*120/100
- elsif $data_skills[kds.skill_id].element_set.include?(29) and skill.element_set.include?(13) and kds_30 == nil
- self.damage = self.damage*110/100
- end
- if $data_skills[kds.skill_id].element_set.include?(32) and skill.element_set.include?(13)
- kds_32 = 0
- $必杀 += 20
- elsif $data_skills[kds.skill_id].element_set.include?(31) and skill.element_set.include?(13) and kds_32 == nil
- $必杀 += 10
- end
- end
- if self.is_a?(Game_Actor)
- for kds in self.skills
- if $data_skills[kds].element_set.include?(28) and skill.element_set.include?(13) == false
- kds_28 = 0
- self.damage = self.damage*80/100
- elsif $data_skills[kds].element_set.include?(27) and skill.element_set.include?(13) == false and kds_28 == nil
- self.damage = self.damage*90/100
- end
- end
- end
- end
-
- if skill.element_set.include?(43) and skill.element_set.include?(13)
- self.damage = self.damage*200/100
- end
-
- if skill.element_set.include?(46) and skill.element_set.include?(13)
- self.damage = self.damage*180/100
- end
-
- if skill.element_set.include?(47) and skill.element_set.include?(13)
- self.damage = self.damage*60/100
- end
-
- if skill.element_set.include?(48) and skill.element_set.include?(13)
- self.damage = self.damage*300/100
- end
-
- if skill.element_set.include?(49) and skill.element_set.include?(13)
- self.damage = self.damage*90/100
- end
-
- if skill.element_set.include?(50) and skill.element_set.include?(13)
- self.damage = self.damage*140/100
- end
-
-
- # 属性修正
- self.damage *= elements_correct(user.element_set)
- self.damage /= 100
-
- if skill.element_set.include?(13)
- if self.damage > 0
- if rand(100) < 10 + $必杀
- self.damage *= 2
- self.critical = true
- end
- if self.guarding?
- self.damage /= 2
- end
- end
- end
- # 分散
- if skill.variance > 0 and self.damage.abs > 0
- amp = [self.damage.abs * skill.variance / 100, 1].max
- self.damage += rand(amp+1) + rand(amp+1) - amp
- end
-
-
- if skill.element_set.include?(44)
- self.damage = @active_battler.level * 8
- end
- if skill.element_set.include?(51)
- self.damage = @active_battler.level * 12
- end
- if skill.element_set.include?(52)
- self.damage = @active_battler.level * 10
- end
- if skill.element_set.include?(53)
- self.damage = @active_battler.level * 40
- end
- if skill.element_set.include?(54)
- self.damage = @active_battler.level * 18
- end
-
- if skill.element_set.include?(66)
- self.damage = @active_battler.maxhp * 1
- end
-
- if skill.element_set.include?(45)
- if rand(100) < 75
- self.damage *= 10 / 5
- else
- self.damage /= - 2 / 1
- end
- end
-
- if skill.element_set.include?(55)
- if rand(100) < 70
- self.damage *= 15 / 5
- else
- self.damage *= - 3 / 1
- end
- end
- if skill.element_set.include?(56)
- if rand(100) < 10
- self.damage = 999999
- else
- self.damage = 400
- end
- end
-
- if skill.element_set.include?(71)
- if rand(100) < 75
- self.hp -= self.damage *2
- else
- user.hp -= self.damage
- end
-
- if skill.element_set.include?(59)
- self.hp -= self.damage
- user.hp -= -self.damage
- else
- self.hp -= self.damage
- end
- if skill.element_set.include?(60)
- self.hp -= self.damage
- user.hp -= -self.damage*2
- else
- self.hp -= self.damage
- end
-
- if skill.element_set.include?(61)
- self.damage = 100
- end
-
- if skill.element_set.include?(62)
- if rand(100) < 40
- self.damage = 450
- else
- self.damage = 150
- end
- end
-
- if skill.element_set.include?(63)
- if rand(100) < 50
- self.damage = @active_battler.hp * 1
- else
- self.damage = @active_battler.sp * 1
- end
- end
-
-
- if skill.element_set.include?(64)
- if rand(100) < 10
- self.damage = @active_battler.str * 17 / 10
- else
- self.damage = @active_battler.str * 34 / 10
- end
- end
-
-
- if skill.element_set.include?(58)
- self.damage = 999999
- end
-
- # 第二命中判定
- eva = 8 * self.agi / user.dex + self.eva
- hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
- hit = self.cant_evade? ? 100 : hit
- hit_result = (rand(100) < hit)
- # 不确定的特技的情况下设置为有效标志
- effective |= hit < 100
- end
- # 命中的情况下
- if hit_result == true
- # 威力 0 以外的物理攻击的情况下
- if skill.power != 0 and skill.atk_f > 0
- # 状态冲击解除
- remove_states_shock
- # 设置有效标志
- effective = true
- end
- # HP 的伤害减法运算
- last_hp = self.hp
- self.hp -= self.damage
-
- if @active_battler.is_a?(Game_Actor) and self.is_a?(Game_Enemy)
- for kds in self.actions
- if $data_skills[kds.skill_id].element_set.include?(36)
- if rand(100) < 25 and self.hp <= 0
- self.damage = -self.maxhp
- self.hp += self.maxhp
- self.sp += self.maxsp
- self.critical = false
- end
- break
- elsif $data_skills[kds.skill_id].element_set.include?(35)
- if rand(100) < 20 and self.hp <= 0
- self.damage = -self.maxhp/2
- self.hp += self.maxhp/2
- self.sp += self.maxsp/2
- self.critical = false
- end
- break
- end
- end
- end
- if @active_battler.is_a?(Game_Enemy) and self.is_a?(Game_Actor)
- for kds in self.skills
- if $data_skills[kds].element_set.include?(36)
- if rand(100) < 25 and self.hp <= 0
- self.damage = -self.maxhp
- self.hp += self.maxhp
- self.sp += self.maxsp
- self.critical = false
- end
- break
- elsif $data_skills[kds].element_set.include?(35)
- if rand(100) < 20 and self.hp <= 0
- self.damage = -self.maxhp/2
- self.hp += self.maxhp/2
- self.sp += self.maxsp/2
- self.critical = false
- end
- break
- end
- end
- end
-
- if skill.id==132 #技能ID
- self.hp -= self.damage
- user.hp -= -self.damage/5 #吸收的血量和伤害值之间的关系,可以随意
- else
- self.hp -= self.damage
- end
-
- if skill.id==133 #技能ID
- self.hp -= self.damage
- user.hp -= -self.damage/4 #吸收的血量和伤害值之间的关系,可以随意
- else
- self.hp -= self.damage
- end
-
- if skill.id==134 #技能ID
- self.hp -= self.damage
- user.hp -= -self.damage/3 #吸收的血量和伤害值之间的关系,可以随意
- else
- self.hp -= self.damage
- end
-
- effective |= self.hp != last_hp
- # 状态变化
- @state_changed = false
- effective |= states_plus(skill.plus_state_set)
- effective |= states_minus(skill.minus_state_set)
- # 威力为 0 的场合
- if skill.power == 0 and skill.element_set.include?(13) == false
- # 伤害设置为空的字串
- self.damage = ""
- # 状态没有变化的情况下
- unless @state_changed
- # 伤害设置为 "Miss"
- self.damage = "Miss"
- end
- end
- # Miss 的情况下
- else
- # 伤害设置为 "Miss"
- self.damage = "Miss"
- end
- # 不在战斗中的情况下
- unless $game_temp.in_battle
- # 伤害设置为 nil
- self.damage = nil
- end
- # 过程结束
- return effective
- end
- #--------------------------------------------------------------------------
- # ● 应用物品效果
- # item : 物品
- #--------------------------------------------------------------------------
- def item_effect(item)
- # 清除会心一击标志
- self.critical = false
- # 物品的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
- # 或者物品的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
- if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
- ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
- # 过程结束
- return false
- end
- # 清除有效标志
- effective = false
- # 公共事件 ID 是有效的情况下,设置为有效标志
- effective |= item.common_event_id > 0
- # 命中判定
- hit_result = (rand(100) < item.hit)
- # 不确定的特技的情况下设置为有效标志
- effective |= item.hit < 100
- # 命中的情况
- if hit_result == true
- # 计算回复量
- recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
- recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
- if recover_hp < 0
- recover_hp += self.pdef * item.pdef_f / 20
- recover_hp += self.mdef * item.mdef_f / 20
- recover_hp = [recover_hp, 0].min
- end
- # 属性修正
- recover_hp *= elements_correct(item.element_set)
- recover_hp /= 100
- recover_sp *= elements_correct(item.element_set)
- recover_sp /= 100
- # 分散
- if item.variance > 0 and recover_hp.abs > 0
- amp = [recover_hp.abs * item.variance / 100, 1].max
- recover_hp += rand(amp+1) + rand(amp+1) - amp
- end
- if item.variance > 0 and recover_sp.abs > 0
- amp = [recover_sp.abs * item.variance / 100, 1].max
- recover_sp += rand(amp+1) + rand(amp+1) - amp
- end
- # 回复量符号为负的情况下
- if recover_hp < 0
- # 防御修正
- if self.guarding?
- recover_hp /= 2
- end
- end
- # HP 回复量符号的反转、设置伤害值
- self.damage = -recover_hp
- # HP 以及 SP 的回复
- last_hp = self.hp
- last_sp = self.sp
- self.hp += recover_hp
- self.sp += recover_sp
-
- if @active_battler.is_a?(Game_Actor) and self.is_a?(Game_Enemy)
- for kds in self.actions
- if $data_skills[kds.skill_id].element_set.include?(36)
- if rand(100) < 25 and self.hp <= 0
- self.damage = -self.maxhp
- self.hp += self.maxhp
- self.sp += self.maxsp
- self.critical = false
- end
- break
- elsif $data_skills[kds.skill_id].element_set.include?(35)
- if rand(100) < 20 and self.hp <= 0
- self.damage = -self.maxhp/2
- self.hp += self.maxhp/2
- self.sp += self.maxsp/2
- self.critical = false
- end
- break
- end
- end
- end
- if @active_battler.is_a?(Game_Enemy) and self.is_a?(Game_Actor)
- for kds in self.skills
- if $data_skills[kds].element_set.include?(36)
- if rand(100) < 25 and self.hp <= 0
- self.damage = -self.maxhp
- self.hp += self.maxhp
- self.sp += self.maxsp
- self.critical = false
- end
- break
- elsif $data_skills[kds].element_set.include?(35)
- if rand(100) < 20 and self.hp <= 0
- self.damage = -self.maxhp/2
- self.hp += self.maxhp/2
- self.sp += self.maxsp/2
- self.critical = false
- end
- break
- end
- end
- end
-
-
- effective |= self.hp != last_hp
- effective |= self.sp != last_sp
- # 状态变化
- @state_changed = false
- effective |= states_plus(item.plus_state_set)
- effective |= states_minus(item.minus_state_set)
- # 能力上升值有效的情况下
- if item.parameter_type > 0 and item.parameter_points != 0
- # 能力值的分支
- case item.parameter_type
- when 1 # MaxHP
- @maxhp_plus += item.parameter_points
- when 2 # MaxSP
- @maxsp_plus += item.parameter_points
- when 3 # 力量
- @str_plus += item.parameter_points
- when 4 # 灵巧
- @dex_plus += item.parameter_points
- when 5 # 速度
- @agi_plus += item.parameter_points
- when 6 # 魔力
- @int_plus += item.parameter_points
- end
- # 设置有效标志
- effective = true
- end
- # HP 回复率与回复量为 0 的情况下
- if item.recover_hp_rate == 0 and item.recover_hp == 0
- # 设置伤害为空的字符串
- self.damage = ""
- # SP 回复率与回复量为 0、能力上升值无效的情况下
- if item.recover_sp_rate == 0 and item.recover_sp == 0 and
- (item.parameter_type == 0 or item.parameter_points == 0)
- # 状态没有变化的情况下
- unless @state_changed
- # 伤害设置为 "Miss"
- self.damage = "Miss"
- end
- end
- end
- # Miss 的情况下
- else
- # 伤害设置为 "Miss"
- self.damage = "Miss"
- end
- # 不在战斗中的情况下
- unless $game_temp.in_battle
- # 伤害设置为 nil
- self.damage = nil
- end
- # 过程结束
- return effective
- end
- #--------------------------------------------------------------------------
- # ● 应用连续伤害效果
- #--------------------------------------------------------------------------
- def slip_damage_effect
- # 毒
- if self.state?(7)
- # 设置伤害
- self.damage = self.maxhp / 12
- # 分散
- if self.damage.abs > 0
- amp = [self.damage.abs * 15 / 100, 1].max
- self.damage += rand(amp+1) + rand(amp+1) - amp
- end
- # HP 的伤害减法运算
- self.hp -= self.damage
- #剧毒
- elsif self.state?(20)
- # 设置伤害
- self.damage = self.maxhp / 8
- # 分散
- if self.damage.abs > 0
- amp = [self.damage.abs * 15 / 100, 1].max
- self.damage += rand(amp+1) + rand(amp+1) - amp
- end
- # HP 的伤害减法运算
- self.hp -= self.damage
- # 回血
- elsif self.state?(5)
- # 设置伤害
- self.damage = -self.maxhp / 8
- # HP 的伤害减法运算
- self.hp -= self.damage
- # 群回血
- elsif self.state?(17)
- # 设置伤害
- self.damage = -self.maxhp / 12
- # HP 的伤害减法运算
- self.hp -= self.damage
-
- # 老化
- elsif self.state?(19)
- self.damage = "Being aged!"
- # 能力值下
- $data_states[19].pdef_rate *= 0.8
- $data_states[19].mdef_rate *= 0.8
- $data_states[19].atk_rate *= 0.8
- $data_states[19].str_rate *= 0.8
- $data_states[19].dex_rate *= 0.8
- $data_states[19].int_rate *= 0.8
- $data_states[19].agi_rate *= 0.8
- $data_states[19].eva -= 0.3
- $data_states[19].eva = [$data_states[19].eva, -100].max
- end
- # 过程结束
- return true
- end
- #--------------------------------------------------------------------------
- # ● 属性修正计算
- # element_set : 属性
- #--------------------------------------------------------------------------
- def elements_correct(element_set)
- # 無属性的情况
- if element_set == []
- # 返回 100
- return 100
- end
- # 在被赋予的属性中返回最弱的
- # ※过程 element_rate 是、本类以及继承的 Game_Actor
- # 和 Game_Enemy 类的定义
- weakest = -100
- for i in element_set
- weakest = [weakest, self.element_rate(i)].max
- end
- return weakest
- end
- end
- end
复制代码 |
|