diff options
Diffstat (limited to 'src/map/trade.c')
-rw-r--r-- | src/map/trade.c | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/map/trade.c b/src/map/trade.c index 8311dbf3d..f469f4b28 100644 --- a/src/map/trade.c +++ b/src/map/trade.c @@ -331,7 +331,7 @@ void trade_tradeadditem(struct map_session_data *sd, short index, short amount) if( (target_sd = iMap->id2sd(sd->trade_partner)) == NULL ) { - trade_tradecancel(sd); + trade->cancel(sd); return; } @@ -415,13 +415,13 @@ void trade_tradeaddzeny(struct map_session_data* sd, int amount) if( (target_sd = iMap->id2sd(sd->trade_partner)) == NULL ) { - trade_tradecancel(sd); + trade->cancel(sd); return; } if( amount < 0 || amount > sd->status.zeny || amount > MAX_ZENY - target_sd->status.zeny ) { // invalid values, no appropriate packet for it => abort - trade_tradecancel(sd); + trade->cancel(sd); return; } @@ -440,7 +440,7 @@ void trade_tradeok(struct map_session_data *sd) return; if ((target_sd = iMap->id2sd(sd->trade_partner)) == NULL) { - trade_tradecancel(sd); + trade->cancel(sd); return; } sd->state.deal_locked = 1; @@ -532,18 +532,18 @@ void trade_tradecommit(struct map_session_data *sd) //Now is a good time (to save on resources) to check that the trade can indeed be made and it's not exploitable. // check exploit (trade more items that you have) - if (impossible_trade_check(sd)) { - trade_tradecancel(sd); + if (trade->check_impossible(sd)) { + trade->cancel(sd); return; } // check exploit (trade more items that you have) - if (impossible_trade_check(tsd)) { - trade_tradecancel(tsd); + if (trade->check_impossible(tsd)) { + trade->cancel(tsd); return; } // check for full inventory (can not add traded items) - if (!trade_check(sd,tsd)) { // check the both players - trade_tradecancel(sd); + if (!trade->check(sd,tsd)) { // check the both players + trade->cancel(sd); return; } @@ -607,3 +607,18 @@ void trade_tradecommit(struct map_session_data *sd) chrif_save(tsd,0); } } + +void trade_defaults(void) +{ + trade = &trade_s; + + trade->request = trade_traderequest; + trade->ack = trade_tradeack; + trade->check_impossible = impossible_trade_check; + trade->check = trade_check; + trade->additem = trade_tradeadditem; + trade->addzeny = trade_tradeaddzeny; + trade->ok = trade_tradeok; + trade->cancel = trade_tradecancel; + trade->commit = trade_tradecommit; +}
\ No newline at end of file |