Files
StellaSora_DataLua/lua/game/adventure/achievementcheck/playerrelevant.lua
T
SL1900 5e0d58cfad Initial version - 1.2.0.60
EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
2025-12-03 01:00:00 +09:00

71 lines
2.4 KiB
Lua

local PlayerRelevant = {}
function PlayerRelevant.CritCount(mapAchievementData, AchievementDataDic)
local ret = 0
for nCharId, nCritCount in ipairs(AchievementDataDic.CritCountData) do
if #mapAchievementData.ClientCompleteParams1 == 0 or 0 < table.indexof(mapAchievementData.ClientCompleteParams1, nCharId) then
ret = ret + nCritCount
end
end
return ret
end
function PlayerRelevant.CastSkillTypeCount(mapAchievementData, AchievementDataDic)
local nCount = 0
local tbTarget = mapAchievementData.ClientCompleteParams1
for nSkillId, nCastCount in pairs(AchievementDataDic.CastSkillData) do
local mapSkill = ConfigTable.GetData("Skill", nSkillId)
if mapSkill ~= nil and 0 < table.indexof(tbTarget, mapSkill.Type) then
nCount = nCount + nCastCount
end
end
return nCount
end
function PlayerRelevant.CastSkillCount(mapAchievementData, AchievementDataDic)
local nCount = 0
local tbTarget = mapAchievementData.ClientCompleteParams1
for nSkillId, nCastCount in pairs(AchievementDataDic.CastSkillData) do
local mapSkill = ConfigTable.GetData("Skill", nSkillId)
if mapSkill ~= nil and 0 < table.indexof(tbTarget, mapSkill.Id) then
nCount = nCount + nCastCount
end
end
return nCount
end
function PlayerRelevant.ExtremDodgeCount(mapAchievementData, AchievementDataDic)
local ret = 0
for nCharId, nPrefectDodgeCount in ipairs(AchievementDataDic.PrefectDodgeData) do
if #mapAchievementData.ClientCompleteParams1 == 0 or 0 < table.indexof(mapAchievementData.ClientCompleteParams1, nCharId) then
ret = ret + nPrefectDodgeCount
end
end
return ret
end
function PlayerRelevant.TriggerTagElement(mapAchievementData, AchievementDataDic)
local nCount = 0
local tbTarget = mapAchievementData.ClientCompleteParams1
for nMark, nTriggerCount in pairs(AchievementDataDic.MarkTriggerData) do
if 0 < table.indexof(tbTarget, nMark) then
nCount = nCount + nTriggerCount
end
end
return nCount
end
function PlayerRelevant.OneHitDamage(mapAchievementData, AchievementDataDic)
local nTarget = mapAchievementData.ClientCompleteParams1[1]
if nTarget <= AchievementDataDic.MaxDamageValue then
return 1
end
return 0
end
function PlayerRelevant.ClearLevelWithHPBelow(mapAchievementData, AchievementDataDic, bSuccess)
if not bSuccess then
return 0
end
local nTarget = mapAchievementData.ClientCompleteParams1[1]
local nCurPrec = AchievementDataDic.MainActorHpPrec * 100
if nTarget >= nCurPrec then
return 1
end
return 0
end
return PlayerRelevant