diff options
author | lordttseven <lordttseven@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-03-17 18:00:21 +0000 |
---|---|---|
committer | lordttseven <lordttseven@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-03-17 18:00:21 +0000 |
commit | eff843d3c539370892143c18cb49f5ec7d16e1a2 (patch) | |
tree | b5632e958fa672602202bd0a5bdf38eaff0696a7 /src/map/status.c | |
parent | a07d917ebf909df258edb5a01d58f161f782228c (diff) | |
download | hercules-eff843d3c539370892143c18cb49f5ec7d16e1a2.tar.gz hercules-eff843d3c539370892143c18cb49f5ec7d16e1a2.tar.bz2 hercules-eff843d3c539370892143c18cb49f5ec7d16e1a2.tar.xz hercules-eff843d3c539370892143c18cb49f5ec7d16e1a2.zip |
Rewrote SC_MAGICPOWER to behave like on official servers
* everything has been tested (with the exception of WZ_SIGHTBLASTER)
* the status now uses a much simpler two-state mechanism; see http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=4833 for details
* non-offensive and non-magic skills no longer consume the status
* set WZ_ICEWALL NK flag to NK_NO_DAMAGE to properly not consume the status
* fixed stale matk used for unit- and timerskills
* fixed the original bug with isilla card triggering a status recalc (bugreport:4833, matk swapping no longer needed)
* removed a couple now unnecessary exceptions (they now work out of the box/as side effects)
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15694 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/status.c')
-rw-r--r-- | src/map/status.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/map/status.c b/src/map/status.c index 22e7fd0ea..b4e95ae71 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -3483,11 +3483,6 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) status->matk_max = status_calc_matk(bl, sc, status->matk_max); #endif - if(sc->data[SC_MAGICPOWER]) { //Store current matk values - sc->mp_matk_min = status->matk_min; - sc->mp_matk_max = status->matk_max; - } - if( bl->type&BL_HOM && battle_config.hom_setting&0x20 ) //Hom Min Matk is always the same as Max Matk status->matk_min = status->matk_max; @@ -4136,7 +4131,7 @@ static unsigned short status_calc_matk(struct block_list *bl, struct status_chan matk += sc->data[SC_MATKPOTION]->val1; if(sc->data[SC_MATKFOOD]) matk += sc->data[SC_MATKFOOD]->val1; - if(sc->data[SC_MAGICPOWER]) + if(sc->data[SC_MAGICPOWER] && sc->data[SC_MAGICPOWER]->val4) matk += matk * sc->data[SC_MAGICPOWER]->val3/100; if(sc->data[SC_MINDBREAKER]) matk += matk * sc->data[SC_MINDBREAKER]->val2/100; @@ -6414,6 +6409,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val //val1: Skill lv val2 = 1; //Lasts 1 invocation val3 = 5*val1; //Matk% increase + val4 = 0; // 0 = ready to be used, 1 = activated and running break; case SC_SACRIFICE: val2 = 5; //Lasts 5 hits |