讨论下战宝Boss碾压效果的触发条件
摘 要
if not IsPlayer(dwCharacterID) then
return
end
local player = GetPlayer(dwCharacterID)
if player then
local scene = player.GetScene()
local Parry = player.nParry
local ParryBase = player.nParryBaseRate
local ParryRate = ParryBase/100 + 100 * Parry /(Parry + 2150)
local npc = scene.GetNpcByNickName("boss2")
if npc then
if ParryRate < 30 and ParryRate >= 29 then
npc.SetTarget(TARGET.PLAYER,player.dwID);
npc.CastSkill(1575, 3)
end
if ParryRate < 29 and ParryRate >= 28 then
npc.SetTarget(TARGET.PLAYER,player.dwID);
npc.CastSkill(1575, 2)
end
if ParryRate < 28 then
npc.SetTarget(TARGET.PLAYER,player.dwID);
npc.CastSkill(1575, 1)
end
end
end
end
看了几个Boss的技能脚本,都有如上的代码。提取出几个有用的信息:
1、招架=基础招架/100+100*招架值/(招架值+2150)
其中基础招架应该就是经脉加的那几点,或者以后装备或技能可能也出现直接加招架的属性
2、Boss碾压技能有3重,招架在[29,30)生效第三重
[28,29)生效第二重
(-∞,28)生效第一重
3、Boss碾压的技能号是1575
根据技能表查到1575的技能脚本名为,战宝迦兰_BOSS_碾压.lua。具体内容如下:
------------------------------------------------
-- 文件名 : 战宝迦兰_BOSS_碾压.lua
-- 创建人 : CBG
-- 创建时间 : 2010-01-28
-- 用途(模块): 副本BOSS
-- 武功门派 : 无
-- 武功类型 : 无
-- 武功套路 : 无
-- 技能名称 :
-- 技能效果 : 哇咔咔咔~碾压来啦!
------------------------------------------------
--------------脚本文件开始------------------------------------------------
Include("scripts/Include/Skill.lh")
Include("scripts/Include/Player.lh")
tSkillData =
{
{nDamageBase = 30000 * 0.8, nDamageRand = 30000 * 0.4, nCostMana = 0}, --level 1
{nDamageBase = 20000 * 0.8, nDamageRand = 20000 * 0.4, nCostMana = 0}, --level 2
{nDamageBase = 10000 * 0.8, nDamageRand = 10000 * 0.4, nCostMana = 0}, --level 3
};
--设置武功技能级别相关数值
function GetSkillLevelData(skill)
local dwSkillLevel = skill.dwLevel;
----------------- 魔法属性 -------------------------------------------------
skill.AddAttribute(
ATTRIBUTE_EFFECT_MODE.EFFECT_TO_SELF_AND_ROLLBACK,
ATTRIBUTE_TYPE.SKILL_PHYSICS_DAMAGE,
tSkillData[dwSkillLevel].nDamageBase,
0
);
skill.AddAttribute(
ATTRIBUTE_EFFECT_MODE.EFFECT_TO_SELF_AND_ROLLBACK,
ATTRIBUTE_TYPE.SKILL_PHYSICS_DAMAGE_RAND,
tSkillData[dwSkillLevel].nDamageRand,
0
);
skill.AddAttribute(
ATTRIBUTE_EFFECT_MODE.EFFECT_TO_DEST_NOT_ROLLBACK,
ATTRIBUTE_TYPE.CALL_PHYSICS_DAMAGE,
0,
0
);
--skill.AddSlowCheckSelfBuff(dwBuffID, nStackNum, eCompareFlag, nLevel, eLevelCompareFlag); -- 需求自身Buff
----------------- 技能施放Buff需求 ---------------------------------------------
--skill.AddSlowCheckDestBuff(dwBuffID, nStackNum, eCompareFlag, nLevel, eLevelCompareFlag); -- 需求目标Buff
----------------- BUFF相关 -------------------------------------------------
--skill.BindBuff(1, 994, 5); -- 设置1号位Buff
--skill.BindBuff(2, nBuffID, nBuffLevel); -- 设置2号位Buff
--skill.BindBuff(3, nBuffID, nBuffLevel); -- 设置3号位Buff
--skill.BindBuff(4, nBuffID, nBuffLevel); -- 设置4号位Buff
----------------- 设置Cool down --------------------------------------------
-- 公**
--skill.SetPublicCoolDown(16); -- 公** 1.5秒
-- 技能CD, CoolDownIndex为CD位(共3个), nCoolDownID为CoolDownList.tab内的CDID
--skill.SetNormalCoolDown(CoolDownIndex, nCoolDownID);
----------------- 经验升级相关 ---------------------------------------------
--注意,虽然这些内容可以在脚本内更改,但一般不做任何改动!
--skill.dwLevelUpExp = 0; -- 升级经验
--skill.nExpAddOdds = 1024; -- 技能熟练度增长概率
--skill.nPlayerLevelLimit = 0; -- 角色可以学会该技能所必须达到的最低等级
----------------- 技能仇恨 -------------------------------------------------
--skill.nBaseThreat = 0;
----------------- 技能消耗 -------------------------------------------------
--skill.nCostLife = 0; -- 技能消耗生命值
--skill.nCostMana = tSkillData[dwSkillLevel].nCostMana; -- 技能消耗的内力
--skill.nCostStamina = 0; -- 技能消耗的体力
--skill.nCostItemType = 0; -- 技能消耗的物品类型
--skill.nCostItemIndex = 0; -- 技能消耗的物品索引ID
----------------- 聚气相关 -------------------------------------------------
--skill.bIsAccumulate = false; -- 技能是否需要聚气
--skill.SetSubsectionSkill(nBeginInterval, nEndInterval, dwSkillID, dwSkillLevel)
----------------- 链状技能相关 ---------------------------------------------
--skill.nChainBranch = 1; --链状技能分支数
--skill.nChainDepth = 3; --链状技能层数
--链状技能的子技能用skill.SetSubsectionSkill()设定
----------------- 施放距离 -------------------------------------------------
--skill.nMinRadius = 0 * LENGTH_BASE; -- 技能施放的最小距离
skill.nMaxRadius = 5 * LENGTH_BASE; -- 技能施放的最大距离
----------------- 作用范围 -------------------------------------------------
skill.nAngleRange = 128; -- 攻击范围的扇形角度范围
--skill.nAreaRadius = 40 * LENGTH_BASE; -- 技能作用半径
--skill.nTargetCountLimit = 10; -- 技能作用目标数量限制,(小于0 代表目标数量不限制)
----------------- 时间相关 -------------------------------------------------
--skill.nPrepareFrames = 48; -- 吟唱帧数
--skill.nChannelInterval = 0; -- 通道技间隔时间
--skill.nChannelFrame = 0; -- 通道技持续时间,单位帧数
--skill.nBulletVelocity = 0; -- 子弹速度,单位 点/帧
----------------- 阵法相关 -------------------------------------------------
--skill.bIsFormationSkill = false; -- 是否阵眼技能
--skill.nFormationRange = 0 * LENGTH_BASE; -- 结阵的范围
--skill.nLeastFormationPopulation = 2; -- 结阵的范围的最少队员数(包括队长)
----------------- 目标血量需求 ---------------------------------------------
--skill.nTargetLifePercentMin = 0; -- 血量最小值>=
--skill.nTargetLifePercentMax = 100; -- 血量最大值<=
----------------- 自身血量需求 ---------------------------------------------
--skill.nSelfLifePercentMin = 0; -- 血量最小值>=
--skill.nSelfLifePercentMax = 100; -- 血量最大值<=
----------------- 打退打断落马相关 -------------------------------------------------
--skill.nBeatBackRate = 0 * PERCENT_BASE; -- 技能被打退的概率,默认1024
--skill.nBrokenRate = 0 * PERCENT_BASE; -- 技能被打断的概率,默认1024
--skill.nBreakRate = 1024 * PERCENT_BASE; -- 打断目标施法的概率,基数1024
--skill.nDismountingRate = 0; -- 将目标击落下马几率,基数1024,默认0
----------------- 武器伤害相关 ---------------------------------------------
--skill.nWeaponDamagePercent = 0; -- 武器伤害百分比,对外功伤害有用。填0表示此次外功攻击不计算武器伤害,1024为100%
return true;
end
-- 对技能执行的特殊条件检查,该函数可以在开始施放技能的时候被调用,以确定是否可以施放该机能
-- Player: 技能施放者, nPreResult: 程序里面按照一般流程判断的结果
-- 注意,最终以脚本返回的结果为准
function CanCast(player, nPreResult) --判断玩家的状态,以判断是否可以发出技能
return nPreResult;
end
-- 技能升级时调用此函数,参数skill为升级后的skill,第一次获得某个技能时也调用此脚本
function OnSkillLevelUp(skill, player)
end
--魔法属性应用时的执行函数,dwCharacterID是魔法属性作用的目标ID
function Apply(dwCharacterID)
end
--魔法属性反应用时的执行函数,dwCharacterID是魔法属性作用的目标ID
function UnApply(dwCharacterID)
end
从中我只提取到1个信息:
1重伤害是24000-36000
2重伤害是16000-24000
3重伤害是8000-12000
还有个公**1.5这个就很奇怪了,Boss的普通攻击脚本里公**也是1.5...如果真的是公**的话,那么Boss应该是不停碾压,所以猜测两者不**...哪个先转完用哪个,再听说碾压好像比普通多,那可以猜测碾压要优先于普通...
就这点搞不懂了...找高手确定准确的施放条件...