rendered paste bodyIndex: java/config/rates.properties
===================================================================
--- java/config/rates.properties (revision 1798)
+++ java/config/rates.properties (working copy)
@@ -9,6 +9,7 @@
RateDropAdena = 1.
RateConsumableCost = 1.
RateDropItems = 1.
+RateRaidDropItems = 1.
RateDropSpoil = 1.
RateDropManor = 1
# NOTE: this need quests to be rewritten in dp in order to work
Index: java/net/sf/l2j/Config.java
===================================================================
--- java/net/sf/l2j/Config.java (revision 1798)
+++ java/net/sf/l2j/Config.java (working copy)
@@ -617,6 +617,8 @@
public static float RATE_CONSUMABLE_COST;
/** Rate for dropped items */
public static float RATE_DROP_ITEMS;
+ /** Rate for dropped items by Raid Bosses */
+ public static float RATE_DROP_ITEMS_BY_RAID;
/** Rate for spoiled items */
public static float RATE_DROP_SPOIL;
/** Rate for manor items */
@@ -1429,6 +1431,7 @@
RATE_DROP_ADENA = Float.parseFloat(ratesSettings.getProperty("RateDropAdena", "1."));
RATE_CONSUMABLE_COST = Float.parseFloat(ratesSettings.getProperty("RateConsumableCost", "1."));
RATE_DROP_ITEMS = Float.parseFloat(ratesSettings.getProperty("RateDropItems", "1."));
+ RATE_DROP_ITEMS_BY_RAID = Float.parseFloat(ratesSettings.getProperty("RateRaidDropItems", "1."));
RATE_DROP_SPOIL = Float.parseFloat(ratesSettings.getProperty("RateDropSpoil", "1."));
RATE_DROP_MANOR = Integer.parseInt(ratesSettings.getProperty("RateDropManor", "1"));
RATE_DROP_QUEST = Float.parseFloat(ratesSettings.getProperty("RateDropQuest", "1."));
@@ -1826,6 +1829,7 @@
else if (pName.equalsIgnoreCase("RateDropAdena")) RATE_DROP_ADENA = Float.parseFloat(pValue);
else if (pName.equalsIgnoreCase("RateConsumableCost")) RATE_CONSUMABLE_COST = Float.parseFloat(pValue);
else if (pName.equalsIgnoreCase("RateDropItems")) RATE_DROP_ITEMS = Float.parseFloat(pValue);
+ else if (pName.equalsIgnoreCase("RateRaidDropItems")) RATE_DROP_ITEMS_BY_RAID = Float.parseFloat(pValue);
else if (pName.equalsIgnoreCase("RateDropSpoil")) RATE_DROP_SPOIL = Float.parseFloat(pValue);
else if (pName.equalsIgnoreCase("RateDropManor")) RATE_DROP_MANOR = Integer.parseInt(pValue);
else if (pName.equalsIgnoreCase("RateDropQuest")) RATE_DROP_QUEST = Float.parseFloat(pValue);
Index: java/net/sf/l2j/gameserver/model/L2Attackable.java
===================================================================
--- java/net/sf/l2j/gameserver/model/L2Attackable.java (revision 1798)
+++ java/net/sf/l2j/gameserver/model/L2Attackable.java (working copy)
@@ -1030,7 +1030,7 @@
private RewardItem calculateRewardItem(L2PcInstance lastAttacker, L2DropData drop, int levelModifier, boolean isSweep)
{
// Get default drop chance
- float dropChance = drop.getChance();
+ float dropChance = drop.getChance();
int deepBlueDrop = 1;
if (Config.DEEPBLUE_DROP_RULES)
@@ -1040,7 +1040,7 @@
// We should multiply by the server's drop rate, so we always get a low chance of drop for deep blue mobs.
// NOTE: This is valid only for adena drops! Others drops will still obey server's rate
deepBlueDrop = 3;
- if (drop.getItemId() == 57) deepBlueDrop *= (int)Config.RATE_DROP_ITEMS;
+ if (drop.getItemId() == 57) deepBlueDrop *= isRaid()? (int)Config.RATE_DROP_ITEMS_BY_RAID : (int)Config.RATE_DROP_ITEMS;
}
}
@@ -1052,7 +1052,7 @@
// Applies Drop rates
if (drop.getItemId() == 57) dropChance *= Config.RATE_DROP_ADENA;
else if (isSweep) dropChance *= Config.RATE_DROP_SPOIL;
- else dropChance *= Config.RATE_DROP_ITEMS;
+ else dropChance *= isRaid() ? Config.RATE_DROP_ITEMS_BY_RAID : Config.RATE_DROP_ITEMS;
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
dropChance *= Config.L2JMOD_CHAMPION_REWARDS;
@@ -1139,7 +1139,7 @@
if (Config.DEEPBLUE_DROP_RULES) categoryDropChance = ((categoryDropChance - ((categoryDropChance * levelModifier)/100)) / deepBlueDrop);
// Applies Drop rates
- categoryDropChance *= Config.RATE_DROP_ITEMS;
+ categoryDropChance *= isRaid() ? Config.RATE_DROP_ITEMS_BY_RAID : Config.RATE_DROP_ITEMS;
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
categoryDropChance *= Config.L2JMOD_CHAMPION_REWARDS;
@@ -1152,7 +1152,7 @@
// Check if an Item from this category must be dropped
if (Rnd.get(L2DropData.MAX_CHANCE) < categoryDropChance)
{
- L2DropData drop = categoryDrops.dropOne();
+ L2DropData drop = categoryDrops.dropOne(isRaid());
if (drop == null)
return null;
@@ -1170,7 +1170,7 @@
int dropChance = drop.getChance();
if (drop.getItemId() == 57) dropChance *= Config.RATE_DROP_ADENA;
- else dropChance *= Config.RATE_DROP_ITEMS;
+ else dropChance *= isRaid() ? Config.RATE_DROP_ITEMS_BY_RAID : Config.RATE_DROP_ITEMS;
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
dropChance *= Config.L2JMOD_CHAMPION_REWARDS;
Index: java/net/sf/l2j/gameserver/model/L2DropCategory.java
===================================================================
--- java/net/sf/l2j/gameserver/model/L2DropCategory.java (revision 1798)
+++ java/net/sf/l2j/gameserver/model/L2DropCategory.java (working copy)
@@ -37,7 +37,7 @@
_categoryBalancedChance = 0;
}
- public void addDropData(L2DropData drop)
+ public void addDropData(L2DropData drop, boolean raid)
{
if (drop.isQuestDrop()) {
// if (_questDrops == null)
@@ -47,7 +47,7 @@
_drops.add(drop);
_categoryChance += drop.getChance();
// for drop selection inside a category: max 100 % chance for getting an item, scaling all values to that.
- _categoryBalancedChance += Math.min((drop.getChance()*Config.RATE_DROP_ITEMS),L2DropData.MAX_CHANCE);
+ _categoryBalancedChance += Math.min((drop.getChance()*(raid?Config.RATE_DROP_ITEMS_BY_RAID : Config.RATE_DROP_ITEMS)),L2DropData.MAX_CHANCE);
}
}
@@ -159,13 +159,13 @@
*
* @return selected drop from category, or null if nothing is dropped.
*/
- public synchronized L2DropData dropOne()
+ public synchronized L2DropData dropOne(boolean raid)
{
int randomIndex = Rnd.get(getCategoryBalancedChance());
int sum = 0;
for (L2DropData drop : getAllDrops())
{
- sum += Math.min((drop.getChance()*Config.RATE_DROP_ITEMS),L2DropData.MAX_CHANCE);
+ sum += Math.min((drop.getChance()*(raid?Config.RATE_DROP_ITEMS_BY_RAID : Config.RATE_DROP_ITEMS)),L2DropData.MAX_CHANCE);
if (sum >= randomIndex) // drop this item and exit the function
return drop;
Index: java/net/sf/l2j/gameserver/templates/L2NpcTemplate.java
===================================================================
--- java/net/sf/l2j/gameserver/templates/L2NpcTemplate.java (revision 1798)
+++ java/net/sf/l2j/gameserver/templates/L2NpcTemplate.java (working copy)
@@ -231,7 +231,7 @@
// if the category exists, add the drop to this category.
if (cat.getCategoryType() == categoryType)
{
- cat.addDropData(drop);
+ cat.addDropData(drop, type.equalsIgnoreCase("L2RaidBoss") || type.equalsIgnoreCase("L2GrandBoss"));
catExists = true;
break;
}
@@ -239,7 +239,7 @@
if (!catExists)
{
L2DropCategory cat = new L2DropCategory(categoryType);
- cat.addDropData(drop);
+ cat.addDropData(drop, type.equalsIgnoreCase("L2RaidBoss") || type.equalsIgnoreCase("L2GrandBoss"));
_categories.add(cat);
}
}