Addition of Castle first mid victory methods.
Contributed by nasseka.
This commit is contained in:
@@ -1677,6 +1677,13 @@ public class Player extends Playable
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check first castle mid victory.
|
||||
final Castle castle = CastleManager.getInstance().getCastleById(_siegeSide);
|
||||
if ((castle != null) && !castle.isFirstMidVictory())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// If target isn't a player, is self, isn't on same siege or not on same state, not friends.
|
||||
final Player targetPlayer = target.getActingPlayer();
|
||||
if ((targetPlayer == null) || (targetPlayer == this) || (targetPlayer.getSiegeSide() != _siegeSide) || (_siegeState != targetPlayer.getSiegeState()))
|
||||
@@ -1687,7 +1694,6 @@ public class Player extends Playable
|
||||
// Attackers are considered friends only if castle has no owner.
|
||||
if (_siegeState == 1)
|
||||
{
|
||||
final Castle castle = CastleManager.getInstance().getCastleById(_siegeSide);
|
||||
if (castle == null)
|
||||
{
|
||||
return false;
|
||||
@@ -8260,16 +8266,17 @@ public class Player extends Playable
|
||||
final Siege siege = SiegeManager.getInstance().getSiege(getX(), getY(), getZ());
|
||||
if (siege != null)
|
||||
{
|
||||
// Check if a siege is in progress and if attacker and the Player aren't in the Defender clan
|
||||
// Check if a siege is in progress and if attacker and the Player aren't in the Defender clan.
|
||||
if (siege.checkIsDefender(attackerClan) && siege.checkIsDefender(clan))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if a siege is in progress and if attacker and the Player aren't in the Attacker clan
|
||||
// Check if a siege is in progress and if attacker and the Player aren't in the Attacker clan.
|
||||
if (siege.checkIsAttacker(attackerClan) && siege.checkIsAttacker(clan))
|
||||
{
|
||||
return false;
|
||||
// If first mid victory is achieved, attackers can attack attackers.
|
||||
return CastleManager.getInstance().getCastleById(_siegeSide).isFirstMidVictory();
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -85,6 +85,7 @@ public class Castle extends AbstractResidence
|
||||
private final List<Artefact> _artefacts = new ArrayList<>(1);
|
||||
private final Map<Integer, CastleFunction> _function = new ConcurrentHashMap<>();
|
||||
private int _ticketBuyCount = 0;
|
||||
private boolean _isFirstMidVictory = false;
|
||||
|
||||
/** Castle Functions */
|
||||
public static final int FUNC_TELEPORT = 1;
|
||||
@@ -915,6 +916,16 @@ public class Castle extends AbstractResidence
|
||||
return _doors;
|
||||
}
|
||||
|
||||
public boolean isFirstMidVictory()
|
||||
{
|
||||
return _isFirstMidVictory;
|
||||
}
|
||||
|
||||
public void setFirstMidVictory(boolean value)
|
||||
{
|
||||
_isFirstMidVictory = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOwnerId()
|
||||
{
|
||||
|
@@ -338,6 +338,7 @@ public class Siege implements Siegable
|
||||
SiegeGuardManager.getInstance().removeSiegeGuards(getCastle());
|
||||
}
|
||||
_castle.spawnDoor(); // Respawn door to castle
|
||||
_castle.setFirstMidVictory(false);
|
||||
_castle.getZone().setActive(false);
|
||||
_castle.getZone().updateZoneStatusForCharactersInside();
|
||||
_castle.getZone().setSiegeInstance(null);
|
||||
@@ -452,6 +453,7 @@ public class Siege implements Siegable
|
||||
addDefender(sc, SiegeClanType.DEFENDER);
|
||||
}
|
||||
}
|
||||
_castle.setFirstMidVictory(true);
|
||||
teleportPlayer(SiegeTeleportWhoType.Attacker, TeleportWhereType.SIEGEFLAG); // Teleport to the second closest town
|
||||
teleportPlayer(SiegeTeleportWhoType.Spectator, TeleportWhereType.TOWN); // Teleport to the second closest town
|
||||
removeDefenderFlags(); // Removes defenders' flags
|
||||
|
Reference in New Issue
Block a user