Skills data¶
Skills data are split in 2 TextAssets in the game loaded on boot by SetVariables:
Ressources/data/SkillData
Skills
from the corresponding dialogue directory of the current languageid
SkillData
¶
The asset contains one line per skill whose id corresponds to the line index. Each line contains fields separated by @
:
Loaded index | Name | Type | Description |
---|---|---|---|
2 | Cost | int | The cost of the skill in TP if not negative or in HP if it is negative |
3 | Attack area | AttackArea | Tells who this skills affects on usage |
4 | Usable by Vi | bool | Tells if the skill is usable by Vi |
5 | Usable by Kabbu | bool | Tells if the skill is usable by Kabbu |
6 | Usable by Leif | bool | Tells if the skill is usable by Leif |
7 | Target ground only | bool | Tells if the skill can only target grounded enemies |
8 | Target front only | bool | Tells if the skill can only target the front enemy |
9 | Action command | int | The id of the action command |
10 | Target alive only | bool | Tells if the skill can only target alive entities |
11 | Exclude self target | bool | Tells if the skill excludes targeting its user |
12 | Target fainted only | bool | Tells if the skill can only target fainted entities |
The data will be loaded into skilldata[id, x]
where id
is the skill id and x
is the loaded index.
The attack area must be specified as a string or int representation of an AttackArea enum value. Here are the valid values, anything else is considered invalid:
Value | Name |
---|---|
0 | SingleEnemy |
1 | AllEnemy |
2 | SingleAlly |
3 | AllParty |
4 | All |
5 | None |
6 | User |
About the usable by fields¶
These 3 fields does tell if the skill can be used and it will be enforced when trying to confirm its selection. However, they do not actually tell if the skill is available in battle because this is managed in a different way where this information is hardcoded in the return of RefreshSkills. This means that there is 2 different sources of truth: RefreshSkills enforces that the skill is available for usage given a particular member and the data field enforces that it is usable once it is available by the same member. It implies that for the skills usability to correctly function, both RefreshSkills and the usable by fields should have matching information. Failure to do so will result in a skill being unavailable, but usable or vice versa which isn't logical.
Skills
data¶
The asset contains one line per skill whose id corresponds to the line index. Each line contains 2 fields separated by @
:
Loaded index | Name | Type | Description |
---|---|---|---|
0 | Name | SetText string | The name of the skill |
1 | Description | SetText string | The description of the skill |
The data will be loaded into skilldata[id, x]
where id
is the skill id and x
is the loaded index.