Some Premium system refactoring.
This commit is contained in:
parent
2cf52bad9b
commit
a3954c0b2e
16
trunk/dist/game/config/Custom.properties
vendored
16
trunk/dist/game/config/Custom.properties
vendored
@ -682,7 +682,7 @@ BalancePlayerExceedLimit = 20
|
||||
|
||||
# Enable premium system.
|
||||
# Default: False
|
||||
EnablePremiumSystem = True
|
||||
EnablePremiumSystem = False
|
||||
|
||||
# Xp rate for premium players.
|
||||
PremiumRateXp = 2
|
||||
@ -704,18 +704,8 @@ PremiumRateSpoilAmount = 2
|
||||
|
||||
# List of items affected by custom drop rate by id, used now for Adena rate too.
|
||||
# Usage: itemId1,multiplier1;itemId2,multiplier2;...
|
||||
PremiumRateDropChanceByItemId = 57,2
|
||||
PremiumRateDropAmountByItemId = 57,2
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Anti feed inside Battalion zone
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Delay time when killing the same person multiple times (calculated in seconds).
|
||||
# Example: 30
|
||||
# 0 for no delay (disable)
|
||||
BTZDelay = 10
|
||||
PremiumDropChanceMultiplierByItemId = 57,1
|
||||
PremiumDropAmountMultiplierByItemId = 57,2
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
@ -322,7 +322,7 @@ public class NpcViewMod implements IBypassHandler
|
||||
sb.append(item.getName());
|
||||
sb.append("</font></td></tr><tr><td width=32></td><td width=259><table width=253 cellpadding=0 cellspacing=0>");
|
||||
sb.append("<tr><td width=48 align=right valign=top><font color=\"LEVEL\">Amount:</font></td><td width=205 align=center>");
|
||||
MinMax minMax = getPreciseMinMax(normalized.getChance(), generalDropItem.getMin(npc, activeChar), generalDropItem.getMax(npc, activeChar), generalDropItem.isPreciseCalculated());
|
||||
MinMax minMax = getPreciseMinMax(normalized.getChance(), generalDropItem.getMin(npc, null), generalDropItem.getMax(npc, null), generalDropItem.isPreciseCalculated());
|
||||
final long min = minMax.min;
|
||||
final long max = minMax.max;
|
||||
if (min == max)
|
||||
@ -401,7 +401,7 @@ public class NpcViewMod implements IBypassHandler
|
||||
sb.append("</font></td></tr><tr><td width=32></td><td width=300><table width=295 cellpadding=0 cellspacing=0>");
|
||||
sb.append("<tr><td width=48 align=right valign=top><font color=\"LEVEL\">Amount:</font></td>");
|
||||
sb.append("<td width=247 align=center>");
|
||||
MinMax minMax = getPreciseMinMax(dropItem.getChance(npc, activeChar), dropItem.getMin(npc, activeChar), dropItem.getMax(npc, activeChar), dropItem.isPreciseCalculated());
|
||||
MinMax minMax = getPreciseMinMax(dropItem.getChance(npc, activeChar), dropItem.getMin(npc, null), dropItem.getMax(npc, null), dropItem.isPreciseCalculated());
|
||||
|
||||
final long min = minMax.min;
|
||||
final long max = minMax.max;
|
||||
|
@ -842,13 +842,12 @@ public final class Config
|
||||
public static boolean PREMIUM_SYSTEM_ENABLED;
|
||||
public static float PREMIUM_RATE_XP;
|
||||
public static float PREMIUM_RATE_SP;
|
||||
public static Map<Integer, Float> PREMIUM_RATE_DROP_ITEMS_ID;
|
||||
public static float PREMIUM_RATE_DROP_CHANCE;
|
||||
public static float PREMIUM_RATE_DROP_AMOUNT;
|
||||
public static float PREMIUM_RATE_SPOIL_CHANCE;
|
||||
public static float PREMIUM_RATE_SPOIL_AMOUNT;
|
||||
public static Map<Integer, Float> PREMIUM_RATE_DROP_CHANCE_BY_ID;
|
||||
public static Map<Integer, Float> PREMIUM_RATE_DROP_AMOUNT_BY_ID;
|
||||
public static Map<Integer, Float> PREMIUM_RATE_DROP_CHANCE_MULTIPLIER;
|
||||
public static Map<Integer, Float> PREMIUM_RATE_DROP_AMOUNT_MULTIPLIER;
|
||||
public static boolean PC_BANG_ENABLED;
|
||||
public static int PC_BANG_MAX_POINTS;
|
||||
public static boolean PC_BANG_ENABLE_DOUBLE_POINTS;
|
||||
@ -2626,8 +2625,8 @@ public final class Config
|
||||
PREMIUM_RATE_DROP_AMOUNT = CustomSettings.getFloat("PremiumRateDropAmount", 2);
|
||||
PREMIUM_RATE_SPOIL_CHANCE = CustomSettings.getFloat("PremiumRateSpoilChance", 1);
|
||||
PREMIUM_RATE_SPOIL_AMOUNT = CustomSettings.getFloat("PremiumRateSpoilAmount", 2);
|
||||
String[] premiumDropChanceMultiplier = CustomSettings.getString("PremiumRateDropChanceByItemId", "").split(";");
|
||||
PREMIUM_RATE_DROP_CHANCE_BY_ID = new HashMap<>(premiumDropChanceMultiplier.length);
|
||||
String[] premiumDropChanceMultiplier = CustomSettings.getString("PremiumDropChanceMultiplierByItemId", "").split(";");
|
||||
PREMIUM_RATE_DROP_CHANCE_MULTIPLIER = new HashMap<>(premiumDropChanceMultiplier.length);
|
||||
if (!premiumDropChanceMultiplier[0].isEmpty())
|
||||
{
|
||||
for (String item : premiumDropChanceMultiplier)
|
||||
@ -2635,26 +2634,26 @@ public final class Config
|
||||
String[] itemSplit = item.split(",");
|
||||
if (itemSplit.length != 2)
|
||||
{
|
||||
_log.warning(StringUtil.concat("Config.load(): invalid config property -> PremiumRateDropChanceByItemId \"", item, "\""));
|
||||
_log.warning(StringUtil.concat("Config.load(): invalid config property -> PremiumDropChanceMultiplierByItemId \"", item, "\""));
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
PREMIUM_RATE_DROP_CHANCE_BY_ID.put(Integer.valueOf(itemSplit[0]), Float.valueOf(itemSplit[1]));
|
||||
PREMIUM_RATE_DROP_CHANCE_MULTIPLIER.put(Integer.valueOf(itemSplit[0]), Float.valueOf(itemSplit[1]));
|
||||
}
|
||||
catch (NumberFormatException nfe)
|
||||
{
|
||||
if (!item.isEmpty())
|
||||
{
|
||||
_log.warning(StringUtil.concat("Config.load(): invalid config property -> PremiumRateDropChanceByItemId \"", item, "\""));
|
||||
_log.warning(StringUtil.concat("Config.load(): invalid config property -> PremiumDropChanceMultiplierByItemId \"", item, "\""));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
String[] premiumDropAmountMultiplier = CustomSettings.getString("PremiumRateDropAmountByItemId", "").split(";");
|
||||
PREMIUM_RATE_DROP_AMOUNT_BY_ID = new HashMap<>(premiumDropAmountMultiplier.length);
|
||||
String[] premiumDropAmountMultiplier = CustomSettings.getString("PremiumDropAmountMultiplierByItemId", "").split(";");
|
||||
PREMIUM_RATE_DROP_AMOUNT_MULTIPLIER = new HashMap<>(premiumDropAmountMultiplier.length);
|
||||
if (!premiumDropAmountMultiplier[0].isEmpty())
|
||||
{
|
||||
for (String item : premiumDropAmountMultiplier)
|
||||
@ -2662,19 +2661,19 @@ public final class Config
|
||||
String[] itemSplit = item.split(",");
|
||||
if (itemSplit.length != 2)
|
||||
{
|
||||
_log.warning(StringUtil.concat("Config.load(): invalid config property -> PremiumRateDropAmountByItemId \"", item, "\""));
|
||||
_log.warning(StringUtil.concat("Config.load(): invalid config property -> PremiumDropAmountMultiplierByItemId \"", item, "\""));
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
PREMIUM_RATE_DROP_AMOUNT_BY_ID.put(Integer.valueOf(itemSplit[0]), Float.valueOf(itemSplit[1]));
|
||||
PREMIUM_RATE_DROP_AMOUNT_MULTIPLIER.put(Integer.valueOf(itemSplit[0]), Float.valueOf(itemSplit[1]));
|
||||
}
|
||||
catch (NumberFormatException nfe)
|
||||
{
|
||||
if (!item.isEmpty())
|
||||
{
|
||||
_log.warning(StringUtil.concat("Config.load(): invalid config property -> PremiumRateDropAmountByItemId \"", item, "\""));
|
||||
_log.warning(StringUtil.concat("Config.load(): invalid config property -> PremiumDropAmountMultiplierByItemId \"", item, "\""));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ public interface IAmountMultiplierStrategy
|
||||
double multiplier = 1;
|
||||
|
||||
final Float dropChanceMultiplier = Config.RATE_DROP_AMOUNT_MULTIPLIER.get(item.getItemId());
|
||||
final Float premiumAmountMultiplier = Config.PREMIUM_RATE_DROP_AMOUNT_BY_ID.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;
|
||||
|
@ -58,7 +58,7 @@ public interface IChanceMultiplierStrategy
|
||||
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_BY_ID.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;
|
||||
|
Loading…
Reference in New Issue
Block a user