private void OnCreatureAttacks(TargetAction tAction)
{
if (tAction.AttackerSkillId != SkillId.ArrowRevolver && tAction.AttackerSkillId != SkillId.ArrowRevolver2)
return;
var skill = tAction.Attacker.Skills.Get(tAction.AttackerSkillId);
if (skill == null)
return;
var powerRating = tAction.Attacker.GetPowerRating(tAction.Creature);
var targetDown = tAction.IsKnockBack;
var targetDead = tAction.Creature.IsDead;
if (skill.Info.Rank == SkillRank.RF)
{
skill.Train(2); // Successfully hit an enemy.
if (targetDown) skill.Train(3); // Down an enemy with continous hit.
if (targetDead) skill.Train(4); // Kill an enemy.
}
else if (skill.Info.Rank == SkillRank.RE)
{
if (targetDown) skill.Train(1); // Down an enemy with continous hit.
if (targetDead) skill.Train(2); // Kill an enemy.
if (powerRating == PowerRating.Normal)
{
skill.Train(3); // Attack a same level enemy.
if (targetDown) skill.Train(4); // Down a same level enemy.
if (targetDead) skill.Train(5); // Kill a same level enemy.
}
if (powerRating == PowerRating.Strong)
{
if (targetDown) skill.Train(6); // Down a strong enemy.
if (targetDead) skill.Train(7); // Kill a strong enemy.
}
}
else if (skill.Info.Rank == SkillRank.RD)
{
skill.Train(1); // Successfully hit an enemy.
if (targetDown) skill.Train(2); // Down an enemy with continous hit.
if (targetDead) skill.Train(3); // Kill an enemy.
if (powerRating == PowerRating.Normal)
{
skill.Train(4); // Attack a same level enemy.
if (targetDown) skill.Train(5); // Down a same level enemy.
if (targetDead) skill.Train(6); // Kill a same level enemy.
}
if (powerRating == PowerRating.Strong)
{
if (targetDown) skill.Train(7); // Down a strong enemy.
if (targetDead) skill.Train(8); // Kill a strong enemy.
}
}
else if (skill.Info.Rank >= SkillRank.RC && skill.Info.Rank <= SkillRank.RB)
{
if (powerRating == PowerRating.Normal)
{
skill.Train(1); // Attack a same level enemy.
if (targetDown) skill.Train(2); // Down a same level enemy.
if (targetDead) skill.Train(3); // Kill a same level enemy.
}
else if (powerRating == PowerRating.Strong)
{
if (targetDown) skill.Train(4); // Down a strong enemy.
if (targetDead) skill.Train(5); // Kill a strong enemy.
}
else if (powerRating == PowerRating.Awful)
{
if (targetDown) skill.Train(6); // Down an awful enemy.
if (targetDead) skill.Train(7); // Kill an awful enemy.
}
}
else if (skill.Info.Rank >= SkillRank.RA && skill.Info.Rank <= SkillRank.R8)
{
if (powerRating == PowerRating.Normal)
{
if (targetDown) skill.Train(1); // Down a same level enemy.
if (targetDead) skill.Train(2); // Kill a same level enemy.
}
else if (powerRating == PowerRating.Strong)
{
if (targetDown) skill.Train(3); // Down a strong enemy.
if (targetDead) skill.Train(4); // Kill a strong enemy.
}
else if (powerRating == PowerRating.Awful)
{
if (targetDown) skill.Train(5); // Down an awful enemy.
if (targetDead) skill.Train(6); // Kill an awful enemy.
}
else if (powerRating == PowerRating.Boss && skill.Info.Rank == SkillRank.R8)
{
if (targetDown) skill.Train(7); // Down a boss level enemy.
if (targetDead) skill.Train(8); // Kill a boss level enemy.
}
}
else if (skill.Info.Rank == SkillRank.R7)
{
if (powerRating == PowerRating.Normal)
{
if (targetDead) skill.Train(1); // Kill a same level enemy.
}
else if (powerRating == PowerRating.Strong)
{
if (targetDown) skill.Train(2); // Down a strong enemy.
if (targetDead) skill.Train(3); // Kill a strong enemy.
}
else if (powerRating == PowerRating.Awful)
{
if (targetDown) skill.Train(4); // Down an awful enemy.
if (targetDead) skill.Train(5); // Kill an awful enemy.
}
else if (powerRating == PowerRating.Boss)
{
if (targetDown) skill.Train(6); // Down a boss level enemy.
if (targetDead) skill.Train(7); // Kill a boss level enemy.
}
}
else if (skill.Info.Rank >= SkillRank.R6 && skill.Info.Rank <= SkillRank.R1)
{
if (powerRating == PowerRating.Strong)
{
if (targetDown) skill.Train(1); // Down a strong enemy.
if (targetDead) skill.Train(2); // Kill a strong enemy.
}
else if (powerRating == PowerRating.Awful)
{
if (targetDown) skill.Train(3); // Down an awful enemy.
if (targetDead) skill.Train(4); // Kill an awful enemy.
}
else if (powerRating == PowerRating.Boss)
{
if (targetDown) skill.Train(5); // Down a boss level enemy.
if (targetDead) skill.Train(6); // Kill a boss level enemy.
}
}
}