101 lignes
3,2 Kio
Lua
101 lignes
3,2 Kio
Lua
QuestHelper_File["collect_upgrade.lua"] = "4.0.1.$svnversion$"
|
|
QuestHelper_Loadtime["collect_upgrade.lua"] = GetTime()
|
|
|
|
function QH_Collector_Upgrade(chunk)
|
|
QuestHelper: Assert(not chunk.compressed)
|
|
|
|
if chunk.version == 1 then
|
|
-- We basically just want to clobber all our old route data, it's not worth storing - it's all good data, it's just that we don't want to preserve relics of the old location system.
|
|
chunk.traveled = nil
|
|
|
|
chunk.version = 2
|
|
end
|
|
|
|
if chunk.version == 2 then
|
|
-- Originally I split the zones based on locale. Later I just split everything based on locale. Discarding old data rather than doing the gymnastics needed to preserve it.
|
|
-- This is turning into a routine. :D
|
|
chunk.zone = nil
|
|
|
|
chunk.version = 3
|
|
end
|
|
|
|
if chunk.version == 3 then
|
|
-- Screwed up the item collection code in instances. Obliterate old data, try again.
|
|
if chunk.item then
|
|
for id, dat in pairs(chunk.item) do
|
|
dat.equip_no = nil
|
|
dat.equip_yes = nil
|
|
end
|
|
end
|
|
|
|
chunk.version = 4
|
|
end
|
|
|
|
if chunk.version == 4 then
|
|
-- Munged the shops rather badly. Whoopsydaisy.
|
|
if chunk.monster then
|
|
local nv = {}
|
|
for id, dat in pairs(chunk.monster) do
|
|
if type(dat) == "table" then
|
|
nv[id] = dat
|
|
end
|
|
end
|
|
chunk.monster = nv
|
|
end
|
|
|
|
chunk.version = 5
|
|
end
|
|
|
|
if chunk.version == 5 then
|
|
-- Horrible things involving objects. Let's preserve what we can.
|
|
if chunk.object then
|
|
local new_obj = {}
|
|
for k, v in pairs(chunk.object) do
|
|
local keep = false
|
|
for tk, _ in pairs(v) do
|
|
if type(tk) == "string" and tk:match("[a-z]+_loot") then
|
|
keep = true
|
|
break
|
|
end
|
|
end
|
|
|
|
if keep then new_obj[k] = v end
|
|
end
|
|
|
|
chunk.object = new_obj
|
|
end
|
|
|
|
chunk.version = 6
|
|
end
|
|
|
|
if chunk.version == 6 then
|
|
-- I just screwed this up really
|
|
-- Note that a few versions back (I'll have to check which) the standard bolus format changed. Since I can't actually *fix* it, I'm just ignoring it, but there's an implicit format change in there. I'll catch it and deal with it in the processing system.
|
|
chunk.warp = nil
|
|
chunk.routing_dump = nil -- and this shouldn't have been getting dumped anyway
|
|
|
|
chunk.version = 7
|
|
end
|
|
|
|
if chunk.version == 7 then
|
|
-- botched the achievement code, fixed the achievement code (maybe?)
|
|
chunk.achievement = nil
|
|
|
|
chunk.version = 8
|
|
end
|
|
end
|
|
|
|
function QH_Collector_UpgradeAll(Collector)
|
|
-- So, I screwed up the compression code, and there's no way to know what version was compressed . . . except that we thankfully didn't change the version number on that change. Any untagged compression will therefore be the version number that this was loaded with.
|
|
for _, v in pairs(Collector) do
|
|
--[[ QuestHelper:Assert(type(v) == "table") ]]
|
|
if not v.version then
|
|
QuestHelper: Assert(QuestHelper_Collector_Version) -- This is going to fail somehow. I just know it. Seriously, this right here will be proof that, today, the gods hate me.
|
|
v.version = QuestHelper_Collector_Version
|
|
end
|
|
|
|
if not v.compressed then
|
|
QH_Collector_Upgrade(v)
|
|
end
|
|
end
|
|
end
|