Adjust Skills Filter

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 :
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.