Преглед на файлове

Follow up to r16912 (bugreport:6435), the fix wasn't working because I was mistakenly reproducing the bug -_-
Now I hope I did everything right.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16913 54d463be-8e91-2dee-dedb-b68131a5f0ec

momacabu преди 12 години
родител
ревизия
e1a327c223
променени са 3 файла, в които са добавени 10 реда и са изтрити 2 реда
  1. 8 2
      src/map/chat.c
  2. 1 0
      src/map/skill.c
  3. 1 0
      src/map/skill.h

+ 8 - 2
src/map/chat.c

@@ -13,6 +13,7 @@
 #include "map.h"
 #include "npc.h" // npc_event_do()
 #include "pc.h"
+#include "skill.h" // ext_skill_unit_onplace()
 #include "chat.h"
 
 #include <stdio.h>
@@ -202,14 +203,19 @@ int chat_leavechat(struct map_session_data* sd, bool kicked)
 
 
 	if( cd->users == 0 && cd->owner->type == BL_PC ) { // Delete empty chatroom
+		struct skill_unit* unit = NULL;
+		struct skill_unit_group* group = NULL;	
+
 		clif_clearchat(cd, 0);
 		db_destroy(cd->kick_list);
 		map_deliddb(&cd->bl);
 		map_delblock(&cd->bl);
 		map_freeblock(&cd->bl);
 		
-		if (map_find_skill_unit_oncell(&sd->bl,sd->bl.x,sd->bl.y,AL_WARP,NULL,0) != NULL)
-			clif_changeoption(&sd->bl); // We tell the client that something has changed...	
+		unit = map_find_skill_unit_oncell(&sd->bl, sd->bl.x, sd->bl.y, AL_WARP, NULL, 0);
+		group = (unit != NULL) ? unit->group : NULL;
+		if (group != NULL)
+			ext_skill_unit_onplace(unit, &sd->bl, group->tick);
 
 		return 1;
 	}

+ 1 - 0
src/map/skill.c

@@ -10784,6 +10784,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli
 /*==========================================
  *
  *------------------------------------------*/
+void ext_skill_unit_onplace(struct skill_unit *src, struct block_list *bl, unsigned int tick){skill_unit_onplace(src, bl, tick);}
 static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned int tick)
 {
 	struct skill_unit_group *sg;

+ 1 - 0
src/map/skill.h

@@ -299,6 +299,7 @@ int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int li
 #define skill_delunitgroup(group) skill_delunitgroup_(group,__FILE__,__LINE__,__func__)
 int skill_clear_unitgroup(struct block_list *src);
 int skill_clear_group(struct block_list *bl, int flag);
+void ext_skill_unit_onplace(struct skill_unit *src, struct block_list *bl, unsigned int tick);
 
 int skill_unit_ondamaged(struct skill_unit *src,struct block_list *bl,int damage,unsigned int tick);