赞 | 5 |
VIP | 620 |
好人卡 | 38 |
积分 | 69 |
经验 | 125468 |
最后登录 | 2015-7-27 |
在线时间 | 1666 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 6870
- 在线时间
- 1666 小时
- 注册时间
- 2008-10-29
- 帖子
- 6710
|
本帖最后由 后知后觉 于 2009-10-10 18:07 编辑
LZ你一会必杀攻击 一会特技命中 一会灵巧 一会又技巧
其实这个是很简单的东西
你说得那么混乱,就算别人想给你弄 也弄不出来
必杀攻击理解为特技.技巧理解为灵巧
保留防御修正和状态修正
特技也可以防御
如果不想要自己删除
敌人没有武器.用数据库敌人属性面板中的攻击力来看作为敌人的武器攻击力- #==============================================================================
- # ■ Game_Battler
- #==============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # ● 应用通常攻击效果
- # attacker : 攻击者 (battler)
- #--------------------------------------------------------------------------
- def attack_effect(attacker)
- self.critical = false
- # 计算命中
- hzhj_hit = 100 - (attacker.dex - self.dex) * 2
- hit_result = (rand(100) < hzhj_hit)
-
- # 命中的情况
- if hit_result == true
- # 如果攻击者是角色
- if attacker.is_a?(Game_Actor)
- # 攻击者力量 + 攻击者武器攻击力 - 被打者物理防御
- self.damage = attacker.str + $data_weapons[attacker.weapon_id].atk - self.pdef
- # 攻击者是敌人
- else
- # 攻击者力量 + 攻击者攻击力 - 被打者物理防御
- self.damage = attacker.str + attacker.base_atk - self.pdef
- end
-
- # 属性修正
- self.damage *= elements_correct(attacker.element_set)
- self.damage /= 100
-
- # 伤害符号正确的情况下
- if self.damage > 0
- # 暴击概率
- # (攻击者灵巧 - 被打者灵巧) * 2
- hzhj_baoji = (attacker.dex - self.dex) * 2
- if rand(100) < hzhj_baoji
- self.damage *= 2
- self.critical = true
- end
- # 防御修正
- if self.guarding?
- self.damage /= 2
- end
- end
-
- # 状态冲击解除
- remove_states_shock
- # HP 的伤害计算
- self.hp -= self.damage
- # 状态变化
- @state_changed = false
- states_plus(attacker.plus_state_set)
- states_minus(attacker.minus_state_set)
- # Miss 的情况下
- else
- self.damage = "Miss"
- self.critical = false
- end
- return true
- end
- #--------------------------------------------------------------------------
- # ● 应用特技效果
- # user : 特技的使用者 (battler)
- # skill : 特技
- #--------------------------------------------------------------------------
- def skill_effect(user, skill)
- self.critical = false
- effective = false
- effective |= skill.common_event_id > 0
- # 计算命中
- hzhj_hit = skill.hit - (user.dex - self.dex) * 2
- hit_result = (rand(100) < hzhj_hit)
- effective |= hzhj_hit < 100
-
- # 命中的情况
- if hit_result == true
- # 攻击者魔力 + 特技威力 - 被打者魔法防御
- self.damage = user.int + skill.power - self.mdef
-
- # 属性修正
- self.damage *= elements_correct(user.element_set)
- self.damage /= 100
-
- # 伤害符号正确的情况下
- if self.damage > 0
- # 暴击概率
- # (攻击者灵巧 - 被打者灵巧) * 2
- hzhj_baoji = (user.dex - self.dex) * 2
- if rand(100) < hzhj_baoji
- self.damage *= 2
- self.critical = true
- end
- # 防御修正
- if self.guarding?
- self.damage /= 2
- end
- effective = true
- end
-
- # 状态冲击解除
- remove_states_shock
- # HP 的伤害计算
- self.hp -= self.damage
- # 状态变化
- @state_changed = false
- effective |= states_plus(skill.plus_state_set)
- effective |= states_minus(skill.minus_state_set)
- # Miss 的情况下
- else
- self.damage = "Miss"
- self.critical = false
- end
- return effective
- end
- end
- #==============================================================================
- # ■ Game_Actor
- #==============================================================================
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ● 取得属性修正值
- # element_id : 属性 ID
- #--------------------------------------------------------------------------
- def element_rate(element_id)
- # 获取对应属性有效度的数值
- table = [0,400,200,100,50,0,-100]
- result = table[$data_classes[@class_id].element_ranks[element_id]]
- # 防具能防御本属性的情况下效果减半
- for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
- armor = $data_armors[i]
- if armor != nil and armor.guard_element_set.include?(element_id)
- result /= 2
- end
- end
- # 状态能防御本属性的情况下效果减半
- for i in @states
- if $data_states[i].guard_element_set.include?(element_id)
- result /= 2
- end
- end
- # 过程结束
- return result
- end
- end
- #==============================================================================
- # ■ Game_Enemy
- #==============================================================================
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # ● 获取属性修正值
- # element_id : 属性 ID
- #--------------------------------------------------------------------------
- def element_rate(element_id)
- # 获取对应属性有效度的数值
- table = [0,400,200,100,50,0,-100]
- result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
- # 状态能防御本属性的情况下效果减半
- for i in @states
- if $data_states[i].guard_element_set.include?(element_id)
- result /= 2
- end
- end
- # 过程结束
- return result
- end
- end
复制代码 |
|