浏览代码

Removed player damage log (#8894)

It has been confirmed that players that log out stay in the damage log of the monsters, that they have attacked.
Once the monster dies their online status is being checked and players that are offline are ignored at that point.
This offline check is already implemented in rAthena additionally, since the player damage log seem to only have been used for MVPs.
Lemongrass3110 4 月之前
父节点
当前提交
ee8f181dd9
共有 5 个文件被更改,包括 0 次插入93 次删除
  1. 0 2
      src/map/clif.cpp
  2. 0 1
      src/map/map.cpp
  3. 0 9
      src/map/mob.cpp
  4. 0 75
      src/map/pc.cpp
  5. 0 6
      src/map/pc.hpp

+ 0 - 2
src/map/clif.cpp

@@ -11398,7 +11398,6 @@ void clif_parse_QuitGame(int32 fd, map_session_data *sd)
 	if( !sd->sc.getSCE(SC_CLOAKING) && !sd->sc.getSCE(SC_HIDING) && !sd->sc.getSCE(SC_CHASEWALK) && !sd->sc.getSCE(SC_CLOAKINGEXCEED) && !sd->sc.getSCE(SC_SUHIDE) && !sd->sc.getSCE(SC_NEWMOON) &&
 		(!battle_config.prevent_logout || sd->canlog_tick == 0 || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) )
 	{
-		pc_damage_log_clear(sd,0);
 		clif_disconnect_ack(sd, 0);
 		flush_fifo( fd );
 		if( battle_config.drop_connection_on_quit ){
@@ -11784,7 +11783,6 @@ void clif_parse_Restart(int32 fd, map_session_data *sd)
 		if( !sd->sc.getSCE(SC_CLOAKING) && !sd->sc.getSCE(SC_HIDING) && !sd->sc.getSCE(SC_CHASEWALK) && !sd->sc.getSCE(SC_CLOAKINGEXCEED) && !sd->sc.getSCE(SC_SUHIDE) && !sd->sc.getSCE(SC_NEWMOON) &&
 			(!battle_config.prevent_logout || sd->canlog_tick == 0 || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) )
 		{	//Send to char-server for character selection.
-			pc_damage_log_clear(sd,0);
 			chrif_charselectreq(sd, session[fd]->client_addr);
 		} else {
 			clif_disconnect_ack(sd, 1);

+ 0 - 1
src/map/map.cpp

@@ -2198,7 +2198,6 @@ int32 map_quit(map_session_data *sd) {
 	if (sd->state.buyingstore)
 		idb_remove(buyingstore_getdb(), sd->status.char_id);
 
-	pc_damage_log_clear(sd,0);
 	party_booking_delete(sd); // Party Booking [Spiria]
 	pc_makesavestatus(sd);
 	pc_clean_skilltree(sd);

+ 0 - 9
src/map/mob.cpp

@@ -2505,9 +2505,6 @@ void mob_log_damage(mob_data* md, block_list* src, int32 damage, int32 damage_ta
 				// Damage is added outside the loop, we reset it here to be safe
 				md->dmglog[i].dmg = 0;
 				md->dmglog[i].dmg_tanked = 0;
-
-				if( md->get_bosstype() == BOSSTYPE_MVP )
-					pc_damage_log_add(map_charid2sd(char_id),md->bl.id);
 				break;
 			}
 		}
@@ -2530,9 +2527,6 @@ void mob_log_damage(mob_data* md, block_list* src, int32 damage, int32 damage_ta
 			md->dmglog[DAMAGELOG_SIZE-1].flag= flag;
 			md->dmglog[DAMAGELOG_SIZE-1].dmg = damage;
 			md->dmglog[DAMAGELOG_SIZE-1].dmg_tanked = damage_tanked;
-
-			if( md->get_bosstype() == BOSSTYPE_MVP )
-				pc_damage_log_add(map_charid2sd(char_id),md->bl.id);
 		}
 	}
 	return;
@@ -2903,9 +2897,6 @@ int32 mob_dead(struct mob_data *md, struct block_list *src, int32 type)
 				if(zeny) // zeny from mobs [Valaris]
 					pc_getzeny(tmpsd[i], zeny, LOG_TYPE_PICKDROP_MONSTER);
 			}
-
-			if( md->get_bosstype() == BOSSTYPE_MVP )
-				pc_damage_log_clear(tmpsd[i],md->bl.id);
 		}
 
 		for( i = 0; i < pnum; i++ ) //Party share.

+ 0 - 75
src/map/pc.cpp

@@ -14485,81 +14485,6 @@ uint8 pc_itemcd_check(map_session_data *sd, struct item_data *id, t_tick tick, u
 	return 0;
 }
 
-/**
-* Clear the dmglog data from player
-* @param sd
-* @param md
-**/
-static void pc_clear_log_damage_sub(uint32 char_id, struct mob_data *md)
-{
-	uint8 i;
-	ARR_FIND(0,DAMAGELOG_SIZE,i,md->dmglog[i].id == char_id);
-	if (i < DAMAGELOG_SIZE) {
-		md->dmglog[i].id = 0;
-		md->dmglog[i].dmg = 0;
-		md->dmglog[i].dmg_tanked = 0;
-		md->dmglog[i].flag = 0;
-	}
-}
-
-/**
-* Add log to player's dmglog
-* @param sd
-* @param id Monster's GID
-**/
-void pc_damage_log_add(map_session_data *sd, int32 id)
-{
-	uint8 i = 0;
-
-	if (!sd || !id)
-		return;
-
-	//Only store new data, don't need to renew the old one with same id
-	ARR_FIND(0, DAMAGELOG_SIZE_PC, i, sd->dmglog[i] == id);
-	if (i < DAMAGELOG_SIZE_PC)
-		return;
-
-	for (i = 0; i < DAMAGELOG_SIZE_PC; i++) {
-		if (sd->dmglog[i] == 0) {
-			sd->dmglog[i] = id;
-			return;
-		}
-	}
-}
-
-/**
-* Clear dmglog data from player
-* @param sd
-* @param id Monster's id
-**/
-void pc_damage_log_clear(map_session_data *sd, int32 id)
-{
-	uint8 i;
-	struct mob_data *md = nullptr;
-
-	if (!sd)
-		return;
-
-	if (!id) {
-		for (i = 0; i < DAMAGELOG_SIZE_PC; i++) {
-			if( !sd->dmglog[i] )	//skip the empty value
-				continue;
-
-			if ((md = map_id2md(sd->dmglog[i])))
-				pc_clear_log_damage_sub(sd->status.char_id,md);
-			sd->dmglog[i] = 0;
-		}
-	}
-	else {
-		if ((md = map_id2md(id)))
-			pc_clear_log_damage_sub(sd->status.char_id,md);
-
-		ARR_FIND(0,DAMAGELOG_SIZE_PC,i,sd->dmglog[i] == id);	// find the id position
-		if (i < DAMAGELOG_SIZE_PC)
-			sd->dmglog[i] = 0;
-	}
-}
-
 /**
  * Status change data arrived from char-server
  * @param sd: Player data

+ 0 - 6
src/map/pc.hpp

@@ -37,7 +37,6 @@ class MapGuild;
 
 #define MAX_PC_BONUS 50 /// Max bonus, usually used by item bonus
 #define MAX_PC_FEELHATE 3 /// Max feel hate info
-#define DAMAGELOG_SIZE_PC 100	/// Damage log
 #define MAX_SPIRITBALL 15 /// Max spirit balls
 #define MAX_DEVOTION 5 /// Max Devotion slots
 #define MAX_SPIRITCHARM 10 /// Max spirit charms
@@ -881,8 +880,6 @@ public:
 	bool vars_ok;
 	bool vars_dirty;
 
-	uint16 dmglog[DAMAGELOG_SIZE_PC]; ///target ids
-
 	int32 c_marker[MAX_SKILL_CRIMSON_MARKER]; /// Store target that marked by Crimson Marker [Cydh]
 	bool flicker; /// Check RL_FLICKER usage status [Cydh]
 
@@ -1702,9 +1699,6 @@ void pc_delspiritcharm(map_session_data *sd, int32 count, int32 type);
 
 void pc_baselevelchanged(map_session_data *sd);
 
-void pc_damage_log_add(map_session_data *sd, int32 id);
-void pc_damage_log_clear(map_session_data *sd, int32 id);
-
 enum e_BANKING_DEPOSIT_ACK : uint8;
 enum e_BANKING_WITHDRAW_ACK : uint8;
 enum e_BANKING_DEPOSIT_ACK pc_bank_deposit(map_session_data *sd, int32 money);