L2JMobius

Assassin Fix cast for teleport

Naker · 1 · 387

Online Naker

  • Heir
  • **
    • Posts: 30
On retail, the teleport cast time is not affected by casting speed or other stuff. So I make a little change in code to prevent this to happen on l2mobius assassin.

L2J_Mobius_Essence_7.1_Assassin\java\org\l2jmobius\gameserver\model\skill\SkillCaster.java

Finde this line
Code: [Select]
private void calcSkillTiming(Creature creature, Skill skill, int castTime)
{
    final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill);
    final double cancelTime = Formulas.calcSkillCancelTime(creature, skill);
   
    if (skill.getOperateType().isChanneling())
    {
        _hitTime = (int) Math.max(skill.getHitTime() - cancelTime, 0);
        _cancelTime = 2866;
    }
    else
    {
        int addedTime = 0;
        if (skill.hasEffectType(EffectType.TELEPORT) && creature.isPlayer())
        {
            switch (creature.getActingPlayer().getEinhasadOverseeingLevel())
            {
                case 6:
                {
                    addedTime = 2000;
                    break;
                }
                case 7:
                {
                    addedTime = 3000;
                    break;
                }
                case 8:
                {
                    addedTime = 4000;
                    break;
                }
                case 9:
                {
                    addedTime = 5000;
                    break;
                }
                case 10:
                {
                    addedTime = 6000;
                    break;
                }
            }
        }
       
        if (castTime > -1)
        {
            _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0) + addedTime;
        }
        else
        {
            // Use the original hit time of the skill
            _hitTime = skill.getHitTime();
        }
        _cancelTime = (int) cancelTime;
    }
    _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor
}

and change for this
Code: [Select]
private void calcSkillTiming(Creature creature, Skill skill, int castTime)
{
final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill);
final double cancelTime = Formulas.calcSkillCancelTime(creature, skill);

if (skill.getId() == 60018) // Skill ID of teleport, this code prevent to skill teleport be afected by casting speed
{
_hitTime = 4000; // retail time 4 seconds
}
else if (skill.getOperateType().isChanneling())
{
_hitTime = (int) Math.max(skill.getHitTime() - cancelTime, 0);
_cancelTime = 2866;
}
else
{
int addedTime = 0;
if (skill.hasEffectType(EffectType.TELEPORT) && creature.isPlayer())
{
switch (creature.getActingPlayer().getEinhasadOverseeingLevel())
{
case 6:
{
addedTime = 2000;
break;
}
case 7:
{
addedTime = 3000;
break;
}
case 8:
{
addedTime = 4000;
break;
}
case 9:
{
addedTime = 5000;
break;
}
case 10:
{
addedTime = 6000;
break;
}
}
}

if (castTime > -1)
{
_hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0) + addedTime;
}
else
{
_hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0) + addedTime;
}
_cancelTime = (int) cancelTime;
}
_coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor
}