@@ -419,6 +419,26 @@ private static void ValidateOption(PmpStandardOptionJson op)
419
419
{
420
420
var root = imcGroup . GetRoot ( ) ;
421
421
var metaData = await GetImportMetadata ( imported , root , tx ) ;
422
+
423
+ // If the OnlyAttribute flag is set on the group, fill in the fields that should be ignored from the current values instead
424
+ // ( The source can be null, in the case that we're going to be synthesizing new variants from thin air )
425
+ void CopyNonMaskImcValues ( XivImc xivImc , XivImc src )
426
+ {
427
+ xivImc . Animation = src ? . Animation ?? 0 ;
428
+ xivImc . SoundId = src ? . SoundId ?? 0 ;
429
+ xivImc . MaterialSet = src ? . MaterialSet ?? 0 ;
430
+ xivImc . Decal = src ? . Decal ?? 0 ;
431
+ xivImc . Vfx = src ? . Vfx ?? 0 ;
432
+ } ;
433
+
434
+ if ( imcGroup . OnlyAttributes )
435
+ {
436
+ XivImc copyFromEntry = null ;
437
+ if ( imcGroup . Identifier . Variant < metaData . ImcEntries . Count )
438
+ copyFromEntry = metaData . ImcEntries [ ( int ) imcGroup . Identifier . Variant ] ;
439
+ CopyNonMaskImcValues ( xivImc , copyFromEntry ) ;
440
+ }
441
+
422
442
if ( metaData . ImcEntries . Count <= imcGroup . Identifier . Variant )
423
443
{
424
444
while ( metaData . ImcEntries . Count <= imcGroup . Identifier . Variant )
@@ -435,7 +455,10 @@ private static void ValidateOption(PmpStandardOptionJson op)
435
455
{
436
456
for ( int i = 0 ; i < metaData . ImcEntries . Count ; i ++ )
437
457
{
438
- metaData . ImcEntries [ i ] = ( XivImc ) xivImc . Clone ( ) ;
458
+ var variantXivImc = ( XivImc ) xivImc . Clone ( ) ;
459
+ if ( imcGroup . OnlyAttributes )
460
+ CopyNonMaskImcValues ( variantXivImc , metaData . ImcEntries [ i ] ) ;
461
+ metaData . ImcEntries [ i ] = variantXivImc ;
439
462
}
440
463
}
441
464
0 commit comments