forked from MagicBane/Server
cannot sub after placing bane, zerg multiplier reset when bane ends
This commit is contained in:
@@ -21,6 +21,7 @@ import engine.net.client.ClientConnection;
|
|||||||
import engine.net.client.msg.ClientNetMsg;
|
import engine.net.client.msg.ClientNetMsg;
|
||||||
import engine.net.client.msg.ErrorPopupMsg;
|
import engine.net.client.msg.ErrorPopupMsg;
|
||||||
import engine.net.client.msg.guild.InviteToSubMsg;
|
import engine.net.client.msg.guild.InviteToSubMsg;
|
||||||
|
import engine.objects.Bane;
|
||||||
import engine.objects.Guild;
|
import engine.objects.Guild;
|
||||||
import engine.objects.GuildStatusController;
|
import engine.objects.GuildStatusController;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
@@ -112,6 +113,12 @@ public class InviteToSubHandler extends AbstractClientMsgHandler {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//ensure bane to be subbed does not have a bane dropped
|
||||||
|
for(Bane bane : Bane.banes.values()){
|
||||||
|
if(bane.getOwner().guild.getNation().equals(targetGuild))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
//all tests passed, let's send invite.
|
//all tests passed, let's send invite.
|
||||||
|
|
||||||
if (target.getClientConnection() != null) {
|
if (target.getClientConnection() != null) {
|
||||||
|
|||||||
@@ -57,6 +57,8 @@ public final class Bane {
|
|||||||
// Internal cache for banes
|
// Internal cache for banes
|
||||||
private ActivateBaneJob activateBaneJob;
|
private ActivateBaneJob activateBaneJob;
|
||||||
|
|
||||||
|
public ArrayList<PlayerCharacter> affected_players;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ResultSet Constructor
|
* ResultSet Constructor
|
||||||
*/
|
*/
|
||||||
@@ -694,6 +696,9 @@ public final class Bane {
|
|||||||
toUnprotect.setProtectionState(ProtectionState.NONE);
|
toUnprotect.setProtectionState(ProtectionState.NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(PlayerCharacter affected : this.affected_players)
|
||||||
|
affected.ZergMultiplier = 1.0f;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isErrant() {
|
public boolean isErrant() {
|
||||||
@@ -736,6 +741,8 @@ public final class Bane {
|
|||||||
if(city == null)
|
if(city == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if(this.affected_players == null)
|
||||||
|
this.affected_players = new ArrayList<>();
|
||||||
city.onEnter();
|
city.onEnter();
|
||||||
|
|
||||||
ArrayList<Integer> attackers = new ArrayList<>();
|
ArrayList<Integer> attackers = new ArrayList<>();
|
||||||
@@ -779,18 +786,24 @@ public final class Bane {
|
|||||||
float defenderMultiplier = ZergManager.getCurrentMultiplier(defenderSize,this.capSize);
|
float defenderMultiplier = ZergManager.getCurrentMultiplier(defenderSize,this.capSize);
|
||||||
for(int uuid : attackers){
|
for(int uuid : attackers){
|
||||||
PlayerCharacter player = PlayerCharacter.getPlayerCharacter(uuid);
|
PlayerCharacter player = PlayerCharacter.getPlayerCharacter(uuid);
|
||||||
if(inSiegeRange.contains(player)) //player is still physically here, needs updated multiplier
|
if(inSiegeRange.contains(player)) { //player is still physically here, needs updated multiplier
|
||||||
player.ZergMultiplier = attackerMultiplier;
|
player.ZergMultiplier = attackerMultiplier;
|
||||||
else
|
this.affected_players.add(player);
|
||||||
|
}else {
|
||||||
player.ZergMultiplier = 1.0f;
|
player.ZergMultiplier = 1.0f;
|
||||||
|
this.affected_players.add(player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int uuid : defenders){
|
for(int uuid : defenders){
|
||||||
PlayerCharacter player = PlayerCharacter.getPlayerCharacter(uuid);
|
PlayerCharacter player = PlayerCharacter.getPlayerCharacter(uuid);
|
||||||
if(inSiegeRange.contains(player)) //player is still physically here, needs updated multiplier
|
if(inSiegeRange.contains(player)) { //player is still physically here, needs updated multiplier
|
||||||
player.ZergMultiplier = defenderMultiplier;
|
player.ZergMultiplier = attackerMultiplier;
|
||||||
else
|
this.affected_players.add(player);
|
||||||
|
}else {
|
||||||
player.ZergMultiplier = 1.0f;
|
player.ZergMultiplier = 1.0f;
|
||||||
|
this.affected_players.add(player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user