summaryrefslogtreecommitdiff
path: root/src/map/trade.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/trade.cpp')
-rw-r--r--src/map/trade.cpp229
1 files changed, 116 insertions, 113 deletions
diff --git a/src/map/trade.cpp b/src/map/trade.cpp
index 147db1b..6e81602 100644
--- a/src/map/trade.cpp
+++ b/src/map/trade.cpp
@@ -1,45 +1,47 @@
-#include <stdio.h>
-#include <string.h>
+#include "trade.hpp"
+
+#include "../common/cxxstdio.hpp"
+#include "../common/nullpo.hpp"
+#include "battle.hpp"
#include "clif.hpp"
#include "itemdb.hpp"
#include "map.hpp"
-#include "trade.hpp"
-#include "pc.hpp"
#include "npc.hpp"
-#include "battle.hpp"
+#include "pc.hpp"
#include "storage.hpp"
-#include "../common/nullpo.hpp"
+
+#include "../poison.hpp"
/*==========================================
* 取引要請を相手に送る
*------------------------------------------
*/
-void trade_traderequest (struct map_session_data *sd, int target_id)
+void trade_traderequest(struct map_session_data *sd, int target_id)
{
struct map_session_data *target_sd;
- nullpo_retv (sd);
+ nullpo_retv(sd);
- if ((target_sd = map_id2sd (target_id)) != NULL)
+ if ((target_sd = map_id2sd(target_id)) != NULL)
{
if (!battle_config.invite_request_check)
{
- if (target_sd->guild_invite > 0 || target_sd->party_invite > 0)
+ if (target_sd->party_invite > 0)
{
- clif_tradestart (sd, 2); // 相手はPT要請中かGuild要請中
+ clif_tradestart(sd, 2); // 相手はPT要請中かGuild要請中
return;
}
}
if (target_sd->npc_id)
{
//Trade fails if you are using an NPC.
- clif_tradestart (sd, 2);
+ clif_tradestart(sd, 2);
return;
}
if ((target_sd->trade_partner != 0) || (sd->trade_partner != 0))
{
- trade_tradecancel (sd); //person is in another trade
+ trade_tradecancel(sd); //person is in another trade
}
else
{
@@ -49,19 +51,19 @@ void trade_traderequest (struct map_session_data *sd, int target_id)
|| (sd->bl.y - target_sd->bl.y <= -5
|| sd->bl.y - target_sd->bl.y >= 5))
{
- clif_tradestart (sd, 0); //too far
+ clif_tradestart(sd, 0); //too far
}
else if (sd != target_sd)
{
target_sd->trade_partner = sd->status.account_id;
sd->trade_partner = target_sd->status.account_id;
- clif_traderequest (target_sd, sd->status.name);
+ clif_traderequest(target_sd, sd->status.name);
}
}
}
else
{
- clif_tradestart (sd, 1); //character does not exist
+ clif_tradestart(sd, 1); //character does not exist
}
}
@@ -69,15 +71,15 @@ void trade_traderequest (struct map_session_data *sd, int target_id)
* 取引要請
*------------------------------------------
*/
-void trade_tradeack (struct map_session_data *sd, int type)
+void trade_tradeack(struct map_session_data *sd, int type)
{
struct map_session_data *target_sd;
- nullpo_retv (sd);
+ nullpo_retv(sd);
- if ((target_sd = map_id2sd (sd->trade_partner)) != NULL)
+ if ((target_sd = map_id2sd(sd->trade_partner)) != NULL)
{
- clif_tradestart (target_sd, type);
- clif_tradestart (sd, type);
+ clif_tradestart(target_sd, type);
+ clif_tradestart(sd, type);
if (type == 4)
{ // Cancel
sd->deal_locked = 0;
@@ -86,15 +88,13 @@ void trade_tradeack (struct map_session_data *sd, int type)
target_sd->trade_partner = 0;
}
if (sd->npc_id != 0)
- npc_event_dequeue (sd);
+ npc_event_dequeue(sd);
if (target_sd->npc_id != 0)
- npc_event_dequeue (target_sd);
+ npc_event_dequeue(target_sd);
//close STORAGE window if it's open. It protects from spooffing packets [Lupus]
- if (sd->state.storage_flag == 1)
- storage_storageclose (sd);
- else if (sd->state.storage_flag == 2)
- storage_guild_storageclose (sd);
+ if (sd->state.storage_open)
+ storage_storageclose(sd);
}
}
@@ -102,19 +102,19 @@ void trade_tradeack (struct map_session_data *sd, int type)
* アイテム追加
*------------------------------------------
*/
-void trade_tradeadditem (struct map_session_data *sd, int index, int amount)
+void trade_tradeadditem(struct map_session_data *sd, int index, int amount)
{
struct map_session_data *target_sd;
struct item_data *id;
- int trade_i;
- int trade_weight = 0;
- int free = 0;
- int c;
- int i;
+ int trade_i;
+ int trade_weight = 0;
+ int free = 0;
+ int c;
+ int i;
- nullpo_retv (sd);
+ nullpo_retv(sd);
- if (((target_sd = map_id2sd (sd->trade_partner)) != NULL)
+ if (((target_sd = map_id2sd(sd->trade_partner)) != NULL)
&& (sd->deal_locked < 1))
{
if (index < 2 || index >= MAX_INVENTORY + 2)
@@ -122,7 +122,7 @@ void trade_tradeadditem (struct map_session_data *sd, int index, int amount)
if (index == 0 && amount > 0 && amount <= sd->status.zeny)
{
sd->deal_zeny = amount;
- clif_tradeadditem (sd, target_sd, 0, amount);
+ clif_tradeadditem(sd, target_sd, 0, amount);
}
}
else if (amount <= sd->status.inventory[index - 2].amount
@@ -151,8 +151,10 @@ void trade_tradeadditem (struct map_session_data *sd, int index, int amount)
&& target_sd->inventory_data[i] != NULL)
{
id = target_sd->inventory_data[i];
- if (id->type != 4 && id->type != 5
- && id->type != 7 && id->type != 8)
+ if (id->type != ItemType::WEAPON
+ && id->type != ItemType::ARMOR
+ && id->type != ItemType::_7
+ && id->type != ItemType::_8)
{
free++;
break;
@@ -163,13 +165,11 @@ void trade_tradeadditem (struct map_session_data *sd, int index, int amount)
if (target_sd->weight + trade_weight >
target_sd->max_weight)
{
- clif_tradeitemok (sd, index, 0, 1); //fail to add item -- the player was over weighted.
- amount = 0; // [MouseJstr]
+ clif_tradeitemok(sd, index, 0, 1); //fail to add item -- the player was over weighted.
}
else if (free <= 0)
{
- clif_tradeitemok (sd, index, 0, 2); //fail to add item -- no free slots at receiver
- amount = 0; // peavey
+ clif_tradeitemok(sd, index, 0, 2); //fail to add item -- no free slots at receiver
}
else
{
@@ -177,15 +177,15 @@ void trade_tradeadditem (struct map_session_data *sd, int index, int amount)
{ // re-deal exploit protection [Valaris]
if (sd->deal_item_index[c] == index)
{
- trade_tradecancel (sd);
+ trade_tradecancel(sd);
return;
}
}
- pc_unequipinvyitem (sd, index - 2, 0);
+ pc_unequipinvyitem(sd, index - 2, CalcStatus::NOW);
sd->deal_item_index[trade_i] = index;
sd->deal_item_amount[trade_i] += amount;
- clif_tradeitemok (sd, index, amount, 0); //success to add item
- clif_tradeadditem (sd, target_sd, index, amount);
+ clif_tradeitemok(sd, index, amount, 0); //success to add item
+ clif_tradeadditem(sd, target_sd, index, amount);
}
break;
}
@@ -205,8 +205,10 @@ void trade_tradeadditem (struct map_session_data *sd, int index, int amount)
&& target_sd->inventory_data[i] != NULL)
{
id = target_sd->inventory_data[i];
- if (id->type != 4 && id->type != 5
- && id->type != 7 && id->type != 8)
+ if (id->type != ItemType::WEAPON
+ && id->type != ItemType::ARMOR
+ && id->type != ItemType::_7
+ && id->type != ItemType::_8)
{
free++;
break;
@@ -225,12 +227,12 @@ void trade_tradeadditem (struct map_session_data *sd, int index, int amount)
* アイテム追加完了(ok押し)
*------------------------------------------
*/
-void trade_tradeok (struct map_session_data *sd)
+void trade_tradeok(struct map_session_data *sd)
{
struct map_session_data *target_sd;
- int trade_i;
+ int trade_i;
- nullpo_retv (sd);
+ nullpo_retv(sd);
for (trade_i = 0; trade_i < 10; trade_i++)
{
@@ -238,18 +240,18 @@ void trade_tradeok (struct map_session_data *sd)
sd->status.inventory[sd->deal_item_index[trade_i] - 2].amount
|| sd->deal_item_amount[trade_i] < 0)
{
- trade_tradecancel (sd);
+ trade_tradecancel(sd);
return;
}
}
- if ((target_sd = map_id2sd (sd->trade_partner)) != NULL)
+ if ((target_sd = map_id2sd(sd->trade_partner)) != NULL)
{
sd->deal_locked = 1;
- clif_tradeitemok (sd, 0, 0, 0);
- clif_tradedeal_lock (sd, 0);
- clif_tradedeal_lock (target_sd, 1);
+ clif_tradeitemok(sd, 0, 0, 0);
+ clif_tradedeal_lock(sd, 0);
+ clif_tradedeal_lock(target_sd, 1);
}
}
@@ -257,29 +259,32 @@ void trade_tradeok (struct map_session_data *sd)
* 取引キャンセル
*------------------------------------------
*/
-void trade_tradecancel (struct map_session_data *sd)
+void trade_tradecancel(struct map_session_data *sd)
{
struct map_session_data *target_sd;
- int trade_i;
+ int trade_i;
- nullpo_retv (sd);
+ nullpo_retv(sd);
- if ((target_sd = map_id2sd (sd->trade_partner)) != NULL)
+ if ((target_sd = map_id2sd(sd->trade_partner)) != NULL)
{
for (trade_i = 0; trade_i < 10; trade_i++)
{ //give items back (only virtual)
if (sd->deal_item_amount[trade_i] != 0)
{
- clif_additem (sd, sd->deal_item_index[trade_i] - 2,
- sd->deal_item_amount[trade_i], 0);
+ clif_additem(sd,
+ sd->deal_item_index[trade_i] - 2,
+ sd->deal_item_amount[trade_i],
+ PickupFail::OKAY);
sd->deal_item_index[trade_i] = 0;
sd->deal_item_amount[trade_i] = 0;
}
if (target_sd->deal_item_amount[trade_i] != 0)
{
- clif_additem (target_sd,
- target_sd->deal_item_index[trade_i] - 2,
- target_sd->deal_item_amount[trade_i], 0);
+ clif_additem(target_sd,
+ target_sd->deal_item_index[trade_i] - 2,
+ target_sd->deal_item_amount[trade_i],
+ PickupFail::OKAY);
target_sd->deal_item_index[trade_i] = 0;
target_sd->deal_item_amount[trade_i] = 0;
}
@@ -287,38 +292,36 @@ void trade_tradecancel (struct map_session_data *sd)
if (sd->deal_zeny)
{
sd->deal_zeny = 0;
- clif_updatestatus (sd, SP_ZENY);
+ clif_updatestatus(sd, SP::ZENY);
}
if (target_sd->deal_zeny)
{
- clif_updatestatus (target_sd, SP_ZENY);
+ clif_updatestatus(target_sd, SP::ZENY);
target_sd->deal_zeny = 0;
}
sd->deal_locked = 0;
sd->trade_partner = 0;
target_sd->deal_locked = 0;
target_sd->trade_partner = 0;
- clif_tradecancelled (sd);
- clif_tradecancelled (target_sd);
+ clif_tradecancelled(sd);
+ clif_tradecancelled(target_sd);
}
}
-#define MAP_LOG_PC(sd, fmt, args...) MAP_LOG("PC%d %d:%d,%d " fmt, sd->status.char_id, sd->bl.m, sd->bl.x, sd->bl.y, ## args)
-
/*==========================================
* 取引許諾(trade押し)
*------------------------------------------
*/
-void trade_tradecommit (struct map_session_data *sd)
+void trade_tradecommit(struct map_session_data *sd)
{
struct map_session_data *target_sd;
- int trade_i;
+ int trade_i;
- nullpo_retv (sd);
+ nullpo_retv(sd);
- if ((target_sd = map_id2sd (sd->trade_partner)) != NULL)
+ if ((target_sd = map_id2sd(sd->trade_partner)) != NULL)
{
- MAP_LOG_PC (sd, " TRADECOMMIT WITH %d GIVE %d GET %d",
+ MAP_LOG_PC(sd, " TRADECOMMIT WITH %d GIVE %d GET %d",
target_sd->status.char_id, sd->deal_zeny,
target_sd->deal_zeny);
if ((sd->deal_locked >= 1) && (target_sd->deal_locked >= 1))
@@ -332,15 +335,15 @@ void trade_tradecommit (struct map_session_data *sd)
if (sd->deal_zeny > sd->status.zeny)
{
sd->deal_zeny = 0;
- trade_tradecancel (sd);
- MAP_LOG_PC (sd, " TRADECANCEL");
+ trade_tradecancel(sd);
+ MAP_LOG_PC(sd, " TRADECANCEL");
return;
}
if (target_sd->deal_zeny > target_sd->status.zeny)
{
target_sd->deal_zeny = 0;
- trade_tradecancel (sd);
- MAP_LOG_PC (sd, " TRADECANCEL");
+ trade_tradecancel(sd);
+ MAP_LOG_PC(sd, " TRADECANCEL");
return;
}
sd->trade_partner = 0;
@@ -349,62 +352,62 @@ void trade_tradecommit (struct map_session_data *sd)
{
if (sd->deal_item_amount[trade_i] != 0)
{
- int n = sd->deal_item_index[trade_i] - 2;
- int flag;
- flag =
- pc_additem (target_sd, &sd->status.inventory[n],
- sd->deal_item_amount[trade_i]);
- if (flag == 0)
- pc_delitem (sd, n, sd->deal_item_amount[trade_i],
+ int n = sd->deal_item_index[trade_i] - 2;
+ PickupFail flag = pc_additem(target_sd,
+ &sd->status.inventory[n],
+ sd->deal_item_amount[trade_i]);
+ if (flag == PickupFail::OKAY)
+ pc_delitem(sd, n, sd->deal_item_amount[trade_i],
1);
else
- clif_additem (sd, n,
- sd->deal_item_amount[trade_i], 0);
+ clif_additem(sd, n,
+ sd->deal_item_amount[trade_i],
+ PickupFail::OKAY);
sd->deal_item_index[trade_i] = 0;
sd->deal_item_amount[trade_i] = 0;
}
if (target_sd->deal_item_amount[trade_i] != 0)
{
- int n = target_sd->deal_item_index[trade_i] - 2;
- int flag;
- flag =
- pc_additem (sd, &target_sd->status.inventory[n],
- target_sd->deal_item_amount[trade_i]);
- if (flag == 0)
- pc_delitem (target_sd, n,
+ int n = target_sd->deal_item_index[trade_i] - 2;
+ PickupFail flag = pc_additem(sd,
+ &target_sd->status.inventory[n],
+ target_sd->deal_item_amount[trade_i]);
+ if (flag == PickupFail::OKAY)
+ pc_delitem(target_sd, n,
target_sd->deal_item_amount[trade_i],
1);
else
- clif_additem (target_sd, n,
- target_sd->deal_item_amount
- [trade_i], 0);
+ clif_additem(target_sd, n,
+
+ target_sd->deal_item_amount[trade_i],
+ PickupFail::OKAY);
target_sd->deal_item_index[trade_i] = 0;
target_sd->deal_item_amount[trade_i] = 0;
}
}
if (sd->deal_zeny)
{
- int deal = sd->deal_zeny;
+ int deal = sd->deal_zeny;
sd->deal_zeny = 0;
sd->status.zeny -= deal;
- clif_updatestatus (sd, SP_ZENY);
+ clif_updatestatus(sd, SP::ZENY);
target_sd->status.zeny += deal;
- clif_updatestatus (target_sd, SP_ZENY);
+ clif_updatestatus(target_sd, SP::ZENY);
}
if (target_sd->deal_zeny)
{
- int deal = target_sd->deal_zeny;
+ int deal = target_sd->deal_zeny;
target_sd->deal_zeny = 0;
target_sd->status.zeny -= deal;
- clif_updatestatus (target_sd, SP_ZENY);
+ clif_updatestatus(target_sd, SP::ZENY);
sd->status.zeny += deal;
- clif_updatestatus (sd, SP_ZENY);
+ clif_updatestatus(sd, SP::ZENY);
}
sd->deal_locked = 0;
target_sd->deal_locked = 0;
- clif_tradecompleted (sd, 0);
- clif_tradecompleted (target_sd, 0);
- MAP_LOG_PC (sd, " TRADEOK");
+ clif_tradecompleted(sd, 0);
+ clif_tradecompleted(target_sd, 0);
+ MAP_LOG_PC(sd, " TRADEOK");
}
}
}
@@ -413,20 +416,20 @@ void trade_tradecommit (struct map_session_data *sd)
// This is called when a char's zeny is changed
// This helps prevent money duplication and other problems
// [Jaxad0127]
-void trade_verifyzeny (struct map_session_data *sd)
+void trade_verifyzeny(struct map_session_data *sd)
{
struct map_session_data *target_sd;
- nullpo_retv (sd);
+ nullpo_retv(sd);
- if ((target_sd = map_id2sd (sd->trade_partner)) != NULL)
+ if ((target_sd = map_id2sd(sd->trade_partner)) != NULL)
{
if (sd->deal_zeny > sd->status.zeny)
{
if (sd->deal_locked < 1)
- trade_tradeadditem (sd, 0, sd->status.zeny); // Fix money ammount
+ trade_tradeadditem(sd, 0, sd->status.zeny); // Fix money ammount
else
- trade_tradecancel (sd); // Or cancel the trade if we can't fix it
+ trade_tradecancel(sd); // Or cancel the trade if we can't fix it
}
}
}