Переглянути джерело

Cleaned up status_change_end (#7211)

* Removed leftover old debug info that made it necessary to the hide the real function behind a define.
* Introduced a C++ default argument for timer id, as the timer id is only needed a single time, when the status expires naturally.
* Replaced all currently existing calls that had INVALID_TIMER as argument and made use of the new default argument.
Lemongrass3110 2 роки тому
батько
коміт
b1b371f4b8

+ 6 - 6
src/map/atcommand.cpp

@@ -7444,7 +7444,7 @@ ACMD_FUNC(unmute)
 	}
 
 	pl_sd->status.manner = 0;
-	status_change_end(&pl_sd->bl, SC_NOCHAT, INVALID_TIMER);
+	status_change_end(&pl_sd->bl, SC_NOCHAT);
 	clif_displaymessage(sd->fd,msg_txt(sd,1236)); // Player unmuted.
 
 	return 0;
@@ -7551,7 +7551,7 @@ ACMD_FUNC(mute)
 		sc_start(NULL,&pl_sd->bl,SC_NOCHAT,100,0,0);
 	} else {
 		pl_sd->status.manner = 0;
-		status_change_end(&pl_sd->bl, SC_NOCHAT, INVALID_TIMER);
+		status_change_end(&pl_sd->bl, SC_NOCHAT);
 	}
 
 	clif_GM_silence(sd, pl_sd, (manner > 0 ? 1 : 0));
@@ -8438,7 +8438,7 @@ static int atcommand_mutearea_sub(struct block_list *bl,va_list ap)
 		if (pl_sd->status.manner < 0)
 			sc_start(NULL,&pl_sd->bl,SC_NOCHAT,100,0,0);
 		else
-			status_change_end(&pl_sd->bl, SC_NOCHAT, INVALID_TIMER);
+			status_change_end(&pl_sd->bl, SC_NOCHAT);
 	}
 	return 0;
 }
@@ -9738,7 +9738,7 @@ ACMD_FUNC(mount2) {
 		sc_start(NULL, &sd->bl, SC_ALL_RIDING, 10000, 1, INFINITE_TICK);
 	} else {
 		clif_displaymessage(sd->fd,msg_txt(sd,1364)); // You have released your mount.
-		status_change_end(&sd->bl, SC_ALL_RIDING, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_ALL_RIDING);
 	}
 	return 0;
 }
@@ -10333,7 +10333,7 @@ ACMD_FUNC(changedress){
 
 	for( sc_type type : name2id ) {
 		if( sd->sc.data[type] ) {
-			status_change_end( &sd->bl, type, INVALID_TIMER );
+			status_change_end( &sd->bl, type );
 			// You should only be able to have one - so we cancel here
 			break;
 		}
@@ -10366,7 +10366,7 @@ ACMD_FUNC(costume) {
 			if( sd->sc.data[name2id[k]] ) {
 				sprintf(atcmd_output, msg_txt(sd, 727), names[k]); // '%s' Costume removed.
 				clif_displaymessage(sd->fd, atcmd_output);
-				status_change_end(&sd->bl, (sc_type)name2id[k], INVALID_TIMER);
+				status_change_end(&sd->bl, (sc_type)name2id[k]);
 				return 0;
 			}
 		}

+ 43 - 43
src/map/battle.cpp

@@ -503,12 +503,12 @@ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 d
 					damage *= 2;
 #endif
 					//Remove a unit group or end whole status change
-					status_change_end(target, SC_SPIDERWEB, INVALID_TIMER);
+					status_change_end(target, SC_SPIDERWEB);
 				}
 				if (tsc->data[SC_THORNSTRAP] && battle_getcurrentskill(src) != GN_CARTCANNON)
-					status_change_end(target, SC_THORNSTRAP, INVALID_TIMER);
+					status_change_end(target, SC_THORNSTRAP);
 				if (tsc->data[SC_CRYSTALIZE])
-					status_change_end(target, SC_CRYSTALIZE, INVALID_TIMER);
+					status_change_end(target, SC_CRYSTALIZE);
 				if (tsc->data[SC_EARTH_INSIGNIA])
 #ifdef RENEWAL
 					ratio += 50;
@@ -521,7 +521,7 @@ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 d
 #else
 					damage *= 2;
 #endif
-					status_change_end(target,SC_WIDEWEB,INVALID_TIMER);
+					status_change_end(target,SC_WIDEWEB);
 				}
 				if( tsc->data[SC_BURNT] ) {
 #ifdef RENEWAL
@@ -587,7 +587,7 @@ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 d
 #else
 					damage += (int64)(damage * 50 / 100);
 #endif
-				status_change_end(target, SC_MAGNETICFIELD, INVALID_TIMER); //freed if received earth dmg
+				status_change_end(target, SC_MAGNETICFIELD); //freed if received earth dmg
 				break;
 			case ELE_NEUTRAL:
 				if (tsc->data[SC_ANTI_M_BLAST])
@@ -1123,7 +1123,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 				damage = -sce->val2;
 		}
 		if ((--sce->val3) <= 0 || (sce->val2 <= 0) || skill_id == AL_HOLYLIGHT)
-			status_change_end(target, SC_KYRIE, INVALID_TIMER);
+			status_change_end(target, SC_KYRIE);
 	}
 
 	if ((sce = sc->data[SC_P_ALTER]) && damage > 0) {
@@ -1134,7 +1134,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 		else
 			damage = -sce->val3;
 		if (sce->val3 <= 0)
-			status_change_end(target, SC_P_ALTER, INVALID_TIMER);
+			status_change_end(target, SC_P_ALTER);
 	}
 
 	if ((sce = sc->data[SC_TUNAPARTY]) && damage > 0) {
@@ -1144,20 +1144,20 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 		else
 			damage = -sce->val2;
 		if (sce->val2 <= 0)
-			status_change_end(target, SC_TUNAPARTY, INVALID_TIMER);
+			status_change_end(target, SC_TUNAPARTY);
 	}
 
 	if ((sce = sc->data[SC_DIMENSION1]) && damage > 0) {
 		sce->val2 -= static_cast<int>(cap_value(damage, INT_MIN, INT_MAX));
 		if (sce->val2 <= 0)
-			status_change_end(target, SC_DIMENSION1, INVALID_TIMER);
+			status_change_end(target, SC_DIMENSION1);
 		return false;
 	}
 
 	if ((sce = sc->data[SC_DIMENSION2]) && damage > 0) {
 		sce->val2 -= static_cast<int>(cap_value(damage, INT_MIN, INT_MAX));
 		if (sce->val2 <= 0)
-			status_change_end(target, SC_DIMENSION2, INVALID_TIMER);
+			status_change_end(target, SC_DIMENSION2);
 		return false;
 	}
 
@@ -1171,7 +1171,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 				damage = -sce->val2;
 		}
 		if (sce->val2 <= 0)
-			status_change_end(target, SC_GUARDIAN_S, INVALID_TIMER);
+			status_change_end(target, SC_GUARDIAN_S);
 	}
 
 	// Weapon Blocking can be triggered while the above statuses are active.
@@ -1218,7 +1218,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 			}
 			return false;
 		}
-		status_change_end(target, SC_SAFETYWALL, INVALID_TIMER);
+		status_change_end(target, SC_SAFETYWALL);
 	}
 
 	if ((sc->data[SC_PNEUMA] && (flag&(BF_MAGIC | BF_LONG)) == BF_LONG) ||
@@ -1248,7 +1248,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 		{
 			if (skill_id == WL_SOULEXPANSION)
 				damage <<= 1; // If used against a player in White Imprison, the skill deals double damage.
-			status_change_end(target, SC_WHITEIMPRISON, INVALID_TIMER); // Those skills do damage and removes effect
+			status_change_end(target, SC_WHITEIMPRISON); // Those skills do damage and removes effect
 		} else {
 			d->dmg_lv = ATK_BLOCK;
 			return false;
@@ -1264,7 +1264,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 				clif_millenniumshield(target, sce->val2);
 				sce->val3 = 1000; // Next shield
 			} else
-				status_change_end(target, SC_MILLENNIUMSHIELD, INVALID_TIMER); // All shields down
+				status_change_end(target, SC_MILLENNIUMSHIELD); // All shields down
 			status_change_start(src, target, SC_STUN, 10000, 0, 0, 0, 0, 1000, SCSTART_NOTICKDEF);
 		}
 		return false;
@@ -1332,7 +1332,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 			unit_setdir(target, dir);
 		}
 		d->dmg_lv = ATK_DEF;
-		status_change_end(target, SC_LIGHTNINGWALK, INVALID_TIMER);
+		status_change_end(target, SC_LIGHTNINGWALK);
 		return false;
 	}
 
@@ -1371,7 +1371,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 		if (skill_id != ASC_BREAKER || !(flag&BF_WEAPON))
 #endif
 			if (--sce->val3 <= 0) //We make it work like Safety Wall, even though it only blocks 1 time.
-				status_change_end(target, SC_KAUPE, INVALID_TIMER);
+				status_change_end(target, SC_KAUPE);
 		return false;
 	}
 
@@ -1390,9 +1390,9 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 		}
 		//Both need to be consumed if they are active.
 		if (sce && --sce->val2 <= 0)
-			status_change_end(target, SC_UTSUSEMI, INVALID_TIMER);
+			status_change_end(target, SC_UTSUSEMI);
 		if ((sce = sc->data[SC_BUNSINJYUTSU]) && --sce->val2 <= 0)
-			status_change_end(target, SC_BUNSINJYUTSU, INVALID_TIMER);
+			status_change_end(target, SC_BUNSINJYUTSU);
 		return false;
 	}
 
@@ -1493,7 +1493,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 #ifndef RENEWAL
 			if( skill_id != ASC_BREAKER || !(flag&BF_WEAPON) )
 #endif
-				status_change_end(bl, SC_AETERNA, INVALID_TIMER); //Shouldn't end until Breaker's non-weapon part connects.
+				status_change_end(bl, SC_AETERNA); //Shouldn't end until Breaker's non-weapon part connects.
 		}
 
 #ifdef RENEWAL
@@ -1508,7 +1508,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 		if( damage ) {
 			if( sc->data[SC_DEEPSLEEP] ) {
 				damage += damage / 2; // 1.5 times more damage while in Deep Sleep.
-				status_change_end(bl,SC_DEEPSLEEP,INVALID_TIMER);
+				status_change_end(bl,SC_DEEPSLEEP);
 			}
 			if( tsd && sd && sc->data[SC_CRYSTALIZE] && flag&BF_WEAPON ) {
 				switch(tsd->status.weapon) {
@@ -1536,7 +1536,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 				}
 			}
 			if( sc->data[SC_VOICEOFSIREN] )
-				status_change_end(bl,SC_VOICEOFSIREN,INVALID_TIMER);
+				status_change_end(bl,SC_VOICEOFSIREN);
 		}
 
 		if (sc->data[SC_SOUNDOFDESTRUCTION])
@@ -1669,7 +1669,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 			per /=20; //Uses 20% SP intervals.
 			//SP Cost: 1% + 0.5% per every 20% SP
 			if (!status_charge(bl, 0, (10+5*per)*status->max_sp/1000))
-				status_change_end(bl, SC_ENERGYCOAT, INVALID_TIMER);
+				status_change_end(bl, SC_ENERGYCOAT);
 			damage -= damage * 6 * (1 + per) / 100; //Reduction: 6% + 6% every 20%
 		}
 
@@ -1706,9 +1706,9 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 
 		//Finally added to remove the status of immobile when Aimed Bolt is used. [Jobbie]
 		if( skill_id == RA_AIMEDBOLT && (sc->data[SC_BITE] || sc->data[SC_ANKLE] || sc->data[SC_ELECTRICSHOCKER]) ) {
-			status_change_end(bl, SC_BITE, INVALID_TIMER);
-			status_change_end(bl, SC_ANKLE, INVALID_TIMER);
-			status_change_end(bl, SC_ELECTRICSHOCKER, INVALID_TIMER);
+			status_change_end(bl, SC_BITE);
+			status_change_end(bl, SC_ANKLE);
+			status_change_end(bl, SC_ELECTRICSHOCKER);
 		}
 
 		if (!damage)
@@ -2804,7 +2804,7 @@ static bool is_attack_critical(struct Damage* wd, struct block_list *src, struct
 				if(sc && !sc->data[SC_AUTOCOUNTER])
 					break;
 				clif_specialeffect(src, EF_AUTOCOUNTER, AREA);
-				status_change_end(src, SC_AUTOCOUNTER, INVALID_TIMER);
+				status_change_end(src, SC_AUTOCOUNTER);
 			case KN_AUTOCOUNTER:
 				if(battle_config.auto_counter_type &&
 					(battle_config.auto_counter_type&src->type))
@@ -3953,7 +3953,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 						skillratio += -100 + sd->inventory_data[index]->weight / 10 + sd->inventory_data[index]->atk +
 							100 * sd->inventory_data[index]->weapon_level * (sd->inventory.u.items_inventory[index].refine + 6);
 				}
-				status_change_end(src,SC_CRUSHSTRIKE,INVALID_TIMER);
+				status_change_end(src,SC_CRUSHSTRIKE);
 				skill_break_equip(src,src,EQP_WEAPON,2000,BCT_SELF);
 			} else {
 				if (sc->data[SC_GIANTGROWTH] && (sd->class_&MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT) { // Increase damage again if Crush Strike is not active
@@ -5877,7 +5877,7 @@ static void battle_calc_attack_plant(struct Damage* wd, struct block_list *src,s
 	bool attack_hits = is_attack_hitting(wd, src, target, skill_id, skill_lv, false);
 
 	if (skill_id != SN_SHARPSHOOTING && skill_id != RA_ARROWSTORM)
-		status_change_end(src, SC_CAMOUFLAGE, INVALID_TIMER);
+		status_change_end(src, SC_CAMOUFLAGE);
 
 	//Plants receive 1 damage when hit
 	if( attack_hits || wd->damage > 0 )
@@ -6102,7 +6102,7 @@ static void battle_calc_weapon_final_atk_modifiers(struct Damage* wd, struct blo
 		status_fix_damage(target,src,wd->damage,clif_damage(target,src,gettick(),0,0,wd->damage,0,DMG_NORMAL,0,false),ST_REJECTSWORD);
 		clif_skill_nodamage(target,target,ST_REJECTSWORD,tsc->data[SC_REJECTSWORD]->val1,1);
 		if( --(tsc->data[SC_REJECTSWORD]->val3) <= 0 )
-			status_change_end(target, SC_REJECTSWORD, INVALID_TIMER);
+			status_change_end(target, SC_REJECTSWORD);
 	}
 
 	if( tsc && tsc->data[SC_CRESCENTELBOW] && wd->flag&BF_SHORT && rnd()%100 < tsc->data[SC_CRESCENTELBOW]->val2 ) {
@@ -6118,7 +6118,7 @@ static void battle_calc_weapon_final_atk_modifiers(struct Damage* wd, struct blo
 		clif_damage(src, target, gettick(), status_get_amotion(src)+1000, 0, rdamage/10, 1, DMG_NORMAL, 0, false);
 		status_damage(target, src, rdamage, 0, 0, 0, 0);
 		status_damage(src, target, rdamage/10, 0, 0, 1, 0);
-		status_change_end(target, SC_CRESCENTELBOW, INVALID_TIMER);
+		status_change_end(target, SC_CRESCENTELBOW);
 	}
 
 	if( sc ) {
@@ -6151,7 +6151,7 @@ static void battle_calc_weapon_final_atk_modifiers(struct Damage* wd, struct blo
 			}
 		}
 		if (skill_id != SN_SHARPSHOOTING && skill_id != RA_ARROWSTORM)
-			status_change_end(src, SC_CAMOUFLAGE, INVALID_TIMER);
+			status_change_end(src, SC_CAMOUFLAGE);
 	}
 
 #ifndef RENEWAL
@@ -8440,7 +8440,7 @@ int64 battle_calc_return_damage(struct block_list* tbl, struct block_list *src,
 					*dmg = rd1 * 30 / 100; // Received damage = 30% of amplified damage.
 					clif_skill_damage(src, tbl, gettick(), status_get_amotion(src), 0, -30000, 1, RK_DEATHBOUND, tsc->data[SC_DEATHBOUND]->val1, DMG_SINGLE);
 					skill_blown(tbl, src, skill_get_blewcount(RK_DEATHBOUND, tsc->data[SC_DEATHBOUND]->val1), unit_getdir(src), BLOWN_NONE);
-					status_change_end(tbl, SC_DEATHBOUND, INVALID_TIMER);
+					status_change_end(tbl, SC_DEATHBOUND);
 					rdamage += rd1 * 70 / 100; // Target receives 70% of the amplified damage. [Rytech]
 				}
 			}
@@ -8767,11 +8767,11 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 	}
 	if (sc && sc->count) {
 		if (sc->data[SC_CLOAKING] && !(sc->data[SC_CLOAKING]->val4 & 2))
-			status_change_end(src, SC_CLOAKING, INVALID_TIMER);
+			status_change_end(src, SC_CLOAKING);
 		else if (sc->data[SC_CLOAKINGEXCEED] && !(sc->data[SC_CLOAKINGEXCEED]->val4 & 2))
-			status_change_end(src, SC_CLOAKINGEXCEED, INVALID_TIMER);
+			status_change_end(src, SC_CLOAKINGEXCEED);
 		else if (sc->data[SC_NEWMOON] && --(sc->data[SC_NEWMOON]->val2) <= 0)
-			status_change_end(src, SC_NEWMOON, INVALID_TIMER);
+			status_change_end(src, SC_NEWMOON);
 	}
 	if (tsc && tsc->data[SC_AUTOCOUNTER] && status_check_skilluse(target, src, KN_AUTOCOUNTER, 1)) {
 		uint8 dir = map_calc_dir(target,src->x,src->y);
@@ -8783,7 +8783,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 
 			clif_skillcastcancel(target); //Remove the casting bar. [Skotlex]
 			clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, DMG_NORMAL, 0, false); //Display MISS.
-			status_change_end(target, SC_AUTOCOUNTER, INVALID_TIMER);
+			status_change_end(target, SC_AUTOCOUNTER);
 			skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skill_lv,tick,0);
 			return ATK_BLOCK;
 		}
@@ -8802,7 +8802,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 			if (status_get_class_(src) == CLASS_BOSS)
 				duration = 2000; // Only lasts 2 seconds for Boss monsters
 #endif
-		status_change_end(target, SC_BLADESTOP_WAIT, INVALID_TIMER);
+		status_change_end(target, SC_BLADESTOP_WAIT);
 		if(sc_start4(src,src, SC_BLADESTOP, 100, sd?pc_checkskill(sd, MO_BLADESTOP):5, 0, 0, target->id, duration))
 		{	//Target locked.
 			clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, DMG_NORMAL, 0, false); //Display MISS.
@@ -8821,7 +8821,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 
 		if (sc && sc->data[SC_SKILLRATE_UP] && sc->data[SC_SKILLRATE_UP]->val1 == MO_TRIPLEATTACK) {
 			triple_rate+= triple_rate*(sc->data[SC_SKILLRATE_UP]->val2)/100;
-			status_change_end(src, SC_SKILLRATE_UP, INVALID_TIMER);
+			status_change_end(src, SC_SKILLRATE_UP);
 		}
 		if (rnd()%100 < triple_rate) {
 			//Need to apply canact_tick here because it doesn't go through skill_castend_id
@@ -8838,7 +8838,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 			damage_lv ret_val;
 
 			if( --sc->data[SC_SACRIFICE]->val2 <= 0 )
-				status_change_end(src, SC_SACRIFICE, INVALID_TIMER);
+				status_change_end(src, SC_SACRIFICE);
 
 			/**
 			 * We need to calculate the DMG before the hp reduction, because it can kill the source.
@@ -8895,7 +8895,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 
 	if( sc && sc->count ) {
 		if (sc->data[SC_EXEEDBREAK])
-			status_change_end(src, SC_EXEEDBREAK, INVALID_TIMER);
+			status_change_end(src, SC_EXEEDBREAK);
 		if( sc->data[SC_SPELLFIST] && !vellum_damage ){
 			if (status_charge(src, 0, 20)) {
 				if (!is_infinite_defense(target, wd.flag)) {
@@ -8908,7 +8908,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 					DAMAGE_DIV_FIX(wd.damage, wd.div_);
 				}
 			} else
-				status_change_end(src,SC_SPELLFIST,INVALID_TIMER);
+				status_change_end(src,SC_SPELLFIST);
 		}
 		if (sc->data[SC_GIANTGROWTH] && (wd.flag&BF_SHORT) && rnd()%100 < sc->data[SC_GIANTGROWTH]->val2 && !is_infinite_defense(target, wd.flag) && !vellum_damage)
 			wd.damage += wd.damage * 150 / 100; // 2.5 times damage
@@ -8996,7 +8996,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 				}
 			}
 			else
-				status_change_end(target, SC_DEVOTION, INVALID_TIMER);
+				status_change_end(target, SC_DEVOTION);
 		}
 		if (target->type == BL_PC && (wd.flag&BF_SHORT) && tsc->data[SC_CIRCLE_OF_FIRE_OPTION]) {
 			s_elemental_data *ed = ((TBL_PC*)target)->ed;
@@ -9205,7 +9205,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 				--sce->val2;
 			}
 			if (sce->val2 <= 0)
-				status_change_end(target, SC_POISONREACT, INVALID_TIMER);
+				status_change_end(target, SC_POISONREACT);
 		}
 	}
 

+ 5 - 5
src/map/clif.cpp

@@ -11192,8 +11192,8 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
 		clif_changeoption(&sd->bl);
 
 	if ((sd->sc.data[SC_MONSTER_TRANSFORM] || sd->sc.data[SC_ACTIVE_MONSTER_TRANSFORM]) && battle_config.mon_trans_disable_in_gvg && mapdata_flag_gvg2(mapdata)) {
-		status_change_end(&sd->bl, SC_MONSTER_TRANSFORM, INVALID_TIMER);
-		status_change_end(&sd->bl, SC_ACTIVE_MONSTER_TRANSFORM, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_MONSTER_TRANSFORM);
+		status_change_end(&sd->bl, SC_ACTIVE_MONSTER_TRANSFORM);
 		clif_displaymessage(sd->fd, msg_txt(sd,731)); // Transforming into monster is not allowed in Guild Wars.
 	}
 
@@ -11459,8 +11459,8 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
 	// not when you move each cell.  This is official behaviour.
 	if (sd->sc.data[SC_CLOAKING])
 		skill_check_cloaking(&sd->bl, sd->sc.data[SC_CLOAKING]);
-	status_change_end(&sd->bl, SC_ROLLINGCUTTER, INVALID_TIMER); // If you move, you lose your counters. [malufett]
-	status_change_end(&sd->bl, SC_CRESCIVEBOLT, INVALID_TIMER);
+	status_change_end(&sd->bl, SC_ROLLINGCUTTER); // If you move, you lose your counters. [malufett]
+	status_change_end(&sd->bl, SC_CRESCIVEBOLT);
 
 	pc_delinvincibletimer(sd);
 
@@ -19590,7 +19590,7 @@ int clif_autoshadowspell_list(struct map_session_data *sd) {
 		sd->menuskill_id = SC_AUTOSHADOWSPELL;
 		sd->menuskill_val = c;
 	} else {
-		status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
+		status_change_end(&sd->bl,SC_STOP);
 		clif_skill_fail(sd,SC_AUTOSHADOWSPELL,USESKILL_FAIL_IMITATION_SKILL_NONE,0);
 	}
 

+ 11 - 11
src/map/guild.cpp

@@ -1038,11 +1038,11 @@ int guild_member_withdraw(int guild_id, uint32 account_id, uint32 char_id, int f
 		}
 
 		clif_name_area(&sd->bl); //Update display name [Skotlex]
-		status_change_end(&sd->bl,SC_LEADERSHIP,INVALID_TIMER);
-		status_change_end(&sd->bl,SC_GLORYWOUNDS,INVALID_TIMER);
-		status_change_end(&sd->bl,SC_SOULCOLD,INVALID_TIMER);
-		status_change_end(&sd->bl,SC_HAWKEYES,INVALID_TIMER);
-		status_change_end(&sd->bl,SC_EMERGENCY_MOVE,INVALID_TIMER);
+		status_change_end(&sd->bl,SC_LEADERSHIP);
+		status_change_end(&sd->bl,SC_GLORYWOUNDS);
+		status_change_end(&sd->bl,SC_SOULCOLD);
+		status_change_end(&sd->bl,SC_HAWKEYES);
+		status_change_end(&sd->bl,SC_EMERGENCY_MOVE);
 		//@TODO: Send emblem update to self and people around
 	}
 	return 0;
@@ -1534,7 +1534,7 @@ void guild_guildaura_refresh(struct map_session_data *sd, uint16 skill_id, uint1
 	if (type == SC_NONE)
 		return;
 
-	status_change_end(&sd->bl, type, INVALID_TIMER);
+	status_change_end(&sd->bl, type);
 
 	std::shared_ptr<s_skill_unit_group> group = skill_unitsetting(&sd->bl,skill_id,skill_lv,sd->bl.x,sd->bl.y,0);
 
@@ -1914,11 +1914,11 @@ int guild_broken(int guild_id,int flag) {
 			sd->state.gmaster_flag = 0;
 			clif_guild_broken(g->member[i].sd,0);
 			clif_name_area(&sd->bl); // [LuzZza]
-			status_change_end(&sd->bl,SC_LEADERSHIP,INVALID_TIMER);
-			status_change_end(&sd->bl,SC_GLORYWOUNDS,INVALID_TIMER);
-			status_change_end(&sd->bl,SC_SOULCOLD,INVALID_TIMER);
-			status_change_end(&sd->bl,SC_HAWKEYES,INVALID_TIMER);
-			status_change_end(&sd->bl,SC_EMERGENCY_MOVE,INVALID_TIMER);
+			status_change_end(&sd->bl,SC_LEADERSHIP);
+			status_change_end(&sd->bl,SC_GLORYWOUNDS);
+			status_change_end(&sd->bl,SC_SOULCOLD);
+			status_change_end(&sd->bl,SC_HAWKEYES);
+			status_change_end(&sd->bl,SC_EMERGENCY_MOVE);
 		}
 	}
 

+ 2 - 2
src/map/homunculus.cpp

@@ -270,7 +270,7 @@ int hom_dead(struct homun_data *hd)
 	clif_emotion(&sd->bl, ET_CRY);
 
 #ifdef RENEWAL
-	status_change_end(&sd->bl, SC_HOMUN_TIME, INVALID_TIMER);
+	status_change_end(&sd->bl, SC_HOMUN_TIME);
 #endif
 
 	//Remove from map (if it has no intimacy, it is auto-removed from memory)
@@ -310,7 +310,7 @@ int hom_vaporize(struct map_session_data *sd, int flag)
 	hom_save(hd);
 
 #ifdef RENEWAL
-	status_change_end(&sd->bl, SC_HOMUN_TIME, INVALID_TIMER);
+	status_change_end(&sd->bl, SC_HOMUN_TIME);
 #endif
 
 	return unit_remove_map(&hd->bl, CLR_OUTSIGHT);

+ 15 - 15
src/map/map.cpp

@@ -443,17 +443,17 @@ int map_moveblock(struct block_list *bl, int x1, int y1, t_tick tick)
 		skill_unit_move(bl,tick,2);
 		if ( sc && sc->count ) //at least one to cancel
 		{
-			status_change_end(bl, SC_CLOSECONFINE, INVALID_TIMER);
-			status_change_end(bl, SC_CLOSECONFINE2, INVALID_TIMER);
-			status_change_end(bl, SC_TINDER_BREAKER, INVALID_TIMER);
-			status_change_end(bl, SC_TINDER_BREAKER2, INVALID_TIMER);
-	//		status_change_end(bl, SC_BLADESTOP, INVALID_TIMER); //Won't stop when you are knocked away, go figure...
-			status_change_end(bl, SC_TATAMIGAESHI, INVALID_TIMER);
-			status_change_end(bl, SC_MAGICROD, INVALID_TIMER);
-			status_change_end(bl, SC_SU_STOOP, INVALID_TIMER);
+			status_change_end(bl, SC_CLOSECONFINE);
+			status_change_end(bl, SC_CLOSECONFINE2);
+			status_change_end(bl, SC_TINDER_BREAKER);
+			status_change_end(bl, SC_TINDER_BREAKER2);
+	//		status_change_end(bl, SC_BLADESTOP); //Won't stop when you are knocked away, go figure...
+			status_change_end(bl, SC_TATAMIGAESHI);
+			status_change_end(bl, SC_MAGICROD);
+			status_change_end(bl, SC_SU_STOOP);
 			if (sc->data[SC_PROPERTYWALK] &&
 				sc->data[SC_PROPERTYWALK]->val3 >= skill_get_maxcount(sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2) )
-				status_change_end(bl,SC_PROPERTYWALK,INVALID_TIMER);
+				status_change_end(bl,SC_PROPERTYWALK);
 		}
 	} else
 	if (bl->type == BL_NPC)
@@ -481,7 +481,7 @@ int map_moveblock(struct block_list *bl, int x1, int y1, t_tick tick)
 			struct block_list *d_bl;
 			if( (d_bl = map_id2bl(((TBL_PC*)bl)->shadowform_id)) == NULL || !check_distance_bl(bl,d_bl,10) ) {
 				if( d_bl )
-					status_change_end(d_bl,SC__SHADOWFORM,INVALID_TIMER);
+					status_change_end(d_bl,SC__SHADOWFORM);
 				((TBL_PC*)bl)->shadowform_id = 0;
 			}
 		}
@@ -491,7 +491,7 @@ int map_moveblock(struct block_list *bl, int x1, int y1, t_tick tick)
 				skill_unit_move_unit_group(skill_id2group(sc->data[SC_DANCING]->val2), bl->m, x1-x0, y1-y0);
 			else {
 				if (sc->data[SC_CLOAKING] && sc->data[SC_CLOAKING]->val1 < 3 && !skill_check_cloaking(bl, NULL))
-					status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
+					status_change_end(bl, SC_CLOAKING);
 				if (sc->data[SC_WARM])
 					skill_unit_move_unit_group(skill_id2group(sc->data[SC_WARM]->val4), bl->m, x1-x0, y1-y0);
 				if (sc->data[SC_BANDING])
@@ -505,7 +505,7 @@ int map_moveblock(struct block_list *bl, int x1, int y1, t_tick tick)
 				if( sc->data[SC__SHADOWFORM] ) {//Shadow Form Caster Moving
 					struct block_list *d_bl;
 					if( (d_bl = map_id2bl(sc->data[SC__SHADOWFORM]->val2)) == NULL || !check_distance_bl(bl,d_bl,10) )
-						status_change_end(bl,SC__SHADOWFORM,INVALID_TIMER);
+						status_change_end(bl,SC__SHADOWFORM);
 				}
 
 				if (sc->data[SC_PROPERTYWALK]
@@ -2095,20 +2095,20 @@ int map_quit(struct map_session_data *sd) {
 
 			//No need to save infinite status
 			if (flag[SCF_NOSAVEINFINITE] && sd->sc.data[it.first] && sd->sc.data[it.first]->val4 > 0) {
-				status_change_end(&sd->bl, static_cast<sc_type>(it.first), INVALID_TIMER);
+				status_change_end(&sd->bl, static_cast<sc_type>(it.first));
 				continue;
 			}
 
 			//Status that are not saved
 			if (flag[SCF_NOSAVE]) {
-				status_change_end(&sd->bl, static_cast<sc_type>(it.first), INVALID_TIMER);
+				status_change_end(&sd->bl, static_cast<sc_type>(it.first));
 				continue;
 			}
 			//Removes status by config
 			if (battle_config.debuff_on_logout&1 && flag[SCF_DEBUFF] || //Removes debuffs
 				(battle_config.debuff_on_logout&2 && !(flag[SCF_DEBUFF]))) //Removes buffs
 			{
-				status_change_end(&sd->bl, static_cast<sc_type>(it.first), INVALID_TIMER);
+				status_change_end(&sd->bl, static_cast<sc_type>(it.first));
 				continue;
 			}
 		}

+ 1 - 1
src/map/mercenary.cpp

@@ -281,7 +281,7 @@ int mercenary_delete(s_mercenary_data *md, int reply) {
 	if( md->devotion_flag )
 	{
 		md->devotion_flag = 0;
-		status_change_end(&sd->bl, SC_DEVOTION, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_DEVOTION);
 	}
 
 	switch( reply )

+ 2 - 2
src/map/mob.cpp

@@ -3357,8 +3357,8 @@ int mob_class_change (struct mob_data *md, int mob_id)
 	else
 		memcpy(md->name,md->db->jname.c_str(),NAME_LENGTH);
 
-	status_change_end(&md->bl,SC_KEEPING,INVALID_TIMER); // End before calling status_calc_mob().
-	status_change_end(&md->bl,SC_BARRIER,INVALID_TIMER);
+	status_change_end(&md->bl,SC_KEEPING); // End before calling status_calc_mob().
+	status_change_end(&md->bl,SC_BARRIER);
 	mob_stop_attack(md);
 	mob_stop_walking(md, 0);
 	unit_skillcastcancel(&md->bl, 0);

+ 30 - 30
src/map/pc.cpp

@@ -781,7 +781,7 @@ int pc_delsoulball(map_session_data *sd, int count, bool type)
 	}else{
 		sd->soulball -= cap_value(count, 0, sd->soulball);
 		if (sd->soulball == 0)
-			status_change_end(&sd->bl, SC_SOULENERGY, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_SOULENERGY);
 		else
 			sc->data[SC_SOULENERGY]->val1 = sd->soulball;
 	}
@@ -2654,9 +2654,9 @@ void pc_updateweightstatus(struct map_session_data *sd)
 
 	// stop old status change
 	if( old_overweight == 1 )
-		status_change_end(&sd->bl, SC_WEIGHT50, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_WEIGHT50);
 	else if( old_overweight == 2 )
-		status_change_end(&sd->bl, SC_WEIGHT90, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_WEIGHT90);
 
 	// start new status change
 	if( new_overweight == 1 )
@@ -6432,7 +6432,7 @@ enum e_setpos pc_setpos(struct map_session_data* sd, unsigned short mapindex, in
 			for (const auto &it : status_db) {
 				if (sc->data[it.first]) {
 					if (it.second->flag[SCF_REMOVEONMAPWARP])
-						status_change_end(&sd->bl, static_cast<sc_type>(it.first), INVALID_TIMER);
+						status_change_end(&sd->bl, static_cast<sc_type>(it.first));
 
 					if (it.second->flag[SCF_RESTARTONMAPWARP] && it.second->skill_id > 0) {
 						status_change_entry *sce = sd->sc.data[it.first];
@@ -6875,12 +6875,12 @@ static void pc_checkallowskill(struct map_session_data *sd)
 			if (status == SC_DANCING && !battle_config.dancing_weaponswitch_fix)
 				continue;
 			if (sd->sc.data[status] && !pc_check_weapontype(sd, skill_get_weapontype(it.second->skill_id)))
-				status_change_end(&sd->bl, status, INVALID_TIMER);
+				status_change_end(&sd->bl, status);
 		}
 
 		if (flag[SCF_REQUIRESHIELD]) { // Skills requiring a shield
 			if (sd->sc.data[status] && sd->status.shield <= 0)
-				status_change_end(&sd->bl, status, INVALID_TIMER);
+				status_change_end(&sd->bl, status);
 		}
 	}
 }
@@ -8886,9 +8886,9 @@ int pc_resetskill(struct map_session_data* sd, int flag)
 			hom_vaporize(sd, HOM_ST_ACTIVE);
 
 		if (sd->sc.data[SC_SPRITEMABLE] && pc_checkskill(sd, SU_SPRITEMABLE))
-			status_change_end(&sd->bl, SC_SPRITEMABLE, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_SPRITEMABLE);
 		if (sd->sc.data[SC_SOULATTACK] && pc_checkskill(sd, SU_SOULATTACK))
-			status_change_end(&sd->bl, SC_SOULATTACK, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_SOULATTACK);
 	}
 
 	for (const auto &skill : skill_db) {
@@ -9209,7 +9209,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
 		if (sd->devotion[k]){
 			struct map_session_data *devsd = map_id2sd(sd->devotion[k]);
 			if (devsd)
-				status_change_end(&devsd->bl, SC_DEVOTION, INVALID_TIMER);
+				status_change_end(&devsd->bl, SC_DEVOTION);
 			sd->devotion[k] = 0;
 		}
 	}
@@ -9219,7 +9219,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
 			struct map_session_data *smarksd = map_id2sd(sd->stellar_mark[k]);
 
 			if (smarksd)
-				status_change_end(&smarksd->bl, SC_FLASHKICK, INVALID_TIMER);
+				status_change_end(&smarksd->bl, SC_FLASHKICK);
 			sd->stellar_mark[k] = 0;
 		}
 	}
@@ -9229,7 +9229,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
 			struct map_session_data *usoulsd = map_id2sd(sd->united_soul[k]);
 
 			if (usoulsd)
-				status_change_end(&usoulsd->bl, SC_SOULUNITY, INVALID_TIMER);
+				status_change_end(&usoulsd->bl, SC_SOULUNITY);
 			sd->united_soul[k] = 0;
 		}
 	}
@@ -9239,13 +9239,13 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
 			struct map_session_data *ssignsd = map_id2sd(sd->servant_sign[k]);
 
 			if (ssignsd)
-				status_change_end(&ssignsd->bl, SC_SERVANT_SIGN, INVALID_TIMER);
+				status_change_end(&ssignsd->bl, SC_SERVANT_SIGN);
 			sd->servant_sign[k] = 0;
 		}
 	}
 
 	if(sd->shadowform_id) { //if we were target of shadowform
-		status_change_end(map_id2bl(sd->shadowform_id), SC__SHADOWFORM, INVALID_TIMER);
+		status_change_end(map_id2bl(sd->shadowform_id), SC__SHADOWFORM);
 		sd->shadowform_id = 0; //should be remove on status end anyway
 	}
 
@@ -9591,7 +9591,7 @@ bool pc_revive_item(struct map_session_data *sd) {
 		return false;
 
 	if (item_position < 0)
-		status_change_end(&sd->bl, SC_LIGHT_OF_REGENE, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_LIGHT_OF_REGENE);
 	else
 		pc_delitem(sd, item_position, 1, 0, 1, LOG_TYPE_CONSUME);
 
@@ -9965,7 +9965,7 @@ bool pc_setparam(struct map_session_data *sd,int64 type,int64 val_tmp)
 		if( val < 0 )
 			sc_start(NULL, &sd->bl, SC_NOCHAT, 100, 0, 0);
 		else {
-			status_change_end(&sd->bl, SC_NOCHAT, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_NOCHAT);
 			clif_manner_message(sd, 5);
 		}
 		return true; // status_change_start/status_change_end already sends packets warning the client
@@ -10458,11 +10458,11 @@ bool pc_jobchange(struct map_session_data *sd,int job, char upper)
 		hom_vaporize(sd, HOM_ST_ACTIVE);
 
 	if (sd->sc.data[SC_SPRITEMABLE] && !pc_checkskill(sd, SU_SPRITEMABLE))
-		status_change_end(&sd->bl, SC_SPRITEMABLE, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_SPRITEMABLE);
 	if (sd->sc.data[SC_SOULATTACK] && !pc_checkskill(sd, SU_SOULATTACK))
-		status_change_end(&sd->bl, SC_SOULATTACK, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_SOULATTACK);
 	if( sd->sc.data[SC_SPIRIT] ){
-		status_change_end( &sd->bl, SC_SPIRIT, INVALID_TIMER );
+		status_change_end( &sd->bl, SC_SPIRIT );
 	}
 
 	if(sd->status.manner < 0)
@@ -10637,7 +10637,7 @@ void pc_setoption(struct map_session_data *sd,int type, int subtype)
 	if( type&OPTION_MADOGEAR && !(p_type&OPTION_MADOGEAR) ) {
 		sc_start(&sd->bl, &sd->bl, SC_MADOGEAR, 100, subtype, INFINITE_TICK);
 	} else if( !(type&OPTION_MADOGEAR) && p_type&OPTION_MADOGEAR ) {
-		status_change_end(&sd->bl, SC_MADOGEAR, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_MADOGEAR);
 	}
 
 	if (type&OPTION_FLYING && !(p_type&OPTION_FLYING))
@@ -10686,7 +10686,7 @@ bool pc_setcart(struct map_session_data *sd,int type) {
 		case 0:
 			if( !sd->sc.data[SC_PUSH_CART] )
 				return 0;
-			status_change_end(&sd->bl,SC_PUSH_CART,INVALID_TIMER);
+			status_change_end(&sd->bl,SC_PUSH_CART);
 			clif_clearcart(sd->fd);
 			break;
 		default:/* everything else is an allowed ID so we can move on */
@@ -11754,7 +11754,7 @@ static void pc_unequipitem_sub(struct map_session_data *sd, int n, int flag) {
 	}
 
 	if (sd->sc.data[SC_SIGNUMCRUCIS] && !battle_check_undead(sd->battle_status.race, sd->battle_status.def_ele))
-		status_change_end(&sd->bl, SC_SIGNUMCRUCIS, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_SIGNUMCRUCIS);
 
 	//OnUnEquip script [Skotlex]
 	if (sd->inventory_data[n]) {
@@ -11827,13 +11827,13 @@ bool pc_unequipitem(struct map_session_data *sd, int n, int flag) {
 		pc_calcweapontype(sd);
 		clif_changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
 		if( !battle_config.dancing_weaponswitch_fix )
-			status_change_end(&sd->bl, SC_DANCING, INVALID_TIMER); // Unequipping => stop dancing.
+			status_change_end(&sd->bl, SC_DANCING); // Unequipping => stop dancing.
 #ifdef RENEWAL
 		if (battle_config.switch_remove_edp&2) {
 #else
 		if (battle_config.switch_remove_edp&1) {
 #endif
-			status_change_end(&sd->bl, SC_EDP, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_EDP);
 		}
 	}
 	if(pos & EQP_HAND_L) {
@@ -11888,12 +11888,12 @@ bool pc_unequipitem(struct map_session_data *sd, int n, int flag) {
 	// On equipment change
 #ifndef RENEWAL
 	if (!(flag&4))
-		status_change_end(&sd->bl, SC_CONCENTRATION, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_CONCENTRATION);
 #endif
 
 	// On ammo change
 	if (sd->inventory_data[n]->type == IT_AMMO && (sd->inventory_data[n]->nameid != ITEMID_SILVER_BULLET || sd->inventory_data[n]->nameid != ITEMID_PURIFICATION_BULLET || sd->inventory_data[n]->nameid != ITEMID_SILVER_BULLET_))
-		status_change_end(&sd->bl, SC_P_ALTER, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_P_ALTER);
 
 	pc_unequipitem_sub(sd, n, flag);
 
@@ -12508,7 +12508,7 @@ bool pc_setstand(struct map_session_data *sd, bool force){
 	if (!force && (sd->sc.data[SC_SITDOWN_FORCE] || sd->sc.data[SC_BANANA_BOMB_SITDOWN]))
 		return false;
 
-	status_change_end(&sd->bl, SC_TENSIONRELAX, INVALID_TIMER);
+	status_change_end(&sd->bl, SC_TENSIONRELAX);
 	clif_status_load(&sd->bl,EFST_SIT,0);
 	clif_standing(&sd->bl); //Inform area PC is standing
 	//Reset sitting tick.
@@ -12535,8 +12535,8 @@ void pc_overheat(map_session_data &sd, int16 heat) {
 		sce->val1 = cap_value(sce->val1, 0, 1000);
 
 		if (heat < 0 && sce->val1 == 0) { // Cooling device used.
-			status_change_end(&sd.bl, SC_OVERHEAT_LIMITPOINT, INVALID_TIMER);
-			status_change_end(&sd.bl, SC_OVERHEAT, INVALID_TIMER);
+			status_change_end(&sd.bl, SC_OVERHEAT_LIMITPOINT);
+			status_change_end(&sd.bl, SC_OVERHEAT);
 		}
 	} else if (heat > 0)
 		sc_start(&sd.bl, &sd.bl, SC_OVERHEAT_LIMITPOINT, 100, heat, 1000);
@@ -14291,7 +14291,7 @@ void pc_crimson_marker_clear(struct map_session_data *sd) {
 	for (i = 0; i < MAX_SKILL_CRIMSON_MARKER; i++) {
 		struct block_list *bl = NULL;
 		if (sd->c_marker[i] && (bl = map_id2bl(sd->c_marker[i])))
-			status_change_end(bl,SC_C_MARKER,INVALID_TIMER);
+			status_change_end(bl,SC_C_MARKER);
 		sd->c_marker[i] = 0;
 	}
 }
@@ -14537,7 +14537,7 @@ void pc_cell_basilica(struct map_session_data *sd) {
 
 	if (!map_getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKBASILICA)) {
 		if (sd->sc.data[type])
-			status_change_end(&sd->bl, type,INVALID_TIMER);
+			status_change_end(&sd->bl, type);
 	}
 	else if (!sd->sc.data[type])
 		sc_start(&sd->bl,&sd->bl, type,100,0,INFINITE_TICK);

+ 1 - 1
src/map/pet.cpp

@@ -2069,7 +2069,7 @@ TIMER_FUNC(pet_recovery_timer){
 		//Display a heal animation?
 		//Detoxify is chosen for now.
 		clif_skill_nodamage(&pd->bl,&sd->bl,TF_DETOXIFY,1,1);
-		status_change_end(&sd->bl, pd->recovery->type, INVALID_TIMER);
+		status_change_end(&sd->bl, pd->recovery->type);
 		clif_emotion(&pd->bl, ET_OK);
 	}
 

+ 4 - 4
src/map/script.cpp

@@ -12170,7 +12170,7 @@ BUILDIN_FUNC(sc_end)
 
 		//This should help status_change_end force disabling the SC in case it has no limit.
 		sce->val1 = sce->val2 = sce->val3 = sce->val4 = 0;
-		status_change_end(bl, (sc_type)type, INVALID_TIMER);
+		status_change_end(bl, (sc_type)type);
 	} else
 		status_change_clear(bl, 3); // remove all effects
 
@@ -22201,7 +22201,7 @@ BUILDIN_FUNC(setmounting) {
 		script_pushint(st, 0); // Silent failure
 	} else {
 		if( sd->sc.data[SC_ALL_RIDING] )
-			status_change_end(&sd->bl, SC_ALL_RIDING, INVALID_TIMER); //release mount
+			status_change_end(&sd->bl, SC_ALL_RIDING); //release mount
 		else
 			sc_start(NULL, &sd->bl, SC_ALL_RIDING, 10000, 1, INFINITE_TICK); //mount
 		script_pushint(st,1);//in both cases, return 1.
@@ -23107,10 +23107,10 @@ BUILDIN_FUNC(montransform) {
 		}
 
 		if (!strcmp(script_getfuncname(st), "active_transform")) {
-			status_change_end(&sd->bl, SC_ACTIVE_MONSTER_TRANSFORM, INVALID_TIMER); // Clear previous
+			status_change_end(&sd->bl, SC_ACTIVE_MONSTER_TRANSFORM); // Clear previous
 			sc_start2(NULL, &sd->bl, SC_ACTIVE_MONSTER_TRANSFORM, 100, mob_id, type, tick);
 		} else {
-			status_change_end(&sd->bl, SC_MONSTER_TRANSFORM, INVALID_TIMER); // Clear previous
+			status_change_end(&sd->bl, SC_MONSTER_TRANSFORM); // Clear previous
 			sc_start2(NULL, &sd->bl, SC_MONSTER_TRANSFORM, 100, mob_id, type, tick);
 		}
 		if (type != SC_NONE)

Різницю між файлами не показано, бо вона завелика
+ 196 - 196
src/map/skill.cpp


+ 83 - 83
src/map/status.cpp

@@ -1049,7 +1049,7 @@ void StatusDatabase::changeSkillTree(map_session_data *sd, int32 class_) {
 		sc_type sc = skill_get_sc(skill_id);
 
 		if (sc > SC_COMMON_MAX && sc < SC_MAX && sd->sc.data[sc])
-			status_change_end(&sd->bl, sc, INVALID_TIMER);
+			status_change_end(&sd->bl, sc);
 	}
 }
 
@@ -1086,7 +1086,7 @@ void StatusDatabase::removeByStatusFlag(block_list *bl, std::vector<e_status_cha
 		if (sc->data[type]) {
 			for (const auto &flag_it : flag) {
 				if (status->flag[flag_it])
-					status_change_end(bl, type, INVALID_TIMER);
+					status_change_end(bl, type);
 			}
 		}
 	}
@@ -1402,7 +1402,7 @@ int status_damage(struct block_list *src,struct block_list *target,int64 dhp, in
 						sc->lastEffectTimer = add_timer(gettick() + 10, status_clear_lastEffect_timer, target->id, 0);
 						sc->lastEffect = type;
 					}
-					status_change_end(target, type, INVALID_TIMER);
+					status_change_end(target, type);
 				}
 			}
 			if ((sce=sc->data[SC_ENDURE]) && !sce->val4) {
@@ -1411,7 +1411,7 @@ int status_damage(struct block_list *src,struct block_list *target,int64 dhp, in
 				* val4 signals infinite endure.
 				**/
 				if (src && src->type != BL_PC && !map_flag_gvg2(target->m) && !map_getmapflag(target->m, MF_BATTLEGROUND) && --(sce->val2) <= 0)
-					status_change_end(target, SC_ENDURE, INVALID_TIMER);
+					status_change_end(target, SC_ENDURE);
 			}
 #ifndef RENEWAL
 			if ((sce=sc->data[SC_GRAVITATION]) && sce->val3 == BCT_SELF) {
@@ -1420,16 +1420,16 @@ int status_damage(struct block_list *src,struct block_list *target,int64 dhp, in
 				if (sg) {
 					skill_delunitgroup(sg);
 					sce->val4 = 0;
-					status_change_end(target, SC_GRAVITATION, INVALID_TIMER);
+					status_change_end(target, SC_GRAVITATION);
 				}
 			}
 #endif
 			if(sc->data[SC_DANCING] && (unsigned int)hp > status->max_hp>>2)
-				status_change_end(target, SC_DANCING, INVALID_TIMER);
+				status_change_end(target, SC_DANCING);
 			if(sc->data[SC_CLOAKINGEXCEED] && --(sc->data[SC_CLOAKINGEXCEED]->val2) <= 0)
-				status_change_end(target, SC_CLOAKINGEXCEED, INVALID_TIMER);
+				status_change_end(target, SC_CLOAKINGEXCEED);
 			if(sc->data[SC_KAGEMUSYA] && --(sc->data[SC_KAGEMUSYA]->val3) <= 0)
-				status_change_end(target, SC_KAGEMUSYA, INVALID_TIMER);
+				status_change_end(target, SC_KAGEMUSYA);
 		}
 
 		if (target->type == BL_PC)
@@ -1447,11 +1447,11 @@ int status_damage(struct block_list *src,struct block_list *target,int64 dhp, in
 			status->hp < status->max_hp>>2)
 			sc_start4(src,target,SC_PROVOKE,100,10,0,0,1,0);
 		if (sc->data[SC_BERSERK] && status->hp <= 100)
-			status_change_end(target, SC_BERSERK, INVALID_TIMER);
+			status_change_end(target, SC_BERSERK);
 		if( sc->data[SC_RAISINGDRAGON] && status->hp <= 1000 )
-			status_change_end(target, SC_RAISINGDRAGON, INVALID_TIMER);
+			status_change_end(target, SC_RAISINGDRAGON);
 		if (sc->data[SC_SATURDAYNIGHTFEVER] && status->hp <= 100)
-			status_change_end(target, SC_SATURDAYNIGHTFEVER, INVALID_TIMER);
+			status_change_end(target, SC_SATURDAYNIGHTFEVER);
 	}
 
 	switch (target->type) {
@@ -1664,7 +1664,7 @@ int status_heal(struct block_list *bl,int64 hhp,int64 hsp, int64 hap, int flag)
 		sc->data[SC_PROVOKE]->val4==1 &&
 		status->hp>=status->max_hp>>2
 	)	// End auto berserk.
-		status_change_end(bl, SC_PROVOKE, INVALID_TIMER);
+		status_change_end(bl, SC_PROVOKE);
 
 	// Send HP update to client
 	switch(bl->type) {
@@ -4029,7 +4029,7 @@ int status_calc_pc_sub(struct map_session_data* sd, uint8 opt)
 		if (sc->data[SC_ENDURE]) {
 			if (sc->data[SC_ENDURE]->val4)
 				sc->data[SC_ENDURE]->val4 = 0;
-			status_change_end(&sd->bl, SC_ENDURE, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_ENDURE);
 		}
 		clif_status_load(&sd->bl, EFST_ENDURE, 1);
 		base_status->mdef++;
@@ -9670,7 +9670,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			sc_type rem_sc = it;
 
 			if (sc->data[rem_sc]) {
-				status_change_end(bl, rem_sc, INVALID_TIMER);
+				status_change_end(bl, rem_sc);
 				isRemoved = true;
 			}
 		}
@@ -9763,7 +9763,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 				if (val3) mode = static_cast<e_mode>(mode | val3); // Add mode
 				if (mode == bstatus->mode) { // No change.
 					if (sc->data[type]) // Abort previous status
-						return status_change_end(bl, type, INVALID_TIMER);
+						return status_change_end(bl, type);
 					return 0;
 				}
 			}
@@ -9942,7 +9942,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			break;
 		case SC_MADNESSCANCEL:
 			if (sc->data[type]) { // Toggle the status but still consume requirements.
-				status_change_end(bl, type, INVALID_TIMER);
+				status_change_end(bl, type);
 				return 0;
 			}
 			break;
@@ -9960,7 +9960,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 				if (sc->data[i] && sc->data[i]->val3 == 1) // It doesn't stack or even renew on the target
 					return 0;
 				else if (sc->data[i] && sc->data[i]->val3 == 0)
-					status_change_end(bl, static_cast<sc_type>(i), INVALID_TIMER); // End the bonus part on the caster
+					status_change_end(bl, static_cast<sc_type>(i)); // End the bonus part on the caster
 			}
 			break;
 		case SC_SPIRIT:
@@ -10052,7 +10052,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			sc_type opt1_type = status_it.second->type;
 
 			if (sc->data[opt1_type] && status_it.second->opt1 > OPT1_NONE)
-				status_change_end(bl, opt1_type, INVALID_TIMER);
+				status_change_end(bl, opt1_type);
 		}
 	}
 
@@ -10075,7 +10075,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 					case SC_SATURDAYNIGHTFEVER:
 						sc->data[rem_sc]->val2 = 0; // Mark to not lose hp
 					default:
-						status_change_end(bl, rem_sc, INVALID_TIMER);
+						status_change_end(bl, rem_sc);
 						break;
 				}
 			}
@@ -10088,31 +10088,31 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			if (bl->type == BL_PC) {
 				// Remove Curse first, Stone is only removed if the target is not cursed
 				if (sc->data[SC_CURSE]) {
-					status_change_end(bl, SC_CURSE, INVALID_TIMER);
+					status_change_end(bl, SC_CURSE);
 					return 1; // End Curse and do not give stat boost
 				} else if (sc->data[SC_STONE]) {
-					status_change_end(bl, SC_STONE, INVALID_TIMER);
+					status_change_end(bl, SC_STONE);
 					return 1; // End Stone and do not give stat boost
 				}
 			}
 			if(sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_HIGH)
-				status_change_end(bl, SC_SPIRIT, INVALID_TIMER);
+				status_change_end(bl, SC_SPIRIT);
 			break;
 		case SC_INCREASEAGI:
 			if(sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_HIGH)
-				status_change_end(bl, SC_SPIRIT, INVALID_TIMER);
+				status_change_end(bl, SC_SPIRIT);
 			break;
 		case SC_DELUGE:
 			if (sc->data[SC_FOGWALL] && sc->data[SC_BLIND])
-				status_change_end(bl, SC_BLIND, INVALID_TIMER);
+				status_change_end(bl, SC_BLIND);
 			break;
 		case SC_SILENCE:
 			if (sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_SELF)
-				status_change_end(bl, SC_GOSPEL, INVALID_TIMER);
+				status_change_end(bl, SC_GOSPEL);
 			break;
 		case SC_IMPOSITIO:
 			if (sc->data[SC_IMPOSITIO] && sc->data[SC_IMPOSITIO]->val1 > val1) //Replace higher level effect for lower.
-				status_change_end(bl,SC_IMPOSITIO,INVALID_TIMER);
+				status_change_end(bl,SC_IMPOSITIO);
 			break;
 		case SC_ENDURE:
 			if (sd && sd->special_state.no_walk_delay)
@@ -12450,7 +12450,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			case SC_STONE:
 				if (sc->data[SC_DANCING]) {
 					unit_stop_walking(bl, 1);
-					status_change_end(bl, SC_DANCING, INVALID_TIMER);
+					status_change_end(bl, SC_DANCING);
 				}
 				break;
 			default:
@@ -12711,7 +12711,7 @@ int status_change_clear(struct block_list* bl, int type)
 		if (type == 3 && it.second->flag[SCF_NOCLEARBUFF])
 			continue;
 
-		status_change_end(bl, status, INVALID_TIMER);
+		status_change_end(bl, status);
 		if( type == 1 && sc->data[status] ) { // If for some reason status_change_end decides to still keep the status when quitting. [Skotlex]
 			(sc->count)--;
 			if (sc->data[status]->timer != INVALID_TIMER)
@@ -12740,7 +12740,7 @@ int status_change_clear(struct block_list* bl, int type)
  * @param line: Used for dancing save
  * @return 1: Success 0: Fail
  */
-int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const char* file, int line)
+int status_change_end(struct block_list* bl, enum sc_type type, int tid)
 {
 	struct map_session_data *sd;
 	struct status_change *sc;
@@ -12859,7 +12859,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 		break;
 		case SC_AUTOBERSERK:
 			if (sc->data[SC_PROVOKE] && sc->data[SC_PROVOKE]->val4 == 1)
-				status_change_end(bl, SC_PROVOKE, INVALID_TIMER);
+				status_change_end(bl, SC_PROVOKE);
 			break;
 
 		case SC_ENDURE:
@@ -12872,13 +12872,13 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 					int i;
 					for( i = 0; i < MAX_DEVOTION; i++ ) {
 						if( sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i])) && tsd->sc.data[type] )
-							status_change_end(&tsd->bl, type, INVALID_TIMER);
+							status_change_end(&tsd->bl, type);
 					}
 				}
 				else if( bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag ) { // Clear Status from Master
 					tsd = ((TBL_MER*)bl)->master;
 					if( tsd && tsd->sc.data[type] )
-						status_change_end(&tsd->bl, type, INVALID_TIMER);
+						status_change_end(&tsd->bl, type);
 				}
 			}
 			break;
@@ -12893,10 +12893,10 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 					clif_devotion(d_bl, NULL);
 				}
 
-				status_change_end(bl, SC_AUTOGUARD, INVALID_TIMER);
-				status_change_end(bl, SC_DEFENDER, INVALID_TIMER);
-				status_change_end(bl, SC_REFLECTSHIELD, INVALID_TIMER);
-				status_change_end(bl, SC_ENDURE, INVALID_TIMER);
+				status_change_end(bl, SC_AUTOGUARD);
+				status_change_end(bl, SC_DEFENDER);
+				status_change_end(bl, SC_REFLECTSHIELD);
+				status_change_end(bl, SC_ENDURE);
 			}
 			break;
 
@@ -12928,7 +12928,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 				sce->val4 = 0;
 				if(tbl && tsc && tsc->data[SC_BLADESTOP]) {
 					tsc->data[SC_BLADESTOP]->val4 = 0;
-					status_change_end(tbl, SC_BLADESTOP, INVALID_TIMER);
+					status_change_end(tbl, SC_BLADESTOP);
 				}
 				clif_bladestop(bl, tid2, 0);
 			}
@@ -12944,7 +12944,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 						// This will prevent recursive loops.
 						dsc->val2 = 0;
 						dsc->val4 = BCT_SELF;
-						status_change_end(&dsd->bl, SC_DANCING, INVALID_TIMER);
+						status_change_end(&dsd->bl, SC_DANCING);
 					}
 				}
 
@@ -12960,9 +12960,9 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 					clif_status_change(bl,EFST_MOON,0,0,0,0,0);
 
 #ifdef RENEWAL
-				status_change_end(bl, SC_ENSEMBLEFATIGUE, INVALID_TIMER);
+				status_change_end(bl, SC_ENSEMBLEFATIGUE);
 #else
-				status_change_end(bl, SC_LONGING, INVALID_TIMER);
+				status_change_end(bl, SC_LONGING);
 #endif
 			}
 			break;
@@ -12990,7 +12990,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 				// If status was already ended, do nothing.
 				// Decrease count
 				if (--(sc2->data[SC_CLOSECONFINE]->val1) <= 0) // No more holds, free him up.
-					status_change_end(src, SC_CLOSECONFINE, INVALID_TIMER);
+					status_change_end(src, SC_CLOSECONFINE);
 			}
 		}
 		case SC_CLOSECONFINE:
@@ -13015,24 +13015,24 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 
 				if (sc2 && sc2->data[type2]) {
 					sc2->data[type2]->val1 = 0;
-					status_change_end(pbl, type2, INVALID_TIMER);
+					status_change_end(pbl, type2);
 				}
 			}
 			break;
 
 		case SC_CONCENTRATION:
 			if (sc->data[SC_ENDURE] && !sc->data[SC_ENDURE]->val4)
-				status_change_end(bl, SC_ENDURE, INVALID_TIMER);
+				status_change_end(bl, SC_ENDURE);
 			break;
 		case SC_BERSERK:
 			if(status->hp > 200 && sc && sc->data[SC__BLOODYLUST]) {
 				status_percent_heal(bl, 100, 0);
-				status_change_end(bl, SC__BLOODYLUST, INVALID_TIMER);
+				status_change_end(bl, SC__BLOODYLUST);
 			} else if (status->hp > 100 && sce->val2) // If val2 is removed, no HP penalty (dispelled?) [Skotlex]
 				status_set_hp(bl, 100, 0);
 			if(sc->data[SC_ENDURE] && sc->data[SC_ENDURE]->val4) {
 				sc->data[SC_ENDURE]->val4 = 0;
-				status_change_end(bl, SC_ENDURE, INVALID_TIMER);
+				status_change_end(bl, SC_ENDURE);
 			}
 			sc_start4(bl, bl, SC_REGENERATION, 100, 10,0,0,(RGN_HP|RGN_SP), skill_get_time(LK_BERSERK, sce->val1));
 			break;
@@ -13107,7 +13107,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 				struct block_list* tbl = map_id2bl(sce->val2);
 				sce->val2 = 0;
 				if( tbl && (sc = status_get_sc(tbl)) && sc->data[SC_STOP] && sc->data[SC_STOP]->val2 == bl->id )
-					status_change_end(tbl, SC_STOP, INVALID_TIMER);
+					status_change_end(tbl, SC_STOP);
 			}
 			break;
 		case SC_TENSIONRELAX:
@@ -13117,7 +13117,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 		case SC_MONSTER_TRANSFORM:
 		case SC_ACTIVE_MONSTER_TRANSFORM:
 			if (sce->val2)
-				status_change_end(bl, (sc_type)sce->val2, INVALID_TIMER);
+				status_change_end(bl, (sc_type)sce->val2);
 			break;
 
 		/* 3rd Stuff */
@@ -13173,7 +13173,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 			if( sd && !pc_isdead(sd) ) {
 				int i = min(sd->spiritball,5);
 				pc_delspiritball(sd, sd->spiritball, 0);
-				status_change_end(bl, SC_EXPLOSIONSPIRITS, INVALID_TIMER);
+				status_change_end(bl, SC_EXPLOSIONSPIRITS);
 				while( i > 0 ) {
 					pc_addspiritball(sd, skill_get_time(MO_CALLSPIRITS, pc_checkskill(sd,MO_CALLSPIRITS)), 5);
 					--i;
@@ -13187,12 +13187,12 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 
 				if( sc2 && sc2->data[SC_CURSEDCIRCLE_ATKER] && --(sc2->data[SC_CURSEDCIRCLE_ATKER]->val2) == 0 ) {
 					clif_bladestop(bl, sce->val2, 0);
-					status_change_end(src, SC_CURSEDCIRCLE_ATKER, INVALID_TIMER);
+					status_change_end(src, SC_CURSEDCIRCLE_ATKER);
 				}
 			}
 			break;
 		case SC_TEARGAS:
-			status_change_end(bl,SC_TEARGAS_SOB,INVALID_TIMER);
+			status_change_end(bl,SC_TEARGAS_SOB);
 			break;
 		case SC_SITDOWN_FORCE:
 		case SC_BANANA_BOMB_SITDOWN:
@@ -13208,23 +13208,23 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 			break;
 
 		case SC_SUNSTANCE:
-			status_change_end(bl, SC_LIGHTOFSUN, INVALID_TIMER);
+			status_change_end(bl, SC_LIGHTOFSUN);
 			break;
 		case SC_LUNARSTANCE:
-			status_change_end(bl, SC_NEWMOON, INVALID_TIMER);
-			status_change_end(bl, SC_LIGHTOFMOON, INVALID_TIMER);
+			status_change_end(bl, SC_NEWMOON);
+			status_change_end(bl, SC_LIGHTOFMOON);
 			break;
 		case SC_STARSTANCE:
-			status_change_end(bl, SC_FALLINGSTAR, INVALID_TIMER);
-			status_change_end(bl, SC_LIGHTOFSTAR, INVALID_TIMER);
+			status_change_end(bl, SC_FALLINGSTAR);
+			status_change_end(bl, SC_LIGHTOFSTAR);
 			break;
 		case SC_UNIVERSESTANCE:
-			status_change_end(bl, SC_LIGHTOFSUN, INVALID_TIMER);
-			status_change_end(bl, SC_NEWMOON, INVALID_TIMER);
-			status_change_end(bl, SC_LIGHTOFMOON, INVALID_TIMER);
-			status_change_end(bl, SC_FALLINGSTAR, INVALID_TIMER);
-			status_change_end(bl, SC_LIGHTOFSTAR, INVALID_TIMER);
-			status_change_end(bl, SC_DIMENSION, INVALID_TIMER);
+			status_change_end(bl, SC_LIGHTOFSUN);
+			status_change_end(bl, SC_NEWMOON);
+			status_change_end(bl, SC_LIGHTOFMOON);
+			status_change_end(bl, SC_FALLINGSTAR);
+			status_change_end(bl, SC_LIGHTOFSTAR);
+			status_change_end(bl, SC_DIMENSION);
 			break;
 		case SC_GRAVITYCONTROL:
 			status_fix_damage(bl, bl, sce->val2, clif_damage(bl, bl, gettick(), 0, 0, sce->val2, 0, DMG_NORMAL, 0, false), 0);
@@ -13304,7 +13304,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 		case SC_GOLDENMACECLAN:
 		case SC_CROSSBOWCLAN:
 		case SC_JUMPINGCLAN:
-			status_change_end(bl,SC_CLAN_INFO,INVALID_TIMER);
+			status_change_end(bl,SC_CLAN_INFO);
 			break;
 		case SC_DIMENSION1:
 		case SC_DIMENSION2:
@@ -13344,7 +13344,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 			}
 			break;
 		case SC_CHARGINGPIERCE:
-			status_change_end(bl, SC_CHARGINGPIERCE_COUNT, INVALID_TIMER);
+			status_change_end(bl, SC_CHARGINGPIERCE_COUNT);
 			break;
 		case SC_ABYSSFORCEWEAPON:
 			if( sd ){
@@ -13918,7 +13918,7 @@ TIMER_FUNC(status_change_timer){
 		if( !status_charge(bl, 0, sce->val2) ) {
 			int i;
 			for(i = SC_SPELLBOOK1; i <= SC_MAXSPELLBOOK; i++) // Also remove stored spell as well.
-				status_change_end(bl, (sc_type)i, INVALID_TIMER);
+				status_change_end(bl, (sc_type)i);
 			break;
 		}
 		sc_timer_next(10000 + tick);
@@ -14059,7 +14059,7 @@ TIMER_FUNC(status_change_timer){
 				if (sce->val1 > limit[skill_lv])
 					sce->val2 = 1;
 			} else {
-				status_change_end(bl, SC_OVERHEAT, INVALID_TIMER);
+				status_change_end(bl, SC_OVERHEAT);
 				if (sce->val2 > 0)
 					sc_start(bl, bl, SC_OVERHEAT, 100, sce->val1, 975);
 			}
@@ -14154,8 +14154,8 @@ TIMER_FUNC(status_change_timer){
 			if (bl->type == BL_ELEM)
 				elemental_change_mode(BL_CAST(BL_ELEM, bl), EL_MODE_PASSIVE);
 			if( s_bl )
-				status_change_end(s_bl,static_cast<sc_type>(type+1),INVALID_TIMER);
-			status_change_end(bl,type,INVALID_TIMER);
+				status_change_end(s_bl,static_cast<sc_type>(type+1));
+			status_change_end(bl,type);
 			break;
 		}
 		sc_timer_next(sce->val3 + tick);
@@ -14520,29 +14520,29 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
 	switch( type ) {
 	case SC_SIGHT: // Reveal hidden ennemy on 3*3 range
 	case SC_CONCENTRATE:
-		status_change_end(bl, SC_HIDING, INVALID_TIMER);
-		status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
-		status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER);
-		status_change_end(bl, SC_CAMOUFLAGE, INVALID_TIMER);
-		status_change_end(bl, SC_NEWMOON, INVALID_TIMER);
+		status_change_end(bl, SC_HIDING);
+		status_change_end(bl, SC_CLOAKING);
+		status_change_end(bl, SC_CLOAKINGEXCEED);
+		status_change_end(bl, SC_CAMOUFLAGE);
+		status_change_end(bl, SC_NEWMOON);
 		if (tsc && tsc->data[SC__SHADOWFORM] && (sce && sce->val4 > 0 && sce->val4%2000 == 0) && // For every 2 seconds do the checking
 			rnd()%100 < 100 - tsc->data[SC__SHADOWFORM]->val1 * 10) // [100 - (Skill Level x 10)] %
-				status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
+				status_change_end(bl, SC__SHADOWFORM);
 		break;
 	case SC_RUWACH: // Reveal hidden target and deal little dammages if enemy
 		if (tsc && (tsc->data[SC_HIDING] || tsc->data[SC_CLOAKING] ||
 				tsc->data[SC_CAMOUFLAGE] || tsc->data[SC_NEWMOON] || tsc->data[SC_CLOAKINGEXCEED])) {
-			status_change_end(bl, SC_HIDING, INVALID_TIMER);
-			status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
-			status_change_end(bl, SC_CAMOUFLAGE, INVALID_TIMER);
-			status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER);
-			status_change_end(bl, SC_NEWMOON, INVALID_TIMER);
+			status_change_end(bl, SC_HIDING);
+			status_change_end(bl, SC_CLOAKING);
+			status_change_end(bl, SC_CAMOUFLAGE);
+			status_change_end(bl, SC_CLOAKINGEXCEED);
+			status_change_end(bl, SC_NEWMOON);
 			if(battle_check_target( src, bl, BCT_ENEMY ) > 0)
 				skill_attack(BF_MAGIC,src,src,bl,AL_RUWACH,1,tick,0);
 		}
 		if (tsc && tsc->data[SC__SHADOWFORM] && (sce && sce->val4 > 0 && sce->val4%2000 == 0) && // For every 2 seconds do the checking
 			rnd()%100 < 100 - tsc->data[SC__SHADOWFORM]->val1 * 10 ) { // [100 - (Skill Level x 10)] %
-				status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
+				status_change_end(bl, SC__SHADOWFORM);
 				if (battle_check_target(src, bl, BCT_ENEMY) > 0)
 					skill_attack(BF_MAGIC, src, src, bl, status_db.getSkill(type), 1, tick, 0);
 		}
@@ -14569,13 +14569,13 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
 		// Lock char has released the hold on everyone...
 		if (tsc && tsc->data[SC_CLOSECONFINE2] && tsc->data[SC_CLOSECONFINE2]->val2 == src->id) {
 			tsc->data[SC_CLOSECONFINE2]->val2 = 0;
-			status_change_end(bl, SC_CLOSECONFINE2, INVALID_TIMER);
+			status_change_end(bl, SC_CLOSECONFINE2);
 		}
 		break;
 	case SC_CURSEDCIRCLE_TARGET:
 		if( tsc && tsc->data[SC_CURSEDCIRCLE_TARGET] && tsc->data[SC_CURSEDCIRCLE_TARGET]->val2 == src->id ) {
 			clif_bladestop(bl, tsc->data[SC_CURSEDCIRCLE_TARGET]->val2, 0);
-			status_change_end(bl, type, INVALID_TIMER);
+			status_change_end(bl, type);
 		}
 		break;
 	}
@@ -14624,7 +14624,7 @@ void status_change_clear_buffs(struct block_list* bl, uint8 type)
 			continue;		
 		if (status == SC_SATURDAYNIGHTFEVER || status == SC_BERSERK) // Mark to not lose HP
 			sc->data[status]->val2 = 0;
-		status_change_end(bl, status, INVALID_TIMER);
+		status_change_end(bl, status);
 	}
 
 	//Removes bonus_script
@@ -14988,7 +14988,7 @@ void status_change_clear_onChangeMap(struct block_list *bl, struct status_change
 				continue;
 
 			if (status_change_isDisabledOnMap_(type, mapIsVS, mapIsPVP, mapIsGVG, mapIsBG, mapdata->zone, mapIsTE))
-				status_change_end(bl, type, INVALID_TIMER);
+				status_change_end(bl, type);
 		}
 	}
 }

+ 1 - 2
src/map/status.hpp

@@ -3285,8 +3285,7 @@ static int sc_start2(block_list *src, block_list *bl, sc_type type, int32 rate,
 static int sc_start4(block_list *src, block_list *bl, sc_type type, int32 rate, int32 val1, int32 val2, int32 val3, int32 val4, t_tick duration, int32 delay = 0) {
 	return status_change_start(src, bl, type, 100 * rate, val1, val2, val3, val4, duration, SCSTART_NONE, delay);
 }
-int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const char* file, int line);
-#define status_change_end(bl,type,tid) status_change_end_(bl,type,tid,__FILE__,__LINE__)
+int status_change_end(struct block_list* bl, enum sc_type type, int tid = INVALID_TIMER);
 TIMER_FUNC(status_change_timer);
 int status_change_timer_sub(struct block_list* bl, va_list ap);
 int status_change_clear(struct block_list* bl, int type);

+ 19 - 19
src/map/unit.cpp

@@ -911,7 +911,7 @@ void unit_run_hit(struct block_list *bl, struct status_change *sc, struct map_se
 
 	// Set running to 0 beforehand so status_change_end knows not to enable spurt [Kevin]
 	unit_bl2ud(bl)->state.running = 0;
-	status_change_end(bl, type, INVALID_TIMER);
+	status_change_end(bl, type);
 
 	if (type == SC_RUN) {
 		skill_blown(bl, bl, skill_get_blewcount(TK_RUN, lv), unit_getdir(bl), BLOWN_NONE);
@@ -943,7 +943,7 @@ bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc_type t
 		return false;
 
 	if (!unit_can_move(bl)) {
-		status_change_end(bl, type, INVALID_TIMER);
+		status_change_end(bl, type);
 		return false;
 	}
 
@@ -1408,8 +1408,8 @@ int unit_stop_walking(struct block_list *bl,int type)
 
 	// Re-added, the check in unit_set_walkdelay means dmg during running won't fall through to this place in code [Kevin]
 	if (ud->state.running) {
-		status_change_end(bl, SC_RUN, INVALID_TIMER);
-		status_change_end(bl, SC_WUGDASH, INVALID_TIMER);
+		status_change_end(bl, SC_RUN);
+		status_change_end(bl, SC_WUGDASH);
 	}
 
 	return 1;
@@ -2049,17 +2049,17 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
 	if( sc ) {
 		// These 3 status do not stack, so it's efficient to use if-else
  		if( sc->data[SC_CLOAKING] && !(sc->data[SC_CLOAKING]->val4&4) && skill_id != AS_CLOAKING && skill_id != SHC_SHADOW_STAB) {
-			status_change_end(src, SC_CLOAKING, INVALID_TIMER);
+			status_change_end(src, SC_CLOAKING);
 
 			if (!src->prev)
 				return 0; // Warped away!
 		} else if( sc->data[SC_CLOAKINGEXCEED] && !(sc->data[SC_CLOAKINGEXCEED]->val4&4) && skill_id != GC_CLOAKINGEXCEED && skill_id != SHC_SHADOW_STAB) {
-			status_change_end(src,SC_CLOAKINGEXCEED, INVALID_TIMER);
+			status_change_end(src,SC_CLOAKINGEXCEED);
 
 			if (!src->prev)
 				return 0;
 		} else if (sc->data[SC_NEWMOON] && skill_id != SJ_NEWMOONKICK) {
-			status_change_end(src, SC_NEWMOON, INVALID_TIMER);
+			status_change_end(src, SC_NEWMOON);
 			if (!src->prev)
 				return 0; // Warped away!
 		}
@@ -2231,17 +2231,17 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui
 	if( sc ) {
 		// These 3 status do not stack, so it's efficient to use if-else
 		if (sc->data[SC_CLOAKING] && !(sc->data[SC_CLOAKING]->val4&4)) {
-			status_change_end(src, SC_CLOAKING, INVALID_TIMER);
+			status_change_end(src, SC_CLOAKING);
 
 			if (!src->prev)
 				return 0; // Warped away!
 		} else if (sc->data[SC_CLOAKINGEXCEED] && !(sc->data[SC_CLOAKINGEXCEED]->val4&4)) {
-			status_change_end(src, SC_CLOAKINGEXCEED, INVALID_TIMER);
+			status_change_end(src, SC_CLOAKINGEXCEED);
 
 			if (!src->prev)
 				return 0;
 		} else if (sc->data[SC_NEWMOON]) {
-			status_change_end(src, SC_NEWMOON, INVALID_TIMER);
+			status_change_end(src, SC_NEWMOON);
 
 			if (!src->prev)
 				return 0;
@@ -2475,7 +2475,7 @@ int unit_cancel_combo(struct block_list *bl)
 {
 	struct unit_data  *ud;
 
-	if (!status_change_end(bl, SC_COMBO, INVALID_TIMER))
+	if (!status_change_end(bl, SC_COMBO))
 		return 0; // Combo wasn't active.
 
 	ud = unit_bl2ud(bl);
@@ -3065,13 +3065,13 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file,
 
 		// Ensure the bl is a PC; if so, we'll handle the removal of cloaking and cloaking exceed later
 		if ( bl->type != BL_PC ) {
-			status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
-			status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER);
+			status_change_end(bl, SC_CLOAKING);
+			status_change_end(bl, SC_CLOAKINGEXCEED);
 		}
 		if (sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_SELF)
-			status_change_end(bl, SC_GOSPEL, INVALID_TIMER);
+			status_change_end(bl, SC_GOSPEL);
 		if (sc->data[SC_PROVOKE] && sc->data[SC_PROVOKE]->val4 == 1)
-			status_change_end(bl, SC_PROVOKE, INVALID_TIMER); //End infinite provoke to prevent exploit
+			status_change_end(bl, SC_PROVOKE); //End infinite provoke to prevent exploit
 	}
 
 	switch( bl->type ) {
@@ -3082,7 +3082,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file,
 			    struct block_list *d_bl = map_id2bl(sd->shadowform_id);
 
 			    if( d_bl )
-				    status_change_end(d_bl,SC__SHADOWFORM,INVALID_TIMER);
+				    status_change_end(d_bl,SC__SHADOWFORM);
 			}
 
 			// Leave/reject all invitations.
@@ -3122,8 +3122,8 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file,
 
 			// Check if warping and not changing the map.
 			if ( sd->state.warping && !sd->state.changemap ) {
-				status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
-				status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER);
+				status_change_end(bl, SC_CLOAKING);
+				status_change_end(bl, SC_CLOAKINGEXCEED);
 			}
 
 			sd->npc_shopid = 0;
@@ -3552,7 +3552,7 @@ int unit_free(struct block_list *bl, clr_type clrtype)
 					sd->status.hom_id = 0;
 
 #ifdef RENEWAL
-				status_change_end(&sd->bl, SC_HOMUN_TIME, INVALID_TIMER);
+				status_change_end(&sd->bl, SC_HOMUN_TIME);
 #endif
 			}
 

Деякі файли не було показано, через те що забагато файлів було змінено