2
0
Эх сурвалжийг харах

BETA: New GM Skills support:
* Configuration option to allow new GM Skills added on enter world.
* Now Area/Aura skills can be casted in pace zones if they aren't offensive.
* New skill set added to GMSkillTable.

Zoey76 13 жил өмнө
parent
commit
72e244e9f1

+ 7 - 1
L2J_Server_BETA/dist/game/config/General.properties

@@ -89,10 +89,16 @@ GMRestartFighting = True
 GMShowAnnouncerName = False
 
 # Give special skills for every GM
-# 7041-7064 (Master's Blessing)
+# 7029,7041-7064,7088-7096,23238-23249 (Master's Blessing)
 # Default: False
 GMGiveSpecialSkills = False
 
+# Give special aura skills for every GM
+# 7029,23238-23249,23253-23296 (Master's Blessing)
+# Default: False
+GMGiveSpecialAuraSkills = False
+
+
 # ---------------------------------------------------------------------------
 # Server Security
 # ---------------------------------------------------------------------------

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

@@ -409,6 +409,7 @@ public final class Config
 	public static boolean GM_RESTART_FIGHTING;
 	public static boolean GM_ANNOUNCER_NAME;
 	public static boolean GM_GIVE_SPECIAL_SKILLS;
+	public static boolean GM_GIVE_SPECIAL_AURA_SKILLS;
 	public static boolean BYPASS_VALIDATION;
 	public static boolean GAMEGUARD_ENFORCE;
 	public static boolean GAMEGUARD_PROHIBITACTION;
@@ -1834,6 +1835,7 @@ public final class Config
 					GM_RESTART_FIGHTING = Boolean.parseBoolean(General.getProperty("GMRestartFighting", "True"));
 					GM_ANNOUNCER_NAME = Boolean.parseBoolean(General.getProperty("GMShowAnnouncerName", "False"));
 					GM_GIVE_SPECIAL_SKILLS = Boolean.parseBoolean(General.getProperty("GMGiveSpecialSkills", "False"));
+					GM_GIVE_SPECIAL_AURA_SKILLS = Boolean.parseBoolean(General.getProperty("GMGiveSpecialAuraSkills", "False"));
 					BYPASS_VALIDATION = Boolean.parseBoolean(General.getProperty("BypassValidation", "True"));
 					GAMEGUARD_ENFORCE = Boolean.parseBoolean(General.getProperty("GameGuardEnforce", "False"));
 					GAMEGUARD_PROHIBITACTION = Boolean.parseBoolean(General.getProperty("GameGuardProhibitAction", "False"));

+ 25 - 14
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/GMSkillTable.java

@@ -16,21 +16,24 @@ package com.l2jserver.gameserver.datatables;
 
 import com.l2jserver.gameserver.model.L2Skill;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.util.Util;
 
 /**
- *
- * @author Gnacik
+ * @author Gnacik, Zoey76
  */
 public class GMSkillTable
 {
-	private static final L2Skill[] _gmSkills = new L2Skill[34];
-	private static final int[] _gmSkillsId = { 7029, 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049, 7050, 7051, 7052, 7053, 7054, 7055, 7056, 7057, 7058, 7059, 7060, 7061, 7062, 7063, 7064, 7088, 7089, 7090, 7091, 7092, 7093, 7094 ,7095, 7096 };
+	private static final L2Skill[] _gmSkills = new L2Skill[46];
+	private static final L2Skill[] _gmAuraSkills = new L2Skill[46];
+	private static final int[] _gmSkillsId = { 7029, 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049, 7050, 7051, 7052, 7053, 7054, 7055, 7056, 7057, 7058, 7059, 7060, 7061, 7062, 7063, 7064, 7088, 7089, 7090, 7091, 7092, 7093, 7094, 7095, 7096, 23238, 23239, 23240, 23241, 23242, 23243, 23244, 23245, 23246, 23247, 23248, 23249 };
+	private static final int[] _gmAuraSkillsId = { 7029, 23249, 23253, 23254, 23255, 23256, 23257, 23258, 23259, 23260, 23261, 23262, 23263, 23264, 23265, 23266, 23267, 23268, 23269, 23270, 23271, 23272, 23273, 23274, 23275, 23276, 23277, 23278, 23279, 23280, 23281, 23282, 23283, 23284, 23285, 23286, 23287, 23288, 23289, 23290, 23291, 23292, 23293, 23294, 23295, 23296 };
 	
 	private GMSkillTable()
 	{
 		for (int i = 0; i < _gmSkillsId.length; i++)
 		{
 			_gmSkills[i] = SkillTable.getInstance().getInfo(_gmSkillsId[i], 1);
+			_gmAuraSkills[i] = SkillTable.getInstance().getInfo(_gmAuraSkillsId[i], 1);
 		}
 	}
 	
@@ -44,25 +47,33 @@ public class GMSkillTable
 		return _gmSkills;
 	}
 	
+	public static L2Skill[] getGMAuraSkills()
+	{
+		return _gmAuraSkills;
+	}
+	
 	public static boolean isGMSkill(int skillid)
 	{
-		for (int id : _gmSkillsId)
+		return Util.contains(_gmSkillsId, skillid) || Util.contains(_gmAuraSkillsId, skillid);
+	}
+	
+	public void addSkills(L2PcInstance gmchar, boolean auraSkills)
+	{
+		final L2Skill[] skills = auraSkills ? getGMAuraSkills() : getGMSkills();
+		for (L2Skill s : skills)
 		{
-			if (id == skillid)
-			{
-				return true;
-			}
+			gmchar.addSkill(s, false); // Don't Save GM skills to database
 		}
-		
-		return false;
 	}
 	
-	public void addSkills(L2PcInstance gmchar)
+	public void switchSkills(L2PcInstance gmchar, boolean toAuraSkills)
 	{
-		for (L2Skill s : getGMSkills())
+		final L2Skill[] skills = toAuraSkills ? getGMSkills() : getGMAuraSkills();
+		for (L2Skill s : skills)
 		{
-			gmchar.addSkill(s, false); // Don't Save GM skills to database
+			gmchar.removeSkill(s, false); // Don't Save GM skills to database
 		}
+		addSkills(gmchar, toAuraSkills);
 	}
 	
 	@SuppressWarnings("synthetic-access")

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Skill.java

@@ -2426,7 +2426,7 @@ public abstract class L2Skill implements IChanceSkillTrigger
 						&& player.getSiegeSide() == targetPlayer.getSiegeSide())
 					return false;
 				
-				if (target.isInsideZone(L2Character.ZONE_PEACE))
+				if (skill.isOffensive() && target.isInsideZone(L2Character.ZONE_PEACE))
 					return false;
 				
 				if (player.isInParty() && targetPlayer.isInParty())

+ 4 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/EnterWorld.java

@@ -183,7 +183,10 @@ public class EnterWorld extends L2GameClientPacket
 				GmListTable.getInstance().addGm(activeChar, true);
 			
 			if (Config.GM_GIVE_SPECIAL_SKILLS)
-				GMSkillTable.getInstance().addSkills(activeChar);
+				GMSkillTable.getInstance().addSkills(activeChar, false);
+			
+			if (Config.GM_GIVE_SPECIAL_AURA_SKILLS)
+				GMSkillTable.getInstance().addSkills(activeChar, true);
 		}
 		
 		// Set dead status if applies