L2JMobius

C6 Support for xp/sp/drop/spoil rate on skills

G-hamsteR · 6 · 7228

Online G-hamsteR

  • Viscount
  • *****
    • Posts: 335
Hello,

I have created 4 new skill stats that alter rates for XP, SP, drop and spoil.

Code: [Select]
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.


Offline shonjkdev

  • Heir
  • **
    • Posts: 13

aparte de ese codigo, hay que agregar algo mas? me gustaria implementarlo, ya que estoy haciendo un low server


Online G-hamsteR

  • Viscount
  • *****
    • Posts: 335

aparte de ese codigo, hay que agregar algo mas? me gustaria implementarlo, ya que estoy haciendo un low server

Ήμουν στο RPG και είχα φουλάρει στο mana. Πάτησα pause να δω αν είχε κατέβει το divX και κόλλησε. Τά ΄χασα όλα. Δοκίμασα Ctrl-Alt-Delete αλλά το task manager είχε παγώσει.




Offline junin00

  • Black Sheep
  • Heir
  • **
    • Posts: 31
I added here, EXP and SP worked, but DROP and SPOIL didn't.

See how this skill is:

Code: [Select]
<skill id="7067" levels="1" name="Bonus DROP/SPOIL +100%">
<set name="mpConsume" val="1" />
<set name="target" val="TARGET_SELF" />
<set name="reuseDelay" val="1000" />
<set name="hitTime" val="850"/>
<set name="staticHitTime" val="true"/>
<set name="skillType" val="CONT" />
<set name="isMagic" val="true" />
<set name="isBufferMagic" val="true" />
<set name="operateType" val="OP_ACTIVE" />
<for>
<effect name="Buff" count="1" time="3600" val="0" stackOrder="2"
stackType="expBuff">   
<mul order="0x30" stat="dropRate" val="2.00"/>
<mul order="0x30" stat="spoilRate" val="2.00"/>
</effect>
</for>
</skill>