From 25db581cb0a540c7264f28ad086d0963cc8f4f40 Mon Sep 17 00:00:00 2001 From: markzd Date: Thu, 29 Nov 2012 08:26:44 +0000 Subject: * Fixed (assistant/slave)summons/clone, where they dissappeared when going up to a nobranch mapflag map. (bugreport:6925) * Minor fix to to Nosiege, follow up (r16969) * Fixed RK_Refresh where it was not removing/protecting from the right debuffs. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16979 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/status.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'src/map/status.c') diff --git a/src/map/status.c b/src/map/status.c index a239be0a1..7a8f576da 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -6397,7 +6397,7 @@ int status_change_start(struct block_list *bl,enum sc_type type,int rate,int val case SC_DEATHHURT: case SC_PYREXIA: case SC_OBLIVIONCURSE: - //case SC_LEECHESEND://Need confirm. If it protects against nearly every Guillotine poison, it should work on this too right? [Rytech] + case SC_LEECHESEND: //08/31/2011 - Class Balance Changes case SC_CRYSTALIZE: case SC_DEEPSLEEP: case SC_MANDRAGORA: @@ -8599,7 +8599,8 @@ int status_change_start(struct block_list *bl,enum sc_type type,int rate,int val break; case SC_SLEEP: case SC_DEEPSLEEP: - opt_flag = 0; + if(type == SC_DEEPSLEEP) + opt_flag = 0; sc->opt1 = OPT1_SLEEP; break; case SC_BURNING: @@ -10567,8 +10568,14 @@ int status_change_clear_buffs(struct block_list *bl, int type) if (type&2) //Debuffs for (i = SC_COMMON_MIN; i <= SC_COMMON_MAX; i++) { - status_change_end(bl, (sc_type)i, INVALID_TIMER); + if(sc->data[i]) + status_change_end(bl, (sc_type)i, INVALID_TIMER); } + if(type&6) //Toxins + for (i = SC_TOXIN; i <= SC_LEECHESEND; ++i) { + if (sc->data[i]) + status_change_end(bl, (sc_type)i, INVALID_TIMER); + } for (i = SC_COMMON_MAX+1; i < SC_MAX; i++) { if (!sc->data[i]) @@ -10630,10 +10637,21 @@ int status_change_clear_buffs(struct block_list *bl, int type) continue; //Debuffs that can be removed. - case SC_HALLUCINATION: + case SC_CRYSTALIZE: + case SC_DEEPSLEEP: + case SC_MANDRAGORA: + case SC_MARSHOFABYSS: + if(!(type&6)) + continue; + break; case SC_QUAGMIRE: - case SC_SIGNUMCRUCIS: case SC_DECREASEAGI: + case SC_BURNING: + if(!(type&2)) + continue; + break; + case SC_HALLUCINATION: + case SC_SIGNUMCRUCIS: case SC_SLOWDOWN: case SC_MINDBREAKER: case SC_WINKCHARM: @@ -10646,11 +10664,10 @@ int status_change_clear_buffs(struct block_list *bl, int type) case SC_BITE: case SC_ADORAMUS: case SC_VACUUM_EXTREME: - case SC_BURNING: case SC_FEAR: case SC_MAGNETICFIELD: case SC_NETHERWORLD: - if (!(type&2)) + if (!(type&2) || type == 6) //RK_Refresh is not supposed to remove these continue; break; //The rest are buffs that can be removed. -- cgit v1.2.3-60-g2f50