Removal of AltPlayerProtectionLevel configuration.
Contributed by G-hamsteR.
This commit is contained in:
@@ -161,11 +161,6 @@ SpawnZ = -3414
|
|||||||
# Default: True
|
# Default: True
|
||||||
AllowRaidBossPetrified = True
|
AllowRaidBossPetrified = True
|
||||||
|
|
||||||
# Newbie player PK/PVP protection.
|
|
||||||
# When is set to 39, then players level 1-39 cannot attack or be attacked by level 40+.
|
|
||||||
# Retail: 0
|
|
||||||
AltPlayerProtectionLevel = 0
|
|
||||||
|
|
||||||
# PvP only in the same grade (0-19, 20-39, 40-51, 52-60, 61-76, 76-85).
|
# PvP only in the same grade (0-19, 20-39, 40-51, 52-60, 61-76, 76-85).
|
||||||
# Default: False
|
# Default: False
|
||||||
AllowLowLvlProtect = False
|
AllowLowLvlProtect = False
|
||||||
|
@@ -651,7 +651,6 @@ public class Config
|
|||||||
public static int HERO_COUNT;
|
public static int HERO_COUNT;
|
||||||
public static int CRUMA_TOWER_LEVEL_RESTRICT;
|
public static int CRUMA_TOWER_LEVEL_RESTRICT;
|
||||||
public static boolean ALLOW_RAID_BOSS_PETRIFIED;
|
public static boolean ALLOW_RAID_BOSS_PETRIFIED;
|
||||||
public static int ALT_PLAYER_PROTECTION_LEVEL;
|
|
||||||
public static boolean ALLOW_LOW_LEVEL_TRADE;
|
public static boolean ALLOW_LOW_LEVEL_TRADE;
|
||||||
public static boolean USE_CHAT_FILTER;
|
public static boolean USE_CHAT_FILTER;
|
||||||
public static int MONSTER_RETURN_DELAY;
|
public static int MONSTER_RETURN_DELAY;
|
||||||
@@ -1886,7 +1885,6 @@ public class Config
|
|||||||
HERO_COUNT = customServerConfig.getInt("HeroCount", 1);
|
HERO_COUNT = customServerConfig.getInt("HeroCount", 1);
|
||||||
CRUMA_TOWER_LEVEL_RESTRICT = customServerConfig.getInt("CrumaTowerLevelRestrict", 56);
|
CRUMA_TOWER_LEVEL_RESTRICT = customServerConfig.getInt("CrumaTowerLevelRestrict", 56);
|
||||||
ALLOW_RAID_BOSS_PETRIFIED = customServerConfig.getBoolean("AllowRaidBossPetrified", true);
|
ALLOW_RAID_BOSS_PETRIFIED = customServerConfig.getBoolean("AllowRaidBossPetrified", true);
|
||||||
ALT_PLAYER_PROTECTION_LEVEL = customServerConfig.getInt("AltPlayerProtectionLevel", 0);
|
|
||||||
MONSTER_RETURN_DELAY = customServerConfig.getInt("MonsterReturnDelay", 1200);
|
MONSTER_RETURN_DELAY = customServerConfig.getInt("MonsterReturnDelay", 1200);
|
||||||
SCROLL_STACKABLE = customServerConfig.getBoolean("ScrollStackable", false);
|
SCROLL_STACKABLE = customServerConfig.getBoolean("ScrollStackable", false);
|
||||||
ALLOW_CHAR_KILL_PROTECT = customServerConfig.getBoolean("AllowLowLvlProtect", false);
|
ALLOW_CHAR_KILL_PROTECT = customServerConfig.getBoolean("AllowLowLvlProtect", false);
|
||||||
|
@@ -628,7 +628,7 @@ public class PlayerInstance extends Playable
|
|||||||
*/
|
*/
|
||||||
public void doPickupItem(WorldObject object)
|
public void doPickupItem(WorldObject object)
|
||||||
{
|
{
|
||||||
PlayerInstance.this.doPickupItem(object);
|
this.doPickupItem(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -637,13 +637,13 @@ public class PlayerInstance extends Playable
|
|||||||
*/
|
*/
|
||||||
public void doInteract(Creature target)
|
public void doInteract(Creature target)
|
||||||
{
|
{
|
||||||
PlayerInstance.this.doInteract(target);
|
this.doInteract(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doAttack(Creature target)
|
public void doAttack(Creature target)
|
||||||
{
|
{
|
||||||
if (isInsidePeaceZone(PlayerInstance.this, target))
|
if (Creature.isInsidePeaceZone(PlayerInstance.this, target))
|
||||||
{
|
{
|
||||||
sendPacket(ActionFailed.STATIC_PACKET);
|
sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
return;
|
return;
|
||||||
@@ -657,11 +657,17 @@ public class PlayerInstance extends Playable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pk protection config
|
// Pk protection config
|
||||||
if (!isGM() && (target instanceof PlayerInstance) && (((PlayerInstance) target).getPvpFlag() == 0) && (((PlayerInstance) target).getKarma() == 0) && ((getLevel() < Config.ALT_PLAYER_PROTECTION_LEVEL) || (target.getLevel() < Config.ALT_PLAYER_PROTECTION_LEVEL)))
|
if (Config.ALLOW_CHAR_KILL_PROTECT && !isGM() && target.isPlayer() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getKarma() == 0))
|
||||||
{
|
{
|
||||||
sendMessage("You can't hit a player that is lower level from you. Target's level: " + Config.ALT_PLAYER_PROTECTION_LEVEL + ".");
|
final int thisLevel = getLevel();
|
||||||
sendPacket(ActionFailed.STATIC_PACKET);
|
final int targetLevel = target.getActingPlayer().getLevel();
|
||||||
return;
|
final Siege siege = SiegeManager.getInstance().getSiege(PlayerInstance.this);
|
||||||
|
if ((((siege == null) || !siege.isInProgress()) && ((thisLevel >= 20) && (targetLevel < 20))) || ((thisLevel >= 40) && (targetLevel < 40)) || ((thisLevel >= 52) && (targetLevel < 52)) || ((thisLevel >= 61) && (targetLevel < 61)) || ((thisLevel >= 76) && (targetLevel < 76)))
|
||||||
|
{
|
||||||
|
sendMessage("You can only engage in PvP if your target is in your level grade.");
|
||||||
|
sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
super.doAttack(target);
|
super.doAttack(target);
|
||||||
@@ -4360,73 +4366,6 @@ public class PlayerInstance extends Playable
|
|||||||
}
|
}
|
||||||
else if (isAutoAttackable(player))
|
else if (isAutoAttackable(player))
|
||||||
{
|
{
|
||||||
if (Config.ALLOW_CHAR_KILL_PROTECT)
|
|
||||||
{
|
|
||||||
final Siege siege = SiegeManager.getInstance().getSiege(player);
|
|
||||||
if ((siege != null) && siege.isInProgress())
|
|
||||||
{
|
|
||||||
if ((player.getLevel() > 20) && (((Creature) player.getTarget()).getLevel() < 20))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 40) && (((Creature) player.getTarget()).getLevel() < 40))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 52) && (((Creature) player.getTarget()).getLevel() < 52))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 61) && (((Creature) player.getTarget()).getLevel() < 61))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 76) && (((Creature) player.getTarget()).getLevel() < 76))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 20) && (((Creature) player.getTarget()).getLevel() > 20))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 40) && (((Creature) player.getTarget()).getLevel() > 40))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 52) && (((Creature) player.getTarget()).getLevel() > 52))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 61) && (((Creature) player.getTarget()).getLevel() > 61))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 76) && (((Creature) player.getTarget()).getLevel() > 76))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.PATHFINDING)
|
if (Config.PATHFINDING)
|
||||||
{
|
{
|
||||||
if (GeoEngine.getInstance().canSeeTarget(player, this))
|
if (GeoEngine.getInstance().canSeeTarget(player, this))
|
||||||
@@ -4539,73 +4478,6 @@ public class PlayerInstance extends Playable
|
|||||||
}
|
}
|
||||||
else if (isAutoAttackable(player))
|
else if (isAutoAttackable(player))
|
||||||
{
|
{
|
||||||
if (Config.ALLOW_CHAR_KILL_PROTECT)
|
|
||||||
{
|
|
||||||
final Siege siege = SiegeManager.getInstance().getSiege(player);
|
|
||||||
if ((siege != null) && siege.isInProgress())
|
|
||||||
{
|
|
||||||
if ((player.getLevel() > 20) && (((Creature) player.getTarget()).getLevel() < 20))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 40) && (((Creature) player.getTarget()).getLevel() < 40))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 52) && (((Creature) player.getTarget()).getLevel() < 52))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 61) && (((Creature) player.getTarget()).getLevel() < 61))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 76) && (((Creature) player.getTarget()).getLevel() < 76))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 20) && (((Creature) player.getTarget()).getLevel() > 20))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 40) && (((Creature) player.getTarget()).getLevel() > 40))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 52) && (((Creature) player.getTarget()).getLevel() > 52))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 61) && (((Creature) player.getTarget()).getLevel() > 61))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 76) && (((Creature) player.getTarget()).getLevel() > 76))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.PATHFINDING)
|
if (Config.PATHFINDING)
|
||||||
{
|
{
|
||||||
if (GeoEngine.getInstance().canSeeTarget(player, this))
|
if (GeoEngine.getInstance().canSeeTarget(player, this))
|
||||||
@@ -5696,7 +5568,7 @@ public class PlayerInstance extends Playable
|
|||||||
{
|
{
|
||||||
if (answer == 1)
|
if (answer == 1)
|
||||||
{
|
{
|
||||||
CoupleManager.getInstance().createCouple(ptarget, PlayerInstance.this);
|
CoupleManager.getInstance().createCouple(ptarget, this);
|
||||||
ptarget.sendMessage("Request to Engage has been >ACCEPTED<");
|
ptarget.sendMessage("Request to Engage has been >ACCEPTED<");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -9968,13 +9840,13 @@ public class PlayerInstance extends Playable
|
|||||||
|
|
||||||
// Like L2OFF you can't heal random purple people without using CTRL
|
// Like L2OFF you can't heal random purple people without using CTRL
|
||||||
final SkillUseHolder skillUseHolder = getCurrentSkill();
|
final SkillUseHolder skillUseHolder = getCurrentSkill();
|
||||||
if ((skillUseHolder != null) && (skill.getSkillType() == SkillType.HEAL) && !skillUseHolder.isCtrlPressed() && (target instanceof PlayerInstance) && (((PlayerInstance) target).getPvpFlag() == 1) && (this != target))
|
if ((skillUseHolder != null) && (skill.getSkillType() == SkillType.HEAL) && !skillUseHolder.isCtrlPressed() && (target instanceof PlayerInstance) && (target.getActingPlayer().getPvpFlag() == 1) && (this != target))
|
||||||
{
|
{
|
||||||
if (((getClanId() == 0) || (((PlayerInstance) target).getClanId() == 0)) || (getClanId() != ((PlayerInstance) target).getClanId()))
|
if (((getClanId() == 0) || (target.getActingPlayer().getClanId() == 0)) || (getClanId() != target.getActingPlayer().getClanId()))
|
||||||
{
|
{
|
||||||
if (((getAllyId() == 0) || (((PlayerInstance) target).getAllyId() == 0)) || (getAllyId() != ((PlayerInstance) target).getAllyId()))
|
if (((getAllyId() == 0) || (target.getActingPlayer().getAllyId() == 0)) || (getAllyId() != target.getActingPlayer().getAllyId()))
|
||||||
{
|
{
|
||||||
if (((getParty() == null) || (((PlayerInstance) target).getParty() == null)) || (!getParty().equals(((PlayerInstance) target).getParty())))
|
if (((getParty() == null) || (target.getActingPlayer().getParty() == null)) || (!getParty().equals(target.getActingPlayer().getParty())))
|
||||||
{
|
{
|
||||||
sendPacket(SystemMessageId.INVALID_TARGET);
|
sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
sendPacket(ActionFailed.STATIC_PACKET);
|
sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
@@ -9985,11 +9857,17 @@ public class PlayerInstance extends Playable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pk protection config
|
// Pk protection config
|
||||||
if (skill.isOffensive() && !isGM() && (target instanceof PlayerInstance) && (((PlayerInstance) target).getPvpFlag() == 0) && (((PlayerInstance) target).getKarma() == 0) && ((getLevel() < Config.ALT_PLAYER_PROTECTION_LEVEL) || (((PlayerInstance) target).getLevel() < Config.ALT_PLAYER_PROTECTION_LEVEL)))
|
if (Config.ALLOW_CHAR_KILL_PROTECT && skill.isOffensive() && !isGM() && target.isPlayer() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getKarma() == 0))
|
||||||
{
|
{
|
||||||
sendMessage("You can't hit a player that is lower level from you. Target's level: " + Config.ALT_PLAYER_PROTECTION_LEVEL + ".");
|
final int thisLevel = getLevel();
|
||||||
sendPacket(ActionFailed.STATIC_PACKET);
|
final int targetLevel = target.getActingPlayer().getLevel();
|
||||||
return;
|
final Siege siege = SiegeManager.getInstance().getSiege(this);
|
||||||
|
if ((((siege == null) || !siege.isInProgress()) && ((thisLevel >= 20) && (targetLevel < 20))) || ((thisLevel >= 40) && (targetLevel < 40)) || ((thisLevel >= 52) && (targetLevel < 52)) || ((thisLevel >= 61) && (targetLevel < 61)) || ((thisLevel >= 76) && (targetLevel < 76)))
|
||||||
|
{
|
||||||
|
sendMessage("You can only engage in PvP if your target is in your level grade.");
|
||||||
|
sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ************************************* Check skill availability *******************************************
|
// ************************************* Check skill availability *******************************************
|
||||||
@@ -10381,7 +10259,7 @@ public class PlayerInstance extends Playable
|
|||||||
// Check if player and target are in events and on the same team.
|
// Check if player and target are in events and on the same team.
|
||||||
if (target instanceof PlayerInstance)
|
if (target instanceof PlayerInstance)
|
||||||
{
|
{
|
||||||
if ((skill.isOffensive() && (_inEventTvT && ((PlayerInstance) target)._inEventTvT && TvT.isStarted() && !_teamNameTvT.equals(((PlayerInstance) target)._teamNameTvT))) || (_inEventCTF && ((PlayerInstance) target)._inEventCTF && CTF.isStarted() && !_teamNameCTF.equals(((PlayerInstance) target)._teamNameCTF)) || (_inEventDM && ((PlayerInstance) target)._inEventDM && DM.hasStarted()) || (_inEventVIP && ((PlayerInstance) target)._inEventVIP && VIP._started))
|
if ((skill.isOffensive() && (_inEventTvT && target.getActingPlayer()._inEventTvT && TvT.isStarted() && !_teamNameTvT.equals(target.getActingPlayer()._teamNameTvT))) || (_inEventCTF && target.getActingPlayer()._inEventCTF && CTF.isStarted() && !_teamNameCTF.equals(target.getActingPlayer()._teamNameCTF)) || (_inEventDM && target.getActingPlayer()._inEventDM && DM.hasStarted()) || (_inEventVIP && target.getActingPlayer()._inEventVIP && VIP._started))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -10401,29 +10279,29 @@ public class PlayerInstance extends Playable
|
|||||||
(target != this) && // target is not self and
|
(target != this) && // target is not self and
|
||||||
(target instanceof PlayerInstance) && // target is PlayerInstance and
|
(target instanceof PlayerInstance) && // target is PlayerInstance and
|
||||||
!isInsideZone(ZoneId.PVP) && // Pc is not in PvP zone
|
!isInsideZone(ZoneId.PVP) && // Pc is not in PvP zone
|
||||||
!((PlayerInstance) target).isInsideZone(ZoneId.PVP)) // target is not in PvP zone
|
!target.getActingPlayer().isInsideZone(ZoneId.PVP)) // target is not in PvP zone
|
||||||
{
|
{
|
||||||
final SkillUseHolder skillUseHolder = getCurrentSkill();
|
final SkillUseHolder skillUseHolder = getCurrentSkill();
|
||||||
if (skill.isPvpSkill()) // pvp skill
|
if (skill.isPvpSkill()) // pvp skill
|
||||||
{
|
{
|
||||||
if ((getClan() != null) && (((PlayerInstance) target).getClan() != null) && getClan().isAtWarWith(((PlayerInstance) target).getClan().getClanId()) && ((PlayerInstance) target).getClan().isAtWarWith(getClan().getClanId()))
|
if ((getClan() != null) && (target.getActingPlayer().getClan() != null) && getClan().isAtWarWith(target.getActingPlayer().getClan().getClanId()) && target.getActingPlayer().getClan().isAtWarWith(getClan().getClanId()))
|
||||||
{
|
{
|
||||||
return true; // in clan war player can attack whites even with sleep etc.
|
return true; // in clan war player can attack whites even with sleep etc.
|
||||||
}
|
}
|
||||||
if ((((PlayerInstance) target).getPvpFlag() == 0) && // target's pvp flag is not set and
|
if ((target.getActingPlayer().getPvpFlag() == 0) && // target's pvp flag is not set and
|
||||||
(((PlayerInstance) target).getKarma() == 0)) // target has no karma
|
(target.getActingPlayer().getKarma() == 0)) // target has no karma
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((skillUseHolder != null) && !skillUseHolder.isCtrlPressed() && skill.isOffensive() && !srcIsSummon)
|
else if ((skillUseHolder != null) && !skillUseHolder.isCtrlPressed() && skill.isOffensive() && !srcIsSummon)
|
||||||
{
|
{
|
||||||
if ((getClan() != null) && (((PlayerInstance) target).getClan() != null) && getClan().isAtWarWith(((PlayerInstance) target).getClan().getClanId()) && ((PlayerInstance) target).getClan().isAtWarWith(getClan().getClanId()))
|
if ((getClan() != null) && (target.getActingPlayer().getClan() != null) && getClan().isAtWarWith(target.getActingPlayer().getClan().getClanId()) && target.getActingPlayer().getClan().isAtWarWith(getClan().getClanId()))
|
||||||
{
|
{
|
||||||
return true; // in clan war player can attack whites even without ctrl
|
return true; // in clan war player can attack whites even without ctrl
|
||||||
}
|
}
|
||||||
if ((((PlayerInstance) target).getPvpFlag() == 0) && // target's pvp flag is not set and
|
if ((target.getActingPlayer().getPvpFlag() == 0) && // target's pvp flag is not set and
|
||||||
(((PlayerInstance) target).getKarma() == 0)) // target has no karma
|
(target.getActingPlayer().getKarma() == 0)) // target has no karma
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -11116,7 +10994,7 @@ public class PlayerInstance extends Playable
|
|||||||
if (!_observerMode)
|
if (!_observerMode)
|
||||||
{
|
{
|
||||||
LOGGER.warning("Player " + getName() + " request leave observer mode when he not use it!");
|
LOGGER.warning("Player " + getName() + " request leave observer mode when he not use it!");
|
||||||
Util.handleIllegalPlayerAction(PlayerInstance.this, "Warning!! Character " + getName() + " tried to cheat in observer mode.", Config.DEFAULT_PUNISH);
|
Util.handleIllegalPlayerAction(this, "Warning!! Character " + getName() + " tried to cheat in observer mode.", Config.DEFAULT_PUNISH);
|
||||||
}
|
}
|
||||||
setTarget(null);
|
setTarget(null);
|
||||||
setXYZ(_obsX, _obsY, _obsZ);
|
setXYZ(_obsX, _obsY, _obsZ);
|
||||||
@@ -14708,7 +14586,7 @@ public class PlayerInstance extends Playable
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isInOlympiadMode() && (target instanceof PlayerInstance) && ((PlayerInstance) target).isInOlympiadMode() && (((PlayerInstance) target).getOlympiadGameId() == getOlympiadGameId()))
|
if (isInOlympiadMode() && (target instanceof PlayerInstance) && target.getActingPlayer().isInOlympiadMode() && (target.getActingPlayer().getOlympiadGameId() == getOlympiadGameId()))
|
||||||
{
|
{
|
||||||
Olympiad.getInstance().notifyCompetitorDamage(this, damage, getOlympiadGameId());
|
Olympiad.getInstance().notifyCompetitorDamage(this, damage, getOlympiadGameId());
|
||||||
}
|
}
|
||||||
|
@@ -161,11 +161,6 @@ SpawnZ = -3414
|
|||||||
# Default: True
|
# Default: True
|
||||||
AllowRaidBossPetrified = True
|
AllowRaidBossPetrified = True
|
||||||
|
|
||||||
# Newbie player PK/PVP protection.
|
|
||||||
# When is set to 39, then players level 1-39 cannot attack or be attacked by level 40+.
|
|
||||||
# Retail: 0
|
|
||||||
AltPlayerProtectionLevel = 0
|
|
||||||
|
|
||||||
# PvP only in the same grade (0-19, 20-39, 40-51, 52-60, 61-76, 76-85).
|
# PvP only in the same grade (0-19, 20-39, 40-51, 52-60, 61-76, 76-85).
|
||||||
# Default: False
|
# Default: False
|
||||||
AllowLowLvlProtect = False
|
AllowLowLvlProtect = False
|
||||||
|
@@ -673,7 +673,6 @@ public class Config
|
|||||||
public static int HERO_COUNT;
|
public static int HERO_COUNT;
|
||||||
public static int CRUMA_TOWER_LEVEL_RESTRICT;
|
public static int CRUMA_TOWER_LEVEL_RESTRICT;
|
||||||
public static boolean ALLOW_RAID_BOSS_PETRIFIED;
|
public static boolean ALLOW_RAID_BOSS_PETRIFIED;
|
||||||
public static int ALT_PLAYER_PROTECTION_LEVEL;
|
|
||||||
public static boolean ALLOW_LOW_LEVEL_TRADE;
|
public static boolean ALLOW_LOW_LEVEL_TRADE;
|
||||||
public static boolean USE_CHAT_FILTER;
|
public static boolean USE_CHAT_FILTER;
|
||||||
public static int MONSTER_RETURN_DELAY;
|
public static int MONSTER_RETURN_DELAY;
|
||||||
@@ -1939,7 +1938,6 @@ public class Config
|
|||||||
HERO_COUNT = customServerConfig.getInt("HeroCount", 1);
|
HERO_COUNT = customServerConfig.getInt("HeroCount", 1);
|
||||||
CRUMA_TOWER_LEVEL_RESTRICT = customServerConfig.getInt("CrumaTowerLevelRestrict", 56);
|
CRUMA_TOWER_LEVEL_RESTRICT = customServerConfig.getInt("CrumaTowerLevelRestrict", 56);
|
||||||
ALLOW_RAID_BOSS_PETRIFIED = customServerConfig.getBoolean("AllowRaidBossPetrified", true);
|
ALLOW_RAID_BOSS_PETRIFIED = customServerConfig.getBoolean("AllowRaidBossPetrified", true);
|
||||||
ALT_PLAYER_PROTECTION_LEVEL = customServerConfig.getInt("AltPlayerProtectionLevel", 0);
|
|
||||||
MONSTER_RETURN_DELAY = customServerConfig.getInt("MonsterReturnDelay", 1200);
|
MONSTER_RETURN_DELAY = customServerConfig.getInt("MonsterReturnDelay", 1200);
|
||||||
SCROLL_STACKABLE = customServerConfig.getBoolean("ScrollStackable", false);
|
SCROLL_STACKABLE = customServerConfig.getBoolean("ScrollStackable", false);
|
||||||
ALLOW_CHAR_KILL_PROTECT = customServerConfig.getBoolean("AllowLowLvlProtect", false);
|
ALLOW_CHAR_KILL_PROTECT = customServerConfig.getBoolean("AllowLowLvlProtect", false);
|
||||||
|
@@ -642,7 +642,7 @@ public class PlayerInstance extends Playable
|
|||||||
*/
|
*/
|
||||||
public void doPickupItem(WorldObject object)
|
public void doPickupItem(WorldObject object)
|
||||||
{
|
{
|
||||||
PlayerInstance.this.doPickupItem(object);
|
this.doPickupItem(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -651,7 +651,7 @@ public class PlayerInstance extends Playable
|
|||||||
*/
|
*/
|
||||||
public void doInteract(Creature target)
|
public void doInteract(Creature target)
|
||||||
{
|
{
|
||||||
PlayerInstance.this.doInteract(target);
|
this.doInteract(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -671,11 +671,17 @@ public class PlayerInstance extends Playable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pk protection config
|
// Pk protection config
|
||||||
if (!isGM() && (target instanceof PlayerInstance) && (((PlayerInstance) target).getPvpFlag() == 0) && (((PlayerInstance) target).getKarma() == 0) && ((getLevel() < Config.ALT_PLAYER_PROTECTION_LEVEL) || (target.getLevel() < Config.ALT_PLAYER_PROTECTION_LEVEL)))
|
if (Config.ALLOW_CHAR_KILL_PROTECT && !isGM() && target.isPlayer() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getKarma() == 0))
|
||||||
{
|
{
|
||||||
sendMessage("You can't hit a player that is lower level from you. Target's level: " + Config.ALT_PLAYER_PROTECTION_LEVEL + ".");
|
final int thisLevel = getLevel();
|
||||||
sendPacket(ActionFailed.STATIC_PACKET);
|
final int targetLevel = target.getActingPlayer().getLevel();
|
||||||
return;
|
final Siege siege = SiegeManager.getInstance().getSiege(PlayerInstance.this);
|
||||||
|
if ((((siege == null) || !siege.isInProgress()) && ((thisLevel >= 20) && (targetLevel < 20))) || ((thisLevel >= 40) && (targetLevel < 40)) || ((thisLevel >= 52) && (targetLevel < 52)) || ((thisLevel >= 61) && (targetLevel < 61)) || ((thisLevel >= 76) && (targetLevel < 76)))
|
||||||
|
{
|
||||||
|
sendMessage("You can only engage in PvP if your target is in your level grade.");
|
||||||
|
sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
super.doAttack(target);
|
super.doAttack(target);
|
||||||
@@ -4436,73 +4442,6 @@ public class PlayerInstance extends Playable
|
|||||||
}
|
}
|
||||||
else if (isAutoAttackable(player))
|
else if (isAutoAttackable(player))
|
||||||
{
|
{
|
||||||
if (Config.ALLOW_CHAR_KILL_PROTECT)
|
|
||||||
{
|
|
||||||
final Siege siege = SiegeManager.getInstance().getSiege(player);
|
|
||||||
if ((siege != null) && siege.isInProgress())
|
|
||||||
{
|
|
||||||
if ((player.getLevel() > 20) && (((Creature) player.getTarget()).getLevel() < 20))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 40) && (((Creature) player.getTarget()).getLevel() < 40))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 52) && (((Creature) player.getTarget()).getLevel() < 52))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 61) && (((Creature) player.getTarget()).getLevel() < 61))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 76) && (((Creature) player.getTarget()).getLevel() < 76))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 20) && (((Creature) player.getTarget()).getLevel() > 20))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 40) && (((Creature) player.getTarget()).getLevel() > 40))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 52) && (((Creature) player.getTarget()).getLevel() > 52))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 61) && (((Creature) player.getTarget()).getLevel() > 61))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 76) && (((Creature) player.getTarget()).getLevel() > 76))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Player with lvl < 21 can't attack a cursed weapon holder
|
// Player with lvl < 21 can't attack a cursed weapon holder
|
||||||
// And a cursed weapon holder can't attack players with lvl < 21
|
// And a cursed weapon holder can't attack players with lvl < 21
|
||||||
if ((isCursedWeaponEquiped() && (player.getLevel() < 21)) || (player.isCursedWeaponEquiped() && (getLevel() < 21)))
|
if ((isCursedWeaponEquiped() && (player.getLevel() < 21)) || (player.isCursedWeaponEquiped() && (getLevel() < 21)))
|
||||||
@@ -4621,73 +4560,6 @@ public class PlayerInstance extends Playable
|
|||||||
}
|
}
|
||||||
else if (isAutoAttackable(player))
|
else if (isAutoAttackable(player))
|
||||||
{
|
{
|
||||||
if (Config.ALLOW_CHAR_KILL_PROTECT)
|
|
||||||
{
|
|
||||||
final Siege siege = SiegeManager.getInstance().getSiege(player);
|
|
||||||
if ((siege != null) && siege.isInProgress())
|
|
||||||
{
|
|
||||||
if ((player.getLevel() > 20) && (((Creature) player.getTarget()).getLevel() < 20))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 40) && (((Creature) player.getTarget()).getLevel() < 40))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 52) && (((Creature) player.getTarget()).getLevel() < 52))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 61) && (((Creature) player.getTarget()).getLevel() < 61))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() > 76) && (((Creature) player.getTarget()).getLevel() < 76))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 20) && (((Creature) player.getTarget()).getLevel() > 20))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 40) && (((Creature) player.getTarget()).getLevel() > 40))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 52) && (((Creature) player.getTarget()).getLevel() > 52))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 61) && (((Creature) player.getTarget()).getLevel() > 61))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((player.getLevel() < 76) && (((Creature) player.getTarget()).getLevel() > 76))
|
|
||||||
{
|
|
||||||
player.sendMessage("Your target is not in your grade!");
|
|
||||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Player with lvl < 21 can't attack a cursed weapon holder
|
// Player with lvl < 21 can't attack a cursed weapon holder
|
||||||
// And a cursed weapon holder can't attack players with lvl < 21
|
// And a cursed weapon holder can't attack players with lvl < 21
|
||||||
if ((isCursedWeaponEquiped() && (player.getLevel() < 21)) || (player.isCursedWeaponEquiped() && (getLevel() < 21)))
|
if ((isCursedWeaponEquiped() && (player.getLevel() < 21)) || (player.isCursedWeaponEquiped() && (getLevel() < 21)))
|
||||||
@@ -5793,7 +5665,7 @@ public class PlayerInstance extends Playable
|
|||||||
{
|
{
|
||||||
if (answer == 1)
|
if (answer == 1)
|
||||||
{
|
{
|
||||||
CoupleManager.getInstance().createCouple(ptarget, PlayerInstance.this);
|
CoupleManager.getInstance().createCouple(ptarget, this);
|
||||||
ptarget.sendMessage("Request to Engage has been >ACCEPTED<");
|
ptarget.sendMessage("Request to Engage has been >ACCEPTED<");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -6289,7 +6161,7 @@ public class PlayerInstance extends Playable
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If in duel and you kill (only can kill l2summon), do nothing
|
// If in duel and you kill (only can kill summon), do nothing
|
||||||
if (isInDuel() && targetPlayer.isInDuel())
|
if (isInDuel() && targetPlayer.isInDuel())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -10130,13 +10002,13 @@ public class PlayerInstance extends Playable
|
|||||||
|
|
||||||
// Like L2OFF you can't heal random purple people without using CTRL
|
// Like L2OFF you can't heal random purple people without using CTRL
|
||||||
final SkillUseHolder skillUseHolder = getCurrentSkill();
|
final SkillUseHolder skillUseHolder = getCurrentSkill();
|
||||||
if ((skillUseHolder != null) && (skill.getSkillType() == SkillType.HEAL) && !skillUseHolder.isCtrlPressed() && (target instanceof PlayerInstance) && (((PlayerInstance) target).getPvpFlag() == 1) && (this != target))
|
if ((skillUseHolder != null) && (skill.getSkillType() == SkillType.HEAL) && !skillUseHolder.isCtrlPressed() && (target instanceof PlayerInstance) && (target.getActingPlayer().getPvpFlag() == 1) && (this != target))
|
||||||
{
|
{
|
||||||
if (((getClanId() == 0) || (((PlayerInstance) target).getClanId() == 0)) || (getClanId() != ((PlayerInstance) target).getClanId()))
|
if (((getClanId() == 0) || (target.getActingPlayer().getClanId() == 0)) || (getClanId() != target.getActingPlayer().getClanId()))
|
||||||
{
|
{
|
||||||
if (((getAllyId() == 0) || (((PlayerInstance) target).getAllyId() == 0)) || (getAllyId() != ((PlayerInstance) target).getAllyId()))
|
if (((getAllyId() == 0) || (target.getActingPlayer().getAllyId() == 0)) || (getAllyId() != target.getActingPlayer().getAllyId()))
|
||||||
{
|
{
|
||||||
if (((getParty() == null) || (((PlayerInstance) target).getParty() == null)) || (!getParty().equals(((PlayerInstance) target).getParty())))
|
if (((getParty() == null) || (target.getActingPlayer().getParty() == null)) || (!getParty().equals(target.getActingPlayer().getParty())))
|
||||||
{
|
{
|
||||||
sendPacket(SystemMessageId.INVALID_TARGET);
|
sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
sendPacket(ActionFailed.STATIC_PACKET);
|
sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
@@ -10147,7 +10019,7 @@ public class PlayerInstance extends Playable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Are the target and the player in the same duel?
|
// Are the target and the player in the same duel?
|
||||||
if (isInDuel() && (!(target instanceof PlayerInstance) || (((PlayerInstance) target).getDuelId() != getDuelId())) && (!(target instanceof SummonInstance) || (((Summon) target).getOwner().getDuelId() != getDuelId())))
|
if (isInDuel() && (!(target instanceof PlayerInstance) || (target.getActingPlayer().getDuelId() != getDuelId())) && (!(target instanceof SummonInstance) || (((Summon) target).getOwner().getDuelId() != getDuelId())))
|
||||||
{
|
{
|
||||||
sendMessage("You cannot do this while duelling.");
|
sendMessage("You cannot do this while duelling.");
|
||||||
sendPacket(ActionFailed.STATIC_PACKET);
|
sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
@@ -10155,11 +10027,17 @@ public class PlayerInstance extends Playable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pk protection config
|
// Pk protection config
|
||||||
if (skill.isOffensive() && !isGM() && (target instanceof PlayerInstance) && (((PlayerInstance) target).getPvpFlag() == 0) && (((PlayerInstance) target).getKarma() == 0) && ((getLevel() < Config.ALT_PLAYER_PROTECTION_LEVEL) || (((PlayerInstance) target).getLevel() < Config.ALT_PLAYER_PROTECTION_LEVEL)))
|
if (Config.ALLOW_CHAR_KILL_PROTECT && skill.isOffensive() && !isGM() && (target.isPlayer()) && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getKarma() == 0))
|
||||||
{
|
{
|
||||||
sendMessage("You can't hit a player that is lower level from you. Target's level: " + Config.ALT_PLAYER_PROTECTION_LEVEL + ".");
|
final int thisLevel = getLevel();
|
||||||
sendPacket(ActionFailed.STATIC_PACKET);
|
final int targetLevel = target.getActingPlayer().getLevel();
|
||||||
return;
|
final Siege siege = SiegeManager.getInstance().getSiege(this);
|
||||||
|
if ((((siege == null) || !siege.isInProgress()) && ((thisLevel >= 20) && (targetLevel < 20))) || ((thisLevel >= 40) && (targetLevel < 40)) || ((thisLevel >= 52) && (targetLevel < 52)) || ((thisLevel >= 61) && (targetLevel < 61)) || ((thisLevel >= 76) && (targetLevel < 76)))
|
||||||
|
{
|
||||||
|
sendMessage("You can only engage in PvP if your target is in your level grade.");
|
||||||
|
sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ************************************* Check skill availability *******************************************
|
// ************************************* Check skill availability *******************************************
|
||||||
@@ -10552,7 +10430,7 @@ public class PlayerInstance extends Playable
|
|||||||
// Check if player and target are in events and on the same team.
|
// Check if player and target are in events and on the same team.
|
||||||
if (target instanceof PlayerInstance)
|
if (target instanceof PlayerInstance)
|
||||||
{
|
{
|
||||||
if ((skill.isOffensive() && (_inEventTvT && ((PlayerInstance) target)._inEventTvT && TvT.isStarted() && !_teamNameTvT.equals(((PlayerInstance) target)._teamNameTvT))) || (_inEventCTF && ((PlayerInstance) target)._inEventCTF && CTF.isStarted() && !_teamNameCTF.equals(((PlayerInstance) target)._teamNameCTF)) || (_inEventDM && ((PlayerInstance) target)._inEventDM && DM.hasStarted()) || (_inEventVIP && ((PlayerInstance) target)._inEventVIP && VIP._started))
|
if ((skill.isOffensive() && (_inEventTvT && target.getActingPlayer()._inEventTvT && TvT.isStarted() && !_teamNameTvT.equals(target.getActingPlayer()._teamNameTvT))) || (_inEventCTF && target.getActingPlayer()._inEventCTF && CTF.isStarted() && !_teamNameCTF.equals(target.getActingPlayer()._teamNameCTF)) || (_inEventDM && target.getActingPlayer()._inEventDM && DM.hasStarted()) || (_inEventVIP && target.getActingPlayer()._inEventVIP && VIP._started))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -10571,31 +10449,31 @@ public class PlayerInstance extends Playable
|
|||||||
if ((target != null) && // target not null and
|
if ((target != null) && // target not null and
|
||||||
(target != this) && // target is not self and
|
(target != this) && // target is not self and
|
||||||
(target instanceof PlayerInstance) && // target is PlayerInstance and
|
(target instanceof PlayerInstance) && // target is PlayerInstance and
|
||||||
(!isInDuel() || (((PlayerInstance) target).getDuelId() != getDuelId())) && // self is not in a duel and attacking opponent
|
(!isInDuel() || (target.getActingPlayer().getDuelId() != getDuelId())) && // self is not in a duel and attacking opponent
|
||||||
!isInsideZone(ZoneId.PVP) && // Pc is not in PvP zone
|
!isInsideZone(ZoneId.PVP) && // Pc is not in PvP zone
|
||||||
!((PlayerInstance) target).isInsideZone(ZoneId.PVP)) // target is not in PvP zone
|
!target.getActingPlayer().isInsideZone(ZoneId.PVP)) // target is not in PvP zone
|
||||||
{
|
{
|
||||||
final SkillUseHolder skillUseHolder = getCurrentSkill();
|
final SkillUseHolder skillUseHolder = getCurrentSkill();
|
||||||
if (skill.isPvpSkill()) // pvp skill
|
if (skill.isPvpSkill()) // pvp skill
|
||||||
{
|
{
|
||||||
if ((getClan() != null) && (((PlayerInstance) target).getClan() != null) && getClan().isAtWarWith(((PlayerInstance) target).getClan().getClanId()) && ((PlayerInstance) target).getClan().isAtWarWith(getClan().getClanId()))
|
if ((getClan() != null) && (target.getActingPlayer().getClan() != null) && getClan().isAtWarWith(target.getActingPlayer().getClan().getClanId()) && target.getActingPlayer().getClan().isAtWarWith(getClan().getClanId()))
|
||||||
{
|
{
|
||||||
return true; // in clan war player can attack whites even with sleep etc.
|
return true; // in clan war player can attack whites even with sleep etc.
|
||||||
}
|
}
|
||||||
if ((((PlayerInstance) target).getPvpFlag() == 0) && // target's pvp flag is not set and
|
if ((target.getActingPlayer().getPvpFlag() == 0) && // target's pvp flag is not set and
|
||||||
(((PlayerInstance) target).getKarma() == 0)) // target has no karma
|
(target.getActingPlayer().getKarma() == 0)) // target has no karma
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((skillUseHolder != null) && !skillUseHolder.isCtrlPressed() && skill.isOffensive() && !srcIsSummon)
|
else if ((skillUseHolder != null) && !skillUseHolder.isCtrlPressed() && skill.isOffensive() && !srcIsSummon)
|
||||||
{
|
{
|
||||||
if ((getClan() != null) && (((PlayerInstance) target).getClan() != null) && getClan().isAtWarWith(((PlayerInstance) target).getClan().getClanId()) && ((PlayerInstance) target).getClan().isAtWarWith(getClan().getClanId()))
|
if ((getClan() != null) && (target.getActingPlayer().getClan() != null) && getClan().isAtWarWith(target.getActingPlayer().getClan().getClanId()) && target.getActingPlayer().getClan().isAtWarWith(getClan().getClanId()))
|
||||||
{
|
{
|
||||||
return true; // in clan war player can attack whites even without ctrl
|
return true; // in clan war player can attack whites even without ctrl
|
||||||
}
|
}
|
||||||
if ((((PlayerInstance) target).getPvpFlag() == 0) && // target's pvp flag is not set and
|
if ((target.getActingPlayer().getPvpFlag() == 0) && // target's pvp flag is not set and
|
||||||
(((PlayerInstance) target).getKarma() == 0)) // target has no karma
|
(target.getActingPlayer().getKarma() == 0)) // target has no karma
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -11288,7 +11166,7 @@ public class PlayerInstance extends Playable
|
|||||||
if (!_observerMode)
|
if (!_observerMode)
|
||||||
{
|
{
|
||||||
LOGGER.warning("Player " + getName() + " request leave observer mode when he not use it!");
|
LOGGER.warning("Player " + getName() + " request leave observer mode when he not use it!");
|
||||||
Util.handleIllegalPlayerAction(PlayerInstance.this, "Warning!! Character " + getName() + " tried to cheat in observer mode.", Config.DEFAULT_PUNISH);
|
Util.handleIllegalPlayerAction(this, "Warning!! Character " + getName() + " tried to cheat in observer mode.", Config.DEFAULT_PUNISH);
|
||||||
}
|
}
|
||||||
setTarget(null);
|
setTarget(null);
|
||||||
setXYZ(_obsX, _obsY, _obsZ);
|
setXYZ(_obsX, _obsY, _obsZ);
|
||||||
@@ -15065,7 +14943,7 @@ public class PlayerInstance extends Playable
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isInOlympiadMode() && (target instanceof PlayerInstance) && ((PlayerInstance) target).isInOlympiadMode() && (((PlayerInstance) target).getOlympiadGameId() == getOlympiadGameId()))
|
if (isInOlympiadMode() && (target instanceof PlayerInstance) && target.getActingPlayer().isInOlympiadMode() && (target.getActingPlayer().getOlympiadGameId() == getOlympiadGameId()))
|
||||||
{
|
{
|
||||||
Olympiad.getInstance().notifyCompetitorDamage(this, damage, getOlympiadGameId());
|
Olympiad.getInstance().notifyCompetitorDamage(this, damage, getOlympiadGameId());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user