diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-02-05 00:19:58 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-02-05 00:19:58 +0300 |
commit | 88a6bbe81cdac8392af63d9732b582fa02b04261 (patch) | |
tree | b3ff5d684c24990a1540bee398b59656c066089c /src/map/vending.c | |
parent | a59d2cf735c961d86050ae51d345a5a81cfeb77c (diff) | |
parent | dcc9ee43a4b33ace1501864415f5a856b18f8201 (diff) | |
download | hercules-88a6bbe81cdac8392af63d9732b582fa02b04261.tar.gz hercules-88a6bbe81cdac8392af63d9732b582fa02b04261.tar.bz2 hercules-88a6bbe81cdac8392af63d9732b582fa02b04261.tar.xz hercules-88a6bbe81cdac8392af63d9732b582fa02b04261.zip |
Merge pull request #993 from HerculesWS/mobdb2sql
Mob DB support for the db2sql plugin
Diffstat (limited to 'src/map/vending.c')
-rw-r--r-- | src/map/vending.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/map/vending.c b/src/map/vending.c index 810e6b07a..6e74e6c3e 100644 --- a/src/map/vending.c +++ b/src/map/vending.c @@ -89,7 +89,7 @@ void vending_vendinglistreq(struct map_session_data* sd, unsigned int id) { *------------------------------------------*/ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, const uint8* data, int count) { int i, j, cursor, w, new_ = 0, blank, vend_list[MAX_VENDING]; - double z; + int64 z; struct s_vending vend[MAX_VENDING]; // against duplicate packets struct map_session_data* vsd = map->id2sd(aid); @@ -116,7 +116,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, memcpy(&vend, &vsd->vending, sizeof(vsd->vending)); // copy vending list // some checks - z = 0.; // zeny counter + z = 0; // zeny counter w = 0; // weight counter for( i = 0; i < count; i++ ) { short amount = *(uint16*)(data + 4*i + 0); @@ -136,12 +136,12 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, else vend_list[i] = j; - z += ((double)vsd->vending[j].value * (double)amount); - if( z > (double)sd->status.zeny || z < 0. || z > (double)MAX_ZENY ) { + z += (int64)vsd->vending[j].value * amount; + if (z > sd->status.zeny || z < 0 || z > MAX_ZENY) { clif->buyvending(sd, idx, amount, 1); // you don't have enough zeny return; } - if( z + (double)vsd->status.zeny > (double)MAX_ZENY && !battle_config.vending_over_max ) { + if (z > MAX_ZENY - vsd->status.zeny && !battle_config.vending_over_max) { clif->buyvending(sd, idx, vsd->vending[j].amount, 4); // too much zeny = overflow return; @@ -181,7 +181,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, pc->payzeny(sd, (int)z, LOG_TYPE_VENDING, vsd); if( battle_config.vending_tax ) - z -= z * (battle_config.vending_tax/10000.); + z -= apply_percentrate64(z, battle_config.vending_tax, 10000); pc->getzeny(vsd, (int)z, LOG_TYPE_VENDING, sd); for( i = 0; i < count; i++ ) { |