API Examples

Below are a few simple and common examples of using the API.

Note

For more detailed information about the API, see API Reference



Fixing .Ini Files

Below are different ways of fixing either:

  • A single .ini file
    OR

  • The content contained in a single .ini file


Only Fix a .ini File Given the File Path

Note

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

To fix the .ini file by first removing any previous changes the fix may have made, see Fix a .ini File Given the File Path


Input
CuteLittleRaiden.ini
 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
32    if $swapvar == 0 && $swapvarn == 0
33        vb1 = ResourceRaidenShogunBlend.0
34    else
35        vb1 = ResourceEiBlendsHerBlenderInsteadOfHerSmoothie
36    endif
37else if $swapmain == 1
38    run = SubSubTextureOverride
39endif
40
41[SubSubTextureOverride]
42if $swapoffice == 0 && $swapglasses == 0
43    vb1 = 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
55    filename = M:\AnotherDrive\CuteLittleEi.buf
56else
57    run = 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
Code
1import AnimeGameRemap as AGR
2
3iniFile = AGR.IniFile("CuteLittleRaiden.ini", modTypes = AGR.ModTypes.getAll())
4iniFile.parse()
5iniFile.fix()
Result
CuteLittleRaiden.ini
  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
 32    if $swapvar == 0 && $swapvarn == 0
 33        vb1 = ResourceRaidenShogunBlend.0
 34    else
 35        vb1 = ResourceEiBlendsHerBlenderInsteadOfHerSmoothie
 36    endif
 37else if $swapmain == 1
 38    run = SubSubTextureOverride
 39endif
 40
 41[SubSubTextureOverride]
 42if $swapoffice == 0 && $swapglasses == 0
 43    vb1 = 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
 55    filename = M:\AnotherDrive\CuteLittleEi.buf
 56else
 57    run = 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
 71; --------------- Raiden Remap ---------------
 72; 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"
 73; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support
 74
 75; ***** RaidenBoss *****
 76[TextureOverrideRaidenShogunRaidenBossRemapBlend]
 77run = CommandListRaidenShogunRaidenBossRemapBlend
 78handling = skip
 79draw = 21916,0
 80
 81[CommandListRaidenShogunRaidenBossRemapBlend]
 82if $swapmain == 0
 83    if $swapvar == 0 && $swapvarn == 0
 84        vb1 = ResourceRaidenShogunRaidenBossRemapBlend.0
 85    else
 86        vb1 = ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie
 87    endif
 88else if $swapmain == 1
 89    run = SubSubTextureOverrideRaidenBossRemapBlend
 90endif
 91
 92[SubSubTextureOverrideRaidenBossRemapBlend]
 93if $swapoffice == 0 && $swapglasses == 0
 94    vb1 = ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend
 95endif
 96
 97[ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend]
 98type = Buffer
 99stride = 32
100filename = ../AAA/BBBB/CCCCCC/DDDDDRemapRaidenBossRemapBlend.buf
101
102[ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie]
103type = Buffer
104stride = 32
105if $swapmain == 1
106    filename = M:/AnotherDrive/CuteLittleEiRaidenBossRemapBlend.buf
107else
108    run = ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend
109endif
110
111[ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend]
112type = Buffer
113stride = 32
114filename = Dont/Use/If/Statements/Or/SubCommands/In/Resource/SectionsRaidenBossRemapBlend.buf
115
116[ResourceRaidenShogunRaidenBossRemapBlend.0]
117type = Buffer
118stride = 32
119filename = ../../../../../../../../../2-BunnyRaidenShogun/RaidenShogunRaidenBossRemapBlend.buf
120
121; **********************
122
123; --------------------------------------------


Only Fix .Ini file Given Only a String Containing the Content of the File

The code below will add the lines that make up the fix to the end of the original content of the .ini file

Note

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 Only a String Containing the Content of the File

To fix the .ini file by first removing any previous changes the fix may have made, see Fix a .ini File Given Only A String Containing the Content of the File

Note

To only get the lines that make up the fix without adding back to the original .ini file, see Get Only the Fix to the .Ini file Given Only a String Containing the Content of the File


Input
 1shortWackyRaidenIniTxt = 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"""
Code
71import AnimeGameRemap as AGR
72
73iniFile = AGR.IniFile(txt = shortWackyRaidenIniTxt, modTypes = AGR.ModTypes.getAll())
74iniFile.parse()
75fixedResult = iniFile.fix()
76
77print(fixedResult)
Result
  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
 32    if $swapvar == 0 && $swapvarn == 0
 33        vb1 = ResourceRaidenShogunBlend.0
 34    else
 35        vb1 = ResourceEiBlendsHerBlenderInsteadOfHerSmoothie
 36    endif
 37else if $swapmain == 1
 38    run = SubSubTextureOverride
 39endif
 40
 41[SubSubTextureOverride]
 42if $swapoffice == 0 && $swapglasses == 0
 43    vb1 = 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
 55    filename = M:\AnotherDrive\CuteLittleEi.buf
 56else
 57    run = 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
 71
 72; --------------- Raiden Remap ---------------
 73; 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"
 74; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support
 75
 76; ***** RaidenBoss *****
 77[TextureOverrideRaidenShogunRaidenBossRemapBlend]
 78run = CommandListRaidenShogunRaidenBossRemapBlend
 79handling = skip
 80draw = 21916,0
 81
 82[CommandListRaidenShogunRaidenBossRemapBlend]
 83if $swapmain == 0
 84    if $swapvar == 0 && $swapvarn == 0
 85        vb1 = ResourceRaidenShogunRaidenBossRemapBlend.0
 86    else
 87        vb1 = ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie
 88    endif
 89else if $swapmain == 1
 90    run = SubSubTextureOverrideRaidenBossRemapBlend
 91endif
 92
 93[SubSubTextureOverrideRaidenBossRemapBlend]
 94if $swapoffice == 0 && $swapglasses == 0
 95    vb1 = ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend
 96endif
 97
 98[ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend]
 99type = Buffer
100stride = 32
101filename = ../AAA/BBBB/CCCCCC/DDDDDRemapRaidenBossRemapBlend.buf
102
103[ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie]
104type = Buffer
105stride = 32
106if $swapmain == 1
107    filename = M:/AnotherDrive/CuteLittleEiRaidenBossRemapBlend.buf
108else
109    run = ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend
110endif
111
112[ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend]
113type = Buffer
114stride = 32
115filename = Dont/Use/If/Statements/Or/SubCommands/In/Resource/SectionsRaidenBossRemapBlend.buf
116
117[ResourceRaidenShogunRaidenBossRemapBlend.0]
118type = Buffer
119stride = 32
120filename = ../../../../../../../../../2-BunnyRaidenShogun/RaidenShogunRaidenBossRemapBlend.buf
121
122; **********************
123
124; --------------------------------------------


Get Only the Fix to the .Ini file Given Only a String Containing the Content of the File

The code below will only generate the necessary lines needed to fix the .ini file

Note

To have the fixed lines added back to the original content of the file, see Only Fix .Ini file Given Only a String Containing the Content of the File

Input
 1shortWackyRaidenIniTxt = 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"""
Code
71import AnimeGameRemap as AGR
72
73iniFile = AGR.IniFile(txt = shortWackyRaidenIniTxt, modTypes = AGR.ModTypes.getAll())
74iniFile.parse()
75fixCode = iniFile.getFixStr()
76
77print(fixCode)
Result
 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,0
10
11[CommandListRaidenShogunRaidenBossRemapBlend]
12if $swapmain == 0
13    if $swapvar == 0 && $swapvarn == 0
14        vb1 = ResourceRaidenShogunRaidenBossRemapBlend.0
15    else
16        vb1 = ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie
17    endif
18else if $swapmain == 1
19    run = SubSubTextureOverrideRaidenBossRemapBlend
20endif
21
22[SubSubTextureOverrideRaidenBossRemapBlend]
23if $swapoffice == 0 && $swapglasses == 0
24    vb1 = ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend
25endif
26
27[ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend]
28type = Buffer
29stride = 32
30filename = ../AAA/BBBB/CCCCCC/DDDDDRemapRaidenBossRemapBlend.buf
31
32[ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie]
33type = Buffer
34stride = 32
35if $swapmain == 1
36    filename = M:/AnotherDrive/CuteLittleEiRaidenBossRemapBlend.buf
37else
38    run = ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend
39endif
40
41[ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend]
42type = Buffer
43stride = 32
44filename = Dont/Use/If/Statements/Or/SubCommands/In/Resource/SectionsRaidenBossRemapBlend.buf
45
46[ResourceRaidenShogunRaidenBossRemapBlend.0]
47type = Buffer
48stride = 32
49filename = ../../../../../../../../../2-BunnyRaidenShogun/RaidenShogunRaidenBossRemapBlend.buf
50
51; **********************
52
53; --------------------------------------------


Remove a Fix from a .ini File Given the File Path

Input
PartiallyFixedRaiden.ini
  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
 32    if $swapvar == 0 && $swapvarn == 0
 33        vb1 = ResourceRaidenShogunBlend.0
 34    else
 35        vb1 = ResourceEiBlendsHerBlenderInsteadOfHerSmoothie
 36    endif
 37else if $swapmain == 1
 38    run = SubSubTextureOverride
 39endif
 40
 41[SubSubTextureOverride]
 42if $swapoffice == 0 && $swapglasses == 0
 43    vb1 = 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
 55    filename = M:\AnotherDrive\CuteLittleEi.buf
 56else
 57    run = 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[ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie]
 73type = Buffer
 74stride = 32
 75if $swapmain == 1
 76    filename = M:\AnotherDrive\CuteLittleEiRemapBlend.buf
 77else
 78    run = RaidenPuppetCommandResourceRemapBlend
 79endif
 80
 81[ResourceRaidenShogunRemapBlend.0]
 82type = Buffer
 83stride = 32
 84filename = ..\..\..\..\..\..\..\..\..\2-BunnyRaidenShogun\RaidenShogunRemapBlend.buf
 85
 86[RaidenPuppetCommandResourceRemapBlend]
 87type = Buffer
 88stride = 32
 89filename = Dont\Use\If\Statements\Or\SubCommands\In\Resource\SectionsRemapBlend.buf
 90
 91; --------------------------------------------------------------
 92
 93
 94; --------------- Raiden Boss Fix -----------------
 95; Raiden boss fixed by NK#1321 if you used it for fix your raiden pls give credit for "Nhok0169"
 96; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 and Albert Gold#2696 for support
 97
 98[TextureOverrideRaidenShogunRemapBlend]
 99run = CommandListRaidenShogunRemapBlend
100handling = skip
101draw = 21916,0
102
103[CommandListRaidenShogunRemapBlend]
104if $swapmain == 0
105    if $swapvar == 0 && $swapvarn == 0
106    vb1 = ResourceRaidenShogunRemapBlend.0
107    else
108    vb1 = ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie
109    endif
110else if $swapmain == 1
111    run = SubSubTextureOverrideRemapBlend
112endif
113
114[SubSubTextureOverrideRemapBlend]
115if $swapoffice == 0 && $swapglasses == 0
116    vb1 = ResourceGIMINeedsResourcesToAllStartWithResourceRemapBlend
117endif
118
119
120[GIMINeedsResourcesToAllStartWithResourceRemapBlend]
121type = Buffer
122stride = 32
123filename = ..\AAA\BBBB\CCCCCC\DDDDDRemapRemapBlend.buf
124
125[ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie]
126type = Buffer
127stride = 32
128if $swapmain == 1
129    filename = M:\AnotherDrive\CuteLittleEiRemapBlend.buf
130else
131    run = RaidenPuppetCommandResourceRemapBlend
132endif
133
134[ResourceRaidenShogunRemapBlend.0]
135type = Buffer
136stride = 32
137filename = ..\..\..\..\..\..\..\..\..\2-BunnyRaidenShogun\RaidenShogunRemapBlend.buf
138
139[RaidenPuppetCommandResourceRemapBlend]
140type = Buffer
141stride = 32
142filename = Dont\Use\If\Statements\Or\SubCommands\In\Resource\SectionsRemapBlend.buf
143
144
145; -------------------------------------------------
Code
1import AnimeGameRemap as AGR
2
3iniFile = AGR.IniFile("PartiallyFixedRaiden.ini", modTypes = AGR.ModTypes.getAll())
4iniFile.removeFix(keepBackups = False)
Result
PartiallyFixedRaiden.ini
 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
32    if $swapvar == 0 && $swapvarn == 0
33        vb1 = ResourceRaidenShogunBlend.0
34    else
35        vb1 = ResourceEiBlendsHerBlenderInsteadOfHerSmoothie
36    endif
37else if $swapmain == 1
38    run = SubSubTextureOverride
39endif
40
41[SubSubTextureOverride]
42if $swapoffice == 0 && $swapglasses == 0
43    vb1 = 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
55    filename = M:\AnotherDrive\CuteLittleEi.buf
56else
57    run = 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 ---------


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 = CommandListRaidenShogunRemapBlend
101handling = skip
102draw = 21916,0
103
104[CommandListRaidenShogunRemapBlend]
105if $swapmain == 0
106    if $swapvar == 0 && $swapvarn == 0
107    vb1 = ResourceRaidenShogunRemapBlend.0
108    else
109    vb1 = ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie
110    endif
111else if $swapmain == 1
112    run = SubSubTextureOverrideRemapBlend
113endif
114
115[SubSubTextureOverrideRemapBlend]
116if $swapoffice == 0 && $swapglasses == 0
117    vb1 = ResourceGIMINeedsResourcesToAllStartWithResourceRemapBlend
118endif
119
120
121[GIMINeedsResourcesToAllStartWithResourceRemapBlend]
122type = Buffer
123stride = 32
124filename = ..\AAA\BBBB\CCCCCC\DDDDDRemapRemapBlend.buf
125
126[ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie]
127type = Buffer
128stride = 32
129if $swapmain == 1
130    filename = M:\AnotherDrive\CuteLittleEiRemapBlend.buf
131else
132    run = RaidenPuppetCommandResourceRemapBlend
133endif
134
135[ResourceRaidenShogunRemapBlend.0]
136type = Buffer
137stride = 32
138filename = ..\..\..\..\..\..\..\..\..\2-BunnyRaidenShogun\RaidenShogunRemapBlend.buf
139
140[RaidenPuppetCommandResourceRemapBlend]
141type = Buffer
142stride = 32
143filename = Dont\Use\If\Statements\Or\SubCommands\In\Resource\SectionsRemapBlend.buf
144
145
146; -------------------------------------------------
147"""
Code
148import AnimeGameRemap as AGR
149
150iniFile = AGR.IniFile(txt = showWackyRaidenIniTxtWithFix, modTypes = AGR.ModTypes.getAll())
151fixCode = iniFile.removeFix(keepBackups = False)
152
153print(fixCode)
Result
 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
32    if $swapvar == 0 && $swapvarn == 0
33        vb1 = ResourceRaidenShogunBlend.0
34    else
35        vb1 = ResourceEiBlendsHerBlenderInsteadOfHerSmoothie
36    endif
37else if $swapmain == 1
38    run = SubSubTextureOverride
39endif
40
41[SubSubTextureOverride]
42if $swapoffice == 0 && $swapglasses == 0
43    vb1 = 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
55    filename = M:\AnotherDrive\CuteLittleEi.buf
56else
57    run = 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 ---------


Fix a .ini File Given the File Path

This example is the combined result of these 2 examples:

Input
PartiallyFixedRaiden.ini
  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
 32    if $swapvar == 0 && $swapvarn == 0
 33        vb1 = ResourceRaidenShogunBlend.0
 34    else
 35        vb1 = ResourceEiBlendsHerBlenderInsteadOfHerSmoothie
 36    endif
 37else if $swapmain == 1
 38    run = SubSubTextureOverride
 39endif
 40
 41[SubSubTextureOverride]
 42if $swapoffice == 0 && $swapglasses == 0
 43    vb1 = 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
 55    filename = M:\AnotherDrive\CuteLittleEi.buf
 56else
 57    run = 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[ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie]
 73type = Buffer
 74stride = 32
 75if $swapmain == 1
 76    filename = M:\AnotherDrive\CuteLittleEiRemapBlend.buf
 77else
 78    run = RaidenPuppetCommandResourceRemapBlend
 79endif
 80
 81[ResourceRaidenShogunRemapBlend.0]
 82type = Buffer
 83stride = 32
 84filename = ..\..\..\..\..\..\..\..\..\2-BunnyRaidenShogun\RaidenShogunRemapBlend.buf
 85
 86[RaidenPuppetCommandResourceRemapBlend]
 87type = Buffer
 88stride = 32
 89filename = Dont\Use\If\Statements\Or\SubCommands\In\Resource\SectionsRemapBlend.buf
 90
 91; --------------------------------------------------------------
 92
 93
 94; --------------- Raiden Boss Fix -----------------
 95; Raiden boss fixed by NK#1321 if you used it for fix your raiden pls give credit for "Nhok0169"
 96; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 and Albert Gold#2696 for support
 97
 98[TextureOverrideRaidenShogunRemapBlend]
 99run = CommandListRaidenShogunRemapBlend
100handling = skip
101draw = 21916,0
102
103[CommandListRaidenShogunRemapBlend]
104if $swapmain == 0
105    if $swapvar == 0 && $swapvarn == 0
106    vb1 = ResourceRaidenShogunRemapBlend.0
107    else
108    vb1 = ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie
109    endif
110else if $swapmain == 1
111    run = SubSubTextureOverrideRemapBlend
112endif
113
114[SubSubTextureOverrideRemapBlend]
115if $swapoffice == 0 && $swapglasses == 0
116    vb1 = ResourceGIMINeedsResourcesToAllStartWithResourceRemapBlend
117endif
118
119
120[GIMINeedsResourcesToAllStartWithResourceRemapBlend]
121type = Buffer
122stride = 32
123filename = ..\AAA\BBBB\CCCCCC\DDDDDRemapRemapBlend.buf
124
125[ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie]
126type = Buffer
127stride = 32
128if $swapmain == 1
129    filename = M:\AnotherDrive\CuteLittleEiRemapBlend.buf
130else
131    run = RaidenPuppetCommandResourceRemapBlend
132endif
133
134[ResourceRaidenShogunRemapBlend.0]
135type = Buffer
136stride = 32
137filename = ..\..\..\..\..\..\..\..\..\2-BunnyRaidenShogun\RaidenShogunRemapBlend.buf
138
139[RaidenPuppetCommandResourceRemapBlend]
140type = Buffer
141stride = 32
142filename = Dont\Use\If\Statements\Or\SubCommands\In\Resource\SectionsRemapBlend.buf
143
144
145; -------------------------------------------------
Code
1import AnimeGameRemap as AGR
2
3iniFile = AGR.IniFile("PartiallyFixedRaiden.ini", modTypes = AGR.ModTypes.getAll())
4iniFile.removeFix(keepBackups = False)
5iniFile.parse()
6iniFile.fix()
Result
PartiallyFixedRaiden.ini
  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
 32    if $swapvar == 0 && $swapvarn == 0
 33        vb1 = ResourceRaidenShogunBlend.0
 34    else
 35        vb1 = ResourceEiBlendsHerBlenderInsteadOfHerSmoothie
 36    endif
 37else if $swapmain == 1
 38    run = SubSubTextureOverride
 39endif
 40
 41[SubSubTextureOverride]
 42if $swapoffice == 0 && $swapglasses == 0
 43    vb1 = 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
 55    filename = M:\AnotherDrive\CuteLittleEi.buf
 56else
 57    run = 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
 87    if $swapvar == 0 && $swapvarn == 0
 88        vb1 = ResourceRaidenShogunRaidenBossRemapBlend.0
 89    else
 90        vb1 = ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie
 91    endif
 92else if $swapmain == 1
 93    run = SubSubTextureOverrideRaidenBossRemapBlend
 94endif
 95
 96[SubSubTextureOverrideRaidenBossRemapBlend]
 97if $swapoffice == 0 && $swapglasses == 0
 98    vb1 = ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend
 99endif
100
101
102[ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend]
103type = Buffer
104stride = 32
105filename = ../AAA/BBBB/CCCCCC/DDDDDRemapRaidenBossRemapBlend.buf
106
107[ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie]
108type = Buffer
109stride = 32
110if $swapmain == 1
111    filename = M:/AnotherDrive/CuteLittleEiRaidenBossRemapBlend.buf
112else
113    run = ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend
114endif
115
116[ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend]
117type = Buffer
118stride = 32
119filename = Dont/Use/If/Statements/Or/SubCommands/In/Resource/SectionsRaidenBossRemapBlend.buf
120
121[ResourceRaidenShogunRaidenBossRemapBlend.0]
122type = Buffer
123stride = 32
124filename = ../../../../../../../../../2-BunnyRaidenShogun/RaidenShogunRaidenBossRemapBlend.buf
125
126; **********************
127
128; --------------------------------------------


Fix a .ini File Given Only A String Containing the Content of the File

This example is the combined result of these 2 examples:

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 = CommandListRaidenShogunRemapBlend
101handling = skip
102draw = 21916,0
103
104[CommandListRaidenShogunRemapBlend]
105if $swapmain == 0
106    if $swapvar == 0 && $swapvarn == 0
107    vb1 = ResourceRaidenShogunRemapBlend.0
108    else
109    vb1 = ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie
110    endif
111else if $swapmain == 1
112    run = SubSubTextureOverrideRemapBlend
113endif
114
115[SubSubTextureOverrideRemapBlend]
116if $swapoffice == 0 && $swapglasses == 0
117    vb1 = ResourceGIMINeedsResourcesToAllStartWithResourceRemapBlend
118endif
119
120
121[GIMINeedsResourcesToAllStartWithResourceRemapBlend]
122type = Buffer
123stride = 32
124filename = ..\AAA\BBBB\CCCCCC\DDDDDRemapRemapBlend.buf
125
126[ResourceEiBlendsHerRemapBlenderInsteadOfHerSmoothie]
127type = Buffer
128stride = 32
129if $swapmain == 1
130    filename = M:\AnotherDrive\CuteLittleEiRemapBlend.buf
131else
132    run = RaidenPuppetCommandResourceRemapBlend
133endif
134
135[ResourceRaidenShogunRemapBlend.0]
136type = Buffer
137stride = 32
138filename = ..\..\..\..\..\..\..\..\..\2-BunnyRaidenShogun\RaidenShogunRemapBlend.buf
139
140[RaidenPuppetCommandResourceRemapBlend]
141type = Buffer
142stride = 32
143filename = Dont\Use\If\Statements\Or\SubCommands\In\Resource\SectionsRemapBlend.buf
144
145
146; -------------------------------------------------
147"""
Code
148import AnimeGameRemap as AGR
149
150iniFile = AGR.IniFile(txt = showWackyRaidenIniTxtWithFix, modTypes = AGR.ModTypes.getAll())
151iniFile.removeFix(keepBackups = False)
152iniFile.parse()
153fixResult = iniFile.fix()
154
155print(fixResult)
Result
  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
 32    if $swapvar == 0 && $swapvarn == 0
 33        vb1 = ResourceRaidenShogunBlend.0
 34    else
 35        vb1 = ResourceEiBlendsHerBlenderInsteadOfHerSmoothie
 36    endif
 37else if $swapmain == 1
 38    run = SubSubTextureOverride
 39endif
 40
 41[SubSubTextureOverride]
 42if $swapoffice == 0 && $swapglasses == 0
 43    vb1 = 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
 55    filename = M:\AnotherDrive\CuteLittleEi.buf
 56else
 57    run = 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
 87    if $swapvar == 0 && $swapvarn == 0
 88        vb1 = ResourceRaidenShogunRaidenBossRemapBlend.0
 89    else
 90        vb1 = ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie
 91    endif
 92else if $swapmain == 1
 93    run = SubSubTextureOverrideRaidenBossRemapBlend
 94endif
 95
 96[SubSubTextureOverrideRaidenBossRemapBlend]
 97if $swapoffice == 0 && $swapglasses == 0
 98    vb1 = ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend
 99endif
100
101[ResourceGIMINeedsResourcesToAllStartWithResourceRaidenBossRemapBlend]
102type = Buffer
103stride = 32
104filename = ../AAA/BBBB/CCCCCC/DDDDDRemapRaidenBossRemapBlend.buf
105
106[ResourceEiBlendsHerRaidenBossRemapBlenderInsteadOfHerSmoothie]
107type = Buffer
108stride = 32
109if $swapmain == 1
110    filename = M:/AnotherDrive/CuteLittleEiRaidenBossRemapBlend.buf
111else
112    run = ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend
113endif
114
115[ResourceRaidenPuppetCommandResourceRaidenBossRemapBlend]
116type = Buffer
117stride = 32
118filename = Dont/Use/If/Statements/Or/SubCommands/In/Resource/SectionsRaidenBossRemapBlend.buf
119
120[ResourceRaidenShogunRaidenBossRemapBlend.0]
121type = Buffer
122stride = 32
123filename = ../../../../../../../../../2-BunnyRaidenShogun/RaidenShogunRaidenBossRemapBlend.buf
124
125; **********************
126
127; --------------------------------------------


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.

Input
AmberCN.ini
 1[TextureOverrideAmberCNBlend]
 2vb1 = ResourceAmberCNBlend
 3handling = skip
 4draw = 21916,0
 5
 6[TextureOverrideAmberCNBody]
 7hash = b41d4d94
 8match_first_index = 5670
 9ib = ResourceAmberCNBodyIB
10ps-t0 = ResourceAmberCNBodyDiffuse
11ps-t1 = ResourceAmberCNBodyLightMap
12ps-t2 = ResourceAmberCNBodyMetalMap
13ps-t3 = ResourceAmberCNBodyShadowRamp
14
15[ResourceAmberCNBlend]
16type = Buffer
17stride = 32
18filename = AmberCNBlend.buf
Code
1import AnimeGameRemap as AGR
2
3iniFile = AGR.IniFile("AmberCN.ini", modTypes = AGR.ModTypes.getAll(), hideOrig = True)
4iniFile.parse()
5iniFile.fix()
6
7print(fixResult)
Result
AmberCN.ini
 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 = ResourceAmberCNBodyIB
10;RemapFixHideOrig -->ps-t0 = ResourceAmberCNBodyDiffuse
11;RemapFixHideOrig -->ps-t1 = ResourceAmberCNBodyLightMap
12;RemapFixHideOrig -->ps-t2 = ResourceAmberCNBodyMetalMap
13;RemapFixHideOrig -->ps-t3 = ResourceAmberCNBodyShadowRamp
14;RemapFixHideOrig -->
15[ResourceAmberCNBlend]
16type = Buffer
17stride = 32
18filename = AmberCNBlend.buf
19
20
21; --------------- 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 support
24
25; ***** Amber *****
26[TextureOverrideAmberCNAmberRemapBlend]
27vb1 = ResourceAmberCNAmberRemapBlend
28handling = skip
29draw = 21916,0
30
31[TextureOverrideAmberCNBodyAmberRemapFix]
32hash = b03c7e30
33match_first_index = 5670
34ib = ResourceAmberCNBodyIB
35ps-t0 = ResourceAmberCNBodyDiffuse
36ps-t1 = ResourceAmberCNBodyLightMap
37ps-t2 = ResourceAmberCNBodyMetalMap
38ps-t3 = ResourceAmberCNBodyShadowRamp
39drawindexed = auto
40
41[ResourceAmberCNAmberRemapBlend]
42type = Buffer
43stride = 32
44filename = AmberCNAmberRemapBlend.buf
45
46; *****************
47
48; ---------------------------------------------


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

Input
AmberCN.ini
 1[TextureOverrideAmberCNBlend]
 2vb1 = ResourceAmberCNBlend
 3handling = skip
 4draw = 21916,0
 5
 6[TextureOverrideAmberCNBody]
 7hash = b41d4d94
 8match_first_index = 5670
 9ib = ResourceAmberCNBodyIB
10ps-t0 = ResourceAmberCNBodyDiffuse
11ps-t1 = ResourceAmberCNBodyLightMap
12ps-t2 = ResourceAmberCNBodyMetalMap
13ps-t3 = ResourceAmberCNBodyShadowRamp
14
15[ResourceAmberCNBlend]
16type = Buffer
17stride = 32
18filename = AmberCNBlend.buf
Code
1import AnimeGameRemap as AGR
2
3iniFile = AGR.IniFile("AmberCN.ini", modTypes = AGR.ModTypes.getAll(), version = 4.0)
4iniFile.parse()
5iniFile.fix()
6
7print(fixResult)
Result
AmberCN.ini
 1[TextureOverrideAmberCNBlend]
 2vb1 = ResourceAmberCNBlend
 3handling = skip
 4draw = 21916,0
 5
 6[TextureOverrideAmberCNBody]
 7hash = b41d4d94
 8match_first_index = 5670
 9ib = ResourceAmberCNBodyIB
10ps-t0 = ResourceAmberCNBodyDiffuse
11ps-t1 = ResourceAmberCNBodyLightMap
12ps-t2 = ResourceAmberCNBodyMetalMap
13ps-t3 = ResourceAmberCNBodyShadowRamp
14
15[ResourceAmberCNBlend]
16type = Buffer
17stride = 32
18filename = AmberCNBlend.buf
19
20
21; --------------- 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 support
24
25; ***** Amber *****
26[TextureOverrideAmberCNAmberRemapBlend]
27vb1 = ResourceAmberCNAmberRemapBlend
28handling = skip
29draw = 21916,0
30
31[TextureOverrideAmberCNBodyAmberRemapFix]
32hash = 9976d124
33match_first_index = 5670
34ib = ResourceAmberCNBodyIB
35ps-t0 = ResourceAmberCNBodyDiffuse
36ps-t1 = ResourceAmberCNBodyLightMap
37ps-t2 = ResourceAmberCNBodyMetalMap
38ps-t3 = ResourceAmberCNBodyShadowRamp
39
40[ResourceAmberCNAmberRemapBlend]
41type = Buffer
42stride = 32
43filename = AmberCNAmberRemapBlend.buf
44
45; *****************
46
47; ---------------------------------------------



Fixing Blend.buf Files

Below are different ways of fixing either:

  • A single .*Blend.buf file
    OR

  • The content contained in a single .*Blend.buf file


Get a New and Fixed Blend.buf file Given the File path to an Existing Blend.buf File

This example will make the fixed Blend.buf and put it in the same folder where the program is ran

Input

assume we have this file structure and we are running from a file called example.py

RaidenShogun
|
+--> LittleEiBlend.buf
|
+--> Mod
      |
      +--> example.py
Code
example.py
1import AnimeGameRemap as AGR
2
3AGR.Mod.blendCorrection("../LittleEiBlend.buf", AGR.ModTypes.Raiden.value, "PuppetEiGotRemapped.buf")
Result

A new .buf file called PuppetEiGotRemapped.buf is created that includes the fix to LittleEiBlend.buf

RaidenShogun
|
+--> LittleEiBlend.buf
|
+--> Mod
      |
      +--> example.py
      |
      +--> PuppetEiGotRemapped.buf


Create the Bytes to the Fixed Blend.buf File Given the Bytes of the Existing Blend.buf File

This example will make the fixed Blend.buf and put it in the same folder where the program is ran

Input

assume we have this file structure and we are running from a file called example.py

RaidenShogun
|
+--> LittleEiBlend.buf
|
+--> Mod
      |
      +--> example.py


assume example.py first reads in the bytes from LittleEiBlend.buf

example.py
1inputBytes = None
2with open("../LittleEiBlend.buf", "rb") as f:
3    inputBytes = f.read()
Code
example.py
4import AnimeGameRemap as AGR
5
6fixedBytes = AGR.Mod.blendCorrection(inputBytes, AGR.ModTypes.Raiden.value)
7print(fixedBytes)
Result

The bytes that fixes LittleEiBlend.buf



Fixing Entire Mods

The below examples simulate executing the entire script, but through the API


Fixing Many Mods

In this example, by running the program called example.py, the fix will start from the RaidenShogun/Mod folder and will:

  1. Undo previous changes created by the fix

  2. 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


Input

Assume we have this file structure:

File Structure
RaidenShogun
|
+--> AnotherSubTree
|      |
|      +--> someFolder
|             |
|             +--> disconnectedSubTree.ini
|
+--> Mod
|     |
|     +--> folder
|     |      |
|     |      +--> folderInFolder
|     |             |
|     |             +--> BlendToDisconnectedSubTree.buf
|     |             |
|     |             +--> BlendToDisconnectedSubTree2.buf
|     |
|     +--> folder2
|     |     |
|     |     +--> folderInFolder2
|     |            |
|     |            +--> AnotherFolder
|     |                   |
|     |                   +--> disconnectedSubTree2.ini
|     |
|     +--> pythonScript
|     |     |
|     |     +--> Run
|     |           |
|     |           +--> example.py
|     |
|     +--> ei.ini
|     |
|     +--> ei2.ini
|     |
|     +--> RaidenShogunBlend.buf
|
+--> ParentNodeBlend.buf


Assume below are the content for each .ini file

ei.ini
ei.ini
 1[Constants]
 2global persist $swapvar = 0
 3
 4[KeySwap]
 5condition = $active == 1
 6key = VK_DOWN
 7type = cycle
 8$swapvar = 0,1
 9$creditinfo = 0
10
11
12[TextureOverrideRaidenShogunBlend]
13if $swapvar == 0
14    vb1 = ResourceRaidenShogunBlend.0
15    handling = skip
16    draw = 21916,0
17else if $swapvar == 1
18    vb1 = ResourceRaidenShogunBlend.1
19    handling = skip
20    draw = 21916,0
21endif
22
23[ResourceRaidenShogunBlend.0]
24type = Buffer
25stride = 32
26filename = RaidenShogunBlend.buf
27
28[ResourceRaidenShogunBlend.1]
29type = Buffer
30stride = 32
31filename = ../ParentNodeBlend.buf
ei2.ini
ei2.ini
1[TextureOverrideRaidenShogunBlend]
2vb1 = ResourceRaidenShogunBlend
3handling = skip
4draw = 21916,0
5
6[ResourceRaidenShogunBlend]
7type = Buffer
8stride = 32
9filename = RaidenShogunBlend.buf
disconnectedSubTree.ini
disconnectedSubTree.ini
1[TextureOverrideRaidenShogunBlend]
2vb1 = ResourceRaidenShogunBlend
3handling = skip
4draw = 21916,0
5
6[ResourceRaidenShogunBlend]
7type = Buffer
8stride = 32
9filename = ../../Mod/folder/folderInFolder/BlendToDisconnectedSubTree.buf
disconnectedSubTree2.ini
disconnectedSubTree2.ini
1[TextureOverrideRaidenShogunBlend]
2vb1 = ResourceRaidenShogunBlend
3handling = skip
4draw = 21916,0
5
6[ResourceRaidenShogunBlend]
7type = Buffer
8stride = 32
9filename = ../../../folder/folderInFolder/BlendToDisconnectedSubTree2.buf
Code
example.py
1import AnimeGameRemap as AGR
2
3fixService = AGR.BossFixService(path = "../../", verbose = False, keepBackups = False)
4fixService.fix()
Result

Contains the fixed files for the mods.

New File Structure:

File Strucuture
RaidenShogun
|
+--> AnotherSubTree
|      |
|      +--> someFolder
|             |
|             +--> disconnectedSubTree.ini
|
+--> Mod
|     |
|     +--> folder
|     |      |
|     |      +--> folderInFolder
|     |             |
|     |             +--> BlendToDisconnectedSubTree.buf
|     |             |
|     |             +--> BlendToDisconnectedSubTree2.buf
|     |             |
|     |             +--> RaidenBossRemapBlendToDisconnectedSubTree.buf
|     |             |
|     |             +--> RaidenBossRemapBlendToDisconnectedSubTree2.buf
|     |
|     +--> folder2
|     |     |
|     |     +--> folderInFolder2
|     |            |
|     |            +--> AnotherFolder
|     |                   |
|     |                   +--> disconnectedSubTree2.ini
|     |
|     +--> pythonScript
|     |     |
|     |     +--> Run
|     |           |
|     |           +--> example.py
|     |
|     +--> ei.ini
|     |
|     +--> ei2.ini
|     |
|     +--> RaidenShogunBlend.buf
|     |
|     +--> RaidenShogunRaidenBossRemapBlend.buf
|
+--> ParentNodeBlend.buf
|
+--> ParentNodeRaidenBossRemapBlend.buf


Below contains the new content of the fixed.ini files:

ei.ini
ei.ini
 1[Constants]
 2global persist $swapvar = 0
 3
 4[KeySwap]
 5condition = $active == 1
 6key = VK_DOWN
 7type = cycle
 8$swapvar = 0,1
 9$creditinfo = 0
10
11
12[TextureOverrideRaidenShogunBlend]
13if $swapvar == 0
14    vb1 = ResourceRaidenShogunBlend.0
15    handling = skip
16    draw = 21916,0
17else if $swapvar == 1
18    vb1 = ResourceRaidenShogunBlend.1
19    handling = skip
20    draw = 21916,0
21endif
22
23[ResourceRaidenShogunBlend.0]
24type = Buffer
25stride = 32
26filename = RaidenShogunBlend.buf
27
28[ResourceRaidenShogunBlend.1]
29type = Buffer
30stride = 32
31filename = ../ParentNodeBlend.buf
32
33
34; --------------- 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 support
37
38; ***** RaidenBoss *****
39[TextureOverrideRaidenShogunRaidenBossRemapBlend]
40if $swapvar == 0
41    vb1 = ResourceRaidenShogunRaidenBossRemapBlend.0
42    handling = skip
43    draw = 21916,0
44else if $swapvar == 1
45    vb1 = ResourceRaidenShogunRaidenBossRemapBlend.1
46    handling = skip
47    draw = 21916,0
48endif
49
50[ResourceRaidenShogunRaidenBossRemapBlend.0]
51type = Buffer
52stride = 32
53filename = RaidenShogunRaidenBossRemapBlend.buf
54
55[ResourceRaidenShogunRaidenBossRemapBlend.1]
56type = Buffer
57stride = 32
58filename = ../ParentNodeRaidenBossRemapBlend.buf
59
60; **********************
61
62; --------------------------------------------
ei2.ini
ei2.ini
 1[TextureOverrideRaidenShogunBlend]
 2vb1 = ResourceRaidenShogunBlend
 3handling = skip
 4draw = 21916,0
 5
 6[ResourceRaidenShogunBlend]
 7type = Buffer
 8stride = 32
 9filename = RaidenShogunBlend.buf
10
11
12; --------------- 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 support
15
16; ***** RaidenBoss *****
17[TextureOverrideRaidenShogunRaidenBossRemapBlend]
18vb1 = ResourceRaidenShogunRaidenBossRemapBlend
19handling = skip
20draw = 21916,0
21
22[ResourceRaidenShogunRaidenBossRemapBlend]
23type = Buffer
24stride = 32
25filename = RaidenShogunRaidenBossRemapBlend.buf
26
27; **********************
28
29; --------------------------------------------
disconnectedSubTree.ini
disconnectedSubTree.ini
 1[TextureOverrideRaidenShogunBlend]
 2vb1 = ResourceRaidenShogunBlend
 3handling = skip
 4draw = 21916,0
 5
 6[ResourceRaidenShogunBlend]
 7type = Buffer
 8stride = 32
 9filename = ../../Mod/folder/folderInFolder/BlendToDisconnectedSubTree.buf
10
11
12; --------------- 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 support
15
16; ***** RaidenBoss *****
17[TextureOverrideRaidenShogunRaidenBossRemapBlend]
18vb1 = ResourceRaidenShogunRaidenBossRemapBlend
19handling = skip
20draw = 21916,0
21
22[ResourceRaidenShogunRaidenBossRemapBlend]
23type = Buffer
24stride = 32
25filename = ../../Mod/folder/folderInFolder/RaidenBossRemapBlendToDisconnectedSubTree.buf
26
27; **********************
28
29; --------------------------------------------
disconnectedSubTree2.ini
disconnectedSubTree2.ini
 1[TextureOverrideRaidenShogunBlend]
 2vb1 = ResourceRaidenShogunBlend
 3handling = skip
 4draw = 21916,0
 5
 6[ResourceRaidenShogunBlend]
 7type = Buffer
 8stride = 32
 9filename = ../../../folder/folderInFolder/BlendToDisconnectedSubTree2.buf
10
11
12; --------------- 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 support
15
16; ***** RaidenBoss *****
17[TextureOverrideRaidenShogunRaidenBossRemapBlend]
18vb1 = ResourceRaidenShogunRaidenBossRemapBlend
19handling = skip
20draw = 21916,0
21
22[ResourceRaidenShogunRaidenBossRemapBlend]
23type = Buffer
24stride = 32
25filename = ../../../folder/folderInFolder/RaidenBossRemapBlendToDisconnectedSubTree2.buf
26
27; **********************
28
29; --------------------------------------------


Undo the Fix from Many Mods

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


Input

Assume we have this file structure:

File Strucuture
RaidenShogun
|
+--> AnotherSubTree
|      |
|      +--> someFolder
|             |
|             +--> disconnectedSubTree.ini
|
+--> Mod
|     |
|     +--> folder
|     |      |
|     |      +--> folderInFolder
|     |             |
|     |             +--> BlendToDisconnectedSubTree.buf
|     |             |
|     |             +--> BlendToDisconnectedSubTree2.buf
|     |             |
|     |             +--> RemapBlendToDisconnectedSubTree.buf
|     |             |
|     |             +--> RemapBlendToDisconnectedSubTree2.buf
|     |
|     +--> folder2
|     |     |
|     |     +--> folderInFolder2
|     |            |
|     |            +--> AnotherFolder
|     |                   |
|     |                   +--> disconnectedSubTree2.ini
|     |
|     +--> pythonScript
|     |     |
|     |     +--> Run
|     |           |
|     |           +--> example.py
|     |
|     +--> ei.ini
|     |
|     +--> ei2.ini
|     |
|     +--> RaidenShogunBlend.buf
|     |
|     +--> RaidenShogunRemapBlend.buf
|
+--> ParentNodeBlend.buf
|
+--> ParentNodeRemapBlend.buf


Assume below are the content of each .ini file

ei.ini
ei.ini
 1[Constants]
 2global persist $swapvar = 0
 3
 4[KeySwap]
 5condition = $active == 1
 6key = VK_DOWN
 7type = cycle
 8$swapvar = 0,1
 9$creditinfo = 0
10
11
12[TextureOverrideRaidenShogunBlend]
13if $swapvar == 0
14    vb1 = ResourceRaidenShogunBlend.0
15    handling = skip
16    draw = 21916,0
17else if $swapvar == 1
18    vb1 = ResourceRaidenShogunBlend.1
19    handling = skip
20    draw = 21916,0
21endif
22
23[ResourceRaidenShogunBlend.0]
24type = Buffer
25stride = 32
26filename = RaidenShogunBlend.buf
27
28[ResourceRaidenShogunBlend.1]
29type = Buffer
30stride = 32
31filename = ../ParentNodeBlend.buf
32
33
34; --------------- 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 support
37
38[TextureOverrideRaidenShogunRemapBlend]
39if $swapvar == 0
40    vb1 = ResourceRaidenShogunRemapBlend.0
41    handling = skip
42    draw = 21916,0
43else if $swapvar == 1
44    vb1 = ResourceRaidenShogunRemapBlend.1
45    handling = skip
46    draw = 21916,0
47endif
48
49
50[ResourceRaidenShogunRemapBlend.0]
51type = Buffer
52stride = 32
53filename = RaidenShogunRemapBlend.buf
54
55[ResourceRaidenShogunRemapBlend.1]
56type = Buffer
57stride = 32
58filename = ..\ParentNodeRemapBlend.buf
59
60
61; -------------------------------------------------
ei2.ini
ei2.ini
 1[TextureOverrideRaidenShogunBlend]
 2vb1 = ResourceRaidenShogunBlend
 3handling = skip
 4draw = 21916,0
 5
 6[ResourceRaidenShogunBlend]
 7type = Buffer
 8stride = 32
 9filename = RaidenShogunBlend.buf
10
11
12; --------------- 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 support
15
16[TextureOverrideRaidenShogunRemapBlend]
17vb1 = ResourceRaidenShogunRemapBlend
18handling = skip
19draw = 21916,0
20
21
22[ResourceRaidenShogunRemapBlend]
23type = Buffer
24stride = 32
25filename = RaidenShogunRemapBlend.buf
26
27
28; -------------------------------------------------
disconnectedSubTree.ini
disconnectedSubTree.ini
 1[TextureOverrideRaidenShogunBlend]
 2vb1 = ResourceRaidenShogunBlend
 3handling = skip
 4draw = 21916,0
 5
 6[ResourceRaidenShogunBlend]
 7type = Buffer
 8stride = 32
 9filename = ../../Mod/folder/folderInFolder/BlendToDisconnectedSubTree.buf
10
11
12; --------------- 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 support
15
16[TextureOverrideRaidenShogunRemapBlend]
17vb1 = ResourceRaidenShogunRemapBlend
18handling = skip
19draw = 21916,0
20
21
22[ResourceRaidenShogunRemapBlend]
23type = Buffer
24stride = 32
25filename = ..\..\Mod\folder\folderInFolder\RemapBlendToDisconnectedSubTree.buf
26
27
28; -------------------------------------------------
disconnectedSubTree2.ini
disconnectedSubTree2.ini
 1[TextureOverrideRaidenShogunBlend]
 2vb1 = ResourceRaidenShogunBlend
 3handling = skip
 4draw = 21916,0
 5
 6[ResourceRaidenShogunBlend]
 7type = Buffer
 8stride = 32
 9filename = ../../../folder/folderInFolder/BlendToDisconnectedSubTree2.buf
10
11
12; --------------- 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 support
15
16[TextureOverrideRaidenShogunRemapBlend]
17vb1 = ResourceRaidenShogunRemapBlend
18handling = skip
19draw = 21916,0
20
21
22[ResourceRaidenShogunRemapBlend]
23type = Buffer
24stride = 32
25filename = ..\..\..\folder\folderInFolder\RemapBlendToDisconnectedSubTree2.buf
26
27
28; -------------------------------------------------
Code
example.py
1import AnimeGameRemap as AGR
2
3fixService =AGR.RaidenBossFixService(path = "../../", verbose = True, keepBackups = False, undoOnly = True)
4fixService.fix()
Result

Below contains the new content with the previous changes made by the script removed

File Structure
RaidenShogun
|
+--> AnotherSubTree
|      |
|      +--> someFolder
|             |
|             +--> disconnectedSubTree.ini
|
+--> Mod
|     |
|     +--> folder
|     |      |
|     |      +--> folderInFolder
|     |             |
|     |             +--> BlendToDisconnectedSubTree.buf
|     |             |
|     |             +--> BlendToDisconnectedSubTree2.buf
|     |
|     +--> folder2
|     |     |
|     |     +--> folderInFolder2
|     |            |
|     |            +--> AnotherFolder
|     |                   |
|     |                   +--> disconnectedSubTree2.ini
|     |
|     +--> pythonScript
|     |     |
|     |     +--> Run
|     |           |
|     |           +--> example.py
|     |
|     +--> ei.ini
|     |
|     +--> ei2.ini
|     |
|     +--> RaidenShogunBlend.buf
|
+--> ParentNodeBlend.buf


Below is the new content for each .ini file

ei.ini
ei.ini
 1[Constants]
 2global persist $swapvar = 0
 3
 4[KeySwap]
 5condition = $active == 1
 6key = VK_DOWN
 7type = cycle
 8$swapvar = 0,1
 9$creditinfo = 0
10
11
12[TextureOverrideRaidenShogunBlend]
13if $swapvar == 0
14    vb1 = ResourceRaidenShogunBlend.0
15    handling = skip
16    draw = 21916,0
17else if $swapvar == 1
18    vb1 = ResourceRaidenShogunBlend.1
19    handling = skip
20    draw = 21916,0
21endif
22
23[ResourceRaidenShogunBlend.0]
24type = Buffer
25stride = 32
26filename = RaidenShogunBlend.buf
27
28[ResourceRaidenShogunBlend.1]
29type = Buffer
30stride = 32
31filename = ../ParentNodeBlend.buf
ei2.ini
ei2.ini
1[TextureOverrideRaidenShogunBlend]
2vb1 = ResourceRaidenShogunBlend
3handling = skip
4draw = 21916,0
5
6[ResourceRaidenShogunBlend]
7type = Buffer
8stride = 32
9filename = RaidenShogunBlend.buf
disconnectedSubTree.ini
disconnectedSubTree.ini
1[TextureOverrideRaidenShogunBlend]
2vb1 = ResourceRaidenShogunBlend
3handling = skip
4draw = 21916,0
5
6[ResourceRaidenShogunBlend]
7type = Buffer
8stride = 32
9filename = ../../Mod/folder/folderInFolder/BlendToDisconnectedSubTree.buf
disconnectedSubTree2.ini
disconnectedSubTree2.ini
1[TextureOverrideRaidenShogunBlend]
2vb1 = ResourceRaidenShogunBlend
3handling = skip
4draw = 21916,0
5
6[ResourceRaidenShogunBlend]
7type = Buffer
8stride = 32
9filename = ../../../folder/folderInFolder/BlendToDisconnectedSubTree2.buf


Override the Default Remap for a Character

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.

Reference: https://gamebanana.com/posts/12191289


Caution

Modifying the FixRaidenBoss2.ModType object from the FixRaidenBoss2.ModTypes enum will modify how the software fixes a certain character, shown in the example below. If this side effect is not what you inteneded, it is recommended to create a new copy of the FixRaidenBoss2.ModType object through the FixRaidenBoss2.GIBuilder class, then modify the new copy.


Input

Assume we have this file structure:

File Structure
Mods
|
+--> example.py
|
+--> KiraraAlt.ini
|
+--> Neko.dds
|
+--> KiraraBlend.buf


Assume below is the content of the .ini files

KiraraAlt.ini
Kirara.ini
  1; Kirara
  2
  3; Constants -------------------------
  4
  5; Overrides -------------------------
  6
  7[TextureOverrideKiraraPosition]
  8hash = b57d7fe2
  9vb0 = ResourceKiraraPosition
 10
 11[TextureOverrideKiraraBlend]
 12hash = 01d54938
 13vb1 = ResourceKiraraBlend
 14handling = skip
 15draw = 41553,0
 16
 17[TextureOverrideKiraraTexcoord]
 18hash = 33b3d6e5
 19vb1 = ResourceKiraraTexcoord
 20
 21[TextureOverrideKiraraVertexLimitRaise]
 22hash = 6fb396da
 23
 24[TextureOverrideKiraraIB]
 25hash = f6e9af7d
 26handling = skip
 27drawindexed = auto
 28
 29[TextureOverrideKiraraHead]
 30hash = f6e9af7d
 31match_first_index = 0
 32ib = ResourceKiraraHeadIB
 33ps-t0 = ResourceKiraraHeadNormalMap
 34ps-t1 = ResourceKiraraHeadDiffuse
 35ps-t2 = ResourceKiraraHeadLightMap
 36run = CommandList\global\ORFix\ORFix
 37
 38[TextureOverrideKiraraBody]
 39hash = f6e9af7d
 40match_first_index = 37128
 41ib = ResourceKiraraBodyIB
 42ps-t0 = ResourceKiraraBodyNormalMap
 43ps-t1 = ResourceKiraraBodyDiffuse
 44ps-t2 = ResourceKiraraBodyLightMap
 45run = CommandList\global\ORFix\ORFix
 46
 47[TextureOverrideKiraraDress]
 48hash = f6e9af7d
 49match_first_index = 75234
 50ib = null
 51ps-t0 = ResourceKiraraDressNormalMap
 52ps-t1 = ResourceKiraraDressDiffuse
 53ps-t2 = ResourceKiraraDressLightMap
 54run = CommandList\global\ORFix\ORFix
 55
 56[TextureOverrideKiraraFaceHeadNormalMap]
 57hash = 6eb20522
 58ps-t0 = ResourceKiraraFaceHeadNormalMap
 59
 60
 61; CommandList -----------------------
 62
 63; Resources -------------------------
 64
 65[ResourceKiraraPosition]
 66type = Buffer
 67stride = 40
 68filename = KiraraPosition.buf
 69
 70[ResourceKiraraBlend]
 71type = Buffer
 72stride = 32
 73filename = KiraraBlend.buf
 74
 75[ResourceKiraraTexcoord]
 76type = Buffer
 77stride = 20
 78filename = KiraraTexcoord.buf
 79
 80[ResourceKiraraHeadIB]
 81type = Buffer
 82format = DXGI_FORMAT_R32_UINT
 83filename = KiraraHead.ib
 84
 85[ResourceKiraraBodyIB]
 86type = Buffer
 87format = DXGI_FORMAT_R32_UINT
 88filename = KiraraBody.ib
 89
 90[ResourceKiraraDressIB]
 91type = Buffer
 92format = DXGI_FORMAT_R32_UINT
 93filename = KiraraDress.ib
 94
 95[ResourceKiraraHeadNormalMap]
 96filename = KiraraHeadNormalMap.dds
 97
 98[ResourceKiraraHeadDiffuse]
 99filename = KiraraHeadDiffuse.dds
100
101[ResourceKiraraHeadLightMap]
102filename = KiraraHeadLightMap.dds
103
104[ResourceKiraraBodyNormalMap]
105filename = KiraraBodyNormalMap.dds
106
107[ResourceKiraraBodyDiffuse]
108filename = Neko.dds
109
110[ResourceKiraraBodyLightMap]
111filename = KiraraBodyLightMap.dds
112
113[ResourceKiraraDressNormalMap]
114filename = KiraraDressNormalMap.dds
115
116[ResourceKiraraDressDiffuse]
117filename = KiraraDressDiffuse.dds
118
119[ResourceKiraraDressLightMap]
120filename = KiraraDressLightMap.dds
121
122[ResourceKiraraFaceHeadNormalMap]
123filename = KiraraFaceHeadNormalMap.dds
Code
example.py
 1import AnimeGameRemap as AGR
 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.dds
11#   in your favourite image editor (Paint.net, Photoshop, etc...) or you can tweak the code below
12kiraraModType.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}})
15
16kiraraModType.iniFixBuilder = AGR.IniFixBuilder(AGR.GIMIObjMergeFixer, args = [{"head": ["head", "body"], "body": ["body"]}],
17                                                kwargs = {
18                                                    "preRegEditFilters": [
19                                                        AGR.RegTexEdit({"DarkenDiffuse": ["ps-t1"]})
20                                                    ],
21                                                    "postRegEditFilters": [
22                                                        AGR.RegNewVals({"body": {"ib": "null"}})
23                                                    ]
24                                                })
25
26# ========================================
27
28# fix the mod
29remapService = AGR.RemapService(verbose = True, keepBackups = False)
30remapService.fix()
Result

Below contains the new content with the previous changes made by the script removed

File Structure
Mods
|
+--> example.py
|
+--> KiraraAlt.ini
|
+--> KiraraAltRemapFix1.ini
|
+--> Neko.dds
|
+--> KiraraBootsBodyRemapTexBJ6 Gns.dds.dds
|
+--> KiraraBlend.buf
|
+--> KiraraKiraraBootsRemapBlend.buf


Below is the new content for each .ini file

KiraraAlt.ini
Kirara.ini
  1; Kirara
  2
  3; Constants -------------------------
  4
  5; Overrides -------------------------
  6
  7[TextureOverrideKiraraPosition]
  8hash = b57d7fe2
  9vb0 = ResourceKiraraPosition
 10
 11[TextureOverrideKiraraBlend]
 12hash = 01d54938
 13vb1 = ResourceKiraraBlend
 14handling = skip
 15draw = 41553,0
 16
 17[TextureOverrideKiraraTexcoord]
 18hash = 33b3d6e5
 19vb1 = ResourceKiraraTexcoord
 20
 21[TextureOverrideKiraraVertexLimitRaise]
 22hash = 6fb396da
 23
 24[TextureOverrideKiraraIB]
 25hash = f6e9af7d
 26handling = skip
 27drawindexed = auto
 28
 29[TextureOverrideKiraraHead]
 30hash = f6e9af7d
 31match_first_index = 0
 32ib = ResourceKiraraHeadIB
 33ps-t0 = ResourceKiraraHeadNormalMap
 34ps-t1 = ResourceKiraraHeadDiffuse
 35ps-t2 = ResourceKiraraHeadLightMap
 36run = CommandList\global\ORFix\ORFix
 37
 38[TextureOverrideKiraraBody]
 39hash = f6e9af7d
 40match_first_index = 37128
 41ib = ResourceKiraraBodyIB
 42ps-t0 = ResourceKiraraBodyNormalMap
 43ps-t1 = ResourceKiraraBodyDiffuse
 44ps-t2 = ResourceKiraraBodyLightMap
 45run = CommandList\global\ORFix\ORFix
 46
 47[TextureOverrideKiraraDress]
 48hash = f6e9af7d
 49match_first_index = 75234
 50ib = null
 51ps-t0 = ResourceKiraraDressNormalMap
 52ps-t1 = ResourceKiraraDressDiffuse
 53ps-t2 = ResourceKiraraDressLightMap
 54run = CommandList\global\ORFix\ORFix
 55
 56[TextureOverrideKiraraFaceHeadNormalMap]
 57hash = 6eb20522
 58ps-t0 = ResourceKiraraFaceHeadNormalMap
 59
 60
 61; CommandList -----------------------
 62
 63; Resources -------------------------
 64
 65[ResourceKiraraPosition]
 66type = Buffer
 67stride = 40
 68filename = KiraraPosition.buf
 69
 70[ResourceKiraraBlend]
 71type = Buffer
 72stride = 32
 73filename = KiraraBlend.buf
 74
 75[ResourceKiraraTexcoord]
 76type = Buffer
 77stride = 20
 78filename = KiraraTexcoord.buf
 79
 80[ResourceKiraraHeadIB]
 81type = Buffer
 82format = DXGI_FORMAT_R32_UINT
 83filename = KiraraHead.ib
 84
 85[ResourceKiraraBodyIB]
 86type = Buffer
 87format = DXGI_FORMAT_R32_UINT
 88filename = KiraraBody.ib
 89
 90[ResourceKiraraDressIB]
 91type = Buffer
 92format = DXGI_FORMAT_R32_UINT
 93filename = KiraraDress.ib
 94
 95[ResourceKiraraHeadNormalMap]
 96filename = KiraraHeadNormalMap.dds
 97
 98[ResourceKiraraHeadDiffuse]
 99filename = KiraraHeadDiffuse.dds
100
101[ResourceKiraraHeadLightMap]
102filename = KiraraHeadLightMap.dds
103
104[ResourceKiraraBodyNormalMap]
105filename = KiraraBodyNormalMap.dds
106
107[ResourceKiraraBodyDiffuse]
108filename = Neko.dds
109
110[ResourceKiraraBodyLightMap]
111filename = KiraraBodyLightMap.dds
112
113[ResourceKiraraDressNormalMap]
114filename = KiraraDressNormalMap.dds
115
116[ResourceKiraraDressDiffuse]
117filename = KiraraDressDiffuse.dds
118
119[ResourceKiraraDressLightMap]
120filename = KiraraDressLightMap.dds
121
122[ResourceKiraraFaceHeadNormalMap]
123filename = KiraraFaceHeadNormalMap.dds
124
125
126; --------------- Kirara Remap ---------------
127; Kirara remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Kirara mods pls give credit for "Albert Gold#2696" and "Nhok0169"
128; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support
129
130; ***** KiraraBoots *****
131[TextureOverrideKiraraKiraraBootsRemapBlend]
132hash = 53a2502b
133vb1 = ResourceKiraraKiraraBootsRemapBlend
134handling = skip
135draw = 41553,0
136
137[TextureOverrideKiraraKiraraBootsRemapIB]
138hash = 846979e2
139handling = skip
140drawindexed = auto
141
142[TextureOverrideKiraraPositionKiraraBootsRemapFix]
143hash = f8013ba9
144vb0 = ResourceKiraraPosition
145
146[TextureOverrideKiraraTexcoordKiraraBootsRemapFix]
147hash = 596e8fe0
148vb1 = ResourceKiraraTexcoord
149
150[TextureOverrideKiraraVertexLimitRaiseKiraraBootsRemapFix]
151hash = 4955fc99
152
153[TextureOverrideKiraraDressKiraraBootsRemapFix]
154hash = 846979e2
155match_first_index = 80295
156ib = null
157ps-t0 = ResourceKiraraDressNormalMap
158ps-t1 = ResourceKiraraDressDiffuse
159ps-t2 = ResourceKiraraDressLightMap
160run = CommandList\global\ORFix\ORFix
161
162[TextureOverrideKiraraFaceHeadNormalMapKiraraBootsRemapFix]
163hash = HashNotFound
164ps-t0 = ResourceKiraraFaceHeadNormalMap
165
166[TextureOverrideKiraraHeadKiraraBootsRemapFix]
167hash = 846979e2
168match_first_index = 0
169ib = ResourceKiraraHeadIB
170ps-t0 = ResourceKiraraHeadNormalMap
171ps-t1 = ResourceKiraraHeadDiffuse
172ps-t2 = ResourceKiraraHeadLightMap
173run = CommandList\global\ORFix\ORFix
174
175[TextureOverrideKiraraBodyKiraraBootsRemapFix]
176hash = 846979e2
177match_first_index = 36804
178ib = null
179ps-t0 = ResourceKiraraBodyNormalMap
180ps-t1 = ResourceKiraraBodyDarkenDiffuseKiraraBootsRemapTex0
181ps-t2 = ResourceKiraraBodyLightMap
182run = CommandList\global\ORFix\ORFix
183
184[ResourceKiraraKiraraBootsRemapBlend]
185type = Buffer
186stride = 32
187filename = KiraraKiraraBootsRemapBlend.buf
188
189[ResourceKiraraBodyDarkenDiffuseKiraraBootsRemapTex0]
190filename = KiraraBootsBodyRemapTexBJ6 Gns.dds
191
192; ***********************
193
194; --------------------------------------------
KiraraAltRemapFix1.ini
Kirara.ini
  1; Kirara
  2
  3; Constants -------------------------
  4
  5; Overrides -------------------------
  6
  7[TextureOverrideKiraraPosition]
  8hash = b57d7fe2
  9vb0 = ResourceKiraraPosition
 10
 11[TextureOverrideKiraraBlend]
 12hash = 01d54938
 13vb1 = ResourceKiraraBlend
 14handling = skip
 15draw = 41553,0
 16
 17[TextureOverrideKiraraTexcoord]
 18hash = 33b3d6e5
 19vb1 = ResourceKiraraTexcoord
 20
 21[TextureOverrideKiraraVertexLimitRaise]
 22hash = 6fb396da
 23
 24[TextureOverrideKiraraIB]
 25hash = f6e9af7d
 26handling = skip
 27drawindexed = auto
 28
 29[TextureOverrideKiraraHead]
 30hash = f6e9af7d
 31match_first_index = 0
 32ib = ResourceKiraraHeadIB
 33ps-t0 = ResourceKiraraHeadNormalMap
 34ps-t1 = ResourceKiraraHeadDiffuse
 35ps-t2 = ResourceKiraraHeadLightMap
 36run = CommandList\global\ORFix\ORFix
 37
 38[TextureOverrideKiraraBody]
 39hash = f6e9af7d
 40match_first_index = 37128
 41ib = ResourceKiraraBodyIB
 42ps-t0 = ResourceKiraraBodyNormalMap
 43ps-t1 = ResourceKiraraBodyDiffuse
 44ps-t2 = ResourceKiraraBodyLightMap
 45run = CommandList\global\ORFix\ORFix
 46
 47[TextureOverrideKiraraDress]
 48hash = f6e9af7d
 49match_first_index = 75234
 50ib = null
 51ps-t0 = ResourceKiraraDressNormalMap
 52ps-t1 = ResourceKiraraDressDiffuse
 53ps-t2 = ResourceKiraraDressLightMap
 54run = CommandList\global\ORFix\ORFix
 55
 56[TextureOverrideKiraraFaceHeadNormalMap]
 57hash = 6eb20522
 58ps-t0 = ResourceKiraraFaceHeadNormalMap
 59
 60
 61; CommandList -----------------------
 62
 63; Resources -------------------------
 64
 65[ResourceKiraraPosition]
 66type = Buffer
 67stride = 40
 68filename = KiraraPosition.buf
 69
 70[ResourceKiraraBlend]
 71type = Buffer
 72stride = 32
 73filename = KiraraBlend.buf
 74
 75[ResourceKiraraTexcoord]
 76type = Buffer
 77stride = 20
 78filename = KiraraTexcoord.buf
 79
 80[ResourceKiraraHeadIB]
 81type = Buffer
 82format = DXGI_FORMAT_R32_UINT
 83filename = KiraraHead.ib
 84
 85[ResourceKiraraBodyIB]
 86type = Buffer
 87format = DXGI_FORMAT_R32_UINT
 88filename = KiraraBody.ib
 89
 90[ResourceKiraraDressIB]
 91type = Buffer
 92format = DXGI_FORMAT_R32_UINT
 93filename = KiraraDress.ib
 94
 95[ResourceKiraraHeadNormalMap]
 96filename = KiraraHeadNormalMap.dds
 97
 98[ResourceKiraraHeadDiffuse]
 99filename = KiraraHeadDiffuse.dds
100
101[ResourceKiraraHeadLightMap]
102filename = KiraraHeadLightMap.dds
103
104[ResourceKiraraBodyNormalMap]
105filename = KiraraBodyNormalMap.dds
106
107[ResourceKiraraBodyDiffuse]
108filename = Neko.dds
109
110[ResourceKiraraBodyLightMap]
111filename = KiraraBodyLightMap.dds
112
113[ResourceKiraraDressNormalMap]
114filename = KiraraDressNormalMap.dds
115
116[ResourceKiraraDressDiffuse]
117filename = KiraraDressDiffuse.dds
118
119[ResourceKiraraDressLightMap]
120filename = KiraraDressLightMap.dds
121
122[ResourceKiraraFaceHeadNormalMap]
123filename = KiraraFaceHeadNormalMap.dds
124
125
126; --------------- Kirara Remap ---------------
127; Kirara remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Kirara mods pls give credit for "Albert Gold#2696" and "Nhok0169"
128; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support
129
130; ***** KiraraBoots *****
131[TextureOverrideKiraraKiraraBootsRemapBlend]
132hash = 53a2502b
133vb1 = ResourceKiraraKiraraBootsRemapBlend
134handling = skip
135draw = 41553,0
136
137[TextureOverrideKiraraKiraraBootsRemapIB]
138hash = 846979e2
139handling = skip
140drawindexed = auto
141
142[TextureOverrideKiraraPositionKiraraBootsRemapFix]
143hash = f8013ba9
144vb0 = ResourceKiraraPosition
145
146[TextureOverrideKiraraTexcoordKiraraBootsRemapFix]
147hash = 596e8fe0
148vb1 = ResourceKiraraTexcoord
149
150[TextureOverrideKiraraVertexLimitRaiseKiraraBootsRemapFix]
151hash = 4955fc99
152
153[TextureOverrideKiraraDressKiraraBootsRemapFix]
154hash = 846979e2
155match_first_index = 80295
156ib = null
157ps-t0 = ResourceKiraraDressNormalMap
158ps-t1 = ResourceKiraraDressDiffuse
159ps-t2 = ResourceKiraraDressLightMap
160run = CommandList\global\ORFix\ORFix
161
162[TextureOverrideKiraraFaceHeadNormalMapKiraraBootsRemapFix]
163hash = HashNotFound
164ps-t0 = ResourceKiraraFaceHeadNormalMap
165
166[TextureOverrideKiraraHeadKiraraBootsRemapFix]
167hash = 846979e2
168match_first_index = 0
169ib = ResourceKiraraBodyIB
170ps-t0 = ResourceKiraraBodyNormalMap
171ps-t1 = ResourceKiraraBodyDarkenDiffuseKiraraBootsRemapTex1
172ps-t2 = ResourceKiraraBodyLightMap
173run = CommandList\global\ORFix\ORFix
174
175[ResourceKiraraKiraraBootsRemapBlend]
176type = Buffer
177stride = 32
178filename = KiraraKiraraBootsRemapBlend.buf
179
180[ResourceKiraraBodyDarkenDiffuseKiraraBootsRemapTex1]
181filename = KiraraBootsBodyRemapTexBJ6 Gns.dds
182
183; ***********************
184
185; --------------------------------------------


Forcibly remap a mod to a different character

Caution

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.


Input

Assume we have this file structure:

File Structure
Mods
|
+--> example.py
|
+--> KiraraAlt.ini
|
+--> Neko.dds
|
+--> KiraraBlend.buf


Assume below is the content of the .ini files

KiraraAlt.ini
Kirara.ini
  1; Kirara
  2
  3; Constants -------------------------
  4
  5; Overrides -------------------------
  6
  7[TextureOverrideKiraraPosition]
  8hash = b57d7fe2
  9vb0 = ResourceKiraraPosition
 10
 11[TextureOverrideKiraraBlend]
 12hash = 01d54938
 13vb1 = ResourceKiraraBlend
 14handling = skip
 15draw = 41553,0
 16
 17[TextureOverrideKiraraTexcoord]
 18hash = 33b3d6e5
 19vb1 = ResourceKiraraTexcoord
 20
 21[TextureOverrideKiraraVertexLimitRaise]
 22hash = 6fb396da
 23
 24[TextureOverrideKiraraIB]
 25hash = f6e9af7d
 26handling = skip
 27drawindexed = auto
 28
 29[TextureOverrideKiraraHead]
 30hash = f6e9af7d
 31match_first_index = 0
 32ib = ResourceKiraraHeadIB
 33ps-t0 = ResourceKiraraHeadNormalMap
 34ps-t1 = ResourceKiraraHeadDiffuse
 35ps-t2 = ResourceKiraraHeadLightMap
 36run = CommandList\global\ORFix\ORFix
 37
 38[TextureOverrideKiraraBody]
 39hash = f6e9af7d
 40match_first_index = 37128
 41ib = ResourceKiraraBodyIB
 42ps-t0 = ResourceKiraraBodyNormalMap
 43ps-t1 = ResourceKiraraBodyDiffuse
 44ps-t2 = ResourceKiraraBodyLightMap
 45run = CommandList\global\ORFix\ORFix
 46
 47[TextureOverrideKiraraDress]
 48hash = f6e9af7d
 49match_first_index = 75234
 50ib = null
 51ps-t0 = ResourceKiraraDressNormalMap
 52ps-t1 = ResourceKiraraDressDiffuse
 53ps-t2 = ResourceKiraraDressLightMap
 54run = CommandList\global\ORFix\ORFix
 55
 56[TextureOverrideKiraraFaceHeadNormalMap]
 57hash = 6eb20522
 58ps-t0 = ResourceKiraraFaceHeadNormalMap
 59
 60
 61; CommandList -----------------------
 62
 63; Resources -------------------------
 64
 65[ResourceKiraraPosition]
 66type = Buffer
 67stride = 40
 68filename = KiraraPosition.buf
 69
 70[ResourceKiraraBlend]
 71type = Buffer
 72stride = 32
 73filename = KiraraBlend.buf
 74
 75[ResourceKiraraTexcoord]
 76type = Buffer
 77stride = 20
 78filename = KiraraTexcoord.buf
 79
 80[ResourceKiraraHeadIB]
 81type = Buffer
 82format = DXGI_FORMAT_R32_UINT
 83filename = KiraraHead.ib
 84
 85[ResourceKiraraBodyIB]
 86type = Buffer
 87format = DXGI_FORMAT_R32_UINT
 88filename = KiraraBody.ib
 89
 90[ResourceKiraraDressIB]
 91type = Buffer
 92format = DXGI_FORMAT_R32_UINT
 93filename = KiraraDress.ib
 94
 95[ResourceKiraraHeadNormalMap]
 96filename = KiraraHeadNormalMap.dds
 97
 98[ResourceKiraraHeadDiffuse]
 99filename = KiraraHeadDiffuse.dds
100
101[ResourceKiraraHeadLightMap]
102filename = KiraraHeadLightMap.dds
103
104[ResourceKiraraBodyNormalMap]
105filename = KiraraBodyNormalMap.dds
106
107[ResourceKiraraBodyDiffuse]
108filename = Neko.dds
109
110[ResourceKiraraBodyLightMap]
111filename = KiraraBodyLightMap.dds
112
113[ResourceKiraraDressNormalMap]
114filename = KiraraDressNormalMap.dds
115
116[ResourceKiraraDressDiffuse]
117filename = KiraraDressDiffuse.dds
118
119[ResourceKiraraDressLightMap]
120filename = KiraraDressLightMap.dds
121
122[ResourceKiraraFaceHeadNormalMap]
123filename = KiraraFaceHeadNormalMap.dds
Code
example.py
1import AnimeGameRemap as AGR
2
3fixService = FRB.RemapService(verbose = False, keepBackups = False, forcedType = "rosaria")
4fixService.fix()
Result

Below contains the new content with the previous changes made by the script removed

File Structure
Mods
|
+--> example.py
|
+--> KiraraAlt.ini
|
+--> Neko.dds
|
+--> KiraraBlend.buf
|
+--> KiraraRosariaCNRemapBlend.buf


Below is the new content for each .ini file

KiraraAlt.ini
Kirara.ini
  1; Kirara
  2
  3; Constants -------------------------
  4
  5; Overrides -------------------------
  6
  7[TextureOverrideKiraraPosition]
  8hash = b57d7fe2
  9vb0 = ResourceKiraraPosition
 10
 11[TextureOverrideKiraraBlend]
 12hash = 01d54938
 13vb1 = ResourceKiraraBlend
 14handling = skip
 15draw = 41553,0
 16
 17[TextureOverrideKiraraTexcoord]
 18hash = 33b3d6e5
 19vb1 = ResourceKiraraTexcoord
 20
 21[TextureOverrideKiraraVertexLimitRaise]
 22hash = 6fb396da
 23
 24[TextureOverrideKiraraIB]
 25hash = f6e9af7d
 26handling = skip
 27drawindexed = auto
 28
 29[TextureOverrideKiraraHead]
 30hash = f6e9af7d
 31match_first_index = 0
 32ib = ResourceKiraraHeadIB
 33ps-t0 = ResourceKiraraHeadNormalMap
 34ps-t1 = ResourceKiraraHeadDiffuse
 35ps-t2 = ResourceKiraraHeadLightMap
 36run = CommandList\global\ORFix\ORFix
 37
 38[TextureOverrideKiraraBody]
 39hash = f6e9af7d
 40match_first_index = 37128
 41ib = ResourceKiraraBodyIB
 42ps-t0 = ResourceKiraraBodyNormalMap
 43ps-t1 = ResourceKiraraBodyDiffuse
 44ps-t2 = ResourceKiraraBodyLightMap
 45run = CommandList\global\ORFix\ORFix
 46
 47[TextureOverrideKiraraDress]
 48hash = f6e9af7d
 49match_first_index = 75234
 50ib = null
 51ps-t0 = ResourceKiraraDressNormalMap
 52ps-t1 = ResourceKiraraDressDiffuse
 53ps-t2 = ResourceKiraraDressLightMap
 54run = CommandList\global\ORFix\ORFix
 55
 56[TextureOverrideKiraraFaceHeadNormalMap]
 57hash = 6eb20522
 58ps-t0 = ResourceKiraraFaceHeadNormalMap
 59
 60
 61; CommandList -----------------------
 62
 63; Resources -------------------------
 64
 65[ResourceKiraraPosition]
 66type = Buffer
 67stride = 40
 68filename = KiraraPosition.buf
 69
 70[ResourceKiraraBlend]
 71type = Buffer
 72stride = 32
 73filename = KiraraBlend.buf
 74
 75[ResourceKiraraTexcoord]
 76type = Buffer
 77stride = 20
 78filename = KiraraTexcoord.buf
 79
 80[ResourceKiraraHeadIB]
 81type = Buffer
 82format = DXGI_FORMAT_R32_UINT
 83filename = KiraraHead.ib
 84
 85[ResourceKiraraBodyIB]
 86type = Buffer
 87format = DXGI_FORMAT_R32_UINT
 88filename = KiraraBody.ib
 89
 90[ResourceKiraraDressIB]
 91type = Buffer
 92format = DXGI_FORMAT_R32_UINT
 93filename = KiraraDress.ib
 94
 95[ResourceKiraraHeadNormalMap]
 96filename = KiraraHeadNormalMap.dds
 97
 98[ResourceKiraraHeadDiffuse]
 99filename = KiraraHeadDiffuse.dds
100
101[ResourceKiraraHeadLightMap]
102filename = KiraraHeadLightMap.dds
103
104[ResourceKiraraBodyNormalMap]
105filename = KiraraBodyNormalMap.dds
106
107[ResourceKiraraBodyDiffuse]
108filename = Neko.dds
109
110[ResourceKiraraBodyLightMap]
111filename = KiraraBodyLightMap.dds
112
113[ResourceKiraraDressNormalMap]
114filename = KiraraDressNormalMap.dds
115
116[ResourceKiraraDressDiffuse]
117filename = KiraraDressDiffuse.dds
118
119[ResourceKiraraDressLightMap]
120filename = KiraraDressLightMap.dds
121
122[ResourceKiraraFaceHeadNormalMap]
123filename = KiraraFaceHeadNormalMap.dds
124
125
126; --------------- Rosaria Remap ---------------
127; Rosaria remapped by Albert Gold#2696 and NK#1321. If you used it to remap your Rosaria mods pls give credit for "Albert Gold#2696" and "Nhok0169"
128; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support
129
130; ***** RosariaCN *****
131[TextureOverrideKiraraRosariaCNRemapBlend]
132hash = HashNotFound
133vb1 = ResourceKiraraRosariaCNRemapBlend
134handling = skip
135draw = 41553,0
136
137[TextureOverrideKiraraRosariaCNRemapPosition]
138hash = HashNotFound
139vb0 = ResourceKiraraPosition
140
141[TextureOverrideKiraraRosariaCNRemapTexcoord]
142hash = HashNotFound
143vb1 = ResourceKiraraTexcoord
144
145[TextureOverrideKiraraRosariaCNRemapIB]
146hash = HashNotFound
147handling = skip
148drawindexed = auto
149
150[TextureOverrideKiraraBodyRosariaCNRemapFix]
151hash = bdca273e
152match_first_index = 11025
153ib = ResourceKiraraBodyIB
154ps-t0 = ResourceKiraraBodyNormalMap
155ps-t1 = ResourceKiraraBodyDiffuse
156ps-t2 = ResourceKiraraBodyLightMap
157run = CommandList\global\ORFix\ORFix
158
159[TextureOverrideKiraraDressRosariaCNRemapFix]
160hash = bdca273e
161match_first_index = 46539
162ib = null
163ps-t0 = ResourceKiraraDressNormalMap
164ps-t1 = ResourceKiraraDressDiffuse
165ps-t2 = ResourceKiraraDressLightMap
166run = CommandList\global\ORFix\ORFix
167
168[TextureOverrideKiraraHeadRosariaCNRemapFix]
169hash = bdca273e
170match_first_index = 0
171ib = ResourceKiraraHeadIB
172ps-t0 = ResourceKiraraHeadNormalMap
173ps-t1 = ResourceKiraraHeadDiffuse
174ps-t2 = ResourceKiraraHeadLightMap
175run = CommandList\global\ORFix\ORFix
176
177[ResourceKiraraRosariaCNRemapBlend]
178type = Buffer
179stride = 32
180filename = KiraraRosariaCNRemapBlend.buf
181
182; *********************
183
184; ---------------------------------------------


Remap Only a Few Selected Characters

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.


Input

Assume we have this file structure:

File Structure
Mods
|
+--> Amber
|    |
|    +--> Amber.ini
|    |
|    +--> AmberBlend.buf
|
|
+--> example.py
|
+--> Jean
|    |
|    +--> CuteJean
|    |    |
|    |    +--> CuteJean.ini
|    |
|    +--> SmolJean
|    |    |
|    |    +--> SmolJean.ini
|    |    |
|    |    +--> CuteJeanBlend.buf
|    |
|    +--> merged.ini
|    |
|    +--> SmolJeanBlend.buf
|    |
|    +--> SmollerJean.dds
|
+--> Kequeen
|    |
|    +--> IniOrJoJ
|    |     |
|    |     +--> Cutie.ini
|    |     |
|    |     +--> Patootie.dds
|    |     |
|    |     +--> BestGurl.ini
|    |     |
|    |     +--> CatGirl.dds
|    |     |
|    |     +--> Cutesy.dds
|    |     |
|    |     +--> CutiePie.dds
|    |
|    +--> Buffs
|          |
|          +--> ISwearItsFor.buf
|          |
|          +--> SmallerHitboxes.buf
|
+--> Raiden
|     |
|     +--> KindOfGettingTired.buf
|     |
|     +--> WritingTheseTestCases.ini
|
+--> Yasu
      |
      +--> Endless9999GoldenTruth.ini
      |
      +--> DesDesDesDesDesDes.buf
      |
      +--> DieDaDes.buf
      |
      +--> SentenceToDes.buf
      |
      +--> DaGreatEqualizerIsTheDes.buf


Assume below is the content of the .ini files

Amber.ini
Amber.ini
1[TextureOverrideAmberBlend]
2vb1 = ResourceAmberBlend
3handling = skip
4draw = 21916,0
5
6[ResourceAmberBlend]
7type = Buffer
8stride = 32
9filename = AmberBlend.buf
CuteJean.ini
CuteJean.ini
1[TextureOverrideJeanBlend]
2vb1 = ResourceJeanBlend
3handling = skip
4draw = 21916,0
5
6[ResourceJeanBlend]
7type = Buffer
8stride = 32
9filename = ../SmolJean/CuteJeanBlend.buf
SmolJean.ini
SmolJean.ini
 1[TextureOverrideJeanBlend]
 2vb1 = ResourceJeanBlend
 3handling = skip
 4draw = 21916,0
 5
 6[TextureOverrideJeanBody]
 7hash = 115737ff
 8match_first_index = 7779
 9ib = ResourceJeanSeaBodyIB
10ps-t0 = ResourceJeanSeaBodyDiffuse
11ps-t1 = ResourceJeanSeaBodyLightMap
12
13[ResourceJeanBlend]
14type = Buffer
15stride = 32
16filename = ../SmolJeanBlend.buf
17
18[ResourceJeanSeaBodyLightMap]
19filename = ../SmollerJean.dds
merged.ini
merged.ini
 1[Constants]
 2global persist $swapvar = 0
 3
 4[KeySwap]
 5condition = $active == 1
 6key = VK_DOWN
 7type = cycle
 8$swapvar = 0,1
 9$creditinfo = 0
10
11[TextureOverrideJeanBody]
12if $swapvar == 0
13    hash = 115737ff
14    match_first_index = 7779
15    ib = ResourceJeanSeaBodyIB
16    ps-t0 = ResourceJeanSeaBodyDiffuse
17    ps-t1 = ResourceJeanSeaBodyLightMap
18else if $swapvar == 1
19    hash = 115737ff
20    match_first_index = 7779
21    ib = ResourceJeanSeaBodyIB
22    ps-t0 = ResourceJeanSeaBodyDiffuse
23    ps-t1 = ResourceJeanSeaBodyLightMap
24endif
25
26[TextureOverrideJeanBlend]
27if $swapvar == 0
28    vb1 = ResourceJeanBlend.0
29    handling = skip
30    draw = 21916,0
31else if $swapvar == 1
32    vb1 = ResourceJeanBlend.1
33    handling = skip
34    draw = 21916,0
35endif
36
37[ResourceJeanSeaBodyLightMap]
38filename = SmollerJean.dds
39
40[ResourceJeanBlend.0]
41type = Buffer
42stride = 32
43filename = SmolJeanBlend.buf
44
45[ResourceJeanBlend.1]
46type = Buffer
47stride = 32
48filename = SmolJean/CuteJeanBlend.buf
Cutie.ini
Cutie.ini
 1[Constants]
 2global persist $swapvar = 0
 3
 4[KeySwap]
 5condition = $active == 1
 6key = VK_DOWN
 7type = cycle
 8$swapvar = 0,1
 9$creditinfo = 0
10
11[TextureOverrideKeqingBlend]
12if $swapvar == 0
13    vb1 = ResourceKeqingBlend.0
14    handling = skip
15    draw = 21916,0
16else if $swapvar == 1
17    vb1 = ResourceKeqingBlend.1
18    handling = skip
19    draw = 21916,0
20endif
21
22[TextureOverrideKeqingBody]
23hash = cbf1894b
24match_first_index = 10824
25run = CommandListKeqingBody
26
27[TextureOverrideKeqingHead]
28hash = cbf1894b
29match_first_index = 10824
30run = CommandListKeqingHead
31
32[CommandListKeqingHead]
33if $swapvar == 0
34    ib = ResourceKeqingBodyIB.0
35    ps-t0 = ResourceKeqingHeadDiffuse.0
36    ps-t1 = ResourceKeqingHeadLightMap.0
37    ps-t2 = ResourceKeqingHeadMetalMap.0
38    ps-t3 = ResourceKeqingHeadShadowRamp.0
39else if $swapvar == 1
40    ib = ResourceKeqingHeadIB.3
41    ps-t0 = ResourceKeqingHeadDiffuse.3
42    ps-t1 = ResourceKeqingHeadLightMap.3
43endif
44
45[CommandListKeqingBody]
46if $swapvar == 0
47    ib = ResourceKeqingBodyIB.0
48    ps-t0 = ResourceKeqingBodyDiffuse.0
49    ps-t1 = ResourceKeqingBodyLightMap.0
50    ps-t2 = ResourceKeqingBodyMetalMap.0
51    ps-t3 = ResourceKeqingBodyShadowRamp.0
52else if $swapvar == 1
53    ib = ResourceKeqingBodyIB.3
54    ps-t0 = ResourceKeqingBodyDiffuse.3
55    ps-t1 = ResourceKeqingBodyLightMap.3
56endif
57
58[TextureOverrideKeqingDress]
59hash = cbf1894b
60match_first_index = 48216
61run = CommandListKeqingDress
62
63[CommandListKeqingDress]
64if $swapvar == 0
65    ib = ResourceKeqingDressIB.0
66    ps-t0 = ResourceKeqingDressDiffuse.0
67    ps-t1 = ResourceKeqingDressLightMap.0
68    ps-t2 = ResourceKeqingDressMetalMap.0
69    ps-t3 = ResourceKeqingDressShadowRamp.0
70else if $swapvar == 1
71    ib = ResourceKeqingDressIB.3
72    ps-t0 = ResourceKeqingDressDiffuse.3
73    ps-t1 = ResourceKeqingDressLightMap.3
74endif
75
76[ResourceKeqingBlend.0]
77type = Buffer
78stride = 32
79filename = ../Buffs/ISwearItsFor.buf
80
81[ResourceKeqingBlend.1]
82type = Buffer
83stride = 32
84filename = ../Buffs/SmallerHitboxes.buf
85
86[ResourceKeqingDressDiffuse.0]
87filename = CatGirl.dds
88
89[ResourceKeqingDressDiffuse.3]
90filename = Patootie.dds
91
92[ResourceKeqingHeadDiffuse.0]
93filename = Cutesy.dds
94
95[ResourceKeqingHeadDiffuse.3]
96filename = CutiePie.dds
BestGurl.ini
BestGurl.ini
 1[Constants]
 2global persist $swapvar = 0
 3
 4[KeySwap]
 5condition = $active == 1
 6key = VK_DOWN
 7type = cycle
 8$swapvar = 0,1
 9$creditinfo = 0
10
11[TextureOverrideKeqingBlend]
12if $swapvar == 0
13    vb1 = ResourceKeqingBlend.0
14    handling = skip
15    draw = 21916,0
16else if $swapvar == 1
17    vb1 = ResourceKeqingBlend.1
18    handling = skip
19    draw = 21916,0
20endif
21
22[TextureOverrideKeqingBody]
23hash = cbf1894b
24match_first_index = 10824
25run = CommandListKeqingBody
26
27[CommandListKeqingBody]
28if $swapvar == 0
29    ib = ResourceKeqingBodyIB.0
30    ps-t0 = ResourceKeqingBodyDiffuse.0
31    ps-t1 = ResourceKeqingBodyLightMap.0
32    ps-t2 = ResourceKeqingBodyMetalMap.0
33    ps-t3 = ResourceKeqingBodyShadowRamp.0
34else if $swapvar == 1
35    ib = ResourceKeqingBodyIB.3
36    ps-t0 = ResourceKeqingBodyDiffuse.3
37    ps-t1 = ResourceKeqingBodyLightMap.3
38endif
39
40[TextureOverrideKeqingDress]
41hash = cbf1894b
42match_first_index = 48216
43run = CommandListKeqingDress
44
45[CommandListKeqingDress]
46if $swapvar == 0
47    ib = ResourceKeqingDressIB.0
48    ps-t0 = ResourceKeqingDressDiffuse.0
49    ps-t1 = ResourceKeqingDressLightMap.0
50    ps-t2 = ResourceKeqingDressMetalMap.0
51    ps-t3 = ResourceKeqingDressShadowRamp.0
52else if $swapvar == 1
53    ib = ResourceKeqingDressIB.3
54    ps-t0 = ResourceKeqingDressDiffuse.3
55    ps-t1 = ResourceKeqingDressLightMap.3
56endif
57
58[ResourceKeqingBlend.0]
59type = Buffer
60stride = 32
61filename = ../Buffs/ISwearItsFor.buf
62
63[ResourceKeqingBlend.1]
64type = Buffer
65stride = 32
66filename = ../Buffs/SmallerHitboxes.buf
67
68[ResourceKeqingDressDiffuse.0]
69filename = CatGirl.dds
70
71[ResourceKeqingDressDiffuse.3]
72filename = Patootie.dds
73
74[ResourceKeqingHeadDiffuse.0]
75filename = Cutesy.dds
76
77[ResourceKeqingHeadDiffuse.3]
78filename = CutiePie.dds
WritingTheseTestCases.ini
WritingTheseTestCases.ini
1[TextureOverrideRaidenShogunBlend]
2vb1 = ResourceRaidenShogunBlend
3handling = skip
4draw = 21916,0
5
6[ResourceRaidenShogunBlend]
7type = Buffer
8stride = 32
9filename = KindOfGettingTired.buf
Endless9999GoldenTruth.ini
Endless9999GoldenTruth.ini
 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 = 0
10
11[TextureOverrideShenheBlend]
12if $swapvar == 0
13    vb1 = BeatoPleaseSaveNewbieGamemasterBattlerFromHisSmallBombsLogic
14    handling = skip
15    draw = 21916,0
16else if $swapvar == 1
17    vb1 = DlanorAKnoxDesDesDesDesDes
18    handling = skip
19    draw = 21916,0
20else if $swapvar == 2
21    vb1 = YasuGirlOrBoyBetterLeaveQuestionInTheCatBox
22    handling = skip
23    draw = 21916,0
24else if $swapvar == 3
25    vb1 = RosaDoubleWinchesterRiflesBadass
26    handling = skip
27    draw = 21916,0
28endif
29
30[TextureOverrideShenheDress]
31hash = 33a92492
32match_first_index = 48753
33run = CommandListShenheDress
34
35[CommandListShenheDress]
36if $swapvar == 0
37    ib = ResourceShenheDressIB.0
38    ps-t0 = ResourceShenheDressDiffuse.0
39    ps-t1 = ResourceShenheDressLightMap.0
40    ps-t2 = ResourceShenheDressMetalMap.0
41    ps-t3 = ResourceShenheDressShadowRamp.0
42else if $swapvar == 1
43    ib = ResourceShenheDressIB.1
44    ps-t0 = ResourceShenheDressDiffuse.1
45    ps-t1 = ResourceShenheDressLightMap.1
46    ps-t2 = ResourceShenheDressMetalMap.1
47    ps-t3 = ResourceShenheDressShadowRamp.1
48else if $swapvar == 2
49    ib = ResourceShenheDressIB.2
50    ps-t0 = ResourceShenheDressDiffuse.2
51    ps-t1 = ResourceShenheDressLightMap.2
52    ps-t2 = ResourceShenheDressMetalMap.2
53    ps-t3 = ResourceShenheDressShadowRamp.2
54else if $swapvar == 3
55    ib = ResourceShenheDressIB.3
56    ps-t0 = ResourceShenheDressDiffuse.3
57    ps-t1 = ResourceShenheDressLightMap.3
58    ps-t2 = ResourceShenheDressMetalMap.3
59    ps-t3 = ResourceShenheDressShadowRamp.3
60endif
61
62[BeatoPleaseSaveNewbieGamemasterBattlerFromHisSmallBombsLogic]
63type = Buffer
64stride = 32
65filename = DieDaDes.buf
66
67[DlanorAKnoxDesDesDesDesDes]
68type = Buffer
69stride = 32
70filename = DesDesDesDesDesDes.buf
71
72[YasuGirlOrBoyBetterLeaveQuestionInTheCatBox]
73type = Buffer
74stride = 32
75filename = SentenceToDes.buf
76
77[RosaDoubleWinchesterRiflesBadass]
78type = Buffer
79stride = 32
80filename = DaGreatEqualizerIsTheDes.buf
Code
example.py
1import AnimeGameRemap as AGR
2
3fixService = AGR.RaidenBossFixService(verbose = True, keepBackups = False, undoOnly = True, types = ["kequeen", "aMbEr", "ACTINGGRANDMASTER"])
4fixService.fix()
Result

Below contains the new content with the fix only being applied to Amber, Keqing and Jean

File Strucuture
Mods
|
+--> Amber
|    |
|    +--> Amber.ini
|    |
|    +--> AmberBlend.buf
|    |
|    +--> AmberAmberCNRemapBlend.buf
|
|
+--> example.py
|
+--> Jean
|    |
|    +--> CuteJean
|    |    |
|    |    +--> CuteJean.ini
|    |
|    +--> SmolJean
|    |    |
|    |    +--> SmolJean.ini
|    |    |
|    |    +--> CuteJeanBlend.buf
|    |    |
|    |    +--> CuteJeanJeanCNRemapBlend.buf
|    |    |
|    |    +--> CuteJeanJeanSeaRemapBlend.buf
|    |
|    +--> JeanSeaBodyRemapTexPK_ BNl.dds
|    |
|    +--> merged.ini
|    |
|    +--> SmolJeanBlend.buf
|    |
|    +--> SmolJeanJeanCNRemapBlend.buf
|    |
|    +--> SmolJeanJeanSeaRemapBlend.buf
|    |
|    +--> SmollerJean.dds
|
+--> Kequeen
|    |
|    +--> IniOrJoJ
|    |     |
|    |     +--> Cutie.ini
|    |     |
|    |     +--> Patootie.dds
|    |     |
|    |     +--> BestGurl.ini
|    |     |
|    |     +--> CatGirl.dds
|    |     |
|    |     +--> CutieRemapFix1.ini
|    |     |
|    |     +--> BestGurlRemapFix1.ini
|    |     |
|    |     +--> Cutesy.dds
|    |     |
|    |     +--> KeqingOpulentDressRemapTexHl4 BUx.dds
|    |     |
|    |     +--> KeqingOpulentDressRemapTexNQe BUx.dds
|    |     |
|    |     +--> CutiePie.dds
|    |     |
|    |     +--> KeqingOpulentHeadRemapTexCKA HQ7.dds
|    |     |
|    |     +--> KeqingOpulentHeadRemapTexKZA HQ7.dds
|    |
|    +--> Buffs
|          |
|          +--> ISwearItsFor.buf
|          |
|          +--> SmallerHitboxes.buf
|          |
|          +--> ISwearItsForKeqingOpulentRemapBlend.buf
|          |
|          +--> SmallerHitboxesKeqingOpulentRemapBlend.buf
|
+--> Raiden
|     |
|     +--> KindOfGettingTired.buf
|     |
|     +--> WritingTheseTestCases.ini
|
+--> Yasu
      |
      +--> Endless9999GoldenTruth.ini
      |
      +--> DesDesDesDesDesDes.buf
      |
      +--> DieDaDes.buf
      |
      +--> SentenceToDes.buf
      |
      +--> DaGreatEqualizerIsTheDes.buf


Below is the new content of the .ini files (and newly generated .ini files)

Amber.ini
Amber.ini
 1[TextureOverrideAmberBlend]
 2vb1 = ResourceAmberBlend
 3handling = skip
 4draw = 21916,0
 5
 6[ResourceAmberBlend]
 7type = Buffer
 8stride = 32
 9filename = AmberBlend.buf
10
11
12; --------------- 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 support
15
16; ***** AmberCN *****
17[TextureOverrideAmberAmberCNRemapBlend]
18vb1 = ResourceAmberAmberCNRemapBlend
19handling = skip
20draw = 21916,0
21
22[ResourceAmberAmberCNRemapBlend]
23type = Buffer
24stride = 32
25filename = AmberAmberCNRemapBlend.buf
26
27; *******************
28
29; -------------------------------------------
CuteJean.ini
CuteJean.ini
 1[TextureOverrideJeanBlend]
 2vb1 = ResourceJeanBlend
 3handling = skip
 4draw = 21916,0
 5
 6[ResourceJeanBlend]
 7type = Buffer
 8stride = 32
 9filename = ../SmolJean/CuteJeanBlend.buf
10
11
12; --------------- 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 support
15
16; ***** JeanCN *****
17[TextureOverrideJeanJeanCNRemapBlend]
18vb1 = ResourceJeanJeanCNRemapBlend
19handling = skip
20draw = 21916,0
21
22[ResourceJeanJeanCNRemapBlend]
23type = Buffer
24stride = 32
25filename = ../SmolJean/CuteJeanJeanCNRemapBlend.buf
26
27; ******************
28
29; ***** JeanSea *****
30[TextureOverrideJeanJeanSeaRemapBlend]
31vb1 = ResourceJeanJeanSeaRemapBlend
32handling = skip
33draw = 21916,0
34
35[ResourceJeanJeanSeaRemapBlend]
36type = Buffer
37stride = 32
38filename = ../SmolJean/CuteJeanJeanSeaRemapBlend.buf
39
40; *******************
41
42; ------------------------------------------
SmolJean.ini
SmolJean.ini
 1[TextureOverrideJeanBlend]
 2vb1 = ResourceJeanBlend
 3handling = skip
 4draw = 21916,0
 5
 6[TextureOverrideJeanBody]
 7hash = 115737ff
 8match_first_index = 7779
 9ib = ResourceJeanSeaBodyIB
10ps-t0 = ResourceJeanSeaBodyDiffuse
11ps-t1 = ResourceJeanSeaBodyLightMap
12
13[ResourceJeanBlend]
14type = Buffer
15stride = 32
16filename = ../SmolJeanBlend.buf
17
18[ResourceJeanSeaBodyLightMap]
19filename = ../SmollerJean.dds
20
21
22; --------------- 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 support
25
26; ***** JeanCN *****
27[TextureOverrideJeanJeanCNRemapBlend]
28vb1 = ResourceJeanJeanCNRemapBlend
29handling = skip
30draw = 21916,0
31
32[TextureOverrideJeanBodyJeanCNRemapFix]
33hash = aad861e0
34match_first_index = 7779
35ib = ResourceJeanSeaBodyIB
36ps-t0 = ResourceJeanSeaBodyDiffuse
37ps-t1 = ResourceJeanSeaBodyLightMap
38
39[ResourceJeanJeanCNRemapBlend]
40type = Buffer
41stride = 32
42filename = ../SmolJeanJeanCNRemapBlend.buf
43
44; ******************
45
46; ***** JeanSea *****
47[TextureOverrideJeanJeanSeaRemapBlend]
48vb1 = ResourceJeanJeanSeaRemapBlend
49handling = skip
50draw = 21916,0
51
52[TextureOverrideJeanBodyJeanSeaRemapFix]
53hash = 69c0c24e
54match_first_index = 7662
55ib = ResourceJeanSeaBodyIB
56ps-t0 = ResourceJeanSeaBodyDiffuse
57ps-t1 = ResourceJeanBodyShadeLightMapJeanSeaRemapTex0
58
59[TextureOverrideJeanDressJeanSeaRemapFix]
60hash = 69c0c24e
61match_first_index = 52542
62ib = null
63ps-t0 = ResourceJeanSeaBodyDiffuse
64ps-t1 = ResourceJeanSeaBodyLightMap
65
66[ResourceJeanJeanSeaRemapBlend]
67type = Buffer
68stride = 32
69filename = ../SmolJeanJeanSeaRemapBlend.buf
70
71[ResourceJeanBodyShadeLightMapJeanSeaRemapTex0]
72filename = ../JeanSeaBodyRemapTexPK_ BNl.dds
73
74; *******************
75
76; ------------------------------------------
merged.ini
merged.ini
  1[Constants]
  2global persist $swapvar = 0
  3
  4[KeySwap]
  5condition = $active == 1
  6key = VK_DOWN
  7type = cycle
  8$swapvar = 0,1
  9$creditinfo = 0
 10
 11[TextureOverrideJeanBody]
 12if $swapvar == 0
 13    hash = 115737ff
 14    match_first_index = 7779
 15    ib = ResourceJeanSeaBodyIB
 16    ps-t0 = ResourceJeanSeaBodyDiffuse
 17    ps-t1 = ResourceJeanSeaBodyLightMap
 18else if $swapvar == 1
 19    hash = 115737ff
 20    match_first_index = 7779
 21    ib = ResourceJeanSeaBodyIB
 22    ps-t0 = ResourceJeanSeaBodyDiffuse
 23    ps-t1 = ResourceJeanSeaBodyLightMap
 24endif
 25
 26[TextureOverrideJeanBlend]
 27if $swapvar == 0
 28    vb1 = ResourceJeanBlend.0
 29    handling = skip
 30    draw = 21916,0
 31else if $swapvar == 1
 32    vb1 = ResourceJeanBlend.1
 33    handling = skip
 34    draw = 21916,0
 35endif
 36
 37[ResourceJeanSeaBodyLightMap]
 38filename = SmollerJean.dds
 39
 40[ResourceJeanBlend.0]
 41type = Buffer
 42stride = 32
 43filename = SmolJeanBlend.buf
 44
 45[ResourceJeanBlend.1]
 46type = Buffer
 47stride = 32
 48filename = SmolJean/CuteJeanBlend.buf
 49
 50
 51; --------------- Jean Remap ---------------
 52; 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"
 53; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support
 54
 55; ***** JeanCN *****
 56[TextureOverrideJeanJeanCNRemapBlend]
 57if $swapvar == 0
 58    vb1 = ResourceJeanJeanCNRemapBlend.0
 59    handling = skip
 60    draw = 21916,0
 61else if $swapvar == 1
 62    vb1 = ResourceJeanJeanCNRemapBlend.1
 63    handling = skip
 64    draw = 21916,0
 65endif
 66
 67[TextureOverrideJeanBodyJeanCNRemapFix]
 68if $swapvar == 0
 69    hash = aad861e0
 70    match_first_index = 7779
 71    ib = ResourceJeanSeaBodyIB
 72    ps-t0 = ResourceJeanSeaBodyDiffuse
 73    ps-t1 = ResourceJeanSeaBodyLightMap
 74else if $swapvar == 1
 75    hash = aad861e0
 76    match_first_index = 7779
 77    ib = ResourceJeanSeaBodyIB
 78    ps-t0 = ResourceJeanSeaBodyDiffuse
 79    ps-t1 = ResourceJeanSeaBodyLightMap
 80endif
 81
 82[ResourceJeanJeanCNRemapBlend.0]
 83type = Buffer
 84stride = 32
 85filename = SmolJeanJeanCNRemapBlend.buf
 86
 87[ResourceJeanJeanCNRemapBlend.1]
 88type = Buffer
 89stride = 32
 90filename = SmolJean/CuteJeanJeanCNRemapBlend.buf
 91
 92; ******************
 93
 94; ***** JeanSea *****
 95[TextureOverrideJeanJeanSeaRemapBlend]
 96if $swapvar == 0
 97    vb1 = ResourceJeanJeanSeaRemapBlend.0
 98    handling = skip
 99    draw = 21916,0
100else if $swapvar == 1
101    vb1 = ResourceJeanJeanSeaRemapBlend.1
102    handling = skip
103    draw = 21916,0
104endif
105
106[TextureOverrideJeanBodyJeanSeaRemapFix]
107if $swapvar == 0
108    hash = 69c0c24e
109    match_first_index = 7662
110    ib = ResourceJeanSeaBodyIB
111    ps-t0 = ResourceJeanSeaBodyDiffuse
112    ps-t1 = ResourceJeanBodyShadeLightMapJeanSeaRemapTex0
113else if $swapvar == 1
114    hash = 69c0c24e
115    match_first_index = 7662
116    ib = ResourceJeanSeaBodyIB
117    ps-t0 = ResourceJeanSeaBodyDiffuse
118    ps-t1 = ResourceJeanBodyShadeLightMapJeanSeaRemapTex0
119endif
120
121[TextureOverrideJeanDressJeanSeaRemapFix]
122if $swapvar == 0
123    hash = 69c0c24e
124    match_first_index = 52542
125    ib = null
126    ps-t0 = ResourceJeanSeaBodyDiffuse
127    ps-t1 = ResourceJeanSeaBodyLightMap
128else if $swapvar == 1
129    hash = 69c0c24e
130    match_first_index = 52542
131    ib = null
132    ps-t0 = ResourceJeanSeaBodyDiffuse
133    ps-t1 = ResourceJeanSeaBodyLightMap
134endif
135
136[ResourceJeanJeanSeaRemapBlend.0]
137type = Buffer
138stride = 32
139filename = SmolJeanJeanSeaRemapBlend.buf
140
141[ResourceJeanJeanSeaRemapBlend.1]
142type = Buffer
143stride = 32
144filename = SmolJean/CuteJeanJeanSeaRemapBlend.buf
145
146[ResourceJeanBodyShadeLightMapJeanSeaRemapTex0]
147filename = JeanSeaBodyRemapTexPK_ BNl.dds
148
149; *******************
150
151; ------------------------------------------
Cutie.ini
Cutie.ini
  1[Constants]
  2global persist $swapvar = 0
  3
  4[KeySwap]
  5condition = $active == 1
  6key = VK_DOWN
  7type = cycle
  8$swapvar = 0,1
  9$creditinfo = 0
 10
 11[TextureOverrideKeqingBlend]
 12if $swapvar == 0
 13    vb1 = ResourceKeqingBlend.0
 14    handling = skip
 15    draw = 21916,0
 16else if $swapvar == 1
 17    vb1 = ResourceKeqingBlend.1
 18    handling = skip
 19    draw = 21916,0
 20endif
 21
 22[TextureOverrideKeqingBody]
 23hash = cbf1894b
 24match_first_index = 10824
 25run = CommandListKeqingBody
 26
 27[TextureOverrideKeqingHead]
 28hash = cbf1894b
 29match_first_index = 10824
 30run = CommandListKeqingHead
 31
 32[CommandListKeqingHead]
 33if $swapvar == 0
 34    ib = ResourceKeqingBodyIB.0
 35    ps-t0 = ResourceKeqingHeadDiffuse.0
 36    ps-t1 = ResourceKeqingHeadLightMap.0
 37    ps-t2 = ResourceKeqingHeadMetalMap.0
 38    ps-t3 = ResourceKeqingHeadShadowRamp.0
 39else if $swapvar == 1
 40    ib = ResourceKeqingHeadIB.3
 41    ps-t0 = ResourceKeqingHeadDiffuse.3
 42    ps-t1 = ResourceKeqingHeadLightMap.3
 43endif
 44
 45[CommandListKeqingBody]
 46if $swapvar == 0
 47    ib = ResourceKeqingBodyIB.0
 48    ps-t0 = ResourceKeqingBodyDiffuse.0
 49    ps-t1 = ResourceKeqingBodyLightMap.0
 50    ps-t2 = ResourceKeqingBodyMetalMap.0
 51    ps-t3 = ResourceKeqingBodyShadowRamp.0
 52else if $swapvar == 1
 53    ib = ResourceKeqingBodyIB.3
 54    ps-t0 = ResourceKeqingBodyDiffuse.3
 55    ps-t1 = ResourceKeqingBodyLightMap.3
 56endif
 57
 58[TextureOverrideKeqingDress]
 59hash = cbf1894b
 60match_first_index = 48216
 61run = CommandListKeqingDress
 62
 63[CommandListKeqingDress]
 64if $swapvar == 0
 65    ib = ResourceKeqingDressIB.0
 66    ps-t0 = ResourceKeqingDressDiffuse.0
 67    ps-t1 = ResourceKeqingDressLightMap.0
 68    ps-t2 = ResourceKeqingDressMetalMap.0
 69    ps-t3 = ResourceKeqingDressShadowRamp.0
 70else if $swapvar == 1
 71    ib = ResourceKeqingDressIB.3
 72    ps-t0 = ResourceKeqingDressDiffuse.3
 73    ps-t1 = ResourceKeqingDressLightMap.3
 74endif
 75
 76[ResourceKeqingBlend.0]
 77type = Buffer
 78stride = 32
 79filename = ../Buffs/ISwearItsFor.buf
 80
 81[ResourceKeqingBlend.1]
 82type = Buffer
 83stride = 32
 84filename = ../Buffs/SmallerHitboxes.buf
 85
 86[ResourceKeqingDressDiffuse.0]
 87filename = CatGirl.dds
 88
 89[ResourceKeqingDressDiffuse.3]
 90filename = Patootie.dds
 91
 92[ResourceKeqingHeadDiffuse.0]
 93filename = Cutesy.dds
 94
 95[ResourceKeqingHeadDiffuse.3]
 96filename = CutiePie.dds
 97
 98
 99; --------------- Keqing Remap ---------------
100; 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"
101; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support
102
103; ***** KeqingOpulent *****
104[TextureOverrideKeqingKeqingOpulentRemapBlend]
105if $swapvar == 0
106    vb1 = ResourceKeqingKeqingOpulentRemapBlend.0
107    handling = skip
108    draw = 21916,0
109else if $swapvar == 1
110    vb1 = ResourceKeqingKeqingOpulentRemapBlend.1
111    handling = skip
112    draw = 21916,0
113endif
114
115[TextureOverrideKeqingBodyKeqingOpulentRemapFix]
116hash = 7c6fc8c3
117match_first_index = 19623
118run = CommandListKeqingBodyKeqingOpulentRemapFix
119
120[CommandListKeqingBodyKeqingOpulentRemapFix]
121if $swapvar == 0
122    ib = ResourceKeqingBodyIB.0
123    ps-t0 = ResourceKeqingBodyDiffuse.0
124    ps-t1 = ResourceKeqingBodyLightMap.0
125    ps-t2 = ResourceKeqingBodyMetalMap.0
126    ps-t3 = ResourceKeqingBodyShadowRamp.0
127else if $swapvar == 1
128    ib = ResourceKeqingBodyIB.3
129    ps-t0 = ResourceKeqingBodyDiffuse.3
130    ps-t1 = ResourceKeqingBodyLightMap.3
131endif
132
133[TextureOverrideKeqingHeadKeqingOpulentRemapFix]
134hash = 7c6fc8c3
135match_first_index = 0
136run = CommandListKeqingHeadKeqingOpulentRemapFix
137
138[CommandListKeqingHeadKeqingOpulentRemapFix]
139if $swapvar == 0
140    ib = ResourceKeqingDressIB.0
141    ps-t0 = ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex0
142    ps-t1 = ResourceKeqingDressLightMap.0
143    ps-t2 = ResourceKeqingDressMetalMap.0
144    ps-t3 = ResourceKeqingDressShadowRamp.0
145else if $swapvar == 1
146    ib = ResourceKeqingDressIB.3
147    ps-t0 = ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex1
148    ps-t1 = ResourceKeqingDressLightMap.3
149endif
150
151[ResourceKeqingKeqingOpulentRemapBlend.0]
152type = Buffer
153stride = 32
154filename = ../Buffs/ISwearItsForKeqingOpulentRemapBlend.buf
155
156[ResourceKeqingKeqingOpulentRemapBlend.1]
157type = Buffer
158stride = 32
159filename = ../Buffs/SmallerHitboxesKeqingOpulentRemapBlend.buf
160
161[ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex0]
162filename = KeqingOpulentDressRemapTexNQe BUx.dds
163
164[ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex1]
165filename = KeqingOpulentDressRemapTexHl4 BUx.dds
166
167; *************************
168
169; --------------------------------------------
CutieRemapFix1.ini
CutieRemapFix1.ini
  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
 35    vb1 = ResourceKeqingBlend.0
 36    handling = skip
 37    draw = 21916,0
 38else if $swapvar == 1
 39    vb1 = ResourceKeqingBlend.1
 40    handling = skip
 41    draw = 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
 56    ib = ResourceKeqingBodyIB.0
 57    ps-t0 = ResourceKeqingHeadDiffuse.0
 58    ps-t1 = ResourceKeqingHeadLightMap.0
 59    ps-t2 = ResourceKeqingHeadMetalMap.0
 60    ps-t3 = ResourceKeqingHeadShadowRamp.0
 61else if $swapvar == 1
 62    ib = ResourceKeqingHeadIB.3
 63    ps-t0 = ResourceKeqingHeadDiffuse.3
 64    ps-t1 = ResourceKeqingHeadLightMap.3
 65endif
 66
 67[CommandListKeqingBody]
 68if $swapvar == 0
 69    ib = ResourceKeqingBodyIB.0
 70    ps-t0 = ResourceKeqingBodyDiffuse.0
 71    ps-t1 = ResourceKeqingBodyLightMap.0
 72    ps-t2 = ResourceKeqingBodyMetalMap.0
 73    ps-t3 = ResourceKeqingBodyShadowRamp.0
 74else if $swapvar == 1
 75    ib = ResourceKeqingBodyIB.3
 76    ps-t0 = ResourceKeqingBodyDiffuse.3
 77    ps-t1 = ResourceKeqingBodyLightMap.3
 78endif
 79
 80[TextureOverrideKeqingDress]
 81hash = cbf1894b
 82match_first_index = 48216
 83run = CommandListKeqingDress
 84
 85[CommandListKeqingDress]
 86if $swapvar == 0
 87    ib = ResourceKeqingDressIB.0
 88    ps-t0 = ResourceKeqingDressDiffuse.0
 89    ps-t1 = ResourceKeqingDressLightMap.0
 90    ps-t2 = ResourceKeqingDressMetalMap.0
 91    ps-t3 = ResourceKeqingDressShadowRamp.0
 92else if $swapvar == 1
 93    ib = ResourceKeqingDressIB.3
 94    ps-t0 = ResourceKeqingDressDiffuse.3
 95    ps-t1 = ResourceKeqingDressLightMap.3
 96endif
 97
 98[ResourceKeqingBlend.0]
 99type = Buffer
100stride = 32
101filename = ../Buffs/ISwearItsFor.buf
102
103[ResourceKeqingBlend.1]
104type = Buffer
105stride = 32
106filename = ../Buffs/SmallerHitboxes.buf
107
108[ResourceKeqingDressDiffuse.0]
109filename = CatGirl.dds
110
111[ResourceKeqingDressDiffuse.3]
112filename = Patootie.dds
113
114[ResourceKeqingHeadDiffuse.0]
115filename = Cutesy.dds
116
117[ResourceKeqingHeadDiffuse.3]
118filename = CutiePie.dds
119
120
121; --------------- 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 support
124
125; ***** KeqingOpulent *****
126[TextureOverrideKeqingKeqingOpulentRemapBlend]
127if $swapvar == 0
128    vb1 = ResourceKeqingKeqingOpulentRemapBlend.0
129    handling = skip
130    draw = 21916,0
131else if $swapvar == 1
132    vb1 = ResourceKeqingKeqingOpulentRemapBlend.1
133    handling = skip
134    draw = 21916,0
135endif
136
137[TextureOverrideKeqingBodyKeqingOpulentRemapFix]
138hash = 7c6fc8c3
139match_first_index = 19623
140run = CommandListKeqingBodyKeqingOpulentRemapFix
141
142[CommandListKeqingBodyKeqingOpulentRemapFix]
143if $swapvar == 0
144    ib = ResourceKeqingBodyIB.0
145    ps-t0 = ResourceKeqingBodyDiffuse.0
146    ps-t1 = ResourceKeqingBodyLightMap.0
147    ps-t2 = ResourceKeqingBodyMetalMap.0
148    ps-t3 = ResourceKeqingBodyShadowRamp.0
149else if $swapvar == 1
150    ib = ResourceKeqingBodyIB.3
151    ps-t0 = ResourceKeqingBodyDiffuse.3
152    ps-t1 = ResourceKeqingBodyLightMap.3
153endif
154
155[TextureOverrideKeqingHeadKeqingOpulentRemapFix]
156hash = 7c6fc8c3
157match_first_index = 0
158run = CommandListKeqingHeadKeqingOpulentRemapFix
159
160[CommandListKeqingHeadKeqingOpulentRemapFix]
161if $swapvar == 0
162    ib = ResourceKeqingBodyIB.0
163    ps-t0 = ResourceKeqingHeadOpaqueHeadDiffuseKeqingOpulentRemapTex0
164    ps-t1 = ResourceKeqingHeadLightMap.0
165    ps-t2 = ResourceKeqingHeadMetalMap.0
166    ps-t3 = ResourceKeqingHeadShadowRamp.0
167else if $swapvar == 1
168    ib = ResourceKeqingHeadIB.3
169    ps-t0 = ResourceKeqingHeadOpaqueHeadDiffuseKeqingOpulentRemapTex1
170    ps-t1 = ResourceKeqingHeadLightMap.3
171endif
172
173[ResourceKeqingKeqingOpulentRemapBlend.0]
174type = Buffer
175stride = 32
176filename = ../Buffs/ISwearItsForKeqingOpulentRemapBlend.buf
177
178[ResourceKeqingKeqingOpulentRemapBlend.1]
179type = Buffer
180stride = 32
181filename = ../Buffs/SmallerHitboxesKeqingOpulentRemapBlend.buf
182
183[ResourceKeqingHeadOpaqueHeadDiffuseKeqingOpulentRemapTex0]
184filename = KeqingOpulentHeadRemapTexCKA HQ7.dds
185
186[ResourceKeqingHeadOpaqueHeadDiffuseKeqingOpulentRemapTex1]
187filename = KeqingOpulentHeadRemapTexKZA HQ7.dds
188
189; *************************
190
191; --------------------------------------------
BestGurl.ini
BestGurl.ini
  1[Constants]
  2global persist $swapvar = 0
  3
  4[KeySwap]
  5condition = $active == 1
  6key = VK_DOWN
  7type = cycle
  8$swapvar = 0,1
  9$creditinfo = 0
 10
 11[TextureOverrideKeqingBlend]
 12if $swapvar == 0
 13    vb1 = ResourceKeqingBlend.0
 14    handling = skip
 15    draw = 21916,0
 16else if $swapvar == 1
 17    vb1 = ResourceKeqingBlend.1
 18    handling = skip
 19    draw = 21916,0
 20endif
 21
 22[TextureOverrideKeqingBody]
 23hash = cbf1894b
 24match_first_index = 10824
 25run = CommandListKeqingBody
 26
 27[CommandListKeqingBody]
 28if $swapvar == 0
 29    ib = ResourceKeqingBodyIB.0
 30    ps-t0 = ResourceKeqingBodyDiffuse.0
 31    ps-t1 = ResourceKeqingBodyLightMap.0
 32    ps-t2 = ResourceKeqingBodyMetalMap.0
 33    ps-t3 = ResourceKeqingBodyShadowRamp.0
 34else if $swapvar == 1
 35    ib = ResourceKeqingBodyIB.3
 36    ps-t0 = ResourceKeqingBodyDiffuse.3
 37    ps-t1 = ResourceKeqingBodyLightMap.3
 38endif
 39
 40[TextureOverrideKeqingDress]
 41hash = cbf1894b
 42match_first_index = 48216
 43run = CommandListKeqingDress
 44
 45[CommandListKeqingDress]
 46if $swapvar == 0
 47    ib = ResourceKeqingDressIB.0
 48    ps-t0 = ResourceKeqingDressDiffuse.0
 49    ps-t1 = ResourceKeqingDressLightMap.0
 50    ps-t2 = ResourceKeqingDressMetalMap.0
 51    ps-t3 = ResourceKeqingDressShadowRamp.0
 52else if $swapvar == 1
 53    ib = ResourceKeqingDressIB.3
 54    ps-t0 = ResourceKeqingDressDiffuse.3
 55    ps-t1 = ResourceKeqingDressLightMap.3
 56endif
 57
 58[ResourceKeqingBlend.0]
 59type = Buffer
 60stride = 32
 61filename = ../Buffs/ISwearItsFor.buf
 62
 63[ResourceKeqingBlend.1]
 64type = Buffer
 65stride = 32
 66filename = ../Buffs/SmallerHitboxes.buf
 67
 68[ResourceKeqingDressDiffuse.0]
 69filename = CatGirl.dds
 70
 71[ResourceKeqingDressDiffuse.3]
 72filename = Patootie.dds
 73
 74[ResourceKeqingHeadDiffuse.0]
 75filename = Cutesy.dds
 76
 77[ResourceKeqingHeadDiffuse.3]
 78filename = CutiePie.dds
 79
 80
 81; --------------- Keqing Remap ---------------
 82; 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"
 83; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support
 84
 85; ***** KeqingOpulent *****
 86[TextureOverrideKeqingKeqingOpulentRemapBlend]
 87if $swapvar == 0
 88    vb1 = ResourceKeqingKeqingOpulentRemapBlend.0
 89    handling = skip
 90    draw = 21916,0
 91else if $swapvar == 1
 92    vb1 = ResourceKeqingKeqingOpulentRemapBlend.1
 93    handling = skip
 94    draw = 21916,0
 95endif
 96
 97[TextureOverrideKeqingBodyKeqingOpulentRemapFix]
 98hash = 7c6fc8c3
 99match_first_index = 19623
100run = CommandListKeqingBodyKeqingOpulentRemapFix
101
102[CommandListKeqingBodyKeqingOpulentRemapFix]
103if $swapvar == 0
104    ib = ResourceKeqingBodyIB.0
105    ps-t0 = ResourceKeqingBodyDiffuse.0
106    ps-t1 = ResourceKeqingBodyLightMap.0
107    ps-t2 = ResourceKeqingBodyMetalMap.0
108    ps-t3 = ResourceKeqingBodyShadowRamp.0
109else if $swapvar == 1
110    ib = ResourceKeqingBodyIB.3
111    ps-t0 = ResourceKeqingBodyDiffuse.3
112    ps-t1 = ResourceKeqingBodyLightMap.3
113endif
114
115[TextureOverrideKeqingHeadKeqingOpulentRemapFix]
116hash = 7c6fc8c3
117match_first_index = 0
118run = CommandListKeqingHeadKeqingOpulentRemapFix
119
120[CommandListKeqingHeadKeqingOpulentRemapFix]
121if $swapvar == 0
122    ib = ResourceKeqingDressIB.0
123    ps-t0 = ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex0
124    ps-t1 = ResourceKeqingDressLightMap.0
125    ps-t2 = ResourceKeqingDressMetalMap.0
126    ps-t3 = ResourceKeqingDressShadowRamp.0
127else if $swapvar == 1
128    ib = ResourceKeqingDressIB.3
129    ps-t0 = ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex1
130    ps-t1 = ResourceKeqingDressLightMap.3
131endif
132
133[ResourceKeqingKeqingOpulentRemapBlend.0]
134type = Buffer
135stride = 32
136filename = ../Buffs/ISwearItsForKeqingOpulentRemapBlend.buf
137
138[ResourceKeqingKeqingOpulentRemapBlend.1]
139type = Buffer
140stride = 32
141filename = ../Buffs/SmallerHitboxesKeqingOpulentRemapBlend.buf
142
143[ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex0]
144filename = KeqingOpulentDressRemapTexNQe BUx.dds
145
146[ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex1]
147filename = KeqingOpulentDressRemapTexHl4 BUx.dds
148
149; *************************
150
151; --------------------------------------------
BestGurlRemapFix1.ini
BestGurlRemapFix1.ini
  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
 35    vb1 = ResourceKeqingBlend.0
 36    handling = skip
 37    draw = 21916,0
 38else if $swapvar == 1
 39    vb1 = ResourceKeqingBlend.1
 40    handling = skip
 41    draw = 21916,0
 42endif
 43
 44[TextureOverrideKeqingBody]
 45hash = cbf1894b
 46match_first_index = 10824
 47run = CommandListKeqingBody
 48
 49[CommandListKeqingBody]
 50if $swapvar == 0
 51    ib = ResourceKeqingBodyIB.0
 52    ps-t0 = ResourceKeqingBodyDiffuse.0
 53    ps-t1 = ResourceKeqingBodyLightMap.0
 54    ps-t2 = ResourceKeqingBodyMetalMap.0
 55    ps-t3 = ResourceKeqingBodyShadowRamp.0
 56else if $swapvar == 1
 57    ib = ResourceKeqingBodyIB.3
 58    ps-t0 = ResourceKeqingBodyDiffuse.3
 59    ps-t1 = ResourceKeqingBodyLightMap.3
 60endif
 61
 62[TextureOverrideKeqingDress]
 63hash = cbf1894b
 64match_first_index = 48216
 65run = CommandListKeqingDress
 66
 67[CommandListKeqingDress]
 68if $swapvar == 0
 69    ib = ResourceKeqingDressIB.0
 70    ps-t0 = ResourceKeqingDressDiffuse.0
 71    ps-t1 = ResourceKeqingDressLightMap.0
 72    ps-t2 = ResourceKeqingDressMetalMap.0
 73    ps-t3 = ResourceKeqingDressShadowRamp.0
 74else if $swapvar == 1
 75    ib = ResourceKeqingDressIB.3
 76    ps-t0 = ResourceKeqingDressDiffuse.3
 77    ps-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.dds
101
102
103; --------------- 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 support
106
107; ***** KeqingOpulent *****
108[TextureOverrideKeqingKeqingOpulentRemapBlend]
109if $swapvar == 0
110    vb1 = ResourceKeqingKeqingOpulentRemapBlend.0
111    handling = skip
112    draw = 21916,0
113else if $swapvar == 1
114    vb1 = ResourceKeqingKeqingOpulentRemapBlend.1
115    handling = skip
116    draw = 21916,0
117endif
118
119[TextureOverrideKeqingBodyKeqingOpulentRemapFix]
120hash = 7c6fc8c3
121match_first_index = 19623
122run = CommandListKeqingBodyKeqingOpulentRemapFix
123
124[CommandListKeqingBodyKeqingOpulentRemapFix]
125if $swapvar == 0
126    ib = ResourceKeqingBodyIB.0
127    ps-t0 = ResourceKeqingBodyDiffuse.0
128    ps-t1 = ResourceKeqingBodyLightMap.0
129    ps-t2 = ResourceKeqingBodyMetalMap.0
130    ps-t3 = ResourceKeqingBodyShadowRamp.0
131else if $swapvar == 1
132    ib = ResourceKeqingBodyIB.3
133    ps-t0 = ResourceKeqingBodyDiffuse.3
134    ps-t1 = ResourceKeqingBodyLightMap.3
135endif
136
137[ResourceKeqingKeqingOpulentRemapBlend.0]
138type = Buffer
139stride = 32
140filename = ../Buffs/ISwearItsForKeqingOpulentRemapBlend.buf
141
142[ResourceKeqingKeqingOpulentRemapBlend.1]
143type = Buffer
144stride = 32
145filename = ../Buffs/SmallerHitboxesKeqingOpulentRemapBlend.buf
146
147; *************************
148
149; --------------------------------------------
WritingTheseTestCases.ini
WritingTheseTestCases.ini
1[TextureOverrideRaidenShogunBlend]
2vb1 = ResourceRaidenShogunBlend
3handling = skip
4draw = 21916,0
5
6[ResourceRaidenShogunBlend]
7type = Buffer
8stride = 32
9filename = KindOfGettingTired.buf
Endless9999GoldenTruth.ini
Endless9999GoldenTruth.ini
 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 = 0
10
11[TextureOverrideShenheBlend]
12if $swapvar == 0
13    vb1 = BeatoPleaseSaveNewbieGamemasterBattlerFromHisSmallBombsLogic
14    handling = skip
15    draw = 21916,0
16else if $swapvar == 1
17    vb1 = DlanorAKnoxDesDesDesDesDes
18    handling = skip
19    draw = 21916,0
20else if $swapvar == 2
21    vb1 = YasuGirlOrBoyBetterLeaveQuestionInTheCatBox
22    handling = skip
23    draw = 21916,0
24else if $swapvar == 3
25    vb1 = RosaDoubleWinchesterRiflesBadass
26    handling = skip
27    draw = 21916,0
28endif
29
30[TextureOverrideShenheDress]
31hash = 33a92492
32match_first_index = 48753
33run = CommandListShenheDress
34
35[CommandListShenheDress]
36if $swapvar == 0
37    ib = ResourceShenheDressIB.0
38    ps-t0 = ResourceShenheDressDiffuse.0
39    ps-t1 = ResourceShenheDressLightMap.0
40    ps-t2 = ResourceShenheDressMetalMap.0
41    ps-t3 = ResourceShenheDressShadowRamp.0
42else if $swapvar == 1
43    ib = ResourceShenheDressIB.1
44    ps-t0 = ResourceShenheDressDiffuse.1
45    ps-t1 = ResourceShenheDressLightMap.1
46    ps-t2 = ResourceShenheDressMetalMap.1
47    ps-t3 = ResourceShenheDressShadowRamp.1
48else if $swapvar == 2
49    ib = ResourceShenheDressIB.2
50    ps-t0 = ResourceShenheDressDiffuse.2
51    ps-t1 = ResourceShenheDressLightMap.2
52    ps-t2 = ResourceShenheDressMetalMap.2
53    ps-t3 = ResourceShenheDressShadowRamp.2
54else if $swapvar == 3
55    ib = ResourceShenheDressIB.3
56    ps-t0 = ResourceShenheDressDiffuse.3
57    ps-t1 = ResourceShenheDressLightMap.3
58    ps-t2 = ResourceShenheDressMetalMap.3
59    ps-t3 = ResourceShenheDressShadowRamp.3
60endif
61
62[BeatoPleaseSaveNewbieGamemasterBattlerFromHisSmallBombsLogic]
63type = Buffer
64stride = 32
65filename = DieDaDes.buf
66
67[DlanorAKnoxDesDesDesDesDes]
68type = Buffer
69stride = 32
70filename = DesDesDesDesDesDes.buf
71
72[YasuGirlOrBoyBetterLeaveQuestionInTheCatBox]
73type = Buffer
74stride = 32
75filename = SentenceToDes.buf
76
77[RosaDoubleWinchesterRiflesBadass]
78type = Buffer
79stride = 32
80filename = 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.

Note

To fix only a .ini file to a specific version of the game, go to Fixing a .ini File Without Showing the Mod on the Original Character


Input

Assume we have this file structure:

File Structure
Mods
|
+--> Keqing
|    |
|    +--> changeVersionKeqing.ini
|    |
|    +--> CatGirl.dds
|    |
|    +--> Patootie.dds
|    |
|    +--> Cutesy.dds
|    |
|    +--> CutiePie.dds
|    |
|    +--> example.py
|
+--> Buffs
     |
     +--> SmallerHitboxes.buf


Assume below is the content of the .ini files

changeVersionKeqing.ini
changeVersionKeqing.ini
 1[Constants]
 2global persist $swapvar = 0
 3
 4[KeySwap]
 5condition = $active == 1
 6key = VK_DOWN
 7type = cycle
 8$swapvar = 0,1
 9$creditinfo = 0
10
11[TextureOverrideKeqingBlend]
12if $swapvar == 0
13    vb1 = ResourceKeqingBlend.0
14    handling = skip
15    draw = 21916,0
16else if $swapvar == 1
17    vb1 = ResourceKeqingBlend.1
18    handling = skip
19    draw = 21916,0
20endif
21
22[TextureOverrideKeqingBody]
23hash = cbf1894b
24match_first_index = 10824
25run = CommandListKeqingBody
26
27[CommandListKeqingBody]
28if $swapvar == 0
29    ib = ResourceKeqingBodyIB.0
30    ps-t0 = ResourceKeqingBodyDiffuse.0
31    ps-t1 = ResourceKeqingBodyLightMap.0
32    ps-t2 = ResourceKeqingBodyMetalMap.0
33    ps-t3 = ResourceKeqingBodyShadowRamp.0
34else if $swapvar == 1
35    ib = ResourceKeqingBodyIB.3
36    ps-t0 = ResourceKeqingBodyDiffuse.3
37    ps-t1 = ResourceKeqingBodyLightMap.3
38endif
39
40[TextureOverrideKeqingDress]
41hash = cbf1894b
42match_first_index = 48216
43run = CommandListKeqingDress
44
45[CommandListKeqingDress]
46if $swapvar == 0
47    ib = ResourceKeqingDressIB.0
48    ps-t0 = ResourceKeqingDressDiffuse.0
49    ps-t1 = ResourceKeqingDressLightMap.0
50    ps-t2 = ResourceKeqingDressMetalMap.0
51    ps-t3 = ResourceKeqingDressShadowRamp.0
52else if $swapvar == 1
53    ib = ResourceKeqingDressIB.3
54    ps-t0 = ResourceKeqingDressDiffuse.3
55    ps-t1 = ResourceKeqingDressLightMap.3
56endif
57
58[ResourceKeqingBlend.0]
59type = Buffer
60stride = 32
61filename = ../Buffs/ISwearItsFor.buf
62
63[ResourceKeqingBlend.1]
64type = Buffer
65stride = 32
66filename = ../Buffs/SmallerHitboxes.buf
67
68[ResourceKeqingDressDiffuse.0]
69filename = CatGirl.dds
70
71[ResourceKeqingDressDiffuse.3]
72filename = Patootie.dds
73
74[ResourceKeqingHeadDiffuse.0]
75filename = Cutesy.dds
76
77[ResourceKeqingHeadDiffuse.3]
78filename = CutiePie.dds
Code
example.py
1import AnimeGameRemap as AGR
2
3fixService = AGR.RaidenBossFixService(verbose = True, keepBackups = False, undoOnly = True, hideOrig = True)
4fixService.fix()
Result

Below contains the new content with the mod only applied only to KeqingOpulent, and not on Keqing.

File Structure
Mods
|
+--> Keqing
|    |
|    +--> changeVersionKeqing.ini
|    |
|    +--> changeVersionKeqingRemapFix1.ini
|    |
|    +--> CatGirl.dds
|    |
|    +--> KeqingOpulentDressRemapTexNQe BUx.dds
|    |
|    +--> Patootie.dds
|    |
|    +--> KeqingOpulentDressRemapTexHl4 BUx.dds
|    |
|    +--> Cutesy.dds
|    |
|    +--> CutiePie.dds
|    |
|    +--> example.py
|
+--> Buffs
     |
     +--> SmallerHitboxes.buf
     |
     +--> SmallerHitboxesKeqingOpulentRemapBlend.buf


Below is the new content of the .ini files

changeVersionKeqing.ini
changeVersionKeqing.ini
  1[Constants]
  2global persist $swapvar = 0
  3
  4[KeySwap]
  5condition = $active == 1
  6key = VK_DOWN
  7type = cycle
  8$swapvar = 0,1
  9$creditinfo = 0
 10
 11;RemapFixHideOrig -->[TextureOverrideKeqingBlend]
 12;RemapFixHideOrig -->if $swapvar == 0
 13;RemapFixHideOrig -->    vb1 = ResourceKeqingBlend.0
 14;RemapFixHideOrig -->    handling = skip
 15;RemapFixHideOrig -->    draw = 21916,0
 16;RemapFixHideOrig -->else if $swapvar == 1
 17;RemapFixHideOrig -->    vb1 = ResourceKeqingBlend.1
 18;RemapFixHideOrig -->    handling = skip
 19;RemapFixHideOrig -->    draw = 21916,0
 20;RemapFixHideOrig -->endif
 21;RemapFixHideOrig -->
 22;RemapFixHideOrig -->[TextureOverrideKeqingBody]
 23;RemapFixHideOrig -->hash = cbf1894b
 24;RemapFixHideOrig -->match_first_index = 10824
 25;RemapFixHideOrig -->run = CommandListKeqingBody
 26;RemapFixHideOrig -->
 27;RemapFixHideOrig -->[CommandListKeqingBody]
 28;RemapFixHideOrig -->if $swapvar == 0
 29;RemapFixHideOrig -->    ib = ResourceKeqingBodyIB.0
 30;RemapFixHideOrig -->    ps-t0 = ResourceKeqingBodyDiffuse.0
 31;RemapFixHideOrig -->    ps-t1 = ResourceKeqingBodyLightMap.0
 32;RemapFixHideOrig -->    ps-t2 = ResourceKeqingBodyMetalMap.0
 33;RemapFixHideOrig -->    ps-t3 = ResourceKeqingBodyShadowRamp.0
 34;RemapFixHideOrig -->else if $swapvar == 1
 35;RemapFixHideOrig -->    ib = ResourceKeqingBodyIB.3
 36;RemapFixHideOrig -->    ps-t0 = ResourceKeqingBodyDiffuse.3
 37;RemapFixHideOrig -->    ps-t1 = ResourceKeqingBodyLightMap.3
 38;RemapFixHideOrig -->endif
 39;RemapFixHideOrig -->
 40;RemapFixHideOrig -->[TextureOverrideKeqingDress]
 41;RemapFixHideOrig -->hash = cbf1894b
 42;RemapFixHideOrig -->match_first_index = 48216
 43;RemapFixHideOrig -->run = CommandListKeqingDress
 44;RemapFixHideOrig -->
 45;RemapFixHideOrig -->[CommandListKeqingDress]
 46;RemapFixHideOrig -->if $swapvar == 0
 47;RemapFixHideOrig -->    ib = ResourceKeqingDressIB.0
 48;RemapFixHideOrig -->    ps-t0 = ResourceKeqingDressDiffuse.0
 49;RemapFixHideOrig -->    ps-t1 = ResourceKeqingDressLightMap.0
 50;RemapFixHideOrig -->    ps-t2 = ResourceKeqingDressMetalMap.0
 51;RemapFixHideOrig -->    ps-t3 = ResourceKeqingDressShadowRamp.0
 52;RemapFixHideOrig -->else if $swapvar == 1
 53;RemapFixHideOrig -->    ib = ResourceKeqingDressIB.3
 54;RemapFixHideOrig -->    ps-t0 = ResourceKeqingDressDiffuse.3
 55;RemapFixHideOrig -->    ps-t1 = ResourceKeqingDressLightMap.3
 56;RemapFixHideOrig -->endif
 57;RemapFixHideOrig -->
 58[ResourceKeqingBlend.0]
 59type = Buffer
 60stride = 32
 61filename = ../Buffs/ISwearItsFor.buf
 62
 63[ResourceKeqingBlend.1]
 64type = Buffer
 65stride = 32
 66filename = ../Buffs/SmallerHitboxes.buf
 67
 68[ResourceKeqingDressDiffuse.0]
 69filename = CatGirl.dds
 70
 71[ResourceKeqingDressDiffuse.3]
 72filename = Patootie.dds
 73
 74[ResourceKeqingHeadDiffuse.0]
 75filename = Cutesy.dds
 76
 77[ResourceKeqingHeadDiffuse.3]
 78filename = CutiePie.dds
 79
 80
 81; --------------- Keqing Remap ---------------
 82; 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"
 83; Thank nguen#2011 SilentNightSound#7430 HazrateGolabi#1364 for support
 84
 85; ***** KeqingOpulent *****
 86[TextureOverrideKeqingKeqingOpulentRemapBlend]
 87if $swapvar == 0
 88    vb1 = ResourceKeqingKeqingOpulentRemapBlend.0
 89    handling = skip
 90    draw = 21916,0
 91else if $swapvar == 1
 92    vb1 = ResourceKeqingKeqingOpulentRemapBlend.1
 93    handling = skip
 94    draw = 21916,0
 95endif
 96
 97[TextureOverrideKeqingBodyKeqingOpulentRemapFix]
 98hash = 7c6fc8c3
 99match_first_index = 19623
100run = CommandListKeqingBodyKeqingOpulentRemapFix
101
102[CommandListKeqingBodyKeqingOpulentRemapFix]
103if $swapvar == 0
104    ib = ResourceKeqingBodyIB.0
105    ps-t0 = ResourceKeqingBodyDiffuse.0
106    ps-t1 = ResourceKeqingBodyLightMap.0
107    ps-t2 = ResourceKeqingBodyMetalMap.0
108    ps-t3 = ResourceKeqingBodyShadowRamp.0
109else if $swapvar == 1
110    ib = ResourceKeqingBodyIB.3
111    ps-t0 = ResourceKeqingBodyDiffuse.3
112    ps-t1 = ResourceKeqingBodyLightMap.3
113endif
114
115[TextureOverrideKeqingHeadKeqingOpulentRemapFix]
116hash = 7c6fc8c3
117match_first_index = 0
118run = CommandListKeqingHeadKeqingOpulentRemapFix
119
120[CommandListKeqingHeadKeqingOpulentRemapFix]
121if $swapvar == 0
122    ib = ResourceKeqingDressIB.0
123    ps-t0 = ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex0
124    ps-t1 = ResourceKeqingDressLightMap.0
125    ps-t2 = ResourceKeqingDressMetalMap.0
126    ps-t3 = ResourceKeqingDressShadowRamp.0
127else if $swapvar == 1
128    ib = ResourceKeqingDressIB.3
129    ps-t0 = ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex1
130    ps-t1 = ResourceKeqingDressLightMap.3
131endif
132
133[ResourceKeqingKeqingOpulentRemapBlend.0]
134type = Buffer
135stride = 32
136filename = ../Buffs/ISwearItsForKeqingOpulentRemapBlend.buf
137
138[ResourceKeqingKeqingOpulentRemapBlend.1]
139type = Buffer
140stride = 32
141filename = ../Buffs/SmallerHitboxesKeqingOpulentRemapBlend.buf
142
143[ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex0]
144filename = KeqingOpulentDressRemapTexNQe BUx.dds
145
146[ResourceKeqingDressOpaqueDressDiffuseKeqingOpulentRemapTex1]
147filename = KeqingOpulentDressRemapTexHl4 BUx.dds
148
149; *************************
150
151; --------------------------------------------
changeVersionKeqingRemapFix1.ini
changeVersionKeqingRemapFix1.ini
  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.dds
101
102
103; --------------- 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 support
106
107; ***** KeqingOpulent *****
108[TextureOverrideKeqingKeqingOpulentRemapBlend]
109if $swapvar == 0
110    vb1 = ResourceKeqingKeqingOpulentRemapBlend.0
111    handling = skip
112    draw = 21916,0
113else if $swapvar == 1
114    vb1 = ResourceKeqingKeqingOpulentRemapBlend.1
115    handling = skip
116    draw = 21916,0
117endif
118
119[TextureOverrideKeqingBodyKeqingOpulentRemapFix]
120hash = 7c6fc8c3
121match_first_index = 19623
122run = CommandListKeqingBodyKeqingOpulentRemapFix
123
124[CommandListKeqingBodyKeqingOpulentRemapFix]
125if $swapvar == 0
126    ib = ResourceKeqingBodyIB.0
127    ps-t0 = ResourceKeqingBodyDiffuse.0
128    ps-t1 = ResourceKeqingBodyLightMap.0
129    ps-t2 = ResourceKeqingBodyMetalMap.0
130    ps-t3 = ResourceKeqingBodyShadowRamp.0
131else if $swapvar == 1
132    ib = ResourceKeqingBodyIB.3
133    ps-t0 = ResourceKeqingBodyDiffuse.3
134    ps-t1 = ResourceKeqingBodyLightMap.3
135endif
136
137[ResourceKeqingKeqingOpulentRemapBlend.0]
138type = Buffer
139stride = 32
140filename = ../Buffs/ISwearItsForKeqingOpulentRemapBlend.buf
141
142[ResourceKeqingKeqingOpulentRemapBlend.1]
143type = Buffer
144stride = 32
145filename = ../Buffs/SmallerHitboxesKeqingOpulentRemapBlend.buf
146
147; *************************
148
149; --------------------------------------------


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!)

To fix only a .ini file to a specific version of the game, go to Fixing a .ini File to a Specific Version of the Game


Input

Assume we have this file structure:

File Structure
AmberCN
|
+--> AmberCN.ini
|
+--> AmberCNBlend.buf
|
+--> example.py


Assume below is the content of the .ini files

AmberCN.ini
AmberCN.ini
 1[TextureOverrideAmberCNBlend]
 2vb1 = ResourceAmberCNBlend
 3handling = skip
 4draw = 21916,0
 5
 6[TextureOverrideAmberCNBody]
 7hash = b41d4d94
 8match_first_index = 5670
 9ib = ResourceAmberCNBodyIB
10ps-t0 = ResourceAmberCNBodyDiffuse
11ps-t1 = ResourceAmberCNBodyLightMap
12ps-t2 = ResourceAmberCNBodyMetalMap
13ps-t3 = ResourceAmberCNBodyShadowRamp
14
15[ResourceAmberCNBlend]
16type = Buffer
17stride = 32
18filename = AmberCNBlend.buf
Code
example.py
1import AnimeGameRemap as AGR
2
3fixService = AGR.RaidenBossFixService(verbose = True, keepBackups = False, undoOnly = True, types = ["BaronBunnyCN"], version = 4.0)
4fixService.fix()
Result

Below contains the new content with the fix applied for the game version 4.0

File Strucuture
AmberCN
|
+--> AmberCN.ini
|
+--> AmberCNBlend.buf
|
+--> AmberCNAmberRemapBlend.buf
|
+--> example.py


Below is the new content of the .ini files

AmberCN.ini
AmberCN.ini
 1[TextureOverrideAmberCNBlend]
 2vb1 = ResourceAmberCNBlend
 3handling = skip
 4draw = 21916,0
 5
 6[TextureOverrideAmberCNBody]
 7hash = b41d4d94
 8match_first_index = 5670
 9ib = ResourceAmberCNBodyIB
10ps-t0 = ResourceAmberCNBodyDiffuse
11ps-t1 = ResourceAmberCNBodyLightMap
12ps-t2 = ResourceAmberCNBodyMetalMap
13ps-t3 = ResourceAmberCNBodyShadowRamp
14
15[ResourceAmberCNBlend]
16type = Buffer
17stride = 32
18filename = AmberCNBlend.buf
19
20
21; --------------- 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 support
24
25; ***** Amber *****
26[TextureOverrideAmberCNAmberRemapBlend]
27vb1 = ResourceAmberCNAmberRemapBlend
28handling = skip
29draw = 21916,0
30
31
32[TextureOverrideAmberCNBodyAmberRemapFix]
33hash = 9976d124
34match_first_index = 5670
35ib = ResourceAmberCNBodyIB
36ps-t0 = ResourceAmberCNBodyDiffuse
37ps-t1 = ResourceAmberCNBodyLightMap
38ps-t2 = ResourceAmberCNBodyMetalMap
39ps-t3 = ResourceAmberCNBodyShadowRamp
40
41
42[ResourceAmberCNAmberRemapBlend]
43type = Buffer
44stride = 32
45filename = AmberCNAmberRemapBlend.buf
46
47; *****************
48
49; ---------------------------------------------