字号:

讨论下战宝Boss碾压效果的触发条件

时间:2010-03-07 16:00 作者:君笑尘 手机订阅 参与评论(0) 【投稿】
文 章
摘 要
functionApply(dwCharacterID)ifnotIsPlayer(dwCharacterID)thenreturnendlocalplayer=GetPlayer(dwCharacterID)ifplayerthenlocalscene=player.GetSc
function Apply(dwCharacterID)
         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应该是不停碾压,所以猜测两者不**...哪个先转完用哪个,再听说碾压好像比普通多,那可以猜测碾压要优先于普通...
就这点搞不懂了...找高手确定准确的施放条件...
加入17173玩家俱乐部,100%领《原神》月卡、《王者荣耀》888点券、《魔兽世界》T恤等周边好礼!
加入方式:微信关注“17173服务号”

最近更新

全球新闻