Sfoglia il codice sorgente

- Fixed pets/homunc trying to be deleted twice when they had 0 intimacy and their master logs out.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9290 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 18 anni fa
parent
commit
52d0596d42
2 ha cambiato i file con 8 aggiunte e 4 eliminazioni
  1. 2 0
      Changelog-Trunk.txt
  2. 6 4
      src/map/unit.c

+ 2 - 0
Changelog-Trunk.txt

@@ -4,6 +4,8 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2006/11/21
+	* Fixed pets/homunc trying to be deleted twice when they had 0 intimacy and
+	  their master logs out. [Skotlex]
 	* Added support for specifying ammo type = 99 in the skill_require_db file,
 	  it can be used to specify that any kind of ammo can be used with the skill,
 	  but you NEED to have ammo equipped. [Skotlex]

+ 6 - 4
src/map/unit.c

@@ -1643,7 +1643,9 @@ int unit_remove_map(struct block_list *bl, int clrtype) {
 		md->state.skillstate= MSS_IDLE;
 	} else if (bl->type == BL_PET) {
 		struct pet_data *pd = (struct pet_data*)bl;
-		if(pd->pet.intimate <= 0) {
+		if(pd->pet.intimate <= 0 &&
+			!(pd->msd && pd->msd->state.waitingdisconnect)
+		) {	//If logging out, this is deleted on unit_free
 			clif_clearchar_area(bl,clrtype);
 			map_delblock(bl);
 			unit_free(bl,0);
@@ -1652,9 +1654,9 @@ int unit_remove_map(struct block_list *bl, int clrtype) {
 		}
 	} else if (bl->type == BL_HOM) {
 		struct homun_data *hd = (struct homun_data *) bl;
-		struct map_session_data *sd = hd->master;
-		if(!sd || !hd->homunculus.intimacy)
-	  	{	//He's going to be deleted.
+		if(!hd->homunculus.intimacy &&
+			!(hd->master && hd->master->state.waitingdisconnect)
+		) {	//If logging out, this is deleted on unit_free
 			clif_emotion(bl, 28) ;	//sob
 			clif_clearchar_area(bl,clrtype);
 			map_delblock(bl);