144 lines
5.5 KiB
Plaintext
144 lines
5.5 KiB
Plaintext
ConditionUtil = {}
|
|
ConditionUtil.CostType = {
|
|
SkillPoint = 1,
|
|
AdventureSkillPoint = 2
|
|
}
|
|
|
|
function ConditionUtil.Init()
|
|
if(not ConditionUtil.inited) then
|
|
ConditionUtil.inited = true
|
|
ConditionUtil.SkillCheck = {
|
|
{checkParam = "allquestid",func = ConditionUtil.SkillCheckTask,params = ConditionUtil.GetQuestParams,fit = ZhString.SkillTip_FitQuest,notfit = ZhString.SkillTip_NeedFitQuest},
|
|
{checkParam = "joblv",func = ConditionUtil.SkillCheckJobLevel,params = ConditionUtil.GetJobLVParams,fit = ZhString.SkillTip_FitJobLV,notfit = ZhString.SkillTip_NeedFitJobLV},
|
|
{checkParam = "skillid",func = ConditionUtil.SkillCheckSkill,params = ConditionUtil.GetSkillParams,fit = ZhString.SkillTip_SkillLV,notfit = ZhString.SkillTip_NeedSkillLV},
|
|
{checkParam = "riskid",func = ConditionUtil.SkillCheckRisk,params = ConditionUtil.GetRiskParams,fit = ZhString.SkillTip_FitRisk,notfit = ZhString.SkillTip_NeedFitRisk},
|
|
}
|
|
end
|
|
end
|
|
|
|
--技能檢查是否職業等級足夠
|
|
function ConditionUtil.SkillCheckJobLevel(skilldata)
|
|
local myJobLevel = MyselfProxy.Instance:JobLevel()
|
|
return skilldata.Contidion.joblv <= myJobLevel
|
|
end
|
|
|
|
--技能檢查任務是否完成
|
|
function ConditionUtil.SkillCheckTask(quest)
|
|
return QuestProxy.Instance:isQuestComplete(quest)
|
|
end
|
|
|
|
--技能檢查是否已學習了某個技能
|
|
function ConditionUtil.SkillCheckSkill(skilldata)
|
|
if(FunctionSkillSimulate.Me().isIsSimulating) then
|
|
local simulateSkill = SimulateSkillProxy.Instance:GetSimulateSkill(math.floor(skilldata.Contidion.skillid/1000))
|
|
return simulateSkill~=nil and simulateSkill.learned and simulateSkill.id >= skilldata.Contidion.skillid
|
|
else
|
|
return SkillProxy.Instance:HasLearnedSkill(skilldata.Contidion.skillid)
|
|
end
|
|
end
|
|
|
|
--技能檢查冒險相關是否滿足
|
|
function ConditionUtil.SkillCheckRisk(skilldata)
|
|
local myAppelationID = MyselfProxy.Instance:GetCurManualAppellation().id
|
|
return myAppelationID>=skilldata.Contidion.riskid
|
|
end
|
|
|
|
function ConditionUtil.CondStrHelper(cond,config,param,showFittedCond,breakOnNotFit)
|
|
if(config.func(param)) then
|
|
if(showFittedCond and not breakOnNotFit) then
|
|
cond = cond..string.format(config.fit,config.params(param)).."\n"
|
|
end
|
|
else
|
|
cond = cond..string.format(config.notfit,config.params(param))
|
|
if(breakOnNotFit) then return cond,true end
|
|
cond = cond.."\n"
|
|
end
|
|
return cond
|
|
end
|
|
|
|
--costType:是消耗技能點呢,還是消耗冒險技能點
|
|
function ConditionUtil.GetSkillConditionStr(skilldata,showFittedCond,breakOnNotFit,costType)
|
|
ConditionUtil.Init()
|
|
costType = costType or ConditionUtil.CostType.SkillPoint
|
|
local cond = ""
|
|
local config
|
|
local condition
|
|
local needBreak
|
|
for i=1,#ConditionUtil.SkillCheck do
|
|
config = ConditionUtil.SkillCheck[i]
|
|
if(skilldata.Contidion) then
|
|
condition= skilldata.Contidion[config.checkParam]
|
|
end
|
|
if(condition) then
|
|
if(type(condition)=="table") then
|
|
for i=1,#condition do
|
|
cond,needBreak = ConditionUtil.CondStrHelper(cond,config,condition[i],showFittedCond,breakOnNotFit)
|
|
if(needBreak) then break end
|
|
end
|
|
else
|
|
cond,needBreak = ConditionUtil.CondStrHelper(cond,config,skilldata,showFittedCond,breakOnNotFit)
|
|
end
|
|
if(needBreak) then break end
|
|
end
|
|
end
|
|
if(not breakOnNotFit) then
|
|
if(costType==ConditionUtil.CostType.SkillPoint) then
|
|
-- if(MyselfProxy.Instance.myself.userData:Get(UDEnum.SKILL_POINT)>=skilldata.Cost) then
|
|
-- cond = cond..string.format(ZhString.SkillTip_SkillCost,skilldata.Cost).."\n"
|
|
-- else
|
|
-- cond = cond..string.format(ZhString.SkillTip_NeedSkillCost,skilldata.Cost).."\n"
|
|
-- end
|
|
else
|
|
if(AdventureDataProxy.Instance:getSkillPoint()>=skilldata.Cost) then
|
|
cond = cond..string.format(ZhString.AdventureSkill_CostAdventureSkillPoint1,skilldata.Cost).."\n"
|
|
else
|
|
cond = cond..string.format(ZhString.AdventureSkill_NeedCostAdventureSkillPoint,skilldata.Cost).."\n"
|
|
end
|
|
end
|
|
-- local profess = skilldata.Class
|
|
-- if(profess) then
|
|
-- local pTree = ProfessionProxy.Instance:GetProfessionTreeByClassId(profess)
|
|
-- if(pTree and pTree.transferRoot.id ~= profess) then
|
|
-- --不是初心者或者一轉職業
|
|
-- local pointsEnough = false
|
|
-- local previousP = ProfessionProxy.Instance:GetPreviousProfess(profess)
|
|
-- if(FunctionSkillSimulate.Me().isIsSimulating) then
|
|
-- --模擬中
|
|
-- local simulateProfess = SimulateSkillProxy.Instance:GetSimulateProfess(profess)
|
|
-- if(simulateProfess) then
|
|
-- pointsEnough = simulateProfess.active
|
|
-- end
|
|
-- else
|
|
-- pointsEnough = SkillProxy.Instance:HasEnoughSkillPoint(previousP.id)
|
|
-- end
|
|
-- if(pointsEnough) then
|
|
-- cond = cond..string.format(ZhString.SkillTip_PreviousProfessSkillPoints,previousP.data.NameZh,SkillProxy.UNLOCKPROSKILLPOINTS)
|
|
-- else
|
|
-- cond = cond..string.format(ZhString.SkillTip_NeedPreviousProfessSkillPoints,previousP.data.NameZh,SkillProxy.UNLOCKPROSKILLPOINTS)
|
|
-- end
|
|
-- end
|
|
-- end
|
|
end
|
|
return cond
|
|
end
|
|
|
|
function ConditionUtil.GetQuestParams(quest)
|
|
return QuestProxy.Instance:getStaticDataById(quest).Name
|
|
end
|
|
|
|
function ConditionUtil.GetJobLVParams(skilldata)
|
|
return Table_Class[skilldata.Class].NameZh,Occupation.GetFixedJobLevel(skilldata.Contidion.joblv,skilldata.Class)
|
|
end
|
|
|
|
function ConditionUtil.GetSkillParams(skilldata)
|
|
local skill = Table_Skill[skilldata.Contidion.skillid]
|
|
return Table_Class[skill.Class].NameZh,skill.NameZh,skill.Level
|
|
end
|
|
|
|
function ConditionUtil.GetRiskParams(skilldata)
|
|
local appellation = Table_Appellation[skilldata.Contidion.riskid]
|
|
if(appellation) then
|
|
return appellation.Name
|
|
end
|
|
return "NULL"
|
|
end |