From 08957511cfd1eef7cdfdc62bd8bf4162e254c774 Mon Sep 17 00:00:00 2001 From: skotlex Date: Fri, 17 Nov 2006 21:20:58 +0000 Subject: - 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9251 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 2 ++ src/common/Makefile | 2 +- src/map/clif.c | 7 ++++++- src/map/party.c | 13 ++++++++----- src/map/pc.c | 2 +- src/map/skill.c | 8 ++++---- 6 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index ab0b9b5b3..ba8a2439c 100644 --- a/Changelog-Trunk.txt +++ b/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] diff --git a/src/common/Makefile b/src/common/Makefile index a6af2a594..2c929b52b 100644 --- a/src/common/Makefile +++ b/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 diff --git a/src/map/clif.c b/src/map/clif.c index 9ef8c7b94..8acf784d5 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -5965,7 +5965,12 @@ int clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd) } /*========================================== - * パーティ勧誘結果 + * 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) diff --git a/src/map/party.c b/src/map/party.c index ab86797f2..6c97bd464 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -277,14 +277,17 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd) for(i=0;iparty.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; } diff --git a/src/map/pc.c b/src/map/pc.c index 9436444f2..e28c1859d 100644 --- a/src/map/pc.c +++ b/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); diff --git a/src/map/skill.c b/src/map/skill.c index 4b077fb1a..a85737c6c 100644 --- a/src/map/skill.c +++ b/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)){ -- cgit v1.2.3-60-g2f50