https://gitlab.com/Tryskell/acis_public/-/blob/master/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/stat/CreatureStat.java
line 209 for casting speed
public int getMAtkSpd()
{
return (int) calcStat(Stats.MAGIC_ATTACK_SPEED, 333.0 * ((_activeChar.isChampion()) ? Config.CHAMPION_SPD_ATK : 1), null, null);
}
change it to
public int getMAtkSpd()
{
int speed = (int) calcStat(Stats.MAGIC_ATTACK_SPEED, 333.0 * ((_activeChar.isChampion()) ? Config.CHAMPION_SPD_ATK : 1), null, null);
if (speed > 2000)// if speed is higher than 2000
speed = 2000;// set speed 2000
return speed;
}
on line 237 for attack speed
public int getPAtkSpd()
{
return (int) calcStat(Stats.POWER_ATTACK_SPEED, _activeChar.getTemplate().getBasePAtkSpd() * ((_activeChar.isChampion()) ? Config.CHAMPION_SPD_ATK : 1), null, null);
}
change it to
public int getPAtkSpd()
{
int speed = calcStat(Stats.POWER_ATTACK_SPEED, _activeChar.getTemplate().getBasePAtkSpd() * ((_activeChar.isChampion()) ? Config.CHAMPION_SPD_ATK : 1), null, null);
if (speed > 1500)// if speed is higher than 1500
speed = 1500;// set speed 1500
return speed;
}
if you want to do it for each class you have to add "if/else if/else" the final else i gave you in the examples if you dont want to handle all classes
if (getActiveChar().getClassId().equals(ClassId.PHANTOM_RANGER)
speed = 1560; // for some class
else if (getActiveChar().getClassId().equals(ClassId.SILVER_RANGER)
speed = 1600; //for some other class
else if (speed > 1500)// final else if for all other classes
speed = 1500;
this last example is made from the code you shared i am not sure that still fits on acis or not.
good luck