Kaynağa Gözat

Fixed bugreport:5295 Added a config so each server owner may decide whether their users are to view the actual data or not, requires RENEWAL_DROP

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16337 54d463be-8e91-2dee-dedb-b68131a5f0ec
shennetsind 13 yıl önce
ebeveyn
işleme
487a66a879
4 değiştirilmiş dosya ile 16 ekleme ve 3 silme
  1. 5 0
      conf/battle/gm.conf
  2. 9 3
      src/map/atcommand.c
  3. 1 0
      src/map/battle.c
  4. 1 0
      src/map/battle.h

+ 5 - 0
conf/battle/gm.conf

@@ -25,3 +25,8 @@ atcommand_max_stat_bypass: no
 // Ban people that try trade dupe.
 // Duration of the ban, in minutes (default: 5). To disable the ban, set 0.
 ban_hack_trade: 5
+
+// requires RENEWAL_DROP to be enabled (src/map/config/renewal.h)
+// modifies @mobinfo to display the users' real drop rate as per renewal_drop formula
+// modifies @iteminfo to not display the minimum item drop rate (since it can't tell the mob level)
+atcommand_mobinfo_type: 1

+ 9 - 3
src/map/atcommand.c

@@ -6715,12 +6715,18 @@ ACMD_FUNC(mobinfo)
 		strcpy(atcmd_output, " ");
 		j = 0;
 		for (i = 0; i < MAX_MOB_DROP; i++) {
+			int droprate;
 			if (mob->dropitem[i].nameid <= 0 || mob->dropitem[i].p < 1 || (item_data = itemdb_exists(mob->dropitem[i].nameid)) == NULL)
 				continue;
+			droprate = mob->dropitem[i].p;
+#ifdef RENEWAL_DROP
+			if( battle_config.atcommand_mobinfo_type )
+				droprate = droprate * party_renewal_drop_mod(sd->status.base_level - mob->lv) / 100;
+#endif
 			if (item_data->slot)
-				sprintf(atcmd_output2, " - %s[%d]  %02.02f%%", item_data->jname, item_data->slot, (float)mob->dropitem[i].p / 100);
+				sprintf(atcmd_output2, " - %s[%d]  %02.02f%%", item_data->jname, item_data->slot, (float)droprate / 100);
 			else
-				sprintf(atcmd_output2, " - %s  %02.02f%%", item_data->jname, (float)mob->dropitem[i].p / 100);
+				sprintf(atcmd_output2, " - %s  %02.02f%%", item_data->jname, (float)droprate / 100);
 			strcat(atcmd_output, atcmd_output2);
 			if (++j % 3 == 0) {
 				clif_displaymessage(fd, atcmd_output);
@@ -7150,7 +7156,7 @@ ACMD_FUNC(iteminfo)
 
 		if (item_data->maxchance == -1)
 			strcpy(atcmd_output, " - Available in the shops only.");
-		else if (item_data->maxchance)
+		else if (!battle_config.atcommand_mobinfo_type && item_data->maxchance)
 			sprintf(atcmd_output, " - Maximal monsters drop chance: %02.02f%%", (float)item_data->maxchance / 100 );
 		else
 			strcpy(atcmd_output, " - Monsters don't drop this item.");

+ 1 - 0
src/map/battle.c

@@ -5407,6 +5407,7 @@ static const struct _battle_data {
 	{ "mvp_tomb_enabled",					&battle_config.mvp_tomb_enabled,				1,      0,      1				},
 	{ "feature.atcommand_suggestions",		&battle_config.atcommand_suggestions_enabled,	0,      0,      1				},
 	{ "min_npc_vending_distance",           &battle_config.min_npc_vending_distance,		3,		0,		100				},
+	{ "atcommand_mobinfo_type",				&battle_config.atcommand_mobinfo_type,			0,		0,		1				},
 };
 
 

+ 1 - 0
src/map/battle.h

@@ -474,6 +474,7 @@ extern struct Battle_Config
 	
 	int atcommand_suggestions_enabled;
     int min_npc_vending_distance;
+	int atcommand_mobinfo_type;
 } battle_config;
 
 void do_init_battle(void);