Understanding SPT file - MangaD - 21-06-2020
After talking with @不饿白帝BEBD, @Runningcake and @Lee Catalpa Tien (on QQ), I have grasped a few concepts of the SPT file. I'll leave a rough draft here, for future updates and development. Feel free to comment with your knowledge and improve it!
Overview of SPT file:
keyTgr arrays appear to be useless. Maybe leftovers from older versions.
frames array contains all the frames' data.
allowKeyTrigger attribute of a frame specifies whether or not we can perform an action (e.g. attack) from this frame.
action array contains all the possible actions of a character.
a_keyTgr specifies the actions that can be TriGgeRed in the action state that it belongs to, as well as how to trigger them
rkt (restrict key trigger) if it is false,
allowKeyTrigger in frame is ignored. If it is true, it can be triggered only in frames of the action that have
allowKeyTrigger set to
true. Example: In STAND state,
rkt should be
false for a special move if we want to trigger it at any time. But during an attack or specific action,
rkt should be
true so that only in certain frames (e.g. later frames) of the attack we can trigger another one.
k key combination to perform move to right.
kr key combination to perform move to left (stands for key reverse).
agi is the Action Group Index that this trigger corresponds to.
ati - in an action group there is an
ati is the index in this array.
ai - each element of the
actionIndex array is also an array, and
ai is the index of the element in this array that we want.
actionGroup - corresponds to a set of actions. Most common are
cat (catch human),
hea (catch object),
action useless array, probably leftover from older versions. It was moved to the outside
action array mentioned above. Now
actionGroup is linked to a set of actions through the attributes
a_keyTgr inside of an action.
Making new moves requires modifying
hire_id - array with type of soldiers for each possible unit (we have to use their id to get them, e.g.: "z_infantry01"). If you use a mount as id (e.g.
horse_triceratops), they will be available to mount but won't attack on their own.
hire_max - array with count of soldiers for each possible unit (for ex. lets say "z_infantry01" if we put its value to 1, then we get 4 soldiers, if 2 means then 8 soldiers)
hire_price - array with costs to hire a unit, for each possible unit.
hire_h - array with mounts for each possible unit. If "null" they are on foot. If "h" they are on horse. If "m" they are on monster. If "t" they are on triceratops. These mounts won't disappear when a soldier falls from them, they will be available to mount by the player or another soldier, except if the
z_cavalry01, then the mounts will disappear.