summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorignizh <ignizh@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-07-10 03:48:06 +0000
committerignizh <ignizh@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-07-10 03:48:06 +0000
commit4cc3bd77b866af7c809ca4d82928011af62eed08 (patch)
treed62a15b520fc3d168fabc4934d0237d5cf2d1837 /src
parent85141e44e7991ce33199a1ada5a90b6bbf2d6b88 (diff)
downloadhercules-4cc3bd77b866af7c809ca4d82928011af62eed08.tar.gz
hercules-4cc3bd77b866af7c809ca4d82928011af62eed08.tar.bz2
hercules-4cc3bd77b866af7c809ca4d82928011af62eed08.tar.xz
hercules-4cc3bd77b866af7c809ca4d82928011af62eed08.zip
Fixed bugreport:6175 | Assumptio now doubles def & mdef on RE mode.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16386 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/battle.c3
-rw-r--r--src/map/status.c20
2 files changed, 21 insertions, 2 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index bbed08be6..20b8fa3dc 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -614,12 +614,15 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
//Finally damage reductions....
+ // Assumptio doubles the def & mdef on RE mode, otherwise gives a reduction on the final damage. [Igniz]
+#ifndef RENEWAL
if( sc->data[SC_ASSUMPTIO] ) {
if( map_flag_vs(bl->m) )
damage = damage*2/3; //Receive 66% damage
else
damage >>= 1; //Receive 50% damage
}
+#endif
if(sc->data[SC_DEFENDER] &&
(flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON))
diff --git a/src/map/status.c b/src/map/status.c
index f1ad9fd8d..80e27844a 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -353,7 +353,7 @@ void initChangeTables(void) {
set_sc( LK_CONCENTRATION , SC_CONCENTRATION , SI_CONCENTRATION , SCB_BATK|SCB_WATK|SCB_HIT|SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_DSPD );
set_sc( LK_TENSIONRELAX , SC_TENSIONRELAX , SI_TENSIONRELAX , SCB_REGEN );
set_sc( LK_BERSERK , SC_BERSERK , SI_BERSERK , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2|SCB_FLEE|SCB_SPEED|SCB_ASPD|SCB_MAXHP|SCB_REGEN );
- set_sc( HP_ASSUMPTIO , SC_ASSUMPTIO , SI_ASSUMPTIO , SCB_NONE );
+ set_sc( HP_ASSUMPTIO , SC_ASSUMPTIO , SI_ASSUMPTIO , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 );
add_sc( HP_BASILICA , SC_BASILICA );
set_sc( HW_MAGICPOWER , SC_MAGICPOWER , SI_MAGICPOWER , SCB_MATK );
add_sc( PA_SACRIFICE , SC_SACRIFICE );
@@ -462,7 +462,7 @@ void initChangeTables(void) {
set_sc( CASH_BLESSING , SC_BLESSING , SI_BLESSING , SCB_STR|SCB_INT|SCB_DEX );
set_sc( CASH_INCAGI , SC_INCREASEAGI , SI_INCREASEAGI , SCB_AGI|SCB_SPEED );
- set_sc( CASH_ASSUMPTIO , SC_ASSUMPTIO , SI_ASSUMPTIO , SCB_NONE );
+ set_sc( CASH_ASSUMPTIO , SC_ASSUMPTIO , SI_ASSUMPTIO , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 );
//set_sc( ALL_PARTYFLEE , SC_INCFLEE , SI_PARTYFLEE , SCB_NONE );
set_sc( ALL_ODINS_POWER , SC_ODINS_POWER , SI_ODINS_POWER , SCB_MATK|SCB_BATK|SCB_MDEF|SCB_DEF );
@@ -4658,6 +4658,10 @@ static defType status_calc_def(struct block_list *bl, struct status_change *sc,
def >>=1;
if(sc->data[SC_FREEZE])
def >>=1;
+#ifdef RENEWAL
+ if(sc->data[SC_ASSUMPTIO])
+ def *= 2;
+#endif
if(sc->data[SC_SIGNUMCRUCIS])
def -= def * sc->data[SC_SIGNUMCRUCIS]->val2/100;
if(sc->data[SC_CONCENTRATION])
@@ -4731,6 +4735,10 @@ static signed short status_calc_def2(struct block_list *bl, struct status_change
def2 -= def2 * 50/100;
if(sc->data[SC_PROVOKE])
def2 -= def2 * sc->data[SC_PROVOKE]->val4/100;
+#ifdef RENEWAL
+ if(sc->data[SC_ASSUMPTIO])
+ def2 *= 2;
+#endif
if(sc->data[SC_JOINTBEAT])
def2 -= def2 * ( sc->data[SC_JOINTBEAT]->val2&BREAK_SHOULDER ? 50 : 0 ) / 100
+ def2 * ( sc->data[SC_JOINTBEAT]->val2&BREAK_WAIST ? 25 : 0 ) / 100;
@@ -4782,6 +4790,10 @@ static defType status_calc_mdef(struct block_list *bl, struct status_change *sc,
mdef += (sc->data[SC_ENDURE]->val4 == 0) ? sc->data[SC_ENDURE]->val1 : 1;
if(sc->data[SC_CONCENTRATION])
mdef += 1; //Skill info says it adds a fixed 1 Mdef point.
+#ifdef RENEWAL
+ if(sc->data[SC_ASSUMPTIO])
+ mdef *= 2;
+#endif
if(sc->data[SC_STONEHARDSKIN])// Final MDEF increase divided by 10 since were using classic (pre-renewal) mechanics. [Rytech]
mdef += sc->data[SC_STONEHARDSKIN]->val1;
if( sc->data[SC_MARSHOFABYSS] )
@@ -4816,6 +4828,10 @@ static signed short status_calc_mdef2(struct block_list *bl, struct status_chang
return 0;
if(sc->data[SC_SKA])
return 90;
+#ifdef RENEWAL
+ if(sc->data[SC_ASSUMPTIO])
+ mdef2 *= 2;
+#endif
if(sc->data[SC_MINDBREAKER])
mdef2 -= mdef2 * sc->data[SC_MINDBREAKER]->val3/100;
if(sc->data[SC_ANALYZE])