summaryrefslogtreecommitdiff
path: root/src/map/map.c
diff options
context:
space:
mode:
authorcelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2005-03-31 14:57:27 +0000
committercelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2005-03-31 14:57:27 +0000
commit0a49ef38e015de362634036dccb8914ab1754628 (patch)
treeea312684de425f30809d36131c5fc7d82049b474 /src/map/map.c
parent43a1c839e4e0c6097aa83ea9bf9216bbb4a1194e (diff)
downloadhercules-0a49ef38e015de362634036dccb8914ab1754628.tar.gz
hercules-0a49ef38e015de362634036dccb8914ab1754628.tar.bz2
hercules-0a49ef38e015de362634036dccb8914ab1754628.tar.xz
hercules-0a49ef38e015de362634036dccb8914ab1754628.zip
* Reverted the pc_remove_map() change temporarily
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@1354 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/map.c')
-rw-r--r--src/map/map.c49
1 files changed, 44 insertions, 5 deletions
diff --git a/src/map/map.c b/src/map/map.c
index f04d64a79..c6c90b815 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -46,7 +46,6 @@
#include "memwatch.h"
#endif
-
// maybe put basic macros to somewhere else
#define swap(a,b) ((a == b) || ((a ^= b), (b ^= a), (a ^= b)))
@@ -1470,20 +1469,60 @@ int map_quit(struct map_session_data *sd) {
}
}
- if(sd->sc_data && sd->sc_data[SC_BERSERK].timer!=-1) //バ?サ?ク中の終了はHPを100に
- sd->status.hp = 100;
+ if(sd->chatID) // チャットから出る
+ chat_leavechat(sd);
+
+ if(sd->trade_partner) // 取引を中?する
+ trade_tradecancel(sd);
+
+ if(sd->party_invite>0) // パ?ティ?誘を拒否する
+ party_reply_invite(sd,sd->party_invite_account,0);
+
+ if(sd->guild_invite>0) // ギルド?誘を拒否する
+ guild_reply_invite(sd,sd->guild_invite,0);
+ if(sd->guild_alliance>0) // ギルド同盟?誘を拒否する
+ guild_reply_reqalliance(sd,sd->guild_alliance_account,0);
party_send_logout(sd); // パ?ティのログアウトメッセ?ジ送信
+
guild_send_memberinfoshort(sd,0); // ギルドのログアウトメッセ?ジ送信
+
+ pc_cleareventtimer(sd); // イベントタイマを破棄する
+
+ if(sd->state.storage_flag)
+ storage_guild_storage_quit(sd,0);
+ else
+ storage_storage_quit(sd); // 倉庫を開いてるなら保存する
+
+ // check if we've been authenticated [celest]
+ if (sd->state.auth)
+ skill_castcancel(&sd->bl,0); // 詠唱を中?する
+
skill_stop_dancing(&sd->bl,1);// ダンス/演奏中?
+
+ if(sd->sc_data && sd->sc_data[SC_BERSERK].timer!=-1) //バ?サ?ク中の終了はHPを100に
+ sd->status.hp = 100;
+
status_change_clear(&sd->bl,1); // ステ?タス異常を解除する
- pc_cleareventtimer(sd);
+ skill_clear_unitgroup(&sd->bl); // スキルユニットグル?プの削除
+ skill_cleartimerskill(&sd->bl);
+
+ // check if we've been authenticated [celest]
+ if (sd->state.auth) {
+ pc_stop_walking(sd,0);
+ pc_stopattack(sd);
+ pc_delinvincibletimer(sd);
+ }
pc_delspiritball(sd,sd->spiritball,1);
+ skill_gangsterparadise(sd,0);
+ skill_unit_move(&sd->bl,gettick(),0);
if (sd->state.auth)
status_calc_pc(sd,4);
// skill_clear_unitgroup(&sd->bl); // [Sara-chan]
+ clif_clearchar_area(&sd->bl,2);
+
if(sd->status.pet_id && sd->pd) {
pet_lootitem_drop(sd->pd,sd);
pet_remove_map(sd);
@@ -1500,11 +1539,11 @@ int map_quit(struct map_session_data *sd) {
if(pc_isdead(sd))
pc_setrestartvalue(sd,2);
- pc_remove_map(sd,2);
pc_makesavestatus(sd);
chrif_save(sd);
storage_storage_dirty(sd);
storage_storage_save(sd);
+ map_delblock(&sd->bl);
}
if( sd->npc_stackbuf && sd->npc_stackbuf != NULL) {