Project1

标题: 【仿VA任重而道远】XP仿VA技能伤害 [打印本页]

作者: 阿尔西斯的马甲    时间: 2012-1-15 20:58
标题: 【仿VA任重而道远】XP仿VA技能伤害
本帖最后由 阿尔西斯的马甲 于 2012-1-19 20:30 编辑

说明:
首先,这脚本的用法是在技能注释(。。。)中这样写
战士的特殊技。不死系怪物特效。#a.atk
这样就能做到VA伤害公式的效果了。
分散度还是会加的。喵!
命中率还是会加的。喵!
属性还是会加成的。喵!
比如说你的攻击是300,有技能公式是a.atk,不死系特效,那么打幽灵后伤害是600.
不要问我公式怎么写,自己下个VA不就知道了喵?

  1. module RPG
  2.   class Skill
  3.     def description
  4.       return @description.split(/#/)[0]
  5.     end
  6.     def shgt
  7.       [email protected](/#/)[1]
  8.       a="" if a==nil
  9.       return a
  10.     end
  11.   end
  12. end
  13. class Game_Battler
  14.   def skill_effectrtab(user,skill)
  15.     self.critical[user] = false
  16.     state_p[user] = []
  17.     state_m[user] = []
  18.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0)
  19.       return false
  20.     end
  21.     effective = false
  22.     effective |= skill.common_event_id > 0
  23.     hit = skill.hit
  24.     if skill.atk_f > 0
  25.       hit *= user.hit / 100
  26.     end
  27.     hit_result = (rand(100) < hit)
  28.     effective |= hit < 100
  29.     if hit_result == true
  30.       a=user
  31.       b=self
  32.       self.damage[user] = eval(skill.shgt)
  33.       if self.damage[user]==nil
  34.         power = skill.power + user.atk * skill.atk_f / 100
  35.         if power > 0
  36.           power -= self.pdef * skill.pdef_f / 200
  37.           power -= self.mdef * skill.mdef_f / 200
  38.           power = [power, 0].max
  39.         end
  40.         rate = 20
  41.         rate += (user.str * skill.str_f / 100)
  42.         rate += (user.dex * skill.dex_f / 100)
  43.         rate += (user.agi * skill.agi_f / 100)
  44.         rate += (user.int * skill.int_f / 100)
  45.         self.damage[user] = power * rate / 20
  46.       end
  47.       self.damage[user] *= elements_correct(skill.element_set)
  48.       self.damage[user] /= 100
  49.       if self.damage[user] > 0
  50.         if self.guarding?
  51.           self.damage[user] /= 2
  52.         end
  53.       end
  54.       if skill.variance > 0 and self.damage[user].abs > 0
  55.         amp = [self.damage[user].abs * skill.variance / 100, 1].max
  56.         self.damage[user] += rand(amp+1) + rand(amp+1) - amp
  57.       end
  58.       eva = 8 * self.agi / user.dex + self.eva
  59.       hit = self.damage[user] < 0 ? 100 : 100 - eva * skill.eva_f / 100
  60.       hit = self.cant_evade? ? 100 : hit
  61.       hit_result = (rand(100) < hit)
  62.       effective |= hit < 100
  63.     end
  64.     if hit_result == true
  65.       if skill.power != 0 and skill.atk_f > 0
  66.         remove_states_shock
  67.         effective = true
  68.       end
  69.       last_hp = [[self.hp - self.damage[user], self.maxhp].min, 0].max
  70.       effective |= self.hp != last_hp
  71.       @state_changed = false
  72.       effective |= states_plus(user, skill.plus_state_set)
  73.       effective |= states_minus(user, skill.minus_state_set)
  74.       unless $game_temp.in_battle
  75.         self.damage_effect(user, 1, skill)
  76.       end
  77.       if skill.power == 0
  78.         self.damage[user] = ""
  79.         unless @state_changed
  80.           self.damage[user] = "Miss"
  81.         end
  82.       end
  83.     else
  84.       self.damage[user] = "Miss"
  85.     end
  86.     unless $game_temp.in_battle
  87.       self.damage[user] = nil
  88.     end
  89.     return effective
  90.   end
  91.   def skill_effectnormal(user, skill)
  92.     self.critical = false
  93.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0)
  94.       return false
  95.     end
  96.     effective = false
  97.     effective |= skill.common_event_id > 0
  98.     hit = skill.hit
  99.     if skill.atk_f > 0
  100.       hit *= user.hit / 100
  101.     end
  102.     hit_result = (rand(100) < hit)
  103.     effective |= hit < 100
  104.     if hit_result == true
  105.       a=user
  106.       b=self
  107.       self.damage=eval(skill.shgt)
  108.       if self.damage==nil
  109.         power = skill.power + user.atk * skill.atk_f / 100
  110.         if power > 0
  111.           power -= self.pdef * skill.pdef_f / 200
  112.           power -= self.mdef * skill.mdef_f / 200
  113.           power = [power, 0].max
  114.         end
  115.         rate = 20
  116.         rate += (user.str * skill.str_f / 100)
  117.         rate += (user.dex * skill.dex_f / 100)
  118.         rate += (user.agi * skill.agi_f / 100)
  119.         rate += (user.int * skill.int_f / 100)
  120.         self.damage = power * rate / 20
  121.       end
  122.       self.damage *= elements_correct(skill.element_set)
  123.       self.damage /= 100
  124.       if self.damage > 0
  125.         if self.guarding?
  126.           self.damage /= 2
  127.         end
  128.       end
  129.       if skill.variance > 0 and self.damage.abs > 0
  130.         amp = [self.damage.abs * skill.variance / 100, 1].max
  131.         self.damage += rand(amp+1) + rand(amp+1) - amp
  132.       end
  133.       eva = 8 * self.agi / user.dex + self.eva
  134.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  135.       hit = self.cant_evade? ? 100 : hit
  136.       hit_result = (rand(100) < hit)
  137.       effective |= hit < 100
  138.     end
  139.     if hit_result == true
  140.       if skill.power != 0 and skill.atk_f > 0
  141.         remove_states_shock
  142.         effective = true
  143.       end
  144.       last_hp = self.hp
  145.       self.hp -= self.damage
  146.       effective |= self.hp != last_hp
  147.       @state_changed = false
  148.       effective |= states_plus(skill.plus_state_set)
  149.       effective |= states_minus(skill.minus_state_set)
  150.       if skill.power == 0
  151.         self.damage = ""
  152.         unless @state_changed
  153.           self.damage = "Miss"
  154.         end
  155.       end
  156.     else
  157.       self.damage = "Miss"
  158.     end
  159.     unless $game_temp.in_battle
  160.       self.damage = nil
  161.     end
  162.     return effective
  163.     if hit_result == true
  164.       if skill.power != 0 and skill.atk_f > 0
  165.         remove_states_shock
  166.         effective = true
  167.       end
  168.       last_hp = self.hp
  169.       self.hp -= self.damage
  170.       effective |= self.hp != last_hp
  171.       @state_changed = false
  172.       effective |= states_plus(skill.plus_state_set)
  173.       effective |= states_minus(skill.minus_state_set)
  174.       if skill.power == 0
  175.         self.damage = ""
  176.         unless @state_changed
  177.           self.damage = "Miss"
  178.         end
  179.       end
  180.     else
  181.       self.damage = "Miss"
  182.     end
  183.     unless $game_temp.in_battle
  184.       self.damage = nil
  185.     end
  186.     return effective
  187.   end
  188.   def skill_effect(user,skill)
  189.     if Scene_Battle.method_defined?("synthe?")
  190.       skill_effectrtab(user,skill)
  191.     else
  192.       skill_effectnormal(user,skill)
  193.     end
  194.   end
  195. end
复制代码
话说我表达能力依旧那么差劲、、、喵!
作者: 越前リョーマ    时间: 2012-1-16 12:24
好东西要回帖表示对LZ的尊重

可惜XP没备注栏写说明里可能会和其他脚本冲突什么的 - -b




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1