Cleaned up unconditional calls to status_change_end().

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12890 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
ultramage 2008-06-24 14:23:15 +00:00
parent 5283654e88
commit 39c437346f
3 changed files with 79 additions and 152 deletions

View File

@ -2447,19 +2447,14 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
break; break;
case NJ_ISSEN: case NJ_ISSEN:
if (sc) { status_change_end(src,SC_NEN,-1);
if (sc->data[SC_NEN]) status_change_end(src,SC_HIDING,-1);
status_change_end(src,SC_NEN,-1); // fall through
if (sc->data[SC_HIDING])
status_change_end(src,SC_HIDING,-1);
}
case MO_EXTREMITYFIST: case MO_EXTREMITYFIST:
if (sc && skillid == MO_EXTREMITYFIST) if( skillid == MO_EXTREMITYFIST )
{ {
if (sc->data[SC_EXPLOSIONSPIRITS]) status_change_end(src,SC_EXPLOSIONSPIRITS,-1);
status_change_end(src, SC_EXPLOSIONSPIRITS, -1); status_change_end(src,SC_BLADESTOP,-1);
if (sc->data[SC_BLADESTOP])
status_change_end(src,SC_BLADESTOP,-1);
} }
//Client expects you to move to target regardless of distance //Client expects you to move to target regardless of distance
{ {

View File

@ -639,24 +639,16 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s
} }
status_change_end(target, SC_DEVOTION, -1); status_change_end(target, SC_DEVOTION, -1);
} }
if (sc->data[SC_FREEZE])
status_change_end(target,SC_FREEZE,-1);
if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE) if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE)
status_change_end(target,SC_STONE,-1); status_change_end(target,SC_STONE,-1);
if (sc->data[SC_SLEEP]) status_change_end(target,SC_FREEZE,-1);
status_change_end(target,SC_SLEEP,-1); status_change_end(target,SC_SLEEP,-1);
if (sc->data[SC_WINKCHARM]) status_change_end(target,SC_WINKCHARM,-1);
status_change_end(target,SC_WINKCHARM,-1); status_change_end(target,SC_CONFUSION,-1);
if (sc->data[SC_CONFUSION]) status_change_end(target,SC_TRICKDEAD,-1);
status_change_end(target, SC_CONFUSION, -1); status_change_end(target,SC_HIDING,-1);
if (sc->data[SC_TRICKDEAD]) status_change_end(target,SC_CLOAKING,-1);
status_change_end(target, SC_TRICKDEAD, -1); status_change_end(target,SC_CHASEWALK,-1);
if (sc->data[SC_HIDING])
status_change_end(target, SC_HIDING, -1);
if (sc->data[SC_CLOAKING])
status_change_end(target, SC_CLOAKING, -1);
if (sc->data[SC_CHASEWALK])
status_change_end(target, SC_CHASEWALK, -1);
if ((sce=sc->data[SC_ENDURE]) && !sce->val4) { if ((sce=sc->data[SC_ENDURE]) && !sce->val4) {
//Endure count is only reduced by non-players on non-gvg maps. //Endure count is only reduced by non-players on non-gvg maps.
//val4 signals infinite endure. [Skotlex] //val4 signals infinite endure. [Skotlex]
@ -664,8 +656,8 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s
&& --(sce->val2) < 0) && --(sce->val2) < 0)
status_change_end(target, SC_ENDURE, -1); status_change_end(target, SC_ENDURE, -1);
} }
if ((sce=sc->data[SC_GRAVITATION]) && if ((sce=sc->data[SC_GRAVITATION]) && sce->val3 == BCT_SELF)
sce->val3 == BCT_SELF) { {
struct skill_unit_group *sg = (struct skill_unit_group *)sce->val4; struct skill_unit_group *sg = (struct skill_unit_group *)sce->val4;
if (sg) { if (sg) {
skill_delunitgroup(target,sg); skill_delunitgroup(target,sg);
@ -4851,55 +4843,38 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
} }
break; break;
case SC_INCREASEAGI: case SC_INCREASEAGI:
if(sc->data[SC_DECREASEAGI]) status_change_end(bl,SC_DECREASEAGI,-1);
status_change_end(bl,SC_DECREASEAGI,-1);
break; break;
case SC_QUAGMIRE: case SC_QUAGMIRE:
if(sc->data[SC_CONCENTRATE]) status_change_end(bl,SC_CONCENTRATE,-1);
status_change_end(bl,SC_CONCENTRATE,-1); status_change_end(bl,SC_TRUESIGHT,-1);
if(sc->data[SC_TRUESIGHT]) status_change_end(bl,SC_WINDWALK,-1);
status_change_end(bl,SC_TRUESIGHT,-1);
if(sc->data[SC_WINDWALK])
status_change_end(bl,SC_WINDWALK,-1);
//Also blocks the ones below... //Also blocks the ones below...
case SC_DECREASEAGI: case SC_DECREASEAGI:
if(sc->data[SC_CARTBOOST]) status_change_end(bl,SC_CARTBOOST,-1);
status_change_end(bl,SC_CARTBOOST,-1);
//Also blocks the ones below... //Also blocks the ones below...
case SC_DONTFORGETME: case SC_DONTFORGETME:
if(sc->data[SC_INCREASEAGI]) status_change_end(bl,SC_INCREASEAGI,-1);
status_change_end(bl,SC_INCREASEAGI,-1); status_change_end(bl,SC_ADRENALINE,-1);
if(sc->data[SC_ADRENALINE]) status_change_end(bl,SC_ADRENALINE2,-1);
status_change_end(bl,SC_ADRENALINE,-1); status_change_end(bl,SC_SPEARQUICKEN,-1);
if(sc->data[SC_ADRENALINE2]) status_change_end(bl,SC_TWOHANDQUICKEN,-1);
status_change_end(bl,SC_ADRENALINE2,-1); status_change_end(bl,SC_ONEHAND,-1);
if(sc->data[SC_SPEARQUICKEN])
status_change_end(bl,SC_SPEARQUICKEN,-1);
if(sc->data[SC_TWOHANDQUICKEN])
status_change_end(bl,SC_TWOHANDQUICKEN,-1);
if(sc->data[SC_ONEHAND])
status_change_end(bl,SC_ONEHAND,-1);
break; break;
case SC_ONEHAND: case SC_ONEHAND:
//Removes the Aspd potion effect, as reported by Vicious. [Skotlex] //Removes the Aspd potion effect, as reported by Vicious. [Skotlex]
if(sc->data[SC_ASPDPOTION0]) status_change_end(bl,SC_ASPDPOTION0,-1);
status_change_end(bl,SC_ASPDPOTION0,-1); status_change_end(bl,SC_ASPDPOTION1,-1);
if(sc->data[SC_ASPDPOTION1]) status_change_end(bl,SC_ASPDPOTION2,-1);
status_change_end(bl,SC_ASPDPOTION1,-1); status_change_end(bl,SC_ASPDPOTION3,-1);
if(sc->data[SC_ASPDPOTION2])
status_change_end(bl,SC_ASPDPOTION2,-1);
if(sc->data[SC_ASPDPOTION3])
status_change_end(bl,SC_ASPDPOTION3,-1);
break; break;
case SC_MAXOVERTHRUST: case SC_MAXOVERTHRUST:
//Cancels Normal Overthrust. [Skotlex] //Cancels Normal Overthrust. [Skotlex]
if (sc->data[SC_OVERTHRUST]) status_change_end(bl, SC_OVERTHRUST, -1);
status_change_end(bl, SC_OVERTHRUST, -1);
break; break;
case SC_KYRIE: case SC_KYRIE:
// -- moonsoul (added to undo assumptio status if target has it) //Cancels Assumptio
if(sc->data[SC_ASSUMPTIO]) status_change_end(bl,SC_ASSUMPTIO,-1);
status_change_end(bl,SC_ASSUMPTIO,-1);
break; break;
case SC_DELUGE: case SC_DELUGE:
if (sc->data[SC_FOGWALL] && sc->data[SC_BLIND]) if (sc->data[SC_FOGWALL] && sc->data[SC_BLIND])
@ -4910,35 +4885,25 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
status_change_end(bl,SC_GOSPEL,-1); status_change_end(bl,SC_GOSPEL,-1);
break; break;
case SC_HIDING: case SC_HIDING:
if(sc->data[SC_CLOSECONFINE]) status_change_end(bl, SC_CLOSECONFINE, -1);
status_change_end(bl, SC_CLOSECONFINE, -1); status_change_end(bl, SC_CLOSECONFINE2, -1);
if(sc->data[SC_CLOSECONFINE2])
status_change_end(bl, SC_CLOSECONFINE2, -1);
break; break;
case SC_BERSERK: case SC_BERSERK:
if(battle_config.berserk_cancels_buffs) if(battle_config.berserk_cancels_buffs)
{ {
if (sc->data[SC_ONEHAND]) status_change_end(bl,SC_ONEHAND,-1);
status_change_end(bl,SC_ONEHAND,-1); status_change_end(bl,SC_TWOHANDQUICKEN,-1);
if (sc->data[SC_TWOHANDQUICKEN]) status_change_end(bl,SC_CONCENTRATION,-1);
status_change_end(bl,SC_TWOHANDQUICKEN,-1); status_change_end(bl,SC_PARRYING,-1);
if (sc->data[SC_CONCENTRATION]) status_change_end(bl,SC_AURABLADE,-1);
status_change_end(bl,SC_CONCENTRATION,-1);
if (sc->data[SC_PARRYING])
status_change_end(bl,SC_PARRYING,-1);
if (sc->data[SC_AURABLADE])
status_change_end(bl,SC_AURABLADE,-1);
} }
break; break;
case SC_ASSUMPTIO: case SC_ASSUMPTIO:
if(sc->data[SC_KYRIE]) status_change_end(bl,SC_KYRIE,-1);
status_change_end(bl,SC_KYRIE,-1); status_change_end(bl,SC_KAITE,-1);
if(sc->data[SC_KAITE])
status_change_end(bl,SC_KAITE,-1);
break; break;
case SC_KAITE: case SC_KAITE:
if(sc->data[SC_ASSUMPTIO]) status_change_end(bl,SC_ASSUMPTIO,-1);
status_change_end(bl,SC_ASSUMPTIO,-1);
break; break;
case SC_CARTBOOST: case SC_CARTBOOST:
if(sc->data[SC_DECREASEAGI]) if(sc->data[SC_DECREASEAGI])
@ -4948,23 +4913,18 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
} }
break; break;
case SC_FUSION: case SC_FUSION:
if(sc->data[SC_SPIRIT]) status_change_end(bl,SC_SPIRIT,-1);
status_change_end(bl,SC_SPIRIT,-1);
break; break;
case SC_ADJUSTMENT: case SC_ADJUSTMENT:
if(sc->data[SC_MADNESSCANCEL]) status_change_end(bl,SC_MADNESSCANCEL,-1);
status_change_end(bl,SC_MADNESSCANCEL,-1);
break; break;
case SC_MADNESSCANCEL: case SC_MADNESSCANCEL:
if(sc->data[SC_ADJUSTMENT]) status_change_end(bl,SC_ADJUSTMENT,-1);
status_change_end(bl,SC_ADJUSTMENT,-1);
break; break;
//NPC_CHANGEUNDEAD will debuff Blessing and Agi Up //NPC_CHANGEUNDEAD will debuff Blessing and Agi Up
case SC_CHANGEUNDEAD: case SC_CHANGEUNDEAD:
if(sc->data[SC_BLESSING]) status_change_end(bl,SC_BLESSING,-1);
status_change_end(bl,SC_BLESSING,-1); status_change_end(bl,SC_INCREASEAGI,-1);
if(sc->data[SC_INCREASEAGI])
status_change_end(bl,SC_INCREASEAGI,-1);
break; break;
} }
@ -5335,8 +5295,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
val1 = 10; val1 = 10;
val2 = tick>0?tick:60000; //SP consumption rate. val2 = tick>0?tick:60000; //SP consumption rate.
val3 = 0; val3 = 0;
if (sd && (sd->class_&MAPID_UPPERMASK) == MAPID_ASSASSIN && if (sd && (sd->class_&MAPID_UPPERMASK) == MAPID_ASSASSIN && (val3=pc_checkskill(sd,TF_MISS))>0)
(val3=pc_checkskill(sd,TF_MISS))>0)
val3 *= -1; //Substract the Dodge speed bonus. val3 *= -1; //Substract the Dodge speed bonus.
val3+= 70+val1*3; //Speed adjustment without a wall. val3+= 70+val1*3; //Speed adjustment without a wall.
//With a wall, it is val3 +25. //With a wall, it is val3 +25.
@ -6392,14 +6351,10 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
clif_devotion(md,NULL); clif_devotion(md,NULL);
} }
//Remove inherited status [Skotlex] //Remove inherited status [Skotlex]
if (sc->data[SC_AUTOGUARD]) status_change_end(bl,SC_AUTOGUARD,-1);
status_change_end(bl,SC_AUTOGUARD,-1); status_change_end(bl,SC_DEFENDER,-1);
if (sc->data[SC_DEFENDER]) status_change_end(bl,SC_REFLECTSHIELD,-1);
status_change_end(bl,SC_DEFENDER,-1); status_change_end(bl,SC_ENDURE,-1);
if (sc->data[SC_REFLECTSHIELD])
status_change_end(bl,SC_REFLECTSHIELD,-1);
if (sc->data[SC_ENDURE])
status_change_end(bl,SC_ENDURE,-1);
} }
break; break;
case SC_BLADESTOP: case SC_BLADESTOP:
@ -6439,8 +6394,7 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
if ((sce->val1&0xFFFF) == CG_MOONLIT) if ((sce->val1&0xFFFF) == CG_MOONLIT)
clif_status_change(bl,SI_MOONLIT,0); clif_status_change(bl,SI_MOONLIT,0);
if (sc->data[SC_LONGING]) status_change_end(bl,SC_LONGING,-1);
status_change_end(bl,SC_LONGING,-1);
break; break;
case SC_NOCHAT: case SC_NOCHAT:
if (sd && sd->status.manner < 0 && tid != -1) if (sd && sd->status.manner < 0 && tid != -1)
@ -6844,7 +6798,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr data)
case SC_HIDING: case SC_HIDING:
if(--(sce->val2)>0){ if(--(sce->val2)>0){
if(sce->val2 % sce->val4 == 0 &&!status_charge(bl, 0, 1)) if(sce->val2 % sce->val4 == 0 && !status_charge(bl, 0, 1))
break; //Fail if it's time to substract SP and there isn't. break; //Fail if it's time to substract SP and there isn't.
sc_timer_next(1000+tick, status_change_timer,bl->id, data); sc_timer_next(1000+tick, status_change_timer,bl->id, data);
@ -7137,17 +7091,13 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
{ {
case SC_SIGHT: /* ƒTƒCƒg */ case SC_SIGHT: /* ƒTƒCƒg */
case SC_CONCENTRATE: case SC_CONCENTRATE:
if (tsc) { status_change_end(bl, SC_HIDING, -1);
if (tsc->data[SC_HIDING]) status_change_end(bl, SC_CLOAKING, -1);
status_change_end( bl, SC_HIDING, -1);
if (tsc->data[SC_CLOAKING])
status_change_end( bl, SC_CLOAKING, -1);
}
break; break;
case SC_RUWACH: /* ƒƒAƒt */ case SC_RUWACH: /* ƒƒAƒt */
if (tsc && (tsc->data[SC_HIDING] || tsc->data[SC_CLOAKING])) { if (tsc && (tsc->data[SC_HIDING] || tsc->data[SC_CLOAKING])) {
status_change_end( bl, SC_HIDING, -1); status_change_end(bl, SC_HIDING, -1);
status_change_end( bl, SC_CLOAKING, -1); status_change_end(bl, SC_CLOAKING, -1);
if(battle_check_target( src, bl, BCT_ENEMY ) > 0) if(battle_check_target( src, bl, BCT_ENEMY ) > 0)
skill_attack(BF_MAGIC,src,src,bl,AL_RUWACH,1,tick,0); skill_attack(BF_MAGIC,src,src,bl,AL_RUWACH,1,tick,0);
} }

View File

@ -1650,44 +1650,26 @@ int unit_remove_map_(struct block_list *bl, int clrtype, const char* file, int l
ud->attackabletime = ud->canmove_tick /*= ud->canact_tick*/ = gettick(); ud->attackabletime = ud->canmove_tick /*= ud->canact_tick*/ = gettick();
if(sc && sc->count ) { //map-change/warp dispells. if(sc && sc->count ) { //map-change/warp dispells.
if(sc->data[SC_BLADESTOP]) status_change_end(bl,SC_BLADESTOP,-1);
status_change_end(bl,SC_BLADESTOP,-1); status_change_end(bl,SC_BASILICA,-1);
if(sc->data[SC_BASILICA]) status_change_end(bl,SC_ANKLE,-1);
status_change_end(bl,SC_BASILICA,-1); status_change_end(bl,SC_TRICKDEAD,-1);
if(sc->data[SC_ANKLE]) status_change_end(bl,SC_BLADESTOP,-1);
status_change_end(bl, SC_ANKLE, -1); status_change_end(bl,SC_RUN,-1);
if (sc->data[SC_TRICKDEAD]) skill_stop_dancing(bl);
status_change_end(bl, SC_TRICKDEAD, -1); status_change_end(bl,SC_WARM,-1);
if (sc->data[SC_BLADESTOP]) status_change_end(bl,SC_DEVOTION,-1);
status_change_end(bl,SC_BLADESTOP,-1); status_change_end(bl,SC_MARIONETTE,-1);
if (sc->data[SC_RUN]) status_change_end(bl,SC_MARIONETTE2,-1);
status_change_end(bl,SC_RUN,-1); status_change_end(bl,SC_CLOSECONFINE,-1);
if (sc->data[SC_DANCING]) // clear dance effect when warping [Valaris] status_change_end(bl,SC_CLOSECONFINE2,-1);
skill_stop_dancing(bl); status_change_end(bl,SC_HIDING,-1);
if (sc->data[SC_WARM]) status_change_end(bl,SC_CLOAKING,-1);
status_change_end(bl, SC_WARM, -1); status_change_end(bl,SC_CHASEWALK,-1);
if (sc->data[SC_DEVOTION])
status_change_end(bl,SC_DEVOTION,-1);
if (sc->data[SC_MARIONETTE])
status_change_end(bl,SC_MARIONETTE,-1);
if (sc->data[SC_MARIONETTE2])
status_change_end(bl,SC_MARIONETTE2,-1);
if (sc->data[SC_CLOSECONFINE])
status_change_end(bl,SC_CLOSECONFINE,-1);
if (sc->data[SC_CLOSECONFINE2])
status_change_end(bl,SC_CLOSECONFINE2,-1);
if (sc->data[SC_HIDING])
status_change_end(bl, SC_HIDING, -1);
if (sc->data[SC_CLOAKING])
status_change_end(bl, SC_CLOAKING, -1);
if (sc->data[SC_CHASEWALK])
status_change_end(bl, SC_CHASEWALK, -1);
if (sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_SELF) if (sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_SELF)
status_change_end(bl, SC_GOSPEL, -1); status_change_end(bl,SC_GOSPEL,-1);
if (sc->data[SC_CHANGE]) status_change_end(bl,SC_CHANGE,-1);
status_change_end(bl, SC_CHANGE, -1); status_change_end(bl,SC_MIRACLE,-1);
if (sc->data[SC_MIRACLE])
status_change_end(bl, SC_MIRACLE, -1);
} }
if (bl->type&BL_CHAR) { if (bl->type&BL_CHAR) {