Try this.
Index: dist/game/data/scripts/handlers/bypasshandlers/NpcViewMod.java
===================================================================
--- dist/game/data/scripts/handlers/bypasshandlers/NpcViewMod.java (revision 7034)
+++ dist/game/data/scripts/handlers/bypasshandlers/NpcViewMod.java (working copy)
@@ -265,6 +265,7 @@
final DecimalFormat chanceFormat = new DecimalFormat("0.00##");
int leftHeight = 0;
int rightHeight = 0;
+ final double dropRateEffectBonus = player.getStat().getBonusDropRateMultiplier();
final StringBuilder leftSb = new StringBuilder();
final StringBuilder rightSb = new StringBuilder();
String limitReachedMsg = "";
@@ -363,6 +364,8 @@
rateAmount *= Config.PREMIUM_RATE_DROP_AMOUNT;
}
}
+ // bonus drop rate effect
+ rateChance *= dropRateEffectBonus;
}
sb.append("<table width=332 cellpadding=2 cellspacing=0 background=\"L2UI_CT1.Windows.Windows_DF_TooltipBG\">");
Index: dist/game/data/scripts/handlers/communityboard/DropSearchBoard.java
===================================================================
--- dist/game/data/scripts/handlers/communityboard/DropSearchBoard.java (revision 7034)
+++ dist/game/data/scripts/handlers/communityboard/DropSearchBoard.java (working copy)
@@ -167,6 +167,7 @@
final int start = (page - 1) * 14;
final int end = Math.min(list.size() - 1, start + 14);
final StringBuilder builder = new StringBuilder();
+ final double dropRateEffectBonus = player.getStat().getBonusDropRateMultiplier();
for (int index = start; index <= end; index++)
{
final CBDropHolder cbDropHolder = list.get(index);
@@ -260,6 +261,8 @@
rateAmount *= Config.PREMIUM_RATE_DROP_AMOUNT;
}
}
+ // bonus drop rate effect
+ rateChance *= dropRateEffectBonus;
}
builder.append("<tr>");
Index: dist/game/data/stats/skills/08400-08499.xml
===================================================================
--- dist/game/data/stats/skills/08400-08499.xml (revision 7034)
+++ dist/game/data/stats/skills/08400-08499.xml (working copy)
@@ -427,10 +427,16 @@
</skill>
<skill id="8415" levels="5" name="Ring Ability - Drop Rate Up">
<!-- Increases item drop rate. -->
+ <table name="#bonusDropRate">10 20 30 40 50</table>
<set name="icon" val="icon.skill3080" />
<set name="magicLvl" val="85" />
<set name="operateType" val="P" />
- <set name="targetType" val="NONE" />
+ <set name="targetType" val="SELF" />
+ <for>
+ <effect name="Buff">
+ <add stat="bonusDropRate" val="#bonusDropRate" />
+ </effect>
+ </for>
</skill>
<skill id="8416" levels="5" name="Earring Ability - Drop Rate Up">
<!-- Increases item drop rate. -->
Index: dist/game/data/xsd/skills.xsd
===================================================================
--- dist/game/data/xsd/skills.xsd (revision 7034)
+++ dist/game/data/xsd/skills.xsd (working copy)
@@ -414,9 +414,10 @@
<xs:enumeration value="waterPower" />
<xs:enumeration value="windPower" />
<xs:enumeration value="firePower" />
- <xs:enumeration value="bonusSp" />
<xs:enumeration value="defCritRateAdd" />
<xs:enumeration value="bonusExp" />
+ <xs:enumeration value="bonusSp" />
+ <xs:enumeration value="bonusDropRate" />
<xs:enumeration value="pvePhysDmg" />
<xs:enumeration value="pvePhysSkillsDmg" />
<xs:enumeration value="pveBowDmg" />
Index: java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java (revision 7034)
+++ java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java (working copy)
@@ -937,4 +937,9 @@
return bonus;
}
+
+ public double getBonusDropRateMultiplier()
+ {
+ return 1 + (calcStat(Stat.BONUS_DROP_RATE, 0, null, null) / 100);
+ }
}
Index: java/org/l2jmobius/gameserver/model/actor/templates/NpcTemplate.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/templates/NpcTemplate.java (revision 7034)
+++ java/org/l2jmobius/gameserver/model/actor/templates/NpcTemplate.java (working copy)
@@ -776,6 +776,12 @@
}
}
+ // bonus drop rate effect
+ if (killer.getActingPlayer() != null)
+ {
+ rateChance *= killer.getActingPlayer().getStat().getBonusDropRateMultiplier();
+ }
+
// calculate if item will drop
if ((Rnd.nextDouble() * 100) < (dropItem.getChance() * rateChance))
{
Index: java/org/l2jmobius/gameserver/model/stats/Stat.java
===================================================================
--- java/org/l2jmobius/gameserver/model/stats/Stat.java (revision 7034)
+++ java/org/l2jmobius/gameserver/model/stats/Stat.java (working copy)
@@ -88,6 +88,7 @@
EXPSP_RATE("rExp"),
BONUS_EXP("bonusExp"),
BONUS_SP("bonusSp"),
+ BONUS_DROP_RATE("bonusDropRate"),
ATTACK_CANCEL("cancel"),
// ACCURACY & RANGE