summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshennetsind <ind@henn.et>2013-12-07 14:06:21 -0200
committershennetsind <ind@henn.et>2013-12-07 14:06:21 -0200
commit53b2d771beebbb358bf88cad47317965876eb0b4 (patch)
tree3b300db9213f57ba040e47e5d50f69a9f8f7eaf5
parent84af31d2bd4a23d967003d70e1f53049eadfda24 (diff)
downloadhercules-53b2d771beebbb358bf88cad47317965876eb0b4.tar.gz
hercules-53b2d771beebbb358bf88cad47317965876eb0b4.tar.bz2
hercules-53b2d771beebbb358bf88cad47317965876eb0b4.tar.xz
hercules-53b2d771beebbb358bf88cad47317965876eb0b4.zip
Fixed angra manyu aspd base calc
fixed as in, it now skips the thing entirely, matching official behavior and no longer affected by job-specific modifiers. Thanks to Yommy. Signed-off-by: shennetsind <ind@henn.et>
-rw-r--r--src/map/itemdb.h1
-rw-r--r--src/map/status.c15
2 files changed, 11 insertions, 5 deletions
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index 1030035ea..d74b92d4b 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -70,6 +70,7 @@ enum item_itemid {
ITEMID_PHRACON = 1010,
ITEMID_EMVERETARCON = 1011,
ITEMID_TRAP = 1065,
+ ITEMID_ANGRA_MANYU = 1599,
ITEMID_STRANGE_EMBRYO = 6415,
ITEMID_FACE_PAINT = 6120,
ITEMID_STONE = 7049,
diff --git a/src/map/status.c b/src/map/status.c
index be004e918..4367f6243 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -1836,11 +1836,11 @@ int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
short mod = -1;
switch( sd->weapontype2 ){ // adjustment for dual weilding
- case W_DAGGER: mod = 0; break; // 0, 1, 1
- case W_1HSWORD:
- case W_1HAXE: mod = 1;
- if( (sd->class_&MAPID_THIRDMASK) == MAPID_GUILLOTINE_CROSS ) // 0, 2, 3
- mod = sd->weapontype2 / W_1HSWORD + W_1HSWORD / sd->weapontype2 ;
+ case W_DAGGER: mod = 0; break; // 0, 1, 1
+ case W_1HSWORD:
+ case W_1HAXE: mod = 1;
+ if( (sd->class_&MAPID_THIRDMASK) == MAPID_GUILLOTINE_CROSS ) // 0, 2, 3
+ mod = sd->weapontype2 / W_1HSWORD + W_1HSWORD / sd->weapontype2 ;
}
amotion = ( sd->status.weapon < MAX_WEAPON_TYPE && mod < 0 )
@@ -1863,9 +1863,14 @@ int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
// percentual delay reduction from stats
amotion -= amotion * (4*st->agi + st->dex)/1000;
#endif
+
// raw delay adjustment from bAspd bonus
amotion += sd->bonus.aspd_add;
+ /* angra manyu disregards aspd_base and similar */
+ if( sd->equip_index[EQI_HAND_R] >= 0 && sd->status.inventory[sd->equip_index[EQI_HAND_R]].nameid == ITEMID_ANGRA_MANYU )
+ return 0;
+
return amotion;
}