Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/aCis/java/net/sf/l2j/gameserver/data/SkillTable.java b/aCis/java/net/sf/l2j/gameserver/data/SkillTable.java
- index ac6f189..597b09c 100644
- --- a/aCis/java/net/sf/l2j/gameserver/data/SkillTable.java
- +++ b/aCis/java/net/sf/l2j/gameserver/data/SkillTable.java
- @@ -40,6 +40,37 @@
- private static final L2Skill[] _clanSkills = new L2Skill[22];
- + private static final int[] _shotSkillsId =
- + {
- + 2008,
- + 2009,
- + 2033,
- + 2039,
- + 2047,
- + 2061,
- + 2150,
- + 2151,
- + 2152,
- + 2153,
- + 2154,
- + 2155,
- + 2156,
- + 2157,
- + 2158,
- + 2159,
- + 2160,
- + 2161,
- + 2162,
- + 2163,
- + 2164,
- + 2181,
- + 2182,
- + 2183,
- + 2184,
- + 2185,
- + 2186
- + };
- +
- public static SkillTable getInstance()
- {
- return SingletonHolder._instance;
- @@ -183,6 +214,15 @@
- return _clanSkills;
- }
- + public static boolean isShotSkill(int skillId)
- + {
- + for (int id : _shotSkillsId)
- + if (id == skillId)
- + return true;
- +
- + return false;
- + }
- +
- /**
- * Enum to hold some important references to frequently used (hardcoded) skills in core
- * @author DrHouse
- diff --git a/aCis/java/net/sf/l2j/gameserver/model/actor/Creature.java b/aCis/java/net/sf/l2j/gameserver/model/actor/Creature.java
- index 21a1581..80db9ae 100644
- --- a/aCis/java/net/sf/l2j/gameserver/model/actor/Creature.java
- +++ b/aCis/java/net/sf/l2j/gameserver/model/actor/Creature.java
- @@ -10,6 +10,7 @@
- import net.sf.l2j.commons.random.Rnd;
- import net.sf.l2j.Config;
- +import net.sf.l2j.gameserver.data.SkillTable;
- import net.sf.l2j.gameserver.data.manager.ZoneManager;
- import net.sf.l2j.gameserver.data.xml.MapRegionData;
- import net.sf.l2j.gameserver.data.xml.MapRegionData.TeleportType;
- @@ -31,6 +32,7 @@
- import net.sf.l2j.gameserver.model.actor.ai.type.AttackableAI;
- import net.sf.l2j.gameserver.model.actor.ai.type.CreatureAI;
- import net.sf.l2j.gameserver.model.actor.attack.CreatureAttack;
- +import net.sf.l2j.gameserver.model.actor.attack.CreatureAttack.HitHolder;
- import net.sf.l2j.gameserver.model.actor.cast.CreatureCast;
- import net.sf.l2j.gameserver.model.actor.container.creature.ChanceSkillList;
- import net.sf.l2j.gameserver.model.actor.container.creature.EffectList;
- @@ -47,8 +49,10 @@
- import net.sf.l2j.gameserver.model.location.Location;
- import net.sf.l2j.gameserver.model.zone.type.WaterZone;
- import net.sf.l2j.gameserver.network.serverpackets.AbstractNpcInfo.NpcInfo;
- +import net.sf.l2j.gameserver.network.serverpackets.Attack;
- import net.sf.l2j.gameserver.network.serverpackets.ChangeMoveType;
- import net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket;
- +import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
- import net.sf.l2j.gameserver.network.serverpackets.Revive;
- import net.sf.l2j.gameserver.network.serverpackets.ServerObjectInfo;
- import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate;
- @@ -266,8 +270,28 @@
- */
- public void broadcastPacket(L2GameServerPacket packet, boolean selfToo)
- {
- + final boolean isAttackWithShots = (packet instanceof Attack) && ((Attack) packet).soulshot;
- for (final Player player : getKnownType(Player.class))
- + {
- + if (isAttackWithShots && player.getBlockList().isBlockingAll())
- + {
- + final Attack atk = new Attack(((Attack) packet).getAttacker(), false, 0);
- + final HitHolder[] holder = ((Attack) packet).getHits();
- + final HitHolder[] newHolder = new HitHolder[holder.length];
- +
- + // This magic need for cleanup FLAGS bit mask from SS usage.
- + for (int i = 0; i < newHolder.length; i++)
- + newHolder[i] = new HitHolder(holder[i]._target, holder[i]._damage, holder[i]._crit, holder[i]._miss, holder[i]._shld);
- +
- + // Generating FLAG bit mast anew.
- + atk.processHits(newHolder);
- +
- + player.sendPacket(atk);
- + continue;
- + }
- +
- player.sendPacket(packet);
- + }
- }
- /**
- @@ -280,8 +304,16 @@
- if (radius < 0)
- radius = 600;
- + // Check if packet is MagicSkillUse.
- + final boolean isMagicSkillUse = (packet instanceof MagicSkillUse);
- for (final Player player : getKnownTypeInRadius(Player.class, radius))
- + {
- + // Check if magicSkillUse contains Shot's skill and check if player disabled shot spells.
- + if (isMagicSkillUse && SkillTable.isShotSkill(((MagicSkillUse) packet).getSkillId()) && player.getBlockList().isBlockingAll())
- + continue;
- +
- player.sendPacket(packet);
- + }
- }
- /**
- diff --git a/aCis/java/net/sf/l2j/gameserver/network/serverpackets/Attack.java b/aCis/java/net/sf/l2j/gameserver/network/serverpackets/Attack.java
- index 551b40b..3370551 100644
- --- a/aCis/java/net/sf/l2j/gameserver/network/serverpackets/Attack.java
- +++ b/aCis/java/net/sf/l2j/gameserver/network/serverpackets/Attack.java
- @@ -10,7 +10,7 @@
- public static final int HITFLAG_SHLD = 0x40;
- public static final int HITFLAG_MISS = 0x80;
- - private final int _attackerId;
- + private final Creature _attacker;
- public final boolean soulshot;
- public final int _ssGrade;
- private final int _x;
- @@ -20,7 +20,7 @@
- public Attack(Creature attacker, boolean useShots, int ssGrade)
- {
- - _attackerId = attacker.getObjectId();
- + _attacker = attacker;
- soulshot = useShots;
- _ssGrade = ssGrade;
- _x = attacker.getX();
- @@ -64,12 +64,22 @@
- return _hits != null;
- }
- + public Creature getAttacker()
- + {
- + return _attacker;
- + }
- +
- + public HitHolder[] getHits()
- + {
- + return _hits;
- + }
- +
- @Override
- protected final void writeImpl()
- {
- writeC(0x05);
- - writeD(_attackerId);
- + writeD(_attacker.getObjectId());
- writeD(_hits[0]._targetId);
- writeD(_hits[0]._damage);
- writeC(_hits[0]._flags);
- diff --git a/aCis/java/net/sf/l2j/gameserver/network/serverpackets/MagicSkillUse.java b/aCis/java/net/sf/l2j/gameserver/network/serverpackets/MagicSkillUse.java
- index 57c8839..96f5c22 100644
- --- a/aCis/java/net/sf/l2j/gameserver/network/serverpackets/MagicSkillUse.java
- +++ b/aCis/java/net/sf/l2j/gameserver/network/serverpackets/MagicSkillUse.java
- @@ -45,6 +45,11 @@
- this(cha, cha, skillId, skillLevel, hitTime, reuseDelay, false);
- }
- + public int getSkillId()
- + {
- + return _skillId;
- + }
- +
- @Override
- protected final void writeImpl()
- {
Advertisement
Add Comment
Please, Sign In to add comment