Hello,
I have created 4 new skill stats that alter rates for XP, SP, drop and spoil.
diff --git java/org/l2jmobius/gameserver/model/actor/Attackable.java java/org/l2jmobius/gameserver/model/actor/Attackable.java
index 830672f..b2f1622 100644
--- java/org/l2jmobius/gameserver/model/actor/Attackable.java
+++ java/org/l2jmobius/gameserver/model/actor/Attackable.java
@@ -759,6 +759,8 @@
player.sendPacket(SystemMessageId.OVER_HIT);
exp += calculateOverhitExp(exp);
}
+ exp = (long) ((exp * player.calcStat(Stat.XP_RATE, 100, null, null)) / 100);
+ sp = (int) ((sp * player.calcStat(Stat.SP_RATE, 100, null, null)) / 100);
if (player.isDonator())
{
exp = (long) (exp * Config.DONATOR_XPSP_RATE);
@@ -1353,6 +1355,7 @@
{
dropChance *= Config.RATE_DROP_SPOIL;
}
+ dropChance = (int) ((dropChance * lastAttacker.calcStat(Stat.SPOIL_RATE, 100, null, null)) / 100);
}
else if (this instanceof RaidBossInstance)
{
@@ -1720,6 +1723,9 @@
// Prepare for next iteration if dropChance > DropData.MAX_CHANCE
dropChance -= DropData.MAX_CHANCE;
}
+
+ itemCount = (int) ((itemCount * lastAttacker.calcStat(Stat.DROP_RATE, 100, null, null)) / 100);
+
if (Config.CHAMPION_ENABLE && isChampion() && ((drop.getItemId() == 57) || ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362))))
{
itemCount *= Config.CHAMPION_ADENAS_REWARDS;
diff --git java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a6d28c3..1e03180 100644
--- java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -104,6 +104,10 @@
case STAT_MEN:
case STAT_STR:
case STAT_WIT:
+ case XP_RATE:
+ case SP_RATE:
+ case DROP_RATE:
+ case SPOIL_RATE:
{
env.value = 1;
}
diff --git java/org/l2jmobius/gameserver/model/skills/Stat.java java/org/l2jmobius/gameserver/model/skills/Stat.java
index f47520e..5c7eab5 100644
--- java/org/l2jmobius/gameserver/model/skills/Stat.java
+++ java/org/l2jmobius/gameserver/model/skills/Stat.java
@@ -194,6 +194,12 @@
MP_CONSUME("MpConsume"),
SOULSHOT_COUNT("soulShotCount"),
+ // custom
+ XP_RATE("xpGain"),
+ SP_RATE("spGain"),
+ DROP_RATE("dropRate"),
+ SPOIL_RATE("spoilRate"),
+
// Skill mastery
SKILL_MASTERY("skillMastery");
For example, if you want to create a buff that adds +20% XP you can use <mul order="0x30" stat="xpGain" val="1.2"/>
The stats are xpGain, spGain, dropRate, spoilRate.