summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/map.c12
-rw-r--r--src/map/map.h1
-rw-r--r--src/map/pc.c8
-rw-r--r--src/map/storage.c11
4 files changed, 17 insertions, 15 deletions
diff --git a/src/map/map.c b/src/map/map.c
index 0150926d7..55718a37d 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -2476,3 +2476,15 @@ int do_init(int argc, char *argv[]) {
return 0;
}
+
+int compare_item(struct item *a, struct item *b) {
+ return (
+ (a->nameid == b->nameid) &&
+ (a->identify == b->identify) &&
+ (a->refine == b->refine) &&
+ (a->attribute == b->attribute) &&
+ (a->card[0] == b->card[0]) &&
+ (a->card[1] == b->card[1]) &&
+ (a->card[2] == b->card[2]) &&
+ (a->card[3] == b->card[3]));
+}
diff --git a/src/map/map.h b/src/map/map.h
index 1c9565341..9d8a0b194 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -695,6 +695,7 @@ void map_deliddb(struct block_list *bl);
int map_foreachiddb(int (*)(void*,void*,va_list),...);
void map_addnickdb(struct map_session_data *);
struct map_session_data * map_nick2sd(char*);
+int compare_item(struct item *a, struct item *b);
// gat関連
int map_getcell(int,int,int);
diff --git a/src/map/pc.c b/src/map/pc.c
index 896a905fb..897b96861 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -3213,9 +3213,7 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount)
if(!itemdb_isequip2(data)){
// ? 備品ではないので、?所有品なら個?のみ?化させる
for(i=0;i<MAX_INVENTORY;i++)
- if(sd->status.inventory[i].nameid == item_data->nameid &&
- sd->status.inventory[i].card[0] == item_data->card[0] && sd->status.inventory[i].card[1] == item_data->card[1] &&
- sd->status.inventory[i].card[2] == item_data->card[2] && sd->status.inventory[i].card[3] == item_data->card[3]) {
+ if(compare_item(&sd->status.inventory[i], item_data)) {
if(sd->status.inventory[i].amount+amount > MAX_AMOUNT)
return 5;
sd->status.inventory[i].amount+=amount;
@@ -3450,9 +3448,7 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun
if(!itemdb_isequip2(data)){
// ? 備品ではないので、?所有品なら個?のみ?化させる
for(i=0;i<MAX_CART;i++){
- if(sd->status.cart[i].nameid==item_data->nameid &&
- sd->status.cart[i].card[0] == item_data->card[0] && sd->status.cart[i].card[1] == item_data->card[1] &&
- sd->status.cart[i].card[2] == item_data->card[2] && sd->status.cart[i].card[3] == item_data->card[3]){
+ if(compare_item(&sd->status.cart[i], item_data)) {
if(sd->status.cart[i].amount+amount > MAX_AMOUNT)
return 1;
sd->status.cart[i].amount+=amount;
diff --git a/src/map/storage.c b/src/map/storage.c
index eb9da1539..bc97b1390 100644
--- a/src/map/storage.c
+++ b/src/map/storage.c
@@ -144,12 +144,7 @@ int storage_additem(struct map_session_data *sd,struct storage *stor,struct item
if(!itemdb_isequip2(data)){
// 装備品ではないので、既所有品なら個数のみ変化させる
for(i=0;i<MAX_STORAGE;i++){
- if( stor->storage[i].nameid == item_data->nameid &&
- stor->storage[i].identify == item_data->identify &&
- stor->storage[i].refine == item_data->refine &&
- stor->storage[i].attribute == item_data->attribute &&
- stor->storage[i].card[0] == item_data->card[0] && stor->storage[i].card[1] == item_data->card[1] &&
- stor->storage[i].card[2] == item_data->card[2] && stor->storage[i].card[3] == item_data->card[3]){
+ if( compare_item (&stor->storage[i], item_data)) {
if(stor->storage[i].amount+amount > MAX_AMOUNT)
return 1;
stor->storage[i].amount+=amount;
@@ -434,9 +429,7 @@ int guild_storage_additem(struct map_session_data *sd,struct guild_storage *stor
if(!itemdb_isequip2(data)){
// 装備品ではないので、既所有品なら個数のみ変化させる
for(i=0;i<MAX_GUILD_STORAGE;i++){
- if(stor->storage[i].nameid == item_data->nameid &&
- stor->storage[i].card[0] == item_data->card[0] && stor->storage[i].card[1] == item_data->card[1] &&
- stor->storage[i].card[2] == item_data->card[2] && stor->storage[i].card[3] == item_data->card[3]){
+ if(compare_item(&stor->storage[i], item_data)) {
if(stor->storage[i].amount+amount > MAX_AMOUNT)
return 1;
stor->storage[i].amount+=amount;