diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 28206f9c5b..ad9bd971cb 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,10 @@ 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/08/08 + * Fixed the char-server not invoking the party_calc_state function when the + third party-member is added to a party, hence failing to check for families + and disabling even share from them unless all three relog first (state is + correctly calculated when party is first loaded). [Skotlex] * Crash-protections in the mail-checking function. [Skotlex] * Some additional parenthesis on equipment check in pc_equipitem, seems to have fixed the mid/lower headgear-sprites not showing up. [Skotlex] diff --git a/src/char/int_party.c b/src/char/int_party.c index e26e659f6c..5d9ab9123b 100644 --- a/src/char/int_party.c +++ b/src/char/int_party.c @@ -554,12 +554,13 @@ int mapif_parse_PartyAddMember(int fd, int party_id, struct party_member *member p->party.member[i].leader = 0; if (p->party.member[i].online) p->party.count++; p->size++; - if (member->lv < p->min_lv || member->lv > p->max_lv || p->family) - { + if (p->size == 3) //Check family state. + int_party_calc_state(p); + else //Check even share range. + if (member->lv < p->min_lv || member->lv > p->max_lv || p->family) { if (p->family) p->family = 0; //Family state broken. int_party_check_lv(p); - } else if (p->size == 3) //Check family state. - int_party_calc_state(p); + } mapif_party_memberadded(fd, party_id, member->account_id, member->char_id, 0); mapif_party_info(-1, &p->party); return 0; diff --git a/src/char_sql/int_party.c b/src/char_sql/int_party.c index e3056f8d57..79fb57a956 100644 --- a/src/char_sql/int_party.c +++ b/src/char_sql/int_party.c @@ -617,12 +617,13 @@ int mapif_parse_PartyAddMember(int fd, int party_id, struct party_member *member p->party.member[i].leader=0; if (p->party.member[i].online) p->party.count++; p->size++; - if (member->lv < p->min_lv || member->lv > p->max_lv || p->family) - { + if (p->size == 3) //Check family state. + int_party_calc_state(p); + else //Check even share range. + if (member->lv < p->min_lv || member->lv > p->max_lv || p->family) { if (p->family) p->family = 0; //Family state broken. int_party_check_lv(p); - } else if (p->size == 3) //Check family state. - int_party_calc_state(p); + } mapif_party_memberadded(fd,party_id,member->account_id,member->char_id,0); mapif_party_info(-1,&p->party);