diff options
-rw-r--r-- | Changelog-Trunk.txt | 2 | ||||
-rw-r--r-- | src/map/status.c | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 604398272..dddeef883 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. 2008/04/06 + * Equip speed buffs no longer stack with speed consumables. (r12509) [Kevin] + - (Speed potion not included). * Sprint, Fusion, and Increase AGI now stack independently. - The others still don't take affect if you have any of these three. (r12508) [Kevin] * Mind Sensing no longer gives an xp bonus on bosses. (r12507) [Kevin] diff --git a/src/map/status.c b/src/map/status.c index 77189bedb..aaabeebaa 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -3701,7 +3701,10 @@ static signed short status_calc_mdef2(struct block_list *bl, struct status_chang static unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc, int speed) { + + //Default speed coming in means there's no speed_rate adjustments. int new_speed = speed; + bool default_speed = (speed == 100); if(!sc || !sc->count) return cap_value(speed,10,USHRT_MAX); @@ -3715,7 +3718,7 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha new_speed += 300; if(!sc->data[SC_GATLINGFEVER]) - { //These two stack with everything (but only one of them) + { //These two stack with everything (but only one of either) if(sc->data[SC_SPEEDUP1]) new_speed -= new_speed * 50/100; else if(sc->data[SC_AVOID]) @@ -3732,10 +3735,12 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha new_speed -= new_speed * 25/100; + //These only apply if you don't have increase agi and/or fusion and/or sprint if(speed == new_speed) { - if(sc->data[SC_SPEEDUP0]) + //Don't allow buff from non speed potion consumables to stack with equips! + if(sc->data[SC_SPEEDUP0] && default_speed) new_speed -= new_speed * 25/100; else if(sc->data[SC_CARTBOOST]) new_speed -= new_speed * 20/100; |