Преглед на файлове

Remove CharmOfLuck effect
Replace "PlayerXPPercentLost" config with xml file
playerXpPercentLost.xml
Proper method call when war start/end & clan create/delete
Update karma lost to HighFive
Fix exp need level 85 : 0% => Level 85 : 100%
Unhardcode few skills and add follow stats:
reduceExpLostByPvp
reduceExpLostByMob
reduceExpLostByRaid
reduceDeadPenaltyByPvp
reduceDeadPenaltyByMob
reduceDeadPenaltyByRaid

New stats fix follow skills:
(1325) Fortune of Noblesse
(1390) Clan Luck
(610) Residence Death Fortune
(840) Final Flying Form
(841) Aura Bird - Falcon
(842) Aura Bird - Owl
(2168) Raid Blessing
(3608) Apella Heavy Armor Set
(3609) Apella Light Armor Set
(3610) Apella Robe Set
(5982) Aura Bird - Falcon
(5983) Aura Bird - Owl
Now they properly reduce exp lose on dead from Monster, Raid or Pvp and
reduce chance for Death Penalty on dead.
Require DP!

Reviewed by: @NosBit
Thanks to: @NosBit

Zealar преди 10 години
родител
ревизия
7c6d77cdd5

+ 0 - 14
L2J_Server/dist/game/config/Rates.properties

@@ -123,20 +123,6 @@ PlayerRateDropEquip = 0
 # in %
 PlayerRateDropEquipWeapon = 0
 
-# ---------------------------------------------------------------------------
-# Player XP % lost on death.
-# ---------------------------------------------------------------------------
-
-# Must be defined an interval per each % following this:
-# [limit1m,limit1M]-val1;[limit2m,limit2M]-val2;...
-# For undefined intervals, default value is 1.0 .
-# Example (Default settings):
-# 0,39-7.0;40,75-4.0;76,76-2.5;77,77-2.0;78,78-1.5
-# This will set 7.0 from 0 to 39 (included), 4.00 from 40 to 75 (included),
-# 2.5 to 76, 2.0 to 77 and 1.5 to 78
-# XP loss is affected by clan luck in core
-PlayerXPPercentLost = 0,39-7.0;40,75-4.0;76,76-2.5;77,77-2.0;78,78-1.5
-
 # Default: 10
 KarmaDropLimit = 10
 

+ 0 - 39
L2J_Server/java/com/l2jserver/Config.java

@@ -890,7 +890,6 @@ public final class Config
 	public static int KARMA_RATE_DROP_ITEM;
 	public static int KARMA_RATE_DROP_EQUIP;
 	public static int KARMA_RATE_DROP_EQUIP_WEAPON;
-	public static double[] PLAYER_XP_PERCENT_LOST;
 	
 	// --------------------------------------------------
 	// Seven Signs Settings
@@ -2102,44 +2101,6 @@ public final class Config
 			KARMA_RATE_DROP_EQUIP = RatesSettings.getInt("KarmaRateDropEquip", 40);
 			KARMA_RATE_DROP_EQUIP_WEAPON = RatesSettings.getInt("KarmaRateDropEquipWeapon", 10);
 			
-			// Initializing table
-			PLAYER_XP_PERCENT_LOST = new double[Byte.MAX_VALUE + 1];
-			
-			// Default value
-			for (int i = 0; i <= Byte.MAX_VALUE; i++)
-			{
-				PLAYER_XP_PERCENT_LOST[i] = 1.;
-			}
-			
-			// Now loading into table parsed values
-			try
-			{
-				String[] values = RatesSettings.getString("PlayerXPPercentLost", "0,39-7.0;40,75-4.0;76,76-2.5;77,77-2.0;78,78-1.5").split(";");
-				
-				for (String s : values)
-				{
-					int min;
-					int max;
-					double val;
-					
-					String[] vals = s.split("-");
-					String[] mM = vals[0].split(",");
-					
-					min = Integer.parseInt(mM[0]);
-					max = Integer.parseInt(mM[1]);
-					val = Double.parseDouble(vals[1]);
-					
-					for (int i = min; i <= max; i++)
-					{
-						PLAYER_XP_PERCENT_LOST[i] = val;
-					}
-				}
-			}
-			catch (Exception e)
-			{
-				_log.log(Level.WARNING, "Error while loading Player XP percent lost!", e);
-			}
-			
 			RATE_DEATH_DROP_AMOUNT_MULTIPLIER = RatesSettings.getFloat("DeathDropAmountMultiplier", 1);
 			RATE_CORPSE_DROP_AMOUNT_MULTIPLIER = RatesSettings.getFloat("CorpseDropAmountMultiplier", 1);
 			RATE_HERB_DROP_AMOUNT_MULTIPLIER = RatesSettings.getFloat("HerbDropAmountMultiplier", 1);

+ 2 - 0
L2J_Server/java/com/l2jserver/gameserver/GameServer.java

@@ -74,6 +74,7 @@ import com.l2jserver.gameserver.datatables.NpcData;
 import com.l2jserver.gameserver.datatables.OfflineTradersTable;
 import com.l2jserver.gameserver.datatables.OptionsData;
 import com.l2jserver.gameserver.datatables.PetDataTable;
+import com.l2jserver.gameserver.datatables.PlayerXpPercentLostData;
 import com.l2jserver.gameserver.datatables.RecipeData;
 import com.l2jserver.gameserver.datatables.SecondaryAuthData;
 import com.l2jserver.gameserver.datatables.SiegeScheduleData;
@@ -235,6 +236,7 @@ public class GameServer
 		InitialEquipmentData.getInstance();
 		InitialShortcutData.getInstance();
 		ExperienceTable.getInstance();
+		PlayerXpPercentLostData.getInstance();
 		KarmaData.getInstance();
 		HitConditionBonus.getInstance();
 		CharTemplateTable.getInstance();

+ 90 - 0
L2J_Server/java/com/l2jserver/gameserver/datatables/PlayerXpPercentLostData.java

@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2004-2014 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.datatables;
+
+import java.util.Arrays;
+
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+import com.l2jserver.gameserver.engines.DocumentParser;
+
+/**
+ * This class holds the Player Xp Percent Lost Data for each level for players.
+ * @author Zealar
+ */
+public final class PlayerXpPercentLostData extends DocumentParser
+{
+	private final double[] _playerXpPercentLost = new double[Byte.MAX_VALUE + 1];
+	
+	protected PlayerXpPercentLostData()
+	{
+		Arrays.fill(_playerXpPercentLost, 1.);
+		load();
+	}
+	
+	@Override
+	public void load()
+	{
+		parseDatapackFile("data/stats/chars/playerXpPercentLost.xml");
+	}
+	
+	@Override
+	protected void parseDocument()
+	{
+		for (Node n = getCurrentDocument().getFirstChild(); n != null; n = n.getNextSibling())
+		{
+			if ("list".equalsIgnoreCase(n.getNodeName()))
+			{
+				for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
+				{
+					if ("xpLost".equalsIgnoreCase(d.getNodeName()))
+					{
+						NamedNodeMap attrs = d.getAttributes();
+						_playerXpPercentLost[parseInteger(attrs, "level")] = parseDouble(attrs, "val");
+					}
+				}
+			}
+		}
+	}
+	
+	public double getXpPercent(final int level)
+	{
+		if (level > Byte.MAX_VALUE)
+		{
+			_log.warning("Require to hight level inside PlayerXpPercentLostData (" + level + ")");
+			return _playerXpPercentLost[Byte.MAX_VALUE];
+		}
+		return _playerXpPercentLost[level];
+	}
+	
+	/**
+	 * Gets the single instance of PlayerXpPercentLostData.
+	 * @return single instance of PlayerXpPercentLostData.
+	 */
+	public static PlayerXpPercentLostData getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
+	private static class SingletonHolder
+	{
+		protected static final PlayerXpPercentLostData _instance = new PlayerXpPercentLostData();
+	}
+}

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/model/L2Clan.java

@@ -2544,7 +2544,7 @@ public class L2Clan implements IIdentifiable, INamable
 		updateClanInDB();
 		
 		// The clan leader should take the XP penalty of a full death.
-		player.deathPenalty(false, false, false);
+		player.increaseDeathPenaltyBuffLevel();
 	}
 	
 	public boolean levelUpClan(L2PcInstance player)

+ 28 - 0
L2J_Server/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -60,6 +60,7 @@ import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.model.CharEffectList;
 import com.l2jserver.gameserver.model.L2AccessLevel;
+import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2Party;
 import com.l2jserver.gameserver.model.L2World;
@@ -6734,6 +6735,33 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 		return 0;
 	}
 	
+	/**
+	 * Dummy method overriden in {@link L2PcInstance}
+	 * @return the clan of current character.
+	 */
+	public L2Clan getClan()
+	{
+		return null;
+	}
+	
+	/**
+	 * Dummy method overriden in {@link L2PcInstance}
+	 * @return {@code true} if player is in academy, {@code false} otherwise.
+	 */
+	public boolean isAcademyMember()
+	{
+		return false;
+	}
+	
+	/**
+	 * Dummy method overriden in {@link L2PcInstance}
+	 * @return the pledge type of current character.
+	 */
+	public int getPledgeType()
+	{
+		return 0;
+	}
+	
 	/**
 	 * Dummy method overriden in {@link L2PcInstance}
 	 * @return the alliance id of current character.

+ 0 - 14
L2J_Server/java/com/l2jserver/gameserver/model/actor/L2Playable.java

@@ -131,11 +131,6 @@ public abstract class L2Playable extends L2Character
 		// Stop HP/MP/CP Regeneration task
 		getStatus().stopHpMpRegeneration();
 		
-		if (isCharmOfLuckAffected())
-		{
-			stopEffects(L2EffectType.CHARM_OF_LUCK);
-		}
-		
 		boolean deleteBuffs = true;
 		
 		if (isNoblesseBlessedAffected())
@@ -314,15 +309,6 @@ public abstract class L2Playable extends L2Character
 		return isAffected(EffectFlag.PROTECTION_BLESSING);
 	}
 	
-	/**
-	 * Charm of Luck - During a Raid/Boss war, decreased chance for death penalty.
-	 * @return
-	 */
-	public final boolean isCharmOfLuckAffected()
-	{
-		return isAffected(EffectFlag.CHARM_OF_LUCK);
-	}
-	
 	@Override
 	public void updateEffectIcons(boolean partyOnly)
 	{

+ 69 - 93
L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -80,6 +80,7 @@ import com.l2jserver.gameserver.datatables.HennaData;
 import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.datatables.NpcData;
 import com.l2jserver.gameserver.datatables.PetDataTable;
+import com.l2jserver.gameserver.datatables.PlayerXpPercentLostData;
 import com.l2jserver.gameserver.datatables.RecipeData;
 import com.l2jserver.gameserver.datatables.SkillData;
 import com.l2jserver.gameserver.datatables.SkillTreesData;
@@ -5215,11 +5216,12 @@ public final class L2PcInstance extends L2Playable
 			}
 			else
 			{
+				final boolean insidePvpZone = isInsideZone(ZoneId.PVP) || isInsideZone(ZoneId.SIEGE);
 				if ((pk == null) || !pk.isCursedWeaponEquipped())
 				{
 					onDieDropItem(killer); // Check if any item should be dropped
 					
-					if (!(isInsideZone(ZoneId.PVP) && !isInsideZone(ZoneId.SIEGE)))
+					if (!insidePvpZone)
 					{
 						if ((pk != null) && (pk.getClan() != null) && (getClan() != null) && !isAcademyMember() && !(pk.isAcademyMember()))
 						{
@@ -5241,19 +5243,10 @@ public final class L2PcInstance extends L2Playable
 							}
 						}
 					}
-					
-					if (Config.ALT_GAME_DELEVEL)
+					// If player is Lucky shouldn't get penalized.
+					if (!isLucky() && !insidePvpZone)
 					{
-						// If player is Lucky shouldn't get penalized.
-						if (!isLucky())
-						{
-							// Reduce the Experience of the L2PcInstance in function of the calculated Death Penalty
-							// NOTE: deathPenalty +- Exp will update karma
-							// Penalty is lower if the player is at war with the pk (war has to be declared)
-							final boolean siegeNpc = (killer instanceof L2DefenderInstance) || (killer instanceof L2FortCommanderInstance);
-							final boolean atWar = (pk != null) && (getClan() != null) && (getClan().isAtWarWith(pk.getClanId()));
-							deathPenalty(atWar, (pk != null), siegeNpc);
-						}
+						calculateDeathExpPenalty(killer, atWarWith(pk));
 					}
 				}
 			}
@@ -5597,70 +5590,32 @@ public final class L2PcInstance extends L2Playable
 	}
 	
 	/**
-	 * Reduce the Experience (and level if necessary) of the L2PcInstance in function of the calculated Death Penalty. <B><U> Actions</U> :</B> <li>Calculate the Experience loss</li> <li>Set the value of _expBeforeDeath</li> <li>Set the new Experience value of the L2PcInstance and Decrease its level
-	 * if necessary</li> <li>Send a Server->Client StatusUpdate packet with its new Experience</li>
-	 * @param atwar
-	 * @param killed_by_pc
-	 * @param killed_by_siege_npc
+	 * Reduce the Experience (and level if necessary) of the L2PcInstance in function of the calculated Death Penalty.<BR>
+	 * <B><U> Actions</U> :</B> <li>Calculate the Experience loss</li> <li>Set the value of _expBeforeDeath</li> <li>Set the new Experience value of the L2PcInstance and Decrease its level if necessary</li> <li>Send a Server->Client StatusUpdate packet with its new Experience</li>
+	 * @param killer
+	 * @param atWar
 	 */
-	public void deathPenalty(boolean atwar, boolean killed_by_pc, boolean killed_by_siege_npc)
+	public void calculateDeathExpPenalty(L2Character killer, boolean atWar)
 	{
-		// TODO Need Correct Penalty
-		// Get the level of the L2PcInstance
 		final int lvl = getLevel();
+		double percentLost = PlayerXpPercentLostData.getInstance().getXpPercent(getLevel());
 		
-		int clan_luck = getSkillLevel(CommonSkill.CLAN_LUCK.getId());
-		
-		double clan_luck_modificator = 1.0;
-		
-		if (!killed_by_pc)
+		if (killer.isRaid())
 		{
-			switch (clan_luck)
-			{
-				case 3:
-					clan_luck_modificator = 0.8;
-					break;
-				case 2:
-					clan_luck_modificator = 0.8;
-					break;
-				case 1:
-					clan_luck_modificator = 0.88;
-					break;
-				default:
-					clan_luck_modificator = 1.0;
-					break;
-			}
+			percentLost *= calcStat(Stats.REDUCE_EXP_LOST_BY_RAID, 1, null, null);
 		}
-		else
+		else if (killer.isMonster())
 		{
-			switch (clan_luck)
-			{
-				case 3:
-					clan_luck_modificator = 0.5;
-					break;
-				case 2:
-					clan_luck_modificator = 0.5;
-					break;
-				case 1:
-					clan_luck_modificator = 0.5;
-					break;
-				default:
-					clan_luck_modificator = 1.0;
-					break;
-			}
+			percentLost *= calcStat(Stats.REDUCE_EXP_LOST_BY_MOB, 1, null, null);
 		}
-		
-		// The death steal you some Exp
-		double percentLost = Config.PLAYER_XP_PERCENT_LOST[getLevel()] * clan_luck_modificator;
-		
-		if (getKarma() > 0)
+		else if (killer.isPlayable())
 		{
-			percentLost *= Config.RATE_KARMA_EXP_LOST;
+			percentLost *= calcStat(Stats.REDUCE_EXP_LOST_BY_PVP, 1, null, null);
 		}
 		
-		if (isFestivalParticipant() || atwar)
+		if (getKarma() > 0)
 		{
-			percentLost /= 4.0;
+			percentLost *= Config.RATE_KARMA_EXP_LOST;
 		}
 		
 		// Calculate the Experience loss
@@ -5677,29 +5632,13 @@ public final class L2PcInstance extends L2Playable
 			}
 		}
 		
-		// Get the Experience before applying penalty
-		setExpBeforeDeath(getExp());
-		
-		// No xp loss inside pvp zone unless
-		// - it's a siege zone and you're NOT participating
-		// - you're killed by a non-pc whose not belong to the siege
-		if (isInsideZone(ZoneId.PVP))
+		if (isFestivalParticipant() || atWar)
 		{
-			// No xp loss for siege participants inside siege zone
-			if (isInsideZone(ZoneId.SIEGE))
-			{
-				if (isInSiege() && (killed_by_pc || killed_by_siege_npc))
-				{
-					lostExp = 0;
-				}
-			}
-			else if (killed_by_pc)
-			{
-				lostExp = 0;
-			}
+			lostExp /= 4.0;
 		}
 		
-		// Set the new Experience value of the L2PcInstance
+		setExpBeforeDeath(getExp());
+		
 		getStat().addExp(-lostExp);
 	}
 	
@@ -6120,6 +6059,7 @@ public final class L2PcInstance extends L2Playable
 	/**
 	 * @return the _clan object of the L2PcInstance.
 	 */
+	@Override
 	public L2Clan getClan()
 	{
 		return _clan;
@@ -9460,6 +9400,7 @@ public final class L2PcInstance extends L2Playable
 		_pledgeType = typeId;
 	}
 	
+	@Override
 	public int getPledgeType()
 	{
 		return _pledgeType;
@@ -9947,6 +9888,7 @@ public final class L2PcInstance extends L2Playable
 		return _lvlJoinedAcademy;
 	}
 	
+	@Override
 	public boolean isAcademyMember()
 	{
 		return _lvlJoinedAcademy > 0;
@@ -12378,14 +12320,30 @@ public final class L2PcInstance extends L2Playable
 	
 	public void calculateDeathPenaltyBuffLevel(L2Character killer)
 	{
-		if ((getKarma() > 0) || (Rnd.get(1, 100) <= Config.DEATH_PENALTY_CHANCE))
+		if (isResurrectSpecialAffected() || isLucky() || isBlockedFromDeathPenalty() || isInsideZone(ZoneId.PVP) || isInsideZone(ZoneId.SIEGE) || canOverrideCond(PcCondOverride.DEATH_PENALTY))
+		{
+			return;
+		}
+		double percent = 1.0;
+		
+		if (killer.isRaid())
+		{
+			percent *= calcStat(Stats.REDUCE_EXP_LOST_BY_RAID, 1, null, null);
+		}
+		else if (killer.isMonster())
 		{
-			if (!(killer.getActingPlayer() != null) && !(canOverrideCond(PcCondOverride.DEATH_PENALTY)))
+			percent *= calcStat(Stats.REDUCE_EXP_LOST_BY_MOB, 1, null, null);
+		}
+		else if (killer.isPlayable())
+		{
+			percent *= calcStat(Stats.REDUCE_EXP_LOST_BY_PVP, 1, null, null);
+		}
+		
+		if (Rnd.get(1, 100) <= ((Config.DEATH_PENALTY_CHANCE) * percent))
+		{
+			if (!killer.isPlayable() || (getKarma() > 0))
 			{
-				if (!(isCharmOfLuckAffected() && killer.isRaid()) && !isResurrectSpecialAffected() && !isLucky() && !isBlockedFromDeathPenalty() && !(isInsideZone(ZoneId.PVP) || isInsideZone(ZoneId.SIEGE)))
-				{
-					increaseDeathPenaltyBuffLevel();
-				}
+				increaseDeathPenaltyBuffLevel();
 			}
 		}
 	}
@@ -12406,9 +12364,7 @@ public final class L2PcInstance extends L2Playable
 				removeSkill(skill, true);
 			}
 		}
-		
 		_deathPenaltyBuffLevel++;
-		
 		addSkill(SkillData.getInstance().getSkill(5076, getDeathPenaltyBuffLevel()), false);
 		sendPacket(new EtcStatusUpdate(this));
 		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.DEATH_PENALTY_LEVEL_S1_ADDED);
@@ -14341,4 +14297,24 @@ public final class L2PcInstance extends L2Playable
 		return _hasCharmOfCourage;
 		
 	}
+	
+	/**
+	 * @param target the target
+	 * @return {@code true} if this player got war with the target, {@code false} otherwise.
+	 */
+	public boolean atWarWith(L2Playable target)
+	{
+		if (target == null)
+		{
+			return false;
+		}
+		if ((_clan != null) && !isAcademyMember()) // Current player
+		{
+			if ((target.getClan() != null) && !target.isAcademyMember()) // Target player
+			{
+				return _clan.isAtWarWith(target.getClan());
+			}
+		}
+		return false;
+	}
 }

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2VillageMasterInstance.java

@@ -946,7 +946,7 @@ public class L2VillageMasterInstance extends L2NpcInstance
 		ClanTable.getInstance().scheduleRemoveClan(clan.getId());
 		
 		// The clan leader should take the XP penalty of a full death.
-		player.deathPenalty(false, false, false);
+		player.increaseDeathPenaltyBuffLevel();
 	}
 	
 	private static final void recoverClan(L2PcInstance player, int clanId)

+ 0 - 1
L2J_Server/java/com/l2jserver/gameserver/model/effects/EffectFlag.java

@@ -24,7 +24,6 @@ package com.l2jserver.gameserver.model.effects;
 public enum EffectFlag
 {
 	NONE,
-	CHARM_OF_LUCK,
 	RESURRECTION_SPECIAL,
 	NOBLESS_BLESSING,
 	SILENT_MOVE,

+ 0 - 1
L2J_Server/java/com/l2jserver/gameserver/model/skills/CommonSkill.java

@@ -46,7 +46,6 @@ public enum CommonSkill
 	LUCKY(194, 1),
 	EXPERTISE(239, 1),
 	CRYSTALLIZE(248, 1),
-	CLAN_LUCK(390, 1),
 	ONYX_BEAST_TRANSFORMATION(617, 1),
 	CREATE_COMMON(1320, 1),
 	DIVINE_INSPIRATION(1405, 1),

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/model/stats/Formulas.java

@@ -2104,7 +2104,7 @@ public final class Formulas
 		{
 			exp /= Config.RATE_KARMA_LOST;
 		}
-		return (int) ((Math.abs(exp) / karmaLooseMul) / 15);
+		return (int) ((Math.abs(exp) / karmaLooseMul) / 30);
 	}
 	
 	/**

+ 8 - 0
L2J_Server/java/com/l2jserver/gameserver/model/stats/Stats.java

@@ -182,6 +182,14 @@ public enum Stats
 	// Souls
 	MAX_SOULS("maxSouls"),
 	
+	REDUCE_EXP_LOST_BY_PVP("reduceExpLostByPvp"),
+	REDUCE_EXP_LOST_BY_MOB("reduceExpLostByMob"),
+	REDUCE_EXP_LOST_BY_RAID("reduceExpLostByRaid"),
+	
+	REDUCE_DEAD_PENALTY_BY_PVP("reduceDeadPenaltyByPvp"),
+	REDUCE_DEAD_PENALTY_BY_MOB("reduceDeadPenaltyByMob"),
+	REDUCE_DEAD_PENALTY_BY_RAID("reduceDeadPenaltyByRaid"),
+	
 	// Fishing
 	FISHING_EXPERTISE("fishingExpertise");
 	

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/network/clientpackets/RequestReplySurrenderPledgeWar.java

@@ -51,7 +51,7 @@ public final class RequestReplySurrenderPledgeWar extends L2GameClientPacket
 		
 		if (_answer == 1)
 		{
-			requestor.deathPenalty(false, false, false);
+			requestor.increaseDeathPenaltyBuffLevel();
 			ClanTable.getInstance().deleteclanswars(requestor.getClanId(), activeChar.getClanId());
 		}
 		else

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/network/clientpackets/RequestSurrenderPledgeWar.java

@@ -71,7 +71,7 @@ public final class RequestSurrenderPledgeWar extends L2GameClientPacket
 		SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_SURRENDERED_TO_THE_S1_CLAN);
 		msg.addString(_pledgeName);
 		activeChar.sendPacket(msg);
-		activeChar.deathPenalty(false, false, false);
+		activeChar.increaseDeathPenaltyBuffLevel();
 		ClanTable.getInstance().deleteclanswars(_clan.getId(), clan.getId());
 		// Zoey76: TODO: Implement or cleanup.
 		// L2PcInstance leader = L2World.getInstance().getPlayer(clan.getLeaderName());