Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: java/com/l2jserver/gameserver/datatables/NpcTable.java
- ===================================================================
- --- java/com/l2jserver/gameserver/datatables/NpcTable.java (revision 5522)
- +++ java/com/l2jserver/gameserver/datatables/NpcTable.java (working copy)
- @@ -146,6 +146,7 @@
- npcDat.set("baseMAtkSpd", NpcData.getInt("matkspd"));
- npcDat.set("rhand", NpcData.getInt("rhand"));
- npcDat.set("lhand", NpcData.getInt("lhand"));
- + npcDat.set("baseAttackType", NpcData.getString("baseAttackType"));
- npcDat.set("enchant", NpcData.getInt("enchant"));
- npcDat.set("baseWalkSpd", NpcData.getInt("walkspd"));
- npcDat.set("baseRunSpd", NpcData.getInt("runspd"));
- Index: java/com/l2jserver/gameserver/model/conditions/ConditionUsingItemType.java
- ===================================================================
- --- java/com/l2jserver/gameserver/model/conditions/ConditionUsingItemType.java (revision 5528)
- +++ java/com/l2jserver/gameserver/model/conditions/ConditionUsingItemType.java (working copy)
- @@ -41,16 +41,14 @@
- @Override
- public boolean testImpl(Env env)
- - {
- - if (env.getCharacter() == null || !env.getCharacter().isPlayer())
- - {
- + {
- + if (env.getCharacter() == null)
- return false;
- - }
- - final Inventory inv = env.getPlayer().getInventory();
- // If ConditionUsingItemType is one between Light, Heavy or Magic
- - if (_armor)
- + if (_armor && env.getCharacter().isPlayer())
- {
- + final Inventory inv = env.getPlayer().getInventory();
- // Get the itemMask of the weared chest (if exists)
- L2ItemInstance chest = inv.getPaperdollItem(Inventory.PAPERDOLL_CHEST);
- if (chest == null)
- @@ -83,6 +81,7 @@
- // return true if legs armor matches too
- return (_mask & legMask) != 0;
- }
- - return (_mask & inv.getWearedMask()) != 0;
- +
- + return (_mask & env.getCharacter().getWeaponType().mask()) != 0;
- }
- }
- Index: java/com/l2jserver/gameserver/model/actor/templates/L2NpcTemplate.java
- ===================================================================
- --- java/com/l2jserver/gameserver/model/actor/templates/L2NpcTemplate.java (revision 5522)
- +++ java/com/l2jserver/gameserver/model/actor/templates/L2NpcTemplate.java (working copy)
- @@ -19,6 +19,7 @@
- import java.util.List;
- import java.util.Map;
- import java.util.Map.Entry;
- +import java.util.logging.Level;
- import java.util.logging.Logger;
- import javolution.util.FastMap;
- @@ -31,6 +32,7 @@
- import com.l2jserver.gameserver.model.StatsSet;
- import com.l2jserver.gameserver.model.actor.instance.L2XmassTreeInstance;
- import com.l2jserver.gameserver.model.base.ClassId;
- +import com.l2jserver.gameserver.model.items.type.L2WeaponType;
- import com.l2jserver.gameserver.model.quest.Quest;
- import com.l2jserver.gameserver.model.quest.Quest.QuestEventType;
- import com.l2jserver.gameserver.model.skills.L2Skill;
- @@ -55,6 +57,7 @@
- private final int _rewardSp;
- private final int _rHand;
- private final int _lHand;
- + private L2WeaponType _baseAttackType;
- private final int _enchantEffect;
- private Race _race;
- @@ -216,6 +219,15 @@
- _rewardSp = set.getInteger("rewardSp");
- _rHand = set.getInteger("rhand");
- _lHand = set.getInteger("lhand");
- + try
- + {
- + _baseAttackType = L2WeaponType.valueOf(set.getString("baseAttackType"));
- + }
- + catch (IllegalArgumentException iae)
- + {
- + _baseAttackType = L2WeaponType.NONE;
- + _log.log(Level.WARNING, "Invalid baseAttackType for npcId: " + _npcId, iae);
- + }
- _enchantEffect = set.getInteger("enchant");
- _race = null;
- final int herbGroup = set.getInteger("dropHerbGroup");
- @@ -632,6 +644,14 @@
- }
- /**
- + * @return the weapon type this NPC is using.
- + */
- + public L2WeaponType getBaseAttackType()
- + {
- + return _baseAttackType;
- + }
- +
- + /**
- * @return the enchant effect.
- */
- public int getEnchantEffect()
- Index: java/com/l2jserver/gameserver/model/actor/L2Character.java
- ===================================================================
- --- java/com/l2jserver/gameserver/model/actor/L2Character.java (revision 5522)
- +++ java/com/l2jserver/gameserver/model/actor/L2Character.java (working copy)
- @@ -41,6 +41,7 @@
- import com.l2jserver.gameserver.ai.L2CharacterAI;
- import com.l2jserver.gameserver.datatables.DoorTable;
- import com.l2jserver.gameserver.datatables.ItemTable;
- +import com.l2jserver.gameserver.datatables.NpcTable;
- import com.l2jserver.gameserver.datatables.SkillTable;
- import com.l2jserver.gameserver.handler.ISkillHandler;
- import com.l2jserver.gameserver.handler.SkillHandler;
- @@ -186,6 +187,7 @@
- private double _hpUpdateIncCheck = .0;
- private double _hpUpdateDecCheck = .0;
- private double _hpUpdateInterval = .0;
- + private L2WeaponType _weaponType = null; // If this is null, it will be initialized when getWeaponType() is called.
- /** Table of Calculators containing all used calculator */
- private Calculator[] _calculators;
- @@ -5388,6 +5390,58 @@
- // Dummy method (overridden by players and pets)
- }
- + public L2WeaponType getWeaponType()
- + {
- + if (_weaponType == null)
- + {
- + synchronized (this)
- + {
- + if (_weaponType == null)
- + setWeaponType();
- + }
- + }
- +
- + return _weaponType;
- + }
- +
- + /**
- + * Sets the weapon type to the default weapon type of this character.
- + */
- + public void setWeaponType()
- + {
- + if (isPlayer())
- + _weaponType = getActingPlayer().getActiveWeaponItem().getItemType();
- + else if (isNpc())
- + {
- + L2NpcTemplate tmpl = NpcTable.getInstance().getTemplate(((L2Npc)this).getNpcId());
- + if (tmpl != null)
- + _weaponType = tmpl.getBaseAttackType();
- + }
- + else if (isSummon())
- + {
- + L2NpcTemplate tmpl = NpcTable.getInstance().getTemplate(((L2Summon)this).getNpcId());
- + if (tmpl != null)
- + _weaponType = tmpl.getBaseAttackType();
- + }
- +
- + // If the weapon type is still somehow null.
- + if (_weaponType == null)
- + _weaponType = L2WeaponType.NONE;
- + }
- +
- + public void setWeaponType(L2WeaponType weaponType)
- + {
- + _weaponType = weaponType;
- + }
- +
- + public void setWeaponType(L2ItemInstance item)
- + {
- + if (item != null && item.isWeapon())
- + _weaponType = (L2WeaponType)item.getItemType();
- + else
- + _weaponType = null;
- + }
- +
- /**
- * <B><U> Overridden in </U> :</B><BR><BR>
- * <li> L2PcInstance</li><BR><BR>
- Index: java/com/l2jserver/gameserver/model/itemcontainer/Inventory.java
- ===================================================================
- --- java/com/l2jserver/gameserver/model/itemcontainer/Inventory.java (revision 5522)
- +++ java/com/l2jserver/gameserver/model/itemcontainer/Inventory.java (working copy)
- @@ -152,11 +152,11 @@
- }
- }
- - private static final class BowCrossRodListener implements PaperdollListener
- + private static final class WeaponListener implements PaperdollListener
- {
- - private static BowCrossRodListener instance = new BowCrossRodListener();
- + private static WeaponListener instance = new WeaponListener();
- - public static BowCrossRodListener getInstance()
- + public static WeaponListener getInstance()
- {
- return instance;
- }
- @@ -188,6 +188,9 @@
- if (lure != null)
- inventory.setPaperdollItem(PAPERDOLL_LHAND, null);
- }
- +
- + // Reset the weapon type to the default weapon type.
- + inventory.getOwner().setWeaponType();
- }
- @Override
- @@ -210,6 +213,9 @@
- if (bolts != null)
- inventory.setPaperdollItem(PAPERDOLL_LHAND, bolts);
- }
- +
- + // Update the weapon type the owner is wearing.
- + inventory.getOwner().setWeaponType(item);
- }
- }
- @@ -729,7 +735,7 @@
- if (this instanceof PcInventory)
- {
- addPaperdollListener(ArmorSetListener.getInstance());
- - addPaperdollListener(BowCrossRodListener.getInstance());
- + addPaperdollListener(WeaponListener.getInstance());
- addPaperdollListener(ItemSkillsListener.getInstance());
- addPaperdollListener(BraceletListener.getInstance());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement