Numerical values represent specific conditions that must be satisfied for the parent entity to take effect. These conditions, known as requirements, are frequently used in various contexts. Some requirements depend on specific parameter values, while others do not. The requirements are evaluated sequentially, and if any condition fails, the evaluation stops immediately.
Requirements start from 0 and go up to around 1100 (for Tekken 8), whereas property values begin at 0x8001. This distinction between Requirements and Extra Move Properties is crucial.
For example (all values are according to Tekken 8 v2.00.03):
0 means "Always True"667 checks if the game is in story mode.44 verifies if the attack that this cancel is attached to, was successful or not.350 determines whether the player is in Devil mode while playing as Kazuya, based on the provided parameter (0 for no, 1 for yes).505 checks if the player character ID matches any of the specified parameter values.1100 signifies the end of a requirement listRefer to the spreadsheet for detailed descriptions of all requirement values.
// Parameters can be signed, unsigned or float
union tk_param
{
uint32_t param_unsigned;
int32_t param_signed;
float param_float;
};
struct tk_requirement
{
uint32_t req;
tk_param params[4];
};
// Parameters can be signed, unsigned or float
union tk_param
{
uint32_t param_unsigned;
int32_t param_signed;
float param_float;
};
struct tk_requirement
{
uint32_t req;
tk_param param;
};
To demonstrate, I have this example requirement list from an attack's cancel
44 - If successful hit
66 - If opponent is standing upright
0x87F2, 9 - Play sound from opponent (grunt)
0x87F2, 1, 25 - Play sound from opponent (hit VFX)
0x8002 - Camera Shake - Light variant
1100, 0 - End of the list
Firstmost value is the requirement, while the values proceeded by semi-colons are parameters. Here the game checks if the player lands a hit on an upright opponent so it can play some Audio & Video effects.
1100 for the current game version.false, the game stops checking the entire list.>= 0x8001 then it's not a Requirement, it's an Extra Move Property.Above described structure would look like this in memory:
Req # Offset req param1 param2 param3 param4 // Description
--------------------------------------------------------------------------------------
1 0x0000 0x002C 0x0000 0x0000 0x0000 0x0000 // If successful hit
2 0x0014 0x0042 0x0000 0x0000 0x0000 0x0000 // If opponent is standing upright
3 0x0028 0x87F2 0x0009 0x0000 0x0000 0x0000 // Play sound from opponent (grunt)
4 0x003C 0x87F2 0x0001 0x0019 0x0000 0x0000 // Play sound from opponent (hit VFX)
5 0x0050 0x8002 0x0000 0x0000 0x0000 0x0000 // Camera Shake - Light variant
6 0x0064 0x044C 0x0000 0x0000 0x0000 0x0000 // End of the list