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

BETA: Changes:
* Minor changes to the `QuestManager`.
* Now `printSection(String s)` will print less "-" to accommodate the date and time.
* Reworking abstract `Event` class to support listeners and not require ID.
* Excluded `L2EventChestInstance` from cast checks, so bad skills can be casted on them inside peace zones and towns (where events are held).
* Now scripts (along with quests) will be notified for on enter event.
* L2EventChestInstance minor fixes.
* Prevent hate.
* Prevent flag.
* Fix "visible"/"invisible" status.

Reviewed by: UnAfraid

Zoey76 преди 11 години
родител
ревизия
cf5358cccf

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/GameServer.java

@@ -506,7 +506,7 @@ public class GameServer
 	public static void printSection(String s)
 	{
 		s = "=[ " + s + " ]";
-		while (s.length() < 78)
+		while (s.length() < 61)
 		{
 			s = "-" + s;
 		}

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/QuestManager.java

@@ -227,10 +227,9 @@ public final class QuestManager extends ScriptManager<Quest>
 		return false;
 	}
 	
-	@Override
-	public Iterable<Quest> getAllManagedScripts()
+	public Map<String, Quest> getQuests()
 	{
-		return _quests.values();
+		return _quests;
 	}
 	
 	@Override
@@ -250,6 +249,7 @@ public final class QuestManager extends ScriptManager<Quest>
 	 * Gets all the registered scripts.
 	 * @return all the scripts
 	 */
+	@Override
 	public Map<String, Quest> getScripts()
 	{
 		return _scripts;

+ 13 - 10
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2EventChestInstance.java

@@ -30,7 +30,6 @@ import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
  */
 public final class L2EventChestInstance extends L2EventMonsterInstance
 {
-	private final boolean _isVisible = false;
 	private boolean _isTriggered = false;
 	
 	public L2EventChestInstance(int objectId, L2NpcTemplate template)
@@ -46,15 +45,7 @@ public final class L2EventChestInstance extends L2EventMonsterInstance
 	
 	public boolean canSee(L2Character cha)
 	{
-		if (cha == null)
-		{
-			return false;
-		}
-		if (cha.isGM())
-		{
-			return true;
-		}
-		return _isVisible;
+		return (cha != null) && (cha.isGM() || !isInvisible());
 	}
 	
 	public void trigger()
@@ -112,4 +103,16 @@ public final class L2EventChestInstance extends L2EventMonsterInstance
 	{
 		return !canSee(attacker);
 	}
+	
+	@Override
+	public void reduceHate(L2Character target, int amount)
+	{
+		// Do nothing.
+	}
+	
+	@Override
+	public boolean isAttackable()
+	{
+		return false;
+	}
 }

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -9256,7 +9256,7 @@ public final class L2PcInstance extends L2Playable
 			}
 		}
 		
-		if ((targetPlayer != null) && (target != this) && !(isInDuel() && (targetPlayer.getDuelId() == getDuelId())) && !isInsideZone(ZoneId.PVP) && !targetPlayer.isInsideZone(ZoneId.PVP))
+		if (!(target instanceof L2EventChestInstance) && (targetPlayer != null) && (target != this) && !(isInDuel() && (targetPlayer.getDuelId() == getDuelId())) && !isInsideZone(ZoneId.PVP) && !targetPlayer.isInsideZone(ZoneId.PVP))
 		{
 			SkillUseHolder skilldat = getCurrentSkill();
 			SkillUseHolder skilldatpet = getCurrentPetSkill();

+ 18 - 24
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/transform/Transform.java

@@ -98,7 +98,7 @@ public final class Transform implements IIdentifiable
 	}
 	
 	/**
-	 * @return name that's going to be set to the player while is transformed with current transformation.
+	 * @return name that's going to be set to the player while is transformed with current transformation
 	 */
 	public String getName()
 	{
@@ -106,7 +106,7 @@ public final class Transform implements IIdentifiable
 	}
 	
 	/**
-	 * @return title that's going to be set to the player while is transformed with current transformation.
+	 * @return title that's going to be set to the player while is transformed with current transformation
 	 */
 	public String getTitle()
 	{
@@ -131,7 +131,7 @@ public final class Transform implements IIdentifiable
 	}
 	
 	/**
-	 * @return {@code true} if transform type is mode change, {@code false} otherwise.
+	 * @return {@code true} if transform type is mode change, {@code false} otherwise
 	 */
 	public boolean isStance()
 	{
@@ -139,7 +139,7 @@ public final class Transform implements IIdentifiable
 	}
 	
 	/**
-	 * @return {@code true} if transform type is combat, {@code false} otherwise.
+	 * @return {@code true} if transform type is combat, {@code false} otherwise
 	 */
 	public boolean isCombat()
 	{
@@ -147,7 +147,7 @@ public final class Transform implements IIdentifiable
 	}
 	
 	/**
-	 * @return {@code true} if transform type is non combat, {@code false} otherwise.
+	 * @return {@code true} if transform type is non combat, {@code false} otherwise
 	 */
 	public boolean isNonCombat()
 	{
@@ -155,7 +155,7 @@ public final class Transform implements IIdentifiable
 	}
 	
 	/**
-	 * @return {@code true} if transform type is flying, {@code false} otherwise.
+	 * @return {@code true} if transform type is flying, {@code false} otherwise
 	 */
 	public boolean isFlying()
 	{
@@ -163,7 +163,7 @@ public final class Transform implements IIdentifiable
 	}
 	
 	/**
-	 * @return {@code true} if transform type is cursed, {@code false} otherwise.
+	 * @return {@code true} if transform type is cursed, {@code false} otherwise
 	 */
 	public boolean isCursed()
 	{
@@ -171,7 +171,7 @@ public final class Transform implements IIdentifiable
 	}
 	
 	/**
-	 * @return {@code true} if transform type is raiding, {@code false} otherwise.
+	 * @return {@code true} if transform type is raiding, {@code false} otherwise
 	 */
 	public boolean isRiding()
 	{
@@ -179,7 +179,7 @@ public final class Transform implements IIdentifiable
 	}
 	
 	/**
-	 * @return {@code true} if transform type is pure stat, {@code false} otherwise.
+	 * @return {@code true} if transform type is pure stat, {@code false} otherwise
 	 */
 	public boolean isPureStats()
 	{
@@ -225,31 +225,25 @@ public final class Transform implements IIdentifiable
 			}
 			
 			// Add common skills.
-			if (!template.getSkills().isEmpty())
+			for (SkillHolder holder : template.getSkills())
 			{
-				for (SkillHolder holder : template.getSkills())
+				if (player.getSkillLevel(holder.getSkillId()) < holder.getSkillLvl())
 				{
-					if (player.getSkillLevel(holder.getSkillId()) < holder.getSkillLvl())
-					{
-						player.addSkill(holder.getSkill(), false);
-					}
-					player.addTransformSkill(holder.getSkillId());
+					player.addSkill(holder.getSkill(), false);
 				}
+				player.addTransformSkill(holder.getSkillId());
 			}
 			
 			// Add skills depending on level.
-			if (!template.getAdditionalSkills().isEmpty())
+			for (AdditionalSkillHolder holder : template.getAdditionalSkills())
 			{
-				for (AdditionalSkillHolder holder : template.getAdditionalSkills())
+				if (player.getLevel() >= holder.getMinLevel())
 				{
-					if (player.getLevel() >= holder.getMinLevel())
+					if (player.getSkillLevel(holder.getSkillId()) < holder.getSkillLvl())
 					{
-						if (player.getSkillLevel(holder.getSkillId()) < holder.getSkillLvl())
-						{
-							player.addSkill(holder.getSkill(), false);
-						}
-						player.addTransformSkill(holder.getSkillId());
+						player.addSkill(holder.getSkill(), false);
 					}
+					player.addTransformSkill(holder.getSkillId());
 				}
 			}
 			

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/olympiad/AbstractOlympiadGame.java

@@ -98,7 +98,7 @@ public abstract class AbstractOlympiadGame
 		sm.addInt(points);
 		broadcastPacket(sm);
 		
-		for (Quest quest : QuestManager.getInstance().getAllManagedScripts())
+		for (Quest quest : QuestManager.getInstance().getQuests().values())
 		{
 			if ((quest != null) && quest.isOlympiadUse())
 			{
@@ -115,7 +115,7 @@ public abstract class AbstractOlympiadGame
 		sm.addInt(points);
 		broadcastPacket(sm);
 		
-		for (Quest quest : QuestManager.getInstance().getAllManagedScripts())
+		for (Quest quest : QuestManager.getInstance().getQuests().values())
 		{
 			if ((quest != null) && quest.isOlympiadUse())
 			{

+ 6 - 9
L2J_Server_BETA/java/com/l2jserver/gameserver/model/quest/Event.java

@@ -19,23 +19,20 @@
 package com.l2jserver.gameserver.model.quest;
 
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.scripting.scriptengine.impl.L2Script;
 
 /**
+ * Abstract event class.
  * @author JIV
  */
-public abstract class Event extends Quest
+public abstract class Event extends L2Script
 {
-	/**
-	 * @param questId
-	 * @param name
-	 * @param descr
-	 */
-	public Event(int questId, String name, String descr)
+	public Event(String name, String descr)
 	{
-		super(questId, name, descr);
+		super(-1, name, descr);
 	}
 	
-	public abstract boolean eventStart();
+	public abstract boolean eventStart(L2PcInstance eventMaker);
 	
 	public abstract boolean eventStop();
 	

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

@@ -384,13 +384,23 @@ public class EnterWorld extends L2GameClientPacket
 			loadTutorial(activeChar);
 		}
 		
-		for (Quest quest : QuestManager.getInstance().getAllManagedScripts())
+		// Notify quests.
+		for (Quest quest : QuestManager.getInstance().getQuests().values())
 		{
 			if ((quest != null) && quest.getOnEnterWorld())
 			{
 				quest.notifyEnterWorld(activeChar);
 			}
 		}
+		// Notify scripts.
+		for (Quest quest : QuestManager.getInstance().getScripts().values())
+		{
+			if ((quest != null) && quest.getOnEnterWorld())
+			{
+				quest.notifyEnterWorld(activeChar);
+			}
+		}
+		
 		activeChar.sendPacket(new QuestList());
 		
 		if (Config.PLAYER_SPAWN_PROTECTION > 0)

+ 3 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/scripting/ScriptManager.java

@@ -18,13 +18,15 @@
  */
 package com.l2jserver.gameserver.scripting;
 
+import java.util.Map;
+
 /**
  * @author KenM
  * @param <S>
  */
 public abstract class ScriptManager<S extends ManagedScript>
 {
-	public abstract Iterable<S> getAllManagedScripts();
+	public abstract Map<String, S> getScripts();
 	
 	public boolean reload(S ms)
 	{