verfx/equipeff.lua
2024-12-26 00:24:17 +08:00

1534 lines
49 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local zbcfg = zbcfg
local monmp =
{
[2675]= 1,-- 兽人
[2676]= 500,--|3#10#45|3#12#45 趣味任务·镖车
[2677]= 500,--|3#10#45|3#12#45 高级镖车
[2678]= 500,--|3#10#45|3#12#45 超级镖车
[2679]= 1,-- 送财童子
[2680]= 1,-- 地狱骷髅(斧)
[2681]= 1,-- 地狱骷髅(锤)
[2682]= 1,-- 地狱骷髅(剑)
[2683]= 1,-- 地狱骷髅(刀)
[2684]= 1,-- 地狱骷髅(鞭)
[2685]= 1,-- 地狱骷髅(戟)
[2686]= 6,-- 守护者
[2687]= 9,-- 亡灵
[2688]= 8,-- 影魅魔灵
[2689]= 8,-- 幽蓝冰魔
[2690]= 8,-- 炎狱魔蜥
[2691]= 8,-- 血咒狂魔
[2692]= 8,-- 风暴魔鸦
[2693]= 8,-- 幻梦魔蝶
[2694]= 8,-- 深渊魔骸
[2695]= 7,-- 萨满
[2696]= 8,-- 灵魂
[2697]= 1,-- 灵魂摆渡王
[2699]= 99,-- 意念掌控者
[2700]= 99,-- 记忆抹杀者
[2701]= 99,-- 时空潜行者
[2702]= 99,-- 巨龙驾驭者
[2703]= 99,-- 邪恶守护者
[2704]= 99,-- 亡魂守灵者
[2705]= 99,-- 恐惧支配者蓝焰翼龙
[2706]= 99,-- 宝藏巨蟹
[2707]= 99,-- 孤魂
[2708]= 99,-- 野鬼
[2709]= 99,-- 鬼王
}
function takeonex(actor, -- object 玩家对象
item, --object 物品对象
where, --integer 穿/脱位置
itemName, --string 物品名
makeindex --integer
)
local idx = tonumber(zbcfg.idx(actor, item))
jhxbbgame.log(actor,"take.onex = ", itemName, where,idx)
if takeonex6 then
takeonex6(actor, item, where, itemName, makeindex)
end
zbcfg.reload(actor,999,-idx)
end
function takeoffex(actor, -- object 玩家对象
item, --object 物品对象
where, --integer 穿/脱位置
itemName, --string 物品名
makeindex --integer
)
local idx = zbcfg.idx(actor, item)
zbcfg.reload(actor,13,idx)
jhxbbgame.log(actor,"take.offex = ", itemName, where, idx)
end
function delayequipchg(actor, tp, offidx)
local jhxbbgame = jhxbbgame
tp = oldtoint(tp) or VarInt(actor,"N$reload_tp")
offidx = VarInt(actor,"N$reload_offidx")
SetVarStr(actor,"N$reload_offidx",0)
--jhxbbgame.log(actor, ".delayequipchg.init = ")
makebodyitemindexs(actor, nil, 1+tp*100, offidx)
end
function zbcfg.reload(actor,tp,offidx)
local jhxbbgame = jhxbbgame
--jhxbbgame.log(actor,"zbcfg.reload = ", tp, offidx)
tp = tp or 666
offidx = offidx or 0
SetVarStr(actor,"N$reload_tp",tp)
if offidx > 0 then
SetVarStr(actor,"N$reload_offidx",offidx)
end
--delayequipchg(actor,tp,offidx)
jhxbbgame.delayone(actor, 588, "delayequipchg")
end
bodyitem_index = {}
local oldpkpoint = {}
function pkpointchanged(actor, pkv)
local jhxbbgame = jhxbbgame
pkv = pkv or 0
-- local old = oldpkpoint[actor] or 0
-- if old ~= pkv and pkv > old then
-- --jhxbbgame.SetPKFlag(actor, 1)
-- end
-- oldpkpoint[actor] = pkv
zbcfg.checkpkzb(actor, { pkv = pkv, timecur = jhxbbgame.ticksec(), zb = 111 })
end
function zbcfg.NowRecalcAbil(actor)
if not checkkuafuserver() then
callscript(actor, "额外TXT执行", "@自定义属性重新计算")
recalcabilitys(actor)
end
end
function zbcfg.initex(actor, items)
local jhxbbgame = jhxbbgame
local cnt = 0
local vdata = { timecur = jhxbbgame.ticksec() }
for key, value in pairs(items) do
vdata.zb = key
if value and value(actor, vdata) then
jhxbbgame.log(actor, key, ".初始化 = ")
end
cnt = cnt + 1
end
return cnt
end
function zbcfg.init(actor, items)
local jhxbbgame = jhxbbgame
local cnt = 0
local zlcnt = 0
local kkv = 0
local kk = {[1]=55555, [2]=33333, [3]=44444, [4]=66666}
for key, value in pairs({ zbcfg.idxs[1], zbcfg.idxs[2], zbcfg.idxs[4], zbcfg.idxs[5]}) do
if zbcfg.GetBodyItem(actor, value) then
zlcnt = zlcnt + 1
kkv = kkv + kk[key]
end
end
SetVarInt(actor, "N$对坤切割", kkv)
-- 四大斩龙戒指做套装属性,
SetVarInt(actor, "U018", 0)
--jhxbbgame.log(actor, ".zbcfg.init = ",jhxbbgame.any2str(items))
--throughhum(actor, 0, 99999999, 0)
addattlist(actor, "专属", "=","",0)
delattlist(actor, "专属")
addattlist(actor, "专属狂魔之怒", "=","",0)
delattlist(actor, "专属狂魔之怒")
setflagstatus(actor, 103, 0)
zbcfg.NowRecalcAbil(actor)
if zbcfg.GetBodyItem(actor, zbcfg.idxs[16]) then
--燃烧的图腾 "龙魂爆发冷却时间-30秒龙魂爆发持续时间+15秒
SetVarInt(actor, "U025", 30)
SetVarInt(actor, "U026", 15)
else
SetVarInt(actor, "U025", 0)
SetVarInt(actor, "U026", 0)
end
local cdkt = 0
local cdzr = 0
local qgv = 0
local attr = 0
local qgadd = 0
--local hasmag = getskillinfo(actor,1002,1)~=nil
if zlcnt >= 2 then
--2件套属性 --对怪切割2W
qgv = 20000
jhxbbgame.log(actor, "*2件套属性.切割+++20000")
end
if zbcfg.GetBodyItem(actor, zbcfg.idxs[18]) then
--逐日剑法、开天斩冷却时间减少20%
cdkt = 6*0.2
cdzr = 6*0.2
end
setskilldeccd(actor, "逐日剑法", "=", cdzr)
setskilldeccd(actor, "开天斩", "=", cdkt)
if zlcnt >= 3 then
--3件套套装属性攻击人物时刀刀斩杀其当前血量的5%
--SetVarInt(actor, "U018", 5)
qgadd = qgadd + 10
addattlist(actor, "专属",
"+", "3#1#10000", 0)
end
if zlcnt >= 4 then
--4件套激活主动技能“游龙万象”主动释放后解除自身一切负面或控制效果CD180秒。
if getskilllevel(actor, 1002) <= 0 then
addskill(actor, 1002, 3)
local cur = jhxbbgame.ticksec()
if cur >= VarInt(actor, "U019") then
jhxbbgame.SettimeSec(actor, "U019", 3)
end
end
else
delskill(actor, 1002)
end
local kcnt = math.min(VarInt(actor, "U011"), 50)
if (kcnt > 0) and zbcfg.GetBodyItem(actor, zbcfg.idxs[19]) then
--滴水穿石
local abil = "3#4#" .. (kcnt * 10)
.. "|3#1#" .. (kcnt * 100)
jhxbbgame.log(actor, "*滴水穿石.+++"..kcnt,abil)
addattlist(actor, "专属",
"+", abil, 0)
end
if getflagstatus(actor, 102) == 1 then
jhxbbgame.log(actor, "*磨刀.切割+++5000")
qgv = qgv + 5000
end
qgadd = qgadd + tonumber(getconst(actor, "<$ATTR[222]>"))
local rmb = querymoney(actor, 16) + querymoney(actor, 17)
if rmb > 0 and zbcfg.GetBodyItem(actor, zbcfg.idxs[17]) then
rmb = math.min(rmb,50000) * 2
qgv = qgv + rmb
jhxbbgame.log(actor, "*财神.切割+++ "..rmb)
end
if zbcfg.GetBodyItem(actor, zbcfg.idxs[3],1,true) then
jhxbbgame.GMLog(actor,"*103 上架")
setflagstatus(actor, 103, 1)
end
if qgadd > 0 then
attr = tonumber(getconst(actor, "<$ATTR[74]>"))
--jhxbbgame.log(actor, "*222.切割+++% ",attr,qgv,qgadd)
qgv = qgv + math.floor((attr + qgv) * (qgadd / 100))
end
if qgv > 0 then
--jhxbbgame.log(actor, "*.切割+++ ",qgv)
addattlist(actor, "专属", "=", "3#74#"..qgv, 0)
end
local kf = false--checkkuafu(actor)
if not kf then
zbcfg.initex(actor,items)
end
zbcfg.NowRecalcAbil(actor)
-- jhxbbgame.log(actor, zbcfg.idxs[17],
-- zbcfg.GetBodyItem(actor, zbcfg.idxs[17]),rmb,
-- "--------------装备.init = "
-- , qgv,attr,qgadd,
-- cnt, jhxbbgame.len(items),cdkt,cdzr)
end
function zbcfg.uninit(actor, idx,itemName)
local jhxbbgame = jhxbbgame
--delayequipchg(actor,222)
local vdata = { timecur = jhxbbgame.ticksec() }
local value = zbcfg.zbx[idx]
--local xh = ""
if value then
--xh = xh .. "," .. idx
vdata.zb = idx
value(actor, vdata)
-- if then
-- xh = xh .. "=1"
-- end
end
--zbcfg.reload(actor)
jhxbbgame.log(actor, "装备.卸货 = "
, idx,itemName)
end
function zbcfg.GetBodyItem(actor, i, cnt,log)
local jhxbbgame = jhxbbgame
cnt = cnt or 1
local uid = actor--getbaseinfo(actor, 2)
local Itma = bodyitem_index[uid]
if not Itma then
zbcfg.reload(actor,555)
return false
-- makebodyitemindexs(actor, false,200000+i)
-- Itma = bodyitem_index[uid] or {}
end
local Itm = Itma[11] or {}
local ret = (Itm["i"..i] or 0) >= cnt
-- if log then
-- jhxbbgame.GMLog(actor,"*BodyItem",Itm["i"..i],i,"end")
-- end
return ret,"i"..i,Itm["i"..i]
end
--[[
{[92]=44
,[84]=27,[75]=20,[91]=43,[86]=28,[88]=29,[90]=42,[83]=26}
]]
zbcfg.eqpos = {77,111,74,108,112,101,105,109,79
,75,106,110,107,78,9,
44,27,20,43,28,29,42,26,100,80,103,102,71,104
}
function zbcfg.cdpass(actor, vdata, mode, tp)
local jhxbbgame = jhxbbgame
local cfg = zbcfg.CD[vdata.zb]
local cd = (cfg and (cfg[1])) or 0
--release_print("cdpass.cd = ", cd,tbl2json(cfg))
if cd > 0 then
local savedcd = VarInt(actor, cfg[2])
local otime = os.time()
if otime > savedcd then
--release_print("cdpass = ", vdata.zb, mode, cd, cfg[2])
--SetVarInt(actor, cfg[2], vdata.timecur + cd)
return true
else
return false
end
end
return true
end
function zbcfg.cdupdate(actor, vdata, mode)
local jhxbbgame = jhxbbgame
local cfg = zbcfg.CD[vdata.zb];
local cd = (cfg and cfg[1]) or 0
if cd > 0 then
local ncd = os.time() + cd
--jhxbbgame.log(actor, "cdupdate.cd = ", vdata.zb, ncd, tbl2json(cfg))
SetVarInt(actor, cfg[2], ncd)
return cd
end
return 0
end
function zbcfg.die(actor)
local jhxbbgame = jhxbbgame
local vdata = {
timecur = jhxbbgame.ticksec(),
max_hp = getbaseinfo(actor, 10),
selfx = getbaseinfo(actor, 4),
selfy = getbaseinfo(actor, 5)
}
SetVarInt(actor, "U011", 0)
jhxbbgame.log(actor, jhxbbgame.len(zbcfg.zbd), ".die = 666")
SetVarInt(actor, "N$死亡时间", vdata.timecur)
svautoplay.die(actor)
for key, value in pairs(zbcfg.zbd) do
vdata.zb = key
vdata.died = true
if value
and zbcfg.GetBodyItem(actor, vdata.zb, 1)
and zbcfg.cdpass(actor, vdata, 2)
and value(actor, vdata) then
zbcfg.cdupdate(actor, vdata, 1)
release_print(key, ".die = ")
end
end
end
function zbcfg.Realive(actor,m)
local jhxbbgame = jhxbbgame
local vdata = {
timecur = jhxbbgame.ticksec(),
max_hp = getbaseinfo(actor, 10),
hp = getbaseinfo(actor, 9),
hiter = getplayerbyid(VarStr(actor, "S$击杀者id"))
}
jhxbbgame.HideUI(actor, "fuhuotanchuang")
local rethp = jhxbbgame.IncHP(actor, vdata.max_hp)
jhxbbgame.log(actor,getbaseinfo(actor,1), ".Realive = ",m,vdata.hp,rethp,vdata.hiter,VarStr(actor, "S$击杀者id"))
SetVarStr(actor, "S$击杀者id", "")
for key, value in pairs(zbcfg.zbr) do
vdata.zb = key
if value
and zbcfg.cdpass(actor, vdata, 2)
and zbcfg.GetBodyItem(actor, vdata.zb, 1)
and value(actor, vdata) then
zbcfg.cdupdate(actor, vdata, 1)
jhxbbgame.log(actor, key, ".复活 = ")
end
end
end
zbcfg.ResetVarAtLogin = { "D99" }
function zbcfg.login(actor)
local jhxbbgame = jhxbbgame
svautoplay.die(actor)
jhxbbgame.log(actor,"x"..getbaseinfo(actor, 2),getconst(actor, "<$USERACCOUNT>"),getbaseinfo(actor, 1), "zbcfg.login---------------")
zbcfg.reload(actor,333, -1)
--横行霸道
if jhxbbgame.timeSecAt(actor, "U10",os.time())
or VarInt(actor, "U10") < 1 then
jhxbbgame.SettimeSec(actor, "U10", 300,os.time())
end
setontimer(actor, 18, 1, 0, 1)
SetVarInt(actor, "D99", jhxbbgame.ticksec() + 1001118)
end
function sendability(actor, bb)
local jhxbbgame = jhxbbgame
-- if false and getgmlevel(actor) > 1 then
-- jhxbbgame.log(actor,
-- "sendability:专属=",
-- getattlist(actor, "专属")
-- ,getconst(actor, "<$ATTR[74]>")
-- ,getconst(actor, "<$ATTR[222]>")
-- --,tbl2json(attrtab(actor))
-- )--)
-- end
sendability6(actor)
end
function kflogin(actor)
local jhxbbgame = jhxbbgame
jhxbbgame.bfcall(actor, "kflogined", {})
release_print(actor, ".kflogin **= ")
--login(actor)
-- makebodyitemindexs(actor)
-- zbcfg.login(actor)
end
function kuafuend(actor)
local jhxbbgame = jhxbbgame
SetVarInt(actor,"N$kftime", os.time())
kuafusys.kend(actor)
jhxbbgame.ShowTopBtn(actor)
zbcfg.reload(actor,333, -1)
release_print(actor, ".kuafuend = ")
end
function bfsyscall19(actor, arg1, arg2)
local jhxbbgame = jhxbbgame
local role_name = getbaseinfo(actor, 1)
release_print("收到通知", role_name, arg1, arg2)
local cfg = json2tbl(arg1) or {15,0}
delaygoto(actor, 888, "makebodyitemindexs,r,"..(cfg[1] or 16)..","..(cfg[2] or 0))
--makebodyitemindexs(actor,nil,cfg[1] or 16,cfg[2] or 0)
end
function makebodyitemindexs(actor, r, tp, offidx)
local jhxbbgame = jhxbbgame
offidx = tonumber(offidx) or 0
tp = tonumber(tp) or 17
if checkkuafu(actor) and not checkkuafuserver() then
--release_print("本服通知触发跨服QF")
r = nil
bfbackcall(19, getbaseinfo(actor, 2), tbl2json({tp, offidx}))
--return
end
local uid = actor--getbaseinfo(actor, 2)
--repairall(actor)
local pbodyitem_index = { {}, {}, {}, {}, {}, {}, {} }
local itmInit = {}
pbodyitem_index[11] = {}
pbodyitem_index[20] = {}
pbodyitem_index[21] = {}
pbodyitem_index[22] = {}
pbodyitem_index[23] = {}
local ids = ""
local ty = { 1, 2, 3, 5 }
for k, v in pairs(zbcfg.eqpos) do
local id = jhxbbgame.BodyItem(actor, v)
if id then
ids = ids .. "," .. id
pbodyitem_index[11]["i"..id] = (pbodyitem_index[11]["i"..id] or 0) + 1
local cfg = jhxbbgame.zb[id]
if cfg then
pbodyitem_index[20][id] = cfg
if cfg[11] then
itmInit[id] = cfg[11]
end
if cfg[21] then
pbodyitem_index[21][id] = cfg
end
if cfg[10] then
pbodyitem_index[23][id] = cfg
end
if cfg[22] then
pbodyitem_index[22][id] = cfg
end
for key, i in pairs(ty) do
if cfg[i] then
pbodyitem_index[i][#pbodyitem_index[i]+1] = id
end
end
end
end
end
pbodyitem_index[10] = itmInit
jhxbbgame.log(actor,getbaseinfo(actor, 1),"make.bodyitemindexs = ", #ids, r,tp,offidx)
bodyitem_index[uid] = pbodyitem_index
if not checkkuafuserver() then
--if offidx < 0 then
zbcfg.init(actor, itmInit)
--end
if offidx > 0 then
zbcfg.uninit(actor, offidx)
end
-- else
-- if offidx < 0
-- then
-- zbcfg.initex(actor, itmInit)
-- end
-- if offidx > 0 then
-- zbcfg.uninit(actor, offidx)
-- end
end
end
function getbodyitemindexs(actor, mode)
local jhxbbgame = jhxbbgame
mode = mode or 1
local uid = actor--getbaseinfo(actor, 2)
local pbodyitem_index = bodyitem_index[uid]
if pbodyitem_index then
return pbodyitem_index[mode]
end
zbcfg.reload(actor,888+mode*1000000)
return {}
-- makebodyitemindexs(actor, nil, 10000+mode)
-- return bodyitem_index[uid][mode]
--release_print("makebodyitemindexs = "..tostring(bodyitem_index[0]).." "..tostring(bodyitem_index[1]))
end
function bfsyscall18(actor, arg1, arg2)
local jhxbbgame = jhxbbgame
local role_name = getbaseinfo(actor, 1)
--release_print("收到通知", role_name, arg1, arg2)
ontimer18(actor)
end
--每秒执行,跨服也执行
function ontimer18(actor)
local jhxbbgame = jhxbbgame
--setofftimer(actor, 18)
if checkkuafuserver()--~=checkkuafu(actor)
then
-- release_print("本服通知触发跨服ontimer18")
-- bfbackcall(18, getbaseinfo(actor, 2), "每秒执行")
return
end
jhxbbgame.LogLuaMem()
--local max_hp = getbaseinfo(actor, 10)
--release_print("ontimer18 = ", max_hp * 0.01, jhxbbgame.ticksec(), checkkuafu(actor))
local cnt = 0
local vdata = {
max_hp = getbaseinfo(actor, 10),
hp = getbaseinfo(actor, 9),
timecur = jhxbbgame.ticksec()
}
local myitems = getbodyitemindexs(actor, 23)
--local log = {}
for key, value in pairs(myitems) do
vdata.zb = key
if value and value.v then
local v = VarInt(actor, value.v)
--SetVarInt(actor, value.v,0)
--release_print(".每秒11buf = ", value.v,v,vdata.timecur)
if v > 0 and vdata.timecur <= v then
value[10](actor, vdata)
--release_print(".每秒22buf = ", value.v,VarInt(actor, value.v))
-- if then
-- log[key] = { value.v, v }
-- end
end
end
cnt = cnt + 1
end
-- if jhxbbgame.len(log) > 0 then
-- jhxbbgame.log(actor, ".每秒buf = ", tbl2json(log))
-- end
end
function boomRange(player, r, eff)
local jhxbbgame = jhxbbgame
r = tonumber(r)
local map_id = getbaseinfo(player, 3)
local x = getbaseinfo(player, 4)
local y = getbaseinfo(player, 5)
local monster_list = getmapmon(map_id, "", x, y, r)
local ret = #monster_list
local pos = jhxbbgame.rpos[r]
jhxbbgame.log(player, "boomRange----", #pos)
for key, value in pairs(pos) do
jhxbbgame.mapeff(player, eff, value.x + x, value.y + y)
end
if type(monster_list) == "table" then
for k, mon in pairs(monster_list) do
local mx = math.abs(getbaseinfo(mon, 4) - x)
local my = math.abs(getbaseinfo(mon, 5) - y)
jhxbbgame.log(player, "boomRange----", mx, my, r)
if (mx == r and my <= r)
or (mx <= r and my == r) then
ret = jhxbbgame.DecHP(mon, 0.11)
end
end
end
jhxbbgame.log(player, "*boomRange" .. ret .. ",eff:" .. eff)
end
function canpush(actor, target,hiter, magid,result)
local jhxbbgame = jhxbbgame
--jhxbbgame.log(hiter,"*hiter",result)
-- jhxbbgame.log(target,"->target")
local ret = jhxbbgame.canpush(hiter, target)
if ret then
return 1
else
return 2
end
end
function jhxbbgame.canpush(self, tag)
local jhxbbgame = jhxbbgame
local sr,tr = getbaseinfo(self, 39) , getbaseinfo(tag, 39)
local sl,tl = getbaseinfo(self, 6) , getbaseinfo(tag, 6)
local boret = (sr > tr)
or ((sr == tr) and (sl > tl))
boret = boret or zbcfg.GetBodyItem(self, zbcfg.idxs[7])
or zbcfg.GetBodyItem(self, zbcfg.idxs[8])
jhxbbgame.log(self, "*canpush:", boret,sr , tr,sl,tl)
return boret
end
function magtagfunc27(actor, target)
local jhxbbgame = jhxbbgame
if isnotnull(target) then
if zbcfg.GetBodyItem(actor, zbcfg.idxs[7]) then
makeposion(target, 5, 1)
elseif zbcfg.GetBodyItem(actor, zbcfg.idxs[8]) then
makeposion(target, 5, 2)
end
end
end
function magtag11111func1003(actor, target)
local jhxbbgame = jhxbbgame
if isnotnull(target) then
if isplayer(actor) then
local cnt = tonumber(jhxbbgame.CInt(actor, "<$ATTR[74]>")) * 2
jhxbbgame.sendmsg(actor,
getbaseinfo(target, 5) .. "龙骨吞噬者+" .. cnt)
end
end
end
function magtagfunc66111(actor, target)
local jhxbbgame = jhxbbgame
--极度深寒 开天斩50%几率强制冰冻目标1秒
if isnotnull(target) then
--jhxbbgame.HintEff(target, "极度深寒.神器")
end
end
function magtagfunc71(actor, target)
local jhxbbgame = jhxbbgame
--擒龙手
if isnotnull(target)
and jhxbbgame.canpush(actor, target) then
makeposion(target,5,1.5)
jhxbbgame.HintEff(target, "擒龙手.麻痹")
jhxbbgame.HintEff(actor, "擒龙手.麻痹")
end
end
function magtagfunc2012(actor, target)
local jhxbbgame = jhxbbgame
if isnotnull(target) then
if isplayer(actor) then
-- local cnt = tonumber(jhxbbgame.CInt(actor, "<$ATTR[74]>")) * 2
-- jhxbbgame.sendmsg(actor,
-- getbaseinfo(target, 5) .. "tag龙骨吞噬者+" .. cnt)
end
end
end
function addwd(actor, time, hint)
local jhxbbgame = jhxbbgame
--changemode(actor,1,1)
if isplayer(actor) then
time = tonumber(time)
if checkhumanstate(actor, 11, 1) then
makeposion(actor, 0, 1, 0)
end
jhxbbgame.SettimeSec(actor, "N$无敌结束时间", time)
jhxbbgame.showeff(actor, 141, time)
jhxbbgame.log(actor, hint .. "+无敌")
jhxbbgame.HintEff(actor, hint)
else
jhxbbgame.log(actor,getbaseinfo(actor,1), hint .. "+无gg敌")
end
end
--技能释放
function beginmagic(actor, skillId, skillName, target, x, y)
local jhxbbgame = jhxbbgame
beginmagic6(actor, skillId, skillName, target, x, y)
if "xdt316" == getbaseinfo(actor,3) and (skillId == 6 or skillId == 51) then
return false
end
--jhxbbgame.GMLog(actor, "*",skillName,skillId,getbaseinfo(actor,3))
--jhxbbgame.log(actor, skillName..".2...="..getskilldqcd(actor,skillName))
--skillrestcd(actor,skillId,0)
if VarInt(actor,"N$cd"..skillName) == 1 then
jhxbbgame.log(actor, "*恢复CD.",skillName..".2...="..getskilldqcd(actor,skillName))
SetVarInt(actor,"N$cd"..skillName,0)
setskilldeccd(actor,skillName,"=",0)
end
local vdata = { timecur = jhxbbgame.ticksec() }
if skillId == 2002 then
if jhxbbgame.timeSecAt(actor, "U138", vdata.timecur) then
jhxbbgame.sendmsg(actor, "CD300秒")
return false
end
jhxbbgame.SettimeSec(actor, "N$无敌结束时间", 3)
jhxbbgame.SettimeSec(actor, "U138", 300)
makeposion(actor, 12, 3)
elseif skillId == 1002 then
local bohave = false
for key, value in pairs({ 7, 8, 9, 10, 11 }) do
if checkhumanstate(actor, value) then
bohave = true
break
end
end
if not bohave then
for i = 1, 8, 1 do
if checkhumanstate(actor, 12, i) then
bohave = true
break
end
end
end
if bohave and not jhxbbgame.timeSecAt(actor, "U019", vdata.timecur) then
jhxbbgame.SettimeSec(actor, "U019", 180, vdata.timecur)
delbuff(actor, 31126)
jhxbbgame.SettimeSec(actor, "N$移动掉血", 0)
jhxbbgame.SettimeSec(actor, "N$束缚中", 0)
delbuff(actor, 31124)
delbuff(actor, 31118)
delbuff(actor, 31119)
detoxifcation(actor, -1)
jhxbbgame.log(actor, "游龙万象*神技")
jhxbbgame.HintEff(actor, "游龙万象*神技")
end
return
elseif skillId == 1005 then
if jhxbbgame.timeSecAt(actor, "U139", vdata.timecur) then
jhxbbgame.sendmsg(actor, "CD300秒.")
return false
end
jhxbbgame.SettimeSec(actor, "U139", 300)
local mapid = getbaseinfo(actor, 3)
local plays = getobjectinmap(mapid, x, y, 4, 1)
jhxbbgame.mapeff(actor, 42, x, y)
for key, value in pairs(plays) do
if not ispropertarget(actor, value) then
jhxbbgame.SettimeSec(value, "U150", 6)
jhxbbgame.log(value, "火焰领主之冠.治愈")
jhxbbgame.sendmsg(value, "火焰领主之冠.治愈")
end
end
elseif skillId == 10051 then
local timecur = jhxbbgame.ticksec()
if jhxbbgame.timeSecAt(actor, "U139", timecur) then
jhxbbgame.sendmsg(actor, "CD300秒.")
return false
end
--jhxbbgame.SettimeSec(actor,"U139",300)
jhxbbgame.sendmsg(actor, "Boom.")
local eff = { 60450, 60451, 60452 }
for i = 1, 3 do
delaygoto(actor, i * 1000,
"boomRange," .. (i * 2) .. "," .. eff[i], 1)
end
end
local cnt = 0
local myitems = getbodyitemindexs(actor, 22)
vdata.max_hp = getbaseinfo(actor, 10) or 1
vdata.hp = getbaseinfo(actor, 9)
vdata.selfx = getbaseinfo(actor, 4)
vdata.selfy = getbaseinfo(actor, 5)
for key, value in pairs(myitems) do
vdata.zb = key
if zbcfg.cdpass(actor, vdata, nil, 2) then
--local cfg = zbcfg.a21[value]
local cfg = jhxbbgame.zb[key]
--jhxbbgame.log(actor,"addbuff.a21:",cfg,value)
if cfg and cfg[22]
and cfg[22](actor, target, actor, skillId, 0, 0, vdata)
then
--release_print(value, ".释放技能A = ", skillId)
zbcfg.cdupdate(actor, vdata, 3)
end
end
cnt = cnt + 1
end
end
--受击
local cdmon = {}
local posDamage = {}
local MDposxy = {}
local cdmon3 = {}
function FnPosDamage(sysobj, Hiter)
local jhxbbgame = jhxbbgame
local cnt = posDamage[Hiter] or 0
local pos = MDposxy[Hiter]
if cnt >= 1 and (pos) then
cnt = cnt - 1
posDamage[Hiter] = cnt
grobaldelaygoto(1000, "FnPosDamage," .. Hiter)
local plays = getobjectinmap(pos[1], pos[2], pos[3], 2, 1)
jhxbbgame.log(sysobj, "火焰泥潭.", jhxbbgame.len(plays))
for key, value in pairs(plays or {}) do
local ret = jhxbbgame.DecHP(value, 0.2)
jhxbbgame.log(value, "火焰泥潭.灼烧 -20%", ret)
jhxbbgame.HintEff(value, "正在承受坤之火焰泥潭灼烧 血量-20%")
end
end
end
function struckdamage(actor, Hiter, Target, MagicId, Damage)
local jhxbbgame = jhxbbgame
--struckdamage6(actor, Hiter, Target, MagicId, Damage)
local dtime = gettcount64()
local xbb = jhxbbgame
-- if false
-- --and hasbuff(actor, 31119)
-- and isplayer(Target)
-- then
-- xbb.log(Target,
-- "*struckdamage!" ,MagicId,
-- getbaseinfo(Target, 5),
-- ismon(Hiter),isplayer(Hiter))
-- --return 0
-- end
local vdata = { timecur = xbb.ticksec() }
xbb.autoplay.struck(actor,Hiter,vdata)
local hp = getbaseinfo(Hiter,-1)
local hm = ismon(Hiter)
local tp = getbaseinfo(Target,-1)
--local tm = ismon(Target)
local monmax = getbaseinfo(Target,12)
if (not hp) and (not hm) and monmax > 0 then
xbb.log(Hiter,"212.monmax:",monmax)
return monmax
end
-- if ((xbb.attfundis or 0) == 1) then
-- return Damage
-- end
if tp
and xbb.timeSecAt(Target, "N$万里雷霆衣19", vdata.timecur) then
SetVarInt(Target, "N$万里雷霆衣19", 0)
xbb.sendmsg(Hiter, "万里雷霆衣!免疫伤害")
xbb.log(actor, Target, ".万里雷霆衣!免疫伤害", Damage)
return 0
end
if tp
and xbb.timeSecAt(Target, "N$无敌结束时间", vdata.timecur) then
xbb.HintEff(Hiter, "目标无敌中!免疫伤害")
--jhxbbgame.HintEff(Target, "无敌中!免疫伤害1")
xbb.log(actor, Target, ".无敌中!免疫伤害", Damage)
xbb.showeff(Target, 141, 1)
return 0
end
local retdam = Damage
if tp
and Target == actor then
--strdamageing = vdata.timecur
vdata.max_hp = getbaseinfo(actor, 10) or 1
vdata.hp = getbaseinfo(actor, 9)
vdata.selfx = getbaseinfo(actor, 4)
vdata.selfy = getbaseinfo(actor, 5)
if hp
and tp
and Target == actor then
local myitems = getbodyitemindexs(actor, 3)
local cnt = 0
--release_print(jhxbbgame.len(myitems).."struck.111.damage = ", Damage, MagicId)
for i = 1, #myitems, 1 do
local value = myitems[i]
vdata.zb = value
if zbcfg.cdpass(actor, vdata, 3) then
local cfg = xbb.zb[value]
zbcfg.last = value
zbcfg.last2 = zbcfg.last
if cfg and cfg[3] and cfg[3](actor, Target, Hiter, MagicId, Damage, 0, vdata) then
zbcfg.cdupdate(actor, vdata, 3)
--jhxbbgame.log(actor, value, ".被人物攻击 = ", Damage)
end
zbcfg.last = nil
end
cnt = cnt + 1
end
elseif hm then
local myitems = getbodyitemindexs(actor, 5)
local mid = tonumber(getbaseinfo(Hiter, 55)) - 2665
--release_print(Hiter, ".被怪物攻击 = ", mid, mcd)
if mid == 1 then
local mcd = tonumber(cdmon[Hiter])
if vdata.timecur >= mcd then
cdmon[Hiter] = (vdata.timecur + 11)
posDamage[Hiter] = 5
MDposxy[Hiter] = { getbaseinfo(Hiter, 3), vdata.selfx, vdata.selfy }
--jhxbbgame.log(actor, "火焰泥潭.灼烧 -20%", jhxbbgame.any2str(false, MDposxy[Hiter]))
xbb.mapeff(actor, 60344, nil, nil, nil, 5)
grobaldelaygoto(1000, "FnPosDamage," .. Hiter)
end
elseif mid == 2 then
if not zbcfg.GetBodyItem(actor, zbcfg.idxs[2]) then
--local ret =
xbb.DecHP(actor, 0.4)
--jhxbbgame.log(actor, "忍术指环 -40%", ret)
--jhxbbgame.HintEff(actor, "忍术指环")
end
elseif mid == 3 then
local mcd = tonumber(cdmon3[Hiter])
if vdata.timecur >= mcd
and (not zbcfg.GetBodyItem(actor, zbcfg.idxs[4])) then
cdmon3[Hiter] = (vdata.timecur + 30)
local ret = xbb.DecHP(actor, 0.1)
makeposion(actor, 0, 10, ret)
addbuff(actor, 31126, 10)
--jhxbbgame.log(actor, "中毒伤害 -10%", ret)
xbb.HintEff(actor, "中毒伤害")
end
end
local cnt = 0
for i = 1, #myitems, 1 do
local value = myitems[i]
vdata.zb = value
if zbcfg.cdpass(actor, vdata, 5) then
local cfg = xbb.zb[value]
zbcfg.last = value
zbcfg.last2 = zbcfg.last
if cfg and cfg[5] and cfg[5](actor, Target, Hiter, MagicId, Damage, 0, vdata) then
zbcfg.cdupdate(actor, vdata, 3)
--if > 0 then
--jhxbbgame.log(value, ".被怪物攻击 = ", Damage)
--end
end
zbcfg.last = nil
end
cnt = cnt + 1
end
end
local v = VarInt(actor, "D97")
if v > 0 then
--jhxbbgame.log(actor, "*寂静星魔铠.化血盾 - ", v)
if v < retdam then
retdam = retdam - v
v = 0
else
v = v - retdam
retdam = 0
end
xbb.showeff(actor, 141)
SetVarInt(actor, "D97", v)
end
local xs = getbaseinfo(actor, 51, 223)
if (vdata.pwRate and vdata.pwRate ~= 1) or xs > 0 then
vdata.pwRate = (vdata.pwRate or 1) - (tonumber(getbaseinfo(actor, 51, 223)) / 100)
if vdata.pwRate < 0 then
--jhxbbgame.log(actor, "伤害.限制 = ", vdata.max_hp, vdata.pwRate)
retdam = 0
else
retdam = math.max(math.min(retdam * vdata.pwRate, 1000 * 10000), 0)
end
end
if zbcfg.GetBodyItem(actor, zbcfg.idxs[13]) then
local mhp = getbaseinfo(actor, 10)
local v = math.floor(mhp * 0.33)
if v > 0 and retdam > v then
--jhxbbgame.log(actor, "炎君赤羽衣.限制 = ", v)
retdam = math.min(retdam, v)
end
end
if zbcfg.GetBodyItem(actor, zbcfg.idxs[14]) then
local hpr = vdata.hp / vdata.max_hp
if hpr <= 0.5 then
local ret = math.floor(vdata.max_hp * 0.1)
--jhxbbgame.log(actor, "末日灵魂披风.限制 = ", vdata.max_hp, ret)
--jhxbbgame.HintEff(actor, "末日灵魂披风.限制" .. ret)
retdam = math.min(retdam, ret)
end
end
end
--release_print("attack.ret.damage = ",Damage,cnt)
dtime = gettcount64()-dtime
if dtime >= 60 then
xbb.log(actor, getbaseinfo(actor, 1), "*dtime.end. - ", dtime,zbcfg.last,
MagicId,zbcfg.last2, retdam)
end
return retdam
end
function attackdamage(actor, -- object 玩家对象
Target, -- object 受击对象
Hiter, -- object 攻击对象
MagicId, -- integer 技能ID
Damage, -- integer 伤害
Model -- integer 引擎64_23.10.24新增 当前攻击模式
)
--attacklong(actor, Target, Hiter, MagicId)
-- if --true
-- false
-- then
-- jhxbbgame.GMLog(Hiter, "*Att:",Model,MagicId,Damage,getbaseinfo(Target, 9),getbaseinfo(Target, 10))
-- end
--jhxbbgame.GMLog(Hiter, ".怪物被攻击1= ", Model, MagicId,getbaseinfo(Target,12))
local xbb = jhxbbgame
if (Model ~= 0) --or ((xbb.attfundis or 0) == 1)
then
return Damage
end
local hp = isplayer(Hiter)
local stime = gettcount64()
kuafusys.pking(Target, actor,Damage)
if hp
and xbb.timeSecAt(Hiter, "N$束缚中") then
xbb.sendmsg(Hiter, "束缚中!攻击无效")
xbb.log(Hiter, "*束缚中.攻击无效= ")
return 0
end
-- if isplayer(actor)
-- and ismon(Target)
-- --and hasbuff(actor, 31119)
-- then
-- --jhxbbgame.sendmsg(actor, MagicId.."attackdamage!攻击无效"..getbaseinfo(Target, 5))
-- return 0
-- end
-- if isplayer(actor)
-- and ismon(Target)
-- --and hasbuff(actor, 31119)
-- then
-- --jhxbbgame.sendmsg(actor, Model.."attackdamage!"..getbaseinfo(Target, 5))
-- --return 0
-- end
if hp
-- and Model == 3
and MagicId == 1003 then
-- local cnt = jhxbbgame.CInt(Hiter,"<$ATTR[74]>")
-- cnt = jhxbbgame.DecHP(Target, cnt,101)
-- jhxbbgame.sendmsg(Hiter, getbaseinfo(Target, 5) .. "龙骨吞噬者+" .. Model)
return 0
end
local retdam = Damage
local vdata = {
dam = 0,
timecur = xbb.ticksec(),
rate = math.random(1, 10000),
hp = getbaseinfo(actor, 9),
max_hp = getbaseinfo(actor, 10),
tmax_hp = getbaseinfo(Target, 10),
thp = getbaseinfo(Target, 9)
}
attackdamage6(actor, Target, Hiter, MagicId, Damage, Model,vdata)
--jhxbbgame.GMLog(Hiter, ".怪物被攻击6= ", Model, MagicId,getbaseinfo(Target,12))
local hm = ismon(Hiter)
local tp = isplayer(Target)
local tm = ismon(Target)
local tmid = (tm and getbaseinfo(Target, 55)) or 0
local monmax = (tm and monmp[tmid] or 0) or 0
if (not hp) and (not hm) and monmax > 0 then
--jhxbbgame.log(Hiter,"11.monmax:",monmax)
--jhxbbgame.GMLog(Hiter, ".怪物被攻击.12= ", Model, MagicId,getbaseinfo(Target,12))
return monmax
end
vdata.selfx = getbaseinfo(actor, 4)
vdata.selfy = getbaseinfo(actor, 5)
--release_print("attack.111.damage = ", Damage, MagicId)
-- if attdamageing == vdata.timecur then
-- attdamageingcnt = attdamageingcnt + 1
-- jhxbbgame.log(actor, "*SkipAtt. - ",attdamageingcnt, zbcfg.last,
-- MagicId,zbcfg.last2)
--jhxbbgame.GMLog(Hiter, ".怪物被攻击.13= ", Model, MagicId,getbaseinfo(Target,12))
-- return Damage
-- end
--jhxbbgame.GMLog(Hiter, ".怪物被攻击.15= ", Model, MagicId,getbaseinfo(Target,12))
local function k95(aretdam)
local jhxbbgame = jhxbbgame
if tm and (monmax <= 0) then
if getflagstatus(actor, 103) == 1 and
(vdata.thp / vdata.tmax_hp)>=0.96 then
--jhxbbgame.HintEff(actor, "坠天使")
aretdam = aretdam + vdata.tmax_hp * 0.1
end
end
stime = gettcount64()-stime
if stime >= 60 then
xbb.log(actor, getbaseinfo(actor, 1), "*stime.end. - ", stime,zbcfg.last,
MagicId,zbcfg.last2, retdam)
end
return aretdam
end
if tp then
if xbb.timeSecAt(Target, "D96", vdata.timecur) then
xbb.sendmsg(Target, "九天繁星衣免疫中")
retdam = 0
elseif xbb.timeSecAt(Target, "N$无敌结束时间", vdata.timecur) then
xbb.sendmsg(Target, "无敌中!免疫伤害")
retdam = 0
else
local myitems = getbodyitemindexs(actor, 1)
local cnt = 0
---release_print("attack.222.damage = ", jhxbbgame.len(myitems))
for i = 1, #myitems, 1 do
local value = myitems[i]
vdata.zb = value
if zbcfg.cdpass(actor, vdata, 1) then
local cfg = xbb.zb[value]
zbcfg.last = value
zbcfg.last2 = zbcfg.last
if cfg and cfg[1] and cfg[1](actor, Target, Hiter, MagicId, Damage, 0, vdata) then
zbcfg.cdupdate(actor, vdata, 1)
--jhxbbgame.log(value, ".攻击人物 = ", Damage)
end
zbcfg.last = nil
end
cnt = cnt + 1
end
local vv = VarInt(actor, "U018")
vv = vv + getbaseinfo(actor, 51, 232)/ 100
if vv > 0 then
vv = vdata.thp*(vv / 100)
--local hpv =
xbb.DecHP(Target, vv)
--jhxbbgame.GMLog(Hiter, "*对人切割百分比= ", vv, getbaseinfo(actor, 51, 232))
end
end
elseif tm then
local mid1 = tmid--tonumber(getbaseinfo(Target, 55))
if 2679 == mid1 then
if MagicId > 100 then
retdam = 1
end
elseif monmax <= 0 then
local mid = mid1 - 2665
--jhxbbgame.GMLog(Hiter, ".怪物被攻击= ", mid, mid1,getbaseinfo(Target,12))
if (mid >= 1) and (mid <= 8) then
local kv = VarInt(actor, "N$对坤切割")
if (kv > 0) then
kv = xbb.DecHP(Target,kv,119,nil,nil,nil,nil,kv)
--jhxbbgame.HintEff(actor, "对坤切割+"..kv)
end
end
if mid == 3 then
if (not zbcfg.GetBodyItem(actor, zbcfg.idxs[4])) then
--jhxbbgame.log(actor, "四大路坤:坤〔毒〕〕免疫", ret)
xbb.HintEff(actor, "坤〔毒〕〕免疫")
return k95(0)
end
elseif mid == 4 then
if (not zbcfg.GetBodyItem(actor, zbcfg.idxs[2]))
or (not zbcfg.GetBodyItem(actor, zbcfg.idxs[4])) then
--jhxbbgame.log(actor, "五大陆坤〔毒〕免疫", ret)
xbb.HintEff(actor, "坤4免疫")
return k95(0)
end
elseif mid == 5 then
if (not zbcfg.GetBodyItem(actor, zbcfg.idxs[1])) then
--jhxbbgame.log(actor, "六大陆坤〔御〕免疫", ret)
xbb.HintEff(actor, "坤5免疫")
return k95(0)
else
return retdam + vdata.tmax_hp * 0.01
end
elseif mid == 6 then
if (not zbcfg.GetBodyItem(actor, zbcfg.idxs[5])) then
--jhxbbgame.log(actor, "七大陆坤〔速〕免疫", ret)
xbb.HintEff(actor, "坤6免疫")
return k95(0)
end
end
if vdata.hp < vdata.max_hp then
local monxx = getbaseinfo(actor, 51, 209)--xbb.CInt(actor, "<$ATTR[209]>")
if hasbuff(actor, 31126) or
hasbuff(actor, 31132) then
--jhxbbgame.HintEff(actor, "*对怪吸血无效" .. monxx)
--jhxbbgame.log(actor, "*对怪吸血无效", monxx)
monxx = 0
end
if monxx > 0 then
--local ret =
xbb.IncHP(actor, monxx)
--jhxbbgame.log(actor, "*对怪吸血+", monxx,ret)
end
end
local myitems = getbodyitemindexs(actor, 2)
local cnt = 0
--jhxbbgame.GMLog(actor,jhxbbgame.len(myitems),"attack.ismon.damage = ", Damage, MagicId)
for i = 1, #myitems, 1 do
local value = myitems[i]
vdata.zb = value
--jhxbbgame.GMLog(actor,value, "*-cd.攻击怪物 = ", Target)
if zbcfg.cdpass(actor, vdata, 2) then
local cfg = xbb.zb[value]
zbcfg.last = value
zbcfg.last2 = zbcfg.last
--jhxbbgame.GMLog(actor,value, "*攻击怪物 = ", Target)
if cfg and cfg[2] and cfg[2](actor, Target, Hiter, MagicId, Damage, Model, vdata) then
zbcfg.cdupdate(actor, vdata, 1)
if 0 > 0 then
--jhxbbgame.log(actor,value, ".攻击怪物 = ", Target)
end
end
zbcfg.last = nil
end
cnt = cnt + 1
end
end
local vv = getbaseinfo(actor, 51, 231)--tonumber(getconst(actor, "<$ATTR[231]>"))
if vv > 0 then
local dc = getbaseinfo(actor, 20)--tonumber(getconst(actor, "<$ATTR[4]>"))
local dv = dc*(vv / 10000)
--local hpv =
xbb.DecHP(Target, dv,116)
--jhxbbgame.log(Hiter, Model,MagicId,"*对怪增伤= ", hpv)
end
if monmax > 0 then
retdam = math.min(retdam,monmax)
end
end
-- if attdamageingcnt > 0 then
-- xbb.log(actor, "*SkipAtt.end. - ", attdamageingcnt,zbcfg.last,
-- MagicId,zbcfg.last2)
-- attdamageingcnt = 0
-- end
-- attdamageing = 0
--release_print("attack.ret.damage = ",Damage,cnt)
if vdata.pwRate and vdata.pwRate ~= 1 then
retdam = math.max(math.min(retdam * vdata.pwRate, 1000 * 10000), 0)
end
return k95(retdam)
end
function zbcfg.idx(actor, item)
local jhxbbgame = jhxbbgame
return getiteminfo(actor, item, 2)
end
function zbcfg.build()
local jhxbbgame = jhxbbgame
zbcfg.zbx = {}
zbcfg.zbd = {}
zbcfg.zbr = {}
zbcfg.zbi = {}
zbcfg.a21 = {}
zbcfg.tim = {}
for key, value in pairs(jhxbbgame.zb) do
if value and value[15] then
zbcfg.zbx[key] = value[15]
end
if value and value[16] then
zbcfg.zbd[key] = value[16]
end
if value and value[17] then
zbcfg.zbr[key] = value[17]
end
if value and value[21] then
zbcfg.a21[key] = value[21]
end
if value and value[10] then
zbcfg.tim[key] = value
end
end
jhxbbgame.log(nil,".zbcfg.build(zbx,zbd,zbr) = ",
jhxbbgame.len(zbcfg.zbx),
jhxbbgame.len(zbcfg.zbd),
jhxbbgame.len(zbcfg.zbr),
jhxbbgame.len(zbcfg.tim),
jhxbbgame.len(zbcfg.a21))
end
function attackdamagebb(actor, -- object 玩家对象
Target, -- object 受击对象
Hiter, -- object 攻击对象
MagicId, -- integer 技能ID
Damage -- integer 伤害
)
--jhxbbgame.log(actor, ".zbcfg.attackdamagebb() = ")
--jhxbbgame.DecHP(Target, 10000)
--攻击怪物时概率召唤5只地狱骷髅为你助战骷髅刀刀对怪物造成20000固定伤害。持续60秒期间骷髅处于无敌状态cd180秒
if ismon(Target) and jhxbbgame.MonCanBuf(Target) then
jhxbbgame.DecHP(Target, 20000,101)
return 0
else
return Damage
end
end
function zbcfg.run(actor, r)
local jhxbbgame = jhxbbgame
r = r or 1
--jhxbbgame.log(actor,"*run",getconst(actor,"<$MAP>"))
kuafusys.run(actor)
if jhxbbgame.timeSecAt(actor, "N$移动掉血") then
--local ret =
jhxbbgame.DecHP(actor, 0.05*r)
jhxbbgame.showeff(actor, 14)
--jhxbbgame.HintEff(actor, "奇毒")
end
end
function attacklong(actor, Target, Hiter, MagicId)
local jhxbbgame = jhxbbgame
end
function humanhpex(actor, monster_guid)
local jhxbbgame = jhxbbgame
if monster_guid then
local mapID = getbaseinfo(actor, 3)
local monobj = getmonbyuserid(mapID, monster_guid)
if isnotnull(monobj) and jhxbbgame.MonCanBuf(monobj) then
-- local x = getbaseinfo(actor, 4)
-- local y = getbaseinfo(actor, 5)
--monmission(monobj,tostring(x)..";",tostring(y)..";",0)
local damage = getbaseinfo(actor, 20)
--sendattackeff(monobj,107,damage,"*")
humanhp(monobj, "-", damage, 1, 0, actor, 1, 1)
--makeposion(monobj,0,3,1,1)
end
end
end
function qixinxin(actor,a)
local jhxbbgame = jhxbbgame
local vdata ={}
vdata.m = getbaseinfo(actor, 3)
vdata.selfx = getbaseinfo(actor, 4)
vdata.selfy = getbaseinfo(actor, 5)
local cnt = tonumber(getconst(actor, "<$ATTR[74]>"))
local plays = getobjectinmap(vdata.m ,vdata.selfx,vdata.selfy,4,2)
dotaunt(actor,5,999999)
--jhxbbgame.log(actor, "*七星问斩.",jhxbbgame.len(plays),cnt)
for i = 1, #plays, 1 do
local val = plays[i]
local ret = jhxbbgame.DecHP(val,cnt,101,nil,nil,actor)
sendattackeff(val,101, ret)
--sendattackeff(actor,113,ret)
--jhxbbgame.HintEff(actor, "八方炎龙.-100%="..ret)
end
end
function modaodao(actor)
local jhxbbgame = jhxbbgame
--SetVarInt(actor, "N$魔刀千刃CD", 0)
local vdata ={}
vdata.selfx = getbaseinfo(actor, 4)
vdata.selfy = getbaseinfo(actor, 5)
local cfg = {}
-- if isnotnull(Target) then
-- cfg = { getbaseinfo(Target, 2) }
-- end
local mapID = getbaseinfo(actor, 3)
local mons = getobjectinmap(mapID, vdata.selfx,vdata.selfy, 6, 2)
if #mons < 2 then return end
--local pw = tonumber(getconst(actor, "<$MAXDC>"))
--jhxbbgame.sendmsg(actor, "魔刀千刃:" .. pw)
dotaunt(actor, 8, 999999)
for i, mon in ipairs(mons or {}) do
local mid1 = tonumber(getbaseinfo(mon, 55))
if 2679 ~= mid1 then
local mid = getbaseinfo(mon, 2)
cfg[#cfg + 1] = mid
delaygoto(actor, 200 * i, "humanhpex," .. mid, 0)
--jhxbbgame.DecHP(mon, pw, nil, nil, nil, actor)
if #cfg >= 8 then
break
end
end
end
sendluamsg(actor, 0xeff, 0, 0, 23, tbl2json(cfg))
end
function attack(actor, Target, Hiter, MagicId)
local jhxbbgame = jhxbbgame
local vdata = { timecur = jhxbbgame.ticksec() }
local gb = getbaseinfo
--attack6(actor, Target, Hiter, MagicId)
--sendluamsg(actor, 0xeff, 10,
--0,60549,getbaseinfo(actor,2))
--jhxbbgame.log(Hiter,"*60546")
-- if ((jhxbbgame.attfundis or 0) == 1) then
-- return
-- end
if MagicId == 56 then
sendattackeff(actor, 114,1)
elseif MagicId == 66 then
sendattackeff(actor, 115,1)
elseif MagicId == 26 then
sendattackeff(actor, 118,1)
end
if isplayer(Target) then
jhxbbgame.SettimeSec(actor,"U27",5,os.time())
kuafusys.pking(Target)
kuafusys.pking(actor)
jhxbbgame.SetPKFlag(Target, 2)
jhxbbgame.SetPKFlag(Hiter, 3)
elseif ismon(Target) then
jhxbbgame.SettimeSec(actor,"U27",3,os.time())
svautoplay.attack(actor, vdata)
if checkkuafuserver() then
local monxx = jhxbbgame.CInt(actor, "<$ATTR[224]>")
if monxx > 0 then
jhxbbgame.DecHP(Target,monxx,107,
nil,nil,nil,nil,monxx+1)
sendattackeff(Target,107,monxx,actor)
--jhxbbgame.HintEff(actor, "坠天使11")
end
end
if jhxbbgame.MonCanBuf(Target) then
local mid1 = tonumber(gb(Target, 55))
if 2679 ~= mid1 then
makeposion(Target, 0, 3)
local cnt = 0
-- vdata.max_hp = gb(actor, 10) or 1
-- vdata.hp = gb(actor, 9)
-- vdata.m = gb(actor, 3)
-- vdata.selfx = gb(actor, 4)
-- vdata.selfy = gb(actor, 5)
--开始龙魂爆发状态下攻击时3概率触发七星问斩技能
--对5x5范围内的敌人造成100%的切割伤害。
local bb = (math.random(1,10000)<=300)
--jhxbbgame.HintEff(actor, tostring(jhxbbgame.GetRate).."七星问斩.-100%="..tostring(bb))
if true
and bb
and (VarInt(actor, "U251") > os.time())
then
delaygoto(actor, 100, "qixinxin" , 1)
jhxbbgame.mapSelfeff(actor,60518)
sendattackeff(actor,113, cnt,actor)
end
if getflagstatus(actor, 102) == 1
and (math.random(1,10000)<=900)
and not jhxbbgame.timeSecAt(actor, "N$魔刀千刃CD", vdata.timecur)
then
jhxbbgame.SettimeSec(actor,"N$魔刀千刃CD",10)
delaygoto(actor, 1, "modaodao" , 1)
--modaodao(actor,Target)
end
end
end
end
end
release_print(".zbcfg.load() = ")