Siege Fixes

This commit is contained in:
Laika 2022-05-05 00:14:52 -07:00
parent 9750e585cb
commit acca5f3dee
3 changed files with 18 additions and 4 deletions

View file

@ -69,13 +69,15 @@ public class City {
return state.equals(CityState.SIEGE); return state.equals(CityState.SIEGE);
} }
public void startSiege(Nation nation) { public boolean startSiege(Nation nation) {
if(state.equals(CityState.RECOVERY)) return false;
state = CityState.SIEGE; state = CityState.SIEGE;
Bukkit.broadcast(Component.text(ChatColor.RED + nation.getName() + ChatColor.GOLD + " has begun a siege against the city of " + ChatColor.AQUA + getName())); Bukkit.broadcast(Component.text(ChatColor.RED + nation.getName() + ChatColor.GOLD + " has begun a siege against the city of " + ChatColor.AQUA + getName()));
for(var player : Bukkit.getOnlinePlayers()) { for(var player : Bukkit.getOnlinePlayers()) {
player.playSound(player.getLocation(), Sound.ITEM_TRIDENT_THUNDER, 1F, 1F); player.playSound(player.getLocation(), Sound.ITEM_TRIDENT_THUNDER, 1F, 1F);
} }
attacker = nation; attacker = nation;
return true;
} }
public void damage() { public void damage() {
@ -117,6 +119,7 @@ public class City {
} }
OpenNAW.getInstance().getActionLogger().cancelDefenseActions(this); OpenNAW.getInstance().getActionLogger().cancelDefenseActions(this);
attacker = null; attacker = null;
this.state = CityState.RECOVERY; //Start recovery, prohibit sieges until restart.
} }
public void capture() { public void capture() {

View file

@ -4,5 +4,7 @@ public enum CityState {
NORMAL, NORMAL,
SIEGE SIEGE,
RECOVERY
} }

View file

@ -25,11 +25,20 @@ public class CityAttackAction extends Action{
} }
public void initiation() { public void initiation() {
city.getPoint().getWorld().playSound(city.getPoint(), Sound.ENTITY_FIREWORK_ROCKET_BLAST, 1, 1);
if(!city.underSiege()) { if(!city.underSiege()) {
var nation = OpenNAW.getInstance().getNationHandler().getNationByPlayer(player.getUniqueId()); var nation = OpenNAW.getInstance().getNationHandler().getNationByPlayer(player.getUniqueId());
//Initiate siege. //Initiate siege.
city.startSiege(nation); if(city.startSiege(nation)) {
city.getPoint().getWorld().playSound(city.getPoint(), Sound.ENTITY_FIREWORK_ROCKET_BLAST, 1, 1);
} else {
//Cancel action.
if(getPlayer().isOnline()) {
var player = getPlayer().getPlayer();
player.sendMessage(ChatColor.RED + "This city is in recovery! " +
"The guards are on heightened alert and it cannot be attacked until it has finished recovering!");
}
this.setCancelled(true);
}
} }
} }