2
0
Эх сурвалжийг харах

BETA: Implementing isInCategory method to L2Character and it's childs.
* And minor cleanup.

Rumen Nikiforov 11 жил өмнө
parent
commit
8546941edc

+ 3 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/model/CursedWeapon.java

@@ -331,17 +331,13 @@ public class CursedWeapon
 			level = _skillMaxLevel;
 		}
 		
-		L2Skill skill = SkillTable.getInstance().getInfo(_skillId, level);
-		// Yesod:
-		// To properly support subclasses this skill can not be stored.
+		final L2Skill skill = SkillTable.getInstance().getInfo(_skillId, level);
 		_player.addSkill(skill, false);
 		
 		// Void Burst, Void Flow
-		skill = FrequentSkill.VOID_BURST.getSkill();
-		_player.addSkill(skill, false);
-		skill = FrequentSkill.VOID_FLOW.getSkill();
-		_player.addSkill(skill, false);
+		_player.addSkill(FrequentSkill.VOID_BURST.getSkill(), false);
 		_player.addTransformSkill(FrequentSkill.VOID_BURST.getId());
+		_player.addSkill(FrequentSkill.VOID_FLOW.getSkill(), false);
 		_player.addTransformSkill(FrequentSkill.VOID_FLOW.getId());
 		_player.sendSkillList();
 	}

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -53,6 +53,7 @@ import com.l2jserver.gameserver.instancemanager.InstanceManager;
 import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.instancemanager.TownManager;
+import com.l2jserver.gameserver.model.CategoryType;
 import com.l2jserver.gameserver.model.ChanceSkillList;
 import com.l2jserver.gameserver.model.CharEffectList;
 import com.l2jserver.gameserver.model.FusionSkill;
@@ -7359,4 +7360,9 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 		}
 		return getTemplate().getBaseAttackType();
 	}
+	
+	public boolean isInCategory(CategoryType type)
+	{
+		return false;
+	}
 }

+ 8 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Decoy.java

@@ -20,6 +20,8 @@ package com.l2jserver.gameserver.model.actor;
 
 import java.util.Collection;
 
+import com.l2jserver.gameserver.datatables.CategoryData;
+import com.l2jserver.gameserver.model.CategoryType;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.templates.L2CharTemplate;
 import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
@@ -178,4 +180,10 @@ public abstract class L2Decoy extends L2Character
 			getOwner().sendPacket(id);
 		}
 	}
+	
+	@Override
+	public boolean isInCategory(CategoryType type)
+	{
+		return CategoryData.getInstance().isInCategory(type, getNpcId());
+	}
 }

+ 8 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Npc.java

@@ -30,6 +30,7 @@ import com.l2jserver.gameserver.SevenSigns;
 import com.l2jserver.gameserver.SevenSignsFestival;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.cache.HtmCache;
+import com.l2jserver.gameserver.datatables.CategoryData;
 import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.handler.BypassHandler;
 import com.l2jserver.gameserver.handler.IBypassHandler;
@@ -38,6 +39,7 @@ import com.l2jserver.gameserver.instancemanager.CastleManager;
 import com.l2jserver.gameserver.instancemanager.FortManager;
 import com.l2jserver.gameserver.instancemanager.TownManager;
 import com.l2jserver.gameserver.instancemanager.WalkingManager;
+import com.l2jserver.gameserver.model.CategoryType;
 import com.l2jserver.gameserver.model.L2NpcAIData;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2Spawn;
@@ -1899,4 +1901,10 @@ public class L2Npc extends L2Character
 			}
 		}
 	}
+	
+	@Override
+	public boolean isInCategory(CategoryType type)
+	{
+		return CategoryData.getInstance().isInCategory(type, getNpcId());
+	}
 }

+ 8 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Summon.java

@@ -23,11 +23,13 @@ import com.l2jserver.gameserver.GameTimeController;
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.ai.L2CharacterAI;
 import com.l2jserver.gameserver.ai.L2SummonAI;
+import com.l2jserver.gameserver.datatables.CategoryData;
 import com.l2jserver.gameserver.datatables.ExperienceTable;
 import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.handler.IItemHandler;
 import com.l2jserver.gameserver.handler.ItemHandler;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
+import com.l2jserver.gameserver.model.CategoryType;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2Party;
 import com.l2jserver.gameserver.model.L2WorldRegion;
@@ -1221,4 +1223,10 @@ public abstract class L2Summon extends L2Playable
 	{
 		return (getOwner() != null) ? getOwner().getAllyId() : 0;
 	}
+	
+	@Override
+	public boolean isInCategory(CategoryType type)
+	{
+		return CategoryData.getInstance().isInCategory(type, getNpcId());
+	}
 }

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

@@ -69,6 +69,7 @@ import com.l2jserver.gameserver.communitybbs.BB.Forum;
 import com.l2jserver.gameserver.communitybbs.Manager.ForumsBBSManager;
 import com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager;
 import com.l2jserver.gameserver.datatables.AdminTable;
+import com.l2jserver.gameserver.datatables.CategoryData;
 import com.l2jserver.gameserver.datatables.CharNameTable;
 import com.l2jserver.gameserver.datatables.CharSummonTable;
 import com.l2jserver.gameserver.datatables.CharTemplateTable;
@@ -107,6 +108,7 @@ import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.model.ArenaParticipantsHolder;
 import com.l2jserver.gameserver.model.BlockList;
+import com.l2jserver.gameserver.model.CategoryType;
 import com.l2jserver.gameserver.model.L2AccessLevel;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2ClanMember;
@@ -6736,15 +6738,7 @@ public final class L2PcInstance extends L2Playable
 	
 	public boolean mount(L2Summon pet)
 	{
-		if (!disarmWeapons())
-		{
-			return false;
-		}
-		if (!disarmShield())
-		{
-			return false;
-		}
-		if (isTransformed())
+		if (!disarmWeapons() || !disarmShield() || isTransformed())
 		{
 			return false;
 		}
@@ -6760,21 +6754,12 @@ public final class L2PcInstance extends L2Playable
 		broadcastUserInfo();
 		
 		pet.unSummon(this);
-		
 		return true;
 	}
 	
 	public boolean mount(int npcId, int controlItemObjId, boolean useFood)
 	{
-		if (!disarmWeapons())
-		{
-			return false;
-		}
-		if (!disarmShield())
-		{
-			return false;
-		}
-		if (isTransformed())
+		if (!disarmWeapons() || !disarmShield() || isTransformed())
 		{
 			return false;
 		}
@@ -13128,7 +13113,13 @@ public final class L2PcInstance extends L2Playable
 	{
 		if (_transformAllowedSkills == null)
 		{
-			_transformAllowedSkills = new HashSet<>();
+			synchronized (this)
+			{
+				if (_transformAllowedSkills == null)
+				{
+					_transformAllowedSkills = new HashSet<>();
+				}
+			}
 		}
 		_transformAllowedSkills.add(id);
 	}
@@ -13983,12 +13974,28 @@ public final class L2PcInstance extends L2Playable
 	
 	public double getCollisionRadius()
 	{
-		return isMounted() ? (NpcTable.getInstance().getTemplate(getMountNpcId()).getfCollisionRadius()) : (isTransformed() && !getTransformation().isStance() ? getTransformation().getCollisionRadius(this) : (getAppearance().getSex() ? getBaseTemplate().getFCollisionRadiusFemale() : getBaseTemplate().getfCollisionRadius()));
+		if (isMounted() && (getMountNpcId() > 0))
+		{
+			return NpcTable.getInstance().getTemplate(getMountNpcId()).getfCollisionRadius();
+		}
+		else if (isTransformed())
+		{
+			return getTransformation().getCollisionRadius(this);
+		}
+		return getAppearance().getSex() ? getBaseTemplate().getFCollisionRadiusFemale() : getBaseTemplate().getfCollisionRadius();
 	}
 	
 	public double getCollisionHeight()
 	{
-		return isMounted() ? (NpcTable.getInstance().getTemplate(getMountNpcId()).getfCollisionHeight()) : (isTransformed() && !getTransformation().isStance() ? getTransformation().getCollisionHeight(this) : (getAppearance().getSex() ? getBaseTemplate().getFCollisionHeightFemale() : getBaseTemplate().getfCollisionHeight()));
+		if (isMounted() && (getMountNpcId() > 0))
+		{
+			return NpcTable.getInstance().getTemplate(getMountNpcId()).getfCollisionHeight();
+		}
+		else if (isTransformed())
+		{
+			return getTransformation().getCollisionHeight(this);
+		}
+		return getAppearance().getSex() ? getBaseTemplate().getFCollisionHeightFemale() : getBaseTemplate().getfCollisionHeight();
 	}
 	
 	public final int getClientX()
@@ -15024,4 +15031,10 @@ public final class L2PcInstance extends L2Playable
 	{
 		return _eventListeners;
 	}
+	
+	@Override
+	public boolean isInCategory(CategoryType type)
+	{
+		return CategoryData.getInstance().isInCategory(type, getClassId().getId());
+	}
 }

+ 2 - 14
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestPrivateStoreManageSell.java

@@ -18,7 +18,6 @@
  */
 package com.l2jserver.gameserver.network.clientpackets;
 
-import com.l2jserver.gameserver.model.MountType;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 
@@ -41,29 +40,18 @@ public final class RequestPrivateStoreManageSell extends L2GameClientPacket
 	@Override
 	protected void runImpl()
 	{
-		L2PcInstance player = getClient().getActiveChar();
+		final L2PcInstance player = getClient().getActiveChar();
 		if (player == null)
 		{
 			return;
 		}
 		
 		// Player shouldn't be able to set stores if he/she is alike dead (dead or fake death)
-		if (player.isAlikeDead())
+		if (player.isAlikeDead() || player.isInOlympiadMode())
 		{
 			sendPacket(ActionFailed.STATIC_PACKET);
 			return;
 		}
-		
-		if (player.isInOlympiadMode())
-		{
-			sendPacket(ActionFailed.STATIC_PACKET);
-			return;
-		}
-		if (player.getMountType() != MountType.NONE)
-		{
-			return;
-		}
-		
 	}
 	
 	@Override