local propertyTable = { CrystalID = 1,Color = 2,SoulID = 3,CrystalType = 4,CrystalGroup = 5,ColorUpConsume = 6,ColorUpNum = 7,ColorUp_Table = 8,ColorUpTarget = 9,Item_Table = 10, } local mainPropertyTable = { CrystalID = 1,PageIndex = 2,LineIndex = 3, } local primaryTable = { "CrystalID", } local DataPageEntry = {} local rawget = rawget local base = { __index = function(t, k) local propertyIndex = propertyTable[k] if propertyIndex then local mainPropertyIndex = mainPropertyTable[k] if mainPropertyIndex then return t[mainPropertyIndex] end local pageIndex = t[2] local pageData = DataPageEntry[pageIndex] if pageData == nil then pageData = require('Data/TreasureSoulCrystalData-page'..pageIndex) if DataSheetUtil then --skip fixedpoint process for data sheet checker DataSheetUtil.ProcessFixedPoint('TreasureSoulCrystalData', pageData) end DataPageEntry[pageIndex] = pageData end local lineIndex = t[3] local resultData = pageData[lineIndex] return resultData[propertyIndex] end end, __newindex = function() error('Attempt to modify read-only table') end } local dataTable = { setmetatable({911001,1,1},base), setmetatable({911002,1,2},base), setmetatable({911003,1,3},base), setmetatable({911004,1,4},base), setmetatable({911005,1,5},base), setmetatable({911006,1,6},base), setmetatable({921001,1,7},base), setmetatable({921002,1,8},base), setmetatable({921003,1,9},base), setmetatable({921004,1,10},base), setmetatable({921005,1,11},base), setmetatable({921006,1,12},base), setmetatable({931001,1,13},base), setmetatable({931002,1,14},base), setmetatable({931003,1,15},base), setmetatable({931004,1,16},base), setmetatable({931005,1,17},base), setmetatable({931006,1,18},base), setmetatable({941001,1,19},base), setmetatable({941002,1,20},base), setmetatable({941003,1,21},base), setmetatable({941004,1,22},base), setmetatable({941005,1,23},base), setmetatable({941006,1,24},base), setmetatable({951001,1,25},base), setmetatable({951002,1,26},base), setmetatable({951003,1,27},base), setmetatable({951004,1,28},base), setmetatable({951005,1,29},base), setmetatable({951006,1,30},base), setmetatable({912001,1,31},base), setmetatable({912002,1,32},base), setmetatable({912003,1,33},base), setmetatable({912004,1,34},base), setmetatable({912005,1,35},base), setmetatable({912006,1,36},base), setmetatable({922001,1,37},base), setmetatable({922002,1,38},base), setmetatable({922003,1,39},base), setmetatable({922004,1,40},base), setmetatable({922005,1,41},base), setmetatable({922006,1,42},base), setmetatable({932001,1,43},base), setmetatable({932002,1,44},base), setmetatable({932003,1,45},base), setmetatable({932004,1,46},base), setmetatable({932005,1,47},base), setmetatable({932006,1,48},base), setmetatable({942001,1,49},base), setmetatable({942002,1,50},base), setmetatable({942003,1,51},base), setmetatable({942004,1,52},base), setmetatable({942005,1,53},base), setmetatable({942006,1,54},base), setmetatable({952001,1,55},base), setmetatable({952002,1,56},base), setmetatable({952003,1,57},base), setmetatable({952004,1,58},base), setmetatable({952005,1,59},base), setmetatable({952006,1,60},base), } return { dataTable = dataTable, propertyTable = propertyTable, primaryTable = primaryTable, }