summaryrefslogtreecommitdiff
path: root/src/map/buyingstore.c
diff options
context:
space:
mode:
authorai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec>2011-02-23 21:00:48 +0000
committerai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec>2011-02-23 21:00:48 +0000
commit97215867bc7799ffe1166313aa58b57ae2b1a776 (patch)
tree797b7741f30b6ee26b0b125e39eb6ead428cc8ea /src/map/buyingstore.c
parent8fdc11ce3e6db27667df3f4e4676fc28ed61c97d (diff)
downloadhercules-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.c28
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);
+ }
}
}