if your petz aren't getting along, and you'd like them to be friends, there's actually a (relatively) simple way to fix that!
first, open the disliked pet's file in a hex editor. scroll down past the zero bytes below the pet's breedfile, and you'll find a string of bytes like this, just before the pf magic text. this is the pet's GUID! record it for the next step.
now, open the other pet's file, and search for the GUID. we want to find the GUID in the "One2OneDescriptor" section of the association matrix, so you'll normally want the second instance of it in the file, since it's towards the bottom. (in most cases, this will also be the last instance of it in the file, but if the other pet is in the pet's ancestry somewhere, it will also be in their family tree section. in some rare cases, there may be instances where it's also stored somewhere before the association matrix, making it the third instance instead, so if in doubt, check and make sure it looks something like the example under "affinity modifiers" below!)
after the GUID, the next byte should be 00, which corresponds to "enemy". in catz, you want to change this to 02. in dogz, change it to 03. these correspond to a "buddy" relationship (which can become romantic if the petz can mate.) in dogz, 02 seems to be a "lower" buddy relationship (acquaintances?) you can also change this to 01, if you'd like them to have a neutral relationship. (for other types of relationship changes, simply change this byte from whatever its value is to whatever the value for the relationship type you want is.)
if the petz mutually dislike each other, you may need to repeat this process for the other pet as well!
after making any changes, be sure to run the pet file through PetzByte to recalculate the checksum.
if all has gone well, the petz should now be getting along just fine!
(thanks to Reflet for additional affinity matrix info!)
while the base AffinityType value is the one you'll want to change to make your petz get along, the One2OneDescriptor section also has other values set that affect relationships!
after the GUID for the other pet, there's the AffinityType value, which is what we went over above, then the AffinityModifier value, which impacts relationship type in some other ways, and then "temporary" values set for both of these, and finally, a byte that determines whether the temporary values are used. (if you'd like to make sure the pet is using the base values, set this byte to 00.)
(note: if a pet does not have any temporary relationship values for the other pet, the temporary values will all be set to 00, so you can ignore them and just change the first two if you'd like!)
below is a list of AffinityModifier values and their effects:
AffinityModifier Value | Name | Description |
---|---|---|
00 | None | no effect |
01 | FirstBase | petz will be flirty with each other in a casual way (chase game, circling each other, etc.) |
02 | SecondBase | petz will be flirty with each other in a mostly casual way, but may now do some closer behaviors |
03 | ThirdBase | petz will be flirty with each other in an extremely affectionate way (grooming/licking, napping together, etc.) |
04 | HomeRun | petz will attempt to mate with each other constantly. if they can't mate, they'll still get the goal and stare/pose at each other/coo/etc., but without the heart popup. (they'll still attempt this constantly) |
05 | Terrified | pet is scared of the other pet, and will run away from them. |
06 | Aggressive | pet is aggressive towards the other pet, and will chase them away. |
just like with the AffinityType value, you can change this value in the file and run it through PetzByte if you'd like to modify something like their "romantic" status!