This example only fixes the .ini file without removing any previous changes the fix may have made. If you want to
first undo previous changes the fix may have done, see
Remove a Fix from a .ini File Given the File Path
1[Constants] 2global persist $swapvar=0 3global persist $swapvarn=0 4global persist $swapmain=0 5global persist $swapoffice=0 6global persist $swapglasses=0 7 8[KeyVar] 9condition=$active == 110key=VK_DOWN11type=cycle12$swapvar=0,1,21314[KeyIntoTheHole]15condition=$active == 116key=VK_RIGHT17type=cycle18$swapvarn=0,11920; The top part is not really important, so I not going to finish21; typing all the key swaps... 😋22;23; The bottom part is what the fix actually cares about2425[TextureOverrideRaidenShogunBlend]26run=CommandListRaidenShogunBlend27handling=skip28draw=21916,02930[CommandListRaidenShogunBlend]31if $swapmain== 032if $swapvar== 0 && $swapvarn == 033vb1=ResourceRaidenShogunBlend.034else35vb1=ResourceEiBlendsHerBlenderInsteadOfHerSmoothie36endif37else if $swapmain== 138run=SubSubTextureOverride39endif4041[SubSubTextureOverride]42if $swapoffice== 0 && $swapglasses == 043vb1=GIMINeedsResourcesToAllStartWithResource44endif4546[ResourceRaidenShogunBlend.0]47type=Buffer48stride=3249filename=..\..\..\../../../../../../2-BunnyRaidenShogun\RaidenShogunBlend.buf5051[ResourceEiBlendsHerBlenderInsteadOfHerSmoothie]52type=Buffer53stride=3254if $swapmain== 155filename=M:\AnotherDrive\CuteLittleEi.buf56else57run=RaidenPuppetCommandResource58endif5960[GIMINeedsResourcesToAllStartWithResource]61type=Buffer62stride=3263filename=./../AAA/BBBB\CCCCCC\DDDDDRemapBlend.buf6465[RaidenPuppetCommandResource]66type=Buffer67stride=3268filename=./Dont/Use\If/Statements\Or/SubCommands\In/Resource\Sections.buf
1; --------------- Raiden Remap --------------- 2; Raiden remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Raiden mods pls give credit for "Albert Gold#2696" and "Nhok0169" 3; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support 4 5; ***** RaidenBoss ***** 6[TextureOverrideRaidenShogunRaidenBossRemapBlend] 7run=CommandListRaidenShogunRaidenBossRemapBlend 8handling=skip 9draw=21916,01011[CommandListRaidenShogunRaidenBossRemapBlend]12if $swapmain== 013if $swapvar== 0 && $swapvarn == 014vb1=ResourceRaidenShogunRaidenBossRemapBlend.015else16vb1=ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie17endif18else if $swapmain== 119run=SubSubTextureOverrideRaidenBossRemapBlend20endif2122[SubSubTextureOverrideRaidenBossRemapBlend]23if $swapoffice== 0 && $swapglasses == 024vb1=ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend25endif2627[ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend]28type=Buffer29stride=3230filename=../AAA/BBBB/CCCCCC/DDDDDRemapRaidenBossRemapBlend.buf3132[ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie]33type=Buffer34stride=3235if $swapmain== 136filename=M:/AnotherDrive/CuteLittleEiRaidenBossRemapBlend.buf37else38run=ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend39endif4041[ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend]42type=Buffer43stride=3244filename=Dont/Use/If/Statements/Or/SubCommands/In/Resource/SectionsRaidenBossRemapBlend.buf4546[ResourceRaidenShogunRaidenBossRemapBlend.0]47type=Buffer48stride=3249filename=../../../../../../../../../2-BunnyRaidenShogun/RaidenShogunRaidenBossRemapBlend.buf5051; **********************5253; --------------------------------------------
Remove a Fix from a .ini File Given the File Path¶
1[Constants] 2global persist $swapvar=0 3global persist $swapvarn=0 4global persist $swapmain=0 5global persist $swapoffice=0 6global persist $swapglasses=0 7 8[KeyVar] 9condition=$active == 110key=VK_DOWN11type=cycle12$swapvar=0,1,21314[KeyIntoTheHole]15condition=$active == 116key=VK_RIGHT17type=cycle18$swapvarn=0,11920; The top part is not really important, so I not going to finish21; typing all the key swaps... 😋22;23; The bottom part is what the fix actually cares about2425[TextureOverrideRaidenShogunBlend]26run=CommandListRaidenShogunBlend27handling=skip28draw=21916,02930[CommandListRaidenShogunBlend]31if $swapmain== 032if $swapvar== 0 && $swapvarn == 033vb1=ResourceRaidenShogunBlend.034else35vb1=ResourceEiBlendsHerBlenderInsteadOfHerSmoothie36endif37else if $swapmain== 138run=SubSubTextureOverride39endif4041[SubSubTextureOverride]42if $swapoffice== 0 && $swapglasses == 043vb1=GIMINeedsResourcesToAllStartWithResource44endif4546[ResourceRaidenShogunBlend.0]47type=Buffer48stride=3249filename=..\..\..\../../../../../../2-BunnyRaidenShogun\RaidenShogunBlend.buf5051[ResourceEiBlendsHerBlenderInsteadOfHerSmoothie]52type=Buffer53stride=3254if $swapmain== 155filename=M:\AnotherDrive\CuteLittleEi.buf56else57run=RaidenPuppetCommandResource58endif5960[GIMINeedsResourcesToAllStartWithResource]61type=Buffer62stride=3263filename=./../AAA/BBBB\CCCCCC\DDDDDRemapBlend.buf6465[RaidenPuppetCommandResource]66type=Buffer67stride=3268filename=./Dont/Use\If/Statements\Or/SubCommands\In/Resource\Sections.buf6970; ------ some lines originally generated from the fix ---------
Remove a Fix from a .ini File Given Only a String Containing the Content of the File¶
Input
1showWackyRaidenIniTxtWithFix=r""" 2[Constants] 3global persist $swapvar = 0 4global persist $swapvarn = 0 5global persist $swapmain = 0 6global persist $swapoffice = 0 7global persist $swapglasses = 0 8 9[KeyVar] 10condition = $active == 1 11key = VK_DOWN 12type = cycle 13$swapvar = 0,1,2 14 15[KeyIntoTheHole] 16condition = $active == 1 17key = VK_RIGHT 18type = cycle 19$swapvarn = 0,1 20 21; The top part is not really important, so I not going to finish 22; typing all the key swaps... 😋 23; 24; The bottom part is what the fix actually cares about 25 26[TextureOverrideRaidenShogunBlend] 27run = CommandListRaidenShogunBlend 28handling = skip 29draw = 21916,0 30 31[CommandListRaidenShogunBlend] 32if $swapmain == 0 33 if $swapvar == 0 && $swapvarn == 0 34 vb1 = ResourceRaidenShogunBlend.0 35 else 36 vb1 = ResourceEiBlendsHerBlenderInsteadOfHerSmoothie 37 endif 38else if $swapmain == 1 39 run = SubSubTextureOverride 40endif 41 42[SubSubTextureOverride] 43if $swapoffice == 0 && $swapglasses == 0 44 vb1 = GIMINeedsResourcesToAllStartWithResource 45endif 46 47[ResourceRaidenShogunBlend.0] 48type = Buffer 49stride = 32 50filename = ..\..\..\../../../../../../2-BunnyRaidenShogun\RaidenShogunBlend.buf 51 52[ResourceEiBlendsHerBlenderInsteadOfHerSmoothie] 53type = Buffer 54stride = 32 55if $swapmain == 1 56 filename = M:\AnotherDrive\CuteLittleEi.buf 57else 58 run = RaidenPuppetCommandResource 59endif 60 61[GIMINeedsResourcesToAllStartWithResource] 62type = Buffer 63stride = 32 64filename = ./../AAA/BBBB\CCCCCC\DDDDDRemapBlend.buf 65 66[RaidenPuppetCommandResource] 67type = Buffer 68stride = 32 69filename = ./Dont/Use\If/Statements\Or/SubCommands\In/Resource\Sections.buf 70 71; ------ some lines originally generated from the fix --------- 72 73[ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie] 74type = Buffer 75stride = 32 76if $swapmain == 1 77 filename = M:\AnotherDrive\CuteLittleEiRemapBlend.buf 78else 79 run = RaidenPuppetCommandResourceRemapBlend 80endif 81 82[ResourceRaidenShogunRemapBlend.0] 83type = Buffer 84stride = 32 85filename = ..\..\..\..\..\..\..\..\..\2-BunnyRaidenShogun\RaidenShogunRemapBlend.buf 86 87[RaidenPuppetCommandResourceRemapBlend] 88type = Buffer 89stride = 32 90filename = Dont\Use\If\Statements\Or\SubCommands\In\Resource\SectionsRemapBlend.buf 91 92; -------------------------------------------------------------- 93 94 95; --------------- Raiden Boss Fix ----------------- 96; Raiden boss fixed by NK#1321 if you used it for fix your raiden pls give credit for "Nhok0169" 97; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 and Albert Gold#2696 for support 98 99[TextureOverrideRaidenShogunRemapBlend]100run = CommandListRaidenShogunRemapBlend101handling = skip102draw = 21916,0103104[CommandListRaidenShogunRemapBlend]105if $swapmain == 0106 if $swapvar == 0 && $swapvarn == 0107 vb1 = ResourceRaidenShogunRemapBlend.0108 else109 vb1 = ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie110 endif111else if $swapmain == 1112 run = SubSubTextureOverrideRemapBlend113endif114115[SubSubTextureOverrideRemapBlend]116if $swapoffice == 0 && $swapglasses == 0117 vb1 = ResourceGIMINeedsResourcesToAllStartWithResourceRemapBlend118endif119120121[GIMINeedsResourcesToAllStartWithResourceRemapBlend]122type = Buffer123stride = 32124filename = ..\AAA\BBBB\CCCCCC\DDDDDRemapRemapBlend.buf125126[ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie]127type = Buffer128stride = 32129if $swapmain == 1130 filename = M:\AnotherDrive\CuteLittleEiRemapBlend.buf131else132 run = RaidenPuppetCommandResourceRemapBlend133endif134135[ResourceRaidenShogunRemapBlend.0]136type = Buffer137stride = 32138filename = ..\..\..\..\..\..\..\..\..\2-BunnyRaidenShogun\RaidenShogunRemapBlend.buf139140[RaidenPuppetCommandResourceRemapBlend]141type = Buffer142stride = 32143filename = Dont\Use\If\Statements\Or\SubCommands\In\Resource\SectionsRemapBlend.buf144145146; -------------------------------------------------147"""
1[Constants] 2global persist $swapvar=0 3global persist $swapvarn=0 4global persist $swapmain=0 5global persist $swapoffice=0 6global persist $swapglasses=0 7 8[KeyVar] 9condition=$active == 110key=VK_DOWN11type=cycle12$swapvar=0,1,21314[KeyIntoTheHole]15condition=$active == 116key=VK_RIGHT17type=cycle18$swapvarn=0,11920; The top part is not really important, so I not going to finish21; typing all the key swaps... 😋22;23; The bottom part is what the fix actually cares about2425[TextureOverrideRaidenShogunBlend]26run=CommandListRaidenShogunBlend27handling=skip28draw=21916,02930[CommandListRaidenShogunBlend]31if $swapmain== 032if $swapvar== 0 && $swapvarn == 033vb1=ResourceRaidenShogunBlend.034else35vb1=ResourceEiBlendsHerBlenderInsteadOfHerSmoothie36endif37else if $swapmain== 138run=SubSubTextureOverride39endif4041[SubSubTextureOverride]42if $swapoffice== 0 && $swapglasses == 043vb1=GIMINeedsResourcesToAllStartWithResource44endif4546[ResourceRaidenShogunBlend.0]47type=Buffer48stride=3249filename=..\..\..\../../../../../../2-BunnyRaidenShogun\RaidenShogunBlend.buf5051[ResourceEiBlendsHerBlenderInsteadOfHerSmoothie]52type=Buffer53stride=3254if $swapmain== 155filename=M:\AnotherDrive\CuteLittleEi.buf56else57run=RaidenPuppetCommandResource58endif5960[GIMINeedsResourcesToAllStartWithResource]61type=Buffer62stride=3263filename=./../AAA/BBBB\CCCCCC\DDDDDRemapBlend.buf6465[RaidenPuppetCommandResource]66type=Buffer67stride=3268filename=./Dont/Use\If/Statements\Or/SubCommands\In/Resource\Sections.buf6970; ------ some lines originally generated from the fix ---------
1[Constants] 2global persist $swapvar=0 3global persist $swapvarn=0 4global persist $swapmain=0 5global persist $swapoffice=0 6global persist $swapglasses=0 7 8[KeyVar] 9condition=$active == 1 10key=VK_DOWN 11type=cycle 12$swapvar=0,1,2 13 14[KeyIntoTheHole] 15condition=$active == 1 16key=VK_RIGHT 17type=cycle 18$swapvarn=0,1 19 20; The top part is not really important, so I not going to finish 21; typing all the key swaps... 😋 22; 23; The bottom part is what the fix actually cares about 24 25[TextureOverrideRaidenShogunBlend] 26run=CommandListRaidenShogunBlend 27handling=skip 28draw=21916,0 29 30[CommandListRaidenShogunBlend] 31if $swapmain== 0 32if $swapvar== 0 && $swapvarn == 0 33vb1=ResourceRaidenShogunBlend.0 34else 35vb1=ResourceEiBlendsHerBlenderInsteadOfHerSmoothie 36endif 37else if $swapmain== 1 38run=SubSubTextureOverride 39endif 40 41[SubSubTextureOverride] 42if $swapoffice== 0 && $swapglasses == 0 43vb1=GIMINeedsResourcesToAllStartWithResource 44endif 45 46[ResourceRaidenShogunBlend.0] 47type=Buffer 48stride=32 49filename=..\..\..\../../../../../../2-BunnyRaidenShogun\RaidenShogunBlend.buf 50 51[ResourceEiBlendsHerBlenderInsteadOfHerSmoothie] 52type=Buffer 53stride=32 54if $swapmain== 1 55filename=M:\AnotherDrive\CuteLittleEi.buf 56else 57run=RaidenPuppetCommandResource 58endif 59 60[GIMINeedsResourcesToAllStartWithResource] 61type=Buffer 62stride=32 63filename=./../AAA/BBBB\CCCCCC\DDDDDRemapBlend.buf 64 65[RaidenPuppetCommandResource] 66type=Buffer 67stride=32 68filename=./Dont/Use\If/Statements\Or/SubCommands\In/Resource\Sections.buf 69 70; ------ some lines originally generated from the fix --------- 71 72 73 74 75; --------------- Raiden Remap --------------- 76; Raiden remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Raiden mods pls give credit for "Albert Gold#2696" and "Nhok0169" 77; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support 78 79; ***** RaidenBoss ***** 80[TextureOverrideRaidenShogunRaidenBossRemapBlend] 81run=CommandListRaidenShogunRaidenBossRemapBlend 82handling=skip 83draw=21916,0 84 85[CommandListRaidenShogunRaidenBossRemapBlend] 86if $swapmain== 0 87if $swapvar== 0 && $swapvarn == 0 88vb1=ResourceRaidenShogunRaidenBossRemapBlend.0 89else 90vb1=ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie 91endif 92else if $swapmain== 1 93run=SubSubTextureOverrideRaidenBossRemapBlend 94endif 95 96[SubSubTextureOverrideRaidenBossRemapBlend] 97if $swapoffice== 0 && $swapglasses == 0 98vb1=ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend 99endif100101[ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend]102type=Buffer103stride=32104filename=../AAA/BBBB/CCCCCC/DDDDDRemapRaidenBossRemapBlend.buf105106[ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie]107type=Buffer108stride=32109if $swapmain== 1110filename=M:/AnotherDrive/CuteLittleEiRaidenBossRemapBlend.buf111else112run=ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend113endif114115[ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend]116type=Buffer117stride=32118filename=Dont/Use/If/Statements/Or/SubCommands/In/Resource/SectionsRaidenBossRemapBlend.buf119120[ResourceRaidenShogunRaidenBossRemapBlend.0]121type=Buffer122stride=32123filename=../../../../../../../../../2-BunnyRaidenShogun/RaidenShogunRaidenBossRemapBlend.buf124125; **********************126127; --------------------------------------------
Fixing a .ini File Without Showing the Mod on the Original Character¶
This example shows remapping a mod onto a character without the mod staying on the original character.
By default, the mod will show on both the original character and the remapped character.
1;RemapFixHideOrig -->[TextureOverrideAmberCNBlend] 2;RemapFixHideOrig -->vb1 = ResourceAmberCNBlend 3;RemapFixHideOrig -->handling = skip 4;RemapFixHideOrig -->draw = 21916,0 5;RemapFixHideOrig --> 6;RemapFixHideOrig -->[TextureOverrideAmberCNBody] 7;RemapFixHideOrig -->hash = b41d4d94 8;RemapFixHideOrig -->match_first_index = 5670 9;RemapFixHideOrig -->ib = ResourceAmberCNBodyIB10;RemapFixHideOrig -->ps-t0 = ResourceAmberCNBodyDiffuse11;RemapFixHideOrig -->ps-t1 = ResourceAmberCNBodyLightMap12;RemapFixHideOrig -->ps-t2 = ResourceAmberCNBodyMetalMap13;RemapFixHideOrig -->ps-t3 = ResourceAmberCNBodyShadowRamp14;RemapFixHideOrig -->15[ResourceAmberCNBlend]16type=Buffer17stride=3218filename=AmberCNBlend.buf192021; --------------- AmberCN Remap ---------------22; AmberCN remapped by Albert Gold#2696 and NK#1321. If you used it to remap your AmberCN mods pls give credit for "Albert Gold#2696" and "Nhok0169"23; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support2425; ***** Amber *****26[TextureOverrideAmberCNAmberRemapBlend]27vb1=ResourceAmberCNAmberRemapBlend28handling=skip29draw=21916,03031[TextureOverrideAmberCNBodyAmberRemapFix]32hash=b03c7e3033match_first_index=567034ib=ResourceAmberCNBodyIB35ps-t0=ResourceAmberCNBodyDiffuse36ps-t1=ResourceAmberCNBodyLightMap37ps-t2=ResourceAmberCNBodyMetalMap38ps-t3=ResourceAmberCNBodyShadowRamp39drawindexed=auto4041[ResourceAmberCNAmberRemapBlend]42type=Buffer43stride=3244filename=AmberCNAmberRemapBlend.buf4546; *****************4748; ---------------------------------------------
Fixing a .ini File to a Specific Version of the Game¶
This example shows a weird use case of wanting to fix the .ini file to an older version of the game (eg. when Fontaine first came out –> before the ‘Great Hash Update’)
Note
The hashes and the indices are changed in the new .ini file to the older version of the game (the fix basically travelled in time!).
To fix an entire mod for a specific version of the game, where the vertex group remaps of the Blend.buf files will also be affected by the specific game version
go to Fixing Entire Mods to a Specific Version of the Game
1[TextureOverrideAmberCNBlend] 2vb1=ResourceAmberCNBlend 3handling=skip 4draw=21916,0 5 6[TextureOverrideAmberCNBody] 7hash=b41d4d94 8match_first_index=5670 9ib=ResourceAmberCNBodyIB10ps-t0=ResourceAmberCNBodyDiffuse11ps-t1=ResourceAmberCNBodyLightMap12ps-t2=ResourceAmberCNBodyMetalMap13ps-t3=ResourceAmberCNBodyShadowRamp1415[ResourceAmberCNBlend]16type=Buffer17stride=3218filename=AmberCNBlend.buf192021; --------------- AmberCN Remap ---------------22; AmberCN remapped by Albert Gold#2696 and NK#1321. If you used it to remap your AmberCN mods pls give credit for "Albert Gold#2696" and "Nhok0169"23; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support2425; ***** Amber *****26[TextureOverrideAmberCNAmberRemapBlend]27vb1=ResourceAmberCNAmberRemapBlend28handling=skip29draw=21916,03031[TextureOverrideAmberCNBodyAmberRemapFix]32hash=9976d12433match_first_index=567034ib=ResourceAmberCNBodyIB35ps-t0=ResourceAmberCNBodyDiffuse36ps-t1=ResourceAmberCNBodyLightMap37ps-t2=ResourceAmberCNBodyMetalMap38ps-t3=ResourceAmberCNBodyShadowRamp3940[ResourceAmberCNAmberRemapBlend]41type=Buffer42stride=3243filename=AmberCNAmberRemapBlend.buf4445; *****************4647; ---------------------------------------------
In this example, by running the program called example.py, the fix will start from the RaidenShogun/Mod folder and will:
Undo previous changes created by the fix
Fix all the files related to mods
Note
We set the verbose parmeter to False to not print out the usual logging text when you run the script.
If you want to print out the logging text, set verbose to True
1[Constants] 2global persist $swapvar=0 3 4[KeySwap] 5condition=$active == 1 6key=VK_DOWN 7type=cycle 8$swapvar=0,1 9$creditinfo=0101112[TextureOverrideRaidenShogunBlend]13if $swapvar== 014vb1=ResourceRaidenShogunBlend.015handling=skip16draw=21916,017else if $swapvar== 118vb1=ResourceRaidenShogunBlend.119handling=skip20draw=21916,021endif2223[ResourceRaidenShogunBlend.0]24type=Buffer25stride=3226filename=RaidenShogunBlend.buf2728[ResourceRaidenShogunBlend.1]29type=Buffer30stride=3231filename=../ParentNodeBlend.buf323334; --------------- Raiden Remap ---------------35; Raiden remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Raiden mods pls give credit for "Albert Gold#2696" and "Nhok0169"36; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support3738; ***** RaidenBoss *****39[TextureOverrideRaidenShogunRaidenBossRemapBlend]40if $swapvar== 041vb1=ResourceRaidenShogunRaidenBossRemapBlend.042handling=skip43draw=21916,044else if $swapvar== 145vb1=ResourceRaidenShogunRaidenBossRemapBlend.146handling=skip47draw=21916,048endif4950[ResourceRaidenShogunRaidenBossRemapBlend.0]51type=Buffer52stride=3253filename=RaidenShogunRaidenBossRemapBlend.buf5455[ResourceRaidenShogunRaidenBossRemapBlend.1]56type=Buffer57stride=3258filename=../ParentNodeRaidenBossRemapBlend.buf5960; **********************6162; --------------------------------------------
1[TextureOverrideRaidenShogunBlend] 2vb1=ResourceRaidenShogunBlend 3handling=skip 4draw=21916,0 5 6[ResourceRaidenShogunBlend] 7type=Buffer 8stride=32 9filename=RaidenShogunBlend.buf101112; --------------- Raiden Remap ---------------13; Raiden remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Raiden mods pls give credit for "Albert Gold#2696" and "Nhok0169"14; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support1516; ***** RaidenBoss *****17[TextureOverrideRaidenShogunRaidenBossRemapBlend]18vb1=ResourceRaidenShogunRaidenBossRemapBlend19handling=skip20draw=21916,02122[ResourceRaidenShogunRaidenBossRemapBlend]23type=Buffer24stride=3225filename=RaidenShogunRaidenBossRemapBlend.buf2627; **********************2829; --------------------------------------------
1[TextureOverrideRaidenShogunBlend] 2vb1=ResourceRaidenShogunBlend 3handling=skip 4draw=21916,0 5 6[ResourceRaidenShogunBlend] 7type=Buffer 8stride=32 9filename=../../Mod/folder/folderInFolder/BlendToDisconnectedSubTree.buf101112; --------------- Raiden Remap ---------------13; Raiden remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Raiden mods pls give credit for "Albert Gold#2696" and "Nhok0169"14; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support1516; ***** RaidenBoss *****17[TextureOverrideRaidenShogunRaidenBossRemapBlend]18vb1=ResourceRaidenShogunRaidenBossRemapBlend19handling=skip20draw=21916,02122[ResourceRaidenShogunRaidenBossRemapBlend]23type=Buffer24stride=3225filename=../../Mod/folder/folderInFolder/RaidenBossRemapBlendToDisconnectedSubTree.buf2627; **********************2829; --------------------------------------------
1[TextureOverrideRaidenShogunBlend] 2vb1=ResourceRaidenShogunBlend 3handling=skip 4draw=21916,0 5 6[ResourceRaidenShogunBlend] 7type=Buffer 8stride=32 9filename=../../../folder/folderInFolder/BlendToDisconnectedSubTree2.buf101112; --------------- Raiden Remap ---------------13; Raiden remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Raiden mods pls give credit for "Albert Gold#2696" and "Nhok0169"14; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support1516; ***** RaidenBoss *****17[TextureOverrideRaidenShogunRaidenBossRemapBlend]18vb1=ResourceRaidenShogunRaidenBossRemapBlend19handling=skip20draw=21916,02122[ResourceRaidenShogunRaidenBossRemapBlend]23type=Buffer24stride=3225filename=../../../folder/folderInFolder/RaidenBossRemapBlendToDisconnectedSubTree2.buf2627; **********************2829; --------------------------------------------
In this example, by running the program called example.py, the fix will start from the RaidenShogun/Mod folder and undo all previous changes done by the script
Note
We set the verbose parmeter to False to not print out the usual logging text when you run the script.
If you want to print out the logging text, set verbose to True
1[Constants] 2global persist $swapvar=0 3 4[KeySwap] 5condition=$active == 1 6key=VK_DOWN 7type=cycle 8$swapvar=0,1 9$creditinfo=0101112[TextureOverrideRaidenShogunBlend]13if $swapvar== 014vb1=ResourceRaidenShogunBlend.015handling=skip16draw=21916,017else if $swapvar== 118vb1=ResourceRaidenShogunBlend.119handling=skip20draw=21916,021endif2223[ResourceRaidenShogunBlend.0]24type=Buffer25stride=3226filename=RaidenShogunBlend.buf2728[ResourceRaidenShogunBlend.1]29type=Buffer30stride=3231filename=../ParentNodeBlend.buf323334; --------------- Raiden Boss Fix -----------------35; Raiden boss fixed by NK#1321 if you used it for fix your raiden pls give credit for "Nhok0169"36; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 and Albert Gold#2696 for support3738[TextureOverrideRaidenShogunRemapBlend]39if $swapvar== 040vb1=ResourceRaidenShogunRemapBlend.041handling=skip42draw=21916,043else if $swapvar== 144vb1=ResourceRaidenShogunRemapBlend.145handling=skip46draw=21916,047endif484950[ResourceRaidenShogunRemapBlend.0]51type=Buffer52stride=3253filename=RaidenShogunRemapBlend.buf5455[ResourceRaidenShogunRemapBlend.1]56type=Buffer57stride=3258filename=..\ParentNodeRemapBlend.buf596061; -------------------------------------------------
1[TextureOverrideRaidenShogunBlend] 2vb1=ResourceRaidenShogunBlend 3handling=skip 4draw=21916,0 5 6[ResourceRaidenShogunBlend] 7type=Buffer 8stride=32 9filename=RaidenShogunBlend.buf101112; --------------- Raiden Boss Fix -----------------13; Raiden boss fixed by NK#1321 if you used it for fix your raiden pls give credit for "Nhok0169"14; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 and Albert Gold#2696 for support1516[TextureOverrideRaidenShogunRemapBlend]17vb1=ResourceRaidenShogunRemapBlend18handling=skip19draw=21916,0202122[ResourceRaidenShogunRemapBlend]23type=Buffer24stride=3225filename=RaidenShogunRemapBlend.buf262728; -------------------------------------------------
1[TextureOverrideRaidenShogunBlend] 2vb1=ResourceRaidenShogunBlend 3handling=skip 4draw=21916,0 5 6[ResourceRaidenShogunBlend] 7type=Buffer 8stride=32 9filename=../../Mod/folder/folderInFolder/BlendToDisconnectedSubTree.buf101112; --------------- Raiden Boss Fix -----------------13; Raiden boss fixed by NK#1321 if you used it for fix your raiden pls give credit for "Nhok0169"14; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 and Albert Gold#2696 for support1516[TextureOverrideRaidenShogunRemapBlend]17vb1=ResourceRaidenShogunRemapBlend18handling=skip19draw=21916,0202122[ResourceRaidenShogunRemapBlend]23type=Buffer24stride=3225filename=..\..\Mod\folder\folderInFolder\RemapBlendToDisconnectedSubTree.buf262728; -------------------------------------------------
1[TextureOverrideRaidenShogunBlend] 2vb1=ResourceRaidenShogunBlend 3handling=skip 4draw=21916,0 5 6[ResourceRaidenShogunBlend] 7type=Buffer 8stride=32 9filename=../../../folder/folderInFolder/BlendToDisconnectedSubTree2.buf101112; --------------- Raiden Boss Fix -----------------13; Raiden boss fixed by NK#1321 if you used it for fix your raiden pls give credit for "Nhok0169"14; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 and Albert Gold#2696 for support1516[TextureOverrideRaidenShogunRemapBlend]17vb1=ResourceRaidenShogunRemapBlend18handling=skip19draw=21916,0202122[ResourceRaidenShogunRemapBlend]23type=Buffer24stride=3225filename=..\..\..\folder\folderInFolder\RemapBlendToDisconnectedSubTree2.buf262728; -------------------------------------------------
The example below shows an alternative method to remap Kirara –> KiraraBoots . The prorgram by the name example.py
overwrites the default implementation of fixing Kirara mods with the new alternative method.
1importAnimeGameRemapasAGR 2 3# ==== Override how Kirara is fixed ====== 4 5kiraraModType=AGR.ModTypes.Kirara.value 6 7# Edit Kirara's body so that her body's skin tone matches with her face 8# 9# -- Notes --:10# If you do not like how we edit her body, you can play around with her BodyDiffuse.dds or her BodyLightMap.dds11# in your favourite image editor (Paint.net, Photoshop, etc...) or you can tweak the code below12kiraraModType.iniParseBuilder=AGR.IniParseBuilder(AGR.GIMIObjParser,args=[{"head","body"}],kwargs={"texEdits":{13"body":{"ps-t1":{"DarkenDiffuse":AGR.TexEditor(filters=[AGR.TexMetadataFilter(edits={"gamma":AGR.ColourConsts.SRGBGamma.value})])}}14}})1516kiraraModType.iniFixBuilder=AGR.IniFixBuilder(AGR.GIMIObjMergeFixer,args=[{"head":["head","body"],"body":["body"]}],17kwargs={18"preRegEditFilters":[19AGR.RegTexEdit({"DarkenDiffuse":["ps-t1"]})20],21"postRegEditFilters":[22AGR.RegNewVals({"body":{"ib":"null"}})23]24})2526# ========================================2728# fix the mod29remapService=AGR.RemapService(verbose=True,keepBackups=False)30remapService.fix()
Result
Below contains the new content with the previous changes made by the script removed
Sometimes, the software may possibly identify the wrong character for a mod and generate the wrong remap for the mod.
For this case, you may want to forcibly tell the software the character for a specific mod, to make the correct remap.
The example below shows how to forcibly use the strategy for remapping Rosaria onto a Kirara mod.
In this example, by running the program called example.py, the fix will only fix the mods for Keqing, Jean and Amber.
Mods for Shenhe and Raiden will not be fixed.
Note
You can enter the nicknames/aliases of a mod in upper/lower case instead of just the regular name of the mod.
Please refer to Mod Types for the available aliases for each mod.
1[TextureOverrideAmberBlend] 2vb1=ResourceAmberBlend 3handling=skip 4draw=21916,0 5 6[ResourceAmberBlend] 7type=Buffer 8stride=32 9filename=AmberBlend.buf101112; --------------- Amber Remap ---------------13; Amber remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Amber mods pls give credit for "Albert Gold#2696" and "Nhok0169"14; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support1516; ***** AmberCN *****17[TextureOverrideAmberAmberCNRemapBlend]18vb1=ResourceAmberAmberCNRemapBlend19handling=skip20draw=21916,02122[ResourceAmberAmberCNRemapBlend]23type=Buffer24stride=3225filename=AmberAmberCNRemapBlend.buf2627; *******************2829; -------------------------------------------
1[TextureOverrideJeanBlend] 2vb1=ResourceJeanBlend 3handling=skip 4draw=21916,0 5 6[ResourceJeanBlend] 7type=Buffer 8stride=32 9filename=../SmolJean/CuteJeanBlend.buf101112; --------------- Jean Remap ---------------13; Jean remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Jean mods pls give credit for "Albert Gold#2696" and "Nhok0169"14; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support1516; ***** JeanCN *****17[TextureOverrideJeanJeanCNRemapBlend]18vb1=ResourceJeanJeanCNRemapBlend19handling=skip20draw=21916,02122[ResourceJeanJeanCNRemapBlend]23type=Buffer24stride=3225filename=../SmolJean/CuteJeanJeanCNRemapBlend.buf2627; ******************2829; ***** JeanSea *****30[TextureOverrideJeanJeanSeaRemapBlend]31vb1=ResourceJeanJeanSeaRemapBlend32handling=skip33draw=21916,03435[ResourceJeanJeanSeaRemapBlend]36type=Buffer37stride=3238filename=../SmolJean/CuteJeanJeanSeaRemapBlend.buf3940; *******************4142; ------------------------------------------
1[TextureOverrideJeanBlend] 2vb1=ResourceJeanBlend 3handling=skip 4draw=21916,0 5 6[TextureOverrideJeanBody] 7hash=115737ff 8match_first_index=7779 9ib=ResourceJeanSeaBodyIB10ps-t0=ResourceJeanSeaBodyDiffuse11ps-t1=ResourceJeanSeaBodyLightMap1213[ResourceJeanBlend]14type=Buffer15stride=3216filename=../SmolJeanBlend.buf1718[ResourceJeanSeaBodyLightMap]19filename=../SmollerJean.dds202122; --------------- Jean Remap ---------------23; Jean remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Jean mods pls give credit for "Albert Gold#2696" and "Nhok0169"24; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support2526; ***** JeanCN *****27[TextureOverrideJeanJeanCNRemapBlend]28vb1=ResourceJeanJeanCNRemapBlend29handling=skip30draw=21916,03132[TextureOverrideJeanBodyJeanCNRemapFix]33hash=aad861e034match_first_index=777935ib=ResourceJeanSeaBodyIB36ps-t0=ResourceJeanSeaBodyDiffuse37ps-t1=ResourceJeanSeaBodyLightMap3839[ResourceJeanJeanCNRemapBlend]40type=Buffer41stride=3242filename=../SmolJeanJeanCNRemapBlend.buf4344; ******************4546; ***** JeanSea *****47[TextureOverrideJeanJeanSeaRemapBlend]48vb1=ResourceJeanJeanSeaRemapBlend49handling=skip50draw=21916,05152[TextureOverrideJeanBodyJeanSeaRemapFix]53hash=69c0c24e54match_first_index=766255ib=ResourceJeanSeaBodyIB56ps-t0=ResourceJeanSeaBodyDiffuse57ps-t1=ResourceJeanBodyShadeLightMapJeanSeaRemapTex05859[TextureOverrideJeanDressJeanSeaRemapFix]60hash=69c0c24e61match_first_index=5254262ib=null63ps-t0=ResourceJeanSeaBodyDiffuse64ps-t1=ResourceJeanSeaBodyLightMap6566[ResourceJeanJeanSeaRemapBlend]67type=Buffer68stride=3269filename=../SmolJeanJeanSeaRemapBlend.buf7071[ResourceJeanBodyShadeLightMapJeanSeaRemapTex0]72filename=../JeanSeaBodyRemapTexPK_ BNl.dds7374; *******************7576; ------------------------------------------
1; This is really bad!! Don't do this! 2; ************************************ 3; 4; jk, but joking aside... 5; 6; The goal is to display n mod objects from the mod to be remapped to the mod onto a single mod object of the remapped mod. 7; Therefore we will have n sets of resources all mapping onto a single index (and same hash). 8; 9; Ideally, we would want all the sections to be within a single .ini file. The naive approach would be to create n sets of sections 10; (not a single section, cuz you need to include the case of sections depending on other sections, which form a section caller/callee graph) 11; where the sections names are all unique. However, this approach will trigger a warning on GIMI (or any GIMI like importer) of multiple sections 12; mapping to the same hash and only 1 of the mod objects will be displayed 13; 14; The next attempt would be to take advantage of GIMI's overlapping mod bug/feature from loading multiple mods of the same character 15; Apart from the original .ini file, there would be n-1 newly generated .ini files (total of n .ini files). Each .ini file would uniquely 16; display a single set of sections from the n sets of sections. The overlapping property from the bug/feature would allow for all the objects to be displayed. 17; 18; For now, we were lazy and just simply copied the original .ini file onto the generated .ini files, which results in the original mod to have overlapping copies. 19; But since the mod used in all the .ini files are exactly the same, the user would not see the overlap (they may have some performance issues depending on the size of n. But 20; usually remaps only merge 2 mod objects into a single mod object, which should not cause much of an issue) 21; We could optimize the amount of space taken up by the newly generated .ini files, by only putting the necessary sections, but that is for another day... 22 23[Constants] 24global persist $swapvar=0 25 26[KeySwap] 27condition=$active == 1 28key=VK_DOWN 29type=cycle 30$swapvar=0,1 31$creditinfo=0 32 33[TextureOverrideKeqingBlend] 34if $swapvar== 0 35vb1=ResourceKeqingBlend.0 36handling=skip 37draw=21916,0 38else if $swapvar== 1 39vb1=ResourceKeqingBlend.1 40handling=skip 41draw=21916,0 42endif 43 44[TextureOverrideKeqingBody] 45hash=cbf1894b 46match_first_index=10824 47run=CommandListKeqingBody 48 49[TextureOverrideKeqingHead] 50hash=cbf1894b 51match_first_index=10824 52run=CommandListKeqingHead 53 54[CommandListKeqingHead] 55if $swapvar== 0 56ib=ResourceKeqingBodyIB.0 57ps-t0=ResourceKeqingHeadDiffuse.0 58ps-t1=ResourceKeqingHeadLightMap.0 59ps-t2=ResourceKeqingHeadMetalMap.0 60ps-t3=ResourceKeqingHeadShadowRamp.0 61else if $swapvar== 1 62ib=ResourceKeqingHeadIB.3 63ps-t0=ResourceKeqingHeadDiffuse.3 64ps-t1=ResourceKeqingHeadLightMap.3 65endif 66 67[CommandListKeqingBody] 68if $swapvar== 0 69ib=ResourceKeqingBodyIB.0 70ps-t0=ResourceKeqingBodyDiffuse.0 71ps-t1=ResourceKeqingBodyLightMap.0 72ps-t2=ResourceKeqingBodyMetalMap.0 73ps-t3=ResourceKeqingBodyShadowRamp.0 74else if $swapvar== 1 75ib=ResourceKeqingBodyIB.3 76ps-t0=ResourceKeqingBodyDiffuse.3 77ps-t1=ResourceKeqingBodyLightMap.3 78endif 79 80[TextureOverrideKeqingDress] 81hash=cbf1894b 82match_first_index=48216 83run=CommandListKeqingDress 84 85[CommandListKeqingDress] 86if $swapvar== 0 87ib=ResourceKeqingDressIB.0 88ps-t0=ResourceKeqingDressDiffuse.0 89ps-t1=ResourceKeqingDressLightMap.0 90ps-t2=ResourceKeqingDressMetalMap.0 91ps-t3=ResourceKeqingDressShadowRamp.0 92else if $swapvar== 1 93ib=ResourceKeqingDressIB.3 94ps-t0=ResourceKeqingDressDiffuse.3 95ps-t1=ResourceKeqingDressLightMap.3 96endif 97 98[ResourceKeqingBlend.0] 99type=Buffer100stride=32101filename=../Buffs/ISwearItsFor.buf102103[ResourceKeqingBlend.1]104type=Buffer105stride=32106filename=../Buffs/SmallerHitboxes.buf107108[ResourceKeqingDressDiffuse.0]109filename=CatGirl.dds110111[ResourceKeqingDressDiffuse.3]112filename=Patootie.dds113114[ResourceKeqingHeadDiffuse.0]115filename=Cutesy.dds116117[ResourceKeqingHeadDiffuse.3]118filename=CutiePie.dds119120121; --------------- Keqing Remap ---------------122; Keqing remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Keqing mods pls give credit for "Albert Gold#2696" and "Nhok0169"123; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support124125; ***** KeqingOpulent *****126[TextureOverrideKeqingKeqingOpulentRemapBlend]127if $swapvar== 0128vb1=ResourceKeqingKeqingOpulentRemapBlend.0129handling=skip130draw=21916,0131else if $swapvar== 1132vb1=ResourceKeqingKeqingOpulentRemapBlend.1133handling=skip134draw=21916,0135endif136137[TextureOverrideKeqingBodyKeqingOpulentRemapFix]138hash=7c6fc8c3139match_first_index=19623140run=CommandListKeqingBodyKeqingOpulentRemapFix141142[CommandListKeqingBodyKeqingOpulentRemapFix]143if $swapvar== 0144ib=ResourceKeqingBodyIB.0145ps-t0=ResourceKeqingBodyDiffuse.0146ps-t1=ResourceKeqingBodyLightMap.0147ps-t2=ResourceKeqingBodyMetalMap.0148ps-t3=ResourceKeqingBodyShadowRamp.0149else if $swapvar== 1150ib=ResourceKeqingBodyIB.3151ps-t0=ResourceKeqingBodyDiffuse.3152ps-t1=ResourceKeqingBodyLightMap.3153endif154155[TextureOverrideKeqingHeadKeqingOpulentRemapFix]156hash=7c6fc8c3157match_first_index=0158run=CommandListKeqingHeadKeqingOpulentRemapFix159160[CommandListKeqingHeadKeqingOpulentRemapFix]161if $swapvar== 0162ib=ResourceKeqingBodyIB.0163ps-t0=ResourceKeqingHeadOpaqueHeadDiffuseKeqingOpulentRemapTex0164ps-t1=ResourceKeqingHeadLightMap.0165ps-t2=ResourceKeqingHeadMetalMap.0166ps-t3=ResourceKeqingHeadShadowRamp.0167else if $swapvar== 1168ib=ResourceKeqingHeadIB.3169ps-t0=ResourceKeqingHeadOpaqueHeadDiffuseKeqingOpulentRemapTex1170ps-t1=ResourceKeqingHeadLightMap.3171endif172173[ResourceKeqingKeqingOpulentRemapBlend.0]174type=Buffer175stride=32176filename=../Buffs/ISwearItsForKeqingOpulentRemapBlend.buf177178[ResourceKeqingKeqingOpulentRemapBlend.1]179type=Buffer180stride=32181filename=../Buffs/SmallerHitboxesKeqingOpulentRemapBlend.buf182183[ResourceKeqingHeadOpaqueHeadDiffuseKeqingOpulentRemapTex0]184filename=KeqingOpulentHeadRemapTexCKA HQ7.dds185186[ResourceKeqingHeadOpaqueHeadDiffuseKeqingOpulentRemapTex1]187filename=KeqingOpulentHeadRemapTexKZA HQ7.dds188189; *************************190191; --------------------------------------------
1; This is really bad!! Don't do this! 2; ************************************ 3; 4; jk, but joking aside... 5; 6; The goal is to display n mod objects from the mod to be remapped to the mod onto a single mod object of the remapped mod. 7; Therefore we will have n sets of resources all mapping onto a single index (and same hash). 8; 9; Ideally, we would want all the sections to be within a single .ini file. The naive approach would be to create n sets of sections 10; (not a single section, cuz you need to include the case of sections depending on other sections, which form a section caller/callee graph) 11; where the sections names are all unique. However, this approach will trigger a warning on GIMI (or any GIMI like importer) of multiple sections 12; mapping to the same hash and only 1 of the mod objects will be displayed 13; 14; The next attempt would be to take advantage of GIMI's overlapping mod bug/feature from loading multiple mods of the same character 15; Apart from the original .ini file, there would be n-1 newly generated .ini files (total of n .ini files). Each .ini file would uniquely 16; display a single set of sections from the n sets of sections. The overlapping property from the bug/feature would allow for all the objects to be displayed. 17; 18; For now, we were lazy and just simply copied the original .ini file onto the generated .ini files, which results in the original mod to have overlapping copies. 19; But since the mod used in all the .ini files are exactly the same, the user would not see the overlap (they may have some performance issues depending on the size of n. But 20; usually remaps only merge 2 mod objects into a single mod object, which should not cause much of an issue) 21; We could optimize the amount of space taken up by the newly generated .ini files, by only putting the necessary sections, but that is for another day... 22 23[Constants] 24global persist $swapvar=0 25 26[KeySwap] 27condition=$active == 1 28key=VK_DOWN 29type=cycle 30$swapvar=0,1 31$creditinfo=0 32 33[TextureOverrideKeqingBlend] 34if $swapvar== 0 35vb1=ResourceKeqingBlend.0 36handling=skip 37draw=21916,0 38else if $swapvar== 1 39vb1=ResourceKeqingBlend.1 40handling=skip 41draw=21916,0 42endif 43 44[TextureOverrideKeqingBody] 45hash=cbf1894b 46match_first_index=10824 47run=CommandListKeqingBody 48 49[CommandListKeqingBody] 50if $swapvar== 0 51ib=ResourceKeqingBodyIB.0 52ps-t0=ResourceKeqingBodyDiffuse.0 53ps-t1=ResourceKeqingBodyLightMap.0 54ps-t2=ResourceKeqingBodyMetalMap.0 55ps-t3=ResourceKeqingBodyShadowRamp.0 56else if $swapvar== 1 57ib=ResourceKeqingBodyIB.3 58ps-t0=ResourceKeqingBodyDiffuse.3 59ps-t1=ResourceKeqingBodyLightMap.3 60endif 61 62[TextureOverrideKeqingDress] 63hash=cbf1894b 64match_first_index=48216 65run=CommandListKeqingDress 66 67[CommandListKeqingDress] 68if $swapvar== 0 69ib=ResourceKeqingDressIB.0 70ps-t0=ResourceKeqingDressDiffuse.0 71ps-t1=ResourceKeqingDressLightMap.0 72ps-t2=ResourceKeqingDressMetalMap.0 73ps-t3=ResourceKeqingDressShadowRamp.0 74else if $swapvar== 1 75ib=ResourceKeqingDressIB.3 76ps-t0=ResourceKeqingDressDiffuse.3 77ps-t1=ResourceKeqingDressLightMap.3 78endif 79 80[ResourceKeqingBlend.0] 81type=Buffer 82stride=32 83filename=../Buffs/ISwearItsFor.buf 84 85[ResourceKeqingBlend.1] 86type=Buffer 87stride=32 88filename=../Buffs/SmallerHitboxes.buf 89 90[ResourceKeqingDressDiffuse.0] 91filename=CatGirl.dds 92 93[ResourceKeqingDressDiffuse.3] 94filename=Patootie.dds 95 96[ResourceKeqingHeadDiffuse.0] 97filename=Cutesy.dds 98 99[ResourceKeqingHeadDiffuse.3]100filename=CutiePie.dds101102103; --------------- Keqing Remap ---------------104; Keqing remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Keqing mods pls give credit for "Albert Gold#2696" and "Nhok0169"105; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support106107; ***** KeqingOpulent *****108[TextureOverrideKeqingKeqingOpulentRemapBlend]109if $swapvar== 0110vb1=ResourceKeqingKeqingOpulentRemapBlend.0111handling=skip112draw=21916,0113else if $swapvar== 1114vb1=ResourceKeqingKeqingOpulentRemapBlend.1115handling=skip116draw=21916,0117endif118119[TextureOverrideKeqingBodyKeqingOpulentRemapFix]120hash=7c6fc8c3121match_first_index=19623122run=CommandListKeqingBodyKeqingOpulentRemapFix123124[CommandListKeqingBodyKeqingOpulentRemapFix]125if $swapvar== 0126ib=ResourceKeqingBodyIB.0127ps-t0=ResourceKeqingBodyDiffuse.0128ps-t1=ResourceKeqingBodyLightMap.0129ps-t2=ResourceKeqingBodyMetalMap.0130ps-t3=ResourceKeqingBodyShadowRamp.0131else if $swapvar== 1132ib=ResourceKeqingBodyIB.3133ps-t0=ResourceKeqingBodyDiffuse.3134ps-t1=ResourceKeqingBodyLightMap.3135endif136137[ResourceKeqingKeqingOpulentRemapBlend.0]138type=Buffer139stride=32140filename=../Buffs/ISwearItsForKeqingOpulentRemapBlend.buf141142[ResourceKeqingKeqingOpulentRemapBlend.1]143type=Buffer144stride=32145filename=../Buffs/SmallerHitboxesKeqingOpulentRemapBlend.buf146147; *************************148149; --------------------------------------------
1[Constants] 2global persist $swapvar=0 3 4[KeySwap] 5condition=$active == 1 6key=VK_DOWN 7type=cycle 8$swapvar=0,1,2,3 9$creditinfo=01011[TextureOverrideShenheBlend]12if $swapvar== 013vb1=BeatoPleaseSaveNewbieGamemasterBattlerFromHisSmallBombsLogic14handling=skip15draw=21916,016else if $swapvar== 117vb1=DlanorAKnoxDesDesDesDesDes18handling=skip19draw=21916,020else if $swapvar== 221vb1=YasuGirlOrBoyBetterLeaveQuestionInTheCatBox22handling=skip23draw=21916,024else if $swapvar== 325vb1=RosaDoubleWinchesterRiflesBadass26handling=skip27draw=21916,028endif2930[TextureOverrideShenheDress]31hash=33a9249232match_first_index=4875333run=CommandListShenheDress3435[CommandListShenheDress]36if $swapvar== 037ib=ResourceShenheDressIB.038ps-t0=ResourceShenheDressDiffuse.039ps-t1=ResourceShenheDressLightMap.040ps-t2=ResourceShenheDressMetalMap.041ps-t3=ResourceShenheDressShadowRamp.042else if $swapvar== 143ib=ResourceShenheDressIB.144ps-t0=ResourceShenheDressDiffuse.145ps-t1=ResourceShenheDressLightMap.146ps-t2=ResourceShenheDressMetalMap.147ps-t3=ResourceShenheDressShadowRamp.148else if $swapvar== 249ib=ResourceShenheDressIB.250ps-t0=ResourceShenheDressDiffuse.251ps-t1=ResourceShenheDressLightMap.252ps-t2=ResourceShenheDressMetalMap.253ps-t3=ResourceShenheDressShadowRamp.254else if $swapvar== 355ib=ResourceShenheDressIB.356ps-t0=ResourceShenheDressDiffuse.357ps-t1=ResourceShenheDressLightMap.358ps-t2=ResourceShenheDressMetalMap.359ps-t3=ResourceShenheDressShadowRamp.360endif6162[BeatoPleaseSaveNewbieGamemasterBattlerFromHisSmallBombsLogic]63type=Buffer64stride=3265filename=DieDaDes.buf6667[DlanorAKnoxDesDesDesDesDes]68type=Buffer69stride=3270filename=DesDesDesDesDesDes.buf7172[YasuGirlOrBoyBetterLeaveQuestionInTheCatBox]73type=Buffer74stride=3275filename=SentenceToDes.buf7677[RosaDoubleWinchesterRiflesBadass]78type=Buffer79stride=3280filename=DaGreatEqualizerIsTheDes.buf
Fixing Entire Mods Without Showing Mods on the Original Character¶
The example below shows fixing entire mods where the mod only shows on the remapped character, and not the original character after running example.py.
1; This is really bad!! Don't do this! 2; ************************************ 3; 4; jk, but joking aside... 5; 6; The goal is to display n mod objects from the mod to be remapped to the mod onto a single mod object of the remapped mod. 7; Therefore we will have n sets of resources all mapping onto a single index (and same hash). 8; 9; Ideally, we would want all the sections to be within a single .ini file. The naive approach would be to create n sets of sections 10; (not a single section, cuz you need to include the case of sections depending on other sections, which form a section caller/callee graph) 11; where the sections names are all unique. However, this approach will trigger a warning on GIMI (or any GIMI like importer) of multiple sections 12; mapping to the same hash and only 1 of the mod objects will be displayed 13; 14; The next attempt would be to take advantage of GIMI's overlapping mod bug/feature from loading multiple mods of the same character 15; Apart from the original .ini file, there would be n-1 newly generated .ini files (total of n .ini files). Each .ini file would uniquely 16; display a single set of sections from the n sets of sections. The overlapping property from the bug/feature would allow for all the objects to be displayed. 17; 18; For now, we were lazy and just simply copied the original .ini file onto the generated .ini files, which results in the original mod to have overlapping copies. 19; But since the mod used in all the .ini files are exactly the same, the user would not see the overlap (they may have some performance issues depending on the size of n. But 20; usually remaps only merge 2 mod objects into a single mod object, which should not cause much of an issue) 21; We could optimize the amount of space taken up by the newly generated .ini files, by only putting the necessary sections, but that is for another day... 22 23[Constants] 24global persist $swapvar=0 25 26[KeySwap] 27condition=$active == 1 28key=VK_DOWN 29type=cycle 30$swapvar=0,1 31$creditinfo=0 32 33;RemapFixHideOrig -->[TextureOverrideKeqingBlend] 34;RemapFixHideOrig -->if $swapvar == 0 35;RemapFixHideOrig --> vb1 = ResourceKeqingBlend.0 36;RemapFixHideOrig --> handling = skip 37;RemapFixHideOrig --> draw = 21916,0 38;RemapFixHideOrig -->else if $swapvar == 1 39;RemapFixHideOrig --> vb1 = ResourceKeqingBlend.1 40;RemapFixHideOrig --> handling = skip 41;RemapFixHideOrig --> draw = 21916,0 42;RemapFixHideOrig -->endif 43;RemapFixHideOrig --> 44;RemapFixHideOrig -->[TextureOverrideKeqingBody] 45;RemapFixHideOrig -->hash = cbf1894b 46;RemapFixHideOrig -->match_first_index = 10824 47;RemapFixHideOrig -->run = CommandListKeqingBody 48;RemapFixHideOrig --> 49;RemapFixHideOrig -->[CommandListKeqingBody] 50;RemapFixHideOrig -->if $swapvar == 0 51;RemapFixHideOrig --> ib = ResourceKeqingBodyIB.0 52;RemapFixHideOrig --> ps-t0 = ResourceKeqingBodyDiffuse.0 53;RemapFixHideOrig --> ps-t1 = ResourceKeqingBodyLightMap.0 54;RemapFixHideOrig --> ps-t2 = ResourceKeqingBodyMetalMap.0 55;RemapFixHideOrig --> ps-t3 = ResourceKeqingBodyShadowRamp.0 56;RemapFixHideOrig -->else if $swapvar == 1 57;RemapFixHideOrig --> ib = ResourceKeqingBodyIB.3 58;RemapFixHideOrig --> ps-t0 = ResourceKeqingBodyDiffuse.3 59;RemapFixHideOrig --> ps-t1 = ResourceKeqingBodyLightMap.3 60;RemapFixHideOrig -->endif 61;RemapFixHideOrig --> 62;RemapFixHideOrig -->[TextureOverrideKeqingDress] 63;RemapFixHideOrig -->hash = cbf1894b 64;RemapFixHideOrig -->match_first_index = 48216 65;RemapFixHideOrig -->run = CommandListKeqingDress 66;RemapFixHideOrig --> 67;RemapFixHideOrig -->[CommandListKeqingDress] 68;RemapFixHideOrig -->if $swapvar == 0 69;RemapFixHideOrig --> ib = ResourceKeqingDressIB.0 70;RemapFixHideOrig --> ps-t0 = ResourceKeqingDressDiffuse.0 71;RemapFixHideOrig --> ps-t1 = ResourceKeqingDressLightMap.0 72;RemapFixHideOrig --> ps-t2 = ResourceKeqingDressMetalMap.0 73;RemapFixHideOrig --> ps-t3 = ResourceKeqingDressShadowRamp.0 74;RemapFixHideOrig -->else if $swapvar == 1 75;RemapFixHideOrig --> ib = ResourceKeqingDressIB.3 76;RemapFixHideOrig --> ps-t0 = ResourceKeqingDressDiffuse.3 77;RemapFixHideOrig --> ps-t1 = ResourceKeqingDressLightMap.3 78;RemapFixHideOrig -->endif 79;RemapFixHideOrig --> 80[ResourceKeqingBlend.0] 81type=Buffer 82stride=32 83filename=../Buffs/ISwearItsFor.buf 84 85[ResourceKeqingBlend.1] 86type=Buffer 87stride=32 88filename=../Buffs/SmallerHitboxes.buf 89 90[ResourceKeqingDressDiffuse.0] 91filename=CatGirl.dds 92 93[ResourceKeqingDressDiffuse.3] 94filename=Patootie.dds 95 96[ResourceKeqingHeadDiffuse.0] 97filename=Cutesy.dds 98 99[ResourceKeqingHeadDiffuse.3]100filename=CutiePie.dds101102103; --------------- Keqing Remap ---------------104; Keqing remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Keqing mods pls give credit for "Albert Gold#2696" and "Nhok0169"105; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support106107; ***** KeqingOpulent *****108[TextureOverrideKeqingKeqingOpulentRemapBlend]109if $swapvar== 0110vb1=ResourceKeqingKeqingOpulentRemapBlend.0111handling=skip112draw=21916,0113else if $swapvar== 1114vb1=ResourceKeqingKeqingOpulentRemapBlend.1115handling=skip116draw=21916,0117endif118119[TextureOverrideKeqingBodyKeqingOpulentRemapFix]120hash=7c6fc8c3121match_first_index=19623122run=CommandListKeqingBodyKeqingOpulentRemapFix123124[CommandListKeqingBodyKeqingOpulentRemapFix]125if $swapvar== 0126ib=ResourceKeqingBodyIB.0127ps-t0=ResourceKeqingBodyDiffuse.0128ps-t1=ResourceKeqingBodyLightMap.0129ps-t2=ResourceKeqingBodyMetalMap.0130ps-t3=ResourceKeqingBodyShadowRamp.0131else if $swapvar== 1132ib=ResourceKeqingBodyIB.3133ps-t0=ResourceKeqingBodyDiffuse.3134ps-t1=ResourceKeqingBodyLightMap.3135endif136137[ResourceKeqingKeqingOpulentRemapBlend.0]138type=Buffer139stride=32140filename=../Buffs/ISwearItsForKeqingOpulentRemapBlend.buf141142[ResourceKeqingKeqingOpulentRemapBlend.1]143type=Buffer144stride=32145filename=../Buffs/SmallerHitboxesKeqingOpulentRemapBlend.buf146147; *************************148149; --------------------------------------------
Fixing Entire Mods to a Specific Version of the Game¶
The example below shows fixing entire mods to an older version of the game (before the ‘Great Hash Update’) after running example.py. If you do not specify any version, the fix will assume to fix to the latest game version available.
Note
The hashes, indices and the vertex group remaps for the Blend.buf files are all fixed to the older version of the game. (The fix basically travelled in time!)
1[TextureOverrideAmberCNBlend] 2vb1=ResourceAmberCNBlend 3handling=skip 4draw=21916,0 5 6[TextureOverrideAmberCNBody] 7hash=b41d4d94 8match_first_index=5670 9ib=ResourceAmberCNBodyIB10ps-t0=ResourceAmberCNBodyDiffuse11ps-t1=ResourceAmberCNBodyLightMap12ps-t2=ResourceAmberCNBodyMetalMap13ps-t3=ResourceAmberCNBodyShadowRamp1415[ResourceAmberCNBlend]16type=Buffer17stride=3218filename=AmberCNBlend.buf192021; --------------- AmberCN Remap ---------------22; AmberCN remapped by Albert Gold#2696 and NK#1321. If you used it to remap your AmberCN mods pls give credit for "Albert Gold#2696" and "Nhok0169"23; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support2425; ***** Amber *****26[TextureOverrideAmberCNAmberRemapBlend]27vb1=ResourceAmberCNAmberRemapBlend28handling=skip29draw=21916,0303132[TextureOverrideAmberCNBodyAmberRemapFix]33hash=9976d12434match_first_index=567035ib=ResourceAmberCNBodyIB36ps-t0=ResourceAmberCNBodyDiffuse37ps-t1=ResourceAmberCNBodyLightMap38ps-t2=ResourceAmberCNBodyMetalMap39ps-t3=ResourceAmberCNBodyShadowRamp404142[ResourceAmberCNAmberRemapBlend]43type=Buffer44stride=3245filename=AmberCNAmberRemapBlend.buf4647; *****************4849; ---------------------------------------------