Преглед изворни кода

BETA: Only apply global drop multipliers to items which are not on the individual item multiplier list.
* Implement global herb drop multipliers.

FBIagent пре 10 година
родитељ
комит
83af8749e4

+ 18 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/model/drops/CorpseDropItem.java

@@ -44,7 +44,12 @@ public class CorpseDropItem extends GeneralDropItem
 	@Override
 	public long getMin(L2Character victim, L2Character killer)
 	{
-		return (long) (super.getMin(victim, killer) * Config.RATE_CORPSE_DROP_AMOUNT_MULTIPLIER);
+		final long min = super.getMin(victim, killer);
+		if (Config.RATE_DROP_AMOUNT_MULTIPLIER.containsKey(getItemId()))
+		{
+			return min;
+		}
+		return (long) (min * Config.RATE_CORPSE_DROP_AMOUNT_MULTIPLIER);
 	}
 	
 	/*
@@ -54,7 +59,12 @@ public class CorpseDropItem extends GeneralDropItem
 	@Override
 	public long getMax(L2Character victim, L2Character killer)
 	{
-		return (long) (super.getMax(victim, killer) * Config.RATE_CORPSE_DROP_AMOUNT_MULTIPLIER);
+		final long max = super.getMax(victim, killer);
+		if (Config.RATE_DROP_AMOUNT_MULTIPLIER.containsKey(getItemId()))
+		{
+			return max;
+		}
+		return (long) (max * Config.RATE_CORPSE_DROP_AMOUNT_MULTIPLIER);
 	}
 	
 	/*
@@ -64,6 +74,11 @@ public class CorpseDropItem extends GeneralDropItem
 	@Override
 	public double getChance(L2Character victim, L2Character killer)
 	{
-		return super.getChance(victim, killer) * Config.RATE_CORPSE_DROP_CHANCE_MULTIPLIER;
+		final double chance = super.getChance(victim, killer);
+		if (Config.RATE_DROP_CHANCE_MULTIPLIER.containsKey(getItemId()))
+		{
+			return chance;
+		}
+		return chance * Config.RATE_CORPSE_DROP_CHANCE_MULTIPLIER;
 	}
 }

+ 38 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/model/drops/DeathDropItem.java

@@ -19,7 +19,9 @@
 package com.l2jserver.gameserver.model.drops;
 
 import com.l2jserver.Config;
+import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.items.L2Item;
 
 /**
  * @author Nos
@@ -44,7 +46,18 @@ public class DeathDropItem extends GeneralDropItem
 	@Override
 	public long getMin(L2Character victim, L2Character killer)
 	{
-		return (long) (super.getMin(victim, killer) * Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER);
+		final long min = super.getMin(victim, killer);
+		if (Config.RATE_DROP_AMOUNT_MULTIPLIER.containsKey(getItemId()))
+		{
+			return min;
+		}
+		
+		L2Item item = ItemTable.getInstance().getTemplate(getItemId());
+		if ((item != null) && item.hasExImmediateEffect())
+		{
+			return (long) (min * Config.RATE_HERB_DROP_AMOUNT_MULTIPLIER);
+		}
+		return (long) (min * Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER);
 	}
 	
 	/*
@@ -54,7 +67,18 @@ public class DeathDropItem extends GeneralDropItem
 	@Override
 	public long getMax(L2Character victim, L2Character killer)
 	{
-		return (long) (super.getMax(victim, killer) * Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER);
+		final long max = super.getMax(victim, killer);
+		if (Config.RATE_DROP_AMOUNT_MULTIPLIER.containsKey(getItemId()))
+		{
+			return max;
+		}
+		
+		final L2Item item = ItemTable.getInstance().getTemplate(getItemId());
+		if ((item != null) && item.hasExImmediateEffect())
+		{
+			return (long) (max * Config.RATE_HERB_DROP_AMOUNT_MULTIPLIER);
+		}
+		return (long) (max * Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER);
 	}
 	
 	/*
@@ -64,6 +88,17 @@ public class DeathDropItem extends GeneralDropItem
 	@Override
 	public double getChance(L2Character victim, L2Character killer)
 	{
-		return super.getChance(victim, killer) * Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER;
+		final double chance = super.getChance(victim, killer);
+		if (Config.RATE_DROP_CHANCE_MULTIPLIER.containsKey(getItemId()))
+		{
+			return chance;
+		}
+		
+		final L2Item item = ItemTable.getInstance().getTemplate(getItemId());
+		if ((item != null) && item.hasExImmediateEffect())
+		{
+			return chance * Config.RATE_HERB_DROP_CHANCE_MULTIPLIER;
+		}
+		return chance * Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER;
 	}
 }

+ 12 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/drops/GroupedDeathDropItem.java

@@ -19,7 +19,9 @@
 package com.l2jserver.gameserver.model.drops;
 
 import com.l2jserver.Config;
+import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.items.L2Item;
 
 /**
  * @author Nos
@@ -41,6 +43,15 @@ public class GroupedDeathDropItem extends GroupedGeneralDropItem
 	@Override
 	public double getChance(L2Character victim, L2Character killer)
 	{
-		return super.getChance(victim, killer) * Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER;
+		for (final GeneralDropItem gdi : getItems())
+		{
+			final L2Item item = ItemTable.getInstance().getTemplate(gdi.getItemId());
+			if ((item == null) || !item.hasExImmediateEffect())
+			{
+				return super.getChance(victim, killer) * Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER;
+			}
+		}
+		
+		return super.getChance(victim, killer) * Config.RATE_HERB_DROP_CHANCE_MULTIPLIER;
 	}
 }