Procházet zdrojové kódy

added cart dupe-proof for named / cards items
removed unusef check_cloak_type func

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1173 54d463be-8e91-2dee-dedb-b68131a5f0ec

Lupus před 20 roky
rodič
revize
21d818bcf7
4 změnil soubory, kde provedl 13 přidání a 38 odebrání
  1. 1 0
      Changelog-SVN.txt
  2. 12 18
      src/map/pc.c
  3. 0 19
      src/map/skill.c
  4. 0 1
      src/map/skill.h

+ 1 - 0
Changelog-SVN.txt

@@ -1,6 +1,7 @@
 Date	Added
 
 02/24
+        * Re-added missing cart dupe-proof code. From Freya [Lupus]
         * Some rewrites on Basilica [celest]
         * Fixed another bad typo in skill list_num reading, thanks to orn [celest]
 	* Fixed Steal Item Rate. It has been multiplied twice on common_item_drop value for any kinds of items. [Lupus]

+ 12 - 18
src/map/pc.c

@@ -2235,9 +2235,11 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount)
 	i = MAX_INVENTORY;
 
 	if(!itemdb_isequip2(data)){
-		// ? 備品ではないので、?所有品なら個?のみ?化させる
+		// 装 備品ではないので、既所有品なら個数のみ変化させる
 		for(i=0;i<MAX_INVENTORY;i++)
-		if(compare_item(&sd->status.inventory[i], item_data)) {
+		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(sd->status.inventory[i].amount+amount > MAX_AMOUNT)
 				return 5;
 			sd->status.inventory[i].amount+=amount;
@@ -2246,16 +2248,11 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount)
 		}
 	}
 	if(i >= MAX_INVENTORY){
-		// ? 備品か未所有品だったので空き欄へ追加
+		//  備品か未所有品だったので空き欄へ追加
 		i = pc_search_inventory(sd,0);
 		if(i >= 0) {
 			memcpy(&sd->status.inventory[i],item_data,sizeof(sd->status.inventory[0]));
-			if(itemdb_isequip2(data)){
-				sd->status.inventory[i].amount=1;
-				amount=1;
-			} else {
-				sd->status.inventory[i].amount=amount;
-			}
+			sd->status.inventory[i].amount=amount;
 			sd->inventory_data[i]=data;
 			clif_additem(sd,i,amount,0);
 		}
@@ -2477,9 +2474,11 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun
 
 	i=MAX_CART;
 	if(!itemdb_isequip2(data)){
-		// ? 備品ではないので、?所有品なら個?のみ?化させる
+		// 装 備品ではないので、既所有品なら個数のみ変化させる
 		for(i=0;i<MAX_CART;i++){
-			if(compare_item(&sd->status.cart[i], item_data)) {
+			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(sd->status.cart[i].amount+amount > MAX_AMOUNT)
 					return 1;
 				sd->status.cart[i].amount+=amount;
@@ -2489,16 +2488,11 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun
 		}
 	}
 	if(i >= MAX_CART){
-		// ? 備品か未所有品だったので空き欄へ追加
+		//  備品か未所有品だったので空き欄へ追加
 		for(i=0;i<MAX_CART;i++){
 			if(sd->status.cart[i].nameid==0){
 				memcpy(&sd->status.cart[i],item_data,sizeof(sd->status.cart[0]));
-				if(itemdb_isequip2(data)){
-					sd->status.inventory[i].amount=1;
-					amount=1;
-				} else {
-					sd->status.inventory[i].amount=amount;
-				}
+				sd->status.cart[i].amount=amount;
 				sd->cart_num++;
 				clif_cart_additem(sd,i,amount,0);
 				break;

+ 0 - 19
src/map/skill.c

@@ -8036,25 +8036,6 @@ int skill_check_cloaking(struct block_list *bl)
 	return end;
 }
 
-int skill_type_cloaking(struct block_list *bl)
-{
-	static int dx[]={ 0, 1, 0, -1, -1,  1, 1, -1}; //optimized by Lupus
-	static int dy[]={-1, 0, 1,  0, -1, -1, 1,  1};
-	int i;
-
-	nullpo_retr(0, bl);
-	if(bl->type == BL_PC && battle_config.pc_cloak_check_type&1)
-		return 0;
-	else if(bl->type == BL_MOB && battle_config.monster_cloak_check_type&1)
-		return 0;
-	for(i=0; i<sizeof(dx)/sizeof(dx[0]); i++)
-	{
-		if(map_getcell(bl->m,bl->x+dx[i],bl->y+dy[i],CELL_CHKNOPASS))
-			return 0;
-	}
-	return 1;
-}
-
 /*
  *----------------------------------------------------------------------------
  * ƒXƒLƒ‹ƒ†ƒjƒbƒg

+ 0 - 1
src/map/skill.h

@@ -170,7 +170,6 @@ void skill_devotion_end(struct map_session_data *md,struct map_session_data *sd,
 
 // ‚»‚Ì‘¼
 int skill_check_cloaking(struct block_list *bl);
-int skill_type_cloaking(struct block_list *bl);
 
 // ƒXƒe?ƒ^ƒXˆÙ�í
 int skill_encchant_eremental_end(struct block_list *bl, int type);