diff options
-rw-r--r-- | Changelog-Trunk.txt | 3 | ||||
-rw-r--r-- | db/item_db.txt | 2 | ||||
-rw-r--r-- | src/map/clif.c | 3 | ||||
-rw-r--r-- | src/map/intif.c | 15 | ||||
-rw-r--r-- | src/map/mail.c | 16 | ||||
-rw-r--r-- | src/map/mail.h | 1 |
6 files changed, 27 insertions, 13 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 90921645e..143cf80f1 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,9 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. +2007/12/03 + * Fixed a bug on Mail System. Removed the possibility to lost the attachment on + a Map - Char server disconnection. [Zephyrus] 2007/11/29 * pc_setoption no longer does view_data changes while disguised (as this breaks things) [Skotlex] diff --git a/db/item_db.txt b/db/item_db.txt index b32bff3fb..3905df5a1 100644 --- a/db/item_db.txt +++ b/db/item_db.txt @@ -2219,7 +2219,7 @@ 5351,Sunflower_,Sunflower,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,0,37,{ bonus2 bSubRace,RC_Insect,10; },{},{} //5354,Songkok,Songkok,5,,,100,,2,,0,0xFFFFFFFE,7,1,256,,0,1,362,{ bonus bCastrate,-5; },{},{} //5355,Selendang,Selendang,5,,,100,,2,,0,0xFFFFFFFE,7,0,256,,0,1,363,{ bonus bCastrate,-5; },{},{} -5357,Victory_Wings,Victory Wings,5,,,0,,10,,,0xFFFFFFFF,7,2,256,,,,361,{ bonus bMdef,10;},{},{} +5357,Victory_Wings,Victory Wings,5,,,0,,10,,,0xFFFFFFFF,7,2,256,,,,365,{ bonus bMdef,10;},{},{} //5358,Pecopeco_Ears,Pecopeco Ears,5,,,100,,1,,0,0xFFFFFFFF,7,2,512,,70,0,366,{ bonus bAgi,1; bonus bMdef,2; },{},{} //5359,Ship_Captain's_Hat,Ship Captain's Hat,5,,,500,,3,,0,0xFFFFFFFF,7,2,256,,30,1,367,{ bonus bLongAtkRate,3; },{},{} //5360,Hukke's_Blackcat_Ears,Hukke's Blackcat Ears,5,,,200,,2,,0,0xFFFFFFFF,7,2,256,,45,1,368,{ bonus bDef,-50; bonus bFlee,10; bonus bCritical,3; bonus2 bCriticalAddRace,RC_Boss,10; bonus2 bCriticalAddRace,RC_NonBoss,10; },{},{} diff --git a/src/map/clif.c b/src/map/clif.c index 5d2413acd..1fec3b602 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -11515,7 +11515,8 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd) memset(msg.body, 0x00, MAIL_BODY_LENGTH); msg.timestamp = (int)mail_calctimes(); - intif_Mail_send(sd->status.account_id, &msg); + if( !intif_Mail_send(sd->status.account_id, &msg) ) + mail_deliveryfail(sd, &msg); sd->cansendmail_tick = gettick() + 1000; // 1 Second flood Protection } diff --git a/src/map/intif.c b/src/map/intif.c index 1cecf5ab0..72766c471 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -1645,7 +1645,7 @@ int intif_Mail_send(int account_id, struct mail_message *msg) memcpy(WFIFOP(inter_fd,8), msg, sizeof(struct mail_message)); WFIFOSET(inter_fd,len); - return 0; + return 1; } static void intif_parse_Mail_send(int fd) @@ -1666,16 +1666,9 @@ static void intif_parse_Mail_send(int fd) if( (sd = map_charid2sd(msg.send_id)) ) { if( fail ) - { - pc_additem(sd, &msg.item, msg.item.amount); - if( msg.zeny > 0 ) - { - sd->status.zeny += msg.zeny; - clif_updatestatus(sd, SP_ZENY); - } - } - - clif_Mail_send(sd->fd, fail); + mail_deliveryfail(sd, &msg); + else + clif_Mail_send(sd->fd, false); } if( fail ) diff --git a/src/map/mail.c b/src/map/mail.c index 9d2f4375e..a08d04c0d 100644 --- a/src/map/mail.c +++ b/src/map/mail.c @@ -154,4 +154,20 @@ int mail_openmail(struct map_session_data *sd) return 0; } +void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg) +{ + nullpo_retv(sd); + nullpo_retv(msg); + + pc_additem(sd, &msg->item, msg->item.amount); + + if( msg->zeny > 0 ) + { + sd->status.zeny += msg->zeny; + clif_updatestatus(sd, SP_ZENY); + } + + clif_Mail_send(sd->fd, true); +} + #endif diff --git a/src/map/mail.h b/src/map/mail.h index 1079fc560..bea33d3af 100644 --- a/src/map/mail.h +++ b/src/map/mail.h @@ -14,5 +14,6 @@ unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount); bool mail_setattachment(struct map_session_data *sd, struct mail_message *msg); void mail_getattachment(struct map_session_data* sd, int zeny, struct item* item); int mail_openmail(struct map_session_data *sd); +void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg); #endif /* _MAIL_H_ */ |