Explorar o código

- Item sharing now shares the same rules as exp sharing (no sharing when dead, or idle, etc)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6737 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex %!s(int64=19) %!d(string=hai) anos
pai
achega
2fe91c5e7d
Modificáronse 3 ficheiros con 11 adicións e 4 borrados
  1. 2 0
      Changelog-Trunk.txt
  2. 9 2
      src/map/party.c
  3. 0 2
      src/map/skill.c

+ 2 - 0
Changelog-Trunk.txt

@@ -4,6 +4,8 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2006/05/24
+	* Item sharing now shares the same rules as exp sharing (no sharing when
+	  dead, or idle, etc) [Skotlex]
 	* Fixed summoned slaves being able to cast onspawn summon-skills (slaves
 	  aren't supposed to be able to call minions) [Skotlex]
 	* The clif_skill_poseffect packet will not be invoked in Snap unless the

+ 9 - 2
src/map/party.c

@@ -714,7 +714,10 @@ int party_share_loot(struct party *p, TBL_PC *sd, struct item *item_data)
 				i++;
 				if (i >= MAX_PARTY)
 					i = 0;	// reset counter to 1st person in party so it'll stop when it reaches "itemc"
-				if ((psd=p->member[i].sd)==NULL || sd->bl.m != psd->bl.m)
+				if ((psd=p->member[i].sd)==NULL || sd->bl.m != psd->bl.m ||
+					pc_isdead(psd) || (battle_config.idle_no_share && (
+					psd->chatID || psd->vender_id || (psd->idletime < (last_tick - battle_config.idle_no_share)))
+				))
 					continue;
 				
 				if (pc_additem(psd,item_data,item_data->amount))
@@ -729,7 +732,11 @@ int party_share_loot(struct party *p, TBL_PC *sd, struct item *item_data)
 			int count=0;
 			//Collect pick candidates
 			for (i = 0; i < MAX_PARTY; i++) {
-				if ((psd[count]=p->member[i].sd) && psd[count]->bl.m == sd->bl.m)
+				if ((psd[count]=p->member[i].sd) && psd[count]->bl.m == sd->bl.m &&
+					!pc_isdead(psd[count]) && (!battle_config.idle_no_share || (
+						!psd[count]->chatID && !psd[count]->vender_id &&
+					  	(psd[count]->idletime >= (last_tick - battle_config.idle_no_share)))
+				))
 					count++;
 			}
 			if (count > 0) { //Pick a random member.

+ 0 - 2
src/map/skill.c

@@ -6008,8 +6008,6 @@ int skill_castend_pos2( struct block_list *src, int x,int y,int skillid,int skil
 				md->mode = MD_CANATTACK|MD_AGGRESSIVE;
 				md->deletetimer = add_timer (gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, id, 0);
 			}
-			// To-do: ?「還されるモンスタ?[には?「還したプレ?[ヤ?[の名前が付きます
-			// (attach name of player?)
 		}
 		break;
 	case AM_SPHEREMINE:	// スフィア?マイン