Aura.Channel.Skills.Combat.FinalHit.OnCreatureAttack C# (CSharp) Метод

OnCreatureAttack() приватный Метод

Handles training.
private OnCreatureAttack ( TargetAction tAction ) : void
tAction TargetAction
Результат void
		private void OnCreatureAttack(TargetAction tAction)
		{
			if (tAction.AttackerSkillId != SkillId.FinalHit)
				return;

			// Increase counters for collective kill conditions
			if (tAction.Creature.IsDead)
			{
				switch (tAction.Attacker.GetPowerRating(tAction.Creature))
				{
					case PowerRating.Strong: tAction.Attacker.Temp.FinalHitKillCountStrong++; goto default;
					case PowerRating.Awful: tAction.Attacker.Temp.FinalHitKillCountAwful++; goto default;
					case PowerRating.Boss: tAction.Attacker.Temp.FinalHitKillCountBoss++; goto default;
					default: tAction.Attacker.Temp.FinalHitKillCount++; break;
				}
			}

			var attackerSkill = tAction.Attacker.Skills.Get(SkillId.FinalHit);

			if (attackerSkill.Info.Rank >= SkillRank.RF && attackerSkill.Info.Rank <= SkillRank.RE)
			{
				if (tAction.Creature.IsDead)
				{
					attackerSkill.Train(1);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Strong)
						attackerSkill.Train(2);
				}

				if (tAction.Attacker.Temp.FinalHitKillCount >= 2)
				{
					attackerSkill.Train(3);
					tAction.Attacker.Temp.FinalHitKillCount = 0;
				}

				if (attackerSkill.Info.Rank == SkillRank.RE && tAction.Attacker.Temp.FinalHitKillCountStrong >= 2)
				{
					attackerSkill.Train(4);
					tAction.Attacker.Temp.FinalHitKillCountStrong = 0;
				}
			}

			if (attackerSkill.Info.Rank == SkillRank.RD)
			{
				if (tAction.Creature.IsDead)
				{
					attackerSkill.Train(1);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Strong)
						attackerSkill.Train(2);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Awful)
						attackerSkill.Train(3);
				}

				if (tAction.Attacker.Temp.FinalHitKillCount >= 2)
				{
					attackerSkill.Train(4);
					tAction.Attacker.Temp.FinalHitKillCount = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountStrong >= 2)
				{
					attackerSkill.Train(5);
					tAction.Attacker.Temp.FinalHitKillCountStrong = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountAwful >= 2)
				{
					attackerSkill.Train(6);
					tAction.Attacker.Temp.FinalHitKillCountAwful = 0;
				}
			}

			if (attackerSkill.Info.Rank >= SkillRank.RC && attackerSkill.Info.Rank <= SkillRank.RA)
			{
				if (tAction.Creature.IsDead)
				{
					attackerSkill.Train(1);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Strong)
						attackerSkill.Train(2);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Awful)
						attackerSkill.Train(3);
				}

				if (tAction.Attacker.Temp.FinalHitKillCount >= 3)
				{
					attackerSkill.Train(4);
					tAction.Attacker.Temp.FinalHitKillCount = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountStrong >= 3)
				{
					attackerSkill.Train(5);
					tAction.Attacker.Temp.FinalHitKillCountStrong = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountAwful >= 3)
				{
					attackerSkill.Train(6);
					tAction.Attacker.Temp.FinalHitKillCountAwful = 0;
				}
			}

			if (attackerSkill.Info.Rank == SkillRank.R9)
			{
				if (tAction.Creature.IsDead)
				{
					attackerSkill.Train(1);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Strong)
						attackerSkill.Train(2);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Awful)
						attackerSkill.Train(3);
				}

				if (tAction.Attacker.Temp.FinalHitKillCount >= 4)
				{
					attackerSkill.Train(4);
					tAction.Attacker.Temp.FinalHitKillCount = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountStrong >= 4)
				{
					attackerSkill.Train(5);
					tAction.Attacker.Temp.FinalHitKillCountStrong = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountAwful >= 4)
				{
					attackerSkill.Train(6);
					tAction.Attacker.Temp.FinalHitKillCountAwful = 0;
				}
			}

			if (attackerSkill.Info.Rank == SkillRank.R9)
			{
				if (tAction.Creature.IsDead)
				{
					attackerSkill.Train(1);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Strong)
						attackerSkill.Train(2);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Awful)
						attackerSkill.Train(3);
				}

				if (tAction.Attacker.Temp.FinalHitKillCount >= 4)
				{
					attackerSkill.Train(4);
					tAction.Attacker.Temp.FinalHitKillCount = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountStrong >= 4)
				{
					attackerSkill.Train(5);
					tAction.Attacker.Temp.FinalHitKillCountStrong = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountAwful >= 4)
				{
					attackerSkill.Train(6);
					tAction.Attacker.Temp.FinalHitKillCountAwful = 0;
				}
			}

			if (attackerSkill.Info.Rank >= SkillRank.R8 && attackerSkill.Info.Rank <= SkillRank.R7)
			{
				if (tAction.Creature.IsDead)
				{
					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Strong)
						attackerSkill.Train(1);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Awful)
						attackerSkill.Train(2);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Boss)
						attackerSkill.Train(3);
				}

				if (tAction.Attacker.Temp.FinalHitKillCount >= 4)
				{
					attackerSkill.Train(4);
					tAction.Attacker.Temp.FinalHitKillCount = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountStrong >= 4)
				{
					attackerSkill.Train(5);
					tAction.Attacker.Temp.FinalHitKillCountStrong = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountAwful >= 4)
				{
					attackerSkill.Train(6);
					tAction.Attacker.Temp.FinalHitKillCountAwful = 0;
				}
			}

			if (attackerSkill.Info.Rank >= SkillRank.R6 && attackerSkill.Info.Rank <= SkillRank.R4)
			{
				if (tAction.Creature.IsDead)
				{
					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Strong)
						attackerSkill.Train(1);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Awful)
						attackerSkill.Train(2);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Boss)
						attackerSkill.Train(3);
				}

				if (tAction.Attacker.Temp.FinalHitKillCount >= 5)
				{
					attackerSkill.Train(4);
					tAction.Attacker.Temp.FinalHitKillCount = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountStrong >= 5)
				{
					attackerSkill.Train(5);
					tAction.Attacker.Temp.FinalHitKillCountStrong = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountAwful >= 5)
				{
					attackerSkill.Train(6);
					tAction.Attacker.Temp.FinalHitKillCountAwful = 0;
				}
			}

			if (attackerSkill.Info.Rank >= SkillRank.R3 && attackerSkill.Info.Rank <= SkillRank.R1)
			{
				if (tAction.Creature.IsDead)
				{
					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Strong)
						attackerSkill.Train(1);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Awful)
						attackerSkill.Train(2);

					if (tAction.Attacker.GetPowerRating(tAction.Creature) == PowerRating.Boss)
						attackerSkill.Train(3);
				}

				if (tAction.Attacker.Temp.FinalHitKillCountStrong >= 5)
				{
					attackerSkill.Train(4);
					tAction.Attacker.Temp.FinalHitKillCountStrong = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountAwful >= 5)
				{
					attackerSkill.Train(5);
					tAction.Attacker.Temp.FinalHitKillCountAwful = 0;
				}

				if (tAction.Attacker.Temp.FinalHitKillCountBoss >= 5)
				{
					attackerSkill.Train(6);
					tAction.Attacker.Temp.FinalHitKillCountBoss = 0;
				}
			}
		}