diff options
author | celest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-03-31 14:57:27 +0000 |
---|---|---|
committer | celest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-03-31 14:57:27 +0000 |
commit | 0a49ef38e015de362634036dccb8914ab1754628 (patch) | |
tree | ea312684de425f30809d36131c5fc7d82049b474 /src/map/map.c | |
parent | 43a1c839e4e0c6097aa83ea9bf9216bbb4a1194e (diff) | |
download | hercules-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.c | 49 |
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) { |