From 0096e7d37d89055997f88cbc77345b56807cd56c Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 6 Sep 2006 21:28:32 +0000 Subject: - Corrected SC_INCREASEAGI and SC_DECREASEAGI speed-change formula. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8656 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 2 ++ src/map/status.c | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 6e179b338..20ea0be65 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,8 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/09/06 + * Corrected SC_INCREASEAGI and SC_DECREASEAGI speed-change formula. + [Skotlex] * Fixed Aex Aeterna ending on Soul Breaker's first half. [Skotlex] * Applied Orn's modification on speed increases/reductions with increase/ decrease agi [Toms] diff --git a/src/map/status.c b/src/map/status.c index 4ec104200..4b05b494e 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -3142,7 +3142,7 @@ static unsigned short status_calc_agi(struct block_list *bl, struct status_chang if(sc->data[SC_TRUESIGHT].timer!=-1) agi += 5; if(sc->data[SC_INCREASEAGI].timer!=-1) - agi += 2 + sc->data[SC_INCREASEAGI].val1; + agi += sc->data[SC_INCREASEAGI].val2; if(sc->data[SC_INCREASING].timer!=-1) agi += 4; // added based on skill updates [Reddozen] if(sc->data[SC_DECREASEAGI].timer!=-1) @@ -3619,10 +3619,10 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha speed -= speed * 50/100; else if(sc->data[SC_SPEEDUP0].timer!=-1) speed -= speed * 25/100; - else if(sc->data[SC_INCREASEAGI].timer!=-1) - speed -= (sc->data[SC_INCREASEAGI].val1 * 5)/2; //[orn] else if(sc->data[SC_FUSION].timer != -1) speed -= speed * 25/100; + else if(sc->data[SC_INCREASEAGI].timer!=-1) + speed -= speed * sc->data[SC_INCREASEAGI].val3/100; //[orn] else if(sc->data[SC_CARTBOOST].timer!=-1) speed -= speed * 20/100; else if(sc->data[SC_BERSERK].timer!=-1) @@ -3635,14 +3635,14 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha //% reductions (they stack) if(sc->data[SC_DANCING].timer!=-1 && sc->data[SC_DANCING].val3&0xFFFF) speed += speed*(sc->data[SC_DANCING].val3&0xFFFF)/100; - if(sc->data[SC_DECREASEAGI].timer!=-1) - speed += (sc->data[SC_DECREASEAGI].val1 * 5)/2; //[orn] if(sc->data[SC_STEELBODY].timer!=-1) speed = speed * 100/75; if(sc->data[SC_QUAGMIRE].timer!=-1) speed = speed * 100/50; if(sc->data[SC_SUITON].timer!=-1 && sc->data[SC_SUITON].val3) speed = speed * 100/sc->data[SC_SUITON].val3; + if(sc->data[SC_DECREASEAGI].timer!=-1) + speed = speed * 100/sc->data[SC_DECREASEAGI].val3; //[orn] if(sc->data[SC_DONTFORGETME].timer!=-1) speed = speed * 100/sc->data[SC_DONTFORGETME].val3; if(sc->data[SC_DEFENDER].timer!=-1) @@ -4767,8 +4767,14 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val calc_flag = StatusChangeFlagTable[type]; if(!(flag&4)) //Do not parse val settings when loading SCs switch(type){ + case SC_INCREASEAGI: + val2 = 2 + val1; //Agi increase + val3 = (5*val1)/2; //Speed increase + break; case SC_DECREASEAGI: val2 = 2 + val1; //Agi decrease + val3 = 100 - (5*val1)/2; //Speed decrease + if (val3 < 1) val3 = 1; if (sd) tick>>=1; //Half duration for players. break; case SC_ENDURE: @@ -5590,6 +5596,8 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val break; //In case the speed reduction comes loaded incorrectly, //prevent division by 0. + case SC_INCREASEAGI: + case SC_DECREASEAGI: case SC_DONTFORGETME: case SC_CLOAKING: case SC_LONGING: -- cgit v1.2.3-70-g09d2