设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 771|回复: 4
打印 上一主题 下一主题

技能攻击力

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-12-22
帖子
274
跳转到指定楼层
1
发表于 2009-5-28 21:28:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv1.梦旅人

梦石
0
星屑
72
在线时间
21 小时
注册时间
2009-3-15
帖子
262
2
发表于 2009-5-28 23:38:35 | 只看该作者
好像是 力量与伤害之间的配合吧。
看到天上的星星了吗?
想一想,哪一颗属于你。
哪一颗属于我。
找到自己的星星,飞吧……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
345
在线时间
38 小时
注册时间
2007-6-19
帖子
129
3
发表于 2009-5-28 23:50:49 | 只看该作者
劝你最好看看帮助(按F1),在哪有你想要的答案

你看看这个吧,就是帮助里的,当然比这好看多了

战斗计算式
第一命中率判定
必杀机率判定
伤害计算
第二命中率判定
逃跑成功率
RPGXP 默认的战斗系统,采用以下的计算式。

攻击方角色表示为 A,被攻击方角色以 B 表示。

第一命中率判定普通攻击
第一命中率 = A 当前状态下的命中率 %
技能攻击
攻击力 F 为 1 以上(物理攻击)
第一命中率 = 技能的命中率 × A 当前状态下的命中率 % ÷ 100
攻击力 F 为 0(物理攻击以外)
第一命中率 = 技能的命中率
使用物品
第一命中率 = 物品的命中率
A 在正常状态下的命中率为 100。
必杀机率判定普通攻击
必杀率 = 4 × A 的灵巧 ÷ B 的速度
技能攻击
必杀率 = 0
使用物品
必杀率 = 0
必杀率即奋力一击(通常会使敌方常受到较大的损伤)发生的机率,如果必杀率为 4 则表示每 4 个回合就出现一次奋力一击。
伤害计算普通攻击
威力 = A 的攻击力 - (B 的物理防御 ÷ 2)
放大率 = 20 + A 的力量
分散度 = 15
威力的最小值:0
技能攻击
技能的威力值为正数
威力 = 技能的威力
+ (A 的攻击力 × 技能的攻击力 F ÷ 100)
- (B 的物理防御 × 技能的物理防御 F ÷ 200)
- (B 的魔法防御 × 技能的魔法防御 F ÷ 200)

威力的最小值:0
技能的威力值为负数
威力 = 技能的威力
放大率 = 20
+ (A 的力量 × 技能的力量 F ÷ 100)
+ (A 的灵巧 × 技能的灵巧 F ÷ 100)
+ (A 的速度 × 技能的速度 F ÷ 100)
+ (A 的魔力 × 技能的魔力 F ÷ 100)
分散度 = 技能的分散度
使用物品
HP 回复量为负数
威力 = - HP 回复量
- (B 的物理防御 × 物品的物理防御 F ÷ 20)
- (B 的魔法防御 × 物品的魔法防御 F ÷ 20)

威力的最小值:0
HP 回复量为正数
威力 = - HP 回复量
放大率 = 20
分散度 = 物品的分散度
伤害 = 威力 × 放大率 ÷ 20 × 属性修正 × 必杀修正 × 防御修正 ( ± 分散度 %)


属性修正:有攻击属性时,在 B 的属性有效度中选择最弱的进行修正,修正值如下。
A:200%,B:150%,C:100%,D:50%,E:0%,F:-100%
另外,攻击属性符合 B 防具的防御属性的,伤害减半,修正值为 1/2。
有多个相同防御属性的,减半效果要叠加。
必杀修正:伤害值为正数,奋力一击发动时修正值为 2。
防御修正:伤害值为正数,B 防御时修正值为 1/2。
第二命中率判定伤害值为正数
B 为正常状态
回避力 = 8 × B 的速度 ÷ A 的灵巧 + B 的回避修正
普通攻击
第二命中率 = 100 - 回避力
技能攻击
第二命中率 = 100 -(回避力 × 技能的回避 F ÷ 100)
使用物品
第二命中率 = 100
B 附加有「不能回避攻击」状态
第二命中率 = 100
伤害值为负数(回复)
第二命中率 = 100
逃跑成功率逃跑成功率 =50 × 角色的速度平均值 ÷ 敌人的速度平均值
//还有,还有,还有。新人总是这么多还有。看见6R高手那么多,我在这就像沙漠于沙子,但只有沙子多才能成为沙漠,就像唐太宗说的:水能载舟,亦能覆舟。所以小心,一不留神惹闹那位黑客,你就要倒霉了……(诚信劝告,还有,我不是黑客)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

蚂蚁卡卡

梦石
0
星屑
116
在线时间
66 小时
注册时间
2007-12-16
帖子
3081
4
发表于 2009-5-29 04:16:03 | 只看该作者
  1. #修改后的战斗伤害公式
  2. #物理伤害 = (我攻击力+我力量-敌物理防御)*2
  3. #法术伤害 = 技威力+我魔法*技能魔力+我灵巧*技能灵巧-敌魔力防御*技能魔防
  4. #躲闪率 = 5*被灵+速 / 攻击灵+速 - 被的躲闪
  5. #暴击率 = 25%  技能暴击率 = 15% 伤害为1.5倍
  6. #当使用技能为10号时 攻击力为普通攻击的5倍伤害
  7. #2号时,为1.5倍;3号时为1.75倍
  8. #修改者:有问题,找蚂蚁 redant修改
  9. #==============================================================================
  10. # ■ Game_Battler (分割定义 3)
  11. #------------------------------------------------------------------------------
  12. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  13. # 超级类来使用。
  14. #==============================================================================

  15. class Game_Battler
  16.   #--------------------------------------------------------------------------
  17.   # ● 可以使用特技的判定
  18.   #     skill_id : 特技 ID
  19.   #--------------------------------------------------------------------------
  20.   def skill_can_use?(skill_id)
  21.     # SP 不足的情况下不能使用
  22.     if $data_skills[skill_id].sp_cost > self.sp
  23.       return false
  24.     end
  25.     # 战斗不能的情况下不能使用
  26.     if dead?
  27.       return false
  28.     end
  29.     # 沉默状态的情况下、物理特技以外的特技不能使用
  30.     if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
  31.       return false
  32.     end
  33.     # 获取可以使用的时机
  34.     occasion = $data_skills[skill_id].occasion
  35.     # 战斗中的情况下
  36.     if $game_temp.in_battle
  37.       # [平时] 或者是 [战斗中] 可以使用
  38.       return (occasion == 0 or occasion == 1)
  39.     # 不是战斗中的情况下
  40.     else
  41.       # [平时] 或者是 [菜单中] 可以使用
  42.       return (occasion == 0 or occasion == 2)
  43.     end
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 应用通常攻击效果
  47.   #     attacker : 攻击者 (battler)
  48.   #--------------------------------------------------------------------------
  49.   def attack_effect(attacker)
  50.     # 清除会心一击标志
  51.     self.critical = false
  52.     # 第一命中判定
  53.     hit_result = (rand(100) < attacker.hit)
  54.     # 命中的情况下
  55.     if hit_result == true
  56.       # 计算基本伤害
  57.       atk = [attacker.atk , 0].max
  58.       self.damage = (attacker.atk  - self.pdef + attacker.str)*2
  59.       # 属性修正
  60.       self.damage *= elements_correct(attacker.element_set)
  61.       self.damage /= 100
  62.       # 伤害符号正确的情况下
  63.       if self.damage > 0
  64.         # 会心一击修正
  65.       if rand(100) < 25# 4 * attacker.dex / self.agi
  66.           self.damage *= 1.5
  67.           self.damage = self.damage.round
  68.           self.critical = true
  69.         end
  70.          # 防御修正
  71.         if self.guarding?
  72.           self.damage /= 2
  73.         end
  74.       end
  75.       if self.damage<0
  76.         self.damage = - (attacker.atk  - self.pdef + attacker.str)/2
  77.         end
  78.       # 分散
  79.       if self.damage.abs > 0
  80.         amp = [self.damage.abs * 15 / 100, 1].max
  81.         self.damage += rand(amp+1) + rand(amp+1) - amp
  82.       end
  83.       # 第二命中判定
  84.       eva = 5 * (self.agi+self.dex) / (attacker.dex+attacker.agi) + self.eva
  85.       hit = self.damage < 0 ? 100 : 100 - eva
  86.       hit = self.cant_evade? ? 100 : hit
  87.    
  88.       hit_result = (rand(100) < hit)
  89.     end
  90.     # 命中的情况下
  91.     if hit_result == true
  92.       # 状态冲击解除
  93.       remove_states_shock
  94.       # HP 的伤害计算
  95.       self.hp -= self.damage
  96.       # 状态变化
  97.       @state_changed = false
  98.       states_plus(attacker.plus_state_set)
  99.       states_minus(attacker.minus_state_set)
  100.     # Miss 的情况下
  101.     else
  102.       # 伤害设置为 "Miss"
  103.       self.damage = "Miss"
  104.       # 清除会心一击标志
  105.       self.critical = false
  106.     end
  107.     # 过程结束
  108.     return true
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 应用特技效果
  112.   #     user  : 特技的使用者 (battler)
  113.   #     skill : 特技
  114.   #--------------------------------------------------------------------------
  115.   def skill_effect(user, skill)
  116.     # 清除会心一击标志
  117.     self.critical = false
  118.     # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  119.     # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  120.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  121.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  122.       # 过程结束
  123.       return false
  124.     end
  125.     # 清除有效标志
  126.     effective = false
  127.     # 公共事件 ID 是有效的情况下,设置为有效标志
  128.     effective |= skill.common_event_id > 0
  129.     # 第一命中判定
  130.     hit = skill.hit
  131.     if skill.atk_f > 0
  132.       hit *= user.hit / 100
  133.     end
  134.     hit_result = (rand(100) < hit)
  135.     # 不确定的特技的情况下设置为有效标志
  136.     effective |= hit < 100
  137.     # 命中的情况下
  138.     if hit_result == true
  139.       # 计算威力
  140.       power = skill.power + user.int * skill.int_f + user.dex * skill.dex_f
  141.       #法方-
  142.       if power > 0
  143.        # power -= self.pdef * skill.pdef_f / 200
  144.        # power -=  / 200
  145.         power = [power, 0].max
  146.       end
  147.       # 计算倍率
  148.       rate = self.mdef * skill.mdef_f
  149.       # 计算基本伤害
  150.       self.damage = power - rate
  151.       # 属性修正
  152.       self.damage *= elements_correct(skill.element_set)
  153.       self.damage /= 100
  154.       
  155.      
  156.       case skill.id
  157.       when 10
  158.         self.damage = (user.atk  - self.pdef + user.str)*10
  159.       when 2
  160.         self.damage = (user.atk  - self.pdef + user.str)*3
  161.        when 3
  162.         self.damage = (user.atk  - self.pdef + user.str)*3.5
  163.         self.damage = self.damage.round
  164.       end
  165.         
  166.          
  167.       # 伤害符号正确的情况下
  168.       if self.damage > 0
  169.         if rand(100) < 15# 4 * attacker.dex / self.agi
  170.           self.damage *= 1.5
  171.           self.damage =   self.damage.round
  172.           self.critical = true
  173.         end
  174.         # 防御修正
  175.         if self.guarding?
  176.           self.damage /= 2
  177.         end
  178.       end
  179.        if self.damage < 0
  180.           self.damage =  skill.power
  181.           end
  182.       # 分散
  183.       if skill.variance > 0 and self.damage.abs > 0
  184.         amp = [self.damage.abs * skill.variance / 100, 1].max
  185.         self.damage += rand(amp+1) + rand(amp+1) - amp
  186.       end
  187.       # 第二命中判定
  188.       eva = 5 * (self.agi+self.dex) / (user.dex + user.agi) + self.eva
  189.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  190.       hit = self.cant_evade? ? 100 : hit
  191.       hit_result = (rand(100) < hit)
  192.       # 不确定的特技的情况下设置为有效标志
  193.       effective |= hit < 100
  194.     end
  195.     # 命中的情况下
  196.     if hit_result == true
  197.       # 威力 0 以外的物理攻击的情况下
  198.       if skill.power != 0 and skill.atk_f > 0
  199.         # 状态冲击解除
  200.         remove_states_shock
  201.         # 设置有效标志
  202.         effective = true
  203.       end
  204.       # HP 的伤害减法运算
  205.       last_hp = self.hp
  206.       self.hp -= self.damage
  207.       effective |= self.hp != last_hp
  208.       # 状态变化
  209.       @state_changed = false
  210.       effective |= states_plus(skill.plus_state_set)
  211.       effective |= states_minus(skill.minus_state_set)
  212.       # 威力为 0 的场合
  213.       if skill.power == 0
  214.         # 伤害设置为空的字串
  215.         self.damage = ""
  216.         # 状态没有变化的情况下
  217.         unless @state_changed
  218.           # 伤害设置为 "Miss"
  219.           self.damage = "Miss"
  220.         end
  221.       end
  222.     # Miss 的情况下
  223.     else
  224.       # 伤害设置为 "Miss"
  225.       self.damage = "Miss "
  226.     end
  227.     # 不在战斗中的情况下
  228.     unless $game_temp.in_battle
  229.       # 伤害设置为 nil
  230.       self.damage = nil
  231.     end
  232.     # 过程结束
  233.     return effective
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ● 应用物品效果
  237.   #     item : 物品
  238.   #--------------------------------------------------------------------------
  239.   def item_effect(item)
  240.     # 清除会心一击标志
  241.     self.critical = false
  242.     # 物品的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  243.     # 或者物品的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  244.     if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
  245.        ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
  246.       # 过程结束
  247.       return false
  248.     end
  249.     # 清除有效标志
  250.     effective = false
  251.     # 公共事件 ID 是有效的情况下,设置为有效标志
  252.     effective |= item.common_event_id > 0
  253.     # 命中判定
  254.     hit_result = (rand(100) < item.hit)
  255.     # 不确定的特技的情况下设置为有效标志
  256.     effective |= item.hit < 100
  257.     # 命中的情况
  258.     if hit_result == true
  259.       # 计算回复量
  260.       recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
  261.       recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
  262.       if recover_hp < 0
  263.         recover_hp += self.pdef * item.pdef_f / 20
  264.         recover_hp += self.mdef * item.mdef_f / 20
  265.         recover_hp = [recover_hp, 0].min
  266.       end
  267.       # 属性修正
  268.       recover_hp *= elements_correct(item.element_set)
  269.       recover_hp /= 100
  270.       recover_sp *= elements_correct(item.element_set)
  271.       recover_sp /= 100
  272.       # 分散
  273.       if item.variance > 0 and recover_hp.abs > 0
  274.         amp = [recover_hp.abs * item.variance / 100, 1].max
  275.         recover_hp += rand(amp+1) + rand(amp+1) - amp
  276.       end
  277.       if item.variance > 0 and recover_sp.abs > 0
  278.         amp = [recover_sp.abs * item.variance / 100, 1].max
  279.         recover_sp += rand(amp+1) + rand(amp+1) - amp
  280.       end
  281.       # 回复量符号为负的情况下
  282.       if recover_hp < 0
  283.         # 防御修正
  284.         if self.guarding?
  285.           recover_hp /= 2
  286.         end
  287.       end
  288.       # HP 回复量符号的反转、设置伤害值
  289.       self.damage = -recover_hp
  290.       # HP 以及 SP 的回复
  291.       last_hp = self.hp
  292.       last_sp = self.sp
  293.       self.hp += recover_hp
  294.       self.sp += recover_sp


  295.       effective |= self.hp != last_hp
  296.       effective |= self.sp != last_sp
  297.                if recover_sp != 0   #如果补SP的量不等于0
  298.        self.damage = -recover_sp  #伤害=SP恢复量的倒数
  299.      end

  300.       # 状态变化
  301.       @state_changed = false
  302.       effective |= states_plus(item.plus_state_set)
  303.       effective |= states_minus(item.minus_state_set)
  304.       # 能力上升值有效的情况下
  305.      if item.recover_hp_rate == 0 and item.recover_hp == 0 and item.recover_sp_rate == 0 and item.recover_sp == 0  #原来只判断HP,现在附带判断SP


  306.         # 能力值的分支
  307.         case item.parameter_type
  308.         when 1  # MaxHP
  309.           @maxhp_plus += item.parameter_points
  310.         when 2  # MaxSP
  311.           @maxsp_plus += item.parameter_points
  312.         when 3  # 力量
  313.           @str_plus += item.parameter_points
  314.         when 4  # 灵巧
  315.           @dex_plus += item.parameter_points
  316.         when 5  # 速度
  317.           @agi_plus += item.parameter_points
  318.         when 6  # 魔力
  319.           @int_plus += item.parameter_points
  320.         end
  321.         # 设置有效标志
  322.         effective = true
  323.       end
  324.       # HP 回复率与回复量为 0 的情况下
  325.        if item.recover_hp_rate == 0 and item.recover_hp == 0 and item.recover_sp_rate == 0 and item.recover_sp == 0  #原来只判断HP,现在附带判断SP
  326.         # 设置伤害为空的字符串
  327.         self.damage = ""
  328.         # SP 回复率与回复量为 0、能力上升值无效的情况下
  329.         if item.recover_sp_rate == 0 and item.recover_sp == 0 and
  330.            (item.parameter_type == 0 or item.parameter_points == 0)
  331.           # 状态没有变化的情况下
  332.           unless @state_changed
  333.             # 伤害设置为 "Miss"
  334.             self.damage = "Miss"
  335.           end
  336.         end
  337.       end
  338.     # Miss 的情况下
  339.     else
  340.       # 伤害设置为 "Miss"
  341.       self.damage = "Miss"
  342.     end
  343.     # 不在战斗中的情况下
  344.     unless $game_temp.in_battle
  345.       # 伤害设置为 nil
  346.       self.damage = nil
  347.     end
  348.     # 过程结束
  349.     return effective
  350.   end
  351.   #--------------------------------------------------------------------------
  352.   # ● 应用连续伤害效果
  353.   #--------------------------------------------------------------------------
  354.   def slip_damage_effect
  355.     # 设置伤害
  356.     self.damage = self.atk  #self.maxhp / 10
  357.     # 分散
  358.     #if self.damage.abs > 0
  359.      # amp = [self.damage.abs * 15 / 100, 1].max
  360.       #self.damage += rand(amp+1) + rand(amp+1) - amp
  361.     #end
  362.     # HP 的伤害减法运算
  363.     self.hp -= self.damage
  364.     # 过程结束
  365.     return true
  366.   end
  367.   #--------------------------------------------------------------------------
  368.   # ● 属性修正计算
  369.   #     element_set : 属性
  370.   #--------------------------------------------------------------------------
  371.   def elements_correct(element_set)
  372.     # 無属性的情况
  373.     if element_set == []
  374.       # 返回 100
  375.       return 100
  376.     end
  377.     # 在被赋予的属性中返回最弱的
  378.     # ※过程 element_rate 是、本类以及继承的 Game_Actor
  379.     #   和 Game_Enemy 类的定义
  380.     weakest = -100
  381.     for i in element_set
  382.       weakest = [weakest, self.element_rate(i)].max
  383.     end
  384.     return weakest
  385.   end
  386. end
复制代码


#当使用技能为10号时 攻击力为普通攻击的5倍伤害
系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
《隋唐乱》完整解密版点击进入
米兰,让我怎么说离开……

曾经我也是一个有志青年,直到我膝盖中了一箭……

《隋唐乱》博客地址
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-12-22
帖子
274
5
 楼主| 发表于 2009-5-29 18:03:47 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-23 00:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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