Jump to content
  • 0

[Request] Renewal attack speed


Question

9 answers to this question

Recommended Posts

  • 0
Posted

I think he wants to know what to do to add renewal atk speed to 3ceam releases as in formula/code/what to edit in the source to change pre-renewal atk speed to renewal atk speed [Note - atk speed = ASPD [probably] just in case you may think it may be cast times]

  • 0
Posted

yea I agree with what bluesky is saying. Understanding the src is pretty much all you need, cause if you don't then there probably be a lot of variables you will miss

  • 0
Posted (edited)

Currently Ragnarok Online has 2 way different ASPD formulas, one running on servers iRO, bRO, pRO, twRO, rRO, fRO, etc. The other is running only over kRO.

The one which some private servers bought it from a Dev of eAthena is the one that iRO uses, which has fixed penalty from weapons, fixed bonus aspd from items.

The kRO aspd formula decrease the penalty from weapons depending on AGI, there are not fixed bonus from items (more AGI means more bonus from conc pot, awakening pot or berserk potions), and normally their aspd formula provides less aspd than iRO aspd formula.

This mean a char would have more Aspd at low/ medium AGI in iRO based servers compared to kRO servers, but in contrast a char would reach more Aspd at high AGI over kRO (main servers / sakray) than iRO based servers.

So which one are you requesting?.

Edited by JakeRed
  • 0
Posted (edited)

You can use the brAthena formula, it's the orignal kRO formula...

http://svn.brathena....rc/map/status.c

Change status_base_amotion_pc to this:

// Valores de ASPD
int status_base_amotion_pc(struct map_session_data* sd, struct status_data* status)
{
int bonus = 0, amotion;

// Bônus vindo de armas
amotion = status_amotion_pc(sd);

// Redução por status
amotion -= (int)(((float)sqrt((float)((float)pow((float)status->agi,2)/2) + ((float)pow((float)status->dex,2)/5) )/4)*10 + (bonus*status->agi/200));

// Ajustes vindo do bônus bAspd
amotion += sd->aspd_add;

// Ajustes de bônus vindo da habilidade Perícia em Esgrima
amotion += amotion * pc_checkskill(sd, GN_TRAINING_SWORD) / 100;

// Ajustes vindo para uso de escudos
if(sd->status.shield > 0)
amotion += ((aspd_base[pc_class2idx(sd->status.class_)][MAX_WEAPON_TYPE])/10);

 return amotion;
}

Add above the status_base_amotion_pc, this function:

// Cálculo de ASPD para armas.
int status_amotion_pc(struct map_session_data* sd){
int i;
if( sd->status.weapon < MAX_WEAPON_TYPE )
i = aspd_base[pc_class2idx(sd->status.class_)][sd->status.weapon];
else{
i = aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype1];
switch( sd->weapontype2 ){
case W_DAGGER: i += 100; break;
case W_1HSWORD: i += ((sd->status.class_ == 4065) ? 160:120); break;
case W_1HAXE: i += ((sd->status.class_ == 4065) ? 200:120); break;
}
}
return i;
}

Done.

Edited by Protimus
  • 0
Posted

You can use the brAthena formula, it's the orignal kRO formula...

http://svn.brathena....rc/map/status.c

Change status_base_amotion_pc to this:

// Valores de ASPD
int status_base_amotion_pc(struct map_session_data* sd, struct status_data* status)
{
int bonus = 0, amotion;

// Bônus vindo de armas
amotion = status_amotion_pc(sd);

// Redução por status
amotion -= (int)(((float)sqrt((float)((float)pow((float)status->agi,2)/2) + ((float)pow((float)status->dex,2)/5) )/4)*10 + (bonus*status->agi/200));

// Ajustes vindo do bônus bAspd
amotion += sd->aspd_add;

// Ajustes de bônus vindo da habilidade Perícia em Esgrima
amotion += amotion * pc_checkskill(sd, GN_TRAINING_SWORD) / 100;

// Ajustes vindo para uso de escudos
if(sd->status.shield > 0)
amotion += ((aspd_base[pc_class2idx(sd->status.class_)][MAX_WEAPON_TYPE])/10);

 return amotion;
}

Add above the status_base_amotion_pc, this function:

// Cálculo de ASPD para armas.
int status_amotion_pc(struct map_session_data* sd){
int i;
if( sd->status.weapon < MAX_WEAPON_TYPE )
i = aspd_base[pc_class2idx(sd->status.class_)][sd->status.weapon];
else{
i = aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype1];
switch( sd->weapontype2 ){
case W_DAGGER: i += 100; break;
case W_1HSWORD: i += ((sd->status.class_ == 4065) ? 160:120); break;
case W_1HAXE: i += ((sd->status.class_ == 4065) ? 200:120); break;
}
}
return i;
}

Done.

sir in job_db1.txt? there is no changes?

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...