Reverting Premium System drop calculations.

This commit is contained in:
MobiusDev
2015-04-25 00:50:27 +00:00
parent 66f1e4c9f9
commit 2543c68c09
8 changed files with 39 additions and 63 deletions

View File

@@ -30,21 +30,16 @@ public interface IAmountMultiplierStrategy
{
public static final IAmountMultiplierStrategy DROP = DEFAULT_STRATEGY(Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER);
public static final IAmountMultiplierStrategy SPOIL = DEFAULT_STRATEGY(Config.RATE_CORPSE_DROP_AMOUNT_MULTIPLIER);
public static final IAmountMultiplierStrategy STATIC = (item, victim, killer) -> 1;
public static final IAmountMultiplierStrategy STATIC = (item, victim) -> 1;
public static IAmountMultiplierStrategy DEFAULT_STRATEGY(final double defaultMultiplier)
{
return (item, victim, killer) ->
return (item, victim) ->
{
double multiplier = 1;
final Float dropChanceMultiplier = Config.RATE_DROP_AMOUNT_MULTIPLIER.get(item.getItemId());
final Float premiumAmountMultiplier = Config.PREMIUM_RATE_DROP_AMOUNT_MULTIPLIER.get(item.getItemId());
if (Config.PREMIUM_SYSTEM_ENABLED && (premiumAmountMultiplier != null) && (killer != null) && killer.isPlayer() && killer.getActingPlayer().hasPremiumStatus())
{
multiplier *= premiumAmountMultiplier;
}
else if (dropChanceMultiplier != null)
Float dropChanceMultiplier = Config.RATE_DROP_AMOUNT_MULTIPLIER.get(item.getItemId());
if (dropChanceMultiplier != null)
{
multiplier *= dropChanceMultiplier;
}
@@ -56,17 +51,6 @@ public interface IAmountMultiplierStrategy
{
multiplier *= Config.RATE_RAID_DROP_AMOUNT_MULTIPLIER;
}
else if (Config.PREMIUM_SYSTEM_ENABLED && (killer != null) && killer.isPlayer() && killer.getActingPlayer().hasPremiumStatus())
{
if ((defaultMultiplier == Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER) && (defaultMultiplier != Config.RATE_CORPSE_DROP_AMOUNT_MULTIPLIER))
{
multiplier *= Config.PREMIUM_RATE_DROP_AMOUNT;
}
else
{
multiplier *= Config.PREMIUM_RATE_SPOIL_AMOUNT;
}
}
else
{
multiplier *= defaultMultiplier;
@@ -75,5 +59,5 @@ public interface IAmountMultiplierStrategy
};
}
public double getAmountMultiplier(GeneralDropItem item, L2Character victim, L2Character killer);
public double getAmountMultiplier(GeneralDropItem item, L2Character victim);
}

View File

@@ -31,9 +31,9 @@ public interface IChanceMultiplierStrategy
{
public static final IChanceMultiplierStrategy DROP = DEFAULT_STRATEGY(Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER);
public static final IChanceMultiplierStrategy SPOIL = DEFAULT_STRATEGY(Config.RATE_CORPSE_DROP_CHANCE_MULTIPLIER);
public static final IChanceMultiplierStrategy STATIC = (item, victim, killer) -> 1;
public static final IChanceMultiplierStrategy STATIC = (item, victim) -> 1;
public static final IChanceMultiplierStrategy QUEST = (item, victim, killer) ->
public static final IChanceMultiplierStrategy QUEST = (item, victim) ->
{
double championmult;
if ((item.getItemId() == Inventory.ADENA_ID) || (item.getItemId() == Inventory.ANCIENT_ADENA_ID))
@@ -50,20 +50,15 @@ public interface IChanceMultiplierStrategy
public static IChanceMultiplierStrategy DEFAULT_STRATEGY(final double defaultMultiplier)
{
return (item, victim, killer) ->
return (item, victim) ->
{
float multiplier = 1;
if (victim.isChampion())
{
multiplier *= item.getItemId() != Inventory.ADENA_ID ? Config.L2JMOD_CHAMPION_REWARDS : Config.L2JMOD_CHAMPION_ADENAS_REWARDS;
}
final Float dropChanceMultiplier = Config.RATE_DROP_CHANCE_MULTIPLIER.get(item.getItemId());
final Float premiumChanceMultiplier = Config.PREMIUM_RATE_DROP_CHANCE_MULTIPLIER.get(item.getItemId());
if (Config.PREMIUM_SYSTEM_ENABLED && (premiumChanceMultiplier != null) && (killer != null) && killer.isPlayer() && killer.getActingPlayer().hasPremiumStatus())
{
multiplier *= premiumChanceMultiplier;
}
else if (dropChanceMultiplier != null)
Float dropChanceMultiplier = Config.RATE_DROP_CHANCE_MULTIPLIER.get(item.getItemId());
if (dropChanceMultiplier != null)
{
multiplier *= dropChanceMultiplier;
}
@@ -75,17 +70,6 @@ public interface IChanceMultiplierStrategy
{
multiplier *= Config.RATE_RAID_DROP_CHANCE_MULTIPLIER;
}
else if (Config.PREMIUM_SYSTEM_ENABLED && (killer != null) && killer.isPlayer() && killer.getActingPlayer().hasPremiumStatus())
{
if ((defaultMultiplier == Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER) && (defaultMultiplier != Config.RATE_CORPSE_DROP_CHANCE_MULTIPLIER))
{
multiplier *= Config.PREMIUM_RATE_DROP_CHANCE;
}
else
{
multiplier *= Config.PREMIUM_RATE_SPOIL_CHANCE;
}
}
else
{
multiplier *= defaultMultiplier;
@@ -94,5 +78,5 @@ public interface IChanceMultiplierStrategy
};
}
public double getChanceMultiplier(GeneralDropItem item, L2Character victim, L2Character killer);
public double getChanceMultiplier(GeneralDropItem item, L2Character victim);
}

View File

@@ -46,7 +46,7 @@ public interface IDropCalculationStrategy
}
}
return Collections.singletonList(new ItemHolder(item.getItemId(), Rnd.get(item.getMin(victim, killer), item.getMax(victim, killer)) * amountMultiply));
return Collections.singletonList(new ItemHolder(item.getItemId(), Rnd.get(item.getMin(victim), item.getMax(victim)) * amountMultiply));
}
return null;

View File

@@ -79,7 +79,7 @@ public interface IGroupedItemDropCalculationStrategy
}
}
return Collections.singletonList(new ItemHolder(item2.getItemId(), Rnd.get(item2.getMin(victim, killer), item2.getMax(victim, killer)) * amountMultiply));
return Collections.singletonList(new ItemHolder(item2.getItemId(), Rnd.get(item2.getMin(victim), item2.getMax(victim)) * amountMultiply));
}
}
}

View File

@@ -40,11 +40,11 @@ public interface IKillerChanceModifierStrategy extends INonGroupedKillerChanceMo
}
else if (Config.DEEPBLUE_DROP_RULES)
{
return Util.map(levelDifference, -Config.DROP_ITEM_MAX_LEVEL_DIFFERENCE, -Config.DROP_ITEM_MIN_LEVEL_DIFFERENCE, Config.DROP_ITEM_MIN_LEVEL_GAP_CHANCE, 100.0) / 100;
}
return 1;
};
public static final INonGroupedKillerChanceModifierStrategy DEFAULT_NONGROUP_STRATEGY = (item, victim, killer) ->
{
if (((!(victim.isRaid())) && Config.DEEPBLUE_DROP_RULES) || ((victim.isRaid()) && Config.DEEPBLUE_DROP_RULES_RAID))
@@ -52,6 +52,7 @@ public interface IKillerChanceModifierStrategy extends INonGroupedKillerChanceMo
int levelDifference = victim.getLevel() - killer.getLevel();
if (item.getItemId() == Inventory.ADENA_ID)
{
return Util.map(levelDifference, -Config.DROP_ADENA_MAX_LEVEL_DIFFERENCE, -Config.DROP_ADENA_MIN_LEVEL_DIFFERENCE, Config.DROP_ADENA_MIN_LEVEL_GAP_CHANCE, 100.0) / 100;
}
return Util.map(levelDifference, -Config.DROP_ITEM_MAX_LEVEL_DIFFERENCE, -Config.DROP_ITEM_MIN_LEVEL_DIFFERENCE, Config.DROP_ITEM_MIN_LEVEL_GAP_CHANCE, 100.0) / 100;