Some Premium system refactoring.
This commit is contained in:
		
							
								
								
									
										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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user