How to Genex Personality Traits
EVERYTHING IN THIS GUIDE REFERS TO PETZ 4 ONLY. I am not sure how much the information below will pertain to other versions of Petz.
Please note, this hasn't been thoroughly tested yet, but so far I have not had any issues. If you attempt to do this, please MAKE SURE TO SAVE A BACKUP OF YOUR PET FIRST! By editing a hex file, it is very easy to accidentally edit the wrong thing, and this could break your pet's file! I am not to be held responsible if anything goes wrong, especially if you did not save a backup first. (Though it is good practice to always have backups of your pets on hand regardless, as even the game itself can corrupt them while saving - this has happened to me before).
You will need the following tools for this tutorial:
- A Hex editor of your choice. The one I used in this tutorial is hexed.it, since it's free and can be used in browser. (The only problem with it is that you currently cannot make it list 15 bytes per row, which is useful for certain editing in Petz files). You can also download HxD.
- Reflet's PetzByte, which is needed to recalculate the pet file's checksum (if your hex editor does not have this already).
- GoalDescriptorAnalyzer (click the "here" link in the first paragraph of the post). This will be needed to check pets' personality traits and is useful for testing. Also, this entire thread linked is really helpful if you want to understand more about Petz personality traits and values.
Otherwise, this tutorial will assume you have already decided on what traits to edit / what to change their values to, and that you have already edited your pet's regular trait values (see UniqueBreed's "fixing a glitched personality" tutorial). Or, perhaps you only want to edit the personality genetics and not the pet's traits themselves. Either way is fine, depending on what you're wanting to do. Though for this tutorial I will be showing how to fix the genetics of a pet with a glitched personality (a Unibreed pet adopted from the AC), it can be applied to editing the personality genetics for other situations.
If you are needing to generate random values, you can use a website like random.org to do so. Usually what I do for glitched traits is generate a number that corresponds to what the breed regularly generates (or for hexed breeds, I use what makes sense with the breed); eg. if the breed would normally generate a "mid" for Intelligence, I would randomly generate a number from 30-70. You can read up more on what I mean by this in Kizmet's personality discussion on RKC.
For my example, I will use a Unibreed AC pet which I have previously fixed the personality traits of. Since I have edited her regular traits already, this is how her personality traits show up in GoalDescriptorAnalyzer:
If you haven't already (though if you already edited the pet's traits like I did, you would have needed to), you will want to take the numbers of the values here you are wanting to change in the genes (for me, it will be the first seven - Liveliness, Playfulness, Independence, Confidence, Naughtiness, Acrobaticness and Patience) and convert both the numbers to hex values. You can do this using this converter. Technically, the second column numbers don't seem to matter too much (at least, it hasn't been figured out what they do) and they actually vary a bit in regular pet's genetics, but I say at this point in time, doesn't matter if you just copy them for the genetics (and it makes it easier). You can vary them a little bit if you really want to, though.
The values I will be using in hexadecimal are:
Liveliness: 04, 11
Playfulness: 41, 2E
Independence: 3B, 21
Confidence: 3C, 11
Naughtiness: 03, 11
Acrobaticness: 3A, 19
Patience: 55, 21
Now take the pet's file (and remember to make a backup before doing this!) and open it in the hex editor of your choice. You will need to locate the start of the first Looks Chromosome. You can do this by searching "29 00 00 00 FF" in the hex editor, it should take you to the beginning of the first genetic set. What this looks like is explained on Reflet's genetics guide linked above (which has a neater picture than I have), but it should look like this:
Both genetic sets start with "29 00 00 00 FF FF FF FF" and will have a group of FF around the beginning. Starting from the byte 29, if you count about 623 bytes down you should arrive at the first personality trait value (the value for Liveleness). The personality genetic values come some place before the appearance genes. In some cases you may already know what the first trait should be (such as for unibreed bugged petz, as the first value will be 32) which can make it easier to locate them, but for later-gen petz the values can be very different from the pet's actual traits. (Gen 2s will take their parents' traits in their sets, with the mother's first, but later gens I am not 100% sure about yet).
Above is the pet's first genetic set of personality traits. Note how the first seven underlined traits are 32 (50) despite her traits in GoalDescriptorAnalyzer being different - since I had edited her personality traits, but not her gene traits yet! In this case, if you are editing a unibreed-glitched pet, you will want to replace the values of "32" with whatever values you have decided to use. The rest of the non-glitched traits are marked with the diagonal red line, just to show how far the traits extend to. The blue areas are the second column numbers, which as mentioned tend to differ from the values in the Pet's own personality values, and between the two genetic sets themselves. However, for the sake of ease I will just change them to be the same as they are in GoalDescriptorAnalyzer.
Now I have replaced all the personality values with the proper ones to match her traits. Next, you can change the second column numbers if you'd prefer to change them from 0 (which, normally, they don't seem to be 0, but any number from roughly 5-45. They also never vary when set at 0). Now note, if you are editing a glitched personality pet, the second numbers will be 0, so this might be confusing! Remember there should ALWAYS BE THREE 00 bytes between the personality trait and the second number! As seen below:
Since I don't really care to try to vary the numbers, I just used the same ones from her regular traits. If this ever is discovered to actually be important, then I will fix it later.
You aren't out of the woods yet, because you will now need to edit the second set of genes (unless, what you were editing only required you to edit one set. In that case, you are out of the woods). You can scroll down until you see the next "29 00 00 00 FF FF FF FF" or just search for "29 00 00 00 FF" again and it should take you to the start of the second gene set. From there, you can locate the personality value genetics the same way you did with the first set.
Now replace the broken traits (or whatever traits you are wanting to change) again, like so:
Now you have edited the personality values for both the pet's gene sets! Breeding this pet from now on should give puppies or kittens with personality values that match properly. Save the .pet file, and if your hex editor does not have a "recalculate checksum" feature, make sure to drag the .pet file over PetzByte to do so! Otherwise the game will tell you the pet's file is corrupted when launching.