Przeglądaj źródła

BETA: Configuration option for skill delete fee for Sub-Class and Transfer skills.
* Thanks Copyleft for noticing it.
* Some minor code refactoring.

Zoey76 13 lat temu
rodzic
commit
8c245c56fc

+ 11 - 0
L2J_Server_BETA/dist/game/config/Character.properties

@@ -156,6 +156,9 @@ AltShieldBlocks = False
 # Default: 10
 AltPerfectShieldBlockRate = 10
 
+# ---------------------------------------------------------------------------
+# Class, Sub-class and skill learning options
+# ---------------------------------------------------------------------------
 # Allow use of Event Managers for changing occupation without any quests.
 # Default: False
 AllowClassMasters = False
@@ -217,6 +220,14 @@ AltSubclassEverywhere = False
 # Default: False
 AltTransformationWithoutQuest = False
 
+# Fee to remove Transfer skills.
+# Default: 10000000
+FeeDeleteTransferSkills = 10000000
+
+# Fee to remove Sub-Class skills.
+# Default: 10000000
+FeeDeleteSubClassSkills = 10000000
+
 # ---------------------------------------------------------------------------
 # Summons configuration
 # ---------------------------------------------------------------------------

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

@@ -133,6 +133,8 @@ public final class Config
 	public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
 	public static boolean ALT_GAME_SUBCLASS_EVERYWHERE;
 	public static boolean ALLOW_TRANSFORM_WITHOUT_QUEST;
+	public static int FEE_DELETE_TRANSFER_SKILLS;
+	public static int FEE_DELETE_SUBCLASS_SKILLS;
 	public static boolean RESTORE_SERVITOR_ON_RECONNECT;
 	public static boolean RESTORE_PET_ON_RECONNECT;
 	public static int MAX_RUN_SPEED;
@@ -1575,6 +1577,8 @@ public final class Config
 					RESTORE_SERVITOR_ON_RECONNECT = Boolean.parseBoolean(Character.getProperty("RestoreServitorOnReconnect", "True"));
 					RESTORE_PET_ON_RECONNECT = Boolean.parseBoolean(Character.getProperty("RestorePetOnReconnect", "True"));
 					ALLOW_TRANSFORM_WITHOUT_QUEST = Boolean.parseBoolean(Character.getProperty("AltTransformationWithoutQuest", "False"));
+					FEE_DELETE_TRANSFER_SKILLS = Integer.parseInt(Character.getProperty("FeeDeleteTransferSkills", "10000000"));
+					FEE_DELETE_SUBCLASS_SKILLS = Integer.parseInt(Character.getProperty("FeeDeleteSubClassSkills", "10000000"));
 					ENABLE_VITALITY = Boolean.parseBoolean(Character.getProperty("EnableVitality", "True"));
 					RECOVER_VITALITY_ON_RECONNECT = Boolean.parseBoolean(Character.getProperty("RecoverVitalityOnReconnect", "True"));
 					STARTING_VITALITY_POINTS = Integer.parseInt(Character.getProperty("StartingVitalityPoints", "20000"));

+ 11 - 17
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2TrainerHealersInstance.java

@@ -18,6 +18,7 @@ import java.util.Collection;
 
 import javolution.util.FastList;
 
+import com.l2jserver.Config;
 import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.datatables.SkillTreesData;
 import com.l2jserver.gameserver.model.L2Skill;
@@ -26,7 +27,6 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.AcquireSkillList;
 import com.l2jserver.gameserver.network.serverpackets.AcquireSkillList.SkillType;
 import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
-import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
 
 /**
@@ -34,8 +34,6 @@ import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
  */
 public final class L2TrainerHealersInstance extends L2TrainerInstance
 {
-	private static final int feeDeleteTransferSkills = 10000000;
-	
 	public L2TrainerHealersInstance(int objectId, L2NpcTemplate template)
 	{
 		super(objectId, template);
@@ -61,8 +59,7 @@ public final class L2TrainerHealersInstance extends L2TrainerInstance
 	@Override
 	public void onBypassFeedback(L2PcInstance player, String command)
 	{
-		NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
-		
+		final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
 		if (command.equals("SkillTransfer_Learn"))
 		{
 			if (!getTemplate().canTeach(player.getClassId()))
@@ -70,7 +67,7 @@ public final class L2TrainerHealersInstance extends L2TrainerInstance
 				showNoTeachHtml(player);
 				return;
 			}
-			else if ((player.getLevel() < 76) || (player.getClassId().level() < 3))
+			if ((player.getLevel() < 76) || (player.getClassId().level() < 3))
 			{
 				html.setFile(player.getHtmlPrefix(), "data/html/trainer/skilltransfer/learn-lowlevel.htm");
 				player.sendPacket(html);
@@ -86,15 +83,15 @@ public final class L2TrainerHealersInstance extends L2TrainerInstance
 				player.sendPacket(html);
 				return;
 			}
-			else if ((player.getLevel() < 76) || (player.getClassId().level() < 3))
+			if ((player.getLevel() < 76) || (player.getClassId().level() < 3))
 			{
 				html.setFile(player.getHtmlPrefix(), "data/html/trainer/skilltransfer/cleanse-no.htm");
 				player.sendPacket(html);
 				return;
 			}
-			else if (player.getAdena() < feeDeleteTransferSkills)
+			if (player.getAdena() < Config.FEE_DELETE_TRANSFER_SKILLS)
 			{
-				player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CANNOT_RESET_SKILL_LINK_BECAUSE_NOT_ENOUGH_ADENA));
+				player.sendPacket(SystemMessageId.CANNOT_RESET_SKILL_LINK_BECAUSE_NOT_ENOUGH_ADENA);
 				return;
 			}
 			
@@ -105,7 +102,7 @@ public final class L2TrainerHealersInstance extends L2TrainerInstance
 				
 				for (L2SkillLearn s : skills)
 				{
-					L2Skill sk = player.getKnownSkill(s.getSkillId());
+					final L2Skill sk = player.getKnownSkill(s.getSkillId());
 					if (sk != null)
 					{
 						player.removeSkill(sk);
@@ -115,7 +112,7 @@ public final class L2TrainerHealersInstance extends L2TrainerInstance
 						}
 						else
 						{
-							_log.warning(L2TrainerHealersInstance.class.getSimpleName() + ": Transfer skill Id: " + s.getSkillId() + " doesn't have required items defined!");
+							_log.warning(getClass().getSimpleName() + ": Transfer skill Id: " + s.getSkillId() + " doesn't have required items defined!");
 						}
 						hasSkills = true;
 					}
@@ -124,8 +121,7 @@ public final class L2TrainerHealersInstance extends L2TrainerInstance
 				//Adena gets reduced once.
 				if (hasSkills)
 				{
-					player.reduceAdena("Cleanse", feeDeleteTransferSkills, this, true);
-					return;
+					player.reduceAdena("Cleanse", Config.FEE_DELETE_TRANSFER_SKILLS, this, true);
 				}
 			}
 			else
@@ -153,8 +149,7 @@ public final class L2TrainerHealersInstance extends L2TrainerInstance
 		
 		for (L2SkillLearn s : skills)
 		{
-			L2Skill sk = SkillTable.getInstance().getInfo(s.getSkillId(), s.getSkillLevel());
-			if (sk != null)
+			if (SkillTable.getInstance().getInfo(s.getSkillId(), s.getSkillLevel()) != null)
 			{
 				count++;
 				asl.addSkill(s.getSkillId(), s.getSkillLevel(), s.getSkillLevel(), s.getLevelUpSp(), 0);
@@ -167,7 +162,7 @@ public final class L2TrainerHealersInstance extends L2TrainerInstance
 		}
 		else
 		{
-			player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NO_MORE_SKILLS_TO_LEARN));
+			player.sendPacket(SystemMessageId.NO_MORE_SKILLS_TO_LEARN);
 		}
 	}
 	
@@ -185,7 +180,6 @@ public final class L2TrainerHealersInstance extends L2TrainerInstance
 			default:
 				itemId = -1;
 		}
-		
 		return (player.getInventory().getInventoryItemCount(itemId, -1) > 0);
 	}
 }

+ 7 - 9
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2TransformManagerInstance.java

@@ -41,7 +41,6 @@ import com.l2jserver.gameserver.util.Util;
  */
 public final class L2TransformManagerInstance extends L2MerchantInstance
 {
-	private static final int feeDeleteSubClassSkills = 10000000;
 	private static final String htmlFolder = "data/html/masterTransformation/";
 	
 	public static final String[] _questVarNames =
@@ -77,7 +76,7 @@ public final class L2TransformManagerInstance extends L2MerchantInstance
 			}
 			else
 			{
-				NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+				final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
 				html.setFile(player.getHtmlPrefix(), htmlFolder + "master_transformation003.htm");
 				player.sendPacket(html);
 			}
@@ -140,7 +139,7 @@ public final class L2TransformManagerInstance extends L2MerchantInstance
 			{
 				html.setFile(player.getHtmlPrefix(), htmlFolder + "master_transformation008.htm");
 			}
-			else if (player.getAdena() < feeDeleteSubClassSkills)
+			else if (player.getAdena() < Config.FEE_DELETE_SUBCLASS_SKILLS)
 			{
 				html.setFile(player.getHtmlPrefix(), htmlFolder + "master_transformation008no.htm");
 			}
@@ -226,7 +225,7 @@ public final class L2TransformManagerInstance extends L2MerchantInstance
 							}
 						}
 					}
-					st.takeItems(57, 10000000);
+					st.takeItems(57, Config.FEE_DELETE_SUBCLASS_SKILLS);
 					html.setFile(player.getHtmlPrefix(), htmlFolder + "master_transformation009no.htm");
 					player.sendSkillList();
 				}
@@ -238,7 +237,7 @@ public final class L2TransformManagerInstance extends L2MerchantInstance
 					itemInstance = player.getInventory().getItemByItemId(itemId);
 					if (itemInstance != null)
 					{
-						_log.warning(L2TransformManagerInstance.class.getName() + ": player " + player + " had 'extra' certification skill books while cancelling sub-class certifications!");
+						_log.warning(getClass().getName() + ": player " + player + " had 'extra' certification skill books while cancelling sub-class certifications!");
 						player.destroyItem("CancelCertificationExtraBooks", itemInstance, this, false);
 					}
 				}
@@ -280,8 +279,7 @@ public final class L2TransformManagerInstance extends L2MerchantInstance
 		
 		for (L2SkillLearn s : skills)
 		{
-			final L2Skill sk = SkillTable.getInstance().getInfo(s.getSkillId(), s.getSkillLevel());
-			if (sk != null)
+			if (SkillTable.getInstance().getInfo(s.getSkillId(), s.getSkillLevel()) != null)
 			{
 				counts++;
 				asl.addSkill(s.getSkillId(), s.getSkillLevel(), s.getSkillLevel(), s.getLevelUpSp(), 0);
@@ -294,13 +292,13 @@ public final class L2TransformManagerInstance extends L2MerchantInstance
 			if (minlevel > 0)
 			{
 				//No more skills to learn, come back when you level.
-				SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.DO_NOT_HAVE_FURTHER_SKILLS_TO_LEARN_S1);
+				final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.DO_NOT_HAVE_FURTHER_SKILLS_TO_LEARN_S1);
 				sm.addNumber(minlevel);
 				player.sendPacket(sm);
 			}
 			else
 			{
-				player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NO_MORE_SKILLS_TO_LEARN));
+				player.sendPacket(SystemMessageId.NO_MORE_SKILLS_TO_LEARN);
 			}
 		}
 		else