summaryrefslogtreecommitdiff
path: root/src/map/status.c
diff options
context:
space:
mode:
authorcsnv <ctt@csnv.es>2014-09-10 00:12:17 +0200
committercsnv <ctt@csnv.es>2014-09-10 00:12:17 +0200
commitd19310af9540db177bb35116d19dd1c3a2afff14 (patch)
treee733376112c60f53286eeb4464eb24e7b69d6c4c /src/map/status.c
parente785879df0519ee69afcac34a1b49db1462d67fc (diff)
downloadhercules-d19310af9540db177bb35116d19dd1c3a2afff14.tar.gz
hercules-d19310af9540db177bb35116d19dd1c3a2afff14.tar.bz2
hercules-d19310af9540db177bb35116d19dd1c3a2afff14.tar.xz
hercules-d19310af9540db177bb35116d19dd1c3a2afff14.zip
Fixes songs refresh bug, updates BA_ASSASSINCROSS
- Fixes bug 7125: http://hercules.ws/board/tracker/issue-7125-song-refresh/ (Rathena fix) - Updated BA_ASSASSINCROSS ASPD Renewal Formula according to latest tests - Added 'Skill failed' message to Devotion
Diffstat (limited to 'src/map/status.c')
-rw-r--r--src/map/status.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 1748b44cb..020f405a6 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -5395,7 +5395,25 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl
skills1 = 5;
}
- if((sc->data[SC_BERSERK]) && skills1 < 15)
+ if( sc->data[SC_ASSNCROS] && skills1 < sc->data[SC_ASSNCROS]->val2){
+ if (bl->type!=BL_PC)
+ skills1 = sc->data[SC_ASSNCROS]->val2;
+ else
+ switch(((TBL_PC*)bl)->status.weapon)
+ {
+ case W_BOW:
+ case W_REVOLVER:
+ case W_RIFLE:
+ case W_GATLING:
+ case W_SHOTGUN:
+ case W_GRENADE:
+ break;
+ default:
+ skills1 = sc->data[SC_ASSNCROS]->val2;
+ }
+ }
+
+ if((sc->data[SC_BERSERK]) && skills1 < 15)
skills1 = 15;
else if(sc->data[SC_GS_MADNESSCANCEL] && skills1 < 20)
skills1 = 20;
@@ -5441,7 +5459,7 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl
if( sc->data[SC_PAIN_KILLER] )
skills2 -= sc->data[SC_PAIN_KILLER]->val2;
- if( sc->data[SC_SWING] )
+ if( sc->data[SC_SWING] ) // TODO: SC_SWING shouldn't stack with skill1 modifiers
skills2 += sc->data[SC_SWING]->val3;
if( sc->data[SC_DANCE_WITH_WUG] )
skills2 += sc->data[SC_DANCE_WITH_WUG]->val3;
@@ -5457,23 +5475,7 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl
skills2 += sc->data[SC_GS_GATLINGFEVER]->val1;
if( sc->data[SC_STAR_COMFORT] )
skills2 += 3 * sc->data[SC_STAR_COMFORT]->val1;
- if( sc->data[SC_ASSNCROS] && !skills1){
- if (bl->type!=BL_PC)
- skills2 += sc->data[SC_ASSNCROS]->val2;
- else
- switch(((TBL_PC*)bl)->status.weapon)
- {
- case W_BOW:
- case W_REVOLVER:
- case W_RIFLE:
- case W_GATLING:
- case W_SHOTGUN:
- case W_GRENADE:
- break;
- default:
- skills2 += sc->data[SC_ASSNCROS]->val2;
- }
- }
+
return ( flag&1? (skills1 + pots) : skills2 );
#else
return 0;