Add overlay extraction for multi-expansion asset deduplication

Extracts each expansion's assets as a CRC-compared overlay against a
base manifest, storing only files that differ. Auto-detects overlay mode
when a base manifest already exists. Adds --as-overlay, --full-base
flags and manifest merge for partial extractions.
This commit is contained in:
Kelsi 2026-02-14 03:09:17 -08:00
parent 0b5069ebd4
commit b01b198150
37 changed files with 139303 additions and 73847 deletions

View file

@ -64,7 +64,7 @@
"DNR)","STATE_READYRIFLE","HOT_WAVE(DNR)",8192,"NESHOT_NONE","",0
"ONESHOT_KISS","STATE_WORK_NOSHEATHE_MINING","TATE_DANCE",8192,"NESHOT_NONE","",3782
"NESHOT_KISS","STATE_WORK_NOSHEATHE_CHOPWOOD","TATE_DANCE",8192,"NESHOT_NONE","",3202
"_CRY","zzOLDONESHOT_LIFTOFF","UDE(DNR)",0,"","",0
"_CRY","STATE_APPLAUD","",24576,"NESHOT_NONE","",0
"CRY","ONESHOT_LIFTOFF","UDE(DNR)",0,"","",0
"","ONESHOT_YES(DNR)","ESHOT_RUDE(DNR)",0,"","",0
"ONESHOT_BEG","ONESHOT_NO(DNR)","SHOT_RUDE(DNR)",0,"","",0
@ -77,3 +77,49 @@
"E_STAND","ONESHOT_SUBMERGE","ONESHOT_ROAR(DNR)",0,"","",0
"_STAND","STATE_READY2H","DNR)",24576,"NESHOT_NONE","",0
"STAND","STATE_READYBOW","R)",8192,"NESHOT_NONE","",0
"TAND","ONESHOT_MOUNTSPECIAL","MATION(DNR)",0,"","",0
"AND","STATE_TALK",")",24576,"NESHOT_NONE","",0
"ND","STATE_FISHING","",24577,"NESHOT_NONE","",0
"D","ONESHOT_FISHING","T",20484,"","",3354
"","ONESHOT_LOOT","T_WAVE(DNR)",17412,"","",0
"STATE_READYUNARMED","STATE_WHIRLWIND","SHOT_EAT",0,"NESHOT_NONE","",0
"TATE_READYUNARMED","STATE_DROWNED","AT",16384,"NESHOT_NONE","",0
"ATE_READYUNARMED","STATE_HOLD_BOW","SHOT_QUESTION",0,"NESHOT_NONE","",0
"TE_READYUNARMED","STATE_HOLD_RIFLE","HOT_QUESTION",16384,"NESHOT_NONE","",0
"E_READYUNARMED","STATE_HOLD_THROWN","OT_QUESTION",16384,"","",0
"_READYUNARMED","ONESHOT_DROWN","EAT",16384,"","",0
"READYUNARMED","ONESHOT_STOMP","T",16384,"","",0
"EADYUNARMED","ONESHOT_ATTACKOFF","T_EXCLAMATION(DNR)",17408,"","",0
"ADYUNARMED","ONESHOT_ATTACKOFFPIERCE","_EXCLAMATION(DNR)",17408,"","",0
"DYUNARMED","STATE_ROAR","R(DNR)",0,"NESHOT_NONE","",0
"YUNARMED","STATE_LAUGH","CHEER(DNR)",0,"NESHOT_NONE","",0
"UNARMED","ONESHOT_CREATURE_SPECIAL","_EAT",1024,"","",0
"ED","STATE_CANNIBALIZE","ESHOT_ROAR(DNR)",16384,"NESHOT_NONE","",0
"","STATE_DANCESPECIAL","AR(DNR)",0,"NESHOT_NONE","",0
"STATE_WORK","ONESHOT_DANCESPECIAL","AR(DNR)",0,"","",0
"TATE_WORK","ONESHOT_CUSTOMSPELL01","(DNR)",0,"","",0
"ATE_WORK","ONESHOT_CUSTOMSPELL02","DNR)",0,"","",0
"TE_WORK","ONESHOT_CUSTOMSPELL03","NR)",0,"","",0
"E_WORK","ONESHOT_CUSTOMSPELL04","R)",0,"","",0
"_WORK","ONESHOT_CUSTOMSPELL05",")",0,"","",0
"WORK","ONESHOT_CUSTOMSPELL06","",0,"","",0
"ORK","ONESHOT_CUSTOMSPELL07","ONESHOT_KNEEL",0,"","",0
"RK","ONESHOT_CUSTOMSPELL08","NESHOT_KNEEL",0,"","",0
"K","ONESHOT_CUSTOMSPELL09","ESHOT_KNEEL",0,"","",0
"","ONESHOT_CUSTOMSPELL10","SHOT_KNEEL",0,"","",0
"STATE_POINT(DNR)","STATE_EXCLAIM","ESHOT_CHEER(DNR)",4104,"NESHOT_NONE","",0
"TATE_POINT(DNR)","STATE_DANCE_CUSTOM","",28801,"NESHOT_NONE","",0
"TE_POINT(DNR)","STATE_SIT_CHAIR_MED","R)",0,"NESHOT_NONE","",0
"E_POINT(DNR)","STATE_CUSTOM_SPELL_01","(DNR)",0,"NESHOT_NONE","",0
"_POINT(DNR)","STATE_CUSTOM_SPELL_02","DNR)",0,"NESHOT_NONE","",0
"POINT(DNR)","STATE_EAT","",0,"NESHOT_NONE","",4294967295
"OINT(DNR)","STATE_CUSTOM_SPELL_04","R)",0,"NESHOT_NONE","",0
"INT(DNR)","STATE_CUSTOM_SPELL_03","(DNR)",0,"NESHOT_NONE","",0
"NT(DNR)","STATE_CUSTOM_SPELL_05","NR)",0,"NESHOT_NONE","",0
"T(DNR)","STATE_SPELLEFFECT_HOLD","GH",0,"NESHOT_NONE","",0
"(DNR)","STATE_EAT_NO_SHEATHE",")",20996,"NESHOT_NONE","",0
"DNR)","STATE_MOUNT","CLAMATION(DNR)",56,"ONESHOT_NONE","",0
"NR)","STATE_READY2HL","NR)",0,"NESHOT_NONE","",0
"R)","STATE_SIT_CHAIR_HIGH",")",0,"NESHOT_NONE","",0
")","STATE_COWER","T_KNEEL",0,"NESHOT_NONE","",0
"","STATE_READYJOUST","ONESHOT_ATTACKUNARMED",0,"NESHOT_NONE","",0

Can't render this file because it has a wrong number of fields in line 2.