Browse Source

BETA: Olympiad quests notifications

Rumen Nikiforov 13 years ago
parent
commit
e60789a9a2

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

@@ -24,6 +24,7 @@ import com.l2jserver.gameserver.datatables.HeroSkillTable;
 import com.l2jserver.gameserver.instancemanager.AntiFeedManager;
 import com.l2jserver.gameserver.instancemanager.CastleManager;
 import com.l2jserver.gameserver.instancemanager.FortManager;
+import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.model.L2ItemInstance;
 import com.l2jserver.gameserver.model.L2Party;
 import com.l2jserver.gameserver.model.L2Party.messageType;
@@ -34,6 +35,7 @@ import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
 import com.l2jserver.gameserver.model.entity.TvTEvent;
+import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.model.zone.type.L2OlympiadStadiumZone;
 import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.ExOlympiadMode;
@@ -94,6 +96,12 @@ public abstract class AbstractOlympiadGame
 		sm.addString(par.name);
 		sm.addNumber(points);
 		broadcastPacket(sm);
+		
+		for (Quest quest : QuestManager.getInstance().getAllManagedScripts())
+		{
+			if (quest != null && quest.isOlympiadUse())
+				quest.notifyOlympiadWin(par.player, getType());
+		}
 	}
 
 	protected final void removePointsFromParticipant(Participant par, int points)
@@ -103,6 +111,12 @@ public abstract class AbstractOlympiadGame
 		sm.addString(par.name);
 		sm.addNumber(points);
 		broadcastPacket(sm);
+		
+		for (Quest quest : QuestManager.getInstance().getAllManagedScripts())
+		{
+			if (quest != null && quest.isOlympiadUse())
+				quest.notifyOlympiadLoose(par.player, getType());
+		}
 	}
 
 	/**

+ 51 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/model/quest/Quest.java

@@ -45,6 +45,7 @@ import com.l2jserver.gameserver.model.actor.L2Trap;
 import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2TrapInstance;
+import com.l2jserver.gameserver.model.olympiad.CompetitionType;
 import com.l2jserver.gameserver.model.zone.L2ZoneType;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
@@ -77,6 +78,7 @@ public class Quest extends ManagedScript
 	private final byte _initialState = State.CREATED;
 	protected boolean _onEnterWorld = false;
 	private boolean _isCustom = false;
+	private boolean _isOlympiadUse = false;
 	// NOTE: questItemIds will be overridden by child classes.  Ideally, it should be
 	// protected instead of public.  However, quest scripts written in Jython will
 	// have trouble with protected, as Jython only knows private and public...
@@ -2002,6 +2004,24 @@ public class Quest extends ManagedScript
 		return _onEnterWorld;
 	}
 	
+	/**
+	 * @return true if the quest script is a custom quest.
+	 */
+	public boolean isCustomQuest()
+	{
+		return _isCustom;
+	}
+	
+	public void setOlympiadUse(boolean val)
+	{
+		_isOlympiadUse = val;
+	}
+	
+	public boolean isOlympiadUse()
+	{
+		return _isOlympiadUse;
+	}
+	
 	/**
 	 * @param val if true the quest script will be set as custom quest.
 	 */
@@ -2010,11 +2030,37 @@ public class Quest extends ManagedScript
 		_isCustom = val;
 	}
 	
-	/**
-	 * @return true if the quest script is a custom quest.
-	 */
-	public boolean isCustomQuest()
+	public final void notifyOlympiadWin(L2PcInstance winner, CompetitionType type)
 	{
-		return _isCustom;
+		try
+		{
+			onOlympiadWin(winner, type);
+		}
+		catch (Exception e)
+		{
+			showError(winner, e);
+		}
+	}
+	
+	public final void notifyOlympiadLoose(L2PcInstance looser, CompetitionType type)
+	{
+		try
+		{
+			onOlympiadLoose(looser, type);
+		}
+		catch (Exception e)
+		{
+			showError(looser, e);
+		}
+	}
+	
+	public void onOlympiadWin(L2PcInstance winner, CompetitionType type)
+	{
+		
+	}
+	
+	public void onOlympiadLoose(L2PcInstance winner, CompetitionType type)
+	{
+		
 	}
 }