Pārlūkot izejas kodu

Core side for [DP7024]. Thx Gnacik.

JIV 15 gadi atpakaļ
vecāks
revīzija
5a3c2a90c4

+ 2 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/olympiad/OlympiadGame.java

@@ -361,7 +361,8 @@ class OlympiadGame
 				player.stopAllEffectsExceptThoseThatLastThroughDeath();
 				player.clearSouls();
 				player.clearCharges();
-
+				if(player.getAgathionId() > 0)
+					player.setAgathionId(0);
 				if (player.getPet() != null)
 				{
 					L2Summon summon = player.getPet();

+ 5 - 0
L2_GameServer/java/com/l2jserver/gameserver/skills/DocumentBase.java

@@ -639,6 +639,11 @@ abstract class DocumentBase
                 }
             	cond = joinAnd(cond, new ConditionPlayerInstanceId(array));
 			}
+			else if ("agathionId".equalsIgnoreCase(a.getNodeName()))
+			{
+				int agathionId = Integer.decode(a.getNodeValue());
+				cond = joinAnd(cond, new ConditionPlayerAgathionId(agathionId));
+			}
 			else if ("cloakStatus".equalsIgnoreCase(a.getNodeName()))
 			{
 				int val = Integer.valueOf(a.getNodeValue());

+ 34 - 0
L2_GameServer/java/com/l2jserver/gameserver/skills/conditions/ConditionPlayerAgathionId.java

@@ -0,0 +1,34 @@
+/*
+ * This program 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.
+ * 
+ * This program 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.skills.conditions;
+
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.skills.Env;
+
+public class ConditionPlayerAgathionId extends Condition
+{
+	private final int _agathionId;
+
+	public ConditionPlayerAgathionId(int agathionId)
+	{
+		_agathionId = agathionId;
+	}
+
+	@Override
+	public boolean testImpl(Env env)
+	{
+		return ((L2PcInstance)env.player).getAgathionId() == _agathionId;
+	}
+}

+ 9 - 0
L2_GameServer/java/com/l2jserver/gameserver/skills/l2skills/L2SkillAgathion.java

@@ -18,6 +18,8 @@ import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2Skill;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.templates.StatsSet;
 
 public class L2SkillAgathion extends L2Skill 
@@ -37,6 +39,13 @@ public class L2SkillAgathion extends L2Skill
 			return;
 
 		L2PcInstance activeChar = (L2PcInstance)caster;
+		
+		if (activeChar.isInOlympiadMode())
+		{
+			activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_SKILL_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT));
+			return;
+		}
+		
 		activeChar.setAgathionId(_npcId);
 		activeChar.broadcastUserInfo();
 	}