|
@@ -6346,8 +6346,8 @@ 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_CRYSTALIZE:
|
|
|
+ case SC_LEECHESEND:
|
|
|
+ case SC_CRYSTALIZE: ////08/31/2011 - Class Balance Changes
|
|
|
case SC_DEEPSLEEP:
|
|
|
case SC_MANDRAGORA:
|
|
|
return 0;
|
|
@@ -8551,8 +8551,8 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
|
|
|
case SC_STONE: sc->opt1 = OPT1_STONEWAIT; break;
|
|
|
case SC_FREEZE: sc->opt1 = OPT1_FREEZE; break;
|
|
|
case SC_STUN: sc->opt1 = OPT1_STUN; break;
|
|
|
- case SC_SLEEP:
|
|
|
- case SC_DEEPSLEEP: opt_flag = 0; sc->opt1 = OPT1_SLEEP; break;
|
|
|
+ case SC_DEEPSLEEP: opt_flag = 0;
|
|
|
+ case SC_SLEEP: sc->opt1 = OPT1_SLEEP; break;
|
|
|
case SC_BURNING: sc->opt1 = OPT1_BURNING; break; // Burning need this to be showed correctly. [pakpil]
|
|
|
case SC_WHITEIMPRISON: sc->opt1 = OPT1_IMPRISON; break;
|
|
|
case SC_CRYSTALIZE: sc->opt1 = OPT1_CRYSTALIZE; break;
|
|
@@ -10553,6 +10553,7 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
|
|
|
/*==========================================
|
|
|
* Clears buffs/debuffs of a character.
|
|
|
* type&1 -> buffs, type&2 -> debuffs
|
|
|
+ * type&4 -> especific debuffs(implemented with refresh)
|
|
|
*------------------------------------------*/
|
|
|
int status_change_clear_buffs (struct block_list* bl, int type)
|
|
|
{
|
|
@@ -10562,11 +10563,14 @@ int status_change_clear_buffs (struct block_list* bl, int type)
|
|
|
if (!sc || !sc->count)
|
|
|
return 0;
|
|
|
|
|
|
- if (type&2) //Debuffs
|
|
|
- for( i = SC_COMMON_MIN; i <= SC_COMMON_MAX; i++ )
|
|
|
- {
|
|
|
- status_change_end(bl, (sc_type)i, INVALID_TIMER);
|
|
|
- }
|
|
|
+
|
|
|
+ if (type&6) //Debuffs
|
|
|
+ for (i = SC_COMMON_MIN; i <= SC_COMMON_MAX; i++)
|
|
|
+ status_change_end(bl, (sc_type)i, INVALID_TIMER);
|
|
|
+
|
|
|
+ for (i = SC_COMMON_MAX+1; i < SC_MAX; i++) {
|
|
|
+ if (!sc->data[i])
|
|
|
+ continue;
|
|
|
|
|
|
for( i = SC_COMMON_MAX+1; i < SC_MAX; i++ )
|
|
|
{
|
|
@@ -10628,7 +10632,24 @@ int status_change_clear_buffs (struct block_list* bl, int type)
|
|
|
case SC_CURSEDCIRCLE_TARGET:
|
|
|
continue;
|
|
|
|
|
|
- //Debuffs that can be removed.
|
|
|
+ //Debuffs that can be removed.
|
|
|
+ case SC_DEEPSLEEP:
|
|
|
+ case SC_BURNING:
|
|
|
+ case SC_FREEZING:
|
|
|
+ case SC_CRYSTALIZE:
|
|
|
+ case SC_TOXIN:
|
|
|
+ case SC_PARALYSE:
|
|
|
+ case SC_VENOMBLEED:
|
|
|
+ case SC_MAGICMUSHROOM:
|
|
|
+ case SC_DEATHHURT:
|
|
|
+ case SC_PYREXIA:
|
|
|
+ case SC_OBLIVIONCURSE:
|
|
|
+ case SC_LEECHESEND:
|
|
|
+ case SC_MARSHOFABYSS:
|
|
|
+ case SC_MANDRAGORA:
|
|
|
+ if(!(type&4))
|
|
|
+ continue;
|
|
|
+ break;
|
|
|
case SC_HALLUCINATION:
|
|
|
case SC_QUAGMIRE:
|
|
|
case SC_SIGNUMCRUCIS:
|
|
@@ -10645,14 +10666,13 @@ 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))
|
|
|
continue;
|
|
|
break;
|
|
|
- //The rest are buffs that can be removed.
|
|
|
+ //The rest are buffs that can be removed.
|
|
|
case SC__BLOODYLUST:
|
|
|
case SC_BERSERK:
|
|
|
case SC_SATURDAYNIGHTFEVER:
|