private void OnCreatureAttack(TargetAction tAction)
{
if (!tAction.Has(TargetOptions.Critical))
return;
var attackerSkill = tAction.Attacker.Skills.Get(SkillId.CriticalHit);
var targetSkill = tAction.Creature.Skills.Get(SkillId.CriticalHit);
if (attackerSkill.Info.Rank == SkillRank.Novice)
{
if (tAction.Is(CombatActionType.CounteredHit2))
attackerSkill.Train(1); // Novice -> RF
}
else
{
attackerSkill.Train(1); // Land a critical hit.
if (tAction.Creature.IsDead)
attackerSkill.Train(3); // Finish off with critical hit.
}
if (targetSkill != null && targetSkill.Info.Rank >= SkillRank.RF)
targetSkill.Train(2); // Learn from enemy's critical hit.
}