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.
|
# Enable premium system.
|
||||||
# Default: False
|
# Default: False
|
||||||
EnablePremiumSystem = True
|
EnablePremiumSystem = False
|
||||||
|
|
||||||
# Xp rate for premium players.
|
# Xp rate for premium players.
|
||||||
PremiumRateXp = 2
|
PremiumRateXp = 2
|
||||||
@ -704,18 +704,8 @@ PremiumRateSpoilAmount = 2
|
|||||||
|
|
||||||
# List of items affected by custom drop rate by id, used now for Adena rate too.
|
# List of items affected by custom drop rate by id, used now for Adena rate too.
|
||||||
# Usage: itemId1,multiplier1;itemId2,multiplier2;...
|
# Usage: itemId1,multiplier1;itemId2,multiplier2;...
|
||||||
PremiumRateDropChanceByItemId = 57,2
|
PremiumDropChanceMultiplierByItemId = 57,1
|
||||||
PremiumRateDropAmountByItemId = 57,2
|
PremiumDropAmountMultiplierByItemId = 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
|
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
@ -322,7 +322,7 @@ public class NpcViewMod implements IBypassHandler
|
|||||||
sb.append(item.getName());
|
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("</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>");
|
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 min = minMax.min;
|
||||||
final long max = minMax.max;
|
final long max = minMax.max;
|
||||||
if (min == 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("</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("<tr><td width=48 align=right valign=top><font color=\"LEVEL\">Amount:</font></td>");
|
||||||
sb.append("<td width=247 align=center>");
|
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 min = minMax.min;
|
||||||
final long max = minMax.max;
|
final long max = minMax.max;
|
||||||
|
@ -842,13 +842,12 @@ public final class Config
|
|||||||
public static boolean PREMIUM_SYSTEM_ENABLED;
|
public static boolean PREMIUM_SYSTEM_ENABLED;
|
||||||
public static float PREMIUM_RATE_XP;
|
public static float PREMIUM_RATE_XP;
|
||||||
public static float PREMIUM_RATE_SP;
|
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_CHANCE;
|
||||||
public static float PREMIUM_RATE_DROP_AMOUNT;
|
public static float PREMIUM_RATE_DROP_AMOUNT;
|
||||||
public static float PREMIUM_RATE_SPOIL_CHANCE;
|
public static float PREMIUM_RATE_SPOIL_CHANCE;
|
||||||
public static float PREMIUM_RATE_SPOIL_AMOUNT;
|
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_CHANCE_MULTIPLIER;
|
||||||
public static Map<Integer, Float> PREMIUM_RATE_DROP_AMOUNT_BY_ID;
|
public static Map<Integer, Float> PREMIUM_RATE_DROP_AMOUNT_MULTIPLIER;
|
||||||
public static boolean PC_BANG_ENABLED;
|
public static boolean PC_BANG_ENABLED;
|
||||||
public static int PC_BANG_MAX_POINTS;
|
public static int PC_BANG_MAX_POINTS;
|
||||||
public static boolean PC_BANG_ENABLE_DOUBLE_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_DROP_AMOUNT = CustomSettings.getFloat("PremiumRateDropAmount", 2);
|
||||||
PREMIUM_RATE_SPOIL_CHANCE = CustomSettings.getFloat("PremiumRateSpoilChance", 1);
|
PREMIUM_RATE_SPOIL_CHANCE = CustomSettings.getFloat("PremiumRateSpoilChance", 1);
|
||||||
PREMIUM_RATE_SPOIL_AMOUNT = CustomSettings.getFloat("PremiumRateSpoilAmount", 2);
|
PREMIUM_RATE_SPOIL_AMOUNT = CustomSettings.getFloat("PremiumRateSpoilAmount", 2);
|
||||||
String[] premiumDropChanceMultiplier = CustomSettings.getString("PremiumRateDropChanceByItemId", "").split(";");
|
String[] premiumDropChanceMultiplier = CustomSettings.getString("PremiumDropChanceMultiplierByItemId", "").split(";");
|
||||||
PREMIUM_RATE_DROP_CHANCE_BY_ID = new HashMap<>(premiumDropChanceMultiplier.length);
|
PREMIUM_RATE_DROP_CHANCE_MULTIPLIER = new HashMap<>(premiumDropChanceMultiplier.length);
|
||||||
if (!premiumDropChanceMultiplier[0].isEmpty())
|
if (!premiumDropChanceMultiplier[0].isEmpty())
|
||||||
{
|
{
|
||||||
for (String item : premiumDropChanceMultiplier)
|
for (String item : premiumDropChanceMultiplier)
|
||||||
@ -2635,26 +2634,26 @@ public final class Config
|
|||||||
String[] itemSplit = item.split(",");
|
String[] itemSplit = item.split(",");
|
||||||
if (itemSplit.length != 2)
|
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
|
else
|
||||||
{
|
{
|
||||||
try
|
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)
|
catch (NumberFormatException nfe)
|
||||||
{
|
{
|
||||||
if (!item.isEmpty())
|
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(";");
|
String[] premiumDropAmountMultiplier = CustomSettings.getString("PremiumDropAmountMultiplierByItemId", "").split(";");
|
||||||
PREMIUM_RATE_DROP_AMOUNT_BY_ID = new HashMap<>(premiumDropAmountMultiplier.length);
|
PREMIUM_RATE_DROP_AMOUNT_MULTIPLIER = new HashMap<>(premiumDropAmountMultiplier.length);
|
||||||
if (!premiumDropAmountMultiplier[0].isEmpty())
|
if (!premiumDropAmountMultiplier[0].isEmpty())
|
||||||
{
|
{
|
||||||
for (String item : premiumDropAmountMultiplier)
|
for (String item : premiumDropAmountMultiplier)
|
||||||
@ -2662,19 +2661,19 @@ public final class Config
|
|||||||
String[] itemSplit = item.split(",");
|
String[] itemSplit = item.split(",");
|
||||||
if (itemSplit.length != 2)
|
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
|
else
|
||||||
{
|
{
|
||||||
try
|
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)
|
catch (NumberFormatException nfe)
|
||||||
{
|
{
|
||||||
if (!item.isEmpty())
|
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;
|
double multiplier = 1;
|
||||||
|
|
||||||
final Float dropChanceMultiplier = Config.RATE_DROP_AMOUNT_MULTIPLIER.get(item.getItemId());
|
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())
|
if (Config.PREMIUM_SYSTEM_ENABLED && (premiumAmountMultiplier != null) && (killer != null) && killer.isPlayer() && killer.getActingPlayer().hasPremiumStatus())
|
||||||
{
|
{
|
||||||
multiplier *= premiumAmountMultiplier;
|
multiplier *= premiumAmountMultiplier;
|
||||||
|
@ -58,7 +58,7 @@ public interface IChanceMultiplierStrategy
|
|||||||
multiplier *= item.getItemId() != Inventory.ADENA_ID ? Config.L2JMOD_CHAMPION_REWARDS : Config.L2JMOD_CHAMPION_ADENAS_REWARDS;
|
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 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())
|
if (Config.PREMIUM_SYSTEM_ENABLED && (premiumChanceMultiplier != null) && (killer != null) && killer.isPlayer() && killer.getActingPlayer().hasPremiumStatus())
|
||||||
{
|
{
|
||||||
multiplier *= premiumChanceMultiplier;
|
multiplier *= premiumChanceMultiplier;
|
||||||
|
Loading…
Reference in New Issue
Block a user