Browse Source

Three patches by kerberos_20:
* fix for //respawnall npe
* hide windows packet in spectator was missing
* updated giveItems() in quests to unhardcode adena if will be multiplied by rates or not

DrHouse 16 years ago
parent
commit
0299648d30

+ 5 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

@@ -153,6 +153,7 @@ import net.sf.l2j.gameserver.network.serverpackets.ExOlympiadSpelledInfo;
 import net.sf.l2j.gameserver.network.serverpackets.ExOlympiadUserInfoSpectator;
 import net.sf.l2j.gameserver.network.serverpackets.ExSetCompassZoneCode;
 import net.sf.l2j.gameserver.network.serverpackets.ExSpawnEmitter;
+import net.sf.l2j.gameserver.network.serverpackets.GMHide;
 import net.sf.l2j.gameserver.network.serverpackets.GameGuardQuery;
 import net.sf.l2j.gameserver.network.serverpackets.HennaInfo;
 import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;
@@ -8796,6 +8797,7 @@ public final class L2PcInstance extends L2PlayableInstance
 		setIsParalyzed(true);
         setIsInvul(true);
 		getAppearance().setInvisible();
+		sendPacket(new GMHide(1));
 		sendPacket(new ObservationMode(x, y, z));
 		setXYZ(x, y, z);
 
@@ -8828,6 +8830,7 @@ public final class L2PcInstance extends L2PlayableInstance
         setTarget(null);
         setIsInvul(true);
         getAppearance().setInvisible();
+        sendPacket(new GMHide(1));
         teleToLocation(x, y, z, false);
         sendPacket(new ExOlympiadMode(3));
         _observerMode = true;
@@ -8840,6 +8843,7 @@ public final class L2PcInstance extends L2PlayableInstance
 		setXYZ(_obsX, _obsY, _obsZ);
 		setIsParalyzed(false);
 		getAppearance().setVisible();
+		sendPacket(new GMHide(0));
         setIsInvul(false);
 
 		if (getAI() != null)
@@ -8856,6 +8860,7 @@ public final class L2PcInstance extends L2PlayableInstance
 		sendPacket(new ExOlympiadMode(0));
         teleToLocation(_obsX, _obsY, _obsZ, true);
         getAppearance().setVisible();
+        sendPacket(new GMHide(0));
         setIsInvul(false);
         if (getAI() != null)
 		{

+ 15 - 5
L2_GameServer/java/net/sf/l2j/gameserver/model/quest/QuestState.java

@@ -432,6 +432,16 @@ public final class QuestState
 		return enchanteditem.getEnchantLevel();
 	}
 	
+	/**
+	 * Give adena to the player
+	 * @param count
+	 * @param applyRates
+	 */
+	public void giveAdena(int count, boolean applyRates)
+	{
+		giveItems(57, count, applyRates ? 0 : 1);
+	}
+
 	/**
 	 * Give item/reward to the player
 	 * @param itemId
@@ -447,18 +457,18 @@ public final class QuestState
 		if (count <= 0)
 			return;
 		
-		int questId = getQuest().getQuestIntId();
-		// If item for reward is gold (ID=57), modify count with rate for quest reward
-		if (itemId == 57 && !(questId >= 217 && questId <= 233) && !(questId >= 401 && questId <= 418))
+		// If item for reward is adena (ID=57), modify count with rate for quest reward if rates available
+		if (itemId == 57 && !(enchantlevel > 0))
 			count = (int) (count * Config.RATE_QUESTS_REWARD);
-		// Set quantity of item
 		
 		// Add items to player's inventory
 		L2ItemInstance item = getPlayer().getInventory().addItem("Quest", itemId, count, getPlayer(), getPlayer().getTarget());
 		
 		if (item == null)
 			return;
-		if (enchantlevel > 0)
+
+		// set enchant level for item if that item is not adena
+		if (enchantlevel > 0 && itemId != 57)
 			item.setEnchantLevel(enchantlevel);
 		
 		// If item for reward is gold, send message of gold reward to client

+ 1 - 1
L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2DamageZone.java

@@ -68,7 +68,7 @@ public class L2DamageZone extends L2ZoneType
 	@Override
 	protected void onExit(L2Character character)
 	{
-		if (_characterList.isEmpty())
+		if (_characterList.isEmpty() && _task != null)
 		{
 			_task.cancel(true);
 			_task = null;

+ 1 - 1
L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2PoisonZone.java

@@ -108,7 +108,7 @@ public class L2PoisonZone extends L2ZoneType
 	@Override
 	protected void onExit(L2Character character)
 	{
-		if (_characterList.isEmpty())
+		if (_characterList.isEmpty() && _task != null)
 		{
 			_task.cancel(true);
 			_task = null;

+ 52 - 0
L2_GameServer/java/net/sf/l2j/gameserver/network/serverpackets/GMHide.java

@@ -0,0 +1,52 @@
+/*
+ * 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 net.sf.l2j.gameserver.network.serverpackets;
+
+
+
+/**
+ * @author Kerberos
+ */
+public class GMHide extends L2GameServerPacket
+{
+	// cd
+	private static int _mode;
+
+
+	/**
+	 * @param _mode (0 = display windows, 1 = hide windows)
+	 */
+	public GMHide(int mode)
+	{
+		_mode = mode;
+	}
+
+
+	@Override
+	protected final void writeImpl()
+	{
+		writeC(0x93);
+		writeD(_mode);
+	}
+
+	/* (non-Javadoc)
+	 * @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#getType()
+	 */
+	@Override
+	public String getType()
+	{
+		return "[S] 93 GMHide";
+	}
+}