Hello World
This commit is contained in:
commit
7d342af29f
124 files changed
+627642
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import * as s from './stages.mjs';
|
||||
const e=s.primitive;
|
||||
export const TABLES={
|
||||
GridFightItemConfigRow:['GameCore', 'GridFightItems'],
|
||||
GridFightEquipConfigRow:['GameCore', 'GridFightEquipment'],
|
||||
GridFightCraftConfigRow:['GameCore', 'GridFightCraftConfig'],
|
||||
GridFightEquipUpgradeConfigRow:['GameCore', 'GridFightEquipUpgrade'],
|
||||
GridFightConsumablesConfigRow:['GameCore', 'GridFightConsumables'],
|
||||
GridFightAugmentConfigRow:['GameCore', 'GridFightAugment'],
|
||||
GridFightPortalBuffConfigRow:['', 'GridFightPortalBuff'],
|
||||
GridFightSeasonAugmentConfigRow:['', 'GridFightSeasonAugment'],
|
||||
GridFightSeasonPortalConfigRow:['', 'GridFightSeasonPortal'],
|
||||
GridFightSeasonItemConfigRow:['', 'GridFightSeasonItem'],
|
||||
GridFightSeasonCraftConfigRow:['', 'GridFightSeasonCraft']
|
||||
};
|
||||
export function validate(t){
|
||||
for(const [row, link, target, key]of [['GridFightSeasonAugmentConfigRow', 'AugmentID', 'GridFightAugmentConfigRow', 'ID'], ['GridFightSeasonPortalConfigRow', 'PortalID', 'GridFightPortalBuffConfigRow', 'ID'], ['GridFightSeasonCraftConfigRow', 'CraftID', 'GridFightCraftConfigRow', 'CraftID']]){
|
||||
const known=new Set(t[target].map(i=>i[key]));
|
||||
if(t[row].some(i=>!known.has(i[link])))e.fail(`Unresolved season reference: ${row}.${link}`);
|
||||
}
|
||||
if(!e.subset(new Set(t.GridFightEquipConfigRow.map(i=>i.ID)), new Set(t.GridFightItemConfigRow.map(i=>i.ID))))e.fail('Equipment missing from native item catalog');
|
||||
}
|
||||
export function main(){
|
||||
const a=e.cli(['client', 'dump', 'identity', 'output']),
|
||||
ctx=s.extractionContext(a),
|
||||
[t, proofs]=s.collect(a, TABLES, ctx);
|
||||
validate(t);
|
||||
e.atomic_json(e.path.join(a.output, 'items.raw.json'), t);
|
||||
e.atomic_json(e.path.join(a.output, 'items-schemas.json'), ctx.codec.schemas);
|
||||
e.atomic_json(e.path.join(a.output, 'items-provenance.json'), {
|
||||
source:'installed-client-files',
|
||||
dump_sha256:ctx.identity.dump_sha256,
|
||||
game_assembly_sha256:ctx.identity.game_assembly_sha256,
|
||||
catalogues:ctx.assets.catalogues,
|
||||
tables:proofs,
|
||||
outputs:Object.fromEntries(['items.raw.json', 'items-schemas.json'].map(n=>[n, e.sha256_file(e.path.join(a.output, n))])),
|
||||
purpose:'Raw inventory, recipe and selection contracts; no effect implementation',
|
||||
unresolved:['Forge asset binding', 'Native choice generation and effect execution', 'Equipment transfer on merge/sell', 'Season item ConfigID semantics'],
|
||||
gameplay_verified:false
|
||||
});
|
||||
}
|
||||
e.runMain(import.meta.url, main);
|
||||
Reference in new issue
Block a user