public void OnCreatureAttacks(AttackerAction aAction)
{
// Handles the multiple target training requirements
// Check if skill used is LightningRod
if (aAction.SkillId != SkillId.LightningRod)
return;
// Get skill
var attackerSkill = aAction.Creature.Skills.Get(SkillId.LightningRod);
if (attackerSkill == null) return; // Should be impossible.
// Get targets
var targets = aAction.Pack.GetTargets();
// Kill count
var killCount = targets.Where(a => a.IsDead).Count();
// Learning by attacking
switch (attackerSkill.Info.Rank)
{
case SkillRank.RF:
case SkillRank.RE:
case SkillRank.RD:
case SkillRank.RC:
case SkillRank.RB:
case SkillRank.RA:
case SkillRank.R9:
case SkillRank.R8:
case SkillRank.R7:
if (killCount >= 2) // Defeat 2 or more enemies
attackerSkill.Train(4);
break;
case SkillRank.R6:
case SkillRank.R5:
case SkillRank.R4:
if (killCount >= 3) // Defeat 3 or more enemies
attackerSkill.Train(4);
break;
case SkillRank.R3:
case SkillRank.R2:
if (killCount >= 4) // Defeat 4 or more enemies
{
attackerSkill.Train(4);
if (aAction.Creature.Temp.LightningRodFullCharge) // Defeat 4 or more Enemies with a Max Charge
attackerSkill.Train(5);
}
break;
case SkillRank.R1:
if (killCount >= 5) // Defeat 5 or more enemies
{
attackerSkill.Train(4);
if (aAction.Creature.Temp.LightningRodFullCharge) // Defeat 5 or more Enemies with a Max Charge
attackerSkill.Train(5);
}
break;
}
}