Explorar el Código

BETA: Core part for [DP10168]
* Reviewed by: Adry_85, Zoey76, !UnAfraid

St3eT hace 11 años
padre
commit
c88a7879ca

+ 0 - 527
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2CastleMagicianInstance.java

@@ -1,527 +0,0 @@
-/*
- * Copyright (C) 2004-2014 L2J Server
- * 
- * This file is part of L2J Server.
- * 
- * L2J Server 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.
- * 
- * L2J Server 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.model.actor.instance;
-
-import java.util.List;
-
-import com.l2jserver.Config;
-import com.l2jserver.gameserver.SevenSigns;
-import com.l2jserver.gameserver.datatables.SkillTable;
-import com.l2jserver.gameserver.datatables.SkillTreesData;
-import com.l2jserver.gameserver.enums.InstanceType;
-import com.l2jserver.gameserver.instancemanager.InstanceManager;
-import com.l2jserver.gameserver.model.L2SkillLearn;
-import com.l2jserver.gameserver.model.L2SquadTrainer;
-import com.l2jserver.gameserver.model.PcCondOverride;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
-import com.l2jserver.gameserver.model.base.AcquireSkillType;
-import com.l2jserver.gameserver.model.effects.L2EffectType;
-import com.l2jserver.gameserver.model.entity.TvTEvent;
-import com.l2jserver.gameserver.model.zone.ZoneId;
-import com.l2jserver.gameserver.network.SystemMessageId;
-import com.l2jserver.gameserver.network.serverpackets.AcquireSkillList;
-import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
-import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
-import com.l2jserver.util.Rnd;
-
-/**
- * @author Kerberos, ZaKaX
- */
-public class L2CastleMagicianInstance extends L2NpcInstance implements L2SquadTrainer
-{
-	protected static final int COND_ALL_FALSE = 0;
-	protected static final int COND_BUSY_BECAUSE_OF_SIEGE = 1;
-	protected static final int COND_OWNER = 2;
-	
-	/**
-	 * @param objectId
-	 * @param template
-	 */
-	public L2CastleMagicianInstance(int objectId, L2NpcTemplate template)
-	{
-		super(objectId, template);
-		setInstanceType(InstanceType.L2CastleMagicianInstance);
-	}
-	
-	@Override
-	public void showChatWindow(L2PcInstance player, int val)
-	{
-		player.sendPacket(ActionFailed.STATIC_PACKET);
-		String filename = "data/html/castlemagician/magician-no.htm";
-		
-		int condition = validateCondition(player);
-		if (condition > COND_ALL_FALSE)
-		{
-			if (condition == COND_BUSY_BECAUSE_OF_SIEGE)
-			{
-				filename = "data/html/castlemagician/magician-busy.htm"; // Busy because of siege
-			}
-			else if (condition == COND_OWNER) // Clan owns castle
-			{
-				if (val == 0)
-				{
-					filename = "data/html/castlemagician/magician.htm";
-				}
-				else
-				{
-					filename = "data/html/castlemagician/magician-" + val + ".htm";
-				}
-			}
-		}
-		
-		final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
-		html.setFile(player.getHtmlPrefix(), filename);
-		html.replace("%objectId%", String.valueOf(getObjectId()));
-		player.sendPacket(html);
-	}
-	
-	@Override
-	public void onBypassFeedback(L2PcInstance player, String command)
-	{
-		if (command.startsWith("Chat"))
-		{
-			int val = 0;
-			try
-			{
-				val = Integer.parseInt(command.substring(5));
-			}
-			catch (IndexOutOfBoundsException ioobe)
-			{
-			}
-			catch (NumberFormatException nfe)
-			{
-			}
-			showChatWindow(player, val);
-			return;
-		}
-		else if (command.startsWith("ExchangeKE"))
-		{
-			String filename = null;
-			int item;
-			int i0 = Rnd.get(100);
-			if (i0 < 5)
-			{
-				int i1 = Rnd.get(100);
-				if (i1 < 5)
-				{
-					item = 9931; // Red Talisman of Meditation
-				}
-				else if (i1 <= 50)
-				{
-					item = 9932; // Blue Talisman - Divine Protection
-				}
-				else if (i1 <= 75)
-				{
-					item = 10416; // Blue Talisman - Explosion
-				}
-				else
-				{
-					item = 10417; // Blue Talisman - Magic Explosion
-				}
-			}
-			else if (i0 <= 15)
-			{
-				switch (Rnd.get(5))
-				{
-					case 1: // Red Talisman of Minimum Clarity
-						item = 9917;
-						break;
-					case 2: // Red Talisman of Maximum Clarity
-						item = 9918;
-						break;
-					case 3: // Red Talisman of Mental Regeneration
-						item = 9928;
-						break;
-					case 4: // Blue Talisman of Protection
-						item = 9929;
-						break;
-					default: // Blue Talisman of Invisibility
-						item = 9920;
-						
-				}
-			}
-			else if (i0 <= 30)
-			{
-				switch (Rnd.get(8))
-				{
-					case 1: // Blue Talisman of Defense
-						item = 9916;
-						break;
-					case 2: // Blue Talisman of Defense
-						item = 9916;
-						break;
-					case 3: // Blue Talisman of Healing
-						item = 9924;
-						break;
-					case 4: // Red Talisman of Recovery
-						item = 9925;
-						break;
-					case 5: // Blue Talisman of Defense
-						item = 9926;
-						break;
-					case 6: // Blue Talisman of Magic Defense
-						item = 9927;
-						break;
-					case 7: // Red Talisman - Life Force
-						item = 10518;
-						break;
-					default: // Blue Talisman - Greater Healing
-						item = 10424;
-				}
-			}
-			else
-			{
-				switch (Rnd.get(46))
-				{
-					case 0: // Blue Talisman of Power
-						item = 9914;
-						break;
-					case 1: // Blue Talisman of Wild Magic
-						item = 9915;
-						break;
-					case 2: // Blue Talisman of Invisibility
-						item = 9920;
-						break;
-					case 3: // Blue Talisman of Invisibility
-						item = 9920;
-						break;
-					case 4: // Blue Talisman - Shield Protection
-						item = 9921;
-						break;
-					case 5: // Black Talisman - Mending
-						item = 9922;
-						break;
-					case 6: // Yellow Talisman of Power
-						item = 9933;
-						break;
-					case 7: // Yellow Talisman of Violent Haste
-						item = 9934;
-						break;
-					case 8: // Yellow Talisman of Arcane Defense
-						item = 9935;
-						break;
-					case 9: // Yellow Talisman of Arcane Power
-						item = 9936;
-						break;
-					case 10: // Yellow Talisman of Arcane Haste
-						item = 9937;
-						break;
-					case 11: // Yellow Talisman of Accuracy
-						item = 9938;
-						break;
-					case 12: // Yellow Talisman of Defense
-						item = 9939;
-						break;
-					case 13: // Yellow Talisman of Alacrity
-						item = 9940;
-						break;
-					case 14: // Yellow Talisman of Speed
-						item = 9941;
-						break;
-					case 15: // Yellow Talisman of Critical Reduction
-						item = 9942;
-						break;
-					case 16: // Yellow Talisman of Critical Damage
-						item = 9943;
-						break;
-					case 17: // Yellow Talisman of Critical Dodging
-						item = 9944;
-						break;
-					case 18: // Yellow Talisman of Evasion
-						item = 9945;
-						break;
-					case 19: // Yellow Talisman of Healing
-						item = 9946;
-						break;
-					case 20: // Yellow Talisman of CP Regeneration
-						item = 9947;
-						break;
-					case 21: // Yellow Talisman of Physical Regeneration
-						item = 9948;
-						break;
-					case 22: // Yellow Talisman of Mental Regeneration
-						item = 9949;
-						break;
-					case 23: // Grey Talisman of Weight Training
-						item = 9950;
-						break;
-					case 24: // White Talisman of Protection
-						item = 9965;
-						break;
-					case 25: // Orange Talisman - Hot Springs CP Potion
-						item = 9952;
-						break;
-					case 26: // Orange Talisman - Elixir of Life
-						item = 9953;
-						break;
-					case 27: // Orange Talisman - Elixir of Mental Strength
-						item = 9954;
-						break;
-					case 28: // Black Talisman - Vocalization
-						item = 9955;
-						break;
-					case 29: // Black Talisman - Arcane Freedom
-						item = 9956;
-						break;
-					case 30: // Black Talisman - Physical Freedom
-						item = 9957;
-						break;
-					case 31: // Black Talisman - Rescue
-						item = 9958;
-						break;
-					case 32: // Black Talisman - Free Speech
-						item = 9959;
-						break;
-					case 33: // White Talisman of Bravery
-						item = 9960;
-						break;
-					case 34: // White Talisman of Motion
-						item = 9961;
-						break;
-					case 35: // White Talisman of Grounding
-						item = 9962;
-						break;
-					case 36: // White Talisman of Attention
-						item = 9963;
-						break;
-					case 37: // White Talisman of Bandages
-						item = 9964;
-						break;
-					case 38: // White Talisman - Storm
-						item = 10418;
-						break;
-					case 39: // White Talisman - Water
-						item = 10420;
-						break;
-					case 40: // White Talisman - Earth
-						item = 10519;
-						break;
-					case 41: // White Talisman - Light
-						item = 10422;
-						break;
-					case 42: // Blue Talisman - Self-Destruction
-						item = 10423;
-						break;
-					case 43: // White Talisman - Darkness
-						item = 10419;
-						break;
-					default: // White Talisman - Fire
-						item = 10421;
-				}
-			}
-			
-			if (player.exchangeItemsById("ExchangeKE", this, 9912, 10, item, 1, true))
-			{
-				filename = "data/html/castlemagician/magician-KE-Exchange.htm";
-			}
-			else
-			{
-				filename = "data/html/castlemagician/magician-no-KE.htm";
-			}
-			
-			showChatWindow(player, filename);
-		}
-		else if (command.equals("gotoleader"))
-		{
-			if (player.getClan() != null)
-			{
-				final L2PcInstance clanLeader = player.getClan().getLeader().getPlayerInstance();
-				if (clanLeader == null)
-				{
-					return;
-				}
-				
-				if (clanLeader.getEffectList().getFirstEffect(L2EffectType.CLAN_GATE) != null)
-				{
-					if (!validateGateCondition(clanLeader, player))
-					{
-						return;
-					}
-					
-					player.teleToLocation(clanLeader.getX(), clanLeader.getY(), clanLeader.getZ(), false);
-					return;
-				}
-				showChatWindow(player, "data/html/castlemagician/magician-nogate.htm");
-			}
-		}
-		else if (command.equals("subskills"))
-		{
-			if (player.isClanLeader())
-			{
-				final List<L2SkillLearn> skills = SkillTreesData.getInstance().getAvailableSubPledgeSkills(player.getClan());
-				final AcquireSkillList asl = new AcquireSkillList(AcquireSkillType.SUBPLEDGE);
-				int count = 0;
-				
-				for (L2SkillLearn s : skills)
-				{
-					if (SkillTable.getInstance().getInfo(s.getSkillId(), s.getSkillLevel()) != null)
-					{
-						asl.addSkill(s.getSkillId(), s.getSkillLevel(), s.getSkillLevel(), s.getLevelUpSp(), 0);
-						++count;
-					}
-				}
-				
-				if (count == 0)
-				{
-					player.sendPacket(SystemMessageId.NO_MORE_SKILLS_TO_LEARN);
-				}
-				else
-				{
-					player.sendPacket(asl);
-				}
-			}
-			else
-			{
-				showChatWindow(player, "data/html/castlemagician/magician-nosquad.htm");
-			}
-		}
-		else
-		{
-			super.onBypassFeedback(player, command);
-		}
-	}
-	
-	protected int validateCondition(L2PcInstance player)
-	{
-		if (player.canOverrideCond(PcCondOverride.CASTLE_CONDITIONS))
-		{
-			return COND_OWNER;
-		}
-		if ((getCastle() != null) && (getCastle().getResidenceId() > 0))
-		{
-			if (player.getClan() != null)
-			{
-				if (getCastle().getZone().isActive())
-				{
-					return COND_BUSY_BECAUSE_OF_SIEGE; // Busy because of siege
-				}
-				else if (getCastle().getOwnerId() == player.getClanId())
-				{
-					return COND_OWNER;
-				}
-			}
-		}
-		return COND_ALL_FALSE;
-	}
-	
-	private static final boolean validateGateCondition(L2PcInstance clanLeader, L2PcInstance player)
-	{
-		if (clanLeader.isAlikeDead())
-		{
-			// TODO: Need retail message if there's one.
-			player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-			return false;
-		}
-		
-		if (clanLeader.isInStoreMode())
-		{
-			// TODO: Need retail message if there's one.
-			player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-			return false;
-		}
-		
-		if (clanLeader.isRooted() || clanLeader.isInCombat())
-		{
-			// TODO: Need retail message if there's one.
-			player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-			return false;
-		}
-		
-		if (clanLeader.isInOlympiadMode())
-		{
-			// TODO: Need retail message if there's one.
-			player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-			return false;
-		}
-		
-		if (clanLeader.isFestivalParticipant())
-		{
-			// TODO: Need retail message if there's one.
-			player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-			return false;
-		}
-		
-		if (clanLeader.inObserverMode())
-		{
-			// TODO: Need retail message if there's one.
-			player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-			return false;
-		}
-		
-		if (clanLeader.isInsideZone(ZoneId.NO_SUMMON_FRIEND))
-		{
-			// TODO: Need retail message if there's one.
-			player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-			return false;
-		}
-		
-		if (clanLeader.getInstanceId() > 0)
-		{
-			if (!Config.ALLOW_SUMMON_TO_INSTANCE || InstanceManager.getInstance().getInstance(player.getInstanceId()).isSummonAllowed())
-			{
-				// TODO: Need retail message if there's one.
-				player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-				return false;
-			}
-		}
-		
-		if (player.isIn7sDungeon())
-		{
-			final int targetCabal = SevenSigns.getInstance().getPlayerCabal(clanLeader.getObjectId());
-			if (SevenSigns.getInstance().isSealValidationPeriod())
-			{
-				if (targetCabal != SevenSigns.getInstance().getCabalHighestScore())
-				{
-					// TODO: Need retail message if there's one.
-					player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-					return false;
-				}
-			}
-			else
-			{
-				if (targetCabal == SevenSigns.CABAL_NULL)
-				{
-					// TODO: Need retail message if there's one.
-					player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-					return false;
-				}
-			}
-		}
-		
-		if (!TvTEvent.onEscapeUse(player.getObjectId()))
-		{
-			player.sendMessage("You on TvT Event, teleporting disabled.");
-			return false;
-		}
-		
-		if (!TvTEvent.onEscapeUse(clanLeader.getObjectId()))
-		{
-			// TODO: Need retail message if there's one.
-			player.sendMessage("Couldn't teleport to clan leader. The requirements was not meet.");
-			return false;
-		}
-		return true;
-	}
-	
-	@Override
-	public void showSubUnitSkillList(L2PcInstance player)
-	{
-		onBypassFeedback(player, "subskills");
-	}
-}