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

Project1

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

[已经解决] 如何设置状态可以提高某属性的攻击威力?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-5-4
帖子
351
跳转到指定楼层
1
发表于 2012-5-10 16:42:21 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 苹果星ねこ 于 2012-5-10 18:44 编辑

比如附加一个火状态,火属性的技能的威力会上升这样子

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

3
发表于 2012-5-10 18:35:59 | 只看该作者
本帖最后由 hys111111 于 2012-5-10 18:41 编辑

……很高级的东西(另外,如果你想叠加伤害的话,hurt = 2 改为 hurt +=1)

  1. class Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 应用特技效果
  4.   #     user  : 特技的使用者 (battler)
  5.   #     skill : 特技
  6.   #--------------------------------------------------------------------------
  7.   def skill_effect(user, skill)
  8.    
  9.     hurt = 1
  10.    
  11.     #————————————————————————————————————
  12.     # 火属性
  13.     #————————————————————————————————————
  14.     #下面这行就是如果是技能1号属性,并且使用者中了17号状态,伤害翻倍
  15.     if skill.element_set[1] and user.states.include?(17)
  16.       hurt = 2
  17.       #翻倍的伤害,2就是两倍伤害,可自己改
  18.     end
  19.    
  20.     #————————————————————————————————————
  21.     # 冰属性
  22.     #————————————————————————————————————
  23.     #下面这行就是如果是技能2号属性,并且使用者中了18号状态,伤害翻倍
  24.     if skill.element_set[2] and user.states.include?(18)
  25.       hurt = 2
  26.       #翻倍的伤害,2就是两倍伤害,可自己改
  27.     end
  28.    
  29.    
  30.     # 清除会心一击标志
  31.     self.critical = false
  32.     # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  33.     # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  34.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  35.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  36.       # 过程结束
  37.       return false
  38.     end
  39.     # 清除有效标志
  40.     effective = false
  41.     # 公共事件 ID 是有效的情况下,设置为有效标志
  42.     effective |= skill.common_event_id > 0
  43.     # 第一命中判定
  44.     hit = skill.hit
  45.     if skill.atk_f > 0
  46.       hit *= user.hit / 100
  47.     end
  48.     hit_result = (rand(100) < hit)
  49.     # 不确定的特技的情况下设置为有效标志
  50.     effective |= hit < 100
  51.     # 命中的情况下
  52.     if hit_result == true
  53.       # 计算威力
  54.       power = skill.power + user.atk * skill.atk_f / 100
  55.       if power > 0
  56.         power -= self.pdef * skill.pdef_f / 200
  57.         power -= self.mdef * skill.mdef_f / 200
  58.         power = [power, 0].max
  59.       end
  60.       power *= hurt
  61.       # 计算倍率
  62.       rate = 20
  63.       rate += (user.str * skill.str_f / 100)
  64.       rate += (user.dex * skill.dex_f / 100)
  65.       rate += (user.agi * skill.agi_f / 100)
  66.       rate += (user.int * skill.int_f / 100)
  67.       # 计算基本伤害
  68.       self.damage = power * rate / 20
  69.       # 属性修正
  70.       self.damage *= elements_correct(skill.element_set)
  71.       self.damage /= 100
  72.       # 伤害符号正确的情况下
  73.       if self.damage > 0
  74.         # 防御修正
  75.         if self.guarding?
  76.           self.damage /= 2
  77.         end
  78.       end
  79.       # 分散
  80.       if skill.variance > 0 and self.damage.abs > 0
  81.         amp = [self.damage.abs * skill.variance / 100, 1].max
  82.         self.damage += rand(amp+1) + rand(amp+1) - amp
  83.       end
  84.       # 第二命中判定
  85.       eva = 8 * self.agi / user.dex + self.eva
  86.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  87.       hit = self.cant_evade? ? 100 : hit
  88.       hit_result = (rand(100) < hit)
  89.       # 不确定的特技的情况下设置为有效标志
  90.       effective |= hit < 100
  91.     end
  92.     # 命中的情况下
  93.     if hit_result == true
  94.       # 威力 0 以外的物理攻击的情况下
  95.       if skill.power != 0 and skill.atk_f > 0
  96.         # 状态冲击解除
  97.         remove_states_shock
  98.         # 设置有效标志
  99.         effective = true
  100.       end
  101.       # HP 的伤害减法运算
  102.       last_hp = self.hp
  103.       self.hp -= self.damage
  104.       effective |= self.hp != last_hp
  105.       # 状态变化
  106.       @state_changed = false
  107.       effective |= states_plus(skill.plus_state_set)
  108.       effective |= states_minus(skill.minus_state_set)
  109.       # 威力为 0 的场合
  110.       if skill.power == 0
  111.         # 伤害设置为空的字串
  112.         self.damage = ""
  113.         # 状态没有变化的情况下
  114.         unless @state_changed
  115.           # 伤害设置为 "Miss"
  116.           self.damage = "Miss"
  117.         end
  118.       end
  119.     # Miss 的情况下
  120.     else
  121.       # 伤害设置为 "Miss"
  122.       self.damage = "Miss"
  123.     end
  124.     # 不在战斗中的情况下
  125.     unless $game_temp.in_battle
  126.       # 伤害设置为 nil
  127.       self.damage = nil
  128.     end
  129.     # 过程结束
  130.     return effective
  131.   end
  132. end
复制代码

点评

明白了,谢谢  发表于 2012-5-10 18:43
是可以追加,另外,原先我写错了,我现在修改了一下。  发表于 2012-5-10 18:42
是不是可以追加一些状态在里面  发表于 2012-5-10 18:38
回复

使用道具 举报

Lv4.逐梦者 (超级版主)

嗜谎者

梦石
2
星屑
17287
在线时间
3909 小时
注册时间
2010-9-12
帖子
9654

极短24评委极短23评委极短22评委极短21评委开拓者

2
发表于 2012-5-10 17:47:59 | 只看该作者
大概可以做成:通过该属性技能引发公共事件判定某人是否有该状态然后触发二次伤害就好了。。。

点评

那么不是每个技能都有设置一个公共事件  发表于 2012-5-10 18:48
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-6 00:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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