Originally posted by [b]malufett[/b]
just do some tweak here @skill.c
[codebox]
/*==========================================
* Does delay reductions based on dex/agi, sc data, item bonuses, ...
*------------------------------------------*/
int skill_delayfix (struct block_list *bl, int skill_id, int skill_lv)
{
int delaynodex = skill_get_delaynodex(skill_id, skill_lv);
int time = skill_get_delay(skill_id, skill_lv);
struct map_session_data *sd;
struct status_change *sc = status_get_sc(bl);
nullpo_ret(bl);
sd = BL_CAST(BL_PC, bl);
if (skill_id == SA_ABRACADABRA || skill_id == WM_RANDOMIZESPELL)
return 0; //Will use picked skill's delay.
if (bl->type&battle_config.no_skill_delay)
return battle_config.min_skill_delay_limit;
if (time < 0)
time = -time + status_get_amotion(bl); // If set to <0, add to attack motion.
// Delay reductions
switch (skill_id) { //Monk combo skills have their delay reduced by agi/dex.
case MO_TRIPLEATTACK:
case MO_CHAINCOMBO:
case MO_COMBOFINISH:
case CH_TIGERFIST:
case CH_CHAINCRUSH:
case SR_DRAGONCOMBO:
case SR_FALLENEMPIRE:
time -= 4*status_get_agi(bl) - 2*status_get_dex(bl);
break;
case HP_BASILICA:
if( sc && !sc->data[SC_BASILICA] )
time = 0; // There is no Delay on Basilica creation, only on cancel
break;
default:
if (battle_config.delay_dependon_dex && !(delaynodex&1))
{ // if skill delay is allowed to be reduced by dex
int scale = battle_config.castrate_dex_scale - status_get_dex(bl);
if (scale > 0)
time = time * scale / battle_config.castrate_dex_scale;
else //To be capped later to minimum.
time = 0;
}
if (battle_config.delay_dependon_agi && !(delaynodex&1))
{ // if skill delay is allowed to be reduced by agi
int scale = battle_config.castrate_dex_scale - status_get_agi(bl);
if (scale > 0)
time = time * scale / battle_config.castrate_dex_scale;
else //To be capped later to minimum.
time = 0;
}
}
if ( sc && sc->data[SC_SPIRIT] )
{
switch (skill_id) {
case CR_SHIELDBOOMERANG:
if (sc->data[SC_SPIRIT]->val2 == SL_CRUSADER)
time /= 2;
break;
case AS_SONICBLOW:
if (!map_flag_gvg(bl->m) && !map[bl->m].flag.battleground && sc->data[SC_SPIRIT]->val2 == SL_ASSASIN)
time /= 2;
break;
}
}
if (!(delaynodex&2))
{
if (sc && sc->count) {
if (sc->data[SC_POEMBRAGI])
time -= time * sc->data[SC_POEMBRAGI]->val3 / 100;
if (sc->data[SC_WIND_INSIGNIA] && sc->data[SC_WIND_INSIGNIA]->val1 == 3 && (skill_get_ele(skill_id, skill_lv) == ELE_WIND))
time /= 2; // After Delay of Wind element spells reduced by 50%.
}
}
if( !(delaynodex&4) && sd && sd->delayrate != 100 )
time = time * sd->delayrate / 100;
if (battle_config.delay_rate != 100)
time = time * battle_config.delay_rate / 100;
//min delay
time = max(time, status_get_amotion(bl)); // Delay can never be below amotion [Playtester]
time = max(time, battle_config.min_skill_delay_limit);
// ShowInfo("Delay delayfix = %d\n",time);
return time;
}
[/codebox]
or modify your settings @conf/battle/skill.conf