Petz Research

Breed personality hexing

On the RKC forums, shaina @ kizmet posted a tutorial on hexing pet personalities. You can view your pet's personality traits with the Goal Descriptor Analyzer (Download link) There are 22 personality traits in petz, but not all of them are defined in every breed, and you can't add any bytes there without breaking the game. But fortunately, you can change which personality traits are used. (Some breeds like the Alley Cat and Siamese give you a lot of traits to work with.)

I made these tables to use as a reference, in conjunction with shaina's tutorial:

Editable Catz traits

Editable Dogz traits

Default Values when a personality trait is not assigned.

Note that low is 0-20, mid is 30-70, and high is 80-100.

Personality hexing example (with help from IDA)

Note to myself: Value from 00-06 goes FIRST. Trait from 00-15h is second.

For this example, I am editing the orange shorthair to make it naughtier.

Open .cat in IDA Free and click on the ConstructGenome function.

Look at the pairs of numbers being pushed. 1st is value, 2nd is trait. This pair is setting trait 4, which is naughtiness, to a value of 1.

Switch to hex view to see what the offset is.

I don't know how to hex edit in IDA Free so I open an online hex editor to change the highlighted number.

01 (low) has been changed to 03 (high). Now the oshie is naughty.

Hexing Toy Behavior

Reflet's Toy Research was the starting point; that page has all the background info on what Toy Adjectives are in Petz. Hexing toyz would not have been possible without Reflet's toy adjective spreadsheet.

Important to know: 1) You can't edit toy adjectives in LNZ Pro; you have to use a hex editor. 2)You can't add new adjectives; you can only change the values of the adjectives the game has already set You actually can, but since you can't add new instructions, you can only give a toy a new adjective by replacing/changing an existing instruction. I learned about that after I wrote this tutorial. (Adjectives that don't exist for a toy are marked with -1 on the spreadsheet.)

Relevant toy data

The data was all discovered by Reflet; I collected and commented on some of the relevant bits here:

Reflet discovered all the toy adjective values, including the flavor values. Almost every toy has set a flavor value, even if it is not edible. This is what I think they mean:

Treats that share a flavor: Things that can be hexed to be fully edible. That is, they have a tastiness and edibility value set, but they are low:
Tasty but not edible:

Edible but not tasty:

Petz Animation frames

The [Head Shot] section of a pet's LNZ lets you change the frame number of the pet's profile pic. (When you change a pet's [Head Shot], you need to take the pet out and put it back in again before you see the change).
The default is 0, for the default standing pose. You can't set the animation number and tell it to use the first frame; all the frames of all the animations are stored next to each other, making it hard to set a pose. So this was my adventure in learning how [Head Shot] works:

I tested powers of two (the first number in the [Head Shot] part of a pet .lnz)

8,191 is fine, and so is 8192.
16,383 is a bad frame number and crashes the game.

How to find the max frame? Time for a binary search!
12000 is ok
14000 is ok
15000 is ok
15691 is ok
16037 is ok
16210 is bad
16123 is bad
16080 is bad
16058 is bad
16047 is bad
16042 is bad
16039 is ok
16040 is bad

**16039 is the biggest frame number you can put in [Head Shot]**

Animation #444 is the exploding one... I want to find the frame number of the exploded pet...
And 450 is the 'bang head on floor' one...
According to petz workshop, there are 493 animations. (first is 0, last is 492.)
(409 is also an explosion)

Frame number 16010 (animation 490) is the belly flop slide yesss :3
16012 is the last frame of the belly flop.

16040 frames divided by 493 animations equals an average of 32 frames per animation.

Also, only the adult lnz seems to affect the picture, no matter the age of your pet.

it seems like eyelid height and eyelid tilt influence each other (height seems to affect how much it rotates)

more information that builds on the pet manual:
rotation: 0 degrees the pet faces the camera, positive rotation turns the pet's left side to the camera (the pet has spun to the right)
roll: positive roll rotates the picture counterclockwise
tilt: positive tilt puts the camera below the pet (think "cats loafing on glass tables"...)
head rotation: positive rotation = the pet turns its head to the right
head tilt: positive angle = the head turns its head up
head cock: positive angle = the pet cocks its head to the left
R/L eyelid height: zero is wide open eyes. higher numbers = the pet closes its eyes
R/L eyelid tilt: negative numbers are angry eyes