Fixed Seal of Ruler casting prohibition.
This commit is contained in:
@@ -130,7 +130,7 @@ public class TakeCastle implements ISkillHandler
|
||||
{
|
||||
message = "You can only use this skill during a siege.";
|
||||
}
|
||||
else if (!Util.checkIfInRange(200, player, player.getTarget(), true) || (Math.abs(player.getZ() - player.getTarget().getZ()) > 40))
|
||||
else if (!Util.checkIfInRange(200, player, player.getTarget(), true) || (Math.abs(player.getZ() - player.getTarget().getZ()) > 45))
|
||||
{
|
||||
message = "You are not in range of the artifact.";
|
||||
}
|
||||
|
@@ -9808,10 +9808,10 @@ public class PlayerInstance extends Playable
|
||||
// ************************************* Check Target *******************************************
|
||||
// Create and set a WorldObject containing the target of the skill
|
||||
WorldObject target = null;
|
||||
final SkillTargetType sklTargetType = skill.getTargetType();
|
||||
final SkillType sklType = skill.getSkillType();
|
||||
final SkillTargetType skillTargetType = skill.getTargetType();
|
||||
final SkillType skillType = skill.getSkillType();
|
||||
|
||||
switch (sklTargetType)
|
||||
switch (skillTargetType)
|
||||
{
|
||||
// Target the player if skill type is AURA, PARTY, CLAN or SELF
|
||||
case TARGET_AURA:
|
||||
@@ -9882,7 +9882,7 @@ public class PlayerInstance extends Playable
|
||||
}
|
||||
|
||||
// If target is not attackable, send a Server->Client packet ActionFailed
|
||||
if (!target.canBeAttacked() && !getAccessLevel().allowPeaceAttack() && !target.isDoor())
|
||||
if (!target.canBeAttacked() && !getAccessLevel().allowPeaceAttack() && !target.isDoor() && (skillType != SkillType.TAKECASTLE))
|
||||
{
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return;
|
||||
@@ -9955,7 +9955,7 @@ public class PlayerInstance extends Playable
|
||||
if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsume()))
|
||||
{
|
||||
// Checked: when a summon skill failed, server show required consume item count
|
||||
if (sklType == SkillType.SUMMON)
|
||||
if (skillType == SkillType.SUMMON)
|
||||
{
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1);
|
||||
sm.addItemName(skill.getItemConsumeId());
|
||||
@@ -9979,7 +9979,7 @@ public class PlayerInstance extends Playable
|
||||
}
|
||||
|
||||
// Like L2OFF if you have a summon you can't summon another one (ignore cubics)
|
||||
if ((sklType == SkillType.SUMMON) && (skill instanceof SkillSummon) && !((SkillSummon) skill).isCubic() && ((getPet() != null) || isMounted()))
|
||||
if ((skillType == SkillType.SUMMON) && (skill instanceof SkillSummon) && !((SkillSummon) skill).isCubic() && ((getPet() != null) || isMounted()))
|
||||
{
|
||||
sendPacket(SystemMessageId.YOU_ALREADY_HAVE_A_PET);
|
||||
return;
|
||||
@@ -10030,7 +10030,7 @@ public class PlayerInstance extends Playable
|
||||
return;
|
||||
}
|
||||
|
||||
if (isFishing() && (sklType != SkillType.PUMPING) && (sklType != SkillType.REELING) && (sklType != SkillType.FISHING))
|
||||
if (isFishing() && (skillType != SkillType.PUMPING) && (skillType != SkillType.REELING) && (skillType != SkillType.FISHING))
|
||||
{
|
||||
// Only fishing skills are available
|
||||
sendPacket(SystemMessageId.ONLY_FISHING_SKILLS_MAY_BE_USED_AT_THIS_TIME);
|
||||
@@ -10044,21 +10044,21 @@ public class PlayerInstance extends Playable
|
||||
{
|
||||
if (isInsidePeaceZone(this, target) // Like L2OFF you can use cupid bow skills on peace zone
|
||||
&& ((skill.getId() != 3260 /* Forgiveness */) && (skill.getId() != 3261 /* Heart Shot */) && (skill.getId() != 3262 /* Double Heart Shot */) //
|
||||
&& (sklTargetType != SkillTargetType.TARGET_AURA))) // Like L2OFF people can use TARGET_AURE skills on peace zone
|
||||
&& (skillTargetType != SkillTargetType.TARGET_AURA))) // Like L2OFF people can use TARGET_AURE skills on peace zone
|
||||
{
|
||||
// If Creature or target is in a peace zone, send a system message TARGET_IN_PEACEZONE a Server->Client packet ActionFailed
|
||||
sendPacket(SystemMessageId.YOU_MAY_NOT_ATTACK_THIS_TARGET_IN_A_PEACEFUL_ZONE);
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return;
|
||||
}
|
||||
if (isInOlympiadMode() && !isOlympiadStart() && (sklTargetType != SkillTargetType.TARGET_AURA))
|
||||
if (isInOlympiadMode() && !isOlympiadStart() && (skillTargetType != SkillTargetType.TARGET_AURA))
|
||||
{
|
||||
// if PlayerInstance is in Olympia and the match isn't already start, send a Server->Client packet ActionFailed
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(target instanceof MonsterInstance) && (sklType == SkillType.CONFUSE_MOB_ONLY))
|
||||
if (!(target instanceof MonsterInstance) && (skillType == SkillType.CONFUSE_MOB_ONLY))
|
||||
{
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return;
|
||||
@@ -10071,12 +10071,12 @@ public class PlayerInstance extends Playable
|
||||
&& (!_inEventDM || !DM.hasStarted()) //
|
||||
&& (!_inEventCTF || !CTF.isStarted()) //
|
||||
&& (!_inEventVIP || !VIP._started) //
|
||||
&& (sklTargetType != SkillTargetType.TARGET_AURA) //
|
||||
&& (sklTargetType != SkillTargetType.TARGET_CLAN) //
|
||||
&& (sklTargetType != SkillTargetType.TARGET_ALLY) //
|
||||
&& (sklTargetType != SkillTargetType.TARGET_PARTY) //
|
||||
&& (sklTargetType != SkillTargetType.TARGET_SELF) //
|
||||
&& (sklTargetType != SkillTargetType.TARGET_GROUND))
|
||||
&& (skillTargetType != SkillTargetType.TARGET_AURA) //
|
||||
&& (skillTargetType != SkillTargetType.TARGET_CLAN) //
|
||||
&& (skillTargetType != SkillTargetType.TARGET_ALLY) //
|
||||
&& (skillTargetType != SkillTargetType.TARGET_PARTY) //
|
||||
&& (skillTargetType != SkillTargetType.TARGET_SELF) //
|
||||
&& (skillTargetType != SkillTargetType.TARGET_GROUND))
|
||||
{
|
||||
// Send a Server->Client packet ActionFailed to the PlayerInstance
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
@@ -10087,7 +10087,7 @@ public class PlayerInstance extends Playable
|
||||
if (dontMove)
|
||||
{
|
||||
// Calculate the distance between the PlayerInstance and the target
|
||||
if (sklTargetType == SkillTargetType.TARGET_GROUND)
|
||||
if (skillTargetType == SkillTargetType.TARGET_GROUND)
|
||||
{
|
||||
if (!isInsideRadius2D(getCurrentSkillWorldPosition().getX(), getCurrentSkillWorldPosition().getY(), getCurrentSkillWorldPosition().getZ(), skill.getCastRange() + getTemplate().getCollisionRadius()))
|
||||
{
|
||||
@@ -10110,7 +10110,7 @@ public class PlayerInstance extends Playable
|
||||
}
|
||||
}
|
||||
// Check range for SIGNET skills
|
||||
else if ((sklType == SkillType.SIGNET) && !isInsideRadius2D(getCurrentSkillWorldPosition().getX(), getCurrentSkillWorldPosition().getY(), getCurrentSkillWorldPosition().getZ(), skill.getCastRange() + getTemplate().getCollisionRadius()))
|
||||
else if ((skillType == SkillType.SIGNET) && !isInsideRadius2D(getCurrentSkillWorldPosition().getX(), getCurrentSkillWorldPosition().getY(), getCurrentSkillWorldPosition().getZ(), skill.getCastRange() + getTemplate().getCollisionRadius()))
|
||||
{
|
||||
// Send a System Message to the caster
|
||||
sendPacket(SystemMessageId.YOUR_TARGET_IS_OUT_OF_RANGE);
|
||||
@@ -10121,7 +10121,7 @@ public class PlayerInstance extends Playable
|
||||
}
|
||||
}
|
||||
// Check if the skill is defensive and if the target is a monster and if force attack is set.. if not then we don't want to cast.
|
||||
if (!skill.isOffensive() && (target instanceof MonsterInstance) && !forceUse && (sklTargetType != SkillTargetType.TARGET_PET) && (sklTargetType != SkillTargetType.TARGET_AURA) && (sklTargetType != SkillTargetType.TARGET_CLAN) && (sklTargetType != SkillTargetType.TARGET_SELF) && (sklTargetType != SkillTargetType.TARGET_PARTY) && (sklTargetType != SkillTargetType.TARGET_ALLY) && (sklTargetType != SkillTargetType.TARGET_CORPSE_MOB) && (sklTargetType != SkillTargetType.TARGET_AREA_CORPSE_MOB) && (sklTargetType != SkillTargetType.TARGET_GROUND) && (sklType != SkillType.BEAST_FEED) && (sklType != SkillType.DELUXE_KEY_UNLOCK) && (sklType != SkillType.UNLOCK))
|
||||
if (!skill.isOffensive() && (target instanceof MonsterInstance) && !forceUse && (skillTargetType != SkillTargetType.TARGET_PET) && (skillTargetType != SkillTargetType.TARGET_AURA) && (skillTargetType != SkillTargetType.TARGET_CLAN) && (skillTargetType != SkillTargetType.TARGET_SELF) && (skillTargetType != SkillTargetType.TARGET_PARTY) && (skillTargetType != SkillTargetType.TARGET_ALLY) && (skillTargetType != SkillTargetType.TARGET_CORPSE_MOB) && (skillTargetType != SkillTargetType.TARGET_AREA_CORPSE_MOB) && (skillTargetType != SkillTargetType.TARGET_GROUND) && (skillType != SkillType.BEAST_FEED) && (skillType != SkillType.DELUXE_KEY_UNLOCK) && (skillType != SkillType.UNLOCK))
|
||||
{
|
||||
// send the action failed so that the skill doens't go off.
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
@@ -10129,7 +10129,7 @@ public class PlayerInstance extends Playable
|
||||
}
|
||||
|
||||
// Check if the skill is Spoil type and if the target isn't already spoiled
|
||||
if ((sklType == SkillType.SPOIL) && !(target instanceof MonsterInstance))
|
||||
if ((skillType == SkillType.SPOIL) && !(target instanceof MonsterInstance))
|
||||
{
|
||||
// Send a System Message to the PlayerInstance
|
||||
sendPacket(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET);
|
||||
@@ -10140,7 +10140,7 @@ public class PlayerInstance extends Playable
|
||||
}
|
||||
|
||||
// Check if the skill is Sweep type and if conditions not apply
|
||||
if ((sklType == SkillType.SWEEP) && (target instanceof Attackable))
|
||||
if ((skillType == SkillType.SWEEP) && (target instanceof Attackable))
|
||||
{
|
||||
final int spoilerId = ((Attackable) target).getSpoiledBy();
|
||||
if (((Attackable) target).isDead())
|
||||
@@ -10168,7 +10168,7 @@ public class PlayerInstance extends Playable
|
||||
}
|
||||
|
||||
// Check if the skill is Drain Soul (Soul Crystals) and if the target is a MOB
|
||||
if ((sklType == SkillType.DRAIN_SOUL) && !(target instanceof MonsterInstance))
|
||||
if ((skillType == SkillType.DRAIN_SOUL) && !(target instanceof MonsterInstance))
|
||||
{
|
||||
// Send a System Message to the PlayerInstance
|
||||
sendPacket(SystemMessageId.THAT_IS_THE_INCORRECT_TARGET);
|
||||
@@ -10178,14 +10178,14 @@ public class PlayerInstance extends Playable
|
||||
return;
|
||||
}
|
||||
|
||||
if ((sklTargetType == SkillTargetType.TARGET_GROUND) && (getCurrentSkillWorldPosition() == null))
|
||||
if ((skillTargetType == SkillTargetType.TARGET_GROUND) && (getCurrentSkillWorldPosition() == null))
|
||||
{
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if this is a Pvp skill and target isn't a non-flagged/non-karma player
|
||||
switch (sklTargetType)
|
||||
switch (skillTargetType)
|
||||
{
|
||||
case TARGET_PARTY:
|
||||
case TARGET_ALLY: // For such skills, checkPvpSkill() is called from Skill.getTargetList()
|
||||
@@ -10212,20 +10212,20 @@ public class PlayerInstance extends Playable
|
||||
}
|
||||
}
|
||||
|
||||
if ((sklTargetType == SkillTargetType.TARGET_HOLY) && !TakeCastle.checkIfOkToCastSealOfRule(this, false))
|
||||
if ((skillTargetType == SkillTargetType.TARGET_HOLY) && !TakeCastle.checkIfOkToCastSealOfRule(this, false))
|
||||
{
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
abortCast();
|
||||
return;
|
||||
}
|
||||
|
||||
if ((sklType == SkillType.SIEGEFLAG) && !SiegeFlag.checkIfOkToPlaceFlag(this, false))
|
||||
if ((skillType == SkillType.SIEGEFLAG) && !SiegeFlag.checkIfOkToPlaceFlag(this, false))
|
||||
{
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
abortCast();
|
||||
return;
|
||||
}
|
||||
else if ((sklType == SkillType.STRSIEGEASSAULT) && !StrSiegeAssault.checkIfOkToUseStriderSiegeAssault(this, false))
|
||||
else if ((skillType == SkillType.STRSIEGEASSAULT) && !StrSiegeAssault.checkIfOkToUseStriderSiegeAssault(this, false))
|
||||
{
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
abortCast();
|
||||
|
Reference in New Issue
Block a user