petz relationship hacking tutorial



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



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!


affinity modifiers

(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.)

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!

(hi out there!)