瀏覽代碼

- Fixed an infinite recursion in the Wedding Recall skills.
- UNT_ATTACK_SKILLS unit packets won't be sent to the client as they are supposed to be invisible anyway.


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

skotlex 19 年之前
父節點
當前提交
e19503185b
共有 3 個文件被更改,包括 18 次插入6 次删除
  1. 3 0
      Changelog-Trunk.txt
  2. 3 0
      src/map/clif.c
  3. 12 6
      src/map/skill.c

+ 3 - 0
Changelog-Trunk.txt

@@ -4,6 +4,9 @@ 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/03/31
+	* Fixed an infinite recursion in the Wedding Recall skills. [Skotlex]
+	* UNT_ATTACK_SKILLS unit packets won't be sent to the client as they are
+	  supposed to be invisible anyway. [Skotlex]
 	* Started work on commands for the IRC Bot, At the moment you can use !eakami <message>
 	  to broadcast a message, edit ALLOWED_NICK in irc.c to change the nickname
 	  of the person that is allowed to use it (Shitty authentication method, I know,

+ 3 - 0
src/map/clif.c

@@ -5311,6 +5311,9 @@ int clif_skill_setunit(struct skill_unit *unit)
 
 	bl=map_id2bl(unit->group->src_id);
 
+	if (unit->group->unit_id == UNT_ATTACK_SKILLS)
+		return 0;	//These are invisible client-side. [Skotlex]
+		
 #if PACKETVER < 3
 	memset(WBUFP(buf, 0),0,packet_len_table[0x11f]);
 	WBUFW(buf, 0)=0x11f;

+ 12 - 6
src/map/skill.c

@@ -7300,12 +7300,18 @@ int skill_unit_onlimit(struct skill_unit *src,unsigned int tick)
 	case UNT_CALLFAMILY:	/* ‚ ‚È‚½‚É?‚¢‚½‚¢ */
 		{
 			struct map_session_data *sd = NULL;
-			if(sg->val1 && (sd = map_charid2sd(sg->val1))
-				&& !map[sd->bl.m].flag.nowarp)
-				pc_setpos(sd,map[src->bl.m].index,src->bl.x,src->bl.y,3);
-			if(sg->val2 && (sd = map_charid2sd(sg->val2))
-				&& !map[sd->bl.m].flag.nowarp)
-				pc_setpos(sd,map[src->bl.m].index,src->bl.x,src->bl.y,3);
+			if(sg->val1) {
+			  	sd = map_charid2sd(sg->val1);
+				sg->val1 = 0;
+				if (sd && !map[sd->bl.m].flag.nowarp)
+					pc_setpos(sd,map[src->bl.m].index,src->bl.x,src->bl.y,3);
+			}
+			if(sg->val2) {
+				sd = map_charid2sd(sg->val2);
+				sg->val2 = 0;
+				if (sd && !map[sd->bl.m].flag.nowarp)
+					pc_setpos(sd,map[src->bl.m].index,src->bl.x,src->bl.y,3);
+			}
 		}
 		break;
 	}