Răsfoiți Sursa

BETA: Adding configuration to change the rate of dropping karma when receiving exp.
* Suggested by: lion

Rumen Nikiforov 11 ani în urmă
părinte
comite
82aae51abd

+ 4 - 0
L2J_Server_BETA/dist/game/config/Rates.properties

@@ -22,6 +22,10 @@ RateDropItems = 1
 RateRaidDropItems = 1
 RateDropSpoil = 1
 RateDropManor = 1
+# Karma decreasing rate
+# Note: -1 means RateXp so it means it will use retail rate for decreasing karma upon death or receiving exp by farming mobs.
+# Default: -1
+RateKarmaLost = -1
 RateKarmaExpLost = 1
 RateSiegeGuardsPrice = 1
 

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/Config.java

@@ -871,6 +871,7 @@ public final class Config
 	public static float RATE_QUEST_REWARD_RECIPE;
 	public static float RATE_QUEST_REWARD_MATERIAL;
 	public static Map<Integer, Float> RATE_DROP_ITEMS_ID;
+	public static float RATE_KARMA_LOST;
 	public static float RATE_KARMA_EXP_LOST;
 	public static float RATE_SIEGE_GUARDS_PRICE;
 	public static float RATE_DROP_COMMON_HERBS;
@@ -2143,6 +2144,11 @@ public final class Config
 			RATE_VITALITY_LOST = RatesSettings.getFloat("RateVitalityLost", 1);
 			RATE_VITALITY_GAIN = RatesSettings.getFloat("RateVitalityGain", 1);
 			RATE_RECOVERY_ON_RECONNECT = RatesSettings.getFloat("RateRecoveryOnReconnect", 4);
+			RATE_KARMA_LOST = RatesSettings.getFloat("RateKarmaLost", -1);
+			if (RATE_KARMA_LOST == -1)
+			{
+				RATE_KARMA_LOST = RATE_XP;
+			}
 			RATE_KARMA_EXP_LOST = RatesSettings.getFloat("RateKarmaExpLost", 1);
 			RATE_SIEGE_GUARDS_PRICE = RatesSettings.getFloat("RateSiegeGuardsPrice", 1);
 			RATE_DROP_COMMON_HERBS = RatesSettings.getFloat("RateCommonHerbs", 1);

+ 4 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/stats/Formulas.java

@@ -2122,6 +2122,10 @@ public final class Formulas
 	public static int calculateKarmaLost(L2PcInstance player, long exp)
 	{
 		double karmaLooseMul = KarmaData.getInstance().getMultiplier(player.getLevel());
+		if (exp > 0) // Received exp
+		{
+			exp /= Config.RATE_KARMA_LOST;
+		}
 		return (int) ((Math.abs(exp) / karmaLooseMul) / 15);
 	}