public void OnCreatureAttackedByPlayer(TargetAction tAction)
{
// Only train if used skill was Smash
if (tAction.AttackerSkillId != SkillId.Smash)
return;
// Get skill
var attackerSkill = tAction.Attacker.Skills.Get(SkillId.Smash);
if (attackerSkill == null) return; // Should be impossible.
// Learning by attacking
switch (attackerSkill.Info.Rank)
{
case SkillRank.RF:
case SkillRank.RE:
attackerSkill.Train(1); // Use the skill successfully.
if (tAction.Has(TargetOptions.Critical)) attackerSkill.Train(2); // Critical Hit with Smash.
if (tAction.Creature.IsDead) attackerSkill.Train(3); // Finishing blow with Smash.
break;
case SkillRank.RD:
case SkillRank.RC:
case SkillRank.RB:
case SkillRank.RA:
case SkillRank.R9:
case SkillRank.R8:
case SkillRank.R7:
if (tAction.Has(TargetOptions.Critical) && tAction.Creature.IsDead)
attackerSkill.Train(4); // Finishing blow with Critical Hit.
goto case SkillRank.RF;
case SkillRank.R6:
case SkillRank.R5:
case SkillRank.R4:
case SkillRank.R3:
case SkillRank.R2:
case SkillRank.R1:
if (tAction.Has(TargetOptions.Critical)) attackerSkill.Train(1); // Critical Hit with Smash.
if (tAction.Creature.IsDead) attackerSkill.Train(2); // Finishing blow with Smash.
if (tAction.Has(TargetOptions.Critical) && tAction.Creature.IsDead) attackerSkill.Train(3); // Finishing blow with Critical Hit.
break;
}
}
}