diff options
author | ai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2011-02-23 21:00:48 +0000 |
---|---|---|
committer | ai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2011-02-23 21:00:48 +0000 |
commit | 97215867bc7799ffe1166313aa58b57ae2b1a776 (patch) | |
tree | 797b7741f30b6ee26b0b125e39eb6ead428cc8ea /src/map/buyingstore.c | |
parent | 8fdc11ce3e6db27667df3f4e4676fc28ed61c97d (diff) | |
download | hercules-97215867bc7799ffe1166313aa58b57ae2b1a776.tar.gz hercules-97215867bc7799ffe1166313aa58b57ae2b1a776.tar.bz2 hercules-97215867bc7799ffe1166313aa58b57ae2b1a776.tar.xz hercules-97215867bc7799ffe1166313aa58b57ae2b1a776.zip |
* Updates to various custom stuff that buying stores might/are expected to support (follow up to r14713).
- Buying store no longer works on novending maps/cells (bugreport:4778).
- MANNER_NOROOM mute flag now affects buying stores as well (like vending).
- Enabled @autotrade for buying stores.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14724 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/buyingstore.c')
-rw-r--r-- | src/map/buyingstore.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/map/buyingstore.c b/src/map/buyingstore.c index 6871797c8..cf40b0231 100644 --- a/src/map/buyingstore.c +++ b/src/map/buyingstore.c @@ -50,6 +50,17 @@ bool buyingstore_setup(struct map_session_data* sd, unsigned char slots) return false; } + if( sd->sc.data[SC_NOCHAT] && (sd->sc.data[SC_NOCHAT]->val1&MANNER_NOROOM) ) + {// custom: mute limitation + return false; + } + + if( map[sd->bl.m].flag.novending || map_getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) ) + {// custom: no vending maps/cells + clif_displaymessage(sd->fd, msg_txt(276)); // "You can't open a shop on this map" + return false; + } + if( slots > MAX_BUYINGSTORE_SLOTS ) { ShowWarning("buyingstore_setup: Requested %d slots, but server supports only %d slots.\n", (int)slots, MAX_BUYINGSTORE_SLOTS); @@ -88,6 +99,17 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha return; } + if( sd->sc.data[SC_NOCHAT] && (sd->sc.data[SC_NOCHAT]->val1&MANNER_NOROOM) ) + {// custom: mute limitation + return; + } + + if( map[sd->bl.m].flag.novending || map_getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) ) + {// custom: no vending maps/cells + clif_displaymessage(sd->fd, msg_txt(276)); // "You can't open a shop on this map" + return; + } + weight = sd->weight; // check item list @@ -171,6 +193,12 @@ void buyingstore_close(struct map_session_data* sd) // notify other players clif_buyingstore_disappear_entry(sd); + + // remove auto-trader + if( sd->state.autotrade ) + { + map_quit(sd); + } } } |