瀏覽代碼

- Corrected use of the party invitation reply packet, thanks to FlavioJS.
- Removed requirement of "Changelog-Trunk" in the common/Makefile, why was it even there??
- Minor cleanups


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

skotlex 18 年之前
父節點
當前提交
0b585ba393
共有 6 個文件被更改,包括 22 次插入12 次删除
  1. 2 0
      Changelog-Trunk.txt
  2. 1 1
      src/common/Makefile
  3. 6 1
      src/map/clif.c
  4. 8 5
      src/map/party.c
  5. 1 1
      src/map/pc.c
  6. 4 4
      src/map/skill.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/17
+	* Corrected use of the party invitation reply packet, thanks to FlavioJS.
+	  [Skotlex]
 	* Fixed potential hack by modifying packet of whispers. [Lance]
 	* Fixed potential crash in IRC processing message with '%' using *printf. [Lance]
 	* Fixed memory leaking caused by homun_data not freed when removed. [Lance]

+ 1 - 1
src/common/Makefile

@@ -26,7 +26,7 @@ clean:
 HAVESVN = $(shell which svnversion)
 
 ifeq ($(findstring /,$(HAVESVN)), /)
-svnversion.h: ../../Changelog-Trunk.txt
+svnversion.h:
 	@printf "#define SVNVERSION " > svnversion.h
 	@svnversion . >> svnversion.h
 else

+ 6 - 1
src/map/clif.c

@@ -5965,7 +5965,12 @@ int clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd)
 }
 
 /*==========================================
- * ƒp�[ƒeƒBŠ©—UŒ‹‰Ê
+ * Party invitation result. Flag values are:
+ * 0 -> char is already in a party
+ * 1 -> party invite was rejected
+ * 2 -> party invite was accepted
+ * 3 -> party is full
+ * 4 -> char of the same account already joined the party
  *------------------------------------------
  */
 int clif_party_inviteack(struct map_session_data *sd,char *nick,int flag)

+ 8 - 5
src/map/party.c

@@ -277,14 +277,17 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
 	for(i=0;i<MAX_PARTY;i++){
 		if(p->party.member[i].account_id == 0) //Room for a new member.
 			flag = 1;
-		if(p->party.member[i].account_id==tsd->status.account_id &&
-			p->party.member[i].char_id==tsd->status.char_id){
-			clif_party_inviteack(sd,tsd->status.name,0);
+	/* By default Aegis BLOCKS more than one char from the same account on a party.
+	 * But eA does support it... so this check is left commented.
+		if(p->party.member[i].account_id==tsd->status.account_id)
+		{
+			clif_party_inviteack(sd,tsd->status.name,4);
 			return 0;
 		}
+	*/
 	}
 	if (!flag) { //Full party.
-		clif_party_inviteack(sd,tsd->status.name,2);
+		clif_party_inviteack(sd,tsd->status.name,3);
 		return 0;
 	}
 		
@@ -348,7 +351,7 @@ int party_member_added(int party_id,int account_id,int char_id, int flag)
 
 	sd2=map_id2sd(sd->party_invite_account);
 	if (sd2)
-		clif_party_inviteack(sd2,sd->status.name,flag?2:0);
+		clif_party_inviteack(sd2,sd->status.name,flag?2:1);
 	return 0;
 }
 

+ 1 - 1
src/map/pc.c

@@ -3222,8 +3222,8 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, int lv)
 	if(rand() % 10000 >= md->db->dropitem[i].p*rate/100)
 		return 0;
 	
-	malloc_set(&tmp_item,0,sizeof(tmp_item));
 	itemid = md->db->dropitem[i].nameid;
+	malloc_set(&tmp_item,0,sizeof(tmp_item));
 	tmp_item.nameid = itemid;
 	tmp_item.amount = 1;
 	tmp_item.identify = itemdb_isidentified(itemid);

+ 4 - 4
src/map/skill.c

@@ -8344,6 +8344,10 @@ int skill_check_condition (struct map_session_data *sd, int skill, int lv, int t
 		}
 		zeny = 0; //Zeny is reduced on skill_attack.
 		break;
+	case PF_HPCONVERSION:
+		if (status->sp == status->max_sp)
+			return 0; //Unusable when at full SP.
+		break;
 	case AM_CALLHOMUN: //Can't summon if a hom is already out
 		if (sd->status.hom_id && sd->hd && !sd->hd->homunculus.vaporize) {
 			clif_skill_fail(sd,skill,0,0);
@@ -8366,10 +8370,6 @@ int skill_check_condition (struct map_session_data *sd, int skill, int lv, int t
 			return 0;
 		}
 		break;
-	case PF_HPCONVERSION:
-		if (status->sp == status->max_sp)
-			return 0; //Unusable when at full SP.
-		break;
 	}
 
 	if(!(type&2)){