// Шансы использования скилов
int s_energy_wave = 20;
int s_earth_quake = 20;
int s_group_hold = actor.getCurrentHpPercents() > 50 ? 0 : 20;
int s_thunderbolt = actor.getCurrentHpPercents() > 25 ? 0 : 20;
L2Skill r_skill = null;
if(actor.isRooted()) // Если в руте, то использовать массовый скилл дальнего боя
{
r_skill = thunderbolt;
}
else if(!Rnd.chance(100 - s_thunderbolt - s_group_hold - s_energy_wave - s_earth_quake)) // Выбираем скилл атаки
{
FastMap<L2Skill, Integer> d_skill = new FastMap<L2Skill, Integer>(); //TODO class field ?
double distance = actor.getDistance(target);
addDesiredSkill(d_skill, target, distance, energy_wave);
addDesiredSkill(d_skill, target, distance, earth_quake);
if(s_group_hold > 0)
{
addDesiredSkill(d_skill, target, distance, group_hold);
}
if(s_thunderbolt > 0)
{
addDesiredSkill(d_skill, target, distance, thunderbolt);
}
r_skill = selectTopSkill(d_skill);
}
// Использовать скилл если можно, иначе атаковать скилом baium_normal_attack
if(r_skill == null)
{
r_skill = baium_normal_attack;
}
else if(r_skill.getTargetType() == L2Skill.SkillTargetType.TARGET_SELF)
{
target = actor;
}
// Добавить новое задание
addTaskCast(target, r_skill);