游戏精英
 
- 贡献度
- 431
- 金元
- 20660
- 积分
- 3850
- 精华
- 6
- 注册时间
- 2008-1-10
|
本帖最后由 zjwzero 于 2012-7-22 14:46 编辑
影子瞬间突袭的技能代码
- newTalent{
- short_name = "SHADOW_BLINDSIDE",
- name = "Blindside",
- type = {"spell/other", 1},
- points = 5,
- random_ego = "attack",
- range = 10,
- requires_target = true,
- tactical = { CLOSEIN = 2 },
- action = function(self, t)
- local tg = {type="hit", pass_terrain = true, range=self:getTalentRange(t)}
- local x, y, target = self:getTarget(tg)
- if not x or not y or not target then return nil end
- if core.fov.distance(self.x, self.y, x, y) > self:getTalentRange(t) then return nil end
- local start = rng.range(0, 8)
- for i = start, start + 8 do
- local x = target.x + (i % 3) - 1
- local y = target.y + math.floor((i % 9) / 3) - 1
- if game.level.map:isBound(x, y)
- and self:canMove(x, y)
- and not game.level.map.attrs(x, y, "no_teleport") then
- game.level.map:particleEmitter(self.x, self.y, 1, "teleport_out")
- self:move(x, y, true)
- game.level.map:particleEmitter(x, y, 1, "teleport_in")
- local multiplier = self:combatTalentWeaponDamage(t, 0.9, 1.9)
- self:attackTarget(target, nil, multiplier, true)
- return true
- end
- end
- return false
- end,info = function(self, t)
- local multiplier = self:combatTalentWeaponDamage(t, 1.1, 1.9)
- return ([[With blinding speed you suddenly appear next to a target up to %d spaces away and attack for %d%% damage.]]):format(self:getTalentRange(t), multiplier)
- end,
- }
由于各种代码实在眼花缭乱,不熟悉的我看着脑袋发麻,但是终归是找到了一个异常的地方:请注意查看技能描述部分
format(self:getTalentRange(t), multiplier),也就是format(self:getTalentRange(t), self:combatTalentWeaponDamage(t, 0.9, 1.9) )
于是我随便找了一些其他的技能做对比
1.盾战的盾击
self:attackTarget(target, nil, self:combatTalentWeaponDamage(t, 0.8, 1.3), true) //这是前面的代码,和上面蓝色差不多的意思,这个应该就是计算并输出的意思吧
return ([[Hits the target with two shield strikes doing %d%% and %d%% shield damage. If it hits a second time it stuns target for %d turns.]]) :format(100 * self:combatTalentWeaponDamage(t, 1, 1.7, self:getTalentLevel(self.T_SHIELD_EXPERTISE)), 100 * self:combatTalentWeaponDamage(t, 1.2, 2.1, self:getTalentLevel(self.T_SHIELD_EXPERTISE)), 2 + self:getTalentLevel(t) / 2) end,}
2.弓箭的双重射
return ([[You fire two arrows at your target, hitting it and a nearby foe if possible, doing %d%% damage This talent does not use any stamina.]]):format(100 * self:combatTalentWeaponDamage(t, 1.2, 1.9)) end,}
3.穿透箭
return ([[You fire an arrow that cuts right through anything, piercing multiple targets if possible with nigh infinite armor penetration, doing %d%% damage.]]):format(100 * self:combatTalentWeaponDamage(t, 1, 1.5))
end,
}
应该不必继续举例了,各种技能都是*100然后再以%的形式表达出来
再看一下倍率self:combatTalentWeaponDamage
- function _M:combatTalentWeaponDamage(t, base, max, t2)
- if t2 then t2 = t2 / 2 else t2 = 0 end
- local diff = max - base
- local mult = base + diff * math.sqrt((self:getTalentLevel(t) + t2) / 5)
- -- print("[TALENT WEAPON MULT]", self:getTalentLevel(t), base, max, t2, mult)
- return mult
- end
这个算数中使用了getTalentLevel(t),由于困难中的t等级都很高,所以倍率都会很高,影子的系数有(t, 0.9, 1.9)算是平均水平,稳固射击也不过(t, 1.1, 2.2),骷髅战士使用震慑打击是(t, 1, 1.5),但是影子的All伤害加成实在太高了,攻击力不高算其美中不足吧
实战游戏中如果查看影子的该技能
居然只有3%?没错,乘以100的话就是300%
然后
影子拥有超高的所有伤害以及所有伤害穿透。。
上图皆是Heart of the Goom的Boss召唤的影子,我最初在TM右边碰到过一个doom,当时还是2%实际200%来着
不过,影子突袭似乎和主人的站位有关,实际上,影子突袭的距离其实是玩家与Doom本体的距离?玩得多了就经常看到影子看见你了却不会立刻突袭到你的身边,它会徘徊,向你的方向不断前进但是有个极限,超过极限就回到了本体身边,所以实际上影子无论在何处,其突袭距离都是以Doom为中心,半径10格距离的圆?
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|