Jump to content
  • 0

Removing Skill Delay


Question

Posted

First of all, I'm sorry if this is not the correct place for this thread, but since the problem can be in so many places(battleconf, db, src), I prefer to post it here and get the thread moved if it's the case.

My current need is to fully remove the after cast delay from all skills. I've tried changing configurations in many different places, but I still couldn't achieve this goal. I don't know why, even though I've set skills not to depend on agi/dex, I can only achieve 0(or close to 0) delay when I use bless/agi Lv.100(for testing purposes).

Consider the following scenario: I want have a Champion and I want to spam Soul Collect/Fury/Soul Collect AS FAST AS HELL, but I can't due this little impasse.

These are my settings:

NOTE: I'VE COMMITED THE WHOLE RENEWAL FEATURES, SO IT'S ALL FROM PRE-RE.

battle/skill.conf:

// Delay time after casting (Note 2)
delay_rate: 0

// Does the delay time depend on the caster's DEX and/or AGI? (Note 1)
// Note: On Official servers, neither Dex nor Agi affect delay time
delay_dependon_dex: no
delay_dependon_agi: no

// Minimum allowed delay for ANY skills after casting (in miliseconds) (Note 1)
// Note: Setting this to anything above 0 can stop speedhacks.
min_skill_delay_limit: 30

//Completely disable skill delay of the following types (Note 3)
//NOTE: By default mobs don't have the skill delay as specified in the skill
//  database, but follow their own 'reuse' skill delay which is specified on
//  the mob skill db. When set, the delay for all skills become
//  min_skill_delay_limit.
no_skill_delay: 30

Setting delay, min_skill_delay_limit and no_skill_delay either to 0, 30 or 80 had no difference at all.

db/pre-re/skill_cast_db.txt:



//-- CH_SOULCOLLECT
401,2000,0,0,600000,-100,0


//-- MO_EXPLOSIONSPIRITS
270,0,0,0,180000,-10000,0

db/pre-re/skill_castnodex.db:


270,0,0
401,0,0

I've even tried fixing a return value for skill.c -> skill_delayfix method



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);

return 0;
}

But it seems that I can only completely remove the delays when I use @useskill 34/29 100 on my char.

Do any of you guys have any clue about this problem? Any answer will be much appreciated.

Thanks for the attention.

22 answers to this question

Recommended Posts

Posted (edited)

Yes, I am sure.


// Copyright © rAthena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
//#ifndef _CONFIG_RENEWAL_H_
//#define _CONFIG_RENEWAL_H_

/**
* rAthena configuration file ([url="http://rathena.org"]http://rathena.org[/url])
* For detailed guidance on these check [url="http://rathena.org/wiki/SRC/config/"]http://rathena.org/wiki/SRC/config/[/url]
**/

/**
* @INFO: This file holds general-purpose renewal settings, for class-specific ones check /src/config/classes folder
**/

/// game renewal server mode
/// (disable by commenting the line)
///
/// leave this line to enable renewal specific support such as renewal formulas
//#define RENEWAL

/// renewal cast time
/// (disable by commenting the line)
///
/// leave this line to enable renewal casting time algorithms
/// cast time is decreased by DEX * 2 + INT while 20% of the cast time is not reduced by stats.
/// example:
///  on a skill whos cast time is 10s, only 8s may be reduced. the other 2s are part of a
///  "fixed cast time" which can only be reduced by specialist items and skills
//#define RENEWAL_CAST

/// renewal drop rate algorithms
/// (disable by commenting the line)
///
/// leave this line to enable renewal item drop rate algorithms
/// while enabled a special modified based on the difference between the player and monster level is applied
/// based on the [url="http://irowiki.org/wiki/Drop_System#Level_Factor"]http://irowiki.org/w...em#Level_Factor[/url] table
//#define RENEWAL_DROP

/// renewal exp rate algorithms
/// (disable by commenting the line)
///
/// leave this line to enable renewal item exp rate algorithms
/// while enabled a special modified based on the difference between the player and monster level is applied
//#define RENEWAL_EXP

/// renewal level modifier on damage
/// (disable by commenting the line)
///
// leave this line to enable renewal base level modifier on skill damage (selected skills only)
//#define RENEWAL_LVDMG

/// renewal enchant deadly poison algorithm
///
/// leave this line to enable the renewed EDP algorithm
/// under renewal mode:
///  - damage is NOT increased by 400%
///  - it does NOT affect grimtooth
///  - weapon and status ATK are increased
//#define RENEWAL_EDP

/// renewal ASPD [malufett]
/// (disable by commenting the line)
///
/// leave this line to enable renewal ASPD
/// - shield penalty is applied
/// - AGI has a greater factor in ASPD increase
/// - there is a change in how skills/items give ASPD
/// - some skill/item ASPD bonuses won't stack
//#define RENEWAL_ASPD

//#endif // _CONFIG_RENEWAL_H_

Edited by Emistry
Please use [CODEBOX] or Attachments for long contents.
Posted

wasn't their a delay of the skill due to that src that was to prevent wpe spams?

what do you mean with that? and how can we disable the delay thing? besides some has server protection agains 3rd party program and not needed that skill delay.

Posted

First of all, sorry for late response.

Thank you a lot Judas for posting this link, I'm already doing working on it(and hope Harmony takes care of the WPE problem). I'll reply later to report if it was a success or not.

Since we are still talking about this and considering the even with agi/dex dependency removed, the skill delay reduction is still based on that, I had the not-so-brilliant idea to simulate the agi/dex in the skill_delayfix method, but it was totally in vain(I have no idea why it didn't work):

/*==========================================
* 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);
 time -= 4*200 - 2*200;
 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);
  int scale = battle_config.castrate_dex_scale - 200;
  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);
  int scale = battle_config.castrate_dex_scale - 200;
  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( !(delaynodex&4) && sd && sd->delayrate != 100 )
 time = time * sd->delayrate / 100;
if (battle_config.delay_rate != 100)
 time = time * battle_config.delay_rate / 100;
if (time < status_get_amotion(bl))
 time = status_get_amotion(bl); // Delay can never be below amotion [Playtester]
return max(time, battle_config.min_skill_delay_limit);
}

Posted (edited)

On your no_skill_delay you didn't include PC(Player Character) which the value is one.

Therefore try to set the value to 31.

Edited by Kaitou Kid
  • Upvote 1
Posted (edited)

Yes, I am sure.


// Copyright © rAthena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
//#ifndef _CONFIG_RENEWAL_H_
//#define _CONFIG_RENEWAL_H_

/**
* rAthena configuration file ([url="http://rathena.org"]http://rathena.org[/url])
* For detailed guidance on these check [url="http://rathena.org/wiki/SRC/config/"]http://rathena.org/wiki/SRC/config/[/url]
**/

/**
* @INFO: This file holds general-purpose renewal settings, for class-specific ones check /src/config/classes folder
**/

/// game renewal server mode
/// (disable by commenting the line)
///
/// leave this line to enable renewal specific support such as renewal formulas
//#define RENEWAL

/// renewal cast time
/// (disable by commenting the line)
///
/// leave this line to enable renewal casting time algorithms
/// cast time is decreased by DEX * 2 + INT while 20% of the cast time is not reduced by stats.
/// example:
///  on a skill whos cast time is 10s, only 8s may be reduced. the other 2s are part of a
///  "fixed cast time" which can only be reduced by specialist items and skills
//#define RENEWAL_CAST

/// renewal drop rate algorithms
/// (disable by commenting the line)
///
/// leave this line to enable renewal item drop rate algorithms
/// while enabled a special modified based on the difference between the player and monster level is applied
/// based on the [url="http://irowiki.org/wiki/Drop_System#Level_Factor"]http://irowiki.org/w...em#Level_Factor[/url] table
//#define RENEWAL_DROP

/// renewal exp rate algorithms
/// (disable by commenting the line)
///
/// leave this line to enable renewal item exp rate algorithms
/// while enabled a special modified based on the difference between the player and monster level is applied
//#define RENEWAL_EXP

/// renewal level modifier on damage
/// (disable by commenting the line)
///
// leave this line to enable renewal base level modifier on skill damage (selected skills only)
//#define RENEWAL_LVDMG

/// renewal enchant deadly poison algorithm
///
/// leave this line to enable the renewed EDP algorithm
/// under renewal mode:
///  - damage is NOT increased by 400%
///  - it does NOT affect grimtooth
///  - weapon and status ATK are increased
//#define RENEWAL_EDP

/// renewal ASPD [malufett]
/// (disable by commenting the line)
///
/// leave this line to enable renewal ASPD
/// - shield penalty is applied
/// - AGI has a greater factor in ASPD increase
/// - there is a change in how skills/items give ASPD
/// - some skill/item ASPD bonuses won't stack
//#define RENEWAL_ASPD

//#endif // _CONFIG_RENEWAL_H_

are you sure that you did recompile your svn after changing this line ? :)

//#define RENEWAL_CAST
Edited by eJay
  • Upvote 1
Posted

Yes, I've probably recompiled the svn at least 10 times today for different modifications.

 

@Judas Thanks a lot, rollbacking these changes and combining it with KaitouKid's answer it worked perfecly.

@KaitouKid Thanks a lot, combining it with Judas's answer it worked perfectly.

This thread can be marked as Solved now. I'm sure many people will need this in the future

Posted

@Judas Thanks a lot, rollbacking these changes and combining it with KaitouKid's answer it worked perfecly.

@KaitouKid Thanks a lot, combining it with Judas's answer it worked perfectly.

This thread can be marked as Solved now. I'm sure many people will need this in the future

did you solve the problem? what did you do? can you give details/instruction on what did you do?

did the delay or cooldown of the skill disappear?

Posted

I just did. Lol

@Judas Thanks a lot, rollbacking these changes and combining it with KaitouKid's answer it worked perfecly.

@KaitouKid Thanks a lot, combining it with Judas's answer it worked

Did you really read my reply? I implemented both Kaitou's and Judas' answers.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...