- Хроники
- Chaotic Throne: High Five
- Исходники
- Присутствуют
- Сборка
- l2-scripts, open-team
Java:
public void useSkill(Creature activeChar, List<Creature> targets)
{
for(Creature target : targets)
if(target != null)
{
//if(calcStealChance(target, activeChar))
//{
int stealCount = Rnd.get(1, _stealCount); // ToCheck
if(!target.isPlayer())
continue;
List<Effect> effectsList = target.getEffectList().getAllEffects();
Collections.sort(effectsList, EffectsComparator.getInstance()); // ToFix: Comparator to HF
Collections.reverse(effectsList);
// Крутой изжоп для корявой системы эффектов, которую давно отправить в топку.
IntObjectMap<List<Effect>> effectSkills = new TreeIntObjectMap<List<Effect>>();
for(Effect e : effectsList)
{
List<Effect> effects = effectSkills.get(e.getDisplayId());
if(effects == null)
{
effects = new ArrayList<Effect>();
effectSkills.put(e.getDisplayId(), effects);
}
effects.add(e);
}
int counter = 0;
loop: for(List<Effect> effects : effectSkills.values())
{
if(counter >= stealCount)
break;
if(effects.isEmpty())
continue;
for(Effect e : effects)
{
if(!canSteal(e))
continue loop;
}
for(Effect e : effects)
{
Effect stolenEffect = cloneEffect(activeChar, e);
if(stolenEffect != null)
activeChar.getEffectList().addEffect(stolenEffect);
e.exit();
}
counter++;
}
//}
//else
//{
// activeChar.sendPacket(new SystemMessage(SystemMessage.C1_HAS_RESISTED_YOUR_S2).addString(target.getName()).addSkillName(getId(), getLevel()));
//continue;
//}
useInstantEffects(activeChar, target, false);
getEffects(activeChar, target, getActivateRate() > 0, false);
}
if(isSSPossible())
activeChar.unChargeShots(isMagic());
}
Это л2 скрипт, как сделать чтоб начинало с денс, сонг?
Java:
public void useSkill(L2Character activeChar, GArray<L2Character> targets)
{
for(L2Character target : targets)
if(target != null)
{
if(!target.isPlayer())
continue;
if(target.checkReflectSkill(activeChar, this))
target = activeChar;
ConcurrentLinkedQueue<L2Skill> eff = target.getEffectList().getAllSkills(true);
if(eff.size() == 0)
continue;
boolean update = false;
int counter = 0;
double cancel_res_multiplier = target.calcStat(Stats.CANCEL_RECEPTIVE, 0, null, null); // constant resistance is applied for whole cycle of cancellation
L2Skill[] a = eff.toArray(new L2Skill[eff.size()]);
// Сначало крадем песни/танцы
for(int i = 0; counter < _stealCount && i < a.length; i++)
{
L2Skill e = a[a.length - i - 1];
if(e != null && e.isMusic() && e.isCancelable() && !e.isOffensive())
{
if(calcStealChance(target, activeChar, e, cancel_res_multiplier))
{
if(cloneEffect(activeChar, target, e))
{
update = true;
target.getEffectList().stopEffect(e.getId());
}
}
counter++;
}
}
// Потом остальное
for(int i = 0; counter < _stealCount && i < a.length; i++)
{
L2Skill e = a[a.length - i - 1];
if(e != null && !e.isMusic() && e.isCancelable() && !e.isToggle() && !e.isPassive() && (!e.isOffensive() || e.getId() == 368) && e.getAbnormalType() != SkillAbnormalType.vp_up && e.getId() != 1540)
{
if(calcStealChance(target, activeChar, e, cancel_res_multiplier))
{
if(cloneEffect(activeChar, target, e))
{
update = true;
target.getEffectList().stopEffect(e.getId());
}
}
counter++;
}
}
target.updateEffectIcons();
if(update)
{
activeChar.sendChanges();
activeChar.updateEffectIcons();
}
}
if(isSSPossible())
activeChar.unChargeShots(isMagic());
}
Вот пример с л2 опен, тут сразу сонг денс, как адаптировать?
Последнее редактирование модератором: