Bastian_1991 wrote: ↑Wed May 31, 2023 1:10 pm
I have seen numerous problems when you give a unit a certain sprite, and then you enter battle against that unit while one of yours has their portrait. Basically your own unit takes over dialogues, etc. and if the enemy unit dies, the match is not ending as intended, unless you kill your own unit with said sprite (it does not change anything or add any incaps to your count). I posted it on discord too. The only way to make this safe is to not use your modified sprite unit in the story battles in which said character appears. So that's ok, just one different unit to be deployed is not the end of the world.
However, one thing I had a problem with was giving Leonar's sprite to one of my units and then replaying act 1. At the point where Leonar joins you as a guest, my unit with his sprite became a guest permanently and I cannot by any means modify that. I have even tried playing past the point where Leonar leaves you again, but nothing seems to be working. My previous save was long before as I did not see that coming so going back was not a viable option either.
The authors of this table did a less than excellent job at naming the various data objects and properties, which leads to misunderstandings when tampering.
Unit records (for instance, the individuals in your Order/party) do not have a direct reference to the Sprite (animated image) they use. A Unit does, however, have a reference to another data object that might be called a Template--the Unit can override some of the Template fields, and multiple Units can have the same Template--which does have fields that contain the Sprite, Palette, default Portrait, allowed Classes, etc.
The problems you have run into, is you tricking the game into a state that the developers did not anticipate. For instance, in the unmodified game, there is only 1 unit with the Leonar template in your Order, so I assume the game just looks for Unit(s) with that particular Template and modifies the Unit record(s) to become a guest.
Instead of your custom not-Leonar Unit using Leonar's Template, you should make a modified copy of Leonar's Template into one of the 75+ blank spots on the Template list, and assign your not-Leonar Unit to use that Template. This approach will probably work around the problems. I have not done this with Leonar specifically, but I have played through some of the game with a Unit using a "custom" Template with no issues. This approach may also get around same-Sprite-as-Target "bug"; try that Sprite+Portrait on another Template.
Bastian_1991 wrote: ↑Wed May 31, 2023 1:10 pm
The last couple of things I wanted to ask is whether it would be possible to make the portraits not be locked to sprites, as every time you reload the game your unit loses the portrait you're trying to give them and go to the default portrait that corresponds with the sprite they are currently wearing.
And also if it would be possible to extend the list of sprites to each individual colour palette possible for each sprite too, as the colour palette modification does not appear in the CURRENT CHARACTER view, and changing it in the other one changes that colour palette only for the session and it does it for all units wearing that sprite.
Portraits are already not locked to Sprites. When you load a saved game (and enter/exit the Warren Report, IIRC, and probably some other junctures too, like exit a battle), the game recalculates what Portrait each Unit in your Order is "supposed to have" and writes that to the Unit record. This is necessary, as Units' Portrait can change for various reasons. The game does not magically know you are tampering with it and adjust itself to allow for that; your CT must be set up to enforce your wishes upon the game.
The Palette is kinda in two places: each Union (including yours) has a primary and alternate Palette which each Unit with that allegiance obtains as a default, and each Template can override that default with a specific Palette particular to the Unit(s) using that Template.
When you use the CT to modify a Unit Template, Class, Skill, or another record type that is not part of the in-memory data that goes into a saved game, of course your changes will not be preserved the next time you load up the game. You have to also modify your CT so your customizations can be easily applied when you start the game.
Here is a copy of part of the Mods section of my CT. It includes some Template Palette and Portrait changes that mimic a few of the One Vision unit changes, and my one custom Template that has a rogue portrait, teleport step, and probably other things that I forget now, and also a minor Skill mod to allow RuneFencers to learn the First Aid skill. Every individual 'cheat' in this section has the same Ctrl+Space hotkey so I can easily turn them all on when I am reasonably sure the game has loaded everything into memory (the intro logos are done and I can see the main menu).
Code: Select all
<CheatEntry>
<Description>"Mods"</Description>
<Options moHideChildren="1"/>
<Color>800080</Color>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<Description>"Unit Templates"</Description>
<Color>800080</Color>
<VariableType>String</VariableType>
<Length>4</Length>
<ZeroTerminate>0</ZeroTerminate>
<Address>Tactics Ogre Reborn.exe+D67320</Address>
<Offsets>
<Offset>0</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<Description>"Custom"</Description>
<ShowAsHex>1</ShowAsHex>
<Color>800080</Color>
<VariableType>Array of byte</VariableType>
<ByteLength>84</ByteLength>
<Address>+10+54*24</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>00 00 01 00 41 00 00 00 00 01 01 01 01 01 00 01 01 00 00 00 00 00 00 00 3E 01 4E 00 02 02 21 01 21 01 23 01 22 01 21 01 23 01 21 01 22 01 28 00 04 00 89 01 84 01 00 00 10 01 69 00 00 02 00 01 F7 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 01 00</Value>
<Description>Custom Template</Description>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<Description>"Vyce Bozeck"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+54*2</Address>
<CheatEntries>
<CheatEntry>
<Description>"Color Palette: 5"</Description>
<DropDownListLink>List.ColorPalette</DropDownListLink>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+3D</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>5</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<Description>"Gildas W. Byrne"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+54*8</Address>
<CheatEntries>
<CheatEntry>
<Description>"Color Palette: 14"</Description>
<DropDownListLink>List.ColorPalette</DropDownListLink>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+3D</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>14</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<Description>"Donnalto Presance"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+54*10</Address>
<CheatEntries>
<CheatEntry>
<Description>"Color Palette: 14"</Description>
<DropDownListLink>List.ColorPalette</DropDownListLink>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+3D</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>14</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<Description>"Sara Ostvald"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+54*85</Address>
<CheatEntries>
<CheatEntry>
<Description>"Sprite: 112"</Description>
<DropDownListLink>List.Sprites</DropDownListLink>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+3A</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>112</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<Description>"Color Palette: 11"</Description>
<DropDownListLink>List.ColorPalette</DropDownListLink>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+3D</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>11</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<Description>"Portrait: 569"</Description>
<DropDownListLink>List.Portraits</DropDownListLink>
<Color>800080</Color>
<VariableType>2 Bytes</VariableType>
<Address>+40</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>569</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<Description>"Voltare Montrose"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+54*86</Address>
<CheatEntries>
<CheatEntry>
<Description>"Sprite: 69"</Description>
<DropDownListLink>List.Sprites</DropDownListLink>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+3A</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>69</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<Description>"Color Palette: 14"</Description>
<DropDownListLink>List.ColorPalette</DropDownListLink>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+3D</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>14</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<Description>"Portrait: 338"</Description>
<DropDownListLink>List.Portraits</DropDownListLink>
<Color>800080</Color>
<VariableType>2 Bytes</VariableType>
<Address>+40</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>338</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<Description>"Skills"</Description>
<Color>800080</Color>
<VariableType>String</VariableType>
<Length>4</Length>
<ZeroTerminate>0</ZeroTerminate>
<Address>Tactics Ogre Reborn.exe+D672D8</Address>
<Offsets>
<Offset>0</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<Description>"First Aid I"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+66*1BF</Address>
<CheatEntries>
<CheatEntry>
<Description>"Class Set - RuneFencer: 10"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+15</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>10</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<Description>"First Aid II"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+66*1C0</Address>
<CheatEntries>
<CheatEntry>
<Description>"Class Set - RuneFencer: 22"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+15</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>22</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<Description>"First Aid III"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+66*1C1</Address>
<CheatEntries>
<CheatEntry>
<Description>"Class Set - RuneFencer: 34"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+15</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>34</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<Description>"First Aid IV"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+10+66*1C2</Address>
<CheatEntries>
<CheatEntry>
<Description>"Class Set - RuneFencer: 50"</Description>
<Color>800080</Color>
<VariableType>Byte</VariableType>
<Address>+15</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>17</Key>
<Key>32</Key>
</Keys>
<Value>50</Value>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
If you need any more help other than what this and my previous comments provide, don't hesitate to ask. I'm not checking this forum very often though, as I'm not bothering to play much of this game while the devs are sitting on their thumbs, refusing to fix the equipment and elemental bugs.