There is a function in the runtime
engine named 'AdjustSkills'.
You can
see a diagram of it. The 'Adjust Skills Filter'
is activated before the first code in that function. The Filter
receives the following parameters :
- 0 - character index ( 0 to 3 )
- 1 - skill number ( 0 to 19 )
- 2 - experience to be applied ( should be positive )
- 3 - why the function is being called ( See list below )
- 4 to 8 - Parameters from a previous 'SetAdjustSkillsParameters'
in a DSA. These parameters initially contain zeroes.
The why paramater is an integer:
enum ADJUSTSKILLSWHY
{
ASW_Unknown
= 0,
ASW_PhysicalAttack
= 1,
ASW_WarCryEtc
= 2,
ASW_Attack
= 3,
ASW_CastSpell1
= 4,
ASW_CastSpell2
= 5,
ASW_MonsterDamagesCharacter = 6,
ASW_SkillIncreaser1 = 7,
ASW_SkillIncreaser2 = 8,
ASW_ThrowByCharacter = 9,
};
The Filter can change any of the parameters and the changed
parameters will be used by the function 'AdjustSkills'. Only the
first three ( character index, skill number, and experience to be
applied ) will have any affect on the assignment of skills. The
remaining parameters are simply for the Filter to use to orient itself
and make decisions.