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:
![[Image: spt.png]](https://i.postimg.cc/br7qqmMm/spt.png)
Making new moves requires modifying
In the attachment there is a much more complete tutorial file made by @Lee Catalpa Tien. Thanks to @nikhil for translating it to English!
Overview of SPT file:
![[Image: spt.png]](https://i.postimg.cc/br7qqmMm/spt.png)
cadandkeyTgrarrays appear to be useless. Maybe leftovers from older versions.
framesarray contains all the frames' data.allowKeyTriggerattribute of a frame specifies whether or not we can perform an action (e.g. attack) from this frame.
attackarray contains all the attacks that the character can perform while in this frame.refNameis the name reference for an attack. The attacks are in the fileData.Global_globalDat.
actionarray contains all the possible actions of a character.a_keyTgrspecifies the actions that can be TriGgeRed in the action state that it belongs to, as well as how to trigger themrkt(restrict key trigger) if it is false,allowKeyTriggerin frame is ignored. If it is true, it can be triggered only in frames of the action that haveallowKeyTriggerset totrue. Example: In STAND state,rktshould befalsefor a special move if we want to trigger it at any time. But during an attack or specific action,rktshould betrueso that only in certain frames (e.g. later frames) of the attack we can trigger another one.
kkey combination to perform move to right.
krkey combination to perform move to left (stands for key reverse).
agiis the Action Group Index that this trigger corresponds to.
ati- in an action group there is anactionIndexarray,atiis the index in this array.
ai- each element of theactionIndexarray is also an array, andaiis the index of the element in this array that we want.
frameIndexrefers to the frame where this action starts
actionGroup- corresponds to a set of actions. Most common arenormal,gua(guard),cat(catch human),hea(catch object),rid(ride)actionuseless array, probably leftover from older versions. It was moved to the outsideactionarray mentioned above. NowactionGroupis linked to a set of actions through the attributesati,agiandaiinsidea_keyTgrinside of an action.
Making new moves requires modifying
actionGroup, action and frame arrays.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,horse_monster,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 thehire_idisz_cavalry01, then the mounts will disappear.
In the attachment there is a much more complete tutorial file made by @Lee Catalpa Tien. Thanks to @




