Back to Home

ESO Lua File v101044

ingame/antiquities/antiquitydata.lua

[◄ back to folders ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
ZO_Antiquity = ZO_Object:Subclass()
function ZO_Antiquity:New(...)
    local object = ZO_Object.New(self)
    object:Initialize(...)
    return object
end
function ZO_Antiquity:Initialize(antiquityId)
    -- Get Antiquity information.
    self.antiquityId = antiquityId
    self.name = GetAntiquityName(antiquityId)
    self.requiresLead = DoesAntiquityRequireLead(antiquityId)
    self.icon = GetAntiquityIcon(antiquityId)
    self.quality = GetAntiquityQuality(antiquityId)
    self.rewardId = GetAntiquityRewardId(antiquityId)
    self.isRepeatable = IsAntiquityRepeatable(antiquityId)
    self.zoneId = GetAntiquityZoneId(antiquityId)
    self.difficulty = GetAntiquityDifficulty(antiquityId)
    self.hasLead = false
    self.numDigSites = 0
    self.numRecovered = 0
    self.loreEntries = {}
    local fragmentName = nil
    -- Get Antiquity Set information.
    local antiquitySetId = GetAntiquitySetId(antiquityId)
    if antiquitySetId and antiquitySetId ~= 0 then
        local antiquitySetData = ANTIQUITY_DATA_MANAGER:GetOrCreateAntiquitySetData(antiquitySetId)
        self.antiquitySetData = antiquitySetData
        antiquitySetData:AddAntiquityData(self)
        fragmentName = self.name
    end
    -- Get Antiquity Category information.
    local antiquityCategoryId = GetAntiquityCategoryId(antiquityId)
    if antiquityCategoryId and antiquityCategoryId ~= ZO_SCRYABLE_ANTIQUITY_CATEGORY_ID then
        local antiquityCategoryData = ANTIQUITY_DATA_MANAGER:GetOrCreateAntiquityCategoryData(antiquityCategoryId)
        self.antiquityCategoryData = antiquityCategoryData
        antiquityCategoryData:AddAntiquityData(self)
    end
    -- Get Antiquity Lore entries.
    local numLoreEntries = GetNumAntiquityLoreEntries(antiquityId)
    for loreEntryIndex = 1, numLoreEntries do
        local loreDisplayName, loreDescription = GetAntiquityLoreEntry(antiquityId, loreEntryIndex)
        local loreEntryData =
        {
            antiquityId = antiquityId,
            loreEntryIndex = loreEntryIndex,
            displayName = loreDisplayName,
            description = loreDescription,
            fragmentName = fragmentName,
            unlocked = false
        }
        table.insert(self.loreEntries, loreEntryData)
    end
    self:Refresh()
end
function ZO_Antiquity:Refresh()
    local antiquityId = self:GetId()
    -- Get Antiquity Progress information.
    self.hasLead = DoesAntiquityHaveLead(antiquityId)
    -- Retain the New Lead state when refreshing an antiquity that still has a lead.
    self.hasNewLead = self.hasNewLead and self.hasLead
    self.leadExpirationTimeS = GetFrameTimeSeconds() + GetAntiquityLeadTimeRemainingSeconds(antiquityId)
    self.needsCombination = DoesAntiquityNeedCombination(antiquityId)
    self.numRecovered = GetNumAntiquitiesRecovered(antiquityId)
    self.numLoreEntriesAcquired = GetNumAntiquityLoreEntriesAcquired(antiquityId)
    self.difficulty = GetAntiquityDifficulty(antiquityId)
    -- Update the unlocked state of unlocked lore entries.
    local numUnlockedLoreEntries = self:GetNumUnlockedLoreEntries()
    for loreEntryIndex, loreEntryData in ipairs(self.loreEntries) do
        loreEntryData.unlocked = loreEntryIndex <= numUnlockedLoreEntries
    end
end
function ZO_Antiquity:RefreshDigSites()
    self.numDigSites = GetNumAntiquityDigSites(self:GetId())
    self.numGoalsAchieved = GetNumGoalsAchievedForAntiquity(self:GetId())
end
function ZO_Antiquity:OnDigSitesUpdated()
    self.lastNumGoalsAchieved = self.numGoalsAchieved
end
function ZO_Antiquity:OnLeadAcquired()
    self.hasNewLead = true
end
function ZO_Antiquity:ClearNewLead()
    if self.hasNewLead then
        self.hasNewLead = false
        ANTIQUITY_DATA_MANAGER:OnSingleAntiquityNewLeadCleared(self:GetId())
    end
end
function ZO_Antiquity:GetType()
    return ZO_ANTIQUITY_TYPE_INDIVIDUAL
end
function ZO_Antiquity:GetId()
    return self.antiquityId
end
function ZO_Antiquity:GetAntiquityCategoryData()
    return self.antiquityCategoryData
end
function ZO_Antiquity:GetAntiquitySetData()
    return self.antiquitySetData
end
function ZO_Antiquity:GetDifficulty()
    return self.difficulty
end
function ZO_Antiquity:GetRewardId()
    return self.rewardId
end
function ZO_Antiquity:HasReward()
    return self.rewardId ~= 0
end
function ZO_Antiquity:GetName()
    return self.name
end
function ZO_Antiquity:GetColorizedName()
    local colorDef = GetAntiquityQualityColor(self:GetQuality())
    return colorDef:Colorize(self:GetName())
end
function ZO_Antiquity:GetFormattedName()
    return ZO_CachedStrFormat(SI_ANTIQUITY_NAME_FORMATTER, self.name)
end
function ZO_Antiquity:GetColorizedFormattedName()
    local colorDef = GetAntiquityQualityColor(self:GetQuality())
    return colorDef:Colorize(self:GetFormattedName())
end
function ZO_Antiquity:GetIcon()
    return self.icon
end
function ZO_Antiquity:GetLeadTimeRemainingS()
    if self:HasLead() then
        return self.leadExpirationTimeS - GetFrameTimeSeconds()
    end
    return 0
end
function ZO_Antiquity:RequiresLead()
    return self.requiresLead
end
function ZO_Antiquity:HasLead()
    return self.hasLead
end
function ZO_Antiquity:HasNewLead()
    return self.hasNewLead
end
function ZO_Antiquity:MeetsLeadRequirements()
    return not self:RequiresLead() or self:HasLead()
end
function ZO_Antiquity:GetNumDigSites()
    return self.numDigSites
end
function ZO_Antiquity:HasDiscoveredDigSites()
    return self.numDigSites > 0
end
function ZO_Antiquity:HasNoDiscoveredDigSites()
    return not self:HasDiscoveredDigSites()
end
function ZO_Antiquity:GetLastNumGoalsAchieved()
    return self.lastNumGoalsAchieved or 0
end
function ZO_Antiquity:GetNumGoalsAchieved()
    return self.numGoalsAchieved
end
function ZO_Antiquity:GetTotalNumGoals()
end
function ZO_Antiquity:HasAchievedAllGoals()
    return self:GetNumGoalsAchieved() >= self:GetTotalNumGoals()
end
function ZO_Antiquity:IsInProgress()
    return self:GetNumGoalsAchieved() > 0
end
function ZO_Antiquity:IsInZone(zoneId)
    return self:GetZoneId() == 0 or self:GetZoneId() == zoneId
end
function ZO_Antiquity:IsInCurrentPlayerZone()
end
function ZO_Antiquity:GetNumRecovered()
    return self.numRecovered
end
function ZO_Antiquity:GetQuality()
    return self.quality
end
function ZO_Antiquity:HasRecovered()
    return self:GetNumRecovered() > 0
end
function ZO_Antiquity:HasDiscovered()
    return self:HasRecovered() or self:MeetsLeadRequirements()
end
function ZO_Antiquity:IsRepeatable()
    return self.isRepeatable
end
function ZO_Antiquity:IsVisible()
    local isVisible, errorStringId = DoesAntiquityPassVisibilityRequirements(self.antiquityId)
    return isVisible, errorStringId
end
function ZO_Antiquity:NeedsCombination()
    return self.needsCombination
end
function ZO_Antiquity:IsSetFragment()
    return self:GetAntiquitySetData() ~= nil
end
-- Antiquities and non-repeatable set fragments are complete once recovered; a repeatable set fragment is complete when it is ready for combination.
function ZO_Antiquity:IsComplete()
    if self:IsSetFragment() then
        return self:NeedsCombination() or (self:HasRecovered() and not self:IsRepeatable())
    else
        return self:HasRecovered()
    end
end
function ZO_Antiquity:MeetsAllScryingRequirements()
    return scryingResult == ANTIQUITY_SCRYING_RESULT_SUCCESS
end
function ZO_Antiquity:MeetsScryingSkillRequirements()
end
function ZO_Antiquity:CanScry()
    local scryResult = CanScryForAntiquity(self:GetId())
    if scryResult == ANTIQUITY_SCRYING_RESULT_SUCCESS then
        return true
    else
        return false, GetString("SI_ANTIQUITYSCRYINGRESULT", scryResult)
    end
end
function ZO_Antiquity:GetLoreEntries()
    return self.loreEntries
end
function ZO_Antiquity:GetLoreEntry(loreEntryIndex)
    return self.loreEntries[loreEntryIndex]
end
function ZO_Antiquity:GetNumLoreEntries()
    return #self.loreEntries
end
function ZO_Antiquity:GetNumUnlockedLoreEntries()
    return self.numLoreEntriesAcquired
end
function ZO_Antiquity:GetZoneId()
    return self.zoneId
end
function ZO_Antiquity:IsTracked()
    return GetTrackedAntiquityId() == self:GetId()
end
function ZO_Antiquity:CompareNameTo(antiquity)
    return self:GetName() < antiquity:GetName()
end
function ZO_Antiquity:CompareSetAndNameTo(antiquity)
    local setData = self:GetAntiquitySetData()
    local compareToSetData = antiquity:GetAntiquitySetData()
    if setData then
        if compareToSetData then
            if setData:GetId() ~= compareToSetData:GetId() then
                -- Order sets by set name.
                return setData:GetName() < compareToSetData:GetName()
            else
                -- Order each set's antiquities by antiquity name.
                return self:GetName() < antiquity:GetName()
            end
        else
            -- Order sets before non-sets.
            return true
        end
    elseif not compareToSetData then
        -- Order non-sets by antiquity name.
        return self:GetName() < antiquity:GetName()
    end
end
-- Filter Helpers
function ZO_Antiquity:IsScryable()
end
function ZO_Antiquity:IsScryableFromZone(zoneId)
    return not self:HasAchievedAllGoals() and self:MeetsLeadRequirements() and self:IsInZone(zoneId)
end
function ZO_Antiquity:IsActionable()
    return self:MeetsLeadRequirements()
end