619 lines
20 KiB
Lua
619 lines
20 KiB
Lua
require("Envir/Market_Def/wza.lua") --个人封装函数
|
||
|
||
--特效触发提醒
|
||
local function _effectNotice(actor, str)
|
||
sendCenterMsg(actor, str, 0, 250, 0, 1)
|
||
end
|
||
|
||
--判断是否免疫控制-灵器-true免疫,false不免疫
|
||
local function lingqi_immune_control(player)
|
||
if not isplayer(player) then
|
||
return false
|
||
end
|
||
local time = tonumber(lualib:GetTempStr(player, "灵器十步一杀释放"))
|
||
local data = config[TYPE_CFG.LQ_SUIT2]
|
||
local suitnum = data.suitnum
|
||
local level = get_level_suit(player, suitnum)
|
||
if data.immune_control[level] then
|
||
local lasttime = data.immune_control[level]
|
||
if time and time + lasttime >= uicGetTimes64() then
|
||
return true
|
||
else
|
||
return false
|
||
end
|
||
else
|
||
return false
|
||
end
|
||
end
|
||
|
||
--===========================是否免疫控制==================
|
||
local function _check_mykz(actor, attacker)
|
||
if getbaseinfo(actor,51,213) > 0 then
|
||
return true
|
||
end
|
||
|
||
if hasbuff(actor, 12024) then
|
||
--屏障免疫一次控制
|
||
--lualib:SendSelfMsg(actor, "免疫一次控制")
|
||
delbuff(actor, 12024)
|
||
return true
|
||
end
|
||
|
||
-- if lingqi_immune_control(actor) then
|
||
-- lualib:SendMsg(actor, "灵器特效抵抗控制!", 9)
|
||
-- if attacker then
|
||
-- lualib:SendMsg(attacker, "目标灵器特效触发抵抗了你的控制!", 9)
|
||
-- end
|
||
-- return true
|
||
-- end
|
||
|
||
return false
|
||
end
|
||
|
||
--================================================================天赋 屏障
|
||
|
||
local function _talent_pingzhan(actor)
|
||
local uid = "308"
|
||
local level = _getTalentLv(actor, uid)
|
||
if level > 0 then
|
||
local cfg = tTalentUIDMap[uid]
|
||
if cfg and cfg.Abilty and cfg.Abilty.Data then
|
||
local cd = cfg.Abilty.Data[level][1]
|
||
local nowTime = os.time()
|
||
if lualib:GetPlayerU(actor, PLAYER_VAR.U.TALENT_PINGZHAN) < nowTime then
|
||
--CD已过
|
||
lualib:SetPlayerU(actor, PLAYER_VAR.U.TALENT_PINGZHAN, nowTime + cd)
|
||
if not lualib:HasBuff(actor, 12024) then
|
||
lualib:AddBuff(actor, 12024, 0)
|
||
end
|
||
end
|
||
end
|
||
else
|
||
if lualib:HasBuff(actor, 12024) then
|
||
lualib:DelBuff(actor, 12024)
|
||
end
|
||
end
|
||
end
|
||
|
||
----------------------------麻痹----------------------------
|
||
--朱雀神装
|
||
local function _processShenZhuangZhuque(actor, hitter)
|
||
local tag = TYPE_CFG.SZZQ
|
||
local level = _getPlayerData(actor, tag)
|
||
local cfg = config[tag]
|
||
if cfg.levSpecAtt[level] then
|
||
local resistChance = cfg.levSpecAtt[level][1] --抵抗概率万分比
|
||
if math.random(1, 10000) <= resistChance then
|
||
local chancePct = cfg.levSpecAtt[level][2] --麻痹概率万分比
|
||
local iTime = cfg.levSpecAtt[level][3] --麻痹概率万分比
|
||
if math.random(1, 10000) <= chancePct then
|
||
_effectNotice(actor, "你对" .. lualib:Name(hitter) .. "造成麻痹" .. iTime .. "秒")
|
||
_effectNotice(hitter, lualib:Name(actor) .. "对你造成麻痹" .. iTime .. "秒")
|
||
lualib:Mabi(hitter, iTime, actor)
|
||
end
|
||
return true
|
||
end
|
||
end
|
||
|
||
return false
|
||
end
|
||
|
||
--麻痹效果
|
||
local function _processMabi(actor, target, actorName, targetName, targetIsPlayer)
|
||
local level = _getPlayerData(actor, TYPE_CFG.MABI)
|
||
local cfg = config[TYPE_CFG.MABI]
|
||
if level and cfg.levSpecAtt[level] then
|
||
local time = lualib:GetTempInt(actor, cfg.cdVar)
|
||
|
||
local nowTime = os.time()
|
||
if time <= nowTime then
|
||
if math.random(10000) <= cfg.levSpecAtt[level][1] then
|
||
--添加麻痹buff
|
||
if targetIsPlayer then
|
||
local zodiacLv = _getPlayerData(target, TYPE_CFG.ZODIAC)
|
||
local zodiacCfg = config[TYPE_CFG.ZODIAC]
|
||
if zodiacCfg.levSpecAtt[zodiacLv] and math.random(10000) <= zodiacCfg.levSpecAtt[zodiacLv][1] then
|
||
--生肖免疫麻痹
|
||
_effectNotice(actor, targetName .. "抵抗了你的麻痹")
|
||
_effectNotice(target, "抵抗来自" .. actorName .. "的麻痹")
|
||
else
|
||
if not _check_mykz(target, actor) then
|
||
local secTime = cfg.levSpecAtt[level][3]
|
||
if zodiacCfg.levSpecAtt[zodiacLv] and zodiacCfg.levSpecAtt[zodiacLv][2] then
|
||
--生肖减麻痹时间
|
||
secTime = math.max(secTime - zodiacCfg.levSpecAtt[zodiacLv][2], 0)
|
||
end
|
||
|
||
if not _processShenZhuangZhuque(target, actor) then
|
||
lualib:Mabi(target, secTime, actor)
|
||
_effectNotice(target, actorName .. "对你造成麻痹" .. secTime .. "秒")
|
||
_effectNotice(actor, "你对" .. targetName .. "造成麻痹" .. secTime .. "秒")
|
||
end
|
||
lualib:SetTempInt(actor, cfg.cdVar, nowTime + cfg.levSpecAtt[level][4])
|
||
end
|
||
end
|
||
else
|
||
local secTime = cfg.levSpecAtt[level][3]
|
||
lualib:Mabi(target, secTime, actor)
|
||
lualib:SetTempInt(actor, cfg.cdVar, nowTime + cfg.levSpecAtt[level][4])
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--================================================================夜间无敌流程
|
||
local function _processNightWudi(actor, damage, gongjizhe)
|
||
if not isplayer(actor) then
|
||
return damage
|
||
end
|
||
|
||
if lualib:GetFlag(actor, PLAYER_VAR.FLAG.GUAJIWUDI) == 0 then
|
||
return damage
|
||
end
|
||
|
||
local hour = GetHour()
|
||
if 10 <= hour and hour < 23 then
|
||
return damage
|
||
end
|
||
|
||
local mapKey = getmap(actor)
|
||
if not MAP_DEFINE[mapKey] then
|
||
--不在挂机地图
|
||
return damage
|
||
end
|
||
|
||
if gongjizhe and lualib:IsPlayer(gongjizhe) then
|
||
sendmsg9(gongjizhe, "对方处于夜间无敌状态")
|
||
end
|
||
return 0
|
||
end
|
||
|
||
-- 处理无敌
|
||
local function _processWudi(actor, damage, gongjizhe)
|
||
if not isplayer(actor) then
|
||
return damage
|
||
end
|
||
|
||
local tag = TYPE_CFG.ZB3
|
||
if config[tag] and config[tag].buffId and lualib:HasBuff(actor, config[tag].buffId) then
|
||
return 0
|
||
end
|
||
|
||
--降龙-倒转乾坤-无敌
|
||
local tag = TYPE_CFG.ZZX_2_6
|
||
if config[tag] and config[tag].buffid and lualib:HasBuff(actor, config[tag].buffid) then
|
||
return 0
|
||
end
|
||
|
||
--闪避
|
||
local attr = lualib:Attr(actor,243)
|
||
if attr >= 100 or (attr > 0 and math.random(1,100) <= attr) then
|
||
lualib:AtkEffect(actor,3,gongjizhe)
|
||
return 0
|
||
end
|
||
|
||
--鬼王-绝地反击
|
||
local zz1_tag = TYPE_CFG.ZZX_1_6
|
||
local steps = lualib:GetInt(actor, PLAYER_VAR.INT.ZHUAN_ZHI_XIN_LEVEL)
|
||
local career = lualib:GetInt(actor, PLAYER_VAR.INT.ZHUAN_ZHI_XIN_CAREER)
|
||
if career == CAREER_DEFINE.GW and steps >= config[zz1_tag].needlevel and lualib:HasBuff(actor, config[zz1_tag].buffid) then
|
||
return 0
|
||
end
|
||
|
||
return damage
|
||
end
|
||
|
||
--计算伤害减免
|
||
local function _shjm(actor, gongjizhe, shoujizhe, damage)
|
||
if hitter then
|
||
-- dbg(lualib:Name(hitter),targetName)
|
||
local attrType = 27
|
||
|
||
--受击者减伤
|
||
local decPct = getbaseinfo(shoujizhe,attrType)
|
||
--攻击者无视减伤
|
||
local ignorePct = getbaseinfo(gongjizhe,51,235)
|
||
-- dbg(decPct, ignorePct)
|
||
if decPct > 0 then
|
||
decPct = math.max(decPct - ignorePct, 0)
|
||
decPct = math.min(decPct, 99)
|
||
-- dbg("伤害减免"..decPct.."%")
|
||
return math.ceil(damage * (100 - decPct) / 100)
|
||
end
|
||
end
|
||
return damage
|
||
end
|
||
|
||
--加血
|
||
local function _playerAddHp(actor, hp)
|
||
local maxHp = getbaseinfo(actor,10)
|
||
local curHp = getbaseinfo(actor,9)
|
||
if maxHp <= curHp then
|
||
return
|
||
end
|
||
|
||
--humanhp(actor, "=", math.min(curHp + hp, maxHp))
|
||
humanhp(actor, "+", hp)
|
||
end
|
||
|
||
--扣血
|
||
local function _playerSubHp(actor, gongjizhe, shoujizhe, hp, Typeid)
|
||
if isplayer(shoujizhe) then
|
||
local targetName = getname(shoujizhe)
|
||
--是玩家
|
||
-- hp = _processNightWudi(actor, hp)
|
||
-- hp = _processWudi(actor, hp)
|
||
hp =_shjm(actor, gongjizhe, shoujizhe, hp)
|
||
end
|
||
|
||
if ismon(shoujizhe) then
|
||
local monname = getname(shoujizhe)
|
||
----怪物减伤万分比
|
||
--hp = GetMonDecDamage(targetName, hp)
|
||
|
||
if MONSTER_FIXED_DAMAGE[monname] then
|
||
--怪物固定伤害
|
||
hp = math.min(hp, MONSTER_FIXED_DAMAGE[monname])
|
||
end
|
||
end
|
||
|
||
if hp > 0 then
|
||
humanhp(shoujizhe, "-", hp, Typeid, nil, gongjizhe)
|
||
end
|
||
end
|
||
|
||
|
||
--================================================================受怪减伤流程
|
||
local function _processMonDmgRec(actor,gongjizhe,shoujizhe,skillid,damage)
|
||
local dmgDec = getbaseinfo(shoujizhe,51,225)
|
||
if dmgDec > 0 then
|
||
damage = math.max(damage - dmgDec, 0)
|
||
end
|
||
return damage
|
||
end
|
||
|
||
--================================================================额外受怪减伤,减少X%怪物对你造成的伤害
|
||
local function _processMonDmgRecex(actor,gongjizhe,shoujizhe,skillid,damage)
|
||
local decPct = getbaseinfo(shoujizhe,51,211)
|
||
if decPct > 0 then
|
||
return math.ceil(damage * (100 - decPct) / 100)
|
||
end
|
||
return damage
|
||
end
|
||
|
||
--================================================================玩家回血流程
|
||
local function _processHpRecover(actor, recoverHp)
|
||
if recoverHp < 0 then
|
||
return
|
||
end
|
||
|
||
local injured = getbaseinfo(actor,51,208) --重伤
|
||
if injured >= 100 then
|
||
return
|
||
end
|
||
|
||
recoverHp = math.ceil(recoverHp * (100 - injured) / 100)
|
||
|
||
_playerAddHp(actor, recoverHp)
|
||
end
|
||
|
||
--================================================================对怪固定吸血流程
|
||
local function _processMonSuckHp(actor)
|
||
local suckHp = getbaseinfo(actor,51,219)
|
||
if suckHp > 0 then
|
||
_processHpRecover(actor, suckHp) --走回血流程
|
||
end
|
||
end
|
||
|
||
--================================================================专属 烈火燎原
|
||
local function _zhuanshu_liehuoliaoyuan(actor)
|
||
local value = getbaseinfo(actor,51,220)
|
||
if value > 0 then
|
||
releasemagic(actor, getskillindex("专属烈火燎原"), 1, 3, 1, 0)
|
||
end
|
||
end
|
||
|
||
--烈火剑法处理
|
||
local function _processmagicliehuo(actor,gongjizhe,shoujizhe,skillid,damage)
|
||
local value = getbaseinfo(actor,51,226)
|
||
if value > 0 then
|
||
damage = math.ceil(damage * (1 + value / 10000))
|
||
end
|
||
|
||
_zhuanshu_liehuoliaoyuan(actor) --专属 烈火燎原
|
||
|
||
return damage
|
||
end
|
||
--================================================================专属 对怪固定伤害
|
||
local function _zhuanshu_gudingshanghai(actor, damage)
|
||
local value = getbaseinfo(actor,51,228)
|
||
if value > 0 then
|
||
damage = damage + value
|
||
end
|
||
return damage
|
||
end
|
||
|
||
--================================================================专属 冰咆哮
|
||
local function _zhuanshu_bingpaoxiao(actor)
|
||
local value = getbaseinfo(actor,51,221)
|
||
if value > 0 and math.random(1,100) <= 3 and getint(actor,"专属冰咆哮CD") < os.time() then
|
||
setint(actor,"专属冰咆哮CD",os.time() + 3)
|
||
releasemagic(actor, getskillindex("专属冰咆哮"), 1, 3, 1, 0)
|
||
end
|
||
end
|
||
|
||
--================================================================专属 寒霜风暴
|
||
local function _zhuanshu_hanshuangfengbao(actor)
|
||
local value = getbaseinfo(actor,51,222)
|
||
if value > 0 and math.random(1,100) <= 3 and getint(actor,"专属寒霜风暴CD") < os.time() then
|
||
setint(actor,"专属寒霜风暴CD",os.time() + 3)
|
||
releasemagic(actor, getskillindex("专属寒霜风暴"), 1, 3, 1, 0)
|
||
end
|
||
end
|
||
|
||
--================================================================专属 雷霆万钧
|
||
local function _zhuanshu_leitingwanjun(actor)
|
||
local value = getbaseinfo(actor,51,223)
|
||
if value > 0 and math.random(1,100) <= 3 and getint(actor,"专属雷霆万钧CD") < os.time() then
|
||
setint(actor,"专属雷霆万钧CD",os.time() + 3)
|
||
releasemagic(actor, getskillindex("专属雷霆万钧"), 1, 3, 1, 0)
|
||
end
|
||
end
|
||
|
||
--十步一杀麻痹抵抗
|
||
local function _processShiBuResist(actor)
|
||
local baseChance = getbaseinfo(actor,51,203)
|
||
local value = getbaseinfo(actor,51,227)
|
||
|
||
if value == 2 then
|
||
baseChance = baseChance + 25
|
||
elseif value > 0 then
|
||
baseChance = baseChance + 30
|
||
end
|
||
|
||
return math.random(1, 100) <= baseChance
|
||
end
|
||
|
||
--玉清套装麻痹配置
|
||
local levSpecAtt = {
|
||
--伤害提升(百分比)、麻痹概率增加万分比、麻痹时长、buff、持续时间(s)、buff属性加成
|
||
{30, 1000, 1, 0, 3},
|
||
{50, 1500, 1, 0, 3},
|
||
{80, 2000, 1, 0, 3},
|
||
{100, 3000, 1, 0, 3},
|
||
{120, 3000, 2, 0, 3},
|
||
{125, 3200, 2, 0, 3},
|
||
{130, 3400, 2, 0, 3},
|
||
{135, 3600, 2, 0, 3},
|
||
{140, 3800, 2, 0, 3},
|
||
{145, 4000, 2, 0, 3},
|
||
{150, 4500, 2, 30021, 3},
|
||
{155, 5000, 2, 30022, 3},
|
||
{160, 5500, 2, 30023, 3},
|
||
{165, 6000, 2, 30024, 3},
|
||
}
|
||
--十步一杀麻痹处理
|
||
local function _shibuMabichuli(actor,gongjizhe,shoujizhe,skillid,damage)
|
||
local rate = 1500
|
||
local mabiTime = 1
|
||
local level = getbaseinfo(gongjizhe, 51, 229)
|
||
if level > 0 and levSpecAtt[level] then
|
||
mabiTime = levSpecAtt[level][3]
|
||
rate = rate + levSpecAtt[level][2]
|
||
damage = damage * levSpecAtt[level][1] / 100 + damage
|
||
|
||
local buffid = levSpecAtt[level][4]
|
||
local bufftime = levSpecAtt[level][5]
|
||
|
||
addbuff(gongjizhe, buffid, bufftime, 1, actor)
|
||
end
|
||
|
||
if math.random(1,10000) <= rate then
|
||
if isplayer(shoujizhe) then
|
||
if not _processShiBuResist(shoujizhe) then
|
||
-- if not _check_mykz(shoujizhe, gongjizhe) and not _processShenZhuangZhuque(target, actor) then
|
||
if not _check_mykz(shoujizhe, gongjizhe) then
|
||
setMabi(shoujizhe, mabiTime, gongjizhe)
|
||
end
|
||
else
|
||
_effectNotice(shoujizhe, "抵抗对方十步一杀麻痹")
|
||
end
|
||
else
|
||
setMabi(shoujizhe, mabiTime, gongjizhe)
|
||
end
|
||
end
|
||
-- lualib:DelayCall(actor, 200, "delaystartautofight")
|
||
-- lualib:SetTempStr(actor, "灵器十步一杀释放", tostring(uicGetTimes64()))
|
||
return damage
|
||
end
|
||
|
||
--================================================================专属 龙啸苍穹
|
||
local function _zhuanshu_longxiaocangqiong(actor)
|
||
local value = getbaseinfo(actor,51,224)
|
||
if value > 0 and math.random(1,100) <= 3 and getint(actor,"专属龙啸苍穹CD") < os.time() then
|
||
setint(actor,"专属龙啸苍穹CD",os.time() + 3)
|
||
releasemagic(actor, getskillindex("专属龙啸苍穹"), 1, 3, 1, 0)
|
||
end
|
||
end
|
||
|
||
--================================================================专属 龙啸苍穹麻痹
|
||
local function _zhuangshu_longxiaomabi(actor, gongjizhe, shoujizhe)
|
||
if isplayer(shoujizhe) then
|
||
-- if not _check_mykz(target, actor) and not _processShenZhuangZhuque(target, actor) then
|
||
if not _check_mykz(shoujizhe, gongjizhe) then
|
||
setMabi(shoujizhe, 2, gongjizhe)
|
||
end
|
||
else
|
||
setMabi(shoujizhe, 2, gongjizhe)
|
||
end
|
||
end
|
||
|
||
--专属 女娲补天石减伤
|
||
local function _zhuanshu_nvwabutianshi(actor, gongjizhe,shoujizhe,skillid,damage)
|
||
local level = getbaseinfo(shoujizhe,51, 244)
|
||
if level > 0 and damage >= math.floor(getbaseinfo(shoujizhe,10) * 0.1) then
|
||
local nowTime = os.time()
|
||
if nowTime > getint(shoujizhe,"女娲补天石CD") then
|
||
setint(shoujizhe,"女娲补天石CD",os.time() + 30)
|
||
sendattackeff(shoujizhe, 200, 0, gongjizhe)
|
||
damage = math.floor(damage * 0.5)
|
||
return damage
|
||
end
|
||
end
|
||
return damage
|
||
end
|
||
|
||
|
||
--玩家吸血流程
|
||
local function _processSuckHp(actor, damage, targetIsPlayer, target, targetName)
|
||
local suckHpPct = lualib:Attr(actor, 206)
|
||
if suckHpPct < 0 then
|
||
return
|
||
end
|
||
|
||
local suckHpResist = 0
|
||
if targetIsPlayer then
|
||
--是玩家
|
||
suckHpResist = lualib:Attr(target, 207)
|
||
else
|
||
--是怪物
|
||
suckHpResist = GetMonsterExtraAtt(targetName, 207)
|
||
|
||
--行会副本动态抗吸血
|
||
if hhfb1_player_suckhp then
|
||
suckHpResist = hhfb1_player_suckhp(actor, targetName, suckHpResist)
|
||
end
|
||
end
|
||
|
||
suckHpPct = math.max(suckHpPct - suckHpResist, 0)
|
||
local damage = _shjm(target, damage, targetName,actor)
|
||
if suckHpPct < 0 then
|
||
return
|
||
end
|
||
|
||
_processHpRecover(actor, math.ceil(damage * suckHpPct / 100))
|
||
end
|
||
|
||
|
||
--受击前执行
|
||
function shoujiqianzhixing(actor,gongjizhe,shoujizhe,skillid,damage)
|
||
if ismon(gongjizhe) then
|
||
damage = _processMonDmgRec(actor,gongjizhe,shoujizhe,skillid,damage)
|
||
damage = _processMonDmgRecex(actor,gongjizhe,shoujizhe,skillid,damage)
|
||
end
|
||
|
||
damage = _zhuanshu_nvwabutianshi(actor, gongjizhe,shoujizhe,skillid,damage)
|
||
return damage
|
||
end
|
||
|
||
--攻击前执行
|
||
function gongjiqianzhixing(actor,shoujizhe,gongjizhe,skillid,damage,model)
|
||
if ismon(shoujizhe) then
|
||
_processMonSuckHp(actor)
|
||
damage =_zhuanshu_gudingshanghai(actor, damage)
|
||
end
|
||
|
||
_zhuanshu_bingpaoxiao(actor)
|
||
_zhuanshu_hanshuangfengbao(actor)
|
||
_zhuanshu_leitingwanjun(actor)
|
||
_zhuanshu_longxiaocangqiong(actor)
|
||
|
||
if skillid == getskillindex("烈火剑法") then
|
||
damage = _processmagicliehuo(actor,gongjizhe,shoujizhe,skillid,damage)
|
||
end
|
||
|
||
if skillid == getskillindex("十步一杀") then
|
||
_shibuMabichuli(actor,gongjizhe,shoujizhe,skillid,damage)
|
||
end
|
||
|
||
if skillid == getskillindex("专属烈火燎原") then
|
||
_playerSubHp(actor, gongjizhe, shoujizhe, damage, 119)
|
||
damage = 0
|
||
end
|
||
|
||
if skillid == getskillindex("专属冰咆哮") then
|
||
_playerSubHp(actor, gongjizhe, shoujizhe, damage, 120)
|
||
damage = 0
|
||
end
|
||
|
||
if skillid == getskillindex("专属寒霜风暴") then
|
||
_playerSubHp(actor, gongjizhe, shoujizhe, damage, 121)
|
||
local value = getbaseinfo(gongjizhe, 51, 222)
|
||
if value > 0 then
|
||
if math.random(1, 100) <= 10 then
|
||
if isplayer(shoujizhe) then
|
||
if not _check_mykz(shoujizhe, gongjizhe) then
|
||
setBingDong(shoujizhe, 1, gongjizhe)
|
||
end
|
||
else
|
||
setBingDong(shoujizhe, 1, gongjizhe)
|
||
end
|
||
end
|
||
end
|
||
damage = 0
|
||
end
|
||
|
||
if skillid == getskillindex("专属雷霆万钧") then
|
||
_playerSubHp(actor, gongjizhe, shoujizhe, damage, 122)
|
||
local value = getbaseinfo(gongjizhe, 51, 223)
|
||
if value > 1 then
|
||
--2级雷霆万钧 麻痹
|
||
if math.random(1, 100) <= 5 then
|
||
if isplayer(shoujizhe) then
|
||
-- if not _check_mykz(shoujizhe, gongjizhe) and not _processShenZhuangZhuque(shoujizhe, actor) then
|
||
if not _check_mykz(shoujizhe, gongjizhe) then
|
||
setMabi(shoujizhe, 1, gongjizhe)
|
||
end
|
||
else
|
||
setMabi(shoujizhe, 1, gongjizhe)
|
||
end
|
||
end
|
||
end
|
||
damage = 0
|
||
end
|
||
|
||
if skillid == getskillindex("专属龙啸苍穹") then
|
||
local level = getbaseinfo(gongjizhe, 51, 224)
|
||
local rate = 1
|
||
if level == 1 or not isplayer(shoujizhe) then
|
||
rate = math.random(1, 10)
|
||
if rate == 10 then
|
||
_zhuangshu_longxiaomabi(actor, gongjizhe, shoujizhe)
|
||
end
|
||
else
|
||
--在对生命值上限高于自身的玩家释放时,会增加多倍龙啸的几率,当目标生命值上限高于自身生命值上限100%时,达到最大几率。
|
||
local tPct = {
|
||
{25, 2, 10},
|
||
{50, 3, 10},
|
||
{75, 4, 10},
|
||
{100, 5, 10}
|
||
}
|
||
|
||
local maxHpS = getbaseinfo(gongjizhe, 10)
|
||
local maxHpT = getbaseinfo(shoujizhe, 10)
|
||
local value = maxHpT / maxHpS * 100 - 1
|
||
|
||
local function _getIndex()
|
||
for i = #tPct, 1, -1 do
|
||
if value >= tPct[i][1] then
|
||
return i
|
||
end
|
||
end
|
||
end
|
||
|
||
local index = _getIndex()
|
||
if index then
|
||
rate = math.random(tPct[index][2], tPct[index][3])
|
||
if rate == 10 then
|
||
_zhuangshu_longxiaomabi(actor, gongjizhe, shoujizhe)
|
||
end
|
||
end
|
||
end
|
||
_playerSubHp(actor, gongjizhe, shoujizhe, damage * rate, 108 + rate)
|
||
damage = 0
|
||
end
|
||
|
||
return damage
|
||
end
|