summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt8
-rw-r--r--db/const.txt1
-rw-r--r--src/map/clif.c2
-rw-r--r--src/map/map.c6
-rw-r--r--src/map/party.c16
5 files changed, 31 insertions, 2 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 9b57bba16..c586594d9 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,14 @@ 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.
2007/09/10
+ * Corrected /invite letting you invite people even if you are not the party
+ leader.
+ * Added some reply messages when you try /invite and a. the character is
+ not found or b. you are not the party leader.
+ * Added a check so that the 'save on crash' routine won't get stuck if it
+ happens to crash while attempting to save characters.
+ * People in chat-rooms no longer receive @main messages. [Skotlex]
+2007/09/10
* Added a safeguard to skill_get_unit_layout() against incorrectly
defined layout ids (will give weird results but won't crash at least)
* Fixed Firewall/Icewall being oriented backwards (no real difference..)
diff --git a/db/const.txt b/db/const.txt
index 223966ed5..756595db8 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -383,6 +383,7 @@ bAddEffWhenHit 2016
bAutoSpellWhenHit 2017
bSkillAtk 2018
bUnstripable 2019
+
bSPGainValue 2021
bHPRegenRate 2022
bHPLossRate 2023
diff --git a/src/map/clif.c b/src/map/clif.c
index d95495c1a..557e80041 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -362,7 +362,7 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target
for(i=1; i<fd_max; i++) {
if (session[i] && session[i]->func_parse == clif_parse &&
(sd = (struct map_session_data*)session[i]->session_data) != NULL &&
- sd->state.mainchat && (fd=sd->fd))
+ sd->state.mainchat && !sd->chatID && (fd=sd->fd))
{
WFIFOHEAD(fd,len);
memcpy(WFIFOP(fd,0), buf, len);
diff --git a/src/map/map.c b/src/map/map.c
index fcb1a58ac..7c1ba6c4c 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -3227,7 +3227,13 @@ static int map_abort_sub(DBKey key,void * data,va_list ap)
//------------------------------
void do_abort(void)
{
+ static int run = 0;
//Save all characters and then flush the inter-connection.
+ if (run) {
+ ShowFatalError("Server has crashed while trying to save characters. Character data can't be saved!\n");
+ return;
+ }
+ run = 1;
if (!chrif_isconnected())
{
if (pc_db->size(pc_db))
diff --git a/src/map/party.c b/src/map/party.c
index 6ae42a9f1..763b553e1 100644
--- a/src/map/party.c
+++ b/src/map/party.c
@@ -9,6 +9,7 @@
#include "../common/showmsg.h"
#include "party.h"
+#include "atcommand.h" //msg_txt()
#include "pc.h"
#include "map.h"
#include "battle.h"
@@ -259,15 +260,28 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
int i,flag=0;
nullpo_retr(0, sd);
+ if (p==NULL)
+ return 0;
- if(tsd==NULL || p==NULL)
+ if(tsd==NULL) { //TODO: Find the correct reply packet.
+ clif_displaymessage(sd->fd, msg_txt(3));
+ return 0;
+ }
+ //Only leader can invite.
+ ARR_FIND(0, MAX_PARTY, i, i < MAX_PARTY && p->data[i].sd != sd);
+ if (i == MAX_PARTY || !p->party.member[i].leader)
+ { //TODO: Find the correct reply packet.
+ clif_displaymessage(sd->fd, msg_txt(282));
return 0;
+ }
+
if(!battle_config.invite_request_check) {
if (tsd->guild_invite>0 || tsd->trade_partner) {
clif_party_inviteack(sd,tsd->status.name,0);
return 0;
}
}
+
if (!tsd->fd) { //You can't invite someone who has already disconnected.
clif_party_inviteack(sd,tsd->status.name,1);
return 0;