Aura.Channel.Skills.Magic.LightningRod.OnCreatureAttacks C# (CSharp) Method

OnCreatureAttacks() public method

Training, called when a creature attacks another creature(s)
public OnCreatureAttacks ( AttackerAction aAction ) : void
aAction AttackerAction
return void
		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;
			}
		}