From 7c4ab9bb5816fc1d6b155d8688caa3612a27a8f3 Mon Sep 17 00:00:00 2001 From: Coppio Date: Tue, 5 Nov 2024 21:01:32 -0300 Subject: [PATCH 01/20] feat: adds slash kill command for GMs --- .../common/options/messages.properties | 2 + .../megamek/common/options/GameOptions.java | 1 + .../common/options/OptionsConstants.java | 1 + .../megamek/server/commands/KillCommand.java | 78 +++++++++++++++++++ .../server/totalwarfare/TWGameManager.java | 1 + 5 files changed, 83 insertions(+) create mode 100644 megamek/src/megamek/server/commands/KillCommand.java diff --git a/megamek/i18n/megamek/common/options/messages.properties b/megamek/i18n/megamek/common/options/messages.properties index 78fd3cd33c0..e1a5a134ba3 100644 --- a/megamek/i18n/megamek/common/options/messages.properties +++ b/megamek/i18n/megamek/common/options/messages.properties @@ -140,6 +140,8 @@ GameOptionsInfo.option.allow_nukes.displayableName=Allow command-line nukes. GameOptionsInfo.option.allow_nukes.description=This must be checked to allow players to throw nukes from the command line. If this is not checked, nukes are still available as advanced munitions. GameOptionsInfo.option.really_allow_nukes.displayableName=REALLY allow command-line nukes. GameOptionsInfo.option.really_allow_nukes.description=This must be checked to allow players to throw nukes from the command line. If this is not checked, nukes are still available as advanced munitions. +GameOptionsInfo.option.gm_can_kill_units.displayableName=Allow command-line kill (GM only). +GameOptionsInfo.option.gm_can_kill_units.description=This must be checked to allow the GM to kill units using command line. If this is not checked, the command is disabled. GameOptionsInfo.group.advancedRules.displayableName=Advanced Rules diff --git a/megamek/src/megamek/common/options/GameOptions.java b/megamek/src/megamek/common/options/GameOptions.java index 77fae48cbde..1bcf6c0ce8d 100755 --- a/megamek/src/megamek/common/options/GameOptions.java +++ b/megamek/src/megamek/common/options/GameOptions.java @@ -93,6 +93,7 @@ public synchronized void initialize() { addOption(allowed, OptionsConstants.ALLOWED_NO_CLAN_PHYSICAL, false); addOption(allowed, OptionsConstants.ALLOWED_ALLOW_NUKES, false); addOption(allowed, OptionsConstants.ALLOWED_REALLY_ALLOW_NUKES, false); + addOption(allowed, OptionsConstants.ALLOWED_GM_CAN_KILL_UNITS, false); IBasicOptionGroup advancedRules = addGroup("advancedRules"); addOption(advancedRules, OptionsConstants.ADVANCED_MINEFIELDS, false); diff --git a/megamek/src/megamek/common/options/OptionsConstants.java b/megamek/src/megamek/common/options/OptionsConstants.java index 0a46c5d48e7..9a757bc9897 100644 --- a/megamek/src/megamek/common/options/OptionsConstants.java +++ b/megamek/src/megamek/common/options/OptionsConstants.java @@ -330,6 +330,7 @@ public class OptionsConstants { public static final String ALLOWED_NO_CLAN_PHYSICAL = "no_clan_physical"; public static final String ALLOWED_ALLOW_NUKES = "allow_nukes"; public static final String ALLOWED_REALLY_ALLOW_NUKES = "really_allow_nukes"; + public static final String ALLOWED_GM_CAN_KILL_UNITS = "gm_can_kill_units"; public static final String ADVANCED_MINEFIELDS = "minefields"; public static final String ADVANCED_HIDDEN_UNITS = "hidden_units"; public static final String ADVANCED_BLACK_ICE= "black_ice"; diff --git a/megamek/src/megamek/server/commands/KillCommand.java b/megamek/src/megamek/server/commands/KillCommand.java new file mode 100644 index 00000000000..365438eae7d --- /dev/null +++ b/megamek/src/megamek/server/commands/KillCommand.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2024 Luana Scoppio (luana.coppio@gmail.com) + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.common.options.OptionsConstants; +import megamek.server.Server; +import megamek.server.totalwarfare.TWGameManager; + +/** + * @author Luana Scoppio + */ +public class KillCommand extends ServerCommand { + + private final TWGameManager gameManager; + + /** Creates new KillCommand */ + public KillCommand(Server server, TWGameManager gameManager) { + super(server, "kill", "Allows a GM to destroy a single unit instantly" + + "Allowed format:"+ + "/kill " + + "where id is the units ID. The units ID can be found by hovering over the unit."); + this.gameManager = gameManager; + } + + /** + * Run this command with the arguments supplied + */ + @Override + public void run(int connId, String[] args) { + + // Check to make sure gm kills are allowed! + if (!(server.getGame().getOptions().booleanOption(OptionsConstants.ALLOWED_GM_CAN_KILL_UNITS))) { + server.sendServerChat(connId, "Command-line kill is not enabled in this game."); + return; + } + if (!server.getPlayer(connId).getGameMaster()) { + server.sendServerChat(connId, "You are not a Game Master."); + return; + } + // Check argument integrity. + if (args.length == 2) { + // Check command + try { + int unitId = Integer.parseInt(args[1]); + // is the unit on the board? + var unit = gameManager.getGame().getEntity(unitId); + if (unit == null) { + server.sendServerChat(connId, "Specified unit is not on the board."); + return; + } + gameManager.destroyEntity(unit, "Act of God", false, false); + server.sendServerChat(connId, unit.getDisplayName() + " has been destroyed."); + } catch (NumberFormatException e) { + server.sendServerChat(connId, "Kill command failed (2). Proper format is \"/kill \" where id is the units numerical ID"); + } + } else { + // Error out; it's not a valid call. + server.sendServerChat(connId, "Kill command failed (1). Proper format is \"/kill \" where id is the units ID"); + } + } +} diff --git a/megamek/src/megamek/server/totalwarfare/TWGameManager.java b/megamek/src/megamek/server/totalwarfare/TWGameManager.java index 0b452fa59b6..e61c40b7f7f 100644 --- a/megamek/src/megamek/server/totalwarfare/TWGameManager.java +++ b/megamek/src/megamek/server/totalwarfare/TWGameManager.java @@ -187,6 +187,7 @@ public List getCommandList(Server server) { commands.add(new CheckBVCommand(server)); commands.add(new CheckBVTeamCommand(server)); commands.add(new NukeCommand(server, this)); + commands.add(new KillCommand(server, this)); commands.add(new TraitorCommand(server, this)); commands.add(new ListEntitiesCommand(server, this)); commands.add(new AssignNovaNetServerCommand(server, this)); From f61455783325e27ced1f9766be4247757f3b7ba0 Mon Sep 17 00:00:00 2001 From: Coppio Date: Tue, 5 Nov 2024 22:50:19 -0300 Subject: [PATCH 02/20] feat: added nosmoke and change weather commands, disaster is currently WIP --- .../commands/AllowGameMasterCommand.java | 2 +- .../server/commands/ChangeWeatherCommand.java | 131 ++++++++++++++++++ .../server/commands/DisasterCommand.java | 63 +++++++++ .../megamek/server/commands/KillCommand.java | 2 +- .../server/commands/RemoveSmokeCommand.java | 60 ++++++++ .../server/totalwarfare/TWGameManager.java | 2 + 6 files changed, 258 insertions(+), 2 deletions(-) create mode 100644 megamek/src/megamek/server/commands/ChangeWeatherCommand.java create mode 100644 megamek/src/megamek/server/commands/DisasterCommand.java create mode 100644 megamek/src/megamek/server/commands/RemoveSmokeCommand.java diff --git a/megamek/src/megamek/server/commands/AllowGameMasterCommand.java b/megamek/src/megamek/server/commands/AllowGameMasterCommand.java index 839ea433b00..b8189ae330c 100644 --- a/megamek/src/megamek/server/commands/AllowGameMasterCommand.java +++ b/megamek/src/megamek/server/commands/AllowGameMasterCommand.java @@ -34,7 +34,7 @@ public class AllowGameMasterCommand extends ServerCommand { public AllowGameMasterCommand(Server server, TWGameManager gameManager) { super(server, "allowGM", "Allows a player become Game Master " - + "Usage: /allowGameMaster used in respond to another " + + + "Usage: /allowGM used in respond to another " + "Player's request to become Game Master. All players assigned to" + " a team must allow the change."); this.gameManager = gameManager; diff --git a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java new file mode 100644 index 00000000000..4eccef2e475 --- /dev/null +++ b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2024 Luana Scoppio (luana.coppio@gmail.com) + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.common.planetaryconditions.*; +import megamek.server.Server; +import megamek.server.totalwarfare.TWGameManager; + +/** + * @author Luana Scoppio + */ +public class ChangeWeatherCommand extends ServerCommand { + + private final TWGameManager gameManager; + + /** Creates new ChangeWeatherCommand */ + public ChangeWeatherCommand(Server server, TWGameManager gameManager) { + super(server, "weather", "GM changes (weather) planetary conditions. The parameters are optional and unordered " + + "and the effects are applied at the beggining of the next turn. The square brackets means that argument is optional. " + + "Usage format: /weather [fog=0-2] [wind=0-6] [winddir=0-6] [light=0-6] [atmo=0-5] [blowsand=0-1] [weather=0-14] " + + "light= 0: daylight, 1: dusk, 2: full moon, 3: glare, 4: moonless night, 5: solar flare, 6: pitch black " + + "fog= 0: none, 1: light, 2: heavy " + + "wind= 0: calm, 1: light gale, 2: moderate gale, 3: strong gale, 4: storm, 5: tornado F1-F3, 6: tornado F4 " + + "winddir= 0: south, 1: southwest, 2: northwest, 3: north, 4: northeast, 5: southeast, 6: random " + + "atmo= 0: vacuum, 1: trace, 2: thin, 3: standard, 4: high, 5: very high " + + "blowsand= 0: no, 1: yes " + + "weather= 0: clear, 1: light rain, 2: moderate rain, 3: heavy rain, 4: gusting rain, 5: downpour, 6: light snow " + + "7: moderate snow, 8: snow flurries, 9: heavy snow, 10: sleet, 11: ice storm, 12: light hail, 13: heavy hail " + + "14: lightning storm"); + this.gameManager = gameManager; + } + + /** + * Run this command with the arguments supplied + */ + @Override + public void run(int connId, String[] args) { + if (!server.getPlayer(connId).getGameMaster()) { + server.sendServerChat(connId, "You are not a Game Master."); + return; + } + + // Check argument integrity. + if (args.length > 1) { + // Check command + var planetaryConditions = gameManager.getGame().getPlanetaryConditions(); + + for (var arg : args) { + if (arg.startsWith("fog=")) { + var fog = Integer.parseInt(arg.substring(4)); + if (fog >= 0 && fog < Fog.values().length) { + planetaryConditions.setFog(Fog.values()[fog]); + server.sendServerChat(connId, "The fog has changed."); + } else { + server.sendServerChat(connId, "Invalid fog value. Must be between 0 and " + Fog.values().length); + } + } else if (arg.startsWith("wind=")) { + var wind = Integer.parseInt(arg.substring(5)); + if (wind >= 0 && wind < Wind.values().length) { + planetaryConditions.setWind(Wind.values()[wind]); + server.sendServerChat(connId, "The wind strength has changed."); + } else { + server.sendServerChat(connId, "Invalid wind value. Must be between 0 and " + Wind.values().length); + } + } else if (arg.startsWith("winddir=")) { + var windDir = Integer.parseInt(arg.substring(8)); + if (windDir >= 0 && windDir < WindDirection.values().length) { + planetaryConditions.setWindDirection(WindDirection.values()[windDir]); + server.sendServerChat(connId, "The wind direction has changed."); + } else { + server.sendServerChat(connId, "Invalid wind direction value. Must be between 0 and " + WindDirection.values().length); + } + } else if (arg.startsWith("light=")) { + var light = Integer.parseInt(arg.substring(6)); + if (light >= 0 && light < Light.values().length) { + planetaryConditions.setLight(Light.values()[light]); + server.sendServerChat(connId, "The light has changed."); + } else { + server.sendServerChat(connId, "Invalid light value. Must be between 0 and " + Light.values().length); + } + } else if (arg.startsWith("atmo=")) { + var atmo = Integer.parseInt(arg.substring(5)); + if (atmo >= 0 && atmo < Atmosphere.values().length) { + planetaryConditions.setAtmosphere(Atmosphere.values()[atmo]); + server.sendServerChat(connId, atmo == 0 ? "The air has vanished, put your vac suits!" : "The air is changing."); + } else { + server.sendServerChat(connId, "Invalid atmosphere value. Must be between 0 and " + Atmosphere.values().length); + } + } else if (arg.startsWith("blowsand=")) { + var blowSand = Integer.parseInt(arg.substring(9)); + if (blowSand >= 0 && blowSand < BlowingSand.values().length) { + planetaryConditions.setBlowingSand(BlowingSand.values()[blowSand]); + server.sendServerChat(connId, blowSand == 1 ? "Sand started blowing." : "The sand has settled."); + } else { + server.sendServerChat(connId, "Invalid blowsand value. Must be between 0 and " + BlowingSand.values().length); + } + } else if (arg.startsWith("weather=")) { + var weather = Integer.parseInt(arg.substring(8)); + if (weather >= 0 && weather < Weather.values().length) { + planetaryConditions.setWeather(Weather.values()[weather]); + server.sendServerChat(connId, "The weather has changed."); + } else { + server.sendServerChat(connId, "Invalid weather value. Must be between 0 and " + Weather.values().length); + } + } + } + + gameManager.getGame().setPlanetaryConditions(planetaryConditions); + } else { + // Error out; it's not a valid call. + server.sendServerChat(connId, "weather command failed."); + } + } +} diff --git a/megamek/src/megamek/server/commands/DisasterCommand.java b/megamek/src/megamek/server/commands/DisasterCommand.java new file mode 100644 index 00000000000..acee28bce21 --- /dev/null +++ b/megamek/src/megamek/server/commands/DisasterCommand.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2024 Luana Scoppio (luana.coppio@gmail.com) + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.server.Server; +import megamek.server.totalwarfare.TWGameManager; + +/** + * @author Luana Scoppio + */ +public class DisasterCommand extends ServerCommand { + + private final TWGameManager gameManager; + + /** Creates new DisasterCommand */ + public DisasterCommand(Server server, TWGameManager gameManager) { + super(server, "disaster", "GM calls a disaster at random, arguments in square brackets are optional. Usage: /disaster [type] " + + "if not type is passed, one is chosen at random. " + + "type= 0: hurricane, 1: lightning storm, 2: meteor shower, 3: orbital bombardment, 4: wildfire, 5: sandstorm, 6: hailstorm, " + + "7: heatwave"); + this.gameManager = gameManager; + } + + /** + * Run this command with the arguments supplied + */ + @Override + public void run(int connId, String[] args) { + if (!server.getPlayer(connId).getGameMaster()) { + server.sendServerChat(connId, "You are not a Game Master."); + return; + } + + // Check argument integrity. + if (args.length == 1) { + // Check command + // NOT IMPLEMENTED + server.sendServerChat(connId, "Oh no..."); + } else if (args.length == 2) { + // Error out; it's not a valid call. + server.sendServerChat(connId, "Oh no..."); + } else { + server.sendServerChat(connId, "disaster command failed (1)."); + } + } +} diff --git a/megamek/src/megamek/server/commands/KillCommand.java b/megamek/src/megamek/server/commands/KillCommand.java index 365438eae7d..387dbb855c7 100644 --- a/megamek/src/megamek/server/commands/KillCommand.java +++ b/megamek/src/megamek/server/commands/KillCommand.java @@ -33,7 +33,7 @@ public class KillCommand extends ServerCommand { /** Creates new KillCommand */ public KillCommand(Server server, TWGameManager gameManager) { super(server, "kill", "Allows a GM to destroy a single unit instantly" + - "Allowed format:"+ + "Usage: "+ "/kill " + "where id is the units ID. The units ID can be found by hovering over the unit."); this.gameManager = gameManager; diff --git a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java new file mode 100644 index 00000000000..ae28fd7a61e --- /dev/null +++ b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2024 Luana Scoppio (luana.coppio@gmail.com) + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.common.planetaryconditions.Fog; +import megamek.common.planetaryconditions.Wind; +import megamek.server.Server; +import megamek.server.totalwarfare.TWGameManager; + +/** + * @author Luana Scoppio + */ +public class RemoveSmokeCommand extends ServerCommand { + + private final TWGameManager gameManager; + + /** Creates new KillCommand */ + public RemoveSmokeCommand(Server server, TWGameManager gameManager) { + super(server, "nosmoke", "GM removes all smoke cloud hexes. Usage: /nosmoke"); + this.gameManager = gameManager; + } + + /** + * Run this command with the arguments supplied + */ + @Override + public void run(int connId, String[] args) { + if (!server.getPlayer(connId).getGameMaster()) { + server.sendServerChat(connId, "You are not a Game Master."); + return; + } + + // Check argument integrity. + if (args.length == 1) { + // Check command + gameManager.getSmokeCloudList().forEach(gameManager::removeSmokeTerrain); + server.sendServerChat(connId, "GM cleared the smoke clouds."); + } else { + // Error out; it's not a valid call. + server.sendServerChat(connId, "nosmoke command failed (1)."); + } + } +} diff --git a/megamek/src/megamek/server/totalwarfare/TWGameManager.java b/megamek/src/megamek/server/totalwarfare/TWGameManager.java index e61c40b7f7f..13065fedbd0 100644 --- a/megamek/src/megamek/server/totalwarfare/TWGameManager.java +++ b/megamek/src/megamek/server/totalwarfare/TWGameManager.java @@ -188,6 +188,8 @@ public List getCommandList(Server server) { commands.add(new CheckBVTeamCommand(server)); commands.add(new NukeCommand(server, this)); commands.add(new KillCommand(server, this)); + commands.add(new RemoveSmokeCommand(server, this)); + commands.add(new ChangeWeatherCommand(server, this)); commands.add(new TraitorCommand(server, this)); commands.add(new ListEntitiesCommand(server, this)); commands.add(new AssignNovaNetServerCommand(server, this)); From f7d8a48b190043b5ae33f512f311ae94cad08b9c Mon Sep 17 00:00:00 2001 From: Coppio Date: Tue, 5 Nov 2024 23:34:33 -0300 Subject: [PATCH 03/20] feat: added change ownership command, disaster is still WIP --- .../commands/ChangeOwnershipCommand.java | 76 +++++++++++++++++++ .../server/commands/ChangeWeatherCommand.java | 1 - .../server/commands/DisasterCommand.java | 1 - .../megamek/server/commands/KillCommand.java | 1 - .../server/totalwarfare/TWGameManager.java | 2 + 5 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 megamek/src/megamek/server/commands/ChangeOwnershipCommand.java diff --git a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java new file mode 100644 index 00000000000..48691c02742 --- /dev/null +++ b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.common.Entity; +import megamek.common.Player; +import megamek.server.Server; +import megamek.server.totalwarfare.TWGameManager; + +/** + * The Server Command "/changeOwner" that will switch an entity's owner to another player. + * + * @author Luana Scoppio + */ +public class ChangeOwnershipCommand extends ServerCommand { + + private final TWGameManager gameManager; + + public ChangeOwnershipCommand(Server server, TWGameManager gameManager) { + super(server, + "changeOwner", + "Switches ownership of a player's entity to another player during the end phase. " + + "Usage: /changeOwner " + + "The following is an example of changing unit ID 7 to player ID 2: /changeOwner 7 2 "); + this.gameManager = gameManager; + } + + /** + * Run this command with the arguments supplied + * + * @see ServerCommand#run(int, String[]) + */ + @Override + public void run(int connId, String[] args) { + try { + var currentPlayer = server.getGame().getPlayer(connId); + if (!currentPlayer.isGameMaster()) { + server.sendServerChat(connId, "You are not a Game Master."); + return; + } + + int eid = Integer.parseInt(args[1]); + Entity ent = gameManager.getGame().getEntity(eid); + int pid = Integer.parseInt(args[2]); + Player player = server.getGame().getPlayer(pid); + if (null == ent) { + server.sendServerChat(connId, "No such entity."); + } else if (null == player) { + server.sendServerChat(connId, "No such player."); + } else if (player.getTeam() == Player.TEAM_UNASSIGNED) { + server.sendServerChat(connId, "Player must be assigned a team."); + } else { + server.sendServerChat(connId, ent.getDisplayName() + " will switch to " + player.getName() + "'s side at the end of this turn."); + ent.setTraitorId(pid); + } + } catch (NumberFormatException ignored) { + } + } + +} diff --git a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java index 4eccef2e475..f18c5926e17 100644 --- a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java +++ b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java @@ -1,5 +1,4 @@ /* - * Copyright (C) 2024 Luana Scoppio (luana.coppio@gmail.com) * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * * This file is part of MegaMek. diff --git a/megamek/src/megamek/server/commands/DisasterCommand.java b/megamek/src/megamek/server/commands/DisasterCommand.java index acee28bce21..0a7137cd88b 100644 --- a/megamek/src/megamek/server/commands/DisasterCommand.java +++ b/megamek/src/megamek/server/commands/DisasterCommand.java @@ -1,5 +1,4 @@ /* - * Copyright (C) 2024 Luana Scoppio (luana.coppio@gmail.com) * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * * This file is part of MegaMek. diff --git a/megamek/src/megamek/server/commands/KillCommand.java b/megamek/src/megamek/server/commands/KillCommand.java index 387dbb855c7..837bcce266e 100644 --- a/megamek/src/megamek/server/commands/KillCommand.java +++ b/megamek/src/megamek/server/commands/KillCommand.java @@ -1,5 +1,4 @@ /* - * Copyright (C) 2024 Luana Scoppio (luana.coppio@gmail.com) * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * * This file is part of MegaMek. diff --git a/megamek/src/megamek/server/totalwarfare/TWGameManager.java b/megamek/src/megamek/server/totalwarfare/TWGameManager.java index 13065fedbd0..95aabd23203 100644 --- a/megamek/src/megamek/server/totalwarfare/TWGameManager.java +++ b/megamek/src/megamek/server/totalwarfare/TWGameManager.java @@ -188,6 +188,8 @@ public List getCommandList(Server server) { commands.add(new CheckBVTeamCommand(server)); commands.add(new NukeCommand(server, this)); commands.add(new KillCommand(server, this)); + commands.add(new ChangeOwnershipCommand(server, this)); + commands.add(new DisasterCommand(server, this)); commands.add(new RemoveSmokeCommand(server, this)); commands.add(new ChangeWeatherCommand(server, this)); commands.add(new TraitorCommand(server, this)); From b7971233165bb9018cbec265aa8ead1ec1322a80 Mon Sep 17 00:00:00 2001 From: Coppio Date: Fri, 8 Nov 2024 00:33:34 -0300 Subject: [PATCH 04/20] feat: added multiple GM commands, including kill, change planetary conditions, orbital bombardment, etc. --- .../megamek/common/report-messages.properties | 4 + megamek/src/megamek/common/Game.java | 1 + .../commands/ChangeOwnershipCommand.java | 9 +- .../server/commands/ChangeWeatherCommand.java | 132 ++++++------- megamek/src/megamek/server/commands/IsGM.java | 13 ++ .../megamek/server/commands/KillCommand.java | 9 +- .../commands/OrbitalBombardmentCommand.java | 103 ++++++++++ .../server/commands/RemoveSmokeCommand.java | 9 +- .../server/props/OrbitalBombardment.java | 106 ++++++++++ .../server/totalwarfare/TWGameManager.java | 186 +++++++++++++++--- .../totalwarfare/TWPhaseEndManager.java | 1 + 11 files changed, 464 insertions(+), 109 deletions(-) create mode 100644 megamek/src/megamek/server/commands/IsGM.java create mode 100644 megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java create mode 100644 megamek/src/megamek/server/props/OrbitalBombardment.java diff --git a/megamek/i18n/megamek/common/report-messages.properties b/megamek/i18n/megamek/common/report-messages.properties index c7431827b9c..20be24c6ee5 100755 --- a/megamek/i18n/megamek/common/report-messages.properties +++ b/megamek/i18n/megamek/common/report-messages.properties @@ -55,6 +55,10 @@ 1241=Blue Shield Field Dampener fails! 1242=no effect +#1300s - Orbital Bombardment related +1300=An orbital bombardment hit hex !!! +1301=End of orbital bombardment resolution + # 1500s - ammo handling related 1500= () selected 1501= due to out of ammo! diff --git a/megamek/src/megamek/common/Game.java b/megamek/src/megamek/common/Game.java index 08f4a43ed56..cd106d57c9d 100644 --- a/megamek/src/megamek/common/Game.java +++ b/megamek/src/megamek/common/Game.java @@ -760,6 +760,7 @@ public void setLastPhase(GamePhase lastPhase) { /** * @return an enumeration of all the entities in the game. + * @deprecated Use {@link #inGameTWEntities()} instead. */ @Deprecated public Iterator getEntities() { diff --git a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java index 48691c02742..d50836c22e2 100644 --- a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java +++ b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java @@ -28,7 +28,7 @@ * * @author Luana Scoppio */ -public class ChangeOwnershipCommand extends ServerCommand { +public class ChangeOwnershipCommand extends ServerCommand implements IsGM { private final TWGameManager gameManager; @@ -49,8 +49,7 @@ public ChangeOwnershipCommand(Server server, TWGameManager gameManager) { @Override public void run(int connId, String[] args) { try { - var currentPlayer = server.getGame().getPlayer(connId); - if (!currentPlayer.isGameMaster()) { + if (!isGM(connId)) { server.sendServerChat(connId, "You are not a Game Master."); return; } @@ -73,4 +72,8 @@ public void run(int connId, String[] args) { } } + @Override + public TWGameManager getGameManager() { + return gameManager; + } } diff --git a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java index f18c5926e17..1e75fd97e2d 100644 --- a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java +++ b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java @@ -22,6 +22,12 @@ import megamek.server.Server; import megamek.server.totalwarfare.TWGameManager; + +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.stream.Stream; + /** * @author Luana Scoppio */ @@ -29,23 +35,38 @@ public class ChangeWeatherCommand extends ServerCommand { private final TWGameManager gameManager; + private static final String HELP_TEXT = "GM changes (weather) planetary conditions. The parameters are optional and unordered " + + "and the effects are applied at the beginning of the next turn. The square brackets means that argument is optional. " + + "Usage format: /weather [fog=0-2] [wind=0-6] [winddir=0-6] [light=0-6] [atmo=0-5] [blowsand=0-1] [weather=0-14] " + + "light= 0: daylight, 1: dusk, 2: full moon, 3: glare, 4: moonless night, 5: solar flare, 6: pitch black " + + "fog= 0: none, 1: light, 2: heavy " + + "wind= 0: calm, 1: light gale, 2: moderate gale, 3: strong gale, 4: storm, 5: tornado F1-F3, 6: tornado F4 " + + "winddir= 0: south, 1: southwest, 2: northwest, 3: north, 4: northeast, 5: southeast, 6: random " + + "atmo= 0: vacuum, 1: trace, 2: thin, 3: standard, 4: high, 5: very high " + + "blowsand= 0: no, 1: yes " + + "weather= 0: clear, 1: light rain, 2: moderate rain, 3: heavy rain, 4: gusting rain, 5: downpour, 6: light snow " + + "7: moderate snow, 8: snow flurries, 9: heavy snow, 10: sleet, 11: ice storm, 12: light hail, 13: heavy hail " + + "14: lightning storm"; + /** Creates new ChangeWeatherCommand */ public ChangeWeatherCommand(Server server, TWGameManager gameManager) { - super(server, "weather", "GM changes (weather) planetary conditions. The parameters are optional and unordered " + - "and the effects are applied at the beggining of the next turn. The square brackets means that argument is optional. " + - "Usage format: /weather [fog=0-2] [wind=0-6] [winddir=0-6] [light=0-6] [atmo=0-5] [blowsand=0-1] [weather=0-14] " + - "light= 0: daylight, 1: dusk, 2: full moon, 3: glare, 4: moonless night, 5: solar flare, 6: pitch black " + - "fog= 0: none, 1: light, 2: heavy " + - "wind= 0: calm, 1: light gale, 2: moderate gale, 3: strong gale, 4: storm, 5: tornado F1-F3, 6: tornado F4 " + - "winddir= 0: south, 1: southwest, 2: northwest, 3: north, 4: northeast, 5: southeast, 6: random " + - "atmo= 0: vacuum, 1: trace, 2: thin, 3: standard, 4: high, 5: very high " + - "blowsand= 0: no, 1: yes " + - "weather= 0: clear, 1: light rain, 2: moderate rain, 3: heavy rain, 4: gusting rain, 5: downpour, 6: light snow " + - "7: moderate snow, 8: snow flurries, 9: heavy snow, 10: sleet, 11: ice storm, 12: light hail, 13: heavy hail " + - "14: lightning storm"); + super(server, "weather", HELP_TEXT); this.gameManager = gameManager; } + private void updatePlanetaryCondition(String arg, String prefix, int connId, int maxLength, Consumer setter, + Function successMessage, Function errorMessage) { + var value = Integer.parseInt(arg.substring(prefix.length())); + if (value >= 0 && value < maxLength) { + setter.accept(value); + server.sendServerChat(connId, successMessage.apply(value)); + } else { + server.sendServerChat(connId, errorMessage.apply(maxLength)); + } + } + + private record Condition(int maxLength, Consumer setter, Function successMessage, Function errorMessage) {} + /** * Run this command with the arguments supplied */ @@ -56,75 +77,38 @@ public void run(int connId, String[] args) { return; } - // Check argument integrity. + var planetaryConditions = gameManager.getGame().getPlanetaryConditions(); + if (args.length > 1) { - // Check command - var planetaryConditions = gameManager.getGame().getPlanetaryConditions(); - for (var arg : args) { - if (arg.startsWith("fog=")) { - var fog = Integer.parseInt(arg.substring(4)); - if (fog >= 0 && fog < Fog.values().length) { - planetaryConditions.setFog(Fog.values()[fog]); - server.sendServerChat(connId, "The fog has changed."); - } else { - server.sendServerChat(connId, "Invalid fog value. Must be between 0 and " + Fog.values().length); - } - } else if (arg.startsWith("wind=")) { - var wind = Integer.parseInt(arg.substring(5)); - if (wind >= 0 && wind < Wind.values().length) { - planetaryConditions.setWind(Wind.values()[wind]); - server.sendServerChat(connId, "The wind strength has changed."); - } else { - server.sendServerChat(connId, "Invalid wind value. Must be between 0 and " + Wind.values().length); - } - } else if (arg.startsWith("winddir=")) { - var windDir = Integer.parseInt(arg.substring(8)); - if (windDir >= 0 && windDir < WindDirection.values().length) { - planetaryConditions.setWindDirection(WindDirection.values()[windDir]); - server.sendServerChat(connId, "The wind direction has changed."); - } else { - server.sendServerChat(connId, "Invalid wind direction value. Must be between 0 and " + WindDirection.values().length); - } - } else if (arg.startsWith("light=")) { - var light = Integer.parseInt(arg.substring(6)); - if (light >= 0 && light < Light.values().length) { - planetaryConditions.setLight(Light.values()[light]); - server.sendServerChat(connId, "The light has changed."); - } else { - server.sendServerChat(connId, "Invalid light value. Must be between 0 and " + Light.values().length); - } - } else if (arg.startsWith("atmo=")) { - var atmo = Integer.parseInt(arg.substring(5)); - if (atmo >= 0 && atmo < Atmosphere.values().length) { - planetaryConditions.setAtmosphere(Atmosphere.values()[atmo]); - server.sendServerChat(connId, atmo == 0 ? "The air has vanished, put your vac suits!" : "The air is changing."); - } else { - server.sendServerChat(connId, "Invalid atmosphere value. Must be between 0 and " + Atmosphere.values().length); - } - } else if (arg.startsWith("blowsand=")) { - var blowSand = Integer.parseInt(arg.substring(9)); - if (blowSand >= 0 && blowSand < BlowingSand.values().length) { - planetaryConditions.setBlowingSand(BlowingSand.values()[blowSand]); - server.sendServerChat(connId, blowSand == 1 ? "Sand started blowing." : "The sand has settled."); - } else { - server.sendServerChat(connId, "Invalid blowsand value. Must be between 0 and " + BlowingSand.values().length); - } - } else if (arg.startsWith("weather=")) { - var weather = Integer.parseInt(arg.substring(8)); - if (weather >= 0 && weather < Weather.values().length) { - planetaryConditions.setWeather(Weather.values()[weather]); - server.sendServerChat(connId, "The weather has changed."); - } else { - server.sendServerChat(connId, "Invalid weather value. Must be between 0 and " + Weather.values().length); + Map conditions = Map.of( + "fog=", new Condition(Fog.values().length, value -> planetaryConditions.setFog(Fog.values()[value]), + value -> "The fog has changed.", maxLength -> "Invalid fog value. Must be between 0 and " + (maxLength - 1)), + "wind=", new Condition(Wind.values().length, value -> planetaryConditions.setWind(Wind.values()[value]), + value -> "The wind strength has changed.", maxLength -> "Invalid wind value. Must be between 0 and " + (maxLength - 1)), + "winddir=", new Condition(WindDirection.values().length, value -> planetaryConditions.setWindDirection(WindDirection.values()[value]), + value -> "The wind direction has changed.", maxLength -> "Invalid wind direction value. Must be between 0 and " + (maxLength - 1)), + "light=", new Condition(Light.values().length, value -> planetaryConditions.setLight(Light.values()[value]), + value -> "The light has changed.", maxLength -> "Invalid light value. Must be between 0 and " + (maxLength - 1)), + "atmo=", new Condition(Atmosphere.values().length, value -> planetaryConditions.setAtmosphere(Atmosphere.values()[value]), + value -> value == 0 ? "The air has vanished, put your vac suits!" : "The air is changing.", maxLength -> "Invalid atmosphere value. Must be between 0 and " + (maxLength - 1)), + "blowsand=", new Condition(BlowingSand.values().length, value -> planetaryConditions.setBlowingSand(BlowingSand.values()[value]), + value -> value == 1 ? "Sand started blowing." : "The sand has settled.", maxLength -> "Invalid blowsand value. Must be between 0 and " + (maxLength - 1)), + "weather=", new Condition(Weather.values().length, value -> planetaryConditions.setWeather(Weather.values()[value]), + value -> "The weather has changed.", maxLength -> "Invalid weather value. Must be between 0 and " + (maxLength - 1)) + ); + + Stream.of(args) + .forEach(arg -> conditions.forEach((prefix, condition) -> { + if (arg.startsWith(prefix)) { + updatePlanetaryCondition(arg, prefix, connId, condition.maxLength, condition.setter, condition.successMessage, condition.errorMessage); } - } - } + })); gameManager.getGame().setPlanetaryConditions(planetaryConditions); } else { // Error out; it's not a valid call. - server.sendServerChat(connId, "weather command failed."); + server.sendServerChat(connId, "weather command failed. " + HELP_TEXT); } } } diff --git a/megamek/src/megamek/server/commands/IsGM.java b/megamek/src/megamek/server/commands/IsGM.java new file mode 100644 index 00000000000..6c8fcff5545 --- /dev/null +++ b/megamek/src/megamek/server/commands/IsGM.java @@ -0,0 +1,13 @@ +package megamek.server.commands; + +import megamek.server.totalwarfare.TWGameManager; + +public interface IsGM { + + TWGameManager getGameManager(); + + default boolean isGM(int connId) { + return getGameManager().getGame().getPlayer(connId).getGameMaster(); + } + +} diff --git a/megamek/src/megamek/server/commands/KillCommand.java b/megamek/src/megamek/server/commands/KillCommand.java index 837bcce266e..bc436c49380 100644 --- a/megamek/src/megamek/server/commands/KillCommand.java +++ b/megamek/src/megamek/server/commands/KillCommand.java @@ -25,7 +25,7 @@ /** * @author Luana Scoppio */ -public class KillCommand extends ServerCommand { +public class KillCommand extends ServerCommand implements IsGM { private final TWGameManager gameManager; @@ -49,7 +49,7 @@ public void run(int connId, String[] args) { server.sendServerChat(connId, "Command-line kill is not enabled in this game."); return; } - if (!server.getPlayer(connId).getGameMaster()) { + if (!isGM(connId)) { server.sendServerChat(connId, "You are not a Game Master."); return; } @@ -74,4 +74,9 @@ public void run(int connId, String[] args) { server.sendServerChat(connId, "Kill command failed (1). Proper format is \"/kill \" where id is the units ID"); } } + + @Override + public TWGameManager getGameManager() { + return gameManager; + } } diff --git a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java new file mode 100644 index 00000000000..c3d31e2202f --- /dev/null +++ b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.common.options.OptionsConstants; +import megamek.server.Server; +import megamek.server.props.OrbitalBombardment; +import megamek.server.totalwarfare.TWGameManager; + +/** + * @author Luana Scoppio + */ +public class OrbitalBombardmentCommand extends ServerCommand implements IsGM { + + private final TWGameManager gameManager; + + /** Creates new NukeCommand */ + public OrbitalBombardmentCommand(Server server, TWGameManager gameManager) { + super(server, "ob", "GM Drops a bomb onto the board doing of 100 damage with a 3 hex radius, to be exploded at" + + "the end of the next weapons attack phase." + + "Allowed formats:"+ + "/bomb and" + + "/bomb [factor=10] [radius=4]" + + "the damage at impact point is 10 times the factor, default is 10. " + + "and hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23), the explosion blast radius default " + + "is equal to 4, it automatically applies a linear damage dropoff each hex away from the center." + + " All parameters in square brackets may be ommited. " + + " Example: /ob 10 10 factor=12 "); + this.gameManager = gameManager; + } + + /** + * Run this command with the arguments supplied + */ + @Override + public void run(int connId, String[] args) { + + // Check to make sure nuking is allowed by game options! + if (!isGM(connId)) { + server.sendServerChat(connId, "You are not a Game Master."); + return; + } + + if (args.length >= 3) { + var orbitalBombardmentBuilder = new OrbitalBombardment.Builder(); + try { + int[] position = new int[2]; + for (int i = 1; i < 3; i++) { + position[i-1] = Integer.parseInt(args[i]) - 1; + } + // is the hex on the board? + if (!gameManager.getGame().getBoard().contains(position[0], position[1])) { + server.sendServerChat(connId, "Specified hex is not on the board."); + return; + } + + orbitalBombardmentBuilder + .x(position[0]) + .y(position[1]); + + if (args.length > 3) { + for (int i = 3; i < args.length; i++) { + String[] keyValue = args[i].split("="); + if (keyValue[0].equals("factor")) { + orbitalBombardmentBuilder.damageFactor(Integer.parseInt(keyValue[1])); + } else if (keyValue[0].equals("radius")) { + orbitalBombardmentBuilder.radius(Integer.parseInt(keyValue[1])); + } + } + } + + gameManager.addScheduledOrbitalBombardment(orbitalBombardmentBuilder.build()); + server.sendServerChat(connId, "This isn't a shooting star! Take cover!"); + } catch (Exception e) { + server.sendServerChat(connId, "Orbital bombardment command failed (2). Proper format is \"/ob [factor=10] [radius=4]\" where hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23)"); + } + } else { + // Error out; it's not a valid call. + server.sendServerChat(connId, "Orbital bombardment command failed (1). Proper format is \"/ob [factor=10] [radius=4]\" where hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23)"); + } + } + + @Override + public TWGameManager getGameManager() { + return gameManager; + } +} diff --git a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java index ae28fd7a61e..5715ae19736 100644 --- a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java +++ b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java @@ -27,7 +27,7 @@ /** * @author Luana Scoppio */ -public class RemoveSmokeCommand extends ServerCommand { +public class RemoveSmokeCommand extends ServerCommand implements IsGM { private final TWGameManager gameManager; @@ -42,7 +42,7 @@ public RemoveSmokeCommand(Server server, TWGameManager gameManager) { */ @Override public void run(int connId, String[] args) { - if (!server.getPlayer(connId).getGameMaster()) { + if (!isGM(connId)) { server.sendServerChat(connId, "You are not a Game Master."); return; } @@ -57,4 +57,9 @@ public void run(int connId, String[] args) { server.sendServerChat(connId, "nosmoke command failed (1)."); } } + + @Override + public TWGameManager getGameManager() { + return gameManager; + } } diff --git a/megamek/src/megamek/server/props/OrbitalBombardment.java b/megamek/src/megamek/server/props/OrbitalBombardment.java new file mode 100644 index 00000000000..e49e1c965e4 --- /dev/null +++ b/megamek/src/megamek/server/props/OrbitalBombardment.java @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.props; + +/** + * Represents an orbital bombardment event. + * x and y are board positions, damageFactor is the damage at impact point times 10, and radius is the blast radius of the explosion with + * regular/linear damage droppoff. + * + * @author Luana Scoppio + */ +public class OrbitalBombardment { + + private final int x; + private final int y; + private final int damageFactor; + private final int radius; + + /** + * Represents an orbital bombardment event. + * x and y are board positions, damageFactor is the damage at impact point times 10, and radius is the blast radius of the explosion with + * regular/linear damage droppoff. + * + * @param builder + */ + private OrbitalBombardment(Builder builder) { + this.x = builder.x; + this.y = builder.y; + this.damageFactor = builder.damageFactor; + this.radius = builder.radius; + } + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public int getDamageFactor() { + return damageFactor; + } + + public int getRadius() { + return radius; + } + + /** + * Builder of an orbital bombardment event. + * x and y are board positions, damageFactor is the damage at impact point times 10, and radius is the blast radius of the explosion with + * regular/linear damage droppoff. + * + */ + public static class Builder { + private int x; + private int y; + private int damageFactor = 10; + private int radius = 4; + + public Builder x(int x) { + this.x = x; + return this; + } + + public Builder y(int y) { + this.y = y; + return this; + } + + public Builder damageFactor(int damageFactor) { + this.damageFactor = damageFactor; + return this; + } + + public Builder radius(int radius) { + this.radius = radius; + return this; + } + + /** + * Builds an orbital bombardment. + * + * @return an immutable instance of an orbital bombardment. + */ + public OrbitalBombardment build() { + return new OrbitalBombardment(this); + } + } +} diff --git a/megamek/src/megamek/server/totalwarfare/TWGameManager.java b/megamek/src/megamek/server/totalwarfare/TWGameManager.java index 95aabd23203..4eb440a79a0 100644 --- a/megamek/src/megamek/server/totalwarfare/TWGameManager.java +++ b/megamek/src/megamek/server/totalwarfare/TWGameManager.java @@ -73,6 +73,7 @@ import megamek.logging.MMLogger; import megamek.server.*; import megamek.server.commands.*; +import megamek.server.props.OrbitalBombardment; import megamek.server.victory.VictoryResult; /** @@ -101,6 +102,7 @@ public Vector getvPhaseReport() { private final List terrainProcessors = new ArrayList<>(); private ArrayList scheduledNukes = new ArrayList<>(); + private ArrayList scheduledOrbitalBombardment = new ArrayList<>(); /** * Stores a set of Coords that have changed during this phase. @@ -19736,7 +19738,7 @@ public Vector damageEntity(Entity te, HitData hit, int damage, int[] damages = { (int) Math.floor(damage_orig / 10.0), (int) Math.floor(damage_orig / 20.0) }; doExplosion(damages, false, te.getPosition(), true, vDesc, null, 5, - te.getId(), false); + te.getId(), false, false); Report.addNewline(vDesc); r = new Report(5410, Report.PUBLIC); r.subject = te.getId(); @@ -20018,7 +20020,7 @@ public void doFusionEngineExplosion(int engineRating, Coords position, Vector vUnits) { int[] myDamages = { engineRating, (engineRating / 10), (engineRating / 20), (engineRating / 40) }; - doExplosion(myDamages, true, position, false, vDesc, vUnits, 5, -1, true); + doExplosion(myDamages, true, position, false, vDesc, vUnits, 5, -1, true, false); } /** @@ -20026,7 +20028,7 @@ public void doFusionEngineExplosion(int engineRating, Coords position, Vector vDesc, - Vector vUnits, int excludedUnitId) { + Vector vUnits, int excludedUnitId, boolean canDamageVtol) { if (degradation < 1) { return; } @@ -20042,15 +20044,16 @@ public void doExplosion(int damage, int degradation, boolean autoDestroyInSameHe myDamages[x] = myDamages[x - 1] - degradation; } doExplosion(myDamages, autoDestroyInSameHex, position, allowShelter, vDesc, vUnits, - 5, excludedUnitId, false); + 5, excludedUnitId, false, canDamageVtol); } /** * General function to cause explosions in areas. + * TODO Luana: Refactor this function so it is less of a mess */ public void doExplosion(int[] damages, boolean autoDestroyInSameHex, Coords position, boolean allowShelter, Vector vDesc, Vector vUnits, - int clusterAmt, int excludedUnitId, boolean engineExplosion) { + int clusterAmt, int excludedUnitId, boolean engineExplosion, boolean canDamageVtol) { if (vDesc == null) { vDesc = new Vector<>(); } @@ -20137,9 +20140,7 @@ public void doExplosion(int[] damages, boolean autoDestroyInSameHex, Coords posi // Now we damage people near the explosion. List loaded = new ArrayList<>(); - for (Iterator ents = game.getEntities(); ents.hasNext();) { - Entity entity = ents.next(); - + for (var entity : game.inGameTWEntities()) { if (entitiesHit.contains(entity)) { continue; } @@ -20157,12 +20158,6 @@ public void doExplosion(int[] damages, boolean autoDestroyInSameHex, Coords posi continue; } - // We are going to assume that explosions are on the ground here so - // flying entities should be unaffected - if (entity.isAirborne()) { - continue; - } - if ((entity instanceof MekWarrior) && !((MekWarrior) entity).hasLanded()) { // MekWarrior is still up in the air ejecting hence safe // from this explosion. @@ -20178,6 +20173,7 @@ public void doExplosion(int[] damages, boolean autoDestroyInSameHex, Coords posi } continue; } + int range = position.distance(entityPos); if (range >= damages.length) { @@ -20185,6 +20181,23 @@ public void doExplosion(int[] damages, boolean autoDestroyInSameHex, Coords posi continue; } + // We are going to assume that explosions are on the ground here so + // flying entities should be unaffected, except VTOL or WiGE + if (entity.isAirborne() && !canDamageVtol) { + continue; + } else if (entity.isAirborne() && canDamageVtol && entity.isAirborneVTOLorWIGE()) { + if (entity.getElevation() > damages.length) { + continue; + } + if ((range + entity.getElevation()) > damages.length) { + continue; + } else { + range += entity.getElevation(); + } + } else { + continue; + } + // We might need to nuke everyone in the explosion hex. If so... if ((range == 0) && autoDestroyInSameHex) { // Add the reports @@ -20267,23 +20280,54 @@ public void doExplosion(int[] damages, boolean autoDestroyInSameHex, Coords posi r.addDesc(e); r.add(damage); vDesc.addElement(r); - - while (damage > 0) { - int cluster = Math.min(5, damage); - int table = ToHitData.HIT_NORMAL; - if (e instanceof ProtoMek) { - table = ToHitData.HIT_SPECIAL_PROTO; - } - HitData hit = e.rollHitLocation(table, ToHitData.SIDE_FRONT); - vDesc.addAll(damageEntity(e, hit, cluster, false, - DamageType.IGNORE_PASSENGER, false, true)); - damage -= cluster; + if (canDamageVtol) { + orbitalBombardmentDamage(position, vDesc, e, damage); + } else { + explosionDamage(position, vDesc, e, damage); } Report.addNewline(vDesc); } } } + private void explosionDamage(Coords position, Vector vDesc, Entity e, int damage) { + while (damage > 0) { + int cluster = Math.min(5, damage); + int table = ToHitData.HIT_NORMAL; + if (e instanceof ProtoMek) { + table = ToHitData.HIT_SPECIAL_PROTO; + } + HitData hit = e.rollHitLocation(table, ToHitData.SIDE_FRONT); + vDesc.addAll(damageEntity(e, hit, cluster, false, + DamageType.IGNORE_PASSENGER, false, true)); + damage -= cluster; + } + } + + private void orbitalBombardmentDamage(Coords position, Vector vDesc, Entity e, int damage) { + while (damage > 0) { + int cluster = Math.min(5, damage); + int table = ToHitData.HIT_NORMAL; + int hitSide = ToHitData.SIDE_RANDOM; + if (e instanceof ProtoMek) { + table = ToHitData.HIT_SPECIAL_PROTO; + } else if (e instanceof Mek) { + table = ToHitData.HIT_ABOVE; + hitSide = e.sideTable(position); + } else if (e instanceof Tank) { + if (e.isAirborneVTOLorWIGE()) { + table = ToHitData.HIT_ABOVE; + } + hitSide = e.sideTable(position); + } + + HitData hit = e.rollHitLocation(table, hitSide); + vDesc.addAll(damageEntity(e, hit, cluster, false, + DamageType.IGNORE_PASSENGER, false, true)); + damage -= cluster; + } + } + /** * Check if an Entity of the passed height can find shelter from a nuke blast * @@ -20343,6 +20387,16 @@ public void addScheduledNuke(int[] nuke) { scheduledNukes.add(nuke); } + /** + * add an orbital bombardment to hit the board in the next weapons attack phase + * + * @param orbitalBombardment this is an #OrbitalBombardment object, its immutable and must be constructed + * through it's builder. + */ + public void addScheduledOrbitalBombardment(OrbitalBombardment orbitalBombardment) { + scheduledOrbitalBombardment.add(orbitalBombardment); + } + /** * explode any scheduled nukes */ @@ -20360,6 +20414,15 @@ void resolveScheduledNukes() { scheduledNukes.clear(); } + /** + * explode any scheduled orbital bombardments + */ + void resolveScheduledOrbitalBombardments() { + scheduledOrbitalBombardment + .forEach(ob -> doOrbitalBombardment(new Coords(ob.getX(), ob.getY()), ob.getDamageFactor(), ob.getRadius(), vPhaseReport)); + scheduledOrbitalBombardment.clear(); + } + /** * do a nuclear explosion * @@ -20378,6 +20441,72 @@ public void doNuclearExplosion(Coords position, int nukeType, Vector vDe nukeStats.craterDepth, vDesc); } + /** + * do an orbital bombardment + * @param position the position that will be hit by the orbital bombardment + * @param damageFactor the factor by which the base damage will be multiplied + * @param radius the radius which the damage will hit + * @param vDesc a vector that contains the output report + */ + public void doOrbitalBombardment(Coords position, int damageFactor, int radius, Vector vDesc) { + // Just in case. + if (vDesc == null) { + vDesc = new Vector<>(); + } + + Report r = new Report(1300, Report.PUBLIC); + + r.indent(); + r.add(position.getBoardNum(), true); + vDesc.add(r); + + // Then, do actual blast damage. + // Use the standard blast function for this. + Vector tmpV = new Vector<>(); + Vector blastedUnitsVec = new Vector<>(); + int range = radius + 1; + int baseDamage = damageFactor * 10; + var degradation = baseDamage / range; + doExplosion(baseDamage, degradation , false, position, true, tmpV, + blastedUnitsVec, -1, true); + Report.indentAll(tmpV, 2); + vDesc.addAll(tmpV); + + // Next, for whatever's left, do terrain effects + // such as clearing, roughing, and boiling off water. + boolean damageFlag = true; + + // Lastly, do secondary effects. + for (Entity entity : game.getEntitiesVector()) { + // loaded units and off board units don't have a position, + // so we don't count 'em here + if ((entity.getTransportId() != Entity.NONE) || (entity.getPosition() == null)) { + continue; + } + + // If it's already destroyed... + if ((entity.isDoomed()) || (entity.isDestroyed())) { + continue; + } + + // If it's too far away for this... + if (position.distance(entity.getPosition()) > radius) { + continue; + } + + // Actually do secondary effects against it. + // Since the effects are unit-dependant, we'll just define it in the + // entity. +// applySecondaryNuclearEffects(entity, position, vDesc); + } + + // All right. We're done. + r = new Report(1216, Report.PUBLIC); + r.indent(); + r.newlines = 2; + vDesc.add(r); + } + /** * explode a nuke * @@ -20472,8 +20601,9 @@ public void doNuclearExplosion(Coords position, int baseDamage, int degradation, // Use the standard blast function for this. Vector tmpV = new Vector<>(); Vector blastedUnitsVec = new Vector<>(); + doExplosion(baseDamage, degradation, true, position, true, tmpV, - blastedUnitsVec, -1); + blastedUnitsVec, -1, false); Report.indentAll(tmpV, 2); vDesc.addAll(tmpV); @@ -28374,7 +28504,7 @@ public Vector damageBuilding(Building bldg, int damage, String why, Coor Vector vRep = new Vector<>(); doExplosion(((FuelTank) bldg).getMagnitude(), 10, false, bldg.getCoords().nextElement(), true, - vRep, null, -1); + vRep, null, -1, false); Report.indentAll(vRep, 2); vPhaseReport.addAll(vRep); return vPhaseReport; @@ -28571,7 +28701,7 @@ private Vector criticalGunEmplacement(Vector guns, Build Vector vRep = new Vector<>(); doExplosion(((FuelTank) bldg).getMagnitude(), 10, false, bldg.getCoords().nextElement(), true, vRep, null, - -1); + -1, false); Report.indentAll(vRep, 2); vDesc.addAll(vRep); return vPhaseReport; diff --git a/megamek/src/megamek/server/totalwarfare/TWPhaseEndManager.java b/megamek/src/megamek/server/totalwarfare/TWPhaseEndManager.java index fb402b691a5..4edf0209754 100644 --- a/megamek/src/megamek/server/totalwarfare/TWPhaseEndManager.java +++ b/megamek/src/megamek/server/totalwarfare/TWPhaseEndManager.java @@ -135,6 +135,7 @@ void managePhase() { gameManager.assignAMS(); gameManager.handleAttacks(); gameManager.resolveScheduledNukes(); + gameManager.resolveScheduledOrbitalBombardments(); gameManager.applyBuildingDamage(); gameManager.checkForPSRFromDamage(); gameManager.cleanupDestroyedNarcPods(); From fc2e5ace8c534d82c89a4ba547a292950b46fa87 Mon Sep 17 00:00:00 2001 From: Coppio Date: Tue, 12 Nov 2024 13:58:11 -0300 Subject: [PATCH 05/20] chore: gm improving gm commands, removing unnecessary options --- megamek/i18n/megamek/common/options/messages.properties | 2 -- megamek/src/megamek/common/options/GameOptions.java | 1 - megamek/src/megamek/common/options/OptionsConstants.java | 1 - megamek/src/megamek/server/commands/KillCommand.java | 4 ---- .../server/commands/OrbitalBombardmentCommand.java | 8 ++++---- 5 files changed, 4 insertions(+), 12 deletions(-) diff --git a/megamek/i18n/megamek/common/options/messages.properties b/megamek/i18n/megamek/common/options/messages.properties index e1a5a134ba3..78fd3cd33c0 100644 --- a/megamek/i18n/megamek/common/options/messages.properties +++ b/megamek/i18n/megamek/common/options/messages.properties @@ -140,8 +140,6 @@ GameOptionsInfo.option.allow_nukes.displayableName=Allow command-line nukes. GameOptionsInfo.option.allow_nukes.description=This must be checked to allow players to throw nukes from the command line. If this is not checked, nukes are still available as advanced munitions. GameOptionsInfo.option.really_allow_nukes.displayableName=REALLY allow command-line nukes. GameOptionsInfo.option.really_allow_nukes.description=This must be checked to allow players to throw nukes from the command line. If this is not checked, nukes are still available as advanced munitions. -GameOptionsInfo.option.gm_can_kill_units.displayableName=Allow command-line kill (GM only). -GameOptionsInfo.option.gm_can_kill_units.description=This must be checked to allow the GM to kill units using command line. If this is not checked, the command is disabled. GameOptionsInfo.group.advancedRules.displayableName=Advanced Rules diff --git a/megamek/src/megamek/common/options/GameOptions.java b/megamek/src/megamek/common/options/GameOptions.java index 1bcf6c0ce8d..77fae48cbde 100755 --- a/megamek/src/megamek/common/options/GameOptions.java +++ b/megamek/src/megamek/common/options/GameOptions.java @@ -93,7 +93,6 @@ public synchronized void initialize() { addOption(allowed, OptionsConstants.ALLOWED_NO_CLAN_PHYSICAL, false); addOption(allowed, OptionsConstants.ALLOWED_ALLOW_NUKES, false); addOption(allowed, OptionsConstants.ALLOWED_REALLY_ALLOW_NUKES, false); - addOption(allowed, OptionsConstants.ALLOWED_GM_CAN_KILL_UNITS, false); IBasicOptionGroup advancedRules = addGroup("advancedRules"); addOption(advancedRules, OptionsConstants.ADVANCED_MINEFIELDS, false); diff --git a/megamek/src/megamek/common/options/OptionsConstants.java b/megamek/src/megamek/common/options/OptionsConstants.java index 9a757bc9897..0a46c5d48e7 100644 --- a/megamek/src/megamek/common/options/OptionsConstants.java +++ b/megamek/src/megamek/common/options/OptionsConstants.java @@ -330,7 +330,6 @@ public class OptionsConstants { public static final String ALLOWED_NO_CLAN_PHYSICAL = "no_clan_physical"; public static final String ALLOWED_ALLOW_NUKES = "allow_nukes"; public static final String ALLOWED_REALLY_ALLOW_NUKES = "really_allow_nukes"; - public static final String ALLOWED_GM_CAN_KILL_UNITS = "gm_can_kill_units"; public static final String ADVANCED_MINEFIELDS = "minefields"; public static final String ADVANCED_HIDDEN_UNITS = "hidden_units"; public static final String ADVANCED_BLACK_ICE= "black_ice"; diff --git a/megamek/src/megamek/server/commands/KillCommand.java b/megamek/src/megamek/server/commands/KillCommand.java index bc436c49380..45f2b6d7dca 100644 --- a/megamek/src/megamek/server/commands/KillCommand.java +++ b/megamek/src/megamek/server/commands/KillCommand.java @@ -45,10 +45,6 @@ public KillCommand(Server server, TWGameManager gameManager) { public void run(int connId, String[] args) { // Check to make sure gm kills are allowed! - if (!(server.getGame().getOptions().booleanOption(OptionsConstants.ALLOWED_GM_CAN_KILL_UNITS))) { - server.sendServerChat(connId, "Command-line kill is not enabled in this game."); - return; - } if (!isGM(connId)) { server.sendServerChat(connId, "You are not a Game Master."); return; diff --git a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java index c3d31e2202f..5424526f93d 100644 --- a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java +++ b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java @@ -35,12 +35,12 @@ public OrbitalBombardmentCommand(Server server, TWGameManager gameManager) { super(server, "ob", "GM Drops a bomb onto the board doing of 100 damage with a 3 hex radius, to be exploded at" + "the end of the next weapons attack phase." + "Allowed formats:"+ - "/bomb and" + - "/bomb [factor=10] [radius=4]" + - "the damage at impact point is 10 times the factor, default is 10. " + + "/ob and" + + "/ob [factor=#] [radius=#]" + + "the damage at impact point is the factor times 10, default factor value is 10. " + "and hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23), the explosion blast radius default " + "is equal to 4, it automatically applies a linear damage dropoff each hex away from the center." + - " All parameters in square brackets may be ommited. " + + " All parameters in square brackets may be omitted. " + " Example: /ob 10 10 factor=12 "); this.gameManager = gameManager; } From 4c3864e31e8e57fda0a75655a3631ffdbced4dc5 Mon Sep 17 00:00:00 2001 From: Coppio Date: Thu, 14 Nov 2024 01:33:17 -0300 Subject: [PATCH 06/20] feat: commands need a second pass for test and eval --- .../i18n/megamek/client/messages.properties | 4 +- .../megamek/client/messages_es.properties | 3 +- .../megamek/client/messages_ru.properties | 3 +- .../megamek/common/report-messages.properties | 3 +- .../client/ui/swing/CommonMenuBar.java | 5 - .../src/megamek/client/ui/swing/MapMenu.java | 144 +++++++++++++---- .../client/ui/swing/MovementDisplay.java | 37 +++-- .../client/ui/swing/boardview/BoardView.java | 37 +++++ .../swing/boardview/TerrainShadowHelper.java | 8 +- .../gmCommands/GamemasterCommandPanel.java | 82 ++++++++++ .../client/ui/swing/minimap/Minimap.java | 3 + .../ui/swing/tileset/TilesetManager.java | 8 + megamek/src/megamek/common/Board.java | 29 +++- megamek/src/megamek/common/Entity.java | 10 ++ megamek/src/megamek/common/Game.java | 28 +++- .../src/megamek/common/SpecialHexDisplay.java | 19 +-- .../common/weapons/AreaEffectHelper.java | 19 ++- .../commands/ChangeOwnershipCommand.java | 67 ++++---- .../server/commands/ChangeWeatherCommand.java | 98 ++++++------ .../server/commands/DisasterCommand.java | 148 +++++++++++++++--- .../server/commands/FirestarterCommand.java | 81 ++++++++++ .../server/commands/FirestormCommand.java | 103 ++++++++++++ .../commands/GamemasterServerCommand.java | 145 +++++++++++++++++ megamek/src/megamek/server/commands/IsGM.java | 13 -- .../megamek/server/commands/KillCommand.java | 52 +++--- .../commands/OrbitalBombardmentCommand.java | 102 +++++------- .../server/commands/RemoveSmokeCommand.java | 36 ++--- .../server/commands/arguments/Argument.java | 22 +++ .../commands/arguments/EnumArgument.java | 44 ++++++ .../commands/arguments/IntegerArgument.java | 63 ++++++++ .../server/props/OrbitalBombardment.java | 10 +- .../server/totalwarfare/TWGameManager.java | 93 ++++++----- 32 files changed, 1149 insertions(+), 370 deletions(-) create mode 100644 megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java create mode 100644 megamek/src/megamek/server/commands/FirestarterCommand.java create mode 100644 megamek/src/megamek/server/commands/FirestormCommand.java create mode 100644 megamek/src/megamek/server/commands/GamemasterServerCommand.java delete mode 100644 megamek/src/megamek/server/commands/IsGM.java create mode 100644 megamek/src/megamek/server/commands/arguments/Argument.java create mode 100644 megamek/src/megamek/server/commands/arguments/EnumArgument.java create mode 100644 megamek/src/megamek/server/commands/arguments/IntegerArgument.java diff --git a/megamek/i18n/megamek/client/messages.properties b/megamek/i18n/megamek/client/messages.properties index 4c96ba383f0..9cc5a513173 100644 --- a/megamek/i18n/megamek/client/messages.properties +++ b/megamek/i18n/megamek/client/messages.properties @@ -2693,7 +2693,6 @@ MovementDisplay.moveLowerElevation=Go Down MovementDisplay.BackWardsElevationChange=Moving Backwards over an elevation change.\n MovementDisplay.CarefulStand.title=Careful Stand? MovementDisplay.CarefulStand.message=Do you wish to use careful stand?\n -MovementDisplay.Traitor=Traitor Unit MovementDisplay.NotUpToSpeed=Selected unit cannot run/flank because it has poor performance and is not up to speed MovementDisplay.UpToSpeed=Selected unit is up to speed so it can run/flank MovementDisplay.UnjamRAC.title=Unjam? @@ -4630,6 +4629,9 @@ CMVPanel.font=Font: Gamemaster.Gamemaster=Gamemaster Gamemaster.EditDamage=Edit Damage Gamemaster.Configure=Configure +Gamemaster.Traitor=Traitor Unit +Gamemaster.SpecialCommands=Special Commands +Gamemaster.KillUnit=Kill Unit # Scenario Chooser ScenarioChooser.title=Choose Scenario diff --git a/megamek/i18n/megamek/client/messages_es.properties b/megamek/i18n/megamek/client/messages_es.properties index 086d314aee1..98e1e7aeb78 100644 --- a/megamek/i18n/megamek/client/messages_es.properties +++ b/megamek/i18n/megamek/client/messages_es.properties @@ -2438,7 +2438,6 @@ MovementDisplay.moveLowerElevation=Bajar MovementDisplay.BackWardsElevationChange=Moverse hacia atrás sobre un cambio de elevación.\n MovementDisplay.CarefulStand.title=¿Mantenerse con Precaución? MovementDisplay.CarefulStand.message=¿Desea Mantenerse con Precaución?\n -MovementDisplay.Traitor=Unidad Traidora MovementDisplay.NotUpToSpeed=La unidad seleccionada no puede correr/flanquear porque tiene un rendimiento deficiente y no está al día MovementDisplay.UpToSpeed=La unidad seleccionada está al día para que pueda correr/flanquear MovementDisplay.UnjamRAC.title=¿Destrabar? @@ -4267,3 +4266,5 @@ ForceGeneratorDialog.reinforced=Reforzado\ ForceGeneratorDialog.understrength=Más Débiles\ ForceGeneratorDialog.default=Predeterminado ForceGeneratorDialog.noCrew=Sin tripulación + +Gamemaster.Traitor=Unidad Traidora \ No newline at end of file diff --git a/megamek/i18n/megamek/client/messages_ru.properties b/megamek/i18n/megamek/client/messages_ru.properties index 06812521aca..69f44bd0bed 100644 --- a/megamek/i18n/megamek/client/messages_ru.properties +++ b/megamek/i18n/megamek/client/messages_ru.properties @@ -1373,7 +1373,6 @@ MovementDisplay.moveLowerElevation=Спуститься MovementDisplay.BackWardsElevationChange=Преодоление смены уровня высоты реверсом хода.\n MovementDisplay.CarefulStand.title=Использовать осторожную стойку? MovementDisplay.CarefulStand.message=Хотите ли вы использовать осторожную стойку?\n -MovementDisplay.Traitor=Юнит предатель MovementDisplay.NotUpToSpeed=Выбранный юнит не может бежать/ехать быстро потому что у него плохая форма и он не достигнет скорости MovementDisplay.UpToSpeed=Выбранному юниту хватает скорости и он может бежать/ехать быстро MovementDisplay.UnjamRAC.title=Расклинить? @@ -2258,3 +2257,5 @@ BotConfigDialog.princessHelp.title=Справка по Принцессе SavePrincessDialog.question=Сохранить изменения в эту конфигурацию? SavePrincessDialog.saveTargets=Сохранить список стратегичеких целей? + +Gamemaster.Traitor=Юнит предатель \ No newline at end of file diff --git a/megamek/i18n/megamek/common/report-messages.properties b/megamek/i18n/megamek/common/report-messages.properties index 20be24c6ee5..5bb6ad59327 100755 --- a/megamek/i18n/megamek/common/report-messages.properties +++ b/megamek/i18n/megamek/common/report-messages.properties @@ -56,8 +56,9 @@ 1242=no effect #1300s - Orbital Bombardment related -1300=An orbital bombardment hit hex !!! +1300=Orbital bombardment hit hex !!! 1301=End of orbital bombardment resolution +1302= has commenced an orbital bombardment, it will land at the end of the next weapons phase at hex . # 1500s - ammo handling related 1500= () selected diff --git a/megamek/src/megamek/client/ui/swing/CommonMenuBar.java b/megamek/src/megamek/client/ui/swing/CommonMenuBar.java index a79418fee26..b992fc2d72b 100644 --- a/megamek/src/megamek/client/ui/swing/CommonMenuBar.java +++ b/megamek/src/megamek/client/ui/swing/CommonMenuBar.java @@ -356,11 +356,6 @@ public CommonMenuBar() { toggleCFWarning.setToolTipText(Messages.getString("CommonMenuBar.viewToggleCFWarningToolTip")); toggleCFWarning.setSelected(GUIP.getShowCFWarnings()); - /* - * TODO: moveTraitor = createMenuItem(menu, - * getString("CommonMenuBar.moveTraitor"), MovementDisplay.MOVE_TRAITOR); - */ - // Create the Help menu menu = new JMenu(Messages.getString("CommonMenuBar.HelpMenu")); menu.setMnemonic(VK_H); diff --git a/megamek/src/megamek/client/ui/swing/MapMenu.java b/megamek/src/megamek/client/ui/swing/MapMenu.java index 3fad530711a..743528ea0d2 100644 --- a/megamek/src/megamek/client/ui/swing/MapMenu.java +++ b/megamek/src/megamek/client/ui/swing/MapMenu.java @@ -24,22 +24,14 @@ import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import java.math.BigInteger; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Objects; -import java.util.StringTokenizer; -import java.util.Vector; - -import javax.swing.JMenu; -import javax.swing.JMenuItem; -import javax.swing.JPopupMenu; -import javax.swing.UIManager; +import java.util.*; + +import javax.swing.*; import megamek.client.Client; import megamek.client.event.BoardViewEvent; import megamek.client.ui.Messages; +import megamek.client.ui.swing.gmCommands.GamemasterCommandPanel; import megamek.client.ui.swing.lobby.LobbyUtility; import megamek.common.*; import megamek.common.Building.DemolitionCharge; @@ -54,6 +46,8 @@ import megamek.common.weapons.other.CLFireExtinguisher; import megamek.common.weapons.other.ISFireExtinguisher; import megamek.logging.MMLogger; +import megamek.server.Server; +import megamek.server.commands.*; /** * Context menu for the board. @@ -209,23 +203,6 @@ private boolean createMenu() { } } - - // Traitor Command - JMenuItem item = new JMenuItem(Messages.getString("MovementDisplay.Traitor")); - item.setActionCommand(MovementDisplay.MoveCommand.MOVE_TRAITOR.getCmd()); - item.addActionListener(evt -> { - try { - if (currentPanel instanceof MovementDisplay) { - ((MovementDisplay) currentPanel).actionPerformed(evt); - } - } catch (Exception ex) { - logger.error(ex, ""); - } - }); - - if (game.getPhase().isMovement()) { - add(item); - } } menu = touchOffExplosivesMenu(); @@ -433,10 +410,15 @@ private JMenu createGamemasterMenu() { JMenu dmgMenu = new JMenu(Messages.getString("Gamemaster.EditDamage")); JMenu cfgMenu = new JMenu(Messages.getString("Gamemaster.Configure")); + JMenu traitorMenu = new JMenu(Messages.getString("Gamemaster.Traitor")); + JMenu killMenu = new JMenu(Messages.getString("Gamemaster.KillUnit")); + JMenu specialCommandsMenu = createGMSpecialCommandsMenu(); var entities = client.getGame().getEntitiesVector(coords); for (Entity entity : entities) { dmgMenu.add(createUnitEditorMenuItem(entity)); cfgMenu.add(createCustomMekMenuItem(entity)); + traitorMenu.add(createTraitorMenuItem(entity)); + killMenu.add(createKillMenuItem(entity)); } if (dmgMenu.getItemCount() != 0) { menu.add(dmgMenu); @@ -444,10 +426,41 @@ private JMenu createGamemasterMenu() { if (cfgMenu.getItemCount() != 0) { menu.add(cfgMenu); } + if (traitorMenu.getItemCount() != 0) { + menu.add(traitorMenu); + } + if (killMenu.getItemCount() != 0) { + menu.add(killMenu); + } + menu.add(specialCommandsMenu); return menu; } } + private record Tuple(String name, GamemasterServerCommand command) {} + + private JMenu createGMSpecialCommandsMenu() { + JMenu menu = new JMenu(Messages.getString("Gamemaster.SpecialCommands")); + var commands = List.of( + new Tuple("Kill Unit", new KillCommand(null, null)), + new Tuple("Change Ownership", new ChangeOwnershipCommand(null, null)), + new Tuple("Change Weather", new ChangeWeatherCommand(null, null)), + new Tuple("Disasters", new DisasterCommand(null, null)), + new Tuple("Orbital Bombardment", new OrbitalBombardmentCommand(null, null)), + new Tuple("Remove Smoke", new RemoveSmokeCommand(null, null)), + new Tuple("Firestarter", new FirestarterCommand(null, null)), + new Tuple("Firestorm", new FirestormCommand(null, null)) + ); + + for (var cmd : commands) { + JMenuItem item = new JMenuItem(cmd.name()); + item.addActionListener(evt -> new GamemasterCommandPanel(gui.getFrame(), gui, cmd.command()).setVisible(true)); + menu.add(item); + } + + return menu; + } + JMenuItem createCustomMekMenuItem(Entity entity) { JMenuItem item = new JMenuItem(entity.getDisplayName()); item.addActionListener(evt -> { @@ -473,6 +486,79 @@ JMenuItem createUnitEditorMenuItem(Entity entity) { return item; } + private JMenuItem createTraitorMenuItem(Entity en) { + // Traitor Command + JMenuItem item = new JMenuItem(Messages.getString("Gamemaster.Traitor") + " " + en.getDisplayName()); + item.addActionListener(evt -> { + gui.getBoardView().setShouldIgnoreKeys(false); + var players = client.getGame().getPlayersList(); + Integer[] playerIds = new Integer[players.size() - 1]; + String[] playerNames = new String[players.size() - 1]; + String[] options = new String[players.size() - 1]; + + Player currentOwner = en.getOwner(); + // Loop through the players vector and fill in the arrays + int idx = 0; + for (var player : players) { + if (player.getName().equals(currentOwner.getName()) + || (player.getTeam() == Player.TEAM_UNASSIGNED)) { + continue; + } + playerIds[idx] = player.getId(); + playerNames[idx] = player.getName(); + options[idx] = player.getName() + " (ID: " + player.getId() + ")"; + idx++; + } + + // No players available? + if (idx == 0) { + JOptionPane.showMessageDialog(gui.getFrame(), + "No players available. Units cannot be traitored to players " + + "that aren't assigned to a team."); + return; + } + + // Dialog for choosing which player to transfer to + String option = (String) JOptionPane.showInputDialog(gui.getFrame(), + "Choose the player to gain ownership of this unit (" + en.getDisplayName() + ") when it turns traitor", + "Traitor", JOptionPane.QUESTION_MESSAGE, null, + options, options[0]); + + // Verify that we have a valid option... + if (option != null) { + // Now that we've selected a player, correctly associate the ID and name + int id = playerIds[Arrays.asList(options).indexOf(option)]; + String name = playerNames[Arrays.asList(options).indexOf(option)]; + + // And now we perform the actual transfer + int confirm = JOptionPane.showConfirmDialog( + gui.getFrame(), + en.getDisplayName() + " will switch to " + name + + "'s side at the end of this turn. Are you sure?", + "Confirm", + JOptionPane.YES_NO_OPTION); + if (confirm == JOptionPane.YES_OPTION) { + client.sendChat(String.format("/changeOwner %d %d", en.getId(), id)); + } + } + }); + + return item; + } + + private JMenuItem createKillMenuItem(Entity en) { + JMenuItem item = new JMenuItem(Messages.getString("Gamemaster.KillUnit") + " " + en.getDisplayName()); + item.addActionListener(evt -> { + int confirm = JOptionPane.showConfirmDialog( + gui.getFrame(), + "Are you sure you want to kill " + en.getDisplayName() + "?", "Confirm", JOptionPane.YES_NO_OPTION); + if (confirm == JOptionPane.YES_OPTION) { + client.sendChat(String.format("/kill %d", en.getId())); + } + }); + return item; + } + private JMenu createSelectMenu() { JMenu menu = new JMenu("Select"); // add select options diff --git a/megamek/src/megamek/client/ui/swing/MovementDisplay.java b/megamek/src/megamek/client/ui/swing/MovementDisplay.java index 48917c7e149..5251cf355e6 100644 --- a/megamek/src/megamek/client/ui/swing/MovementDisplay.java +++ b/megamek/src/megamek/client/ui/swing/MovementDisplay.java @@ -19,20 +19,6 @@ */ package megamek.client.ui.swing; -import static megamek.common.MiscType.F_CHAFF_POD; -import static megamek.common.options.OptionsConstants.ADVGRNDMOV_TACOPS_ZIPLINES; - -import java.awt.Color; -import java.awt.event.ActionEvent; -import java.awt.event.InputEvent; -import java.awt.event.MouseEvent; -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; - import megamek.client.event.BoardViewEvent; import megamek.client.ui.Messages; import megamek.client.ui.SharedUtility; @@ -62,6 +48,19 @@ import megamek.common.preference.PreferenceManager; import megamek.logging.MMLogger; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.InputEvent; +import java.awt.event.MouseEvent; +import java.util.List; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static megamek.common.MiscType.F_CHAFF_POD; +import static megamek.common.options.OptionsConstants.ADVGRNDMOV_TACOPS_ZIPLINES; + public class MovementDisplay extends ActionPhaseDisplay { private static final MMLogger logger = MMLogger.create(MovementDisplay.class); @@ -230,7 +229,7 @@ public String toString() { } public String getHotKeyDesc() { - String result = ""; + String result; String msgNext = Messages.getString("Next"); String msgPrevious = Messages.getString("Previous"); @@ -5308,11 +5307,15 @@ public synchronized void actionPerformed(ActionEvent ev) { String[] playerNames = new String[players.size() - 1]; String[] options = new String[players.size() - 1]; Entity e = ce(); + if (e == null) { + return; + } + Player currentOwner = e.getOwner(); // Loop through the players vector and fill in the arrays int idx = 0; for (var player : players) { - if (player.getName().equals(clientgui.getClient().getLocalPlayer().getName()) + if (player.getName().equals(currentOwner.getName()) || (player.getTeam() == Player.TEAM_UNASSIGNED)) { continue; } @@ -5332,7 +5335,7 @@ public synchronized void actionPerformed(ActionEvent ev) { // Dialog for choosing which player to transfer to String option = (String) JOptionPane.showInputDialog(clientgui.getFrame(), - "Choose the player to gain ownership of this unit when it turns traitor", + "Choose the player to gain ownership of this unit (" + e.getDisplayName() + ") when it turns traitor", "Traitor", JOptionPane.QUESTION_MESSAGE, null, options, options[0]); diff --git a/megamek/src/megamek/client/ui/swing/boardview/BoardView.java b/megamek/src/megamek/client/ui/swing/boardview/BoardView.java index 1a5d79f083a..50c9e923c09 100644 --- a/megamek/src/megamek/client/ui/swing/boardview/BoardView.java +++ b/megamek/src/megamek/client/ui/swing/boardview/BoardView.java @@ -87,6 +87,7 @@ import megamek.common.util.ImageUtil; import megamek.common.util.fileUtils.MegaMekFile; import megamek.logging.MMLogger; +import megamek.server.props.OrbitalBombardment; /** * Displays the board; lets the user scroll around and select points on it. @@ -637,6 +638,7 @@ public void mouseDragged(MouseEvent e) { SpecialHexDisplay.Type.BOMB_HIT.init(); SpecialHexDisplay.Type.BOMB_DRIFT.init(); SpecialHexDisplay.Type.PLAYER_NOTE.init(); + SpecialHexDisplay.Type.ORBITAL_BOMBARDMENT.init(); fovHighlightingAndDarkening = new FovHighlightingAndDarkening(this); @@ -1454,6 +1456,38 @@ private Mounted selectedWeapon() { return (clientgui != null) ? clientgui.getDisplayedWeapon().orElse(null) : null; } + private void drawOrbitalBombardmentHexes(Graphics boardGraphics) { + Image orbitalBombardmentImage = tileManager.getOrbitalBombardmentImage(); + Rectangle view = boardGraphics.getClipBounds(); + boolean justDraw = false; + // Compute the origin of the viewing area + int drawX = (view.x / (int) (HEX_WC * scale)) - 1; + int drawY = (view.y / (int) (HEX_H * scale)) - 1; + + // Compute size of viewing area + int drawWidth = (view.width / (int) (HEX_WC * scale)) + 3; + int drawHeight = (view.height / (int) (HEX_H * scale)) + 3; + + // Draw incoming artillery sprites - requires server to update client's + // view of game + for (Enumeration attacks = game.getOrbitalBombardmentAttacks(); attacks.hasMoreElements();) { + final OrbitalBombardment orbitalBombardment = attacks.nextElement(); + final Coords c = new Coords(orbitalBombardment.getX(), orbitalBombardment.getY()); + // Is the Coord within the viewing area? + boolean insideViewArea = ((c.getX() >= drawX) && (c.getX() <= (drawX + drawWidth)) + && (c.getY() >= drawY) && (c.getY() <= (drawY + drawHeight))); + if (insideViewArea) { + Point p = getHexLocation(c); + boardGraphics.drawImage(getScaledImage(orbitalBombardmentImage, true), p.x, p.y, boardPanel); + for (Coords c2 : c.allAtDistanceOrLess(orbitalBombardment.getRadius())) { + Point p2 = getHexLocation(c2); + boardGraphics.drawImage(getScaledImage(orbitalBombardmentImage, true), p2.x, p2.y, boardPanel); + } + } + + } + } + /** * Display artillery modifier in pretargeted hexes */ @@ -1639,6 +1673,9 @@ public BufferedImage getEntireBoardImage(boolean ignoreUnits, boolean useBaseZoo // Artillery targets drawArtilleryHexes(boardGraph); + // draw Orbital Bombardment targets; + drawOrbitalBombardmentHexes(boardGraph); + // draw highlight border drawSprite(boardGraph, highlightSprite); diff --git a/megamek/src/megamek/client/ui/swing/boardview/TerrainShadowHelper.java b/megamek/src/megamek/client/ui/swing/boardview/TerrainShadowHelper.java index 9b04715eb81..2de4ebb2d26 100644 --- a/megamek/src/megamek/client/ui/swing/boardview/TerrainShadowHelper.java +++ b/megamek/src/megamek/client/ui/swing/boardview/TerrainShadowHelper.java @@ -185,9 +185,11 @@ BufferedImage updateShadowMap() { surrounded = false; } else { Hex nhex = board.getHex(c.translated(dir)); - int lv = nhex.getLevel(); - if (lv < level) { - surrounded = false; + if (nhex != null) { + int lv = nhex.getLevel(); + if (lv < level) { + surrounded = false; + } } } } diff --git a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java new file mode 100644 index 00000000000..f85f1b7b55d --- /dev/null +++ b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java @@ -0,0 +1,82 @@ +package megamek.client.ui.swing.gmCommands; + +import megamek.client.IClient; +import megamek.client.ui.swing.ClientGUI; +import megamek.server.commands.GamemasterServerCommand; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.EnumArgument; +import megamek.server.commands.arguments.IntegerArgument; + +import javax.swing.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +// JPanel wrapper for game master commands +public class GamemasterCommandPanel extends JDialog { + private final GamemasterServerCommand command; + private final ClientGUI client; + + public GamemasterCommandPanel(JFrame parent, ClientGUI client, GamemasterServerCommand command) { + super(parent, command.getName(), true); + this.command = command; + this.client = client; + setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); + + JLabel helpLabel = new JLabel(command.getHelp()); + add(helpLabel); + + List> arguments = command.defineArguments(); + Map argumentComponents = new HashMap<>(); + + for (Argument argument : arguments) { + JLabel label = new JLabel(argument.getName() + ":"); + add(label); + + if (argument instanceof IntegerArgument intArg) { + JSpinner spinner = new JSpinner(new SpinnerNumberModel( + intArg.hasDefaultValue() ? intArg.getValue() : 0, + intArg.getMinValue(), + intArg.getMaxValue(), + 1)); + add(spinner); + argumentComponents.put(argument.getName(), spinner); + } else if (argument instanceof EnumArgument enumArg) { + JComboBox comboBox = new JComboBox<>(); + for (Enum constant : enumArg.getEnumType().getEnumConstants()) { + comboBox.addItem(constant.name()); + } + if (enumArg.getValue() != null) { + comboBox.setSelectedItem(enumArg.getValue().name()); + } + add(comboBox); + argumentComponents.put(argument.getName(), comboBox); + } + } + + JButton executeButton = new JButton("Execute Command"); + executeButton.addActionListener(e -> executeCommand(argumentComponents)); + add(executeButton); + + pack(); + setLocationRelativeTo(parent); + } + + private void executeCommand(Map argumentComponents) { + List> arguments = command.defineArguments(); + String[] args = new String[arguments.size()]; + + for (int i = 0; i < arguments.size(); i++) { + Argument argument = arguments.get(i); + JComponent component = argumentComponents.get(argument.getName()); + + if (component instanceof JSpinner) { + args[i] = argument.getName() + "=" + ((JSpinner) component).getValue().toString(); + } else if (component instanceof JComboBox) { + args[i] = argument.getName() + "=" + Objects.requireNonNull(((JComboBox) component).getSelectedItem()); + } + } + client.getClient().sendChat("/" + command.getName() + " " + String.join(" ", args)); + } +} diff --git a/megamek/src/megamek/client/ui/swing/minimap/Minimap.java b/megamek/src/megamek/client/ui/swing/minimap/Minimap.java index 7aa0f11da92..10df3f5a6ba 100644 --- a/megamek/src/megamek/client/ui/swing/minimap/Minimap.java +++ b/megamek/src/megamek/client/ui/swing/minimap/Minimap.java @@ -536,6 +536,9 @@ private void drawMap(boolean forceDraw) { for (int j = 0; j < board.getWidth(); j++) { for (int k = 0; k < board.getHeight(); k++) { Hex h = board.getHex(j, k); + if (h == null) { + continue; + } if (dirtyMap || dirty[j / 10][k / 10]) { gg.setColor(terrainColor(h)); if (h.containsTerrain(SPACE)) { diff --git a/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java b/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java index b051ee2b2e9..1a3ec4ff91e 100644 --- a/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java +++ b/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java @@ -77,6 +77,8 @@ public class TilesetManager implements IPreferenceChangeListener { private static final String FILENAME_ARTILLERY_ADJUSTED_IMAGE = "artyadj.gif"; private static final String FILENAME_ARTILLERY_INCOMING_IMAGE = "artyinc.gif"; + private static final String FILENAME_ORBITAL_BOMBARDMENT_INCOMING_IMAGE = "obinc.gif"; + public static final int ARTILLERY_AUTOHIT = 0; public static final int ARTILLERY_ADJUSTED = 1; public static final int ARTILLERY_INCOMING = 2; @@ -106,6 +108,7 @@ public class TilesetManager implements IPreferenceChangeListener { private Image artilleryAutohit; private Image artilleryAdjusted; private Image artilleryIncoming; + private Image orbitalBombardmentIncoming; /** * Hexes under the effects of ECM have a shaded "static" image displayed, @@ -414,6 +417,10 @@ public Image getEcmStaticImage(Color tint) { return image; } + public Image getOrbitalBombardmentImage() { + return orbitalBombardmentIncoming; + } + public Image getArtilleryTarget(int which) { switch (which) { case ARTILLERY_AUTOHIT: @@ -486,6 +493,7 @@ public void loadNeededImages(Game game) { artilleryAutohit = LoadSpecificImage(Configuration.hexesDir(), FILENAME_ARTILLERY_AUTOHIT_IMAGE); artilleryAdjusted = LoadSpecificImage(Configuration.hexesDir(), FILENAME_ARTILLERY_ADJUSTED_IMAGE); artilleryIncoming = LoadSpecificImage(Configuration.hexesDir(), FILENAME_ARTILLERY_INCOMING_IMAGE); + orbitalBombardmentIncoming = LoadSpecificImage(Configuration.hexesDir(), FILENAME_ORBITAL_BOMBARDMENT_INCOMING_IMAGE); started = true; } diff --git a/megamek/src/megamek/common/Board.java b/megamek/src/megamek/common/Board.java index 66bd8facb55..f3bdc36db1f 100644 --- a/megamek/src/megamek/common/Board.java +++ b/megamek/src/megamek/common/Board.java @@ -21,11 +21,7 @@ package megamek.common; import static java.util.stream.Collectors.toList; -import static megamek.common.SpecialHexDisplay.Type.ARTILLERY_DRIFT; -import static megamek.common.SpecialHexDisplay.Type.ARTILLERY_MISS; -import static megamek.common.SpecialHexDisplay.Type.BOMB_DRIFT; -import static megamek.common.SpecialHexDisplay.Type.BOMB_HIT; -import static megamek.common.SpecialHexDisplay.Type.BOMB_MISS; +import static megamek.common.SpecialHexDisplay.Type.*; import java.io.*; import java.util.*; @@ -1752,7 +1748,7 @@ public Hashtable> getSpecialHexDisplayTabl public void setSpecialHexDisplayTable(Hashtable> shd) { Hashtable> temp = new Hashtable<>(); - // Grab all current ARTILLERY_MISS instances + // Grab all current ARTILLERY_MISS and ARTILLERY_DRIFT instances for (Map.Entry> e : specialHexes.entrySet()) { for (SpecialHexDisplay special : e.getValue()) { if (Set.of(ARTILLERY_MISS, ARTILLERY_DRIFT).contains(special.getType())) { @@ -2087,4 +2083,25 @@ public static int decodeCustomDeploymentZoneID(int zoneID) { public static int encodeCustomDeploymentZoneID(int zoneID) { return zoneID + NUM_ZONES_X2; } + + public void clearOrbitalBombardmentIcons() { + for (Coords coords : specialHexes.keySet()) { + removeOrbitalBombardmentIcons(coords); + } + } + + public void removeOrbitalBombardmentIcons(Coords coords) { + // Do nothing if the coords aren't on this board. + if (!this.contains(coords) || null == specialHexes.get(coords)) { + return; + } + + // Use iterator so we can remove while traversing + for (Iterator iterator = specialHexes.get(coords).iterator(); iterator.hasNext();) { + SpecialHexDisplay shd = iterator.next(); + if (ORBITAL_BOMBARDMENT.equals(shd.getType())) { + iterator.remove(); + } + } + } } diff --git a/megamek/src/megamek/common/Entity.java b/megamek/src/megamek/common/Entity.java index 469a6c4aa48..38cc816bf1f 100644 --- a/megamek/src/megamek/common/Entity.java +++ b/megamek/src/megamek/common/Entity.java @@ -4792,6 +4792,16 @@ public List getCriticalSlots(int location) { return result; } + public boolean hasUndamagedCriticalSlots() { + return IntStream.range(0, locations()) + .mapToLong(i -> getCriticalSlots(i) + .stream() + .filter(Objects::nonNull) + .filter(CriticalSlot::isHittable) + .count() + ).sum() > 0; + } + /** * @return True when this unit has a RISC Super-Cooled Myomer System (even if * the SCM is destroyed). diff --git a/megamek/src/megamek/common/Game.java b/megamek/src/megamek/common/Game.java index cd106d57c9d..55f5ea13373 100644 --- a/megamek/src/megamek/common/Game.java +++ b/megamek/src/megamek/common/Game.java @@ -15,12 +15,6 @@ */ package megamek.common; -import static java.util.stream.Collectors.toList; - -import java.io.Serializable; -import java.util.*; -import java.util.concurrent.CopyOnWriteArrayList; - import megamek.MMConstants; import megamek.Version; import megamek.client.bot.princess.BehaviorSettings; @@ -39,9 +33,16 @@ import megamek.common.weapons.AttackHandler; import megamek.logging.MMLogger; import megamek.server.SmokeCloud; +import megamek.server.props.OrbitalBombardment; import megamek.server.victory.VictoryHelper; import megamek.server.victory.VictoryResult; +import java.io.Serializable; +import java.util.*; +import java.util.concurrent.CopyOnWriteArrayList; + +import static java.util.stream.Collectors.toList; + /** * The game class is the root of all data about the game in progress. Both the * Client and the Server should have one of these objects, and it is their job @@ -113,7 +114,7 @@ public final class Game extends AbstractGame implements Serializable, PlanetaryC private Vector vibrabombs = new Vector<>(); private Vector attacks = new Vector<>(); private Vector offboardArtilleryAttacks = new Vector<>(); - + private Vector orbitalBombardmentAttacks = new Vector(); private int lastEntityId; private Vector tagInfoForTurn = new Vector<>(); @@ -2202,6 +2203,19 @@ public int removeSpecificEntityTurnsFor(Entity entity) { return turnsToRemove.size(); } + public void setOrbitalBombardmentVector(Vector v) { + orbitalBombardmentAttacks = v; + processGameEvent(new GameBoardChangeEvent(this)); + } + + public void resetOrbitalBombardmentAttacks() { + orbitalBombardmentAttacks.removeAllElements(); + } + + public Enumeration getOrbitalBombardmentAttacks() { + return orbitalBombardmentAttacks.elements(); + } + public void setArtilleryVector(Vector v) { offboardArtilleryAttacks = v; processGameEvent(new GameBoardChangeEvent(this)); diff --git a/megamek/src/megamek/common/SpecialHexDisplay.java b/megamek/src/megamek/common/SpecialHexDisplay.java index 170966e71dd..2fb11e1cac3 100644 --- a/megamek/src/megamek/common/SpecialHexDisplay.java +++ b/megamek/src/megamek/common/SpecialHexDisplay.java @@ -96,16 +96,12 @@ public boolean drawBefore() { } }, PLAYER_NOTE(new MegaMekFile(Configuration.hexesDir(), "note.png").toString()) { - @Override - public boolean drawBefore() { - return true; - } - @Override public boolean drawAfter() { return true; } - }; + }, + ORBITAL_BOMBARDMENT(new MegaMekFile(Configuration.hexesDir(), "obinc.gif").toString()); private transient Image defaultImage; private final String defaultImagePath; @@ -250,16 +246,17 @@ public int getObscuredLevel() { * @return */ public boolean isObscured(Player other) { + if (owner == null) { + return false; + } if ((obscured == SHD_OBSCURED_OWNER) && owner.equals(other)) { return false; } else if ((obscured == SHD_OBSCURED_TEAM) && (other != null) && (owner.getTeam() == other.getTeam())) { return false; - } else if (obscured == SHD_OBSCURED_ALL) { - return false; - } else { - return true; } + + return obscured != SHD_OBSCURED_ALL; } public void setObscured(int obscured) { @@ -272,7 +269,7 @@ public void setObscured(int obscured) { * display * in the appropriate phase. Other bomb- or artillery-related graphics are * optional. - * + * * @param phase * @param curRound * @param playerChecking diff --git a/megamek/src/megamek/common/weapons/AreaEffectHelper.java b/megamek/src/megamek/common/weapons/AreaEffectHelper.java index b9a4e04ca5d..32ea8900b05 100644 --- a/megamek/src/megamek/common/weapons/AreaEffectHelper.java +++ b/megamek/src/megamek/common/weapons/AreaEffectHelper.java @@ -13,19 +13,16 @@ */ package megamek.common.weapons; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Vector; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.IntStream; import megamek.common.*; import megamek.common.planetaryconditions.Atmosphere; import megamek.common.planetaryconditions.PlanetaryConditions; import megamek.logging.MMLogger; import megamek.server.totalwarfare.TWGameManager; +import org.apache.commons.lang3.IntegerRange; /** * Class containing functionality that helps out with area effect weapons. @@ -805,6 +802,14 @@ public static void applyExplosionClusterDamageToEntity(Entity entity, int damage HitData hit = entity.rollHitLocation(table, Compute.targetSideTable(position, entity)); vDesc.addAll(gameManager.damageEntity(entity, hit, cluster, false, DamageType.IGNORE_PASSENGER, false, true)); + + // If there is nothing left to destroy in the unit + if ( + entity.isDoomed() + && (!entity.hasUndamagedCriticalSlots() || entity.getRemovalCondition() == IEntityRemovalConditions.REMOVE_DEVASTATED) + ) { + break; + } damage -= cluster; } } diff --git a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java index d50836c22e2..d9ca02e4e9f 100644 --- a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java +++ b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java @@ -21,59 +21,54 @@ import megamek.common.Entity; import megamek.common.Player; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; import megamek.server.totalwarfare.TWGameManager; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + /** * The Server Command "/changeOwner" that will switch an entity's owner to another player. * * @author Luana Scoppio */ -public class ChangeOwnershipCommand extends ServerCommand implements IsGM { - - private final TWGameManager gameManager; +public class ChangeOwnershipCommand extends GamemasterServerCommand { public ChangeOwnershipCommand(Server server, TWGameManager gameManager) { super(server, + gameManager, "changeOwner", "Switches ownership of a player's entity to another player during the end phase. " - + "Usage: /changeOwner " - + "The following is an example of changing unit ID 7 to player ID 2: /changeOwner 7 2 "); - this.gameManager = gameManager; + + "Usage: /changeOwner " + + "The following is an example of changing unit ID 7 to player ID 2: /changeOwner 7 2 "); } - /** - * Run this command with the arguments supplied - * - * @see ServerCommand#run(int, String[]) - */ @Override - public void run(int connId, String[] args) { - try { - if (!isGM(connId)) { - server.sendServerChat(connId, "You are not a Game Master."); - return; - } - - int eid = Integer.parseInt(args[1]); - Entity ent = gameManager.getGame().getEntity(eid); - int pid = Integer.parseInt(args[2]); - Player player = server.getGame().getPlayer(pid); - if (null == ent) { - server.sendServerChat(connId, "No such entity."); - } else if (null == player) { - server.sendServerChat(connId, "No such player."); - } else if (player.getTeam() == Player.TEAM_UNASSIGNED) { - server.sendServerChat(connId, "Player must be assigned a team."); - } else { - server.sendServerChat(connId, ent.getDisplayName() + " will switch to " + player.getName() + "'s side at the end of this turn."); - ent.setTraitorId(pid); - } - } catch (NumberFormatException ignored) { - } + public List> defineArguments() { + List> arguments = new ArrayList<>(); + arguments.add(new IntegerArgument("unitID", 0, Integer.MAX_VALUE)); + arguments.add(new IntegerArgument("playerID", 0, Integer.MAX_VALUE)); + return arguments; } @Override - public TWGameManager getGameManager() { - return gameManager; + protected void runAsGM(int connId, Map> args) { + IntegerArgument unitID = (IntegerArgument) args.get("unitID"); + IntegerArgument playerID = (IntegerArgument) args.get("playerID"); + + Entity ent = gameManager.getGame().getEntity(unitID.getValue()); + Player player = server.getGame().getPlayer(playerID.getValue()); + if (null == ent) { + server.sendServerChat(connId, "No such entity."); + } else if (null == player) { + server.sendServerChat(connId, "No such player."); + } else if (player.getTeam() == Player.TEAM_UNASSIGNED) { + server.sendServerChat(connId, "Player must be assigned a team."); + } else { + server.sendServerChat(connId, ent.getDisplayName() + " will switch to " + player.getName() + "'s side at the end of this turn."); + ent.setTraitorId(player.getId()); + } } } diff --git a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java index 1e75fd97e2d..3ff818d1c1d 100644 --- a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java +++ b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java @@ -20,9 +20,13 @@ import megamek.common.planetaryconditions.*; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; import megamek.server.totalwarfare.TWGameManager; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; @@ -31,9 +35,7 @@ /** * @author Luana Scoppio */ -public class ChangeWeatherCommand extends ServerCommand { - - private final TWGameManager gameManager; +public class ChangeWeatherCommand extends GamemasterServerCommand { private static final String HELP_TEXT = "GM changes (weather) planetary conditions. The parameters are optional and unordered " + "and the effects are applied at the beginning of the next turn. The square brackets means that argument is optional. " + @@ -44,19 +46,30 @@ public class ChangeWeatherCommand extends ServerCommand { "winddir= 0: south, 1: southwest, 2: northwest, 3: north, 4: northeast, 5: southeast, 6: random " + "atmo= 0: vacuum, 1: trace, 2: thin, 3: standard, 4: high, 5: very high " + "blowsand= 0: no, 1: yes " + + "emi= 0: no, 1: yes " + "weather= 0: clear, 1: light rain, 2: moderate rain, 3: heavy rain, 4: gusting rain, 5: downpour, 6: light snow " + "7: moderate snow, 8: snow flurries, 9: heavy snow, 10: sleet, 11: ice storm, 12: light hail, 13: heavy hail " + "14: lightning storm"; /** Creates new ChangeWeatherCommand */ public ChangeWeatherCommand(Server server, TWGameManager gameManager) { - super(server, "weather", HELP_TEXT); - this.gameManager = gameManager; + super(server, gameManager, "weather", HELP_TEXT); + } + + public List> defineArguments() { + List> arguments = new ArrayList<>(); + arguments.add(new IntegerArgument("fog", 0, 2)); + arguments.add(new IntegerArgument("light", 0, 6)); + arguments.add(new IntegerArgument("wind", 0, 6)); + arguments.add(new IntegerArgument("atmo", 0, 5)); + arguments.add(new IntegerArgument("blowsand", 0, 1)); + arguments.add(new IntegerArgument("emi", 0, 1)); + arguments.add(new IntegerArgument("weather", 0, 14)); + return arguments; } - private void updatePlanetaryCondition(String arg, String prefix, int connId, int maxLength, Consumer setter, + private void updatePlanetaryCondition(int value, int connId, int maxLength, Consumer setter, Function successMessage, Function errorMessage) { - var value = Integer.parseInt(arg.substring(prefix.length())); if (value >= 0 && value < maxLength) { setter.accept(value); server.sendServerChat(connId, successMessage.apply(value)); @@ -65,50 +78,47 @@ private void updatePlanetaryCondition(String arg, String prefix, int connId, int } } + private record Condition(int maxLength, Consumer setter, Function successMessage, Function errorMessage) {} /** * Run this command with the arguments supplied */ @Override - public void run(int connId, String[] args) { - if (!server.getPlayer(connId).getGameMaster()) { - server.sendServerChat(connId, "You are not a Game Master."); - return; - } - - var planetaryConditions = gameManager.getGame().getPlanetaryConditions(); + public void runAsGM(int connId, Map> args) { + var planetaryConditions = getGameManager().getGame().getPlanetaryConditions(); - if (args.length > 1) { + Map conditions = Map.of( + "fog", new Condition(Fog.values().length, value -> planetaryConditions.setFog(Fog.values()[value]), + value -> "The fog has changed.", maxLength -> "Invalid fog value. Must be between 0 and " + (maxLength - 1)), + "wind", new Condition(Wind.values().length, value -> planetaryConditions.setWind(Wind.values()[value]), + value -> "The wind strength has changed.", maxLength -> "Invalid wind value. Must be between 0 and " + (maxLength - 1)), + "winddir", new Condition(WindDirection.values().length, value -> planetaryConditions.setWindDirection(WindDirection.values()[value]), + value -> "The wind direction has changed.", maxLength -> "Invalid wind direction value. Must be between 0 and " + (maxLength - 1)), + "light", new Condition(Light.values().length, value -> planetaryConditions.setLight(Light.values()[value]), + value -> "The light has changed.", maxLength -> "Invalid light value. Must be between 0 and " + (maxLength - 1)), + "atmo", new Condition(Atmosphere.values().length, value -> planetaryConditions.setAtmosphere(Atmosphere.values()[value]), + value -> value == 0 ? "The air has vanished, put your vac suits!" : "The air is changing.", maxLength -> "Invalid atmosphere value. Must be between 0 and " + (maxLength - 1)), + "blowsand", new Condition(BlowingSand.values().length, value -> planetaryConditions.setBlowingSand(BlowingSand.values()[value]), + value -> value == 1 ? "Sand started blowing." : "The sand has settled.", maxLength -> "Invalid blowsand value. Must be between 0 and " + (maxLength - 1)), + "weather", new Condition(Weather.values().length, value -> planetaryConditions.setWeather(Weather.values()[value]), + value -> "The weather has changed.", maxLength -> "Invalid weather value. Must be between 0 and " + (maxLength - 1)), + "emi", new Condition(EMI.values().length, value -> planetaryConditions.setEMI(EMI.values()[value]), + value -> value == 1 ? "EMI is active." : "EMI is inactive.", maxLength -> "Invalid EMI value. Must be between 0 and " + (maxLength - 1)) + ); + conditions.forEach((prefix, condition) -> { + if (args.containsKey(prefix)) { + updatePlanetaryCondition( + (int) args.get(prefix).getValue(), + connId, + condition.maxLength, + condition.setter, + condition.successMessage, + condition.errorMessage); + } + }); - Map conditions = Map.of( - "fog=", new Condition(Fog.values().length, value -> planetaryConditions.setFog(Fog.values()[value]), - value -> "The fog has changed.", maxLength -> "Invalid fog value. Must be between 0 and " + (maxLength - 1)), - "wind=", new Condition(Wind.values().length, value -> planetaryConditions.setWind(Wind.values()[value]), - value -> "The wind strength has changed.", maxLength -> "Invalid wind value. Must be between 0 and " + (maxLength - 1)), - "winddir=", new Condition(WindDirection.values().length, value -> planetaryConditions.setWindDirection(WindDirection.values()[value]), - value -> "The wind direction has changed.", maxLength -> "Invalid wind direction value. Must be between 0 and " + (maxLength - 1)), - "light=", new Condition(Light.values().length, value -> planetaryConditions.setLight(Light.values()[value]), - value -> "The light has changed.", maxLength -> "Invalid light value. Must be between 0 and " + (maxLength - 1)), - "atmo=", new Condition(Atmosphere.values().length, value -> planetaryConditions.setAtmosphere(Atmosphere.values()[value]), - value -> value == 0 ? "The air has vanished, put your vac suits!" : "The air is changing.", maxLength -> "Invalid atmosphere value. Must be between 0 and " + (maxLength - 1)), - "blowsand=", new Condition(BlowingSand.values().length, value -> planetaryConditions.setBlowingSand(BlowingSand.values()[value]), - value -> value == 1 ? "Sand started blowing." : "The sand has settled.", maxLength -> "Invalid blowsand value. Must be between 0 and " + (maxLength - 1)), - "weather=", new Condition(Weather.values().length, value -> planetaryConditions.setWeather(Weather.values()[value]), - value -> "The weather has changed.", maxLength -> "Invalid weather value. Must be between 0 and " + (maxLength - 1)) - ); - - Stream.of(args) - .forEach(arg -> conditions.forEach((prefix, condition) -> { - if (arg.startsWith(prefix)) { - updatePlanetaryCondition(arg, prefix, connId, condition.maxLength, condition.setter, condition.successMessage, condition.errorMessage); - } - })); - - gameManager.getGame().setPlanetaryConditions(planetaryConditions); - } else { - // Error out; it's not a valid call. - server.sendServerChat(connId, "weather command failed. " + HELP_TEXT); - } + getGameManager().getGame().setPlanetaryConditions(planetaryConditions); } + } diff --git a/megamek/src/megamek/server/commands/DisasterCommand.java b/megamek/src/megamek/server/commands/DisasterCommand.java index 0a7137cd88b..f3fc13e354d 100644 --- a/megamek/src/megamek/server/commands/DisasterCommand.java +++ b/megamek/src/megamek/server/commands/DisasterCommand.java @@ -18,45 +18,149 @@ */ package megamek.server.commands; +import megamek.common.Coords; +import megamek.logging.MMLogger; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.EnumArgument; import megamek.server.totalwarfare.TWGameManager; +import java.util.List; +import java.util.Map; +import java.util.Objects; + /** * @author Luana Scoppio */ -public class DisasterCommand extends ServerCommand { +public class DisasterCommand extends GamemasterServerCommand { - private final TWGameManager gameManager; + enum Disaster { + RANDOM, + HURRICANE, + LIGHTNING_STORM, + ORBITAL_BOMBARDMENT, + ORBITAL_BOMBARDMENT_2, + ORBITAL_BOMBARDMENT_3, + SANDSTORM, + HAILSTORM, + ECLIPSE, + SOLAR_FLARE, + SUPERNOVA, + SMOG, + FIRESTORM, + TRAITOR; + + public static Disaster getRandomDisaster() { + return values()[(int) (Math.random() * values().length)]; + } + } - /** Creates new DisasterCommand */ public DisasterCommand(Server server, TWGameManager gameManager) { - super(server, "disaster", "GM calls a disaster at random, arguments in square brackets are optional. Usage: /disaster [type] " + + super(server, gameManager, "gomorrah", "GM calls a disaster, arguments in square brackets are optional. " + + "Usage: /gomorrah [type] " + "if not type is passed, one is chosen at random. " + - "type= 0: hurricane, 1: lightning storm, 2: meteor shower, 3: orbital bombardment, 4: wildfire, 5: sandstorm, 6: hailstorm, " + - "7: heatwave"); - this.gameManager = gameManager; + "Type can be one of the following: hurricane, lightning, ob, ob2, ob3, sandstorm, hailstorm, eclipse, solarflare, " + + "supernova, smog, firestorm, traitor. " + + "The type ob, ob2 and ob3 are orbital bombardment with one, two or three random hit locations, at default values " + + "for damage (100) and radius (4)."); + } + + @Override + public List> defineArguments() { + return List.of(new EnumArgument<>("type", Disaster.class, Disaster.RANDOM)); + } + + private void runDisasterCommand(int connId, Disaster disaster) { + switch (disaster) { + case HURRICANE: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "wind=6", "winddir=6"}); + server.sendServerChat("Hurricane incoming!"); + break; + case LIGHTNING_STORM: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "weather=14"}); + server.sendServerChat("Lightning storm incoming!"); + break; + case ECLIPSE: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "light=4"}); + server.sendServerChat("The sun is being eclipsed..."); + break; + case SOLAR_FLARE: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "light=5", "emi=1"}); + new FirestormCommand(server, gameManager).run(connId, new String[]{"firestorm", "1", "5"}); + server.sendServerChat("Sensors warn of an imminent solar flare incoming! Expect some fires."); + break; + case SUPERNOVA: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "light=5", "emi=1", "atmo=2", "wind=0", "weather=0"}); + new FirestormCommand(server, gameManager).run(connId, new String[]{"firestorm", "2", "75"}); + server.sendServerChat("The star is going supernova!"); + server.sendServerChat("Everything is on fire! We are doomed!"); + break; + case ORBITAL_BOMBARDMENT_3: + orbitalBombardment(connId); + case ORBITAL_BOMBARDMENT_2: + orbitalBombardment(connId); + case ORBITAL_BOMBARDMENT: + orbitalBombardment(connId); + break; + case SANDSTORM: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "blowsand=1", "wind=4", "winddir=6"}); + server.sendServerChat("A sandstorm is approaching!"); + break; + case HAILSTORM: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "weather=13", "wind=4", "winddir=6"}); + server.sendServerChat("A hailstorm is incoming!"); + break; + case FIRESTORM: + new FirestormCommand(server, gameManager).run(connId, new String[]{"firestorm", "2", "50"}); + server.sendServerChat("A firestorm is consuming the battlefield!"); + break; + case SMOG: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "atmo=5", "fog=2", "light=1"}); + server.sendServerChat("A thick smog is covering the battlefield!"); + break; + case TRAITOR: + default: + { + var players = gameManager.getGame().getPlayersList(); + var randomPlayer = players.get((int) (Math.random() * players.size())); + + var units = gameManager.getGame().getPlayerEntities(randomPlayer, true); + var randomUnit = units.get((int) (Math.random() * units.size())); + + var otherPlayers = players.stream().filter(p -> p != randomPlayer).toList(); + var newOwner = otherPlayers.get((int) (Math.random() * otherPlayers.size())); + + new ChangeOwnershipCommand(server, gameManager).run(connId, + new String[]{"traitor", "" + randomUnit.getId(), "" + newOwner.getId()}); + server.sendServerChat("A traitor has been revealed!"); + } + } + } + + private Coords getRandomHexCoords() { + var board = gameManager.getGame().getBoard(); + var x = (int) (Math.random() * board.getWidth()); + var y = (int) (Math.random() * board.getHeight()); + return new Coords(x, y); + } + + private void orbitalBombardment(int connId) { + var coords = getRandomHexCoords(); + new OrbitalBombardmentCommand(server, gameManager).run(connId, new String[]{"ob", + coords.getX() + 1 + "", + coords.getY() + 1 + "" + }); } /** * Run this command with the arguments supplied */ @Override - public void run(int connId, String[] args) { - if (!server.getPlayer(connId).getGameMaster()) { - server.sendServerChat(connId, "You are not a Game Master."); - return; - } - - // Check argument integrity. - if (args.length == 1) { - // Check command - // NOT IMPLEMENTED - server.sendServerChat(connId, "Oh no..."); - } else if (args.length == 2) { - // Error out; it's not a valid call. - server.sendServerChat(connId, "Oh no..."); + protected void runAsGM(int connId, Map> args) { + if (args.get("type").getValue().equals(Disaster.RANDOM)) { + runDisasterCommand(connId, Disaster.getRandomDisaster()); } else { - server.sendServerChat(connId, "disaster command failed (1)."); + runDisasterCommand(connId, (Disaster) args.get("type").getValue()); } } } diff --git a/megamek/src/megamek/server/commands/FirestarterCommand.java b/megamek/src/megamek/server/commands/FirestarterCommand.java new file mode 100644 index 00000000000..8e4fece3254 --- /dev/null +++ b/megamek/src/megamek/server/commands/FirestarterCommand.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.common.Coords; +import megamek.common.Hex; +import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; +import megamek.server.totalwarfare.TWGameManager; + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * The Server Command "/firestarter" that will put one hex on fire. + * + * @author Luana Scoppio + */ +public class FirestarterCommand extends GamemasterServerCommand { + + public FirestarterCommand(Server server, TWGameManager gameManager) { + super(server, + gameManager, + "firestarter", + "Starts fire in one specific hex at a specific intensity. " + + "Usage: /firestarter [] " + + "The intensity can be 1=Norma, 2=Inferno, 3=Inferno Bomb or 4=Inferno IV, default is 1."); + } + + + @Override + public List> defineArguments() { + return List.of( + new IntegerArgument("x"), + new IntegerArgument("y"), + new IntegerArgument("intensity", 1, 4, 1)); + } + + /** + * Run this command with the arguments supplied + * + * @see ServerCommand#run(int, String[]) + */ + @Override + protected void runAsGM(int connId, Map> args) { + int xArg = (int) args.get("x").getValue() - 1; + int yArg = (int) args.get("y").getValue() -1; + int fireType = (int) args.get("intensity").getValue(); + + igniteHex(new Coords(xArg, yArg), fireType); + } + + private void igniteHex(Coords coords, int fireType) { + try { + Hex hex = gameManager.getGame().getBoard().getHex(coords); + Objects.requireNonNull(hex, "Hex not found."); + gameManager.ignite(coords, fireType, gameManager.getvPhaseReport()); + } catch (Exception e) { + throw new IllegalArgumentException("Failed to ignite hex: " + e.getMessage()); + } + } + +} diff --git a/megamek/src/megamek/server/commands/FirestormCommand.java b/megamek/src/megamek/server/commands/FirestormCommand.java new file mode 100644 index 00000000000..03d2e03d961 --- /dev/null +++ b/megamek/src/megamek/server/commands/FirestormCommand.java @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.common.Coords; +import megamek.common.Hex; +import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; +import megamek.server.totalwarfare.TWGameManager; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +/** + * The Server Command "/firestorm" that starts a blazing inferno on the board. + * + * @author Luana Scoppio + */ +public class FirestormCommand extends GamemasterServerCommand { + + public FirestormCommand(Server server, TWGameManager gameManager) { + super(server, + gameManager, + "firestorm", + "Starts fire in the entire board. " + + "Usage: /firestorm [] []" + + "The intensity can be 1=Normal, 2=Inferno, 3=Inferno Bomb or 4=Inferno IV, default is 1. " + + "The size can be a percent of the board, from 1 to 100, default is 25."); + } + + @Override + public List> defineArguments() { + return List.of(new IntegerArgument("intensity", 1, 4, 1), + new IntegerArgument("percent", 1, 100, 25)); + } + + /** + * Run this command with the arguments supplied + * + * @see ServerCommand#run(int, String[]) + */ + @Override + protected void runAsGM(int connId, Map> args) { + try { + var fireType = (int) args.get("intensity").getValue(); + var percent = (int) args.get("percent").getValue(); + var coords = getRandomCoords(numberOfCoordsFromPercent(percent)); + coords.forEach(c -> igniteHex(c, fireType)); + } catch (Exception e) { + logger.error("Failed to ignite fire.", e); + server.sendServerChat(connId, "Failed to ignite fire."); + } + } + + private int numberOfCoordsFromPercent(int percent) { + var boardHeight = gameManager.getGame().getBoard().getHeight(); + var boardWidth = gameManager.getGame().getBoard().getWidth(); + return Math.max((boardWidth * boardHeight * percent / 100), 1); + } + + private HashSet getRandomCoords(int size) { + var boardHeight = gameManager.getGame().getBoard().getHeight(); + var boardWidth = gameManager.getGame().getBoard().getWidth(); + var coordsSet = new HashSet(); + var maxTries = size * 10; + while (coordsSet.size() < size && maxTries > 0) { + var x = (int) (Math.random() * boardWidth); + var y = (int) (Math.random() * boardHeight); + coordsSet.add(new Coords(x, y)); + maxTries--; + } + + return coordsSet; + } + + private void igniteHex(Coords coords, int fireType) { + Hex hex = gameManager.getGame().getBoard().getHex(coords); + if (null == hex) { + // Just ignore null hexes... they should not happen, but I don't want to crash the command + return; + } + gameManager.ignite(coords, fireType, gameManager.getvPhaseReport()); + } +} diff --git a/megamek/src/megamek/server/commands/GamemasterServerCommand.java b/megamek/src/megamek/server/commands/GamemasterServerCommand.java new file mode 100644 index 00000000000..2c56403cc29 --- /dev/null +++ b/megamek/src/megamek/server/commands/GamemasterServerCommand.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.logging.MMLogger; +import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.totalwarfare.TWGameManager; + +import java.util.*; + +/** + * A ServerCommand that can only be used by Game Masters + * + * @author Luana Coppio + */ +public abstract class GamemasterServerCommand extends ServerCommand { + + private static final String EMPTY_ARGUMENT = null; + protected final TWGameManager gameManager; + protected final static MMLogger logger = MMLogger.create(GamemasterServerCommand.class); + private final String errorMsg; + /** + * Creates new ServerCommand that can only be used by Game Masters + * + * @param server instance of the server + * @param gameManager instance of the game manager + * @param name the name of the command + * @param helpText the help text for the command + */ + public GamemasterServerCommand(Server server, TWGameManager gameManager, String name, String helpText) { + super(server, name, helpText); + this.gameManager = gameManager; + this.errorMsg = "Error executing command: " + name; + } + + private boolean isGM(int connId) { + return server.getGameManager().getGame().getPlayer(connId).getGameMaster(); + } + + protected TWGameManager getGameManager() { + return gameManager; + } + + @Override + public void run(int connId, String[] args) { + if (!isGM(connId)) { + server.sendServerChat(connId, "This command can only be used by a game master."); + return; + } + + try { + Map> parsedArguments = parseArguments(args); + runAsGM(connId, parsedArguments); + } catch (IllegalArgumentException e) { + server.sendServerChat(connId, "Invalid arguments: " + e.getMessage() + "\nUsage: " + this.getHelp()); + } catch (Exception e) { + server.sendServerChat(connId, "An error occurred while executing the command. Check the log for more information"); + logger.error(errorMsg, e); + } + } + + // Method to parse arguments, to be implemented by the specific command class + public abstract List> defineArguments(); + + + // Parses the arguments using the definition + private Map> parseArguments(String[] args) { + List> argumentDefinitions = defineArguments(); + Map> parsedArguments = new HashMap<>(); + List positionalArguments = new ArrayList<>(); + + // Map argument names to definitions for easy lookup + Map> argumentMap = new HashMap<>(); + for (Argument argument : argumentDefinitions) { + argumentMap.put(argument.getName(), argument); + } + + // Separate positional arguments and named arguments + boolean namedArgumentStarted = false; + for (String arg : List.of(args)) { + String[] keyValue = arg.split("="); + + if (keyValue.length == 2) { + // Handle named arguments + namedArgumentStarted = true; + String key = keyValue[0]; + String value = keyValue[1]; + + if (!argumentMap.containsKey(key)) { + throw new IllegalArgumentException("Unknown argument: " + key); + } + + Argument argument = argumentMap.get(key); + argument.parse(value); + parsedArguments.put(key, argument); + } else { + // Handle positional arguments + if (namedArgumentStarted) { + throw new IllegalArgumentException("Positional arguments cannot come after named arguments."); + } + positionalArguments.add(arg); + } + } + + // Parse positional arguments + int index = 0; + for (Argument argument : argumentDefinitions) { + if (parsedArguments.containsKey(argument.getName())) { + continue; + } + if (index < positionalArguments.size()) { + String value = positionalArguments.get(index); + argument.parse(value); + parsedArguments.put(argument.getName(), argument); + index++; + } else { + // designed to throw an error if the arg doesn't have a default value + argument.parse(EMPTY_ARGUMENT); + parsedArguments.put(argument.getName(), argument); + } + } + + return parsedArguments; + } + + // The new method for game master commands that uses parsed arguments + protected abstract void runAsGM(int connId, Map> args); +} diff --git a/megamek/src/megamek/server/commands/IsGM.java b/megamek/src/megamek/server/commands/IsGM.java deleted file mode 100644 index 6c8fcff5545..00000000000 --- a/megamek/src/megamek/server/commands/IsGM.java +++ /dev/null @@ -1,13 +0,0 @@ -package megamek.server.commands; - -import megamek.server.totalwarfare.TWGameManager; - -public interface IsGM { - - TWGameManager getGameManager(); - - default boolean isGM(int connId) { - return getGameManager().getGame().getPlayer(connId).getGameMaster(); - } - -} diff --git a/megamek/src/megamek/server/commands/KillCommand.java b/megamek/src/megamek/server/commands/KillCommand.java index 45f2b6d7dca..3001ae0fe5a 100644 --- a/megamek/src/megamek/server/commands/KillCommand.java +++ b/megamek/src/megamek/server/commands/KillCommand.java @@ -20,59 +20,47 @@ import megamek.common.options.OptionsConstants; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; import megamek.server.totalwarfare.TWGameManager; +import java.util.List; +import java.util.Map; + /** * @author Luana Scoppio */ -public class KillCommand extends ServerCommand implements IsGM { +public class KillCommand extends GamemasterServerCommand{ private final TWGameManager gameManager; /** Creates new KillCommand */ public KillCommand(Server server, TWGameManager gameManager) { - super(server, "kill", "Allows a GM to destroy a single unit instantly" + + super(server, gameManager, "kill", "Allows a GM to destroy a single unit instantly" + "Usage: "+ "/kill " + "where id is the units ID. The units ID can be found by hovering over the unit."); this.gameManager = gameManager; } + @Override + public List> defineArguments() { + return List.of(new IntegerArgument("unitID", 0, Integer.MAX_VALUE)); + } + /** * Run this command with the arguments supplied */ @Override - public void run(int connId, String[] args) { - - // Check to make sure gm kills are allowed! - if (!isGM(connId)) { - server.sendServerChat(connId, "You are not a Game Master."); + protected void runAsGM(int connId, Map> args) { + int unitId = (int) args.get("unitID").getValue(); + // is the unit on the board? + var unit = gameManager.getGame().getEntity(unitId); + if (unit == null) { + server.sendServerChat(connId, "Specified unit is not on the board."); return; } - // Check argument integrity. - if (args.length == 2) { - // Check command - try { - int unitId = Integer.parseInt(args[1]); - // is the unit on the board? - var unit = gameManager.getGame().getEntity(unitId); - if (unit == null) { - server.sendServerChat(connId, "Specified unit is not on the board."); - return; - } - gameManager.destroyEntity(unit, "Act of God", false, false); - server.sendServerChat(connId, unit.getDisplayName() + " has been destroyed."); - } catch (NumberFormatException e) { - server.sendServerChat(connId, "Kill command failed (2). Proper format is \"/kill \" where id is the units numerical ID"); - } - } else { - // Error out; it's not a valid call. - server.sendServerChat(connId, "Kill command failed (1). Proper format is \"/kill \" where id is the units ID"); - } - } - - @Override - public TWGameManager getGameManager() { - return gameManager; + gameManager.destroyEntity(unit, "Act of God", false, false); + server.sendServerChat(unit.getDisplayName() + " has been devastated."); } } diff --git a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java index 5424526f93d..9a970eb2d1f 100644 --- a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java +++ b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java @@ -20,84 +20,66 @@ import megamek.common.options.OptionsConstants; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; import megamek.server.props.OrbitalBombardment; import megamek.server.totalwarfare.TWGameManager; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + /** * @author Luana Scoppio */ -public class OrbitalBombardmentCommand extends ServerCommand implements IsGM { - - private final TWGameManager gameManager; +public class OrbitalBombardmentCommand extends GamemasterServerCommand { - /** Creates new NukeCommand */ public OrbitalBombardmentCommand(Server server, TWGameManager gameManager) { - super(server, "ob", "GM Drops a bomb onto the board doing of 100 damage with a 3 hex radius, to be exploded at" + - "the end of the next weapons attack phase." + - "Allowed formats:"+ - "/ob and" + - "/ob [factor=#] [radius=#]" + - "the damage at impact point is the factor times 10, default factor value is 10. " + - "and hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23), the explosion blast radius default " + - "is equal to 4, it automatically applies a linear damage dropoff each hex away from the center." + - " All parameters in square brackets may be omitted. " + - " Example: /ob 10 10 factor=12 "); - this.gameManager = gameManager; + super(server, gameManager, "ob", "GM orders an unknown warship to strike the board doing of 100 damage with a 4 hex radius, to be exploded at" + + "the end of the next weapons attack phase." + + "Allowed formats: " + + "/ob and" + + "/ob [dmg=#] [r=#] and" + + "/ob and " + + "/ob " + + "X and Y are the hex position where is x=column number and y=row number (hex 0923 would be x=9 and y=23), " + + "dmg is the amount of damage at impact point, default is 100, the damage drops off linearly according to the radius. " + + "r is radius, defaults to 4. " + + " Example: /ob 10 10 dmg=120 r=4 and /ob 10 10 120 4 are equivalent. " + + " Parameters in square brackets may be omitted, and using named variables permits to write them out of order. " + + " Example: /ob 10 10 r=12 dmg=300"); + } + + @Override + public List> defineArguments() { + return List.of( + new IntegerArgument("x"), + new IntegerArgument("y"), + new IntegerArgument("dmg", 10, Integer.MAX_VALUE, 100), + new IntegerArgument("r", 1, 10, 4)); } /** * Run this command with the arguments supplied */ @Override - public void run(int connId, String[] args) { + protected void runAsGM(int connId, Map> args) { - // Check to make sure nuking is allowed by game options! - if (!isGM(connId)) { - server.sendServerChat(connId, "You are not a Game Master."); - return; - } + var orbitalBombardmentBuilder = new OrbitalBombardment.Builder(); - if (args.length >= 3) { - var orbitalBombardmentBuilder = new OrbitalBombardment.Builder(); - try { - int[] position = new int[2]; - for (int i = 1; i < 3; i++) { - position[i-1] = Integer.parseInt(args[i]) - 1; - } - // is the hex on the board? - if (!gameManager.getGame().getBoard().contains(position[0], position[1])) { - server.sendServerChat(connId, "Specified hex is not on the board."); - return; - } + orbitalBombardmentBuilder.x((int) args.get("x").getValue() - 1).y((int) args.get("y").getValue() - 1); + orbitalBombardmentBuilder.radius((int) args.get("r").getValue()); + orbitalBombardmentBuilder.damageFactor((int) args.get("dmg").getValue()); + var orbitalBombardment = orbitalBombardmentBuilder.build(); - orbitalBombardmentBuilder - .x(position[0]) - .y(position[1]); - - if (args.length > 3) { - for (int i = 3; i < args.length; i++) { - String[] keyValue = args[i].split("="); - if (keyValue[0].equals("factor")) { - orbitalBombardmentBuilder.damageFactor(Integer.parseInt(keyValue[1])); - } else if (keyValue[0].equals("radius")) { - orbitalBombardmentBuilder.radius(Integer.parseInt(keyValue[1])); - } - } - } - - gameManager.addScheduledOrbitalBombardment(orbitalBombardmentBuilder.build()); - server.sendServerChat(connId, "This isn't a shooting star! Take cover!"); - } catch (Exception e) { - server.sendServerChat(connId, "Orbital bombardment command failed (2). Proper format is \"/ob [factor=10] [radius=4]\" where hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23)"); - } - } else { - // Error out; it's not a valid call. - server.sendServerChat(connId, "Orbital bombardment command failed (1). Proper format is \"/ob [factor=10] [radius=4]\" where hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23)"); + // is the hex on the board? + if (!gameManager.getGame().getBoard().contains(orbitalBombardment.getX(), orbitalBombardment.getY())) { + server.sendServerChat(connId, "Specified hex is not on the board."); + return; } - } - @Override - public TWGameManager getGameManager() { - return gameManager; + gameManager.addScheduledOrbitalBombardment(orbitalBombardment); + server.sendServerChat("Orbital bombardment incoming!"); } + } diff --git a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java index 5715ae19736..75373384714 100644 --- a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java +++ b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java @@ -22,44 +22,30 @@ import megamek.common.planetaryconditions.Fog; import megamek.common.planetaryconditions.Wind; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; import megamek.server.totalwarfare.TWGameManager; +import java.util.List; +import java.util.Map; + /** * @author Luana Scoppio */ -public class RemoveSmokeCommand extends ServerCommand implements IsGM { - - private final TWGameManager gameManager; +public class RemoveSmokeCommand extends GamemasterServerCommand { /** Creates new KillCommand */ public RemoveSmokeCommand(Server server, TWGameManager gameManager) { - super(server, "nosmoke", "GM removes all smoke cloud hexes. Usage: /nosmoke"); - this.gameManager = gameManager; + super(server, gameManager, "nosmoke", "GM removes all smoke cloud hexes. Usage: /nosmoke"); } - /** - * Run this command with the arguments supplied - */ @Override - public void run(int connId, String[] args) { - if (!isGM(connId)) { - server.sendServerChat(connId, "You are not a Game Master."); - return; - } - - // Check argument integrity. - if (args.length == 1) { - // Check command - gameManager.getSmokeCloudList().forEach(gameManager::removeSmokeTerrain); - server.sendServerChat(connId, "GM cleared the smoke clouds."); - } else { - // Error out; it's not a valid call. - server.sendServerChat(connId, "nosmoke command failed (1)."); - } + public List> defineArguments() { + return List.of(); } @Override - public TWGameManager getGameManager() { - return gameManager; + protected void runAsGM(int connId, Map> args) { + gameManager.getSmokeCloudList().forEach(gameManager::removeSmokeTerrain); + server.sendServerChat(connId, "GM cleared the smoke clouds."); } } diff --git a/megamek/src/megamek/server/commands/arguments/Argument.java b/megamek/src/megamek/server/commands/arguments/Argument.java new file mode 100644 index 00000000000..39d4aa056c3 --- /dev/null +++ b/megamek/src/megamek/server/commands/arguments/Argument.java @@ -0,0 +1,22 @@ +package megamek.server.commands.arguments; + +// A generic Argument class that can be extended for different argument types +public abstract class Argument { + protected T value; + + private final String name; + + public Argument(String name) { + this.name = name; + } + + public T getValue() { + return value; + } + + public String getName() { + return name; + } + + public abstract void parse(String input) throws IllegalArgumentException; +} diff --git a/megamek/src/megamek/server/commands/arguments/EnumArgument.java b/megamek/src/megamek/server/commands/arguments/EnumArgument.java new file mode 100644 index 00000000000..5c51072579b --- /dev/null +++ b/megamek/src/megamek/server/commands/arguments/EnumArgument.java @@ -0,0 +1,44 @@ +package megamek.server.commands.arguments; + +import java.util.Arrays; + +public class EnumArgument> extends Argument { + private final Class enumType; + private final E defaultValue; + + public EnumArgument(String name, Class enumType, E defaultValue) { + super(name); + this.enumType = enumType; + this.defaultValue = defaultValue; + } + + public Class getEnumType() { + return enumType; + } + + @Override + public void parse(String input) throws IllegalArgumentException { + if (input == null && defaultValue != null) { + value = defaultValue; + return; + } else { + if (input == null) { + throw new IllegalArgumentException(getName() + " is required."); + } + } + try { + value = Enum.valueOf(enumType, input.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException(getName() + " must be one of: " + + String.join(", ", Arrays.toString(enumType.getEnumConstants()))); + } + } + + @Override + public E getValue() { + if (value == null && defaultValue != null) { + return defaultValue; + } + return value; + } +} diff --git a/megamek/src/megamek/server/commands/arguments/IntegerArgument.java b/megamek/src/megamek/server/commands/arguments/IntegerArgument.java new file mode 100644 index 00000000000..26340b84879 --- /dev/null +++ b/megamek/src/megamek/server/commands/arguments/IntegerArgument.java @@ -0,0 +1,63 @@ +package megamek.server.commands.arguments; + +public class IntegerArgument extends Argument { + private final int minValue; + private final int maxValue; + private final Integer defaultValue; + + public IntegerArgument(String name) { + this(name, Integer.MIN_VALUE, Integer.MAX_VALUE, null); + } + + public IntegerArgument(String name, int minValue, int maxValue) { + this(name, minValue, maxValue, null); + } + + public IntegerArgument(String name, int minValue, int maxValue, Integer defaultValue) { + super(name); + this.minValue = minValue; + this.maxValue = maxValue; + this.defaultValue = defaultValue; + } + + @Override + public Integer getValue() { + if (value == null && defaultValue != null) { + return defaultValue; + } + return value; + } + + @Override + public void parse(String input) throws IllegalArgumentException { + if (input == null && defaultValue != null) { + value = defaultValue; + return; + } else { + if (input == null) { + throw new IllegalArgumentException(getName() + " is required."); + } + } + try { + int parsedValue = Integer.parseInt(input); + if (parsedValue < minValue || parsedValue > maxValue) { + throw new IllegalArgumentException(getName() + " must be between " + minValue + " and " + maxValue); + } + value = parsedValue; + } catch (NumberFormatException e) { + throw new IllegalArgumentException(getName() + " must be an integer."); + } + } + + public boolean hasDefaultValue() { + return defaultValue != null; + } + + public int getMinValue() { + return minValue; + } + + public int getMaxValue() { + return maxValue; + } +} diff --git a/megamek/src/megamek/server/props/OrbitalBombardment.java b/megamek/src/megamek/server/props/OrbitalBombardment.java index e49e1c965e4..0bfa383c45f 100644 --- a/megamek/src/megamek/server/props/OrbitalBombardment.java +++ b/megamek/src/megamek/server/props/OrbitalBombardment.java @@ -18,6 +18,8 @@ */ package megamek.server.props; +import megamek.common.Coords; + /** * Represents an orbital bombardment event. * x and y are board positions, damageFactor is the damage at impact point times 10, and radius is the blast radius of the explosion with @@ -31,19 +33,23 @@ public class OrbitalBombardment { private final int y; private final int damageFactor; private final int radius; - + private final Coords coords; /** * Represents an orbital bombardment event. * x and y are board positions, damageFactor is the damage at impact point times 10, and radius is the blast radius of the explosion with * regular/linear damage droppoff. * - * @param builder */ private OrbitalBombardment(Builder builder) { this.x = builder.x; this.y = builder.y; this.damageFactor = builder.damageFactor; this.radius = builder.radius; + this.coords = new Coords(x, y); + } + + public Coords getCoords() { + return coords; } public int getX() { diff --git a/megamek/src/megamek/server/totalwarfare/TWGameManager.java b/megamek/src/megamek/server/totalwarfare/TWGameManager.java index 4eb440a79a0..57c86de9f08 100644 --- a/megamek/src/megamek/server/totalwarfare/TWGameManager.java +++ b/megamek/src/megamek/server/totalwarfare/TWGameManager.java @@ -190,8 +190,11 @@ public List getCommandList(Server server) { commands.add(new CheckBVTeamCommand(server)); commands.add(new NukeCommand(server, this)); commands.add(new KillCommand(server, this)); + commands.add(new OrbitalBombardmentCommand(server, this)); commands.add(new ChangeOwnershipCommand(server, this)); commands.add(new DisasterCommand(server, this)); + commands.add(new FirestarterCommand(server, this)); + commands.add(new FirestormCommand(server, this)); commands.add(new RemoveSmokeCommand(server, this)); commands.add(new ChangeWeatherCommand(server, this)); commands.add(new TraitorCommand(server, this)); @@ -20194,8 +20197,6 @@ public void doExplosion(int[] damages, boolean autoDestroyInSameHex, Coords posi } else { range += entity.getElevation(); } - } else { - continue; } // We might need to nuke everyone in the explosion hex. If so... @@ -20394,7 +20395,35 @@ public void addScheduledNuke(int[] nuke) { * through it's builder. */ public void addScheduledOrbitalBombardment(OrbitalBombardment orbitalBombardment) { + Report r = new Report(1302); + r.indent(); + r.newlines = 0; + r.add("Unknown warship in orbit"); + r.add(orbitalBombardment.getCoords().getBoardNum()); + getvPhaseReport().addElement(r); + Report.addNewline(getvPhaseReport()); + + drawOrbitalBombardmentOnBoard(orbitalBombardment); scheduledOrbitalBombardment.add(orbitalBombardment); + getGame().setOrbitalBombardmentVector(new Vector<>(scheduledOrbitalBombardment)); + } + + private void drawOrbitalBombardmentOnBoard(OrbitalBombardment orbitalBombardment) { + + for (var coord : orbitalBombardment.getCoords().allAtDistanceOrLess(orbitalBombardment.getRadius())) { + getGame().getBoard().addSpecialHexDisplay( + coord, + new SpecialHexDisplay( + SpecialHexDisplay.Type.ORBITAL_BOMBARDMENT, + getGame().getRoundCount(), + getGame().getPlayersList().get(0), // It doesnt matter which is the player, but I dont want to cause a nullpointer. + "Orbital bombardment incoming, landing on round " + + getGame().getRoundCount() + + ", fired by an unknown warship in orbit", + SpecialHexDisplay.SHD_OBSCURED_ALL) + ); + sendChangedHex(coord); + } } /** @@ -20419,8 +20448,15 @@ void resolveScheduledNukes() { */ void resolveScheduledOrbitalBombardments() { scheduledOrbitalBombardment - .forEach(ob -> doOrbitalBombardment(new Coords(ob.getX(), ob.getY()), ob.getDamageFactor(), ob.getRadius(), vPhaseReport)); + .forEach(ob -> doOrbitalBombardment(new Coords(ob.getX(), ob.getY()), ob.getDamageFactor(), ob.getRadius())); scheduledOrbitalBombardment.clear(); + getGame().resetOrbitalBombardmentAttacks(); + + // All right. We're done. + var r = new Report(1301, Report.PUBLIC); + r.indent(); + r.newlines = 2; + getvPhaseReport().add(r); } /** @@ -20446,19 +20482,12 @@ public void doNuclearExplosion(Coords position, int nukeType, Vector vDe * @param position the position that will be hit by the orbital bombardment * @param damageFactor the factor by which the base damage will be multiplied * @param radius the radius which the damage will hit - * @param vDesc a vector that contains the output report */ - public void doOrbitalBombardment(Coords position, int damageFactor, int radius, Vector vDesc) { - // Just in case. - if (vDesc == null) { - vDesc = new Vector<>(); - } - + public void doOrbitalBombardment(Coords position, int damageFactor, int radius) { Report r = new Report(1300, Report.PUBLIC); - r.indent(); r.add(position.getBoardNum(), true); - vDesc.add(r); + getvPhaseReport().add(r); // Then, do actual blast damage. // Use the standard blast function for this. @@ -20470,41 +20499,7 @@ public void doOrbitalBombardment(Coords position, int damageFactor, int radius, doExplosion(baseDamage, degradation , false, position, true, tmpV, blastedUnitsVec, -1, true); Report.indentAll(tmpV, 2); - vDesc.addAll(tmpV); - - // Next, for whatever's left, do terrain effects - // such as clearing, roughing, and boiling off water. - boolean damageFlag = true; - - // Lastly, do secondary effects. - for (Entity entity : game.getEntitiesVector()) { - // loaded units and off board units don't have a position, - // so we don't count 'em here - if ((entity.getTransportId() != Entity.NONE) || (entity.getPosition() == null)) { - continue; - } - - // If it's already destroyed... - if ((entity.isDoomed()) || (entity.isDestroyed())) { - continue; - } - - // If it's too far away for this... - if (position.distance(entity.getPosition()) > radius) { - continue; - } - - // Actually do secondary effects against it. - // Since the effects are unit-dependant, we'll just define it in the - // entity. -// applySecondaryNuclearEffects(entity, position, vDesc); - } - - // All right. We're done. - r = new Report(1216, Report.PUBLIC); - r.indent(); - r.newlines = 2; - vDesc.add(r); + getvPhaseReport().addAll(tmpV); } /** @@ -31692,6 +31687,10 @@ void clearBombIcons() { game.getBoard().clearBombIcons(); } + void clearOrbitalBombardmentIcons() { + game.getBoard().clearOrbitalBombardmentIcons(); + } + /** * Convenience function to send a ground object update. */ From 02e9645ad8db22b7bbd0d07a49a689c18a4370fa Mon Sep 17 00:00:00 2001 From: Coppio Date: Fri, 15 Nov 2024 00:45:26 -0300 Subject: [PATCH 07/20] feat: new commands implemented --- megamek/data/images/hexes/obinc.gif | Bin 0 -> 834 bytes .../i18n/megamek/client/messages.properties | 92 +++++++++++++- .../megamek/common/report-messages.properties | 1 + .../src/megamek/client/ui/swing/MapMenu.java | 24 ++-- .../gmCommands/GamemasterCommandPanel.java | 33 +++-- .../ui/swing/tileset/TilesetManager.java | 2 +- .../src/megamek/common/SpecialHexDisplay.java | 4 +- megamek/src/megamek/server/Server.java | 7 ++ .../commands/ChangeOwnershipCommand.java | 53 ++++---- .../server/commands/ChangeWeatherCommand.java | 119 +++++++++--------- .../server/commands/DisasterCommand.java | 44 +++---- .../server/commands/FirestarterCommand.java | 52 ++++---- .../server/commands/FirestormCommand.java | 55 ++++---- .../commands/GamemasterServerCommand.java | 69 +++++++--- .../megamek/server/commands/HelpCommand.java | 10 +- .../megamek/server/commands/KillCommand.java | 45 +++---- .../commands/OrbitalBombardmentCommand.java | 66 ++++------ .../server/commands/RemoveSmokeCommand.java | 33 ++--- .../server/commands/TraitorCommand.java | 27 ++-- .../server/commands/arguments/Argument.java | 15 ++- .../commands/arguments/EnumArgument.java | 16 ++- .../commands/arguments/IntegerArgument.java | 25 +++- .../arguments/OptionalIntegerArgument.java | 77 ++++++++++++ .../server/props/OrbitalBombardment.java | 39 +++--- .../server/totalwarfare/TWGameManager.java | 37 +++--- 25 files changed, 570 insertions(+), 375 deletions(-) create mode 100644 megamek/data/images/hexes/obinc.gif create mode 100644 megamek/src/megamek/server/commands/arguments/OptionalIntegerArgument.java diff --git a/megamek/data/images/hexes/obinc.gif b/megamek/data/images/hexes/obinc.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5f4c4b6b2d7e52a27ac6721fd9e4c2da1740757 GIT binary patch literal 834 zcmbu)3r~`J0LStFuNVcTh?W&u26pJ;)6FiLS&AYm@pvrDu9i$m1-lWM>A)M2Sf(gV z^f}FTAZIIQnp-WqV2y?oLu)Qwo$b`tPRD9(u9ms7>^1b=_YHg!l4KDZl{-ixxw4#0 zwt)0F*!`a0ti+)PM#!4CDg^z-d4a7=U7+1Skj2 z04CrpUrBY>7CFDQlbO|?5ZHNC_eZPXw$$c0>e4-S%yUVMKbu)pt{h6gKZ}EVXuKIM92BoSkXkZi z9n_?67mw$RcJv)+zE3Q8628Kf=G;Fn>T`6q-3q6tMVt1@mcL#d)jO8wZ@uQ%t{VUU z{b*RKXJB2!ORDaKuAUZ4BI)ge>-W<^sv_U7btBDYI$!fJr>nPH!6|=E4Hlh$p^$a? z=50B2va&$_STt<(-n4mCo`K|d+XAMHWG}6ktTCt~K4sf1qeHb;)yJIvr>*BI22I)R zq8f9 z9b!>vhs~d(GTj-jOJi($&ciXOIx?+vnql*i@O?EYj<_sK+`?g_MZN`Db=8t(Z>&4g La#cnNA)9^zuIXm% literal 0 HcmV?d00001 diff --git a/megamek/i18n/megamek/client/messages.properties b/megamek/i18n/megamek/client/messages.properties index 9cc5a513173..7c316346a05 100644 --- a/megamek/i18n/megamek/client/messages.properties +++ b/megamek/i18n/megamek/client/messages.properties @@ -4625,16 +4625,96 @@ CMVPanel.copyText=Copy as Text CMVPanel.MUL=Open MUL CMVPanel.font=Font: +# Scenario Chooser +ScenarioChooser.title=Choose Scenario + +# SBF Target Dialog +SBFTargetDialog.title=Targeting + + #Gamemaster Menu Text Gamemaster.Gamemaster=Gamemaster Gamemaster.EditDamage=Edit Damage Gamemaster.Configure=Configure Gamemaster.Traitor=Traitor Unit -Gamemaster.SpecialCommands=Special Commands Gamemaster.KillUnit=Kill Unit +Gamemaster.SpecialCommands=Special Commands -# Scenario Chooser -ScenarioChooser.title=Choose Scenario - -# SBF Target Dialog -SBFTargetDialog.title=Targeting +#Gamemaster Chat Commands +Gamemaster.cmd.missingUnit=Specified unit is not on the board. +Gamemaster.cmd.error.integerparse=must be between the min and max values: +Gamemaster.cmd.help=Usage: +Gamemaster.cmd.params.required=Required. +Gamemaster.cmd.params.optional=Optional. +Gamemaster.cmd.x=The x coordinate of the hex. +Gamemaster.cmd.y=The y coordinate of the hex. +# Remove Smoke cmd +Gamemaster.cmd.removesmoke.help=Removes all smoke cloud hexes. +Gamemaster.cmd.removesmoke.success=The air is cleaner and the smoke is gone. +# Kill Unit cmd +Gamemaster.cmd.kill.unitID=ID of the unit to kill. +Gamemaster.cmd.kill.help=Kills a single unit. +Gamemaster.cmd.kill.success=Is going to be destroyed at the end of this phase. +Gamemaster.cmd.kill.reason=Killed by GM. +# Change ownership cmd +Gamemaster.cmd.changeownership.help=Changes the ownership of a unit from one player to another. +Gamemaster.cmd.changeownership.unitID=ID of the unit to change ownership. +Gamemaster.cmd.changeownership.playerID=ID of the player to receive the unit. +Gamemaster.cmd.changeownership.unitNotFound=No such entity. +Gamemaster.cmd.changeownership.playerNotFound=No such player. +Gamemaster.cmd.changeownership.playerUnassigned=Player must be assigned a team. +Gamemaster.cmd.changeownership.success=Ownership of unit {0} will be transferred to player {1} at the end of this round. +# Change weather cmd +Gamemaster.cmd.changeweather.help=Change any of the planetary conditions. Effects change at the next round. +Gamemaster.cmd.changeweather.fog=Fog: 0=none, 1=light, 2=heavy +Gamemaster.cmd.changeweather.light=Light: 0=daylight, 1=dusk, 2=full moon, 3=glare, 4=moonless night, 5=solar flare, 6=pitch black +Gamemaster.cmd.changeweather.wind=Wind: 0=calm, 1=light gale, 2=moderate gale, 3=strong gale, 4=storm, 5=tornado F1-F3, 6=tornado F4 +Gamemaster.cmd.changeweather.winddir=Wind direction: 0=south, 1=southwest, 2=northwest, 3=north, 4=northeast, 5=southeast, 6=random +Gamemaster.cmd.changeweather.atmo=Atmosphere: 0=vacuum, 1=trace, 2=thin, 3=standard, 4=high, 5=very high +Gamemaster.cmd.changeweather.blowsand=Blowing Sand: 0=no, 1=yes +Gamemaster.cmd.changeweather.emi=EMI: 0=no, 1=yes +Gamemaster.cmd.changeweather.weather=Weather: 0=clear, 1=light rain, 2=moderate rain, 3=heavy rain, 4=gusting rain, 5=downpour, 6=light snow, 7=moderate snow, 8=snow flurries, 9=heavy snow, 10=sleet, 11=ice storm, 12=light hail, 13=heavy hail, 14=lightning storm +# Disaster cmd +Gamemaster.cmd.disaster.help=Causes a disaster on the board. +Gamemaster.cmd.disaster.type=Type of disaster. Beware, some disasters are very destructive! +Gamemaster.cmd.changeweather.fog.success=The fog has changed. +Gamemaster.cmd.changeweather.fog.error=Invalid fog value. Must be between 0 and {0} + +Gamemaster.cmd.changeweather.wind.success=The wind strength has changed. +Gamemaster.cmd.changeweather.wind.error=Invalid wind value. Must be between 0 and {0} + +Gamemaster.cmd.changeweather.winddir.success=The wind direction has changed. +Gamemaster.cmd.changeweather.winddir.error=Invalid wind direction value. Must be between 0 and {0} + +Gamemaster.cmd.changeweather.light.success=The light has changed. +Gamemaster.cmd.changeweather.light.error=Invalid light value. Must be between 0 and {0} + +Gamemaster.cmd.changeweather.atmo.success0=The air has vanished, put your vac suits! +Gamemaster.cmd.changeweather.atmo.success=The air is changing. +Gamemaster.cmd.changeweather.atmo.error=Invalid atmosphere value. Must be between 0 and {0} + +Gamemaster.cmd.changeweather.blowsand.success1=Sand started blowing. +Gamemaster.cmd.changeweather.blowsand.success=The sand has settled. +Gamemaster.cmd.changeweather.blowsand.error=Invalid blowsand value. Must be between 0 and {0} + +Gamemaster.cmd.changeweather.weather.success=The weather has changed. +Gamemaster.cmd.changeweather.weather.error=Invalid weather value. Must be between 0 and {0} + +Gamemaster.cmd.changeweather.emi.success1=EMI is active. +Gamemaster.cmd.changeweather.emi.success=EMI is inactive. +Gamemaster.cmd.changeweather.emi.error=Invalid EMI value. Must be between 0 and {0} +# Firestarter cmd +Gamemaster.cmd.fire.type=Type of fire. They are 1=Normal, 2=Inferno, 3=Inferno Bomb or 4=Inferno IV. +Gamemaster.cmd.fire.help=Starts a fire on the board. + +# Firestorm cmd +Gamemaster.cmd.firestorm.help=Starts fire in the entire board. +Gamemaster.cmd.fire.failed=Failed to ignite fire. +Gamemaster.cmd.fire.percent=Percentage of the board hexes to ignite. + +# Orbital bombardment cmd +Gamemaster.cmd.orbitalbombardment.help=Calls an orbital bombardment on the board. It hits after the firing phase. +Gamemaster.cmd.orbitalbombardment.dmg=Damage of the bombardment at target hex. +Gamemaster.cmd.orbitalbombardment.radius=Radius of the bombardment. +Gamemaster.cmd.orbitalbombardment.error.outofbounds=Specified hex is not on the board. +Gamemaster.cmd.orbitalbombardment.success=Orbital bombardment incoming! \ No newline at end of file diff --git a/megamek/i18n/megamek/common/report-messages.properties b/megamek/i18n/megamek/common/report-messages.properties index 5bb6ad59327..b82e7e2a3aa 100755 --- a/megamek/i18n/megamek/common/report-messages.properties +++ b/megamek/i18n/megamek/common/report-messages.properties @@ -59,6 +59,7 @@ 1300=Orbital bombardment hit hex !!! 1301=End of orbital bombardment resolution 1302= has commenced an orbital bombardment, it will land at the end of the next weapons phase at hex . +1303=Start of orbital bombardment resolution # 1500s - ammo handling related 1500= () selected diff --git a/megamek/src/megamek/client/ui/swing/MapMenu.java b/megamek/src/megamek/client/ui/swing/MapMenu.java index 743528ea0d2..505e6fee4f9 100644 --- a/megamek/src/megamek/client/ui/swing/MapMenu.java +++ b/megamek/src/megamek/client/ui/swing/MapMenu.java @@ -441,22 +441,14 @@ private record Tuple(String name, GamemasterServerCommand command) {} private JMenu createGMSpecialCommandsMenu() { JMenu menu = new JMenu(Messages.getString("Gamemaster.SpecialCommands")); - var commands = List.of( - new Tuple("Kill Unit", new KillCommand(null, null)), - new Tuple("Change Ownership", new ChangeOwnershipCommand(null, null)), - new Tuple("Change Weather", new ChangeWeatherCommand(null, null)), - new Tuple("Disasters", new DisasterCommand(null, null)), - new Tuple("Orbital Bombardment", new OrbitalBombardmentCommand(null, null)), - new Tuple("Remove Smoke", new RemoveSmokeCommand(null, null)), - new Tuple("Firestarter", new FirestarterCommand(null, null)), - new Tuple("Firestorm", new FirestormCommand(null, null)) - ); - - for (var cmd : commands) { - JMenuItem item = new JMenuItem(cmd.name()); - item.addActionListener(evt -> new GamemasterCommandPanel(gui.getFrame(), gui, cmd.command()).setVisible(true)); - menu.add(item); - } + Server.getServerInstance().getAllCommands().stream() + .filter(cmd -> cmd instanceof GamemasterServerCommand) + .map(cmd -> (GamemasterServerCommand) cmd) + .forEach(cmd -> { + JMenuItem item = new JMenuItem(cmd.getName()); + item.addActionListener(evt -> new GamemasterCommandPanel(gui.getFrame(), gui, cmd).setVisible(true)); + menu.add(item); + }); return menu; } diff --git a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java index f85f1b7b55d..bd47005e518 100644 --- a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java +++ b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java @@ -1,6 +1,5 @@ package megamek.client.ui.swing.gmCommands; -import megamek.client.IClient; import megamek.client.ui.swing.ClientGUI; import megamek.server.commands.GamemasterServerCommand; import megamek.server.commands.arguments.Argument; @@ -8,6 +7,7 @@ import megamek.server.commands.arguments.IntegerArgument; import javax.swing.*; +import java.awt.*; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -24,25 +24,30 @@ public GamemasterCommandPanel(JFrame parent, ClientGUI client, GamemasterServerC this.client = client; setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); - JLabel helpLabel = new JLabel(command.getHelp()); + JLabel helpLabel = new JLabel(command.getHelpHtml()); add(helpLabel); List> arguments = command.defineArguments(); Map argumentComponents = new HashMap<>(); for (Argument argument : arguments) { + JPanel argumentPanel = new JPanel(); + argumentPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); + JLabel label = new JLabel(argument.getName() + ":"); - add(label); + argumentPanel.add(label); - if (argument instanceof IntegerArgument intArg) { + if (argument instanceof IntegerArgument) { + IntegerArgument intArg = (IntegerArgument) argument; JSpinner spinner = new JSpinner(new SpinnerNumberModel( intArg.hasDefaultValue() ? intArg.getValue() : 0, intArg.getMinValue(), intArg.getMaxValue(), 1)); - add(spinner); + argumentPanel.add(spinner); argumentComponents.put(argument.getName(), spinner); - } else if (argument instanceof EnumArgument enumArg) { + } else if (argument instanceof EnumArgument) { + EnumArgument enumArg = (EnumArgument) argument; JComboBox comboBox = new JComboBox<>(); for (Enum constant : enumArg.getEnumType().getEnumConstants()) { comboBox.addItem(constant.name()); @@ -50,9 +55,11 @@ public GamemasterCommandPanel(JFrame parent, ClientGUI client, GamemasterServerC if (enumArg.getValue() != null) { comboBox.setSelectedItem(enumArg.getValue().name()); } - add(comboBox); + argumentPanel.add(comboBox); argumentComponents.put(argument.getName(), comboBox); } + + add(argumentPanel); } JButton executeButton = new JButton("Execute Command"); @@ -63,6 +70,18 @@ public GamemasterCommandPanel(JFrame parent, ClientGUI client, GamemasterServerC setLocationRelativeTo(parent); } + private String wrapText(String text, int lineLength) { + StringBuilder wrappedText = new StringBuilder(""); + int currentIndex = 0; + while (currentIndex < text.length()) { + int endIndex = Math.min(currentIndex + lineLength, text.length()); + wrappedText.append(text, currentIndex, endIndex).append("
"); + currentIndex = endIndex; + } + wrappedText.append(""); + return wrappedText.toString(); + } + private void executeCommand(Map argumentComponents) { List> arguments = command.defineArguments(); String[] args = new String[arguments.size()]; diff --git a/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java b/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java index 1a3ec4ff91e..bd4a3b6feef 100644 --- a/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java +++ b/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java @@ -77,7 +77,7 @@ public class TilesetManager implements IPreferenceChangeListener { private static final String FILENAME_ARTILLERY_ADJUSTED_IMAGE = "artyadj.gif"; private static final String FILENAME_ARTILLERY_INCOMING_IMAGE = "artyinc.gif"; - private static final String FILENAME_ORBITAL_BOMBARDMENT_INCOMING_IMAGE = "obinc.gif"; + public static final String FILENAME_ORBITAL_BOMBARDMENT_INCOMING_IMAGE = "obinc.gif"; public static final int ARTILLERY_AUTOHIT = 0; public static final int ARTILLERY_ADJUSTED = 1; diff --git a/megamek/src/megamek/common/SpecialHexDisplay.java b/megamek/src/megamek/common/SpecialHexDisplay.java index 2fb11e1cac3..64875395302 100644 --- a/megamek/src/megamek/common/SpecialHexDisplay.java +++ b/megamek/src/megamek/common/SpecialHexDisplay.java @@ -23,6 +23,8 @@ import megamek.common.util.ImageUtil; import megamek.common.util.fileUtils.MegaMekFile; +import static megamek.client.ui.swing.tileset.TilesetManager.FILENAME_ORBITAL_BOMBARDMENT_INCOMING_IMAGE; + /** * @author dirk */ @@ -101,7 +103,7 @@ public boolean drawAfter() { return true; } }, - ORBITAL_BOMBARDMENT(new MegaMekFile(Configuration.hexesDir(), "obinc.gif").toString()); + ORBITAL_BOMBARDMENT(new MegaMekFile(Configuration.hexesDir(), FILENAME_ORBITAL_BOMBARDMENT_INCOMING_IMAGE).toString()); private transient Image defaultImage; private final String defaultImagePath; diff --git a/megamek/src/megamek/server/Server.java b/megamek/src/megamek/server/Server.java index d62d8555e92..ee832da035b 100644 --- a/megamek/src/megamek/server/Server.java +++ b/megamek/src/megamek/server/Server.java @@ -538,6 +538,13 @@ public Collection getAllCommandNames() { return commandsHash.keySet(); } + /** + * Returns the list of all server commands + */ + public List getAllCommands() { + return new ArrayList<>(commandsHash.values()); + } + /** * Sent when a client attempts to connect. */ diff --git a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java index d9ca02e4e9f..d2860a04112 100644 --- a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java +++ b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java @@ -1,23 +1,19 @@ /* - * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.commands; +import megamek.client.ui.Messages; import megamek.common.Entity; import megamek.common.Player; import megamek.server.Server; @@ -25,49 +21,48 @@ import megamek.server.commands.arguments.IntegerArgument; import megamek.server.totalwarfare.TWGameManager; -import java.util.ArrayList; import java.util.List; import java.util.Map; /** * The Server Command "/changeOwner" that will switch an entity's owner to another player. * - * @author Luana Scoppio + * @author Luana Coppio */ public class ChangeOwnershipCommand extends GamemasterServerCommand { + public static final String UNIT_ID = "unitID"; + public static final String PLAYER_ID = "playerID"; + public ChangeOwnershipCommand(Server server, TWGameManager gameManager) { super(server, gameManager, "changeOwner", - "Switches ownership of a player's entity to another player during the end phase. " - + "Usage: /changeOwner " - + "The following is an example of changing unit ID 7 to player ID 2: /changeOwner 7 2 "); + Messages.getString("Gamemaster.cmd.changeownership.help")); } @Override public List> defineArguments() { - List> arguments = new ArrayList<>(); - arguments.add(new IntegerArgument("unitID", 0, Integer.MAX_VALUE)); - arguments.add(new IntegerArgument("playerID", 0, Integer.MAX_VALUE)); - return arguments; + return List.of( + new IntegerArgument(UNIT_ID, Messages.getString("Gamemaster.cmd.changeownership.unitID")), + new IntegerArgument(PLAYER_ID, Messages.getString("Gamemaster.cmd.changeownership.playerID"))); } @Override protected void runAsGM(int connId, Map> args) { - IntegerArgument unitID = (IntegerArgument) args.get("unitID"); - IntegerArgument playerID = (IntegerArgument) args.get("playerID"); + IntegerArgument unitID = (IntegerArgument) args.get(UNIT_ID); + IntegerArgument playerID = (IntegerArgument) args.get(PLAYER_ID); Entity ent = gameManager.getGame().getEntity(unitID.getValue()); Player player = server.getGame().getPlayer(playerID.getValue()); if (null == ent) { - server.sendServerChat(connId, "No such entity."); + server.sendServerChat(connId, Messages.getString("Gamemaster.cmd.changeownership.unitNotFound")); } else if (null == player) { - server.sendServerChat(connId, "No such player."); + server.sendServerChat(connId, Messages.getString("Gamemaster.cmd.changeownership.playerNotFound")); } else if (player.getTeam() == Player.TEAM_UNASSIGNED) { - server.sendServerChat(connId, "Player must be assigned a team."); + server.sendServerChat(connId, Messages.getString("Gamemaster.cmd.changeownership.playerUnassigned")); } else { - server.sendServerChat(connId, ent.getDisplayName() + " will switch to " + player.getName() + "'s side at the end of this turn."); + server.sendServerChat(connId, Messages.getString("Gamemaster.cmd.changeownership.success", ent.getDisplayName(), player.getName())); ent.setTraitorId(player.getId()); } } diff --git a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java index 3ff818d1c1d..b28f24962ed 100644 --- a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java +++ b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java @@ -1,71 +1,59 @@ /* - * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.commands; +import megamek.client.ui.Messages; import megamek.common.planetaryconditions.*; import megamek.server.Server; import megamek.server.commands.arguments.Argument; -import megamek.server.commands.arguments.IntegerArgument; +import megamek.server.commands.arguments.OptionalIntegerArgument; import megamek.server.totalwarfare.TWGameManager; - -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; -import java.util.stream.Stream; /** - * @author Luana Scoppio + * @author Luana Coppio */ public class ChangeWeatherCommand extends GamemasterServerCommand { - private static final String HELP_TEXT = "GM changes (weather) planetary conditions. The parameters are optional and unordered " + - "and the effects are applied at the beginning of the next turn. The square brackets means that argument is optional. " + - "Usage format: /weather [fog=0-2] [wind=0-6] [winddir=0-6] [light=0-6] [atmo=0-5] [blowsand=0-1] [weather=0-14] " + - "light= 0: daylight, 1: dusk, 2: full moon, 3: glare, 4: moonless night, 5: solar flare, 6: pitch black " + - "fog= 0: none, 1: light, 2: heavy " + - "wind= 0: calm, 1: light gale, 2: moderate gale, 3: strong gale, 4: storm, 5: tornado F1-F3, 6: tornado F4 " + - "winddir= 0: south, 1: southwest, 2: northwest, 3: north, 4: northeast, 5: southeast, 6: random " + - "atmo= 0: vacuum, 1: trace, 2: thin, 3: standard, 4: high, 5: very high " + - "blowsand= 0: no, 1: yes " + - "emi= 0: no, 1: yes " + - "weather= 0: clear, 1: light rain, 2: moderate rain, 3: heavy rain, 4: gusting rain, 5: downpour, 6: light snow " + - "7: moderate snow, 8: snow flurries, 9: heavy snow, 10: sleet, 11: ice storm, 12: light hail, 13: heavy hail " + - "14: lightning storm"; + private static final String FOG = "fog"; + private static final String LIGHT = "light"; + private static final String WIND = "wind"; + private static final String WIND_DIR = "winddir"; + private static final String ATMO = "atmo"; + private static final String BLOWSAND = "blowsand"; + private static final String EMIS = "emi"; + private static final String WEATHER = "weather"; /** Creates new ChangeWeatherCommand */ public ChangeWeatherCommand(Server server, TWGameManager gameManager) { - super(server, gameManager, "weather", HELP_TEXT); + super(server, gameManager, WEATHER, Messages.getString("Gamemaster.cmd.changeweather.help")); } + @Override public List> defineArguments() { - List> arguments = new ArrayList<>(); - arguments.add(new IntegerArgument("fog", 0, 2)); - arguments.add(new IntegerArgument("light", 0, 6)); - arguments.add(new IntegerArgument("wind", 0, 6)); - arguments.add(new IntegerArgument("atmo", 0, 5)); - arguments.add(new IntegerArgument("blowsand", 0, 1)); - arguments.add(new IntegerArgument("emi", 0, 1)); - arguments.add(new IntegerArgument("weather", 0, 14)); - return arguments; + return List.of(new OptionalIntegerArgument(FOG, Messages.getString("Gamemaster.cmd.changeweather.fog"), 0, 2), + new OptionalIntegerArgument(LIGHT, Messages.getString("Gamemaster.cmd.changeweather.light"), 0, 6), + new OptionalIntegerArgument(WIND, Messages.getString("Gamemaster.cmd.changeweather.wind"), 0, 6), + new OptionalIntegerArgument(WIND_DIR, Messages.getString("Gamemaster.cmd.changeweather.winddir"), 0, 6), + new OptionalIntegerArgument(ATMO, Messages.getString("Gamemaster.cmd.changeweather.atmo"), 0, 5), + new OptionalIntegerArgument(BLOWSAND, Messages.getString("Gamemaster.cmd.changeweather.blowsand"), 0, 1), + new OptionalIntegerArgument(EMIS, Messages.getString("Gamemaster.cmd.changeweather.emi"), 0, 1), + new OptionalIntegerArgument(WEATHER, Messages.getString("Gamemaster.cmd.changeweather.weather"), 0, 14)); } private void updatePlanetaryCondition(int value, int connId, int maxLength, Consumer setter, @@ -78,7 +66,6 @@ private void updatePlanetaryCondition(int value, int connId, int maxLength, Cons } } - private record Condition(int maxLength, Consumer setter, Function successMessage, Function errorMessage) {} /** @@ -89,27 +76,36 @@ public void runAsGM(int connId, Map> args) { var planetaryConditions = getGameManager().getGame().getPlanetaryConditions(); Map conditions = Map.of( - "fog", new Condition(Fog.values().length, value -> planetaryConditions.setFog(Fog.values()[value]), - value -> "The fog has changed.", maxLength -> "Invalid fog value. Must be between 0 and " + (maxLength - 1)), - "wind", new Condition(Wind.values().length, value -> planetaryConditions.setWind(Wind.values()[value]), - value -> "The wind strength has changed.", maxLength -> "Invalid wind value. Must be between 0 and " + (maxLength - 1)), - "winddir", new Condition(WindDirection.values().length, value -> planetaryConditions.setWindDirection(WindDirection.values()[value]), - value -> "The wind direction has changed.", maxLength -> "Invalid wind direction value. Must be between 0 and " + (maxLength - 1)), - "light", new Condition(Light.values().length, value -> planetaryConditions.setLight(Light.values()[value]), - value -> "The light has changed.", maxLength -> "Invalid light value. Must be between 0 and " + (maxLength - 1)), - "atmo", new Condition(Atmosphere.values().length, value -> planetaryConditions.setAtmosphere(Atmosphere.values()[value]), - value -> value == 0 ? "The air has vanished, put your vac suits!" : "The air is changing.", maxLength -> "Invalid atmosphere value. Must be between 0 and " + (maxLength - 1)), - "blowsand", new Condition(BlowingSand.values().length, value -> planetaryConditions.setBlowingSand(BlowingSand.values()[value]), - value -> value == 1 ? "Sand started blowing." : "The sand has settled.", maxLength -> "Invalid blowsand value. Must be between 0 and " + (maxLength - 1)), - "weather", new Condition(Weather.values().length, value -> planetaryConditions.setWeather(Weather.values()[value]), - value -> "The weather has changed.", maxLength -> "Invalid weather value. Must be between 0 and " + (maxLength - 1)), - "emi", new Condition(EMI.values().length, value -> planetaryConditions.setEMI(EMI.values()[value]), - value -> value == 1 ? "EMI is active." : "EMI is inactive.", maxLength -> "Invalid EMI value. Must be between 0 and " + (maxLength - 1)) + FOG, new Condition(Fog.values().length, value -> planetaryConditions.setFog(Fog.values()[value]), + value -> Messages.getString("Gamemaster.cmd.changeweather.fog.success"), + maxLength -> Messages.getString("Gamemaster.cmd.changeweather.fog.error", (maxLength - 1))), + WIND, new Condition(Wind.values().length, value -> planetaryConditions.setWind(Wind.values()[value]), + value -> Messages.getString("Gamemaster.cmd.changeweather.wind.success"), + maxLength -> Messages.getString("Gamemaster.cmd.changeweather.wind.error", (maxLength - 1))), + WIND_DIR, new Condition(WindDirection.values().length, value -> planetaryConditions.setWindDirection(WindDirection.values()[value]), + value -> Messages.getString("Gamemaster.cmd.changeweather.winddir.success"), + maxLength -> Messages.getString("Gamemaster.cmd.changeweather.winddir.error", (maxLength - 1))), + LIGHT, new Condition(Light.values().length, value -> planetaryConditions.setLight(Light.values()[value]), + value -> Messages.getString("Gamemaster.cmd.changeweather.light.success"), + maxLength -> Messages.getString("Gamemaster.cmd.changeweather.light.error", (maxLength - 1))), + ATMO, new Condition(Atmosphere.values().length, value -> planetaryConditions.setAtmosphere(Atmosphere.values()[value]), + value -> value == 0 ? Messages.getString("Gamemaster.cmd.changeweather.atmo.success0") : Messages.getString("Gamemaster.cmd.changeweather.atmo.success"), + maxLength -> Messages.getString("Gamemaster.cmd.changeweather.atmo.error", (maxLength - 1))), + BLOWSAND, new Condition(BlowingSand.values().length, value -> planetaryConditions.setBlowingSand(BlowingSand.values()[value]), + value -> value == 1 ? Messages.getString("Gamemaster.cmd.changeweather.blowsand.success1") : Messages.getString("Gamemaster.cmd.changeweather.blowsand.success"), + maxLength -> Messages.getString("Gamemaster.cmd.changeweather.blowsand.error", (maxLength - 1))), + WEATHER, new Condition(Weather.values().length, value -> planetaryConditions.setWeather(Weather.values()[value]), + value -> Messages.getString("Gamemaster.cmd.changeweather.weather.success"), + maxLength -> Messages.getString("Gamemaster.cmd.changeweather.weather.error", (maxLength - 1))), + EMIS, new Condition(EMI.values().length, value -> planetaryConditions.setEMI(EMI.values()[value]), + value -> value == 1 ? Messages.getString("Gamemaster.cmd.changeweather.emi.success1") : Messages.getString("Gamemaster.cmd.changeweather.emi.success"), + maxLength -> Messages.getString("Gamemaster.cmd.changeweather.emi.error", (maxLength - 1))) ); + conditions.forEach((prefix, condition) -> { - if (args.containsKey(prefix)) { + if (args.containsKey(prefix) && ((OptionalIntegerArgument) args.get(prefix)).getValue().isPresent()) { updatePlanetaryCondition( - (int) args.get(prefix).getValue(), + ((OptionalIntegerArgument) args.get(prefix)).getValue().get(), connId, condition.maxLength, condition.setter, @@ -120,5 +116,4 @@ public void runAsGM(int connId, Map> args) { getGameManager().getGame().setPlanetaryConditions(planetaryConditions); } - } diff --git a/megamek/src/megamek/server/commands/DisasterCommand.java b/megamek/src/megamek/server/commands/DisasterCommand.java index f3fc13e354d..0c7d3dc4b2f 100644 --- a/megamek/src/megamek/server/commands/DisasterCommand.java +++ b/megamek/src/megamek/server/commands/DisasterCommand.java @@ -1,25 +1,20 @@ /* - * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.commands; +import megamek.client.ui.Messages; import megamek.common.Coords; -import megamek.logging.MMLogger; import megamek.server.Server; import megamek.server.commands.arguments.Argument; import megamek.server.commands.arguments.EnumArgument; @@ -27,13 +22,14 @@ import java.util.List; import java.util.Map; -import java.util.Objects; /** - * @author Luana Scoppio + * @author Luana Coppio */ public class DisasterCommand extends GamemasterServerCommand { + public static final String TYPE = "type"; + enum Disaster { RANDOM, HURRICANE, @@ -56,18 +52,12 @@ public static Disaster getRandomDisaster() { } public DisasterCommand(Server server, TWGameManager gameManager) { - super(server, gameManager, "gomorrah", "GM calls a disaster, arguments in square brackets are optional. " + - "Usage: /gomorrah [type] " + - "if not type is passed, one is chosen at random. " + - "Type can be one of the following: hurricane, lightning, ob, ob2, ob3, sandstorm, hailstorm, eclipse, solarflare, " + - "supernova, smog, firestorm, traitor. " + - "The type ob, ob2 and ob3 are orbital bombardment with one, two or three random hit locations, at default values " + - "for damage (100) and radius (4)."); + super(server, gameManager, "disaster", Messages.getString("Gamemaster.cmd.disaster.help")); } @Override public List> defineArguments() { - return List.of(new EnumArgument<>("type", Disaster.class, Disaster.RANDOM)); + return List.of(new EnumArgument<>(TYPE, Messages.getString("Gamemaster.cmd.disaster.type"), Disaster.class, Disaster.RANDOM)); } private void runDisasterCommand(int connId, Disaster disaster) { @@ -157,10 +147,10 @@ private void orbitalBombardment(int connId) { */ @Override protected void runAsGM(int connId, Map> args) { - if (args.get("type").getValue().equals(Disaster.RANDOM)) { + if (args.get(TYPE).getValue().equals(Disaster.RANDOM)) { runDisasterCommand(connId, Disaster.getRandomDisaster()); } else { - runDisasterCommand(connId, (Disaster) args.get("type").getValue()); + runDisasterCommand(connId, (Disaster) args.get(TYPE).getValue()); } } } diff --git a/megamek/src/megamek/server/commands/FirestarterCommand.java b/megamek/src/megamek/server/commands/FirestarterCommand.java index 8e4fece3254..2af7f0d4913 100644 --- a/megamek/src/megamek/server/commands/FirestarterCommand.java +++ b/megamek/src/megamek/server/commands/FirestarterCommand.java @@ -1,23 +1,19 @@ /* - * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.commands; +import megamek.client.ui.Messages; import megamek.common.Coords; import megamek.common.Hex; import megamek.server.Server; @@ -32,26 +28,28 @@ /** * The Server Command "/firestarter" that will put one hex on fire. * - * @author Luana Scoppio + * @author Luana Coppio */ public class FirestarterCommand extends GamemasterServerCommand { + private static final String FIRESTARTER = "firestarter"; + private static final String X = "x"; + private static final String Y = "y"; + private static final String TYPE = "type"; + public FirestarterCommand(Server server, TWGameManager gameManager) { super(server, gameManager, - "firestarter", - "Starts fire in one specific hex at a specific intensity. " - + "Usage: /firestarter [] " - + "The intensity can be 1=Norma, 2=Inferno, 3=Inferno Bomb or 4=Inferno IV, default is 1."); + FIRESTARTER, + Messages.getString("Gamemaster.cmd.fire.help")); } - @Override public List> defineArguments() { return List.of( - new IntegerArgument("x"), - new IntegerArgument("y"), - new IntegerArgument("intensity", 1, 4, 1)); + new IntegerArgument(X, Messages.getString("Gamemaster.cmd.x")), + new IntegerArgument(Y, Messages.getString("Gamemaster.cmd.y")), + new IntegerArgument(TYPE, Messages.getString("Gamemaster.cmd.fire.type"), 1, 4, 1)); } /** @@ -61,10 +59,9 @@ public List> defineArguments() { */ @Override protected void runAsGM(int connId, Map> args) { - int xArg = (int) args.get("x").getValue() - 1; - int yArg = (int) args.get("y").getValue() -1; - int fireType = (int) args.get("intensity").getValue(); - + int xArg = (int) args.get(X).getValue() - 1; + int yArg = (int) args.get(Y).getValue() - 1; + int fireType = (int) args.get(TYPE).getValue(); igniteHex(new Coords(xArg, yArg), fireType); } @@ -77,5 +74,4 @@ private void igniteHex(Coords coords, int fireType) { throw new IllegalArgumentException("Failed to ignite hex: " + e.getMessage()); } } - } diff --git a/megamek/src/megamek/server/commands/FirestormCommand.java b/megamek/src/megamek/server/commands/FirestormCommand.java index 03d2e03d961..e349392718c 100644 --- a/megamek/src/megamek/server/commands/FirestormCommand.java +++ b/megamek/src/megamek/server/commands/FirestormCommand.java @@ -1,23 +1,19 @@ /* - * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.commands; +import megamek.client.ui.Messages; import megamek.common.Coords; import megamek.common.Hex; import megamek.server.Server; @@ -25,7 +21,6 @@ import megamek.server.commands.arguments.IntegerArgument; import megamek.server.totalwarfare.TWGameManager; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -33,24 +28,27 @@ /** * The Server Command "/firestorm" that starts a blazing inferno on the board. * - * @author Luana Scoppio + * @author Luana Coppio */ public class FirestormCommand extends GamemasterServerCommand { + private static final String FIRESTORM = "firestorm"; + private static final String TYPE = "type"; + private static final String PERCENT = "percent"; + public FirestormCommand(Server server, TWGameManager gameManager) { super(server, gameManager, - "firestorm", - "Starts fire in the entire board. " - + "Usage: /firestorm [] []" - + "The intensity can be 1=Normal, 2=Inferno, 3=Inferno Bomb or 4=Inferno IV, default is 1. " - + "The size can be a percent of the board, from 1 to 100, default is 25."); + FIRESTORM, + Messages.getString("Gamemaster.cmd.firestorm.help")); } @Override public List> defineArguments() { - return List.of(new IntegerArgument("intensity", 1, 4, 1), - new IntegerArgument("percent", 1, 100, 25)); + return List.of( + new IntegerArgument(TYPE, Messages.getString("Gamemaster.cmd.fire.type"), 1, 4, 1), + new IntegerArgument(PERCENT, Messages.getString("Gamemaster.cmd.fire.percent"), 1, 100, 25) + ); } /** @@ -61,13 +59,13 @@ public List> defineArguments() { @Override protected void runAsGM(int connId, Map> args) { try { - var fireType = (int) args.get("intensity").getValue(); - var percent = (int) args.get("percent").getValue(); + var fireType = (int) args.get(TYPE).getValue(); + var percent = (int) args.get(PERCENT).getValue(); var coords = getRandomCoords(numberOfCoordsFromPercent(percent)); coords.forEach(c -> igniteHex(c, fireType)); } catch (Exception e) { - logger.error("Failed to ignite fire.", e); - server.sendServerChat(connId, "Failed to ignite fire."); + logger.error(Messages.getString("Gamemaster.cmd.fire.failed"), e); + server.sendServerChat(connId, Messages.getString("Gamemaster.cmd.fire.failed")); } } @@ -95,7 +93,8 @@ private HashSet getRandomCoords(int size) { private void igniteHex(Coords coords, int fireType) { Hex hex = gameManager.getGame().getBoard().getHex(coords); if (null == hex) { - // Just ignore null hexes... they should not happen, but I don't want to crash the command + // Just ignore null hexes... + // they should not happen, but I don't want to crash the command return; } gameManager.ignite(coords, fireType, gameManager.getvPhaseReport()); diff --git a/megamek/src/megamek/server/commands/GamemasterServerCommand.java b/megamek/src/megamek/server/commands/GamemasterServerCommand.java index 2c56403cc29..cd3674e09bf 100644 --- a/megamek/src/megamek/server/commands/GamemasterServerCommand.java +++ b/megamek/src/megamek/server/commands/GamemasterServerCommand.java @@ -1,23 +1,19 @@ /* - * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.commands; +import megamek.client.ui.Messages; import megamek.logging.MMLogger; import megamek.server.Server; import megamek.server.commands.arguments.Argument; @@ -31,7 +27,9 @@ * @author Luana Coppio */ public abstract class GamemasterServerCommand extends ServerCommand { - + private static final String NEWLINE = "\n"; + private static final String WHITESPACE = " "; + private static final String LONG_WHITESPACE = " "; private static final String EMPTY_ARGUMENT = null; protected final TWGameManager gameManager; protected final static MMLogger logger = MMLogger.create(GamemasterServerCommand.class); @@ -82,6 +80,7 @@ public void run(int connId, String[] args) { // Parses the arguments using the definition private Map> parseArguments(String[] args) { + List> argumentDefinitions = defineArguments(); Map> parsedArguments = new HashMap<>(); List positionalArguments = new ArrayList<>(); @@ -94,7 +93,8 @@ private Map> parseArguments(String[] args) { // Separate positional arguments and named arguments boolean namedArgumentStarted = false; - for (String arg : List.of(args)) { + for (int i = 1; i < args.length; i++) { + String arg = args[i]; String[] keyValue = arg.split("="); if (keyValue.length == 2) { @@ -140,6 +140,43 @@ private Map> parseArguments(String[] args) { return parsedArguments; } + public String getHelpHtml() { + return "" + + this.getHelp() + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll(" ", " ") + .replaceAll(NEWLINE, "
")+ + ""; + } + + @Override + public String getHelp() { + StringBuilder help = new StringBuilder(); + help.append(super.getHelp()) + .append(NEWLINE) + .append(Messages.getString("Gamemaster.cmd.help")) + .append(NEWLINE) + .append("/") + .append(getName()); + + for (Argument arg : defineArguments()) { + help.append(WHITESPACE) + .append(arg.getRepr()); + } + + help.append(NEWLINE); + for (var arg : defineArguments()) { + help.append(LONG_WHITESPACE) + .append(arg.getName()) + .append(":") + .append(WHITESPACE) + .append(arg.getHelp()) + .append(NEWLINE); + } + return help.toString(); + } + // The new method for game master commands that uses parsed arguments protected abstract void runAsGM(int connId, Map> args); } diff --git a/megamek/src/megamek/server/commands/HelpCommand.java b/megamek/src/megamek/server/commands/HelpCommand.java index 8c68edde3d3..ceaeb93c94c 100644 --- a/megamek/src/megamek/server/commands/HelpCommand.java +++ b/megamek/src/megamek/server/commands/HelpCommand.java @@ -22,7 +22,7 @@ * The help command lists the other commands when run without arguments. When * run with another command name as an argument, it queries that command for its * help string and send that to the client. - * + * * @author Ben * @since March 30, 2002, 7:03 PM */ @@ -51,8 +51,10 @@ public void run(int connId, String[] args) { + "\" not recognized. Commands available: " + commandList()); } else { - server.sendServerChat(connId, "/" + command.getName() + " : " - + command.getHelp()); + var help = command.getHelp(); + for (String line : help.split("\n")) { + server.sendServerChat(connId, line); + } } } } @@ -64,7 +66,7 @@ private String commandList() { Collections.sort(cmdNames); for (String cmdName : cmdNames) { - if (commandList.length() > 0) { + if (!commandList.isEmpty()) { commandList.append(", "); } commandList.append(cmdName); diff --git a/megamek/src/megamek/server/commands/KillCommand.java b/megamek/src/megamek/server/commands/KillCommand.java index 3001ae0fe5a..d0d19a94970 100644 --- a/megamek/src/megamek/server/commands/KillCommand.java +++ b/megamek/src/megamek/server/commands/KillCommand.java @@ -1,24 +1,19 @@ /* - * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.commands; -import megamek.common.options.OptionsConstants; +import megamek.client.ui.Messages; import megamek.server.Server; import megamek.server.commands.arguments.Argument; import megamek.server.commands.arguments.IntegerArgument; @@ -28,24 +23,20 @@ import java.util.Map; /** - * @author Luana Scoppio + * @author Luana Coppio */ public class KillCommand extends GamemasterServerCommand{ - private final TWGameManager gameManager; + public static final String UNIT_ID = "unitID"; /** Creates new KillCommand */ public KillCommand(Server server, TWGameManager gameManager) { - super(server, gameManager, "kill", "Allows a GM to destroy a single unit instantly" + - "Usage: "+ - "/kill " + - "where id is the units ID. The units ID can be found by hovering over the unit."); - this.gameManager = gameManager; + super(server, gameManager, "kill", Messages.getString("Gamemaster.cmd.kill.help")); } @Override public List> defineArguments() { - return List.of(new IntegerArgument("unitID", 0, Integer.MAX_VALUE)); + return List.of(new IntegerArgument(UNIT_ID, Messages.getString("Gamemaster.cmd.kill.unitID"))); } /** @@ -53,14 +44,14 @@ public List> defineArguments() { */ @Override protected void runAsGM(int connId, Map> args) { - int unitId = (int) args.get("unitID").getValue(); + int unitId = (int) args.get(UNIT_ID).getValue(); // is the unit on the board? var unit = gameManager.getGame().getEntity(unitId); if (unit == null) { - server.sendServerChat(connId, "Specified unit is not on the board."); + server.sendServerChat(connId, Messages.getString("Gamemaster.cmd.missingUnit")); return; } - gameManager.destroyEntity(unit, "Act of God", false, false); - server.sendServerChat(unit.getDisplayName() + " has been devastated."); + gameManager.destroyEntity(unit, Messages.getString("Gamemaster.cmd.kill.reason"), false, false); + server.sendServerChat(unit.getDisplayName() + Messages.getString("Gamemaster.cmd.kill.success")); } } diff --git a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java index 9a970eb2d1f..7d9a08b65db 100644 --- a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java +++ b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java @@ -1,62 +1,49 @@ /* - * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.commands; -import megamek.common.options.OptionsConstants; +import megamek.client.ui.Messages; import megamek.server.Server; import megamek.server.commands.arguments.Argument; import megamek.server.commands.arguments.IntegerArgument; import megamek.server.props.OrbitalBombardment; import megamek.server.totalwarfare.TWGameManager; -import java.util.ArrayList; import java.util.List; import java.util.Map; /** - * @author Luana Scoppio + * @author Luana Coppio */ public class OrbitalBombardmentCommand extends GamemasterServerCommand { + public static final String X = "x"; + public static final String Y = "y"; + public static final String DMG = "dmg"; + public static final String RADIUS = "radius"; + public OrbitalBombardmentCommand(Server server, TWGameManager gameManager) { - super(server, gameManager, "ob", "GM orders an unknown warship to strike the board doing of 100 damage with a 4 hex radius, to be exploded at" - + "the end of the next weapons attack phase." - + "Allowed formats: " - + "/ob and" - + "/ob [dmg=#] [r=#] and" - + "/ob and " - + "/ob " - + "X and Y are the hex position where is x=column number and y=row number (hex 0923 would be x=9 and y=23), " - + "dmg is the amount of damage at impact point, default is 100, the damage drops off linearly according to the radius. " - + "r is radius, defaults to 4. " - + " Example: /ob 10 10 dmg=120 r=4 and /ob 10 10 120 4 are equivalent. " - + " Parameters in square brackets may be omitted, and using named variables permits to write them out of order. " - + " Example: /ob 10 10 r=12 dmg=300"); + super(server, gameManager, "ob", Messages.getString("Gamemaster.cmd.orbitalbombardment.help")); } @Override public List> defineArguments() { return List.of( - new IntegerArgument("x"), - new IntegerArgument("y"), - new IntegerArgument("dmg", 10, Integer.MAX_VALUE, 100), - new IntegerArgument("r", 1, 10, 4)); + new IntegerArgument(X, Messages.getString("Gamemaster.cmd.x")), + new IntegerArgument(Y, Messages.getString("Gamemaster.cmd.y")), + new IntegerArgument(DMG, Messages.getString("Gamemaster.cmd.orbitalbombardment.dmg"), 10, Integer.MAX_VALUE, 100), + new IntegerArgument(RADIUS, Messages.getString("Gamemaster.cmd.orbitalbombardment.radius"), 1, 10, 4)); } /** @@ -67,19 +54,20 @@ protected void runAsGM(int connId, Map> args) { var orbitalBombardmentBuilder = new OrbitalBombardment.Builder(); - orbitalBombardmentBuilder.x((int) args.get("x").getValue() - 1).y((int) args.get("y").getValue() - 1); - orbitalBombardmentBuilder.radius((int) args.get("r").getValue()); - orbitalBombardmentBuilder.damageFactor((int) args.get("dmg").getValue()); + orbitalBombardmentBuilder.x((int) args.get(X).getValue() - 1) + .y((int) args.get(Y).getValue() - 1) + .radius((int) args.get(RADIUS).getValue()) + .damage((int) args.get(DMG).getValue()); var orbitalBombardment = orbitalBombardmentBuilder.build(); // is the hex on the board? if (!gameManager.getGame().getBoard().contains(orbitalBombardment.getX(), orbitalBombardment.getY())) { - server.sendServerChat(connId, "Specified hex is not on the board."); + server.sendServerChat(connId, Messages.getString("Gamemaster.cmd.orbitalbombardment.error.outofbounds")); return; } gameManager.addScheduledOrbitalBombardment(orbitalBombardment); - server.sendServerChat("Orbital bombardment incoming!"); + server.sendServerChat(Messages.getString("Gamemaster.cmd.orbitalbombardment.success")); } } diff --git a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java index 75373384714..7286cc99955 100644 --- a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java +++ b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java @@ -1,26 +1,19 @@ /* - * Copyright (C) 2024 Luana Scoppio (luana.coppio@gmail.com) - * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.commands; -import megamek.common.planetaryconditions.Fog; -import megamek.common.planetaryconditions.Wind; +import megamek.client.ui.Messages; import megamek.server.Server; import megamek.server.commands.arguments.Argument; import megamek.server.totalwarfare.TWGameManager; @@ -29,13 +22,13 @@ import java.util.Map; /** - * @author Luana Scoppio + * @author Luana Coppio */ public class RemoveSmokeCommand extends GamemasterServerCommand { /** Creates new KillCommand */ public RemoveSmokeCommand(Server server, TWGameManager gameManager) { - super(server, gameManager, "nosmoke", "GM removes all smoke cloud hexes. Usage: /nosmoke"); + super(server, gameManager, "nosmoke", Messages.getString("Gamemaster.cmd.removesmoke.help")); } @Override @@ -46,6 +39,6 @@ public List> defineArguments() { @Override protected void runAsGM(int connId, Map> args) { gameManager.getSmokeCloudList().forEach(gameManager::removeSmokeTerrain); - server.sendServerChat(connId, "GM cleared the smoke clouds."); + server.sendServerChat(connId, Messages.getString("Gamemaster.cmd.removesmoke.success")); } } diff --git a/megamek/src/megamek/server/commands/TraitorCommand.java b/megamek/src/megamek/server/commands/TraitorCommand.java index 6b19396f8bb..a03e977511d 100644 --- a/megamek/src/megamek/server/commands/TraitorCommand.java +++ b/megamek/src/megamek/server/commands/TraitorCommand.java @@ -1,20 +1,15 @@ /* - * Copyright (c) 2021 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.commands; @@ -25,7 +20,7 @@ /** * The Server Command "/traitor" that will switch an entity's owner to another player. - * + * * @author Jay Lawson (Taharqa) */ public class TraitorCommand extends ServerCommand { @@ -43,7 +38,7 @@ public TraitorCommand(Server server, TWGameManager gameManager) { /** * Run this command with the arguments supplied - * + * * @see megamek.server.commands.ServerCommand#run(int, java.lang.String[]) */ @Override diff --git a/megamek/src/megamek/server/commands/arguments/Argument.java b/megamek/src/megamek/server/commands/arguments/Argument.java index 39d4aa056c3..e04da44df35 100644 --- a/megamek/src/megamek/server/commands/arguments/Argument.java +++ b/megamek/src/megamek/server/commands/arguments/Argument.java @@ -3,11 +3,12 @@ // A generic Argument class that can be extended for different argument types public abstract class Argument { protected T value; - private final String name; + private final String description; - public Argument(String name) { + public Argument(String name, String description) { this.name = name; + this.description = description; } public T getValue() { @@ -18,5 +19,15 @@ public String getName() { return name; } + public String getDescription() { + return description; + } + + public String getRepr() { + return "<" + getName() + ">"; + } + + public abstract String getHelp(); + public abstract void parse(String input) throws IllegalArgumentException; } diff --git a/megamek/src/megamek/server/commands/arguments/EnumArgument.java b/megamek/src/megamek/server/commands/arguments/EnumArgument.java index 5c51072579b..f317027432f 100644 --- a/megamek/src/megamek/server/commands/arguments/EnumArgument.java +++ b/megamek/src/megamek/server/commands/arguments/EnumArgument.java @@ -1,13 +1,15 @@ package megamek.server.commands.arguments; +import megamek.client.ui.Messages; + import java.util.Arrays; public class EnumArgument> extends Argument { private final Class enumType; private final E defaultValue; - public EnumArgument(String name, Class enumType, E defaultValue) { - super(name); + public EnumArgument(String name, String description, Class enumType, E defaultValue) { + super(name, description); this.enumType = enumType; this.defaultValue = defaultValue; } @@ -41,4 +43,14 @@ public E getValue() { } return value; } + + @Override + public String getHelp() { + return getDescription() + + " (" + String.join(", ", Arrays.toString(enumType.getEnumConstants())) + ")" + + (defaultValue != null ? + " [default: " + defaultValue + "]. " + Messages.getString("Gamemaster.cmd.params.optional") : + " " + Messages.getString("Gamemaster.cmd.params.required")); + } + } diff --git a/megamek/src/megamek/server/commands/arguments/IntegerArgument.java b/megamek/src/megamek/server/commands/arguments/IntegerArgument.java index 26340b84879..e3d7b27d962 100644 --- a/megamek/src/megamek/server/commands/arguments/IntegerArgument.java +++ b/megamek/src/megamek/server/commands/arguments/IntegerArgument.java @@ -1,20 +1,24 @@ package megamek.server.commands.arguments; +import megamek.client.ui.Messages; + +import java.util.Arrays; + public class IntegerArgument extends Argument { private final int minValue; private final int maxValue; private final Integer defaultValue; - public IntegerArgument(String name) { - this(name, Integer.MIN_VALUE, Integer.MAX_VALUE, null); + public IntegerArgument(String name, String description) { + this(name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, null); } - public IntegerArgument(String name, int minValue, int maxValue) { - this(name, minValue, maxValue, null); + public IntegerArgument(String name, String description, int minValue, int maxValue) { + this(name, description, minValue, maxValue, null); } - public IntegerArgument(String name, int minValue, int maxValue, Integer defaultValue) { - super(name); + public IntegerArgument(String name, String description, int minValue, int maxValue, Integer defaultValue) { + super(name, description); this.minValue = minValue; this.maxValue = maxValue; this.defaultValue = defaultValue; @@ -60,4 +64,13 @@ public int getMinValue() { public int getMaxValue() { return maxValue; } + + @Override + public String getHelp() { + return getDescription() + (minValue == Integer.MIN_VALUE ? "": " Min: " + minValue) + + (defaultValue != null ? + " [default: " + defaultValue + "]. " + Messages.getString("Gamemaster.cmd.params.optional") : + " " + Messages.getString("Gamemaster.cmd.params.required")); + } + } diff --git a/megamek/src/megamek/server/commands/arguments/OptionalIntegerArgument.java b/megamek/src/megamek/server/commands/arguments/OptionalIntegerArgument.java new file mode 100644 index 00000000000..fc857b1148e --- /dev/null +++ b/megamek/src/megamek/server/commands/arguments/OptionalIntegerArgument.java @@ -0,0 +1,77 @@ +/* + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ +package megamek.server.commands.arguments; + +import megamek.client.ui.Messages; + +import java.util.Optional; + +/** + * @author Luana Coppio + */ +public class OptionalIntegerArgument extends Argument> { + private final int minValue; + private final int maxValue; + + public OptionalIntegerArgument(String name, String description) { + this(name, description, Integer.MIN_VALUE, Integer.MAX_VALUE); + } + + public OptionalIntegerArgument(String name, String description, int minValue, int maxValue) { + super(name, description); + this.minValue = minValue; + this.maxValue = maxValue; + } + + @Override + public Optional getValue() { + return value; + } + + @Override + public void parse(String input) throws IllegalArgumentException { + if (input == null) { + value = Optional.empty(); + return; + } + try { + int parsedValue = Integer.parseInt(input); + if (parsedValue < getMinValue() || parsedValue > getMaxValue()) { + throw new IllegalArgumentException(getName() + Messages.getString("Gamemaster.cmd.error.integerparse") + getMinValue() + " and " + getMaxValue()); + } + value = Optional.of(parsedValue); + } catch (NumberFormatException e) { + throw new IllegalArgumentException(getName() + " must be an integer."); + } + } + + public int getMinValue() { + return minValue; + } + + public int getMaxValue() { + return maxValue; + } + + @Override + public String getRepr() { + return "[" + getName() + "]"; + } + + @Override + public String getHelp() { + return getDescription() + (minValue == Integer.MIN_VALUE ? "": " Min: " + minValue) + + (maxValue == Integer.MAX_VALUE ? "": " Max: " + maxValue) + ". " + Messages.getString("Gamemaster.cmd.params.optional"); + } +} diff --git a/megamek/src/megamek/server/props/OrbitalBombardment.java b/megamek/src/megamek/server/props/OrbitalBombardment.java index 0bfa383c45f..972011043ac 100644 --- a/megamek/src/megamek/server/props/OrbitalBombardment.java +++ b/megamek/src/megamek/server/props/OrbitalBombardment.java @@ -1,20 +1,15 @@ /* - * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. * - * This file is part of MegaMek. + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - * MegaMek is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * MegaMek is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MegaMek. If not, see . + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. */ package megamek.server.props; @@ -25,13 +20,13 @@ * x and y are board positions, damageFactor is the damage at impact point times 10, and radius is the blast radius of the explosion with * regular/linear damage droppoff. * - * @author Luana Scoppio + * @author Luana Coppio */ public class OrbitalBombardment { private final int x; private final int y; - private final int damageFactor; + private final int damage; private final int radius; private final Coords coords; /** @@ -43,7 +38,7 @@ public class OrbitalBombardment { private OrbitalBombardment(Builder builder) { this.x = builder.x; this.y = builder.y; - this.damageFactor = builder.damageFactor; + this.damage = builder.damage; this.radius = builder.radius; this.coords = new Coords(x, y); } @@ -60,8 +55,8 @@ public int getY() { return y; } - public int getDamageFactor() { - return damageFactor; + public int getDamage() { + return damage; } public int getRadius() { @@ -77,7 +72,7 @@ public int getRadius() { public static class Builder { private int x; private int y; - private int damageFactor = 10; + private int damage = 10; private int radius = 4; public Builder x(int x) { @@ -90,8 +85,8 @@ public Builder y(int y) { return this; } - public Builder damageFactor(int damageFactor) { - this.damageFactor = damageFactor; + public Builder damage(int damage) { + this.damage = damage; return this; } diff --git a/megamek/src/megamek/server/totalwarfare/TWGameManager.java b/megamek/src/megamek/server/totalwarfare/TWGameManager.java index 57c86de9f08..05e4fdb164d 100644 --- a/megamek/src/megamek/server/totalwarfare/TWGameManager.java +++ b/megamek/src/megamek/server/totalwarfare/TWGameManager.java @@ -20306,17 +20306,16 @@ private void explosionDamage(Coords position, Vector vDesc, Entity e, in } private void orbitalBombardmentDamage(Coords position, Vector vDesc, Entity e, int damage) { + var distanceFromGroundZero = e.getPosition().distance(position); while (damage > 0) { int cluster = Math.min(5, damage); int table = ToHitData.HIT_NORMAL; int hitSide = ToHitData.SIDE_RANDOM; + if (e instanceof ProtoMek) { table = ToHitData.HIT_SPECIAL_PROTO; - } else if (e instanceof Mek) { - table = ToHitData.HIT_ABOVE; - hitSide = e.sideTable(position); - } else if (e instanceof Tank) { - if (e.isAirborneVTOLorWIGE()) { + } else if ((e instanceof Mek) || (e instanceof Tank)) { + if (distanceFromGroundZero == 0) { table = ToHitData.HIT_ABOVE; } hitSide = e.sideTable(position); @@ -20409,20 +20408,19 @@ public void addScheduledOrbitalBombardment(OrbitalBombardment orbitalBombardment } private void drawOrbitalBombardmentOnBoard(OrbitalBombardment orbitalBombardment) { - for (var coord : orbitalBombardment.getCoords().allAtDistanceOrLess(orbitalBombardment.getRadius())) { getGame().getBoard().addSpecialHexDisplay( coord, new SpecialHexDisplay( SpecialHexDisplay.Type.ORBITAL_BOMBARDMENT, getGame().getRoundCount(), - getGame().getPlayersList().get(0), // It doesnt matter which is the player, but I dont want to cause a nullpointer. + getGame().getPlayersList().get(0), // It doesnt the player, I just dont want to cause a nullpointer. "Orbital bombardment incoming, landing on round " + getGame().getRoundCount() + ", fired by an unknown warship in orbit", SpecialHexDisplay.SHD_OBSCURED_ALL) ); - sendChangedHex(coord); + sendChangedHex(coords); } } @@ -20447,13 +20445,21 @@ void resolveScheduledNukes() { * explode any scheduled orbital bombardments */ void resolveScheduledOrbitalBombardments() { + if (scheduledOrbitalBombardment.isEmpty()) { + return; + } + + var r = new Report(1303, Report.PUBLIC); + r.indent(); + r.newlines = 2; + getvPhaseReport().add(r); + scheduledOrbitalBombardment - .forEach(ob -> doOrbitalBombardment(new Coords(ob.getX(), ob.getY()), ob.getDamageFactor(), ob.getRadius())); + .forEach(ob -> doOrbitalBombardment(new Coords(ob.getX(), ob.getY()), ob.getDamage(), ob.getRadius())); scheduledOrbitalBombardment.clear(); getGame().resetOrbitalBombardmentAttacks(); - // All right. We're done. - var r = new Report(1301, Report.PUBLIC); + r = new Report(1301, Report.PUBLIC); r.indent(); r.newlines = 2; getvPhaseReport().add(r); @@ -20480,10 +20486,10 @@ public void doNuclearExplosion(Coords position, int nukeType, Vector vDe /** * do an orbital bombardment * @param position the position that will be hit by the orbital bombardment - * @param damageFactor the factor by which the base damage will be multiplied + * @param damage the damage of the bombardment at target hex * @param radius the radius which the damage will hit */ - public void doOrbitalBombardment(Coords position, int damageFactor, int radius) { + public void doOrbitalBombardment(Coords position, int damage, int radius) { Report r = new Report(1300, Report.PUBLIC); r.indent(); r.add(position.getBoardNum(), true); @@ -20494,9 +20500,8 @@ public void doOrbitalBombardment(Coords position, int damageFactor, int radius) Vector tmpV = new Vector<>(); Vector blastedUnitsVec = new Vector<>(); int range = radius + 1; - int baseDamage = damageFactor * 10; - var degradation = baseDamage / range; - doExplosion(baseDamage, degradation , false, position, true, tmpV, + var degradation = damage / range; + doExplosion(damage, degradation , false, position, true, tmpV, blastedUnitsVec, -1, true); Report.indentAll(tmpV, 2); getvPhaseReport().addAll(tmpV); From 4d3ecdabe690ba632810c2793102528a1c2a7b84 Mon Sep 17 00:00:00 2001 From: Coppio Date: Tue, 12 Nov 2024 13:58:11 -0300 Subject: [PATCH 08/20] chore: gm improving gm commands, removing unnecessary options --- megamek/i18n/megamek/common/options/messages.properties | 2 -- megamek/src/megamek/common/options/GameOptions.java | 1 - megamek/src/megamek/common/options/OptionsConstants.java | 1 - megamek/src/megamek/server/commands/KillCommand.java | 4 ---- .../server/commands/OrbitalBombardmentCommand.java | 8 ++++---- 5 files changed, 4 insertions(+), 12 deletions(-) diff --git a/megamek/i18n/megamek/common/options/messages.properties b/megamek/i18n/megamek/common/options/messages.properties index b99011e2e51..17f1fe80a6e 100644 --- a/megamek/i18n/megamek/common/options/messages.properties +++ b/megamek/i18n/megamek/common/options/messages.properties @@ -140,8 +140,6 @@ GameOptionsInfo.option.allow_nukes.displayableName=Allow command-line nukes. GameOptionsInfo.option.allow_nukes.description=This must be checked to allow players to throw nukes from the command line. If this is not checked, nukes are still available as advanced munitions. GameOptionsInfo.option.really_allow_nukes.displayableName=REALLY allow command-line nukes. GameOptionsInfo.option.really_allow_nukes.description=This must be checked to allow players to throw nukes from the command line. If this is not checked, nukes are still available as advanced munitions. -GameOptionsInfo.option.gm_can_kill_units.displayableName=Allow command-line kill (GM only). -GameOptionsInfo.option.gm_can_kill_units.description=This must be checked to allow the GM to kill units using command line. If this is not checked, the command is disabled. GameOptionsInfo.group.advancedRules.displayableName=Advanced Rules diff --git a/megamek/src/megamek/common/options/GameOptions.java b/megamek/src/megamek/common/options/GameOptions.java index c780f42b731..56875bb6c21 100755 --- a/megamek/src/megamek/common/options/GameOptions.java +++ b/megamek/src/megamek/common/options/GameOptions.java @@ -93,7 +93,6 @@ public synchronized void initialize() { addOption(allowed, OptionsConstants.ALLOWED_NO_CLAN_PHYSICAL, false); addOption(allowed, OptionsConstants.ALLOWED_ALLOW_NUKES, false); addOption(allowed, OptionsConstants.ALLOWED_REALLY_ALLOW_NUKES, false); - addOption(allowed, OptionsConstants.ALLOWED_GM_CAN_KILL_UNITS, false); IBasicOptionGroup advancedRules = addGroup("advancedRules"); addOption(advancedRules, OptionsConstants.ADVANCED_MINEFIELDS, false); diff --git a/megamek/src/megamek/common/options/OptionsConstants.java b/megamek/src/megamek/common/options/OptionsConstants.java index 5af5898077b..6850acaf3fb 100644 --- a/megamek/src/megamek/common/options/OptionsConstants.java +++ b/megamek/src/megamek/common/options/OptionsConstants.java @@ -330,7 +330,6 @@ public class OptionsConstants { public static final String ALLOWED_NO_CLAN_PHYSICAL = "no_clan_physical"; public static final String ALLOWED_ALLOW_NUKES = "allow_nukes"; public static final String ALLOWED_REALLY_ALLOW_NUKES = "really_allow_nukes"; - public static final String ALLOWED_GM_CAN_KILL_UNITS = "gm_can_kill_units"; public static final String ADVANCED_MINEFIELDS = "minefields"; public static final String ADVANCED_HIDDEN_UNITS = "hidden_units"; public static final String ADVANCED_BLACK_ICE= "black_ice"; diff --git a/megamek/src/megamek/server/commands/KillCommand.java b/megamek/src/megamek/server/commands/KillCommand.java index bc436c49380..45f2b6d7dca 100644 --- a/megamek/src/megamek/server/commands/KillCommand.java +++ b/megamek/src/megamek/server/commands/KillCommand.java @@ -45,10 +45,6 @@ public KillCommand(Server server, TWGameManager gameManager) { public void run(int connId, String[] args) { // Check to make sure gm kills are allowed! - if (!(server.getGame().getOptions().booleanOption(OptionsConstants.ALLOWED_GM_CAN_KILL_UNITS))) { - server.sendServerChat(connId, "Command-line kill is not enabled in this game."); - return; - } if (!isGM(connId)) { server.sendServerChat(connId, "You are not a Game Master."); return; diff --git a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java index c3d31e2202f..5424526f93d 100644 --- a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java +++ b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java @@ -35,12 +35,12 @@ public OrbitalBombardmentCommand(Server server, TWGameManager gameManager) { super(server, "ob", "GM Drops a bomb onto the board doing of 100 damage with a 3 hex radius, to be exploded at" + "the end of the next weapons attack phase." + "Allowed formats:"+ - "/bomb and" + - "/bomb [factor=10] [radius=4]" + - "the damage at impact point is 10 times the factor, default is 10. " + + "/ob and" + + "/ob [factor=#] [radius=#]" + + "the damage at impact point is the factor times 10, default factor value is 10. " + "and hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23), the explosion blast radius default " + "is equal to 4, it automatically applies a linear damage dropoff each hex away from the center." + - " All parameters in square brackets may be ommited. " + + " All parameters in square brackets may be omitted. " + " Example: /ob 10 10 factor=12 "); this.gameManager = gameManager; } From 36b6b37338f76d5b293b352262075af51a6f5700 Mon Sep 17 00:00:00 2001 From: Coppio Date: Thu, 14 Nov 2024 01:33:17 -0300 Subject: [PATCH 09/20] feat: commands need a second pass for test and eval --- .../i18n/megamek/client/messages.properties | 4 +- .../megamek/client/messages_es.properties | 3 +- .../megamek/client/messages_ru.properties | 3 +- .../megamek/common/report-messages.properties | 3 +- .../client/ui/swing/CommonMenuBar.java | 5 - .../src/megamek/client/ui/swing/MapMenu.java | 144 +++++++++++++---- .../client/ui/swing/MovementDisplay.java | 37 +++-- .../client/ui/swing/boardview/BoardView.java | 37 +++++ .../swing/boardview/TerrainShadowHelper.java | 8 +- .../gmCommands/GamemasterCommandPanel.java | 82 ++++++++++ .../client/ui/swing/minimap/Minimap.java | 3 + .../ui/swing/tileset/TilesetManager.java | 8 + megamek/src/megamek/common/Board.java | 29 +++- megamek/src/megamek/common/Entity.java | 10 ++ megamek/src/megamek/common/Game.java | 28 +++- .../src/megamek/common/SpecialHexDisplay.java | 19 +-- .../common/weapons/AreaEffectHelper.java | 19 ++- .../commands/ChangeOwnershipCommand.java | 67 ++++---- .../server/commands/ChangeWeatherCommand.java | 98 ++++++------ .../server/commands/DisasterCommand.java | 148 +++++++++++++++--- .../server/commands/FirestarterCommand.java | 81 ++++++++++ .../server/commands/FirestormCommand.java | 103 ++++++++++++ .../commands/GamemasterServerCommand.java | 145 +++++++++++++++++ megamek/src/megamek/server/commands/IsGM.java | 13 -- .../megamek/server/commands/KillCommand.java | 52 +++--- .../commands/OrbitalBombardmentCommand.java | 102 +++++------- .../server/commands/RemoveSmokeCommand.java | 36 ++--- .../server/commands/arguments/Argument.java | 22 +++ .../commands/arguments/EnumArgument.java | 44 ++++++ .../commands/arguments/IntegerArgument.java | 63 ++++++++ .../server/props/OrbitalBombardment.java | 10 +- .../server/totalwarfare/TWGameManager.java | 93 ++++++----- 32 files changed, 1149 insertions(+), 370 deletions(-) create mode 100644 megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java create mode 100644 megamek/src/megamek/server/commands/FirestarterCommand.java create mode 100644 megamek/src/megamek/server/commands/FirestormCommand.java create mode 100644 megamek/src/megamek/server/commands/GamemasterServerCommand.java delete mode 100644 megamek/src/megamek/server/commands/IsGM.java create mode 100644 megamek/src/megamek/server/commands/arguments/Argument.java create mode 100644 megamek/src/megamek/server/commands/arguments/EnumArgument.java create mode 100644 megamek/src/megamek/server/commands/arguments/IntegerArgument.java diff --git a/megamek/i18n/megamek/client/messages.properties b/megamek/i18n/megamek/client/messages.properties index 4c96ba383f0..9cc5a513173 100644 --- a/megamek/i18n/megamek/client/messages.properties +++ b/megamek/i18n/megamek/client/messages.properties @@ -2693,7 +2693,6 @@ MovementDisplay.moveLowerElevation=Go Down MovementDisplay.BackWardsElevationChange=Moving Backwards over an elevation change.\n MovementDisplay.CarefulStand.title=Careful Stand? MovementDisplay.CarefulStand.message=Do you wish to use careful stand?\n -MovementDisplay.Traitor=Traitor Unit MovementDisplay.NotUpToSpeed=Selected unit cannot run/flank because it has poor performance and is not up to speed MovementDisplay.UpToSpeed=Selected unit is up to speed so it can run/flank MovementDisplay.UnjamRAC.title=Unjam? @@ -4630,6 +4629,9 @@ CMVPanel.font=Font: Gamemaster.Gamemaster=Gamemaster Gamemaster.EditDamage=Edit Damage Gamemaster.Configure=Configure +Gamemaster.Traitor=Traitor Unit +Gamemaster.SpecialCommands=Special Commands +Gamemaster.KillUnit=Kill Unit # Scenario Chooser ScenarioChooser.title=Choose Scenario diff --git a/megamek/i18n/megamek/client/messages_es.properties b/megamek/i18n/megamek/client/messages_es.properties index 086d314aee1..98e1e7aeb78 100644 --- a/megamek/i18n/megamek/client/messages_es.properties +++ b/megamek/i18n/megamek/client/messages_es.properties @@ -2438,7 +2438,6 @@ MovementDisplay.moveLowerElevation=Bajar MovementDisplay.BackWardsElevationChange=Moverse hacia atrás sobre un cambio de elevación.\n MovementDisplay.CarefulStand.title=¿Mantenerse con Precaución? MovementDisplay.CarefulStand.message=¿Desea Mantenerse con Precaución?\n -MovementDisplay.Traitor=Unidad Traidora MovementDisplay.NotUpToSpeed=La unidad seleccionada no puede correr/flanquear porque tiene un rendimiento deficiente y no está al día MovementDisplay.UpToSpeed=La unidad seleccionada está al día para que pueda correr/flanquear MovementDisplay.UnjamRAC.title=¿Destrabar? @@ -4267,3 +4266,5 @@ ForceGeneratorDialog.reinforced=Reforzado\ ForceGeneratorDialog.understrength=Más Débiles\ ForceGeneratorDialog.default=Predeterminado ForceGeneratorDialog.noCrew=Sin tripulación + +Gamemaster.Traitor=Unidad Traidora \ No newline at end of file diff --git a/megamek/i18n/megamek/client/messages_ru.properties b/megamek/i18n/megamek/client/messages_ru.properties index 06812521aca..69f44bd0bed 100644 --- a/megamek/i18n/megamek/client/messages_ru.properties +++ b/megamek/i18n/megamek/client/messages_ru.properties @@ -1373,7 +1373,6 @@ MovementDisplay.moveLowerElevation=Спуститься MovementDisplay.BackWardsElevationChange=Преодоление смены уровня высоты реверсом хода.\n MovementDisplay.CarefulStand.title=Использовать осторожную стойку? MovementDisplay.CarefulStand.message=Хотите ли вы использовать осторожную стойку?\n -MovementDisplay.Traitor=Юнит предатель MovementDisplay.NotUpToSpeed=Выбранный юнит не может бежать/ехать быстро потому что у него плохая форма и он не достигнет скорости MovementDisplay.UpToSpeed=Выбранному юниту хватает скорости и он может бежать/ехать быстро MovementDisplay.UnjamRAC.title=Расклинить? @@ -2258,3 +2257,5 @@ BotConfigDialog.princessHelp.title=Справка по Принцессе SavePrincessDialog.question=Сохранить изменения в эту конфигурацию? SavePrincessDialog.saveTargets=Сохранить список стратегичеких целей? + +Gamemaster.Traitor=Юнит предатель \ No newline at end of file diff --git a/megamek/i18n/megamek/common/report-messages.properties b/megamek/i18n/megamek/common/report-messages.properties index 20be24c6ee5..5bb6ad59327 100755 --- a/megamek/i18n/megamek/common/report-messages.properties +++ b/megamek/i18n/megamek/common/report-messages.properties @@ -56,8 +56,9 @@ 1242=no effect #1300s - Orbital Bombardment related -1300=An orbital bombardment hit hex !!! +1300=Orbital bombardment hit hex !!! 1301=End of orbital bombardment resolution +1302= has commenced an orbital bombardment, it will land at the end of the next weapons phase at hex . # 1500s - ammo handling related 1500= () selected diff --git a/megamek/src/megamek/client/ui/swing/CommonMenuBar.java b/megamek/src/megamek/client/ui/swing/CommonMenuBar.java index a79418fee26..b992fc2d72b 100644 --- a/megamek/src/megamek/client/ui/swing/CommonMenuBar.java +++ b/megamek/src/megamek/client/ui/swing/CommonMenuBar.java @@ -356,11 +356,6 @@ public CommonMenuBar() { toggleCFWarning.setToolTipText(Messages.getString("CommonMenuBar.viewToggleCFWarningToolTip")); toggleCFWarning.setSelected(GUIP.getShowCFWarnings()); - /* - * TODO: moveTraitor = createMenuItem(menu, - * getString("CommonMenuBar.moveTraitor"), MovementDisplay.MOVE_TRAITOR); - */ - // Create the Help menu menu = new JMenu(Messages.getString("CommonMenuBar.HelpMenu")); menu.setMnemonic(VK_H); diff --git a/megamek/src/megamek/client/ui/swing/MapMenu.java b/megamek/src/megamek/client/ui/swing/MapMenu.java index 3fad530711a..743528ea0d2 100644 --- a/megamek/src/megamek/client/ui/swing/MapMenu.java +++ b/megamek/src/megamek/client/ui/swing/MapMenu.java @@ -24,22 +24,14 @@ import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import java.math.BigInteger; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Objects; -import java.util.StringTokenizer; -import java.util.Vector; - -import javax.swing.JMenu; -import javax.swing.JMenuItem; -import javax.swing.JPopupMenu; -import javax.swing.UIManager; +import java.util.*; + +import javax.swing.*; import megamek.client.Client; import megamek.client.event.BoardViewEvent; import megamek.client.ui.Messages; +import megamek.client.ui.swing.gmCommands.GamemasterCommandPanel; import megamek.client.ui.swing.lobby.LobbyUtility; import megamek.common.*; import megamek.common.Building.DemolitionCharge; @@ -54,6 +46,8 @@ import megamek.common.weapons.other.CLFireExtinguisher; import megamek.common.weapons.other.ISFireExtinguisher; import megamek.logging.MMLogger; +import megamek.server.Server; +import megamek.server.commands.*; /** * Context menu for the board. @@ -209,23 +203,6 @@ private boolean createMenu() { } } - - // Traitor Command - JMenuItem item = new JMenuItem(Messages.getString("MovementDisplay.Traitor")); - item.setActionCommand(MovementDisplay.MoveCommand.MOVE_TRAITOR.getCmd()); - item.addActionListener(evt -> { - try { - if (currentPanel instanceof MovementDisplay) { - ((MovementDisplay) currentPanel).actionPerformed(evt); - } - } catch (Exception ex) { - logger.error(ex, ""); - } - }); - - if (game.getPhase().isMovement()) { - add(item); - } } menu = touchOffExplosivesMenu(); @@ -433,10 +410,15 @@ private JMenu createGamemasterMenu() { JMenu dmgMenu = new JMenu(Messages.getString("Gamemaster.EditDamage")); JMenu cfgMenu = new JMenu(Messages.getString("Gamemaster.Configure")); + JMenu traitorMenu = new JMenu(Messages.getString("Gamemaster.Traitor")); + JMenu killMenu = new JMenu(Messages.getString("Gamemaster.KillUnit")); + JMenu specialCommandsMenu = createGMSpecialCommandsMenu(); var entities = client.getGame().getEntitiesVector(coords); for (Entity entity : entities) { dmgMenu.add(createUnitEditorMenuItem(entity)); cfgMenu.add(createCustomMekMenuItem(entity)); + traitorMenu.add(createTraitorMenuItem(entity)); + killMenu.add(createKillMenuItem(entity)); } if (dmgMenu.getItemCount() != 0) { menu.add(dmgMenu); @@ -444,10 +426,41 @@ private JMenu createGamemasterMenu() { if (cfgMenu.getItemCount() != 0) { menu.add(cfgMenu); } + if (traitorMenu.getItemCount() != 0) { + menu.add(traitorMenu); + } + if (killMenu.getItemCount() != 0) { + menu.add(killMenu); + } + menu.add(specialCommandsMenu); return menu; } } + private record Tuple(String name, GamemasterServerCommand command) {} + + private JMenu createGMSpecialCommandsMenu() { + JMenu menu = new JMenu(Messages.getString("Gamemaster.SpecialCommands")); + var commands = List.of( + new Tuple("Kill Unit", new KillCommand(null, null)), + new Tuple("Change Ownership", new ChangeOwnershipCommand(null, null)), + new Tuple("Change Weather", new ChangeWeatherCommand(null, null)), + new Tuple("Disasters", new DisasterCommand(null, null)), + new Tuple("Orbital Bombardment", new OrbitalBombardmentCommand(null, null)), + new Tuple("Remove Smoke", new RemoveSmokeCommand(null, null)), + new Tuple("Firestarter", new FirestarterCommand(null, null)), + new Tuple("Firestorm", new FirestormCommand(null, null)) + ); + + for (var cmd : commands) { + JMenuItem item = new JMenuItem(cmd.name()); + item.addActionListener(evt -> new GamemasterCommandPanel(gui.getFrame(), gui, cmd.command()).setVisible(true)); + menu.add(item); + } + + return menu; + } + JMenuItem createCustomMekMenuItem(Entity entity) { JMenuItem item = new JMenuItem(entity.getDisplayName()); item.addActionListener(evt -> { @@ -473,6 +486,79 @@ JMenuItem createUnitEditorMenuItem(Entity entity) { return item; } + private JMenuItem createTraitorMenuItem(Entity en) { + // Traitor Command + JMenuItem item = new JMenuItem(Messages.getString("Gamemaster.Traitor") + " " + en.getDisplayName()); + item.addActionListener(evt -> { + gui.getBoardView().setShouldIgnoreKeys(false); + var players = client.getGame().getPlayersList(); + Integer[] playerIds = new Integer[players.size() - 1]; + String[] playerNames = new String[players.size() - 1]; + String[] options = new String[players.size() - 1]; + + Player currentOwner = en.getOwner(); + // Loop through the players vector and fill in the arrays + int idx = 0; + for (var player : players) { + if (player.getName().equals(currentOwner.getName()) + || (player.getTeam() == Player.TEAM_UNASSIGNED)) { + continue; + } + playerIds[idx] = player.getId(); + playerNames[idx] = player.getName(); + options[idx] = player.getName() + " (ID: " + player.getId() + ")"; + idx++; + } + + // No players available? + if (idx == 0) { + JOptionPane.showMessageDialog(gui.getFrame(), + "No players available. Units cannot be traitored to players " + + "that aren't assigned to a team."); + return; + } + + // Dialog for choosing which player to transfer to + String option = (String) JOptionPane.showInputDialog(gui.getFrame(), + "Choose the player to gain ownership of this unit (" + en.getDisplayName() + ") when it turns traitor", + "Traitor", JOptionPane.QUESTION_MESSAGE, null, + options, options[0]); + + // Verify that we have a valid option... + if (option != null) { + // Now that we've selected a player, correctly associate the ID and name + int id = playerIds[Arrays.asList(options).indexOf(option)]; + String name = playerNames[Arrays.asList(options).indexOf(option)]; + + // And now we perform the actual transfer + int confirm = JOptionPane.showConfirmDialog( + gui.getFrame(), + en.getDisplayName() + " will switch to " + name + + "'s side at the end of this turn. Are you sure?", + "Confirm", + JOptionPane.YES_NO_OPTION); + if (confirm == JOptionPane.YES_OPTION) { + client.sendChat(String.format("/changeOwner %d %d", en.getId(), id)); + } + } + }); + + return item; + } + + private JMenuItem createKillMenuItem(Entity en) { + JMenuItem item = new JMenuItem(Messages.getString("Gamemaster.KillUnit") + " " + en.getDisplayName()); + item.addActionListener(evt -> { + int confirm = JOptionPane.showConfirmDialog( + gui.getFrame(), + "Are you sure you want to kill " + en.getDisplayName() + "?", "Confirm", JOptionPane.YES_NO_OPTION); + if (confirm == JOptionPane.YES_OPTION) { + client.sendChat(String.format("/kill %d", en.getId())); + } + }); + return item; + } + private JMenu createSelectMenu() { JMenu menu = new JMenu("Select"); // add select options diff --git a/megamek/src/megamek/client/ui/swing/MovementDisplay.java b/megamek/src/megamek/client/ui/swing/MovementDisplay.java index 57b1492f687..47ef702b5f8 100644 --- a/megamek/src/megamek/client/ui/swing/MovementDisplay.java +++ b/megamek/src/megamek/client/ui/swing/MovementDisplay.java @@ -19,20 +19,6 @@ */ package megamek.client.ui.swing; -import static megamek.common.MiscType.F_CHAFF_POD; -import static megamek.common.options.OptionsConstants.ADVGRNDMOV_TACOPS_ZIPLINES; - -import java.awt.Color; -import java.awt.event.ActionEvent; -import java.awt.event.InputEvent; -import java.awt.event.MouseEvent; -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; - import megamek.client.event.BoardViewEvent; import megamek.client.ui.Messages; import megamek.client.ui.SharedUtility; @@ -62,6 +48,19 @@ import megamek.common.preference.PreferenceManager; import megamek.logging.MMLogger; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.InputEvent; +import java.awt.event.MouseEvent; +import java.util.List; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static megamek.common.MiscType.F_CHAFF_POD; +import static megamek.common.options.OptionsConstants.ADVGRNDMOV_TACOPS_ZIPLINES; + public class MovementDisplay extends ActionPhaseDisplay { private static final MMLogger logger = MMLogger.create(MovementDisplay.class); @@ -230,7 +229,7 @@ public String toString() { } public String getHotKeyDesc() { - String result = ""; + String result; String msgNext = Messages.getString("Next"); String msgPrevious = Messages.getString("Previous"); @@ -5297,11 +5296,15 @@ public synchronized void actionPerformed(ActionEvent ev) { String[] playerNames = new String[players.size() - 1]; String[] options = new String[players.size() - 1]; Entity e = ce(); + if (e == null) { + return; + } + Player currentOwner = e.getOwner(); // Loop through the players vector and fill in the arrays int idx = 0; for (var player : players) { - if (player.getName().equals(clientgui.getClient().getLocalPlayer().getName()) + if (player.getName().equals(currentOwner.getName()) || (player.getTeam() == Player.TEAM_UNASSIGNED)) { continue; } @@ -5321,7 +5324,7 @@ public synchronized void actionPerformed(ActionEvent ev) { // Dialog for choosing which player to transfer to String option = (String) JOptionPane.showInputDialog(clientgui.getFrame(), - "Choose the player to gain ownership of this unit when it turns traitor", + "Choose the player to gain ownership of this unit (" + e.getDisplayName() + ") when it turns traitor", "Traitor", JOptionPane.QUESTION_MESSAGE, null, options, options[0]); diff --git a/megamek/src/megamek/client/ui/swing/boardview/BoardView.java b/megamek/src/megamek/client/ui/swing/boardview/BoardView.java index 1a5d79f083a..50c9e923c09 100644 --- a/megamek/src/megamek/client/ui/swing/boardview/BoardView.java +++ b/megamek/src/megamek/client/ui/swing/boardview/BoardView.java @@ -87,6 +87,7 @@ import megamek.common.util.ImageUtil; import megamek.common.util.fileUtils.MegaMekFile; import megamek.logging.MMLogger; +import megamek.server.props.OrbitalBombardment; /** * Displays the board; lets the user scroll around and select points on it. @@ -637,6 +638,7 @@ public void mouseDragged(MouseEvent e) { SpecialHexDisplay.Type.BOMB_HIT.init(); SpecialHexDisplay.Type.BOMB_DRIFT.init(); SpecialHexDisplay.Type.PLAYER_NOTE.init(); + SpecialHexDisplay.Type.ORBITAL_BOMBARDMENT.init(); fovHighlightingAndDarkening = new FovHighlightingAndDarkening(this); @@ -1454,6 +1456,38 @@ private Mounted selectedWeapon() { return (clientgui != null) ? clientgui.getDisplayedWeapon().orElse(null) : null; } + private void drawOrbitalBombardmentHexes(Graphics boardGraphics) { + Image orbitalBombardmentImage = tileManager.getOrbitalBombardmentImage(); + Rectangle view = boardGraphics.getClipBounds(); + boolean justDraw = false; + // Compute the origin of the viewing area + int drawX = (view.x / (int) (HEX_WC * scale)) - 1; + int drawY = (view.y / (int) (HEX_H * scale)) - 1; + + // Compute size of viewing area + int drawWidth = (view.width / (int) (HEX_WC * scale)) + 3; + int drawHeight = (view.height / (int) (HEX_H * scale)) + 3; + + // Draw incoming artillery sprites - requires server to update client's + // view of game + for (Enumeration attacks = game.getOrbitalBombardmentAttacks(); attacks.hasMoreElements();) { + final OrbitalBombardment orbitalBombardment = attacks.nextElement(); + final Coords c = new Coords(orbitalBombardment.getX(), orbitalBombardment.getY()); + // Is the Coord within the viewing area? + boolean insideViewArea = ((c.getX() >= drawX) && (c.getX() <= (drawX + drawWidth)) + && (c.getY() >= drawY) && (c.getY() <= (drawY + drawHeight))); + if (insideViewArea) { + Point p = getHexLocation(c); + boardGraphics.drawImage(getScaledImage(orbitalBombardmentImage, true), p.x, p.y, boardPanel); + for (Coords c2 : c.allAtDistanceOrLess(orbitalBombardment.getRadius())) { + Point p2 = getHexLocation(c2); + boardGraphics.drawImage(getScaledImage(orbitalBombardmentImage, true), p2.x, p2.y, boardPanel); + } + } + + } + } + /** * Display artillery modifier in pretargeted hexes */ @@ -1639,6 +1673,9 @@ public BufferedImage getEntireBoardImage(boolean ignoreUnits, boolean useBaseZoo // Artillery targets drawArtilleryHexes(boardGraph); + // draw Orbital Bombardment targets; + drawOrbitalBombardmentHexes(boardGraph); + // draw highlight border drawSprite(boardGraph, highlightSprite); diff --git a/megamek/src/megamek/client/ui/swing/boardview/TerrainShadowHelper.java b/megamek/src/megamek/client/ui/swing/boardview/TerrainShadowHelper.java index 9b04715eb81..2de4ebb2d26 100644 --- a/megamek/src/megamek/client/ui/swing/boardview/TerrainShadowHelper.java +++ b/megamek/src/megamek/client/ui/swing/boardview/TerrainShadowHelper.java @@ -185,9 +185,11 @@ BufferedImage updateShadowMap() { surrounded = false; } else { Hex nhex = board.getHex(c.translated(dir)); - int lv = nhex.getLevel(); - if (lv < level) { - surrounded = false; + if (nhex != null) { + int lv = nhex.getLevel(); + if (lv < level) { + surrounded = false; + } } } } diff --git a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java new file mode 100644 index 00000000000..f85f1b7b55d --- /dev/null +++ b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java @@ -0,0 +1,82 @@ +package megamek.client.ui.swing.gmCommands; + +import megamek.client.IClient; +import megamek.client.ui.swing.ClientGUI; +import megamek.server.commands.GamemasterServerCommand; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.EnumArgument; +import megamek.server.commands.arguments.IntegerArgument; + +import javax.swing.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +// JPanel wrapper for game master commands +public class GamemasterCommandPanel extends JDialog { + private final GamemasterServerCommand command; + private final ClientGUI client; + + public GamemasterCommandPanel(JFrame parent, ClientGUI client, GamemasterServerCommand command) { + super(parent, command.getName(), true); + this.command = command; + this.client = client; + setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); + + JLabel helpLabel = new JLabel(command.getHelp()); + add(helpLabel); + + List> arguments = command.defineArguments(); + Map argumentComponents = new HashMap<>(); + + for (Argument argument : arguments) { + JLabel label = new JLabel(argument.getName() + ":"); + add(label); + + if (argument instanceof IntegerArgument intArg) { + JSpinner spinner = new JSpinner(new SpinnerNumberModel( + intArg.hasDefaultValue() ? intArg.getValue() : 0, + intArg.getMinValue(), + intArg.getMaxValue(), + 1)); + add(spinner); + argumentComponents.put(argument.getName(), spinner); + } else if (argument instanceof EnumArgument enumArg) { + JComboBox comboBox = new JComboBox<>(); + for (Enum constant : enumArg.getEnumType().getEnumConstants()) { + comboBox.addItem(constant.name()); + } + if (enumArg.getValue() != null) { + comboBox.setSelectedItem(enumArg.getValue().name()); + } + add(comboBox); + argumentComponents.put(argument.getName(), comboBox); + } + } + + JButton executeButton = new JButton("Execute Command"); + executeButton.addActionListener(e -> executeCommand(argumentComponents)); + add(executeButton); + + pack(); + setLocationRelativeTo(parent); + } + + private void executeCommand(Map argumentComponents) { + List> arguments = command.defineArguments(); + String[] args = new String[arguments.size()]; + + for (int i = 0; i < arguments.size(); i++) { + Argument argument = arguments.get(i); + JComponent component = argumentComponents.get(argument.getName()); + + if (component instanceof JSpinner) { + args[i] = argument.getName() + "=" + ((JSpinner) component).getValue().toString(); + } else if (component instanceof JComboBox) { + args[i] = argument.getName() + "=" + Objects.requireNonNull(((JComboBox) component).getSelectedItem()); + } + } + client.getClient().sendChat("/" + command.getName() + " " + String.join(" ", args)); + } +} diff --git a/megamek/src/megamek/client/ui/swing/minimap/Minimap.java b/megamek/src/megamek/client/ui/swing/minimap/Minimap.java index 7aa0f11da92..10df3f5a6ba 100644 --- a/megamek/src/megamek/client/ui/swing/minimap/Minimap.java +++ b/megamek/src/megamek/client/ui/swing/minimap/Minimap.java @@ -536,6 +536,9 @@ private void drawMap(boolean forceDraw) { for (int j = 0; j < board.getWidth(); j++) { for (int k = 0; k < board.getHeight(); k++) { Hex h = board.getHex(j, k); + if (h == null) { + continue; + } if (dirtyMap || dirty[j / 10][k / 10]) { gg.setColor(terrainColor(h)); if (h.containsTerrain(SPACE)) { diff --git a/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java b/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java index b051ee2b2e9..1a3ec4ff91e 100644 --- a/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java +++ b/megamek/src/megamek/client/ui/swing/tileset/TilesetManager.java @@ -77,6 +77,8 @@ public class TilesetManager implements IPreferenceChangeListener { private static final String FILENAME_ARTILLERY_ADJUSTED_IMAGE = "artyadj.gif"; private static final String FILENAME_ARTILLERY_INCOMING_IMAGE = "artyinc.gif"; + private static final String FILENAME_ORBITAL_BOMBARDMENT_INCOMING_IMAGE = "obinc.gif"; + public static final int ARTILLERY_AUTOHIT = 0; public static final int ARTILLERY_ADJUSTED = 1; public static final int ARTILLERY_INCOMING = 2; @@ -106,6 +108,7 @@ public class TilesetManager implements IPreferenceChangeListener { private Image artilleryAutohit; private Image artilleryAdjusted; private Image artilleryIncoming; + private Image orbitalBombardmentIncoming; /** * Hexes under the effects of ECM have a shaded "static" image displayed, @@ -414,6 +417,10 @@ public Image getEcmStaticImage(Color tint) { return image; } + public Image getOrbitalBombardmentImage() { + return orbitalBombardmentIncoming; + } + public Image getArtilleryTarget(int which) { switch (which) { case ARTILLERY_AUTOHIT: @@ -486,6 +493,7 @@ public void loadNeededImages(Game game) { artilleryAutohit = LoadSpecificImage(Configuration.hexesDir(), FILENAME_ARTILLERY_AUTOHIT_IMAGE); artilleryAdjusted = LoadSpecificImage(Configuration.hexesDir(), FILENAME_ARTILLERY_ADJUSTED_IMAGE); artilleryIncoming = LoadSpecificImage(Configuration.hexesDir(), FILENAME_ARTILLERY_INCOMING_IMAGE); + orbitalBombardmentIncoming = LoadSpecificImage(Configuration.hexesDir(), FILENAME_ORBITAL_BOMBARDMENT_INCOMING_IMAGE); started = true; } diff --git a/megamek/src/megamek/common/Board.java b/megamek/src/megamek/common/Board.java index 66bd8facb55..f3bdc36db1f 100644 --- a/megamek/src/megamek/common/Board.java +++ b/megamek/src/megamek/common/Board.java @@ -21,11 +21,7 @@ package megamek.common; import static java.util.stream.Collectors.toList; -import static megamek.common.SpecialHexDisplay.Type.ARTILLERY_DRIFT; -import static megamek.common.SpecialHexDisplay.Type.ARTILLERY_MISS; -import static megamek.common.SpecialHexDisplay.Type.BOMB_DRIFT; -import static megamek.common.SpecialHexDisplay.Type.BOMB_HIT; -import static megamek.common.SpecialHexDisplay.Type.BOMB_MISS; +import static megamek.common.SpecialHexDisplay.Type.*; import java.io.*; import java.util.*; @@ -1752,7 +1748,7 @@ public Hashtable> getSpecialHexDisplayTabl public void setSpecialHexDisplayTable(Hashtable> shd) { Hashtable> temp = new Hashtable<>(); - // Grab all current ARTILLERY_MISS instances + // Grab all current ARTILLERY_MISS and ARTILLERY_DRIFT instances for (Map.Entry> e : specialHexes.entrySet()) { for (SpecialHexDisplay special : e.getValue()) { if (Set.of(ARTILLERY_MISS, ARTILLERY_DRIFT).contains(special.getType())) { @@ -2087,4 +2083,25 @@ public static int decodeCustomDeploymentZoneID(int zoneID) { public static int encodeCustomDeploymentZoneID(int zoneID) { return zoneID + NUM_ZONES_X2; } + + public void clearOrbitalBombardmentIcons() { + for (Coords coords : specialHexes.keySet()) { + removeOrbitalBombardmentIcons(coords); + } + } + + public void removeOrbitalBombardmentIcons(Coords coords) { + // Do nothing if the coords aren't on this board. + if (!this.contains(coords) || null == specialHexes.get(coords)) { + return; + } + + // Use iterator so we can remove while traversing + for (Iterator iterator = specialHexes.get(coords).iterator(); iterator.hasNext();) { + SpecialHexDisplay shd = iterator.next(); + if (ORBITAL_BOMBARDMENT.equals(shd.getType())) { + iterator.remove(); + } + } + } } diff --git a/megamek/src/megamek/common/Entity.java b/megamek/src/megamek/common/Entity.java index 06d10d45800..d54020dc530 100644 --- a/megamek/src/megamek/common/Entity.java +++ b/megamek/src/megamek/common/Entity.java @@ -4790,6 +4790,16 @@ public List getCriticalSlots(int location) { return result; } + public boolean hasUndamagedCriticalSlots() { + return IntStream.range(0, locations()) + .mapToLong(i -> getCriticalSlots(i) + .stream() + .filter(Objects::nonNull) + .filter(CriticalSlot::isHittable) + .count() + ).sum() > 0; + } + /** * @return True when this unit has a RISC Super-Cooled Myomer System (even if * the SCM is destroyed). diff --git a/megamek/src/megamek/common/Game.java b/megamek/src/megamek/common/Game.java index cd106d57c9d..55f5ea13373 100644 --- a/megamek/src/megamek/common/Game.java +++ b/megamek/src/megamek/common/Game.java @@ -15,12 +15,6 @@ */ package megamek.common; -import static java.util.stream.Collectors.toList; - -import java.io.Serializable; -import java.util.*; -import java.util.concurrent.CopyOnWriteArrayList; - import megamek.MMConstants; import megamek.Version; import megamek.client.bot.princess.BehaviorSettings; @@ -39,9 +33,16 @@ import megamek.common.weapons.AttackHandler; import megamek.logging.MMLogger; import megamek.server.SmokeCloud; +import megamek.server.props.OrbitalBombardment; import megamek.server.victory.VictoryHelper; import megamek.server.victory.VictoryResult; +import java.io.Serializable; +import java.util.*; +import java.util.concurrent.CopyOnWriteArrayList; + +import static java.util.stream.Collectors.toList; + /** * The game class is the root of all data about the game in progress. Both the * Client and the Server should have one of these objects, and it is their job @@ -113,7 +114,7 @@ public final class Game extends AbstractGame implements Serializable, PlanetaryC private Vector vibrabombs = new Vector<>(); private Vector attacks = new Vector<>(); private Vector offboardArtilleryAttacks = new Vector<>(); - + private Vector orbitalBombardmentAttacks = new Vector(); private int lastEntityId; private Vector tagInfoForTurn = new Vector<>(); @@ -2202,6 +2203,19 @@ public int removeSpecificEntityTurnsFor(Entity entity) { return turnsToRemove.size(); } + public void setOrbitalBombardmentVector(Vector v) { + orbitalBombardmentAttacks = v; + processGameEvent(new GameBoardChangeEvent(this)); + } + + public void resetOrbitalBombardmentAttacks() { + orbitalBombardmentAttacks.removeAllElements(); + } + + public Enumeration getOrbitalBombardmentAttacks() { + return orbitalBombardmentAttacks.elements(); + } + public void setArtilleryVector(Vector v) { offboardArtilleryAttacks = v; processGameEvent(new GameBoardChangeEvent(this)); diff --git a/megamek/src/megamek/common/SpecialHexDisplay.java b/megamek/src/megamek/common/SpecialHexDisplay.java index 170966e71dd..2fb11e1cac3 100644 --- a/megamek/src/megamek/common/SpecialHexDisplay.java +++ b/megamek/src/megamek/common/SpecialHexDisplay.java @@ -96,16 +96,12 @@ public boolean drawBefore() { } }, PLAYER_NOTE(new MegaMekFile(Configuration.hexesDir(), "note.png").toString()) { - @Override - public boolean drawBefore() { - return true; - } - @Override public boolean drawAfter() { return true; } - }; + }, + ORBITAL_BOMBARDMENT(new MegaMekFile(Configuration.hexesDir(), "obinc.gif").toString()); private transient Image defaultImage; private final String defaultImagePath; @@ -250,16 +246,17 @@ public int getObscuredLevel() { * @return */ public boolean isObscured(Player other) { + if (owner == null) { + return false; + } if ((obscured == SHD_OBSCURED_OWNER) && owner.equals(other)) { return false; } else if ((obscured == SHD_OBSCURED_TEAM) && (other != null) && (owner.getTeam() == other.getTeam())) { return false; - } else if (obscured == SHD_OBSCURED_ALL) { - return false; - } else { - return true; } + + return obscured != SHD_OBSCURED_ALL; } public void setObscured(int obscured) { @@ -272,7 +269,7 @@ public void setObscured(int obscured) { * display * in the appropriate phase. Other bomb- or artillery-related graphics are * optional. - * + * * @param phase * @param curRound * @param playerChecking diff --git a/megamek/src/megamek/common/weapons/AreaEffectHelper.java b/megamek/src/megamek/common/weapons/AreaEffectHelper.java index b9a4e04ca5d..32ea8900b05 100644 --- a/megamek/src/megamek/common/weapons/AreaEffectHelper.java +++ b/megamek/src/megamek/common/weapons/AreaEffectHelper.java @@ -13,19 +13,16 @@ */ package megamek.common.weapons; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Vector; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.IntStream; import megamek.common.*; import megamek.common.planetaryconditions.Atmosphere; import megamek.common.planetaryconditions.PlanetaryConditions; import megamek.logging.MMLogger; import megamek.server.totalwarfare.TWGameManager; +import org.apache.commons.lang3.IntegerRange; /** * Class containing functionality that helps out with area effect weapons. @@ -805,6 +802,14 @@ public static void applyExplosionClusterDamageToEntity(Entity entity, int damage HitData hit = entity.rollHitLocation(table, Compute.targetSideTable(position, entity)); vDesc.addAll(gameManager.damageEntity(entity, hit, cluster, false, DamageType.IGNORE_PASSENGER, false, true)); + + // If there is nothing left to destroy in the unit + if ( + entity.isDoomed() + && (!entity.hasUndamagedCriticalSlots() || entity.getRemovalCondition() == IEntityRemovalConditions.REMOVE_DEVASTATED) + ) { + break; + } damage -= cluster; } } diff --git a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java index d50836c22e2..d9ca02e4e9f 100644 --- a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java +++ b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java @@ -21,59 +21,54 @@ import megamek.common.Entity; import megamek.common.Player; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; import megamek.server.totalwarfare.TWGameManager; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + /** * The Server Command "/changeOwner" that will switch an entity's owner to another player. * * @author Luana Scoppio */ -public class ChangeOwnershipCommand extends ServerCommand implements IsGM { - - private final TWGameManager gameManager; +public class ChangeOwnershipCommand extends GamemasterServerCommand { public ChangeOwnershipCommand(Server server, TWGameManager gameManager) { super(server, + gameManager, "changeOwner", "Switches ownership of a player's entity to another player during the end phase. " - + "Usage: /changeOwner " - + "The following is an example of changing unit ID 7 to player ID 2: /changeOwner 7 2 "); - this.gameManager = gameManager; + + "Usage: /changeOwner " + + "The following is an example of changing unit ID 7 to player ID 2: /changeOwner 7 2 "); } - /** - * Run this command with the arguments supplied - * - * @see ServerCommand#run(int, String[]) - */ @Override - public void run(int connId, String[] args) { - try { - if (!isGM(connId)) { - server.sendServerChat(connId, "You are not a Game Master."); - return; - } - - int eid = Integer.parseInt(args[1]); - Entity ent = gameManager.getGame().getEntity(eid); - int pid = Integer.parseInt(args[2]); - Player player = server.getGame().getPlayer(pid); - if (null == ent) { - server.sendServerChat(connId, "No such entity."); - } else if (null == player) { - server.sendServerChat(connId, "No such player."); - } else if (player.getTeam() == Player.TEAM_UNASSIGNED) { - server.sendServerChat(connId, "Player must be assigned a team."); - } else { - server.sendServerChat(connId, ent.getDisplayName() + " will switch to " + player.getName() + "'s side at the end of this turn."); - ent.setTraitorId(pid); - } - } catch (NumberFormatException ignored) { - } + public List> defineArguments() { + List> arguments = new ArrayList<>(); + arguments.add(new IntegerArgument("unitID", 0, Integer.MAX_VALUE)); + arguments.add(new IntegerArgument("playerID", 0, Integer.MAX_VALUE)); + return arguments; } @Override - public TWGameManager getGameManager() { - return gameManager; + protected void runAsGM(int connId, Map> args) { + IntegerArgument unitID = (IntegerArgument) args.get("unitID"); + IntegerArgument playerID = (IntegerArgument) args.get("playerID"); + + Entity ent = gameManager.getGame().getEntity(unitID.getValue()); + Player player = server.getGame().getPlayer(playerID.getValue()); + if (null == ent) { + server.sendServerChat(connId, "No such entity."); + } else if (null == player) { + server.sendServerChat(connId, "No such player."); + } else if (player.getTeam() == Player.TEAM_UNASSIGNED) { + server.sendServerChat(connId, "Player must be assigned a team."); + } else { + server.sendServerChat(connId, ent.getDisplayName() + " will switch to " + player.getName() + "'s side at the end of this turn."); + ent.setTraitorId(player.getId()); + } } } diff --git a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java index 1e75fd97e2d..3ff818d1c1d 100644 --- a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java +++ b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java @@ -20,9 +20,13 @@ import megamek.common.planetaryconditions.*; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; import megamek.server.totalwarfare.TWGameManager; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; @@ -31,9 +35,7 @@ /** * @author Luana Scoppio */ -public class ChangeWeatherCommand extends ServerCommand { - - private final TWGameManager gameManager; +public class ChangeWeatherCommand extends GamemasterServerCommand { private static final String HELP_TEXT = "GM changes (weather) planetary conditions. The parameters are optional and unordered " + "and the effects are applied at the beginning of the next turn. The square brackets means that argument is optional. " + @@ -44,19 +46,30 @@ public class ChangeWeatherCommand extends ServerCommand { "winddir= 0: south, 1: southwest, 2: northwest, 3: north, 4: northeast, 5: southeast, 6: random " + "atmo= 0: vacuum, 1: trace, 2: thin, 3: standard, 4: high, 5: very high " + "blowsand= 0: no, 1: yes " + + "emi= 0: no, 1: yes " + "weather= 0: clear, 1: light rain, 2: moderate rain, 3: heavy rain, 4: gusting rain, 5: downpour, 6: light snow " + "7: moderate snow, 8: snow flurries, 9: heavy snow, 10: sleet, 11: ice storm, 12: light hail, 13: heavy hail " + "14: lightning storm"; /** Creates new ChangeWeatherCommand */ public ChangeWeatherCommand(Server server, TWGameManager gameManager) { - super(server, "weather", HELP_TEXT); - this.gameManager = gameManager; + super(server, gameManager, "weather", HELP_TEXT); + } + + public List> defineArguments() { + List> arguments = new ArrayList<>(); + arguments.add(new IntegerArgument("fog", 0, 2)); + arguments.add(new IntegerArgument("light", 0, 6)); + arguments.add(new IntegerArgument("wind", 0, 6)); + arguments.add(new IntegerArgument("atmo", 0, 5)); + arguments.add(new IntegerArgument("blowsand", 0, 1)); + arguments.add(new IntegerArgument("emi", 0, 1)); + arguments.add(new IntegerArgument("weather", 0, 14)); + return arguments; } - private void updatePlanetaryCondition(String arg, String prefix, int connId, int maxLength, Consumer setter, + private void updatePlanetaryCondition(int value, int connId, int maxLength, Consumer setter, Function successMessage, Function errorMessage) { - var value = Integer.parseInt(arg.substring(prefix.length())); if (value >= 0 && value < maxLength) { setter.accept(value); server.sendServerChat(connId, successMessage.apply(value)); @@ -65,50 +78,47 @@ private void updatePlanetaryCondition(String arg, String prefix, int connId, int } } + private record Condition(int maxLength, Consumer setter, Function successMessage, Function errorMessage) {} /** * Run this command with the arguments supplied */ @Override - public void run(int connId, String[] args) { - if (!server.getPlayer(connId).getGameMaster()) { - server.sendServerChat(connId, "You are not a Game Master."); - return; - } - - var planetaryConditions = gameManager.getGame().getPlanetaryConditions(); + public void runAsGM(int connId, Map> args) { + var planetaryConditions = getGameManager().getGame().getPlanetaryConditions(); - if (args.length > 1) { + Map conditions = Map.of( + "fog", new Condition(Fog.values().length, value -> planetaryConditions.setFog(Fog.values()[value]), + value -> "The fog has changed.", maxLength -> "Invalid fog value. Must be between 0 and " + (maxLength - 1)), + "wind", new Condition(Wind.values().length, value -> planetaryConditions.setWind(Wind.values()[value]), + value -> "The wind strength has changed.", maxLength -> "Invalid wind value. Must be between 0 and " + (maxLength - 1)), + "winddir", new Condition(WindDirection.values().length, value -> planetaryConditions.setWindDirection(WindDirection.values()[value]), + value -> "The wind direction has changed.", maxLength -> "Invalid wind direction value. Must be between 0 and " + (maxLength - 1)), + "light", new Condition(Light.values().length, value -> planetaryConditions.setLight(Light.values()[value]), + value -> "The light has changed.", maxLength -> "Invalid light value. Must be between 0 and " + (maxLength - 1)), + "atmo", new Condition(Atmosphere.values().length, value -> planetaryConditions.setAtmosphere(Atmosphere.values()[value]), + value -> value == 0 ? "The air has vanished, put your vac suits!" : "The air is changing.", maxLength -> "Invalid atmosphere value. Must be between 0 and " + (maxLength - 1)), + "blowsand", new Condition(BlowingSand.values().length, value -> planetaryConditions.setBlowingSand(BlowingSand.values()[value]), + value -> value == 1 ? "Sand started blowing." : "The sand has settled.", maxLength -> "Invalid blowsand value. Must be between 0 and " + (maxLength - 1)), + "weather", new Condition(Weather.values().length, value -> planetaryConditions.setWeather(Weather.values()[value]), + value -> "The weather has changed.", maxLength -> "Invalid weather value. Must be between 0 and " + (maxLength - 1)), + "emi", new Condition(EMI.values().length, value -> planetaryConditions.setEMI(EMI.values()[value]), + value -> value == 1 ? "EMI is active." : "EMI is inactive.", maxLength -> "Invalid EMI value. Must be between 0 and " + (maxLength - 1)) + ); + conditions.forEach((prefix, condition) -> { + if (args.containsKey(prefix)) { + updatePlanetaryCondition( + (int) args.get(prefix).getValue(), + connId, + condition.maxLength, + condition.setter, + condition.successMessage, + condition.errorMessage); + } + }); - Map conditions = Map.of( - "fog=", new Condition(Fog.values().length, value -> planetaryConditions.setFog(Fog.values()[value]), - value -> "The fog has changed.", maxLength -> "Invalid fog value. Must be between 0 and " + (maxLength - 1)), - "wind=", new Condition(Wind.values().length, value -> planetaryConditions.setWind(Wind.values()[value]), - value -> "The wind strength has changed.", maxLength -> "Invalid wind value. Must be between 0 and " + (maxLength - 1)), - "winddir=", new Condition(WindDirection.values().length, value -> planetaryConditions.setWindDirection(WindDirection.values()[value]), - value -> "The wind direction has changed.", maxLength -> "Invalid wind direction value. Must be between 0 and " + (maxLength - 1)), - "light=", new Condition(Light.values().length, value -> planetaryConditions.setLight(Light.values()[value]), - value -> "The light has changed.", maxLength -> "Invalid light value. Must be between 0 and " + (maxLength - 1)), - "atmo=", new Condition(Atmosphere.values().length, value -> planetaryConditions.setAtmosphere(Atmosphere.values()[value]), - value -> value == 0 ? "The air has vanished, put your vac suits!" : "The air is changing.", maxLength -> "Invalid atmosphere value. Must be between 0 and " + (maxLength - 1)), - "blowsand=", new Condition(BlowingSand.values().length, value -> planetaryConditions.setBlowingSand(BlowingSand.values()[value]), - value -> value == 1 ? "Sand started blowing." : "The sand has settled.", maxLength -> "Invalid blowsand value. Must be between 0 and " + (maxLength - 1)), - "weather=", new Condition(Weather.values().length, value -> planetaryConditions.setWeather(Weather.values()[value]), - value -> "The weather has changed.", maxLength -> "Invalid weather value. Must be between 0 and " + (maxLength - 1)) - ); - - Stream.of(args) - .forEach(arg -> conditions.forEach((prefix, condition) -> { - if (arg.startsWith(prefix)) { - updatePlanetaryCondition(arg, prefix, connId, condition.maxLength, condition.setter, condition.successMessage, condition.errorMessage); - } - })); - - gameManager.getGame().setPlanetaryConditions(planetaryConditions); - } else { - // Error out; it's not a valid call. - server.sendServerChat(connId, "weather command failed. " + HELP_TEXT); - } + getGameManager().getGame().setPlanetaryConditions(planetaryConditions); } + } diff --git a/megamek/src/megamek/server/commands/DisasterCommand.java b/megamek/src/megamek/server/commands/DisasterCommand.java index 0a7137cd88b..f3fc13e354d 100644 --- a/megamek/src/megamek/server/commands/DisasterCommand.java +++ b/megamek/src/megamek/server/commands/DisasterCommand.java @@ -18,45 +18,149 @@ */ package megamek.server.commands; +import megamek.common.Coords; +import megamek.logging.MMLogger; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.EnumArgument; import megamek.server.totalwarfare.TWGameManager; +import java.util.List; +import java.util.Map; +import java.util.Objects; + /** * @author Luana Scoppio */ -public class DisasterCommand extends ServerCommand { +public class DisasterCommand extends GamemasterServerCommand { - private final TWGameManager gameManager; + enum Disaster { + RANDOM, + HURRICANE, + LIGHTNING_STORM, + ORBITAL_BOMBARDMENT, + ORBITAL_BOMBARDMENT_2, + ORBITAL_BOMBARDMENT_3, + SANDSTORM, + HAILSTORM, + ECLIPSE, + SOLAR_FLARE, + SUPERNOVA, + SMOG, + FIRESTORM, + TRAITOR; + + public static Disaster getRandomDisaster() { + return values()[(int) (Math.random() * values().length)]; + } + } - /** Creates new DisasterCommand */ public DisasterCommand(Server server, TWGameManager gameManager) { - super(server, "disaster", "GM calls a disaster at random, arguments in square brackets are optional. Usage: /disaster [type] " + + super(server, gameManager, "gomorrah", "GM calls a disaster, arguments in square brackets are optional. " + + "Usage: /gomorrah [type] " + "if not type is passed, one is chosen at random. " + - "type= 0: hurricane, 1: lightning storm, 2: meteor shower, 3: orbital bombardment, 4: wildfire, 5: sandstorm, 6: hailstorm, " + - "7: heatwave"); - this.gameManager = gameManager; + "Type can be one of the following: hurricane, lightning, ob, ob2, ob3, sandstorm, hailstorm, eclipse, solarflare, " + + "supernova, smog, firestorm, traitor. " + + "The type ob, ob2 and ob3 are orbital bombardment with one, two or three random hit locations, at default values " + + "for damage (100) and radius (4)."); + } + + @Override + public List> defineArguments() { + return List.of(new EnumArgument<>("type", Disaster.class, Disaster.RANDOM)); + } + + private void runDisasterCommand(int connId, Disaster disaster) { + switch (disaster) { + case HURRICANE: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "wind=6", "winddir=6"}); + server.sendServerChat("Hurricane incoming!"); + break; + case LIGHTNING_STORM: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "weather=14"}); + server.sendServerChat("Lightning storm incoming!"); + break; + case ECLIPSE: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "light=4"}); + server.sendServerChat("The sun is being eclipsed..."); + break; + case SOLAR_FLARE: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "light=5", "emi=1"}); + new FirestormCommand(server, gameManager).run(connId, new String[]{"firestorm", "1", "5"}); + server.sendServerChat("Sensors warn of an imminent solar flare incoming! Expect some fires."); + break; + case SUPERNOVA: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "light=5", "emi=1", "atmo=2", "wind=0", "weather=0"}); + new FirestormCommand(server, gameManager).run(connId, new String[]{"firestorm", "2", "75"}); + server.sendServerChat("The star is going supernova!"); + server.sendServerChat("Everything is on fire! We are doomed!"); + break; + case ORBITAL_BOMBARDMENT_3: + orbitalBombardment(connId); + case ORBITAL_BOMBARDMENT_2: + orbitalBombardment(connId); + case ORBITAL_BOMBARDMENT: + orbitalBombardment(connId); + break; + case SANDSTORM: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "blowsand=1", "wind=4", "winddir=6"}); + server.sendServerChat("A sandstorm is approaching!"); + break; + case HAILSTORM: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "weather=13", "wind=4", "winddir=6"}); + server.sendServerChat("A hailstorm is incoming!"); + break; + case FIRESTORM: + new FirestormCommand(server, gameManager).run(connId, new String[]{"firestorm", "2", "50"}); + server.sendServerChat("A firestorm is consuming the battlefield!"); + break; + case SMOG: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "atmo=5", "fog=2", "light=1"}); + server.sendServerChat("A thick smog is covering the battlefield!"); + break; + case TRAITOR: + default: + { + var players = gameManager.getGame().getPlayersList(); + var randomPlayer = players.get((int) (Math.random() * players.size())); + + var units = gameManager.getGame().getPlayerEntities(randomPlayer, true); + var randomUnit = units.get((int) (Math.random() * units.size())); + + var otherPlayers = players.stream().filter(p -> p != randomPlayer).toList(); + var newOwner = otherPlayers.get((int) (Math.random() * otherPlayers.size())); + + new ChangeOwnershipCommand(server, gameManager).run(connId, + new String[]{"traitor", "" + randomUnit.getId(), "" + newOwner.getId()}); + server.sendServerChat("A traitor has been revealed!"); + } + } + } + + private Coords getRandomHexCoords() { + var board = gameManager.getGame().getBoard(); + var x = (int) (Math.random() * board.getWidth()); + var y = (int) (Math.random() * board.getHeight()); + return new Coords(x, y); + } + + private void orbitalBombardment(int connId) { + var coords = getRandomHexCoords(); + new OrbitalBombardmentCommand(server, gameManager).run(connId, new String[]{"ob", + coords.getX() + 1 + "", + coords.getY() + 1 + "" + }); } /** * Run this command with the arguments supplied */ @Override - public void run(int connId, String[] args) { - if (!server.getPlayer(connId).getGameMaster()) { - server.sendServerChat(connId, "You are not a Game Master."); - return; - } - - // Check argument integrity. - if (args.length == 1) { - // Check command - // NOT IMPLEMENTED - server.sendServerChat(connId, "Oh no..."); - } else if (args.length == 2) { - // Error out; it's not a valid call. - server.sendServerChat(connId, "Oh no..."); + protected void runAsGM(int connId, Map> args) { + if (args.get("type").getValue().equals(Disaster.RANDOM)) { + runDisasterCommand(connId, Disaster.getRandomDisaster()); } else { - server.sendServerChat(connId, "disaster command failed (1)."); + runDisasterCommand(connId, (Disaster) args.get("type").getValue()); } } } diff --git a/megamek/src/megamek/server/commands/FirestarterCommand.java b/megamek/src/megamek/server/commands/FirestarterCommand.java new file mode 100644 index 00000000000..8e4fece3254 --- /dev/null +++ b/megamek/src/megamek/server/commands/FirestarterCommand.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.common.Coords; +import megamek.common.Hex; +import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; +import megamek.server.totalwarfare.TWGameManager; + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * The Server Command "/firestarter" that will put one hex on fire. + * + * @author Luana Scoppio + */ +public class FirestarterCommand extends GamemasterServerCommand { + + public FirestarterCommand(Server server, TWGameManager gameManager) { + super(server, + gameManager, + "firestarter", + "Starts fire in one specific hex at a specific intensity. " + + "Usage: /firestarter [] " + + "The intensity can be 1=Norma, 2=Inferno, 3=Inferno Bomb or 4=Inferno IV, default is 1."); + } + + + @Override + public List> defineArguments() { + return List.of( + new IntegerArgument("x"), + new IntegerArgument("y"), + new IntegerArgument("intensity", 1, 4, 1)); + } + + /** + * Run this command with the arguments supplied + * + * @see ServerCommand#run(int, String[]) + */ + @Override + protected void runAsGM(int connId, Map> args) { + int xArg = (int) args.get("x").getValue() - 1; + int yArg = (int) args.get("y").getValue() -1; + int fireType = (int) args.get("intensity").getValue(); + + igniteHex(new Coords(xArg, yArg), fireType); + } + + private void igniteHex(Coords coords, int fireType) { + try { + Hex hex = gameManager.getGame().getBoard().getHex(coords); + Objects.requireNonNull(hex, "Hex not found."); + gameManager.ignite(coords, fireType, gameManager.getvPhaseReport()); + } catch (Exception e) { + throw new IllegalArgumentException("Failed to ignite hex: " + e.getMessage()); + } + } + +} diff --git a/megamek/src/megamek/server/commands/FirestormCommand.java b/megamek/src/megamek/server/commands/FirestormCommand.java new file mode 100644 index 00000000000..03d2e03d961 --- /dev/null +++ b/megamek/src/megamek/server/commands/FirestormCommand.java @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.common.Coords; +import megamek.common.Hex; +import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; +import megamek.server.totalwarfare.TWGameManager; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +/** + * The Server Command "/firestorm" that starts a blazing inferno on the board. + * + * @author Luana Scoppio + */ +public class FirestormCommand extends GamemasterServerCommand { + + public FirestormCommand(Server server, TWGameManager gameManager) { + super(server, + gameManager, + "firestorm", + "Starts fire in the entire board. " + + "Usage: /firestorm [] []" + + "The intensity can be 1=Normal, 2=Inferno, 3=Inferno Bomb or 4=Inferno IV, default is 1. " + + "The size can be a percent of the board, from 1 to 100, default is 25."); + } + + @Override + public List> defineArguments() { + return List.of(new IntegerArgument("intensity", 1, 4, 1), + new IntegerArgument("percent", 1, 100, 25)); + } + + /** + * Run this command with the arguments supplied + * + * @see ServerCommand#run(int, String[]) + */ + @Override + protected void runAsGM(int connId, Map> args) { + try { + var fireType = (int) args.get("intensity").getValue(); + var percent = (int) args.get("percent").getValue(); + var coords = getRandomCoords(numberOfCoordsFromPercent(percent)); + coords.forEach(c -> igniteHex(c, fireType)); + } catch (Exception e) { + logger.error("Failed to ignite fire.", e); + server.sendServerChat(connId, "Failed to ignite fire."); + } + } + + private int numberOfCoordsFromPercent(int percent) { + var boardHeight = gameManager.getGame().getBoard().getHeight(); + var boardWidth = gameManager.getGame().getBoard().getWidth(); + return Math.max((boardWidth * boardHeight * percent / 100), 1); + } + + private HashSet getRandomCoords(int size) { + var boardHeight = gameManager.getGame().getBoard().getHeight(); + var boardWidth = gameManager.getGame().getBoard().getWidth(); + var coordsSet = new HashSet(); + var maxTries = size * 10; + while (coordsSet.size() < size && maxTries > 0) { + var x = (int) (Math.random() * boardWidth); + var y = (int) (Math.random() * boardHeight); + coordsSet.add(new Coords(x, y)); + maxTries--; + } + + return coordsSet; + } + + private void igniteHex(Coords coords, int fireType) { + Hex hex = gameManager.getGame().getBoard().getHex(coords); + if (null == hex) { + // Just ignore null hexes... they should not happen, but I don't want to crash the command + return; + } + gameManager.ignite(coords, fireType, gameManager.getvPhaseReport()); + } +} diff --git a/megamek/src/megamek/server/commands/GamemasterServerCommand.java b/megamek/src/megamek/server/commands/GamemasterServerCommand.java new file mode 100644 index 00000000000..2c56403cc29 --- /dev/null +++ b/megamek/src/megamek/server/commands/GamemasterServerCommand.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This file is part of MegaMek. + * + * MegaMek is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MegaMek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MegaMek. If not, see . + */ +package megamek.server.commands; + +import megamek.logging.MMLogger; +import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.totalwarfare.TWGameManager; + +import java.util.*; + +/** + * A ServerCommand that can only be used by Game Masters + * + * @author Luana Coppio + */ +public abstract class GamemasterServerCommand extends ServerCommand { + + private static final String EMPTY_ARGUMENT = null; + protected final TWGameManager gameManager; + protected final static MMLogger logger = MMLogger.create(GamemasterServerCommand.class); + private final String errorMsg; + /** + * Creates new ServerCommand that can only be used by Game Masters + * + * @param server instance of the server + * @param gameManager instance of the game manager + * @param name the name of the command + * @param helpText the help text for the command + */ + public GamemasterServerCommand(Server server, TWGameManager gameManager, String name, String helpText) { + super(server, name, helpText); + this.gameManager = gameManager; + this.errorMsg = "Error executing command: " + name; + } + + private boolean isGM(int connId) { + return server.getGameManager().getGame().getPlayer(connId).getGameMaster(); + } + + protected TWGameManager getGameManager() { + return gameManager; + } + + @Override + public void run(int connId, String[] args) { + if (!isGM(connId)) { + server.sendServerChat(connId, "This command can only be used by a game master."); + return; + } + + try { + Map> parsedArguments = parseArguments(args); + runAsGM(connId, parsedArguments); + } catch (IllegalArgumentException e) { + server.sendServerChat(connId, "Invalid arguments: " + e.getMessage() + "\nUsage: " + this.getHelp()); + } catch (Exception e) { + server.sendServerChat(connId, "An error occurred while executing the command. Check the log for more information"); + logger.error(errorMsg, e); + } + } + + // Method to parse arguments, to be implemented by the specific command class + public abstract List> defineArguments(); + + + // Parses the arguments using the definition + private Map> parseArguments(String[] args) { + List> argumentDefinitions = defineArguments(); + Map> parsedArguments = new HashMap<>(); + List positionalArguments = new ArrayList<>(); + + // Map argument names to definitions for easy lookup + Map> argumentMap = new HashMap<>(); + for (Argument argument : argumentDefinitions) { + argumentMap.put(argument.getName(), argument); + } + + // Separate positional arguments and named arguments + boolean namedArgumentStarted = false; + for (String arg : List.of(args)) { + String[] keyValue = arg.split("="); + + if (keyValue.length == 2) { + // Handle named arguments + namedArgumentStarted = true; + String key = keyValue[0]; + String value = keyValue[1]; + + if (!argumentMap.containsKey(key)) { + throw new IllegalArgumentException("Unknown argument: " + key); + } + + Argument argument = argumentMap.get(key); + argument.parse(value); + parsedArguments.put(key, argument); + } else { + // Handle positional arguments + if (namedArgumentStarted) { + throw new IllegalArgumentException("Positional arguments cannot come after named arguments."); + } + positionalArguments.add(arg); + } + } + + // Parse positional arguments + int index = 0; + for (Argument argument : argumentDefinitions) { + if (parsedArguments.containsKey(argument.getName())) { + continue; + } + if (index < positionalArguments.size()) { + String value = positionalArguments.get(index); + argument.parse(value); + parsedArguments.put(argument.getName(), argument); + index++; + } else { + // designed to throw an error if the arg doesn't have a default value + argument.parse(EMPTY_ARGUMENT); + parsedArguments.put(argument.getName(), argument); + } + } + + return parsedArguments; + } + + // The new method for game master commands that uses parsed arguments + protected abstract void runAsGM(int connId, Map> args); +} diff --git a/megamek/src/megamek/server/commands/IsGM.java b/megamek/src/megamek/server/commands/IsGM.java deleted file mode 100644 index 6c8fcff5545..00000000000 --- a/megamek/src/megamek/server/commands/IsGM.java +++ /dev/null @@ -1,13 +0,0 @@ -package megamek.server.commands; - -import megamek.server.totalwarfare.TWGameManager; - -public interface IsGM { - - TWGameManager getGameManager(); - - default boolean isGM(int connId) { - return getGameManager().getGame().getPlayer(connId).getGameMaster(); - } - -} diff --git a/megamek/src/megamek/server/commands/KillCommand.java b/megamek/src/megamek/server/commands/KillCommand.java index 45f2b6d7dca..3001ae0fe5a 100644 --- a/megamek/src/megamek/server/commands/KillCommand.java +++ b/megamek/src/megamek/server/commands/KillCommand.java @@ -20,59 +20,47 @@ import megamek.common.options.OptionsConstants; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; import megamek.server.totalwarfare.TWGameManager; +import java.util.List; +import java.util.Map; + /** * @author Luana Scoppio */ -public class KillCommand extends ServerCommand implements IsGM { +public class KillCommand extends GamemasterServerCommand{ private final TWGameManager gameManager; /** Creates new KillCommand */ public KillCommand(Server server, TWGameManager gameManager) { - super(server, "kill", "Allows a GM to destroy a single unit instantly" + + super(server, gameManager, "kill", "Allows a GM to destroy a single unit instantly" + "Usage: "+ "/kill " + "where id is the units ID. The units ID can be found by hovering over the unit."); this.gameManager = gameManager; } + @Override + public List> defineArguments() { + return List.of(new IntegerArgument("unitID", 0, Integer.MAX_VALUE)); + } + /** * Run this command with the arguments supplied */ @Override - public void run(int connId, String[] args) { - - // Check to make sure gm kills are allowed! - if (!isGM(connId)) { - server.sendServerChat(connId, "You are not a Game Master."); + protected void runAsGM(int connId, Map> args) { + int unitId = (int) args.get("unitID").getValue(); + // is the unit on the board? + var unit = gameManager.getGame().getEntity(unitId); + if (unit == null) { + server.sendServerChat(connId, "Specified unit is not on the board."); return; } - // Check argument integrity. - if (args.length == 2) { - // Check command - try { - int unitId = Integer.parseInt(args[1]); - // is the unit on the board? - var unit = gameManager.getGame().getEntity(unitId); - if (unit == null) { - server.sendServerChat(connId, "Specified unit is not on the board."); - return; - } - gameManager.destroyEntity(unit, "Act of God", false, false); - server.sendServerChat(connId, unit.getDisplayName() + " has been destroyed."); - } catch (NumberFormatException e) { - server.sendServerChat(connId, "Kill command failed (2). Proper format is \"/kill \" where id is the units numerical ID"); - } - } else { - // Error out; it's not a valid call. - server.sendServerChat(connId, "Kill command failed (1). Proper format is \"/kill \" where id is the units ID"); - } - } - - @Override - public TWGameManager getGameManager() { - return gameManager; + gameManager.destroyEntity(unit, "Act of God", false, false); + server.sendServerChat(unit.getDisplayName() + " has been devastated."); } } diff --git a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java index 5424526f93d..9a970eb2d1f 100644 --- a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java +++ b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java @@ -20,84 +20,66 @@ import megamek.common.options.OptionsConstants; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; import megamek.server.props.OrbitalBombardment; import megamek.server.totalwarfare.TWGameManager; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + /** * @author Luana Scoppio */ -public class OrbitalBombardmentCommand extends ServerCommand implements IsGM { - - private final TWGameManager gameManager; +public class OrbitalBombardmentCommand extends GamemasterServerCommand { - /** Creates new NukeCommand */ public OrbitalBombardmentCommand(Server server, TWGameManager gameManager) { - super(server, "ob", "GM Drops a bomb onto the board doing of 100 damage with a 3 hex radius, to be exploded at" + - "the end of the next weapons attack phase." + - "Allowed formats:"+ - "/ob and" + - "/ob [factor=#] [radius=#]" + - "the damage at impact point is the factor times 10, default factor value is 10. " + - "and hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23), the explosion blast radius default " + - "is equal to 4, it automatically applies a linear damage dropoff each hex away from the center." + - " All parameters in square brackets may be omitted. " + - " Example: /ob 10 10 factor=12 "); - this.gameManager = gameManager; + super(server, gameManager, "ob", "GM orders an unknown warship to strike the board doing of 100 damage with a 4 hex radius, to be exploded at" + + "the end of the next weapons attack phase." + + "Allowed formats: " + + "/ob and" + + "/ob [dmg=#] [r=#] and" + + "/ob and " + + "/ob " + + "X and Y are the hex position where is x=column number and y=row number (hex 0923 would be x=9 and y=23), " + + "dmg is the amount of damage at impact point, default is 100, the damage drops off linearly according to the radius. " + + "r is radius, defaults to 4. " + + " Example: /ob 10 10 dmg=120 r=4 and /ob 10 10 120 4 are equivalent. " + + " Parameters in square brackets may be omitted, and using named variables permits to write them out of order. " + + " Example: /ob 10 10 r=12 dmg=300"); + } + + @Override + public List> defineArguments() { + return List.of( + new IntegerArgument("x"), + new IntegerArgument("y"), + new IntegerArgument("dmg", 10, Integer.MAX_VALUE, 100), + new IntegerArgument("r", 1, 10, 4)); } /** * Run this command with the arguments supplied */ @Override - public void run(int connId, String[] args) { + protected void runAsGM(int connId, Map> args) { - // Check to make sure nuking is allowed by game options! - if (!isGM(connId)) { - server.sendServerChat(connId, "You are not a Game Master."); - return; - } + var orbitalBombardmentBuilder = new OrbitalBombardment.Builder(); - if (args.length >= 3) { - var orbitalBombardmentBuilder = new OrbitalBombardment.Builder(); - try { - int[] position = new int[2]; - for (int i = 1; i < 3; i++) { - position[i-1] = Integer.parseInt(args[i]) - 1; - } - // is the hex on the board? - if (!gameManager.getGame().getBoard().contains(position[0], position[1])) { - server.sendServerChat(connId, "Specified hex is not on the board."); - return; - } + orbitalBombardmentBuilder.x((int) args.get("x").getValue() - 1).y((int) args.get("y").getValue() - 1); + orbitalBombardmentBuilder.radius((int) args.get("r").getValue()); + orbitalBombardmentBuilder.damageFactor((int) args.get("dmg").getValue()); + var orbitalBombardment = orbitalBombardmentBuilder.build(); - orbitalBombardmentBuilder - .x(position[0]) - .y(position[1]); - - if (args.length > 3) { - for (int i = 3; i < args.length; i++) { - String[] keyValue = args[i].split("="); - if (keyValue[0].equals("factor")) { - orbitalBombardmentBuilder.damageFactor(Integer.parseInt(keyValue[1])); - } else if (keyValue[0].equals("radius")) { - orbitalBombardmentBuilder.radius(Integer.parseInt(keyValue[1])); - } - } - } - - gameManager.addScheduledOrbitalBombardment(orbitalBombardmentBuilder.build()); - server.sendServerChat(connId, "This isn't a shooting star! Take cover!"); - } catch (Exception e) { - server.sendServerChat(connId, "Orbital bombardment command failed (2). Proper format is \"/ob [factor=10] [radius=4]\" where hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23)"); - } - } else { - // Error out; it's not a valid call. - server.sendServerChat(connId, "Orbital bombardment command failed (1). Proper format is \"/ob [factor=10] [radius=4]\" where hex x, y is x=column number and y=row number (hex 0923 would be x=9 and y=23)"); + // is the hex on the board? + if (!gameManager.getGame().getBoard().contains(orbitalBombardment.getX(), orbitalBombardment.getY())) { + server.sendServerChat(connId, "Specified hex is not on the board."); + return; } - } - @Override - public TWGameManager getGameManager() { - return gameManager; + gameManager.addScheduledOrbitalBombardment(orbitalBombardment); + server.sendServerChat("Orbital bombardment incoming!"); } + } diff --git a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java index 5715ae19736..75373384714 100644 --- a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java +++ b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java @@ -22,44 +22,30 @@ import megamek.common.planetaryconditions.Fog; import megamek.common.planetaryconditions.Wind; import megamek.server.Server; +import megamek.server.commands.arguments.Argument; import megamek.server.totalwarfare.TWGameManager; +import java.util.List; +import java.util.Map; + /** * @author Luana Scoppio */ -public class RemoveSmokeCommand extends ServerCommand implements IsGM { - - private final TWGameManager gameManager; +public class RemoveSmokeCommand extends GamemasterServerCommand { /** Creates new KillCommand */ public RemoveSmokeCommand(Server server, TWGameManager gameManager) { - super(server, "nosmoke", "GM removes all smoke cloud hexes. Usage: /nosmoke"); - this.gameManager = gameManager; + super(server, gameManager, "nosmoke", "GM removes all smoke cloud hexes. Usage: /nosmoke"); } - /** - * Run this command with the arguments supplied - */ @Override - public void run(int connId, String[] args) { - if (!isGM(connId)) { - server.sendServerChat(connId, "You are not a Game Master."); - return; - } - - // Check argument integrity. - if (args.length == 1) { - // Check command - gameManager.getSmokeCloudList().forEach(gameManager::removeSmokeTerrain); - server.sendServerChat(connId, "GM cleared the smoke clouds."); - } else { - // Error out; it's not a valid call. - server.sendServerChat(connId, "nosmoke command failed (1)."); - } + public List> defineArguments() { + return List.of(); } @Override - public TWGameManager getGameManager() { - return gameManager; + protected void runAsGM(int connId, Map> args) { + gameManager.getSmokeCloudList().forEach(gameManager::removeSmokeTerrain); + server.sendServerChat(connId, "GM cleared the smoke clouds."); } } diff --git a/megamek/src/megamek/server/commands/arguments/Argument.java b/megamek/src/megamek/server/commands/arguments/Argument.java new file mode 100644 index 00000000000..39d4aa056c3 --- /dev/null +++ b/megamek/src/megamek/server/commands/arguments/Argument.java @@ -0,0 +1,22 @@ +package megamek.server.commands.arguments; + +// A generic Argument class that can be extended for different argument types +public abstract class Argument { + protected T value; + + private final String name; + + public Argument(String name) { + this.name = name; + } + + public T getValue() { + return value; + } + + public String getName() { + return name; + } + + public abstract void parse(String input) throws IllegalArgumentException; +} diff --git a/megamek/src/megamek/server/commands/arguments/EnumArgument.java b/megamek/src/megamek/server/commands/arguments/EnumArgument.java new file mode 100644 index 00000000000..5c51072579b --- /dev/null +++ b/megamek/src/megamek/server/commands/arguments/EnumArgument.java @@ -0,0 +1,44 @@ +package megamek.server.commands.arguments; + +import java.util.Arrays; + +public class EnumArgument> extends Argument { + private final Class enumType; + private final E defaultValue; + + public EnumArgument(String name, Class enumType, E defaultValue) { + super(name); + this.enumType = enumType; + this.defaultValue = defaultValue; + } + + public Class getEnumType() { + return enumType; + } + + @Override + public void parse(String input) throws IllegalArgumentException { + if (input == null && defaultValue != null) { + value = defaultValue; + return; + } else { + if (input == null) { + throw new IllegalArgumentException(getName() + " is required."); + } + } + try { + value = Enum.valueOf(enumType, input.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException(getName() + " must be one of: " + + String.join(", ", Arrays.toString(enumType.getEnumConstants()))); + } + } + + @Override + public E getValue() { + if (value == null && defaultValue != null) { + return defaultValue; + } + return value; + } +} diff --git a/megamek/src/megamek/server/commands/arguments/IntegerArgument.java b/megamek/src/megamek/server/commands/arguments/IntegerArgument.java new file mode 100644 index 00000000000..26340b84879 --- /dev/null +++ b/megamek/src/megamek/server/commands/arguments/IntegerArgument.java @@ -0,0 +1,63 @@ +package megamek.server.commands.arguments; + +public class IntegerArgument extends Argument { + private final int minValue; + private final int maxValue; + private final Integer defaultValue; + + public IntegerArgument(String name) { + this(name, Integer.MIN_VALUE, Integer.MAX_VALUE, null); + } + + public IntegerArgument(String name, int minValue, int maxValue) { + this(name, minValue, maxValue, null); + } + + public IntegerArgument(String name, int minValue, int maxValue, Integer defaultValue) { + super(name); + this.minValue = minValue; + this.maxValue = maxValue; + this.defaultValue = defaultValue; + } + + @Override + public Integer getValue() { + if (value == null && defaultValue != null) { + return defaultValue; + } + return value; + } + + @Override + public void parse(String input) throws IllegalArgumentException { + if (input == null && defaultValue != null) { + value = defaultValue; + return; + } else { + if (input == null) { + throw new IllegalArgumentException(getName() + " is required."); + } + } + try { + int parsedValue = Integer.parseInt(input); + if (parsedValue < minValue || parsedValue > maxValue) { + throw new IllegalArgumentException(getName() + " must be between " + minValue + " and " + maxValue); + } + value = parsedValue; + } catch (NumberFormatException e) { + throw new IllegalArgumentException(getName() + " must be an integer."); + } + } + + public boolean hasDefaultValue() { + return defaultValue != null; + } + + public int getMinValue() { + return minValue; + } + + public int getMaxValue() { + return maxValue; + } +} diff --git a/megamek/src/megamek/server/props/OrbitalBombardment.java b/megamek/src/megamek/server/props/OrbitalBombardment.java index e49e1c965e4..0bfa383c45f 100644 --- a/megamek/src/megamek/server/props/OrbitalBombardment.java +++ b/megamek/src/megamek/server/props/OrbitalBombardment.java @@ -18,6 +18,8 @@ */ package megamek.server.props; +import megamek.common.Coords; + /** * Represents an orbital bombardment event. * x and y are board positions, damageFactor is the damage at impact point times 10, and radius is the blast radius of the explosion with @@ -31,19 +33,23 @@ public class OrbitalBombardment { private final int y; private final int damageFactor; private final int radius; - + private final Coords coords; /** * Represents an orbital bombardment event. * x and y are board positions, damageFactor is the damage at impact point times 10, and radius is the blast radius of the explosion with * regular/linear damage droppoff. * - * @param builder */ private OrbitalBombardment(Builder builder) { this.x = builder.x; this.y = builder.y; this.damageFactor = builder.damageFactor; this.radius = builder.radius; + this.coords = new Coords(x, y); + } + + public Coords getCoords() { + return coords; } public int getX() { diff --git a/megamek/src/megamek/server/totalwarfare/TWGameManager.java b/megamek/src/megamek/server/totalwarfare/TWGameManager.java index 4eb440a79a0..57c86de9f08 100644 --- a/megamek/src/megamek/server/totalwarfare/TWGameManager.java +++ b/megamek/src/megamek/server/totalwarfare/TWGameManager.java @@ -190,8 +190,11 @@ public List getCommandList(Server server) { commands.add(new CheckBVTeamCommand(server)); commands.add(new NukeCommand(server, this)); commands.add(new KillCommand(server, this)); + commands.add(new OrbitalBombardmentCommand(server, this)); commands.add(new ChangeOwnershipCommand(server, this)); commands.add(new DisasterCommand(server, this)); + commands.add(new FirestarterCommand(server, this)); + commands.add(new FirestormCommand(server, this)); commands.add(new RemoveSmokeCommand(server, this)); commands.add(new ChangeWeatherCommand(server, this)); commands.add(new TraitorCommand(server, this)); @@ -20194,8 +20197,6 @@ public void doExplosion(int[] damages, boolean autoDestroyInSameHex, Coords posi } else { range += entity.getElevation(); } - } else { - continue; } // We might need to nuke everyone in the explosion hex. If so... @@ -20394,7 +20395,35 @@ public void addScheduledNuke(int[] nuke) { * through it's builder. */ public void addScheduledOrbitalBombardment(OrbitalBombardment orbitalBombardment) { + Report r = new Report(1302); + r.indent(); + r.newlines = 0; + r.add("Unknown warship in orbit"); + r.add(orbitalBombardment.getCoords().getBoardNum()); + getvPhaseReport().addElement(r); + Report.addNewline(getvPhaseReport()); + + drawOrbitalBombardmentOnBoard(orbitalBombardment); scheduledOrbitalBombardment.add(orbitalBombardment); + getGame().setOrbitalBombardmentVector(new Vector<>(scheduledOrbitalBombardment)); + } + + private void drawOrbitalBombardmentOnBoard(OrbitalBombardment orbitalBombardment) { + + for (var coord : orbitalBombardment.getCoords().allAtDistanceOrLess(orbitalBombardment.getRadius())) { + getGame().getBoard().addSpecialHexDisplay( + coord, + new SpecialHexDisplay( + SpecialHexDisplay.Type.ORBITAL_BOMBARDMENT, + getGame().getRoundCount(), + getGame().getPlayersList().get(0), // It doesnt matter which is the player, but I dont want to cause a nullpointer. + "Orbital bombardment incoming, landing on round " + + getGame().getRoundCount() + + ", fired by an unknown warship in orbit", + SpecialHexDisplay.SHD_OBSCURED_ALL) + ); + sendChangedHex(coord); + } } /** @@ -20419,8 +20448,15 @@ void resolveScheduledNukes() { */ void resolveScheduledOrbitalBombardments() { scheduledOrbitalBombardment - .forEach(ob -> doOrbitalBombardment(new Coords(ob.getX(), ob.getY()), ob.getDamageFactor(), ob.getRadius(), vPhaseReport)); + .forEach(ob -> doOrbitalBombardment(new Coords(ob.getX(), ob.getY()), ob.getDamageFactor(), ob.getRadius())); scheduledOrbitalBombardment.clear(); + getGame().resetOrbitalBombardmentAttacks(); + + // All right. We're done. + var r = new Report(1301, Report.PUBLIC); + r.indent(); + r.newlines = 2; + getvPhaseReport().add(r); } /** @@ -20446,19 +20482,12 @@ public void doNuclearExplosion(Coords position, int nukeType, Vector vDe * @param position the position that will be hit by the orbital bombardment * @param damageFactor the factor by which the base damage will be multiplied * @param radius the radius which the damage will hit - * @param vDesc a vector that contains the output report */ - public void doOrbitalBombardment(Coords position, int damageFactor, int radius, Vector vDesc) { - // Just in case. - if (vDesc == null) { - vDesc = new Vector<>(); - } - + public void doOrbitalBombardment(Coords position, int damageFactor, int radius) { Report r = new Report(1300, Report.PUBLIC); - r.indent(); r.add(position.getBoardNum(), true); - vDesc.add(r); + getvPhaseReport().add(r); // Then, do actual blast damage. // Use the standard blast function for this. @@ -20470,41 +20499,7 @@ public void doOrbitalBombardment(Coords position, int damageFactor, int radius, doExplosion(baseDamage, degradation , false, position, true, tmpV, blastedUnitsVec, -1, true); Report.indentAll(tmpV, 2); - vDesc.addAll(tmpV); - - // Next, for whatever's left, do terrain effects - // such as clearing, roughing, and boiling off water. - boolean damageFlag = true; - - // Lastly, do secondary effects. - for (Entity entity : game.getEntitiesVector()) { - // loaded units and off board units don't have a position, - // so we don't count 'em here - if ((entity.getTransportId() != Entity.NONE) || (entity.getPosition() == null)) { - continue; - } - - // If it's already destroyed... - if ((entity.isDoomed()) || (entity.isDestroyed())) { - continue; - } - - // If it's too far away for this... - if (position.distance(entity.getPosition()) > radius) { - continue; - } - - // Actually do secondary effects against it. - // Since the effects are unit-dependant, we'll just define it in the - // entity. -// applySecondaryNuclearEffects(entity, position, vDesc); - } - - // All right. We're done. - r = new Report(1216, Report.PUBLIC); - r.indent(); - r.newlines = 2; - vDesc.add(r); + getvPhaseReport().addAll(tmpV); } /** @@ -31692,6 +31687,10 @@ void clearBombIcons() { game.getBoard().clearBombIcons(); } + void clearOrbitalBombardmentIcons() { + game.getBoard().clearOrbitalBombardmentIcons(); + } + /** * Convenience function to send a ground object update. */ From 231657f328da5fdb66108f00de4f75e099012001 Mon Sep 17 00:00:00 2001 From: Scoppio Date: Fri, 15 Nov 2024 22:12:43 -0300 Subject: [PATCH 10/20] fix: fixr armor tech rating persistance --- .../i18n/megamek/client/messages.properties | 53 +++--- .../src/megamek/client/ui/swing/MapMenu.java | 42 +++-- .../gmCommands/GamemasterCommandPanel.java | 158 +++++++++++++----- .../commands/ChangeOwnershipCommand.java | 3 +- .../server/commands/ChangeWeatherCommand.java | 103 +++++------- .../server/commands/DisasterCommand.java | 8 +- .../server/commands/FirestarterCommand.java | 3 +- .../server/commands/FirestormCommand.java | 3 +- .../commands/GamemasterServerCommand.java | 16 +- .../megamek/server/commands/KillCommand.java | 3 +- .../commands/OrbitalBombardmentCommand.java | 3 +- .../server/commands/RemoveSmokeCommand.java | 3 +- .../server/commands/arguments/Argument.java | 2 +- .../commands/arguments/EnumArgument.java | 4 +- 14 files changed, 244 insertions(+), 160 deletions(-) diff --git a/megamek/i18n/megamek/client/messages.properties b/megamek/i18n/megamek/client/messages.properties index 7c316346a05..8fdaeab24d9 100644 --- a/megamek/i18n/megamek/client/messages.properties +++ b/megamek/i18n/megamek/client/messages.properties @@ -4634,12 +4634,14 @@ SBFTargetDialog.title=Targeting #Gamemaster Menu Text Gamemaster.Gamemaster=Gamemaster -Gamemaster.EditDamage=Edit Damage -Gamemaster.Configure=Configure +Gamemaster.EditDamage=Edit Damage (unstable) +Gamemaster.Configure=Configure (unstable) Gamemaster.Traitor=Traitor Unit +Gamemaster.dialog.confirm=Confirm Gamemaster.KillUnit=Kill Unit -Gamemaster.SpecialCommands=Special Commands - +Gamemaster.KillUnit.text=Kill Unit {0} +Gamemaster.KillUnit.confirmation=Are you sure you want to kill {0}? +Gamemaster.SpecialCommands=Special Actions #Gamemaster Chat Commands Gamemaster.cmd.missingUnit=Specified unit is not on the board. Gamemaster.cmd.error.integerparse=must be between the min and max values: @@ -4649,14 +4651,17 @@ Gamemaster.cmd.params.optional=Optional. Gamemaster.cmd.x=The x coordinate of the hex. Gamemaster.cmd.y=The y coordinate of the hex. # Remove Smoke cmd +Gamemaster.cmd.removesmoke.longName=Remove Smoke Gamemaster.cmd.removesmoke.help=Removes all smoke cloud hexes. Gamemaster.cmd.removesmoke.success=The air is cleaner and the smoke is gone. # Kill Unit cmd +Gamemaster.cmd.kill.longName=Kill Unit Gamemaster.cmd.kill.unitID=ID of the unit to kill. Gamemaster.cmd.kill.help=Kills a single unit. Gamemaster.cmd.kill.success=Is going to be destroyed at the end of this phase. Gamemaster.cmd.kill.reason=Killed by GM. # Change ownership cmd +Gamemaster.cmd.changeownership.longName=Change Unit Ownership (traitor) Gamemaster.cmd.changeownership.help=Changes the ownership of a unit from one player to another. Gamemaster.cmd.changeownership.unitID=ID of the unit to change ownership. Gamemaster.cmd.changeownership.playerID=ID of the player to receive the unit. @@ -4665,56 +4670,44 @@ Gamemaster.cmd.changeownership.playerNotFound=No such player. Gamemaster.cmd.changeownership.playerUnassigned=Player must be assigned a team. Gamemaster.cmd.changeownership.success=Ownership of unit {0} will be transferred to player {1} at the end of this round. # Change weather cmd +Gamemaster.cmd.changeweather.longName=Change Planetary Conditions Gamemaster.cmd.changeweather.help=Change any of the planetary conditions. Effects change at the next round. -Gamemaster.cmd.changeweather.fog=Fog: 0=none, 1=light, 2=heavy -Gamemaster.cmd.changeweather.light=Light: 0=daylight, 1=dusk, 2=full moon, 3=glare, 4=moonless night, 5=solar flare, 6=pitch black -Gamemaster.cmd.changeweather.wind=Wind: 0=calm, 1=light gale, 2=moderate gale, 3=strong gale, 4=storm, 5=tornado F1-F3, 6=tornado F4 -Gamemaster.cmd.changeweather.winddir=Wind direction: 0=south, 1=southwest, 2=northwest, 3=north, 4=northeast, 5=southeast, 6=random -Gamemaster.cmd.changeweather.atmo=Atmosphere: 0=vacuum, 1=trace, 2=thin, 3=standard, 4=high, 5=very high -Gamemaster.cmd.changeweather.blowsand=Blowing Sand: 0=no, 1=yes -Gamemaster.cmd.changeweather.emi=EMI: 0=no, 1=yes -Gamemaster.cmd.changeweather.weather=Weather: 0=clear, 1=light rain, 2=moderate rain, 3=heavy rain, 4=gusting rain, 5=downpour, 6=light snow, 7=moderate snow, 8=snow flurries, 9=heavy snow, 10=sleet, 11=ice storm, 12=light hail, 13=heavy hail, 14=lightning storm +Gamemaster.cmd.changeweather.fog=Fog +Gamemaster.cmd.changeweather.light=Light +Gamemaster.cmd.changeweather.wind=Wind +Gamemaster.cmd.changeweather.winddir=Wind Direction +Gamemaster.cmd.changeweather.atmo=Atmosphere +Gamemaster.cmd.changeweather.blowsand=Blowing Sand +Gamemaster.cmd.changeweather.emi=EMI +Gamemaster.cmd.changeweather.weather=Weather # Disaster cmd +Gamemaster.cmd.disaster.longName=Disaster Gamemaster.cmd.disaster.help=Causes a disaster on the board. Gamemaster.cmd.disaster.type=Type of disaster. Beware, some disasters are very destructive! Gamemaster.cmd.changeweather.fog.success=The fog has changed. -Gamemaster.cmd.changeweather.fog.error=Invalid fog value. Must be between 0 and {0} - Gamemaster.cmd.changeweather.wind.success=The wind strength has changed. -Gamemaster.cmd.changeweather.wind.error=Invalid wind value. Must be between 0 and {0} - Gamemaster.cmd.changeweather.winddir.success=The wind direction has changed. -Gamemaster.cmd.changeweather.winddir.error=Invalid wind direction value. Must be between 0 and {0} - Gamemaster.cmd.changeweather.light.success=The light has changed. -Gamemaster.cmd.changeweather.light.error=Invalid light value. Must be between 0 and {0} - Gamemaster.cmd.changeweather.atmo.success0=The air has vanished, put your vac suits! Gamemaster.cmd.changeweather.atmo.success=The air is changing. -Gamemaster.cmd.changeweather.atmo.error=Invalid atmosphere value. Must be between 0 and {0} - Gamemaster.cmd.changeweather.blowsand.success1=Sand started blowing. Gamemaster.cmd.changeweather.blowsand.success=The sand has settled. -Gamemaster.cmd.changeweather.blowsand.error=Invalid blowsand value. Must be between 0 and {0} - Gamemaster.cmd.changeweather.weather.success=The weather has changed. -Gamemaster.cmd.changeweather.weather.error=Invalid weather value. Must be between 0 and {0} - Gamemaster.cmd.changeweather.emi.success1=EMI is active. Gamemaster.cmd.changeweather.emi.success=EMI is inactive. -Gamemaster.cmd.changeweather.emi.error=Invalid EMI value. Must be between 0 and {0} # Firestarter cmd +Gamemaster.cmd.firestarter.longName=Start a Fire Gamemaster.cmd.fire.type=Type of fire. They are 1=Normal, 2=Inferno, 3=Inferno Bomb or 4=Inferno IV. Gamemaster.cmd.fire.help=Starts a fire on the board. - # Firestorm cmd +Gamemaster.cmd.firestorm.longName=Firestorm Gamemaster.cmd.firestorm.help=Starts fire in the entire board. Gamemaster.cmd.fire.failed=Failed to ignite fire. Gamemaster.cmd.fire.percent=Percentage of the board hexes to ignite. - # Orbital bombardment cmd +Gamemaster.cmd.orbitalbombardment.longName=Orbital Bombardment Gamemaster.cmd.orbitalbombardment.help=Calls an orbital bombardment on the board. It hits after the firing phase. -Gamemaster.cmd.orbitalbombardment.dmg=Damage of the bombardment at target hex. +Gamemaster.cmd.orbitalbombardment.dmg=Total damage at target hex. Gamemaster.cmd.orbitalbombardment.radius=Radius of the bombardment. Gamemaster.cmd.orbitalbombardment.error.outofbounds=Specified hex is not on the board. Gamemaster.cmd.orbitalbombardment.success=Orbital bombardment incoming! \ No newline at end of file diff --git a/megamek/src/megamek/client/ui/swing/MapMenu.java b/megamek/src/megamek/client/ui/swing/MapMenu.java index 505e6fee4f9..02f40d37980 100644 --- a/megamek/src/megamek/client/ui/swing/MapMenu.java +++ b/megamek/src/megamek/client/ui/swing/MapMenu.java @@ -1,6 +1,6 @@ /* * Copyright (c) 2005 - Ben Mazur (bmazur@sev.org) - * Copyright (c) 2021-2022 - The MegaMek Team. All Rights Reserved. + * Copyright (c) 2021-2024 - The MegaMek Team. All Rights Reserved. * * This file is part of MegaMek. * @@ -46,7 +46,6 @@ import megamek.common.weapons.other.CLFireExtinguisher; import megamek.common.weapons.other.ISFireExtinguisher; import megamek.logging.MMLogger; -import megamek.server.Server; import megamek.server.commands.*; /** @@ -407,13 +406,14 @@ private JMenu createGamemasterMenu() { if (!client.getLocalPlayer().getGameMaster()) { return menu; } else { - JMenu dmgMenu = new JMenu(Messages.getString("Gamemaster.EditDamage")); JMenu cfgMenu = new JMenu(Messages.getString("Gamemaster.Configure")); JMenu traitorMenu = new JMenu(Messages.getString("Gamemaster.Traitor")); JMenu killMenu = new JMenu(Messages.getString("Gamemaster.KillUnit")); JMenu specialCommandsMenu = createGMSpecialCommandsMenu(); + var entities = client.getGame().getEntitiesVector(coords); + for (Entity entity : entities) { dmgMenu.add(createUnitEditorMenuItem(entity)); cfgMenu.add(createCustomMekMenuItem(entity)); @@ -425,30 +425,40 @@ private JMenu createGamemasterMenu() { } if (cfgMenu.getItemCount() != 0) { menu.add(cfgMenu); + menu.addSeparator(); } if (traitorMenu.getItemCount() != 0) { menu.add(traitorMenu); } if (killMenu.getItemCount() != 0) { menu.add(killMenu); + menu.addSeparator(); } menu.add(specialCommandsMenu); return menu; } } - private record Tuple(String name, GamemasterServerCommand command) {} - + /** + * Create a menu for special commands for the GM + * @return the menu + */ private JMenu createGMSpecialCommandsMenu() { JMenu menu = new JMenu(Messages.getString("Gamemaster.SpecialCommands")); - Server.getServerInstance().getAllCommands().stream() - .filter(cmd -> cmd instanceof GamemasterServerCommand) - .map(cmd -> (GamemasterServerCommand) cmd) - .forEach(cmd -> { - JMenuItem item = new JMenuItem(cmd.getName()); - item.addActionListener(evt -> new GamemasterCommandPanel(gui.getFrame(), gui, cmd).setVisible(true)); - menu.add(item); - }); + List.of( + new KillCommand(null, null), + new OrbitalBombardmentCommand(null, null), + new ChangeOwnershipCommand(null, null), + new DisasterCommand(null, null), + new FirestarterCommand(null, null), + new FirestormCommand(null, null), + new RemoveSmokeCommand(null, null), + new ChangeWeatherCommand(null, null) + ).forEach(cmd -> { + JMenuItem item = new JMenuItem(cmd.getLongName()); + item.addActionListener(evt -> new GamemasterCommandPanel(gui.getFrame(), gui, cmd).setVisible(true)); + menu.add(item); + }); return menu; } @@ -539,11 +549,11 @@ private JMenuItem createTraitorMenuItem(Entity en) { } private JMenuItem createKillMenuItem(Entity en) { - JMenuItem item = new JMenuItem(Messages.getString("Gamemaster.KillUnit") + " " + en.getDisplayName()); + JMenuItem item = new JMenuItem(Messages.getString("Gamemaster.KillUnit.text", en.getDisplayName())); item.addActionListener(evt -> { int confirm = JOptionPane.showConfirmDialog( - gui.getFrame(), - "Are you sure you want to kill " + en.getDisplayName() + "?", "Confirm", JOptionPane.YES_NO_OPTION); + gui.getFrame(), Messages.getString("Gamemaster.KillUnit.confirmation", en.getDisplayName()), + Messages.getString("Gamemaster.dialog.confirm"), JOptionPane.YES_NO_OPTION); if (confirm == JOptionPane.YES_OPTION) { client.sendChat(String.format("/kill %d", en.getId())); } diff --git a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java index bd47005e518..be1f0df252a 100644 --- a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java +++ b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java @@ -5,6 +5,7 @@ import megamek.server.commands.arguments.Argument; import megamek.server.commands.arguments.EnumArgument; import megamek.server.commands.arguments.IntegerArgument; +import megamek.server.commands.arguments.OptionalEnumArgument; import javax.swing.*; import java.awt.*; @@ -22,64 +23,122 @@ public GamemasterCommandPanel(JFrame parent, ClientGUI client, GamemasterServerC super(parent, command.getName(), true); this.command = command; this.client = client; + initializeUI(parent); + } + + private void initializeUI(JFrame parent) { setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); + addTitleAndDescription(); + Map argumentComponents = addArgumentComponents(); + addExecuteButton(argumentComponents); + pack(); + setLocationRelativeTo(parent); + } + + private void addTitleAndDescription() { + JPanel titlePanel = new JPanel(); + titlePanel.setLayout(new BoxLayout(titlePanel, BoxLayout.Y_AXIS)); + + JLabel titleLabel = new JLabel(command.getLongName()); + titleLabel.setFont(new Font("Arial", Font.BOLD, 16)); + titlePanel.add(titleLabel); JLabel helpLabel = new JLabel(command.getHelpHtml()); - add(helpLabel); + helpLabel.setFont(new Font("Arial", Font.PLAIN, 12)); + titlePanel.add(helpLabel); + + add(titlePanel); + } + private Map addArgumentComponents() { List> arguments = command.defineArguments(); Map argumentComponents = new HashMap<>(); for (Argument argument : arguments) { - JPanel argumentPanel = new JPanel(); - argumentPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); - - JLabel label = new JLabel(argument.getName() + ":"); - argumentPanel.add(label); - - if (argument instanceof IntegerArgument) { - IntegerArgument intArg = (IntegerArgument) argument; - JSpinner spinner = new JSpinner(new SpinnerNumberModel( - intArg.hasDefaultValue() ? intArg.getValue() : 0, - intArg.getMinValue(), - intArg.getMaxValue(), - 1)); - argumentPanel.add(spinner); - argumentComponents.put(argument.getName(), spinner); - } else if (argument instanceof EnumArgument) { - EnumArgument enumArg = (EnumArgument) argument; - JComboBox comboBox = new JComboBox<>(); - for (Enum constant : enumArg.getEnumType().getEnumConstants()) { - comboBox.addItem(constant.name()); - } - if (enumArg.getValue() != null) { - comboBox.setSelectedItem(enumArg.getValue().name()); - } - argumentPanel.add(comboBox); - argumentComponents.put(argument.getName(), comboBox); - } - + JPanel argumentPanel = createArgumentPanel(argument); add(argumentPanel); + argumentComponents.put(argument.getName(), getArgumentComponent(argument, argumentPanel)); } + return argumentComponents; + } - JButton executeButton = new JButton("Execute Command"); - executeButton.addActionListener(e -> executeCommand(argumentComponents)); - add(executeButton); + private JPanel createArgumentPanel(Argument argument) { + JPanel argumentPanel = new JPanel(); + argumentPanel.setLayout(new FlowLayout()); + JLabel label = new JLabel(argument.getName() + ":"); + argumentPanel.add(label); + return argumentPanel; + } - pack(); - setLocationRelativeTo(parent); + private JComponent getArgumentComponent(Argument argument, JPanel argumentPanel) { + if (argument instanceof IntegerArgument intArg) { + JSpinner spinner = createSpinner(intArg); + argumentPanel.add(spinner); + return spinner; + } else if (argument instanceof OptionalEnumArgument enumArg) { + JComboBox comboBox = createOptionalEnumComboBox(enumArg); + argumentPanel.add(comboBox); + return comboBox; + } else if (argument instanceof EnumArgument enumArg) { + JComboBox comboBox = createEnumComboBox(enumArg); + argumentPanel.add(comboBox); + return comboBox; + } + return null; } - private String wrapText(String text, int lineLength) { - StringBuilder wrappedText = new StringBuilder(""); - int currentIndex = 0; - while (currentIndex < text.length()) { - int endIndex = Math.min(currentIndex + lineLength, text.length()); - wrappedText.append(text, currentIndex, endIndex).append("
"); - currentIndex = endIndex; + private JSpinner createSpinner(IntegerArgument intArg) { + return new JSpinner(new SpinnerNumberModel( + intArg.hasDefaultValue() ? intArg.getValue() : 0, + intArg.getMinValue(), + intArg.getMaxValue(), + 1)); + } + + private JComboBox createOptionalEnumComboBox(OptionalEnumArgument enumArg) { + JComboBox comboBox = new JComboBox<>(); + if (enumArg.getValue() == null) { + comboBox.addItem("-"); + comboBox.setSelectedItem("-"); + } + for (var arg : enumArg.getEnumType().getEnumConstants()) { + comboBox.addItem(arg.ordinal() + ": " + arg.toString()); } - wrappedText.append(""); - return wrappedText.toString(); + if (enumArg.getValue() != null) { + comboBox.setSelectedItem(enumArg.getValue().ordinal() + ": " + enumArg.getValue().toString()); + } + return comboBox; + } + + private JComboBox createEnumComboBox(EnumArgument enumArg) { + JComboBox comboBox = new JComboBox<>(); + for (Enum constant : enumArg.getEnumType().getEnumConstants()) { + comboBox.addItem(constant.name()); + } + if (enumArg.getValue() != null) { + comboBox.setSelectedItem(enumArg.getValue().name()); + } + return comboBox; + } + + private void addExecuteButton(Map argumentComponents) { + add(getExecuteButton(argumentComponents)); + } + + private JButton getExecuteButton(Map argumentComponents) { + JButton executeButton = new JButton("Execute Command"); + executeButton.addActionListener(e -> { + int response = JOptionPane.showConfirmDialog( + this, + "Are you sure you want to execute this command?", + "Execute Command", + JOptionPane.YES_NO_OPTION + ); + if (response == JOptionPane.YES_OPTION) { + executeCommand(argumentComponents); + } + }); + return executeButton; } private void executeCommand(Map argumentComponents) { @@ -93,7 +152,18 @@ private void executeCommand(Map argumentComponents) { if (component instanceof JSpinner) { args[i] = argument.getName() + "=" + ((JSpinner) component).getValue().toString(); } else if (component instanceof JComboBox) { - args[i] = argument.getName() + "=" + Objects.requireNonNull(((JComboBox) component).getSelectedItem()); + if (argument instanceof OptionalEnumArgument) { + String selectedItem = (String) ((JComboBox) component).getSelectedItem(); + if (selectedItem == null || selectedItem.equals("-")) { + // If it is null we just set it to an empty string and move on + args[i] = ""; + continue; + } + var selectedItemValue = selectedItem.split(":")[0].trim(); + args[i] = argument.getName() + "=" + selectedItemValue; + } else { + args[i] = argument.getName() + "=" + Objects.requireNonNull(((JComboBox) component).getSelectedItem()); + } } } client.getClient().sendChat("/" + command.getName() + " " + String.join(" ", args)); diff --git a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java index d2860a04112..a8971ffc63e 100644 --- a/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java +++ b/megamek/src/megamek/server/commands/ChangeOwnershipCommand.java @@ -38,7 +38,8 @@ public ChangeOwnershipCommand(Server server, TWGameManager gameManager) { super(server, gameManager, "changeOwner", - Messages.getString("Gamemaster.cmd.changeownership.help")); + Messages.getString("Gamemaster.cmd.changeownership.help"), + Messages.getString("Gamemaster.cmd.changeownership.longName")); } @Override diff --git a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java index b28f24962ed..e47c936ab1a 100644 --- a/megamek/src/megamek/server/commands/ChangeWeatherCommand.java +++ b/megamek/src/megamek/server/commands/ChangeWeatherCommand.java @@ -17,11 +17,12 @@ import megamek.common.planetaryconditions.*; import megamek.server.Server; import megamek.server.commands.arguments.Argument; -import megamek.server.commands.arguments.OptionalIntegerArgument; +import megamek.server.commands.arguments.OptionalEnumArgument; import megamek.server.totalwarfare.TWGameManager; import java.util.List; import java.util.Map; +import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; @@ -41,79 +42,67 @@ public class ChangeWeatherCommand extends GamemasterServerCommand { /** Creates new ChangeWeatherCommand */ public ChangeWeatherCommand(Server server, TWGameManager gameManager) { - super(server, gameManager, WEATHER, Messages.getString("Gamemaster.cmd.changeweather.help")); + super(server, gameManager, WEATHER, Messages.getString("Gamemaster.cmd.changeweather.help"), + Messages.getString("Gamemaster.cmd.changeweather.longName")); } @Override public List> defineArguments() { - return List.of(new OptionalIntegerArgument(FOG, Messages.getString("Gamemaster.cmd.changeweather.fog"), 0, 2), - new OptionalIntegerArgument(LIGHT, Messages.getString("Gamemaster.cmd.changeweather.light"), 0, 6), - new OptionalIntegerArgument(WIND, Messages.getString("Gamemaster.cmd.changeweather.wind"), 0, 6), - new OptionalIntegerArgument(WIND_DIR, Messages.getString("Gamemaster.cmd.changeweather.winddir"), 0, 6), - new OptionalIntegerArgument(ATMO, Messages.getString("Gamemaster.cmd.changeweather.atmo"), 0, 5), - new OptionalIntegerArgument(BLOWSAND, Messages.getString("Gamemaster.cmd.changeweather.blowsand"), 0, 1), - new OptionalIntegerArgument(EMIS, Messages.getString("Gamemaster.cmd.changeweather.emi"), 0, 1), - new OptionalIntegerArgument(WEATHER, Messages.getString("Gamemaster.cmd.changeweather.weather"), 0, 14)); + return List.of(new OptionalEnumArgument<>(FOG, Messages.getString("Gamemaster.cmd.changeweather.fog"), Fog.class), + new OptionalEnumArgument<>(LIGHT, Messages.getString("Gamemaster.cmd.changeweather.light"), Light.class), + new OptionalEnumArgument<>(WIND, Messages.getString("Gamemaster.cmd.changeweather.wind"), Wind.class), + new OptionalEnumArgument<>(WIND_DIR, Messages.getString("Gamemaster.cmd.changeweather.winddir"), WindDirection.class), + new OptionalEnumArgument<>(ATMO, Messages.getString("Gamemaster.cmd.changeweather.atmo"), Atmosphere.class), + new OptionalEnumArgument<>(BLOWSAND, Messages.getString("Gamemaster.cmd.changeweather.blowsand"), BlowingSand.class), + new OptionalEnumArgument<>(EMIS, Messages.getString("Gamemaster.cmd.changeweather.emi"), EMI.class), + new OptionalEnumArgument<>(WEATHER, Messages.getString("Gamemaster.cmd.changeweather.weather"), Weather.class)); } - private void updatePlanetaryCondition(int value, int connId, int maxLength, Consumer setter, - Function successMessage, Function errorMessage) { - if (value >= 0 && value < maxLength) { - setter.accept(value); - server.sendServerChat(connId, successMessage.apply(value)); - } else { - server.sendServerChat(connId, errorMessage.apply(maxLength)); + private record Condition>(Consumer setter, Function successMessage) { + @SuppressWarnings("unchecked") + public void updatePlanetaryCondition(Enum value, int connId, Server server) { + setter.accept((E) value); + server.sendServerChat(connId, successMessage.apply((E) value)); } } - private record Condition(int maxLength, Consumer setter, Function successMessage, Function errorMessage) {} - /** * Run this command with the arguments supplied */ @Override public void runAsGM(int connId, Map> args) { var planetaryConditions = getGameManager().getGame().getPlanetaryConditions(); + var conditions = getStringConditionMap(planetaryConditions); + conditions.forEach(updatePlanetaryConditions(connId, args)); + getGameManager().getGame().setPlanetaryConditions(planetaryConditions); + } - Map conditions = Map.of( - FOG, new Condition(Fog.values().length, value -> planetaryConditions.setFog(Fog.values()[value]), - value -> Messages.getString("Gamemaster.cmd.changeweather.fog.success"), - maxLength -> Messages.getString("Gamemaster.cmd.changeweather.fog.error", (maxLength - 1))), - WIND, new Condition(Wind.values().length, value -> planetaryConditions.setWind(Wind.values()[value]), - value -> Messages.getString("Gamemaster.cmd.changeweather.wind.success"), - maxLength -> Messages.getString("Gamemaster.cmd.changeweather.wind.error", (maxLength - 1))), - WIND_DIR, new Condition(WindDirection.values().length, value -> planetaryConditions.setWindDirection(WindDirection.values()[value]), - value -> Messages.getString("Gamemaster.cmd.changeweather.winddir.success"), - maxLength -> Messages.getString("Gamemaster.cmd.changeweather.winddir.error", (maxLength - 1))), - LIGHT, new Condition(Light.values().length, value -> planetaryConditions.setLight(Light.values()[value]), - value -> Messages.getString("Gamemaster.cmd.changeweather.light.success"), - maxLength -> Messages.getString("Gamemaster.cmd.changeweather.light.error", (maxLength - 1))), - ATMO, new Condition(Atmosphere.values().length, value -> planetaryConditions.setAtmosphere(Atmosphere.values()[value]), - value -> value == 0 ? Messages.getString("Gamemaster.cmd.changeweather.atmo.success0") : Messages.getString("Gamemaster.cmd.changeweather.atmo.success"), - maxLength -> Messages.getString("Gamemaster.cmd.changeweather.atmo.error", (maxLength - 1))), - BLOWSAND, new Condition(BlowingSand.values().length, value -> planetaryConditions.setBlowingSand(BlowingSand.values()[value]), - value -> value == 1 ? Messages.getString("Gamemaster.cmd.changeweather.blowsand.success1") : Messages.getString("Gamemaster.cmd.changeweather.blowsand.success"), - maxLength -> Messages.getString("Gamemaster.cmd.changeweather.blowsand.error", (maxLength - 1))), - WEATHER, new Condition(Weather.values().length, value -> planetaryConditions.setWeather(Weather.values()[value]), - value -> Messages.getString("Gamemaster.cmd.changeweather.weather.success"), - maxLength -> Messages.getString("Gamemaster.cmd.changeweather.weather.error", (maxLength - 1))), - EMIS, new Condition(EMI.values().length, value -> planetaryConditions.setEMI(EMI.values()[value]), - value -> value == 1 ? Messages.getString("Gamemaster.cmd.changeweather.emi.success1") : Messages.getString("Gamemaster.cmd.changeweather.emi.success"), - maxLength -> Messages.getString("Gamemaster.cmd.changeweather.emi.error", (maxLength - 1))) - ); - - conditions.forEach((prefix, condition) -> { - if (args.containsKey(prefix) && ((OptionalIntegerArgument) args.get(prefix)).getValue().isPresent()) { - updatePlanetaryCondition( - ((OptionalIntegerArgument) args.get(prefix)).getValue().get(), - connId, - condition.maxLength, - condition.setter, - condition.successMessage, - condition.errorMessage); + private BiConsumer> updatePlanetaryConditions(int connId, Map> args) { + return (prefix, condition) -> { + if (args.containsKey(prefix) && ((OptionalEnumArgument) args.get(prefix)).isPresent()) { + var value = ((OptionalEnumArgument) args.get(prefix)).getValue(); + condition.updatePlanetaryCondition(value, connId, server); } - }); + }; + } - getGameManager().getGame().setPlanetaryConditions(planetaryConditions); + private static Map> getStringConditionMap(PlanetaryConditions planetaryConditions) { + return Map.of( + FOG, new Condition<>(planetaryConditions::setFog, value -> Messages.getString("Gamemaster.cmd.changeweather.fog.success")), + WIND, new Condition<>(planetaryConditions::setWind, value -> Messages.getString("Gamemaster.cmd.changeweather.wind.success")), + WIND_DIR, new Condition<>(planetaryConditions::setWindDirection, value -> Messages.getString("Gamemaster.cmd.changeweather.winddir.success")), + LIGHT, new Condition<>(planetaryConditions::setLight, value -> Messages.getString("Gamemaster.cmd.changeweather.light.success")), + ATMO, new Condition<>(planetaryConditions::setAtmosphere, + value -> value.equals(Atmosphere.VACUUM) ? Messages.getString("Gamemaster.cmd.changeweather.atmo.success0") : + Messages.getString("Gamemaster.cmd.changeweather.atmo.success")), + BLOWSAND, new Condition<>(planetaryConditions::setBlowingSand, + value -> value.equals(BlowingSand.BLOWING_SAND) ? Messages.getString("Gamemaster.cmd.changeweather.blowsand.success1") : + Messages.getString("Gamemaster.cmd.changeweather.blowsand.success")), + WEATHER, new Condition<>(planetaryConditions::setWeather, + value -> Messages.getString("Gamemaster.cmd.changeweather.weather.success")), + EMIS, new Condition<>(planetaryConditions::setEMI, + value -> value.equals(EMI.EMI) ? Messages.getString("Gamemaster.cmd.changeweather.emi.success1") : + Messages.getString("Gamemaster.cmd.changeweather.emi.success")) + ); } } diff --git a/megamek/src/megamek/server/commands/DisasterCommand.java b/megamek/src/megamek/server/commands/DisasterCommand.java index 0c7d3dc4b2f..920cc1209f5 100644 --- a/megamek/src/megamek/server/commands/DisasterCommand.java +++ b/megamek/src/megamek/server/commands/DisasterCommand.java @@ -39,6 +39,7 @@ enum Disaster { ORBITAL_BOMBARDMENT_3, SANDSTORM, HAILSTORM, + ICESTORM, ECLIPSE, SOLAR_FLARE, SUPERNOVA, @@ -52,7 +53,8 @@ public static Disaster getRandomDisaster() { } public DisasterCommand(Server server, TWGameManager gameManager) { - super(server, gameManager, "disaster", Messages.getString("Gamemaster.cmd.disaster.help")); + super(server, gameManager, "disaster", Messages.getString("Gamemaster.cmd.disaster.help"), + Messages.getString("Gamemaster.cmd.disaster.longName")); } @Override @@ -100,6 +102,10 @@ private void runDisasterCommand(int connId, Disaster disaster) { new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "weather=13", "wind=4", "winddir=6"}); server.sendServerChat("A hailstorm is incoming!"); break; + case ICESTORM: + new ChangeWeatherCommand(server, gameManager).run(connId, new String[]{"weather", "fog=1", "weather=11", "wind=6", "winddir=6"}); + server.sendServerChat("A hailstorm is incoming!"); + break; case FIRESTORM: new FirestormCommand(server, gameManager).run(connId, new String[]{"firestorm", "2", "50"}); server.sendServerChat("A firestorm is consuming the battlefield!"); diff --git a/megamek/src/megamek/server/commands/FirestarterCommand.java b/megamek/src/megamek/server/commands/FirestarterCommand.java index 2af7f0d4913..281759a1ef9 100644 --- a/megamek/src/megamek/server/commands/FirestarterCommand.java +++ b/megamek/src/megamek/server/commands/FirestarterCommand.java @@ -41,7 +41,8 @@ public FirestarterCommand(Server server, TWGameManager gameManager) { super(server, gameManager, FIRESTARTER, - Messages.getString("Gamemaster.cmd.fire.help")); + Messages.getString("Gamemaster.cmd.fire.help"), + Messages.getString("Gamemaster.cmd.firestarter.longName")); } @Override diff --git a/megamek/src/megamek/server/commands/FirestormCommand.java b/megamek/src/megamek/server/commands/FirestormCommand.java index e349392718c..8f482489b46 100644 --- a/megamek/src/megamek/server/commands/FirestormCommand.java +++ b/megamek/src/megamek/server/commands/FirestormCommand.java @@ -40,7 +40,8 @@ public FirestormCommand(Server server, TWGameManager gameManager) { super(server, gameManager, FIRESTORM, - Messages.getString("Gamemaster.cmd.firestorm.help")); + Messages.getString("Gamemaster.cmd.firestorm.help"), + Messages.getString("Gamemaster.cmd.firestorm.longName")); } @Override diff --git a/megamek/src/megamek/server/commands/GamemasterServerCommand.java b/megamek/src/megamek/server/commands/GamemasterServerCommand.java index cd3674e09bf..d22dcc36f3d 100644 --- a/megamek/src/megamek/server/commands/GamemasterServerCommand.java +++ b/megamek/src/megamek/server/commands/GamemasterServerCommand.java @@ -34,6 +34,8 @@ public abstract class GamemasterServerCommand extends ServerCommand { protected final TWGameManager gameManager; protected final static MMLogger logger = MMLogger.create(GamemasterServerCommand.class); private final String errorMsg; + private final String longName; + /** * Creates new ServerCommand that can only be used by Game Masters * @@ -42,10 +44,11 @@ public abstract class GamemasterServerCommand extends ServerCommand { * @param name the name of the command * @param helpText the help text for the command */ - public GamemasterServerCommand(Server server, TWGameManager gameManager, String name, String helpText) { + public GamemasterServerCommand(Server server, TWGameManager gameManager, String name, String helpText, String longName) { super(server, name, helpText); this.gameManager = gameManager; this.errorMsg = "Error executing command: " + name; + this.longName = longName; } private boolean isGM(int connId) { @@ -145,7 +148,7 @@ public String getHelpHtml() { this.getHelp() .replaceAll("<", "<") .replaceAll(">", ">") - .replaceAll(" ", " ") + .replaceAll(" ", "| ") .replaceAll(NEWLINE, "
")+ ""; } @@ -157,6 +160,7 @@ public String getHelp() { .append(NEWLINE) .append(Messages.getString("Gamemaster.cmd.help")) .append(NEWLINE) + .append(NEWLINE) .append("/") .append(getName()); @@ -165,7 +169,9 @@ public String getHelp() { .append(arg.getRepr()); } - help.append(NEWLINE); + help.append(NEWLINE) + .append(NEWLINE); + for (var arg : defineArguments()) { help.append(LONG_WHITESPACE) .append(arg.getName()) @@ -177,6 +183,10 @@ public String getHelp() { return help.toString(); } + public String getLongName() { + return longName; + } + // The new method for game master commands that uses parsed arguments protected abstract void runAsGM(int connId, Map> args); } diff --git a/megamek/src/megamek/server/commands/KillCommand.java b/megamek/src/megamek/server/commands/KillCommand.java index d0d19a94970..bbbe191067c 100644 --- a/megamek/src/megamek/server/commands/KillCommand.java +++ b/megamek/src/megamek/server/commands/KillCommand.java @@ -31,7 +31,8 @@ public class KillCommand extends GamemasterServerCommand{ /** Creates new KillCommand */ public KillCommand(Server server, TWGameManager gameManager) { - super(server, gameManager, "kill", Messages.getString("Gamemaster.cmd.kill.help")); + super(server, gameManager, "kill", Messages.getString("Gamemaster.cmd.kill.help"), + Messages.getString("Gamemaster.cmd.kill.longName")); } @Override diff --git a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java index 7d9a08b65db..450338e312a 100644 --- a/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java +++ b/megamek/src/megamek/server/commands/OrbitalBombardmentCommand.java @@ -34,7 +34,8 @@ public class OrbitalBombardmentCommand extends GamemasterServerCommand { public static final String RADIUS = "radius"; public OrbitalBombardmentCommand(Server server, TWGameManager gameManager) { - super(server, gameManager, "ob", Messages.getString("Gamemaster.cmd.orbitalbombardment.help")); + super(server, gameManager, "ob", Messages.getString("Gamemaster.cmd.orbitalbombardment.help"), + Messages.getString("Gamemaster.cmd.orbitalbombardment.longName")); } @Override diff --git a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java index 7286cc99955..25e24540d0a 100644 --- a/megamek/src/megamek/server/commands/RemoveSmokeCommand.java +++ b/megamek/src/megamek/server/commands/RemoveSmokeCommand.java @@ -28,7 +28,8 @@ public class RemoveSmokeCommand extends GamemasterServerCommand { /** Creates new KillCommand */ public RemoveSmokeCommand(Server server, TWGameManager gameManager) { - super(server, gameManager, "nosmoke", Messages.getString("Gamemaster.cmd.removesmoke.help")); + super(server, gameManager, "nosmoke", Messages.getString("Gamemaster.cmd.removesmoke.help"), + Messages.getString("Gamemaster.cmd.removesmoke.longName")); } @Override diff --git a/megamek/src/megamek/server/commands/arguments/Argument.java b/megamek/src/megamek/server/commands/arguments/Argument.java index e04da44df35..5bcd84ef251 100644 --- a/megamek/src/megamek/server/commands/arguments/Argument.java +++ b/megamek/src/megamek/server/commands/arguments/Argument.java @@ -24,7 +24,7 @@ public String getDescription() { } public String getRepr() { - return "<" + getName() + ">"; + return "<" + getName() + "=#>"; } public abstract String getHelp(); diff --git a/megamek/src/megamek/server/commands/arguments/EnumArgument.java b/megamek/src/megamek/server/commands/arguments/EnumArgument.java index f317027432f..85747815c97 100644 --- a/megamek/src/megamek/server/commands/arguments/EnumArgument.java +++ b/megamek/src/megamek/server/commands/arguments/EnumArgument.java @@ -5,8 +5,8 @@ import java.util.Arrays; public class EnumArgument> extends Argument { - private final Class enumType; - private final E defaultValue; + protected final Class enumType; + protected final E defaultValue; public EnumArgument(String name, String description, Class enumType, E defaultValue) { super(name, description); From a4c6b6ac8b3afc0254958ce235143fe106a839c8 Mon Sep 17 00:00:00 2001 From: Scoppio Date: Fri, 15 Nov 2024 22:15:04 -0300 Subject: [PATCH 11/20] feat: server commands added --- .../gmCommands/GamemasterCommandPanel.java | 2 +- .../commands/GamemasterServerCommand.java | 2 +- .../arguments/OptionalEnumArgument.java | 52 +++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 megamek/src/megamek/server/commands/arguments/OptionalEnumArgument.java diff --git a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java index be1f0df252a..bc6e7b9c6e5 100644 --- a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java +++ b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java @@ -102,7 +102,7 @@ private JComboBox createOptionalEnumComboBox(OptionalEnumArgument enu comboBox.setSelectedItem("-"); } for (var arg : enumArg.getEnumType().getEnumConstants()) { - comboBox.addItem(arg.ordinal() + ": " + arg.toString()); + comboBox.addItem(arg.ordinal() + ": " + arg); } if (enumArg.getValue() != null) { comboBox.setSelectedItem(enumArg.getValue().ordinal() + ": " + enumArg.getValue().toString()); diff --git a/megamek/src/megamek/server/commands/GamemasterServerCommand.java b/megamek/src/megamek/server/commands/GamemasterServerCommand.java index d22dcc36f3d..ef584614c06 100644 --- a/megamek/src/megamek/server/commands/GamemasterServerCommand.java +++ b/megamek/src/megamek/server/commands/GamemasterServerCommand.java @@ -148,7 +148,7 @@ public String getHelpHtml() { this.getHelp() .replaceAll("<", "<") .replaceAll(">", ">") - .replaceAll(" ", "| ") + .replaceAll(LONG_WHITESPACE, "| ") .replaceAll(NEWLINE, "
")+ ""; } diff --git a/megamek/src/megamek/server/commands/arguments/OptionalEnumArgument.java b/megamek/src/megamek/server/commands/arguments/OptionalEnumArgument.java new file mode 100644 index 00000000000..2c7ce40a1c4 --- /dev/null +++ b/megamek/src/megamek/server/commands/arguments/OptionalEnumArgument.java @@ -0,0 +1,52 @@ +package megamek.server.commands.arguments; + +import megamek.client.ui.Messages; + +import java.util.Arrays; + +public class OptionalEnumArgument> extends EnumArgument { + + public OptionalEnumArgument(String name, String description, Class enumType) { + super(name, description, enumType, null); + } + + @Override + public void parse(String input) throws IllegalArgumentException { + if (input == null) { + return; + } + try { + value = enumType.getEnumConstants()[Integer.parseInt(input)]; + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException(getName() + " must be one of: " + getEnumConstantsString()); + } + } + + public boolean isPresent() { + return value != null; + } + + public boolean isEmpty() { + return value == null; + } + + private String getEnumConstantsString() { + var sb = new StringBuilder(); + for (int i = 0; i < enumType.getEnumConstants().length; i++) { + sb.append(i).append(": ").append(enumType.getEnumConstants()[i]); + if (i < enumType.getEnumConstants().length - 1) { + sb.append(", "); + } + } + return sb.toString(); + } + + @Override + public String getHelp() { + return getDescription() + + " [" + getEnumConstantsString() + "] " + + (defaultValue != null ? " [default: " + defaultValue + "]. " : ". ") + + Messages.getString("Gamemaster.cmd.params.optional"); + } + +} From 1bc2276fa611c99d5ae9a8eaae03d9e14bf0b3cf Mon Sep 17 00:00:00 2001 From: Scoppio Date: Fri, 15 Nov 2024 22:29:45 -0300 Subject: [PATCH 12/20] feat: fire fight arguments added --- .../i18n/megamek/client/messages.properties | 24 +++- .../src/megamek/client/ui/swing/MapMenu.java | 113 ++++++++++++------ .../client/ui/swing/boardview/BoardView.java | 8 +- .../gmCommands/GamemasterCommandPanel.java | 42 ++++++- megamek/src/megamek/common/Board.java | 20 ---- megamek/src/megamek/common/Entity.java | 3 + megamek/src/megamek/common/Game.java | 14 ++- .../common/weapons/AreaEffectHelper.java | 27 ++--- megamek/src/megamek/server/Server.java | 7 -- .../server/commands/FirefightCommand.java | 77 ++++++++++++ .../commands/GamemasterServerCommand.java | 10 +- .../server/commands/NoFiresCommand.java | 87 ++++++++++++++ .../server/commands/RescueCommand.java | 61 ++++++++++ .../server/commands/arguments/Argument.java | 14 ++- .../commands/arguments/EnumArgument.java | 5 + .../commands/arguments/IntegerArgument.java | 6 +- .../arguments/OptionalEnumArgument.java | 5 + .../arguments/OptionalIntegerArgument.java | 1 + .../server/totalwarfare/TWGameManager.java | 8 +- 19 files changed, 437 insertions(+), 95 deletions(-) create mode 100644 megamek/src/megamek/server/commands/FirefightCommand.java create mode 100644 megamek/src/megamek/server/commands/NoFiresCommand.java create mode 100644 megamek/src/megamek/server/commands/RescueCommand.java diff --git a/megamek/i18n/megamek/client/messages.properties b/megamek/i18n/megamek/client/messages.properties index 8fdaeab24d9..87910252951 100644 --- a/megamek/i18n/megamek/client/messages.properties +++ b/megamek/i18n/megamek/client/messages.properties @@ -4636,7 +4636,14 @@ SBFTargetDialog.title=Targeting Gamemaster.Gamemaster=Gamemaster Gamemaster.EditDamage=Edit Damage (unstable) Gamemaster.Configure=Configure (unstable) +Gamemaster.Traitor.title=Traitor +Gamemaster.Traitor.confirm=Confirm Gamemaster.Traitor=Traitor Unit +Gamemaster.Traitor.text=Traitor Unit {0} +Gamemaster.Traitor.text.noplayers=No players available. Units cannot have their ownership passed to players that aren't assigned to a team. +Gamemaster.Traitor.text.selectplayer=Choose the player to gain ownership of this unit, {0}, when it turns traitor +Gamemaster.Traitor.confirmation={0} will switch to {1}'s side at the end of this turn. Are you sure? + Gamemaster.dialog.confirm=Confirm Gamemaster.KillUnit=Kill Unit Gamemaster.KillUnit.text=Kill Unit {0} @@ -4650,6 +4657,13 @@ Gamemaster.cmd.params.required=Required. Gamemaster.cmd.params.optional=Optional. Gamemaster.cmd.x=The x coordinate of the hex. Gamemaster.cmd.y=The y coordinate of the hex. +# Rescue cmd +Gamemaster.cmd.rescue.longName=Rescue Unit +Gamemaster.cmd.rescue.unitID=ID of the unit to rescue. +Gamemaster.cmd.rescue.help=Rescues a single unit. +Gamemaster.cmd.rescue.success=Will be rescued at the end of this phase. +Gamemaster.Rescue.text=Rescue Unit {0} +Gamemaster.Rescue.confirmation=Are you sure you want to rescue {0}? # Remove Smoke cmd Gamemaster.cmd.removesmoke.longName=Remove Smoke Gamemaster.cmd.removesmoke.help=Removes all smoke cloud hexes. @@ -4710,4 +4724,12 @@ Gamemaster.cmd.orbitalbombardment.help=Calls an orbital bombardment on the board Gamemaster.cmd.orbitalbombardment.dmg=Total damage at target hex. Gamemaster.cmd.orbitalbombardment.radius=Radius of the bombardment. Gamemaster.cmd.orbitalbombardment.error.outofbounds=Specified hex is not on the board. -Gamemaster.cmd.orbitalbombardment.success=Orbital bombardment incoming! \ No newline at end of file +Gamemaster.cmd.orbitalbombardment.success=Orbital bombardment incoming! +# Firefight +Gamemaster.cmd.firefight.longName=Firefight +Gamemaster.cmd.firefight.reason=Fire extinguished +Gamemaster.cmd.firefight.help=Extinguishes a fire on the board. +# No Fire +Gamemaster.cmd.nofire.longName=No Fires +Gamemaster.cmd.nofire.help=Extinguishes all fires on the board. + diff --git a/megamek/src/megamek/client/ui/swing/MapMenu.java b/megamek/src/megamek/client/ui/swing/MapMenu.java index 02f40d37980..fa22b1f3710 100644 --- a/megamek/src/megamek/client/ui/swing/MapMenu.java +++ b/megamek/src/megamek/client/ui/swing/MapMenu.java @@ -229,17 +229,7 @@ private JMenuItem TargetMenuItem(Targetable t) { JMenuItem item = new JMenuItem(Messages.getString("ClientGUI.targetMenuItem") + t.getDisplayName()); - String targetCode; - - if (t instanceof Entity) { - targetCode = "E|" + ((Entity) t).getId(); - } else if (t instanceof BuildingTarget) { - targetCode = "B|" + t.getPosition().getX() + "|" + t.getPosition().getY() + "|" + t.getTargetType(); - } else if (t instanceof MinefieldTarget) { - targetCode = "M|" + t.getPosition().getX() + "|" + t.getPosition().getY(); - } else { - targetCode = "H|" + t.getPosition().getX() + "|" + t.getPosition().getY() + "|" + t.getTargetType(); - } + String targetCode = getTargetCode(t); item.setActionCommand(targetCode); item.addActionListener(evt -> { @@ -255,6 +245,21 @@ private JMenuItem TargetMenuItem(Targetable t) { return item; } + private static String getTargetCode(Targetable t) { + String targetCode; + + if (t instanceof Entity) { + targetCode = "E|" + ((Entity) t).getId(); + } else if (t instanceof BuildingTarget) { + targetCode = "B|" + t.getPosition().getX() + "|" + t.getPosition().getY() + "|" + t.getTargetType(); + } else if (t instanceof MinefieldTarget) { + targetCode = "M|" + t.getPosition().getX() + "|" + t.getPosition().getY(); + } else { + targetCode = "H|" + t.getPosition().getX() + "|" + t.getPosition().getY() + "|" + t.getTargetType(); + } + return targetCode; + } + private @Nullable JMenuItem createChargeMenuItem() { if (!client.getGame().getEntities(coords).hasNext()) { return null; @@ -403,12 +408,11 @@ private JMenu createSpecialHexDisplayMenu() { */ private JMenu createGamemasterMenu() { JMenu menu = new JMenu(Messages.getString("Gamemaster.Gamemaster")); - if (!client.getLocalPlayer().getGameMaster()) { - return menu; - } else { + if (client.getLocalPlayer().getGameMaster()) { JMenu dmgMenu = new JMenu(Messages.getString("Gamemaster.EditDamage")); JMenu cfgMenu = new JMenu(Messages.getString("Gamemaster.Configure")); JMenu traitorMenu = new JMenu(Messages.getString("Gamemaster.Traitor")); + JMenu rescueMenu = new JMenu(Messages.getString("Gamemaster.Rescue")); JMenu killMenu = new JMenu(Messages.getString("Gamemaster.KillUnit")); JMenu specialCommandsMenu = createGMSpecialCommandsMenu(); @@ -418,6 +422,7 @@ private JMenu createGamemasterMenu() { dmgMenu.add(createUnitEditorMenuItem(entity)); cfgMenu.add(createCustomMekMenuItem(entity)); traitorMenu.add(createTraitorMenuItem(entity)); + rescueMenu.add(createRescueMenuItem(entity)); killMenu.add(createKillMenuItem(entity)); } if (dmgMenu.getItemCount() != 0) { @@ -435,8 +440,8 @@ private JMenu createGamemasterMenu() { menu.addSeparator(); } menu.add(specialCommandsMenu); - return menu; } + return menu; } /** @@ -446,17 +451,20 @@ private JMenu createGamemasterMenu() { private JMenu createGMSpecialCommandsMenu() { JMenu menu = new JMenu(Messages.getString("Gamemaster.SpecialCommands")); List.of( - new KillCommand(null, null), - new OrbitalBombardmentCommand(null, null), new ChangeOwnershipCommand(null, null), + new ChangeWeatherCommand(null, null), new DisasterCommand(null, null), + new KillCommand(null, null), + new FirefightCommand(null, null), new FirestarterCommand(null, null), new FirestormCommand(null, null), + new NoFiresCommand(null, null), + new OrbitalBombardmentCommand(null, null), new RemoveSmokeCommand(null, null), - new ChangeWeatherCommand(null, null) + new RescueCommand(null, null) ).forEach(cmd -> { JMenuItem item = new JMenuItem(cmd.getLongName()); - item.addActionListener(evt -> new GamemasterCommandPanel(gui.getFrame(), gui, cmd).setVisible(true)); + item.addActionListener(evt -> new GamemasterCommandPanel(gui.getFrame(), gui, cmd, coords).setVisible(true)); menu.add(item); }); @@ -488,9 +496,14 @@ JMenuItem createUnitEditorMenuItem(Entity entity) { return item; } - private JMenuItem createTraitorMenuItem(Entity en) { + /** + * Create traitor menu for game master options + * @param entity the entity to create the traitor menu for + * @return JMenu the traitor menu + */ + private JMenuItem createTraitorMenuItem(Entity entity) { // Traitor Command - JMenuItem item = new JMenuItem(Messages.getString("Gamemaster.Traitor") + " " + en.getDisplayName()); + JMenuItem item = new JMenuItem(Messages.getString("Gamemaster.Traitor.text", entity.getDisplayName())); item.addActionListener(evt -> { gui.getBoardView().setShouldIgnoreKeys(false); var players = client.getGame().getPlayersList(); @@ -498,7 +511,7 @@ private JMenuItem createTraitorMenuItem(Entity en) { String[] playerNames = new String[players.size() - 1]; String[] options = new String[players.size() - 1]; - Player currentOwner = en.getOwner(); + Player currentOwner = entity.getOwner(); // Loop through the players vector and fill in the arrays int idx = 0; for (var player : players) { @@ -515,15 +528,14 @@ private JMenuItem createTraitorMenuItem(Entity en) { // No players available? if (idx == 0) { JOptionPane.showMessageDialog(gui.getFrame(), - "No players available. Units cannot be traitored to players " - + "that aren't assigned to a team."); + Messages.getString("Gamemaster.Traitor.text.noplayers")); return; } // Dialog for choosing which player to transfer to String option = (String) JOptionPane.showInputDialog(gui.getFrame(), - "Choose the player to gain ownership of this unit (" + en.getDisplayName() + ") when it turns traitor", - "Traitor", JOptionPane.QUESTION_MESSAGE, null, + Messages.getString("Gamemaster.Traitor.text.selectplayer", entity.getDisplayName()), + Messages.getString("Gamemaster.Traitor.title"), JOptionPane.QUESTION_MESSAGE, null, options, options[0]); // Verify that we have a valid option... @@ -535,12 +547,12 @@ private JMenuItem createTraitorMenuItem(Entity en) { // And now we perform the actual transfer int confirm = JOptionPane.showConfirmDialog( gui.getFrame(), - en.getDisplayName() + " will switch to " + name - + "'s side at the end of this turn. Are you sure?", - "Confirm", + Messages.getString("Gamemaster.Traitor.confirmation", entity.getDisplayName(), name), + Messages.getString("Gamemaster.Traitor.confirm"), JOptionPane.YES_NO_OPTION); + if (confirm == JOptionPane.YES_OPTION) { - client.sendChat(String.format("/changeOwner %d %d", en.getId(), id)); + client.sendChat(String.format("/changeOwner %d %d", entity.getId(), id)); } } }); @@ -548,14 +560,43 @@ private JMenuItem createTraitorMenuItem(Entity en) { return item; } - private JMenuItem createKillMenuItem(Entity en) { - JMenuItem item = new JMenuItem(Messages.getString("Gamemaster.KillUnit.text", en.getDisplayName())); + /** + * Create a menu for killing a specific entity + * + * @param entity the entity to create the kill menu for + * @return JMenuItem the kill menu item + */ + private JMenuItem createKillMenuItem(Entity entity) { + return createCommandMenuItem(entity, "Gamemaster.KillUnit.text", + "Gamemaster.KillUnit.confirmation", String.format("/kill %d", entity.getId())); + } + + /** + * Create a menu for rescuing a specific entity + * @param entity the entity to create the rescue menu for + * @return the rescue menu item + */ + private JMenuItem createRescueMenuItem(Entity entity) { + return createCommandMenuItem(entity, "Gamemaster.Rescue.text", + "Gamemaster.Rescue.confirmation", String.format("/rescue %d", entity.getId())); + } + + /** + * Create a menu for a specific GM command + * @param entity the entity to create the menu for + * @param messageKey the menu item message key for the menu item + * @param confirmationKey the confirmation message key + * @param command the command that will be sent to the server + * @return the menu item + */ + private JMenuItem createCommandMenuItem(Entity entity, String messageKey, String confirmationKey, String command) { + JMenuItem item = new JMenuItem(Messages.getString(messageKey, entity.getDisplayName())); item.addActionListener(evt -> { int confirm = JOptionPane.showConfirmDialog( - gui.getFrame(), Messages.getString("Gamemaster.KillUnit.confirmation", en.getDisplayName()), + gui.getFrame(), Messages.getString(confirmationKey, entity.getDisplayName()), Messages.getString("Gamemaster.dialog.confirm"), JOptionPane.YES_NO_OPTION); if (confirm == JOptionPane.YES_OPTION) { - client.sendChat(String.format("/kill %d", en.getId())); + client.sendChat(command); } }); return item; @@ -1509,9 +1550,7 @@ private void selectTarget() { if (list.size() == 1) { myTarget = selectedEntity = list.firstElement(); - - if (currentPanel instanceof FiringDisplay) { - FiringDisplay panel = (FiringDisplay) currentPanel; + if (currentPanel instanceof FiringDisplay panel) { panel.target(myTarget); } else if (currentPanel instanceof PhysicalDisplay) { ((PhysicalDisplay) currentPanel).target(myTarget); diff --git a/megamek/src/megamek/client/ui/swing/boardview/BoardView.java b/megamek/src/megamek/client/ui/swing/boardview/BoardView.java index 50c9e923c09..0fd359ebd52 100644 --- a/megamek/src/megamek/client/ui/swing/boardview/BoardView.java +++ b/megamek/src/megamek/client/ui/swing/boardview/BoardView.java @@ -1456,10 +1456,16 @@ private Mounted selectedWeapon() { return (clientgui != null) ? clientgui.getDisplayedWeapon().orElse(null) : null; } + /** + * Draw the orbital bombardment attacks on the board view + * + * @author Luana Coppio + * @param boardGraphics The graphics object to draw on + */ private void drawOrbitalBombardmentHexes(Graphics boardGraphics) { Image orbitalBombardmentImage = tileManager.getOrbitalBombardmentImage(); Rectangle view = boardGraphics.getClipBounds(); - boolean justDraw = false; + // Compute the origin of the viewing area int drawX = (view.x / (int) (HEX_WC * scale)) - 1; int drawY = (view.y / (int) (HEX_H * scale)) - 1; diff --git a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java index bc6e7b9c6e5..25d7b94acc5 100644 --- a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java +++ b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java @@ -1,6 +1,8 @@ package megamek.client.ui.swing.gmCommands; import megamek.client.ui.swing.ClientGUI; +import megamek.common.Coords; +import megamek.common.annotations.Nullable; import megamek.server.commands.GamemasterServerCommand; import megamek.server.commands.arguments.Argument; import megamek.server.commands.arguments.EnumArgument; @@ -14,15 +16,26 @@ import java.util.Map; import java.util.Objects; -// JPanel wrapper for game master commands +/** + * Dialog for executing a gamemaster command. + */ public class GamemasterCommandPanel extends JDialog { private final GamemasterServerCommand command; private final ClientGUI client; - - public GamemasterCommandPanel(JFrame parent, ClientGUI client, GamemasterServerCommand command) { + private final Coords coords; + + /** + * Constructor for the dialog for executing a gamemaster command. + * + * @param parent The parent frame. + * @param client The client GUI. + * @param command The command to render. + */ + public GamemasterCommandPanel(JFrame parent, ClientGUI client, GamemasterServerCommand command, @Nullable Coords coords) { super(parent, command.getName(), true); this.command = command; this.client = client; + this.coords = coords; initializeUI(parent); } @@ -87,9 +100,22 @@ private JComponent getArgumentComponent(Argument argument, JPanel argumentPan return null; } + private boolean isArgumentX(Argument argument) { + return argument.getName().equals("x"); + } + + private boolean isArgumentY(Argument argument) { + return argument.getName().equals("y"); + } + + private int getIntArgumentDefaultValue(IntegerArgument intArg) { + return intArg.hasDefaultValue() ? intArg.getValue() : isArgumentX(intArg) ? coords.getX() : + isArgumentY(intArg) ? coords.getY() : 0; + } + private JSpinner createSpinner(IntegerArgument intArg) { return new JSpinner(new SpinnerNumberModel( - intArg.hasDefaultValue() ? intArg.getValue() : 0, + getIntArgumentDefaultValue(intArg), intArg.getMinValue(), intArg.getMaxValue(), 1)); @@ -141,6 +167,13 @@ private JButton getExecuteButton(Map argumentComponents) { return executeButton; } + /** + * Execute the command with the given arguments. + * It runs the command using the client chat, this way the command is sent to the server. + * All arguments are loaded as named variables in the form of "argumentName=argumentValue". + * + * @param argumentComponents The components that hold the arguments selected. + */ private void executeCommand(Map argumentComponents) { List> arguments = command.defineArguments(); String[] args = new String[arguments.size()]; @@ -166,6 +199,7 @@ private void executeCommand(Map argumentComponents) { } } } + client.getClient().sendChat("/" + command.getName() + " " + String.join(" ", args)); } } diff --git a/megamek/src/megamek/common/Board.java b/megamek/src/megamek/common/Board.java index f3bdc36db1f..427cce25fd8 100644 --- a/megamek/src/megamek/common/Board.java +++ b/megamek/src/megamek/common/Board.java @@ -2084,24 +2084,4 @@ public static int encodeCustomDeploymentZoneID(int zoneID) { return zoneID + NUM_ZONES_X2; } - public void clearOrbitalBombardmentIcons() { - for (Coords coords : specialHexes.keySet()) { - removeOrbitalBombardmentIcons(coords); - } - } - - public void removeOrbitalBombardmentIcons(Coords coords) { - // Do nothing if the coords aren't on this board. - if (!this.contains(coords) || null == specialHexes.get(coords)) { - return; - } - - // Use iterator so we can remove while traversing - for (Iterator iterator = specialHexes.get(coords).iterator(); iterator.hasNext();) { - SpecialHexDisplay shd = iterator.next(); - if (ORBITAL_BOMBARDMENT.equals(shd.getType())) { - iterator.remove(); - } - } - } } diff --git a/megamek/src/megamek/common/Entity.java b/megamek/src/megamek/common/Entity.java index d54020dc530..ec645b1c008 100644 --- a/megamek/src/megamek/common/Entity.java +++ b/megamek/src/megamek/common/Entity.java @@ -4790,6 +4790,9 @@ public List getCriticalSlots(int location) { return result; } + /** + * @return true if the entity has any critical slot that isn't damaged yet + */ public boolean hasUndamagedCriticalSlots() { return IntStream.range(0, locations()) .mapToLong(i -> getCriticalSlots(i) diff --git a/megamek/src/megamek/common/Game.java b/megamek/src/megamek/common/Game.java index 55f5ea13373..1d50e446998 100644 --- a/megamek/src/megamek/common/Game.java +++ b/megamek/src/megamek/common/Game.java @@ -2203,15 +2203,25 @@ public int removeSpecificEntityTurnsFor(Entity entity) { return turnsToRemove.size(); } - public void setOrbitalBombardmentVector(Vector v) { - orbitalBombardmentAttacks = v; + /** + * Set the new vector of orbital bombardments for this round. + * @param orbitalBombardments + */ + public void setOrbitalBombardmentVector(Vector orbitalBombardments) { + orbitalBombardmentAttacks = orbitalBombardments; processGameEvent(new GameBoardChangeEvent(this)); } + /** + * Resets the orbital bombardment attacks list. + */ public void resetOrbitalBombardmentAttacks() { orbitalBombardmentAttacks.removeAllElements(); } + /** + * @return an Enumeration of orbital bombardment attacks. + */ public Enumeration getOrbitalBombardmentAttacks() { return orbitalBombardmentAttacks.elements(); } diff --git a/megamek/src/megamek/common/weapons/AreaEffectHelper.java b/megamek/src/megamek/common/weapons/AreaEffectHelper.java index 32ea8900b05..8b035f8b6e9 100644 --- a/megamek/src/megamek/common/weapons/AreaEffectHelper.java +++ b/megamek/src/megamek/common/weapons/AreaEffectHelper.java @@ -14,15 +14,12 @@ package megamek.common.weapons; import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.IntStream; import megamek.common.*; import megamek.common.planetaryconditions.Atmosphere; import megamek.common.planetaryconditions.PlanetaryConditions; import megamek.logging.MMLogger; import megamek.server.totalwarfare.TWGameManager; -import org.apache.commons.lang3.IntegerRange; /** * Class containing functionality that helps out with area effect weapons. @@ -621,7 +618,7 @@ else if (ammo.getMunitionType().contains(AmmoType.Munitions.M_FLECHETTE)) { * arty * attack, -1 otherwise * @param mineClear Whether or not we're clearing a minefield - * @return + * @return A DamageFalloff object containing the damage and falloff values and if it is cluster or not */ public static DamageFalloff calculateDamageFallOff(AmmoType ammo, int attackingBA, boolean mineClear) { if (ammo == null) { @@ -694,21 +691,23 @@ public static DamageFalloff calculateDamageFallOff(AmmoType ammo, int attackingB clusterMunitionsFlag = true; } else if (ammo.getMunitionType().contains(AmmoType.Munitions.M_FLECHETTE)) { - switch (ammo.getAmmoType()) { + falloff = switch (ammo.getAmmoType()) { // for flechette, damage and falloff is number of d6, not absolute // damage - case AmmoType.T_LONG_TOM: + case AmmoType.T_LONG_TOM -> { damage = 4; - falloff = 2; - break; - case AmmoType.T_SNIPER: + yield 2; + } + case AmmoType.T_SNIPER -> { damage = 2; - falloff = 1; - break; - case AmmoType.T_THUMPER: + yield 1; + } + case AmmoType.T_THUMPER -> { damage = 1; - falloff = 1; - } + yield 1; + } + default -> falloff; + }; // if this was a mine clearance, then it only affects the hex hit } else if (mineClear) { falloff = damage; diff --git a/megamek/src/megamek/server/Server.java b/megamek/src/megamek/server/Server.java index ee832da035b..d62d8555e92 100644 --- a/megamek/src/megamek/server/Server.java +++ b/megamek/src/megamek/server/Server.java @@ -538,13 +538,6 @@ public Collection getAllCommandNames() { return commandsHash.keySet(); } - /** - * Returns the list of all server commands - */ - public List getAllCommands() { - return new ArrayList<>(commandsHash.values()); - } - /** * Sent when a client attempts to connect. */ diff --git a/megamek/src/megamek/server/commands/FirefightCommand.java b/megamek/src/megamek/server/commands/FirefightCommand.java new file mode 100644 index 00000000000..956f3508d1b --- /dev/null +++ b/megamek/src/megamek/server/commands/FirefightCommand.java @@ -0,0 +1,77 @@ +/* + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ +package megamek.server.commands; + +import megamek.client.ui.Messages; +import megamek.common.Coords; +import megamek.common.Hex; +import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; +import megamek.server.totalwarfare.TWGameManager; + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * The Server Command "/firefight" that will put one hex on fire. + * + * @author Luana Coppio + */ +public class FirefightCommand extends GamemasterServerCommand { + + private static final String FIRESTARTER = "firefight"; + private static final String X = "x"; + private static final String Y = "y"; + private static final String TYPE = "type"; + + public FirefightCommand(Server server, TWGameManager gameManager) { + super(server, + gameManager, + FIRESTARTER, + Messages.getString("Gamemaster.cmd.firefight.help"), + Messages.getString("Gamemaster.cmd.firefight.longName")); + } + + @Override + public List> defineArguments() { + return List.of( + new IntegerArgument(X, Messages.getString("Gamemaster.cmd.x")), + new IntegerArgument(Y, Messages.getString("Gamemaster.cmd.y")) + ); + } + + /** + * Run this command with the arguments supplied + * + * @see ServerCommand#run(int, String[]) + */ + @Override + protected void runAsGM(int connId, Map> args) { + int xArg = (int) args.get(X).getValue() - 1; + int yArg = (int) args.get(Y).getValue() - 1; + firefight(new Coords(xArg, yArg)); + } + + private void firefight(Coords coords) { + try { + Hex hex = gameManager.getGame().getBoard().getHex(coords); + Objects.requireNonNull(hex, "Hex not found."); + gameManager.removeFire(coords, Messages.getString("Gamemaster.cmd.firefight.reason")); + } catch (Exception e) { + throw new IllegalArgumentException("Failed to ignite hex: " + e.getMessage()); + } + } +} diff --git a/megamek/src/megamek/server/commands/GamemasterServerCommand.java b/megamek/src/megamek/server/commands/GamemasterServerCommand.java index ef584614c06..dc346a6a147 100644 --- a/megamek/src/megamek/server/commands/GamemasterServerCommand.java +++ b/megamek/src/megamek/server/commands/GamemasterServerCommand.java @@ -22,7 +22,15 @@ import java.util.*; /** - * A ServerCommand that can only be used by Game Masters + * A ServerCommand that can only be used by Game Masters, + * This abstract class implements many features that are common to all Game Master commands, + * like the isGM check for users, it also uses the Argument class for building the command arguments + * and to abstract the parsing of the arguments, limit assertion and error handling, and for building + * a more dynamic "help" feature. + * It also has a more advanced parser and argument handling than the ServerCommand class, which allows for + * named arguments, positional arguments, optional arguments and default values. + * named arguments can be passed in any order, and positional arguments are parsed in order and MUST appear before named + * arguments. * * @author Luana Coppio */ diff --git a/megamek/src/megamek/server/commands/NoFiresCommand.java b/megamek/src/megamek/server/commands/NoFiresCommand.java new file mode 100644 index 00000000000..f097ff1fbb2 --- /dev/null +++ b/megamek/src/megamek/server/commands/NoFiresCommand.java @@ -0,0 +1,87 @@ +/* + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ +package megamek.server.commands; + +import megamek.client.ui.Messages; +import megamek.common.Coords; +import megamek.common.Hex; +import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; +import megamek.server.totalwarfare.TWGameManager; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +/** + * The Server Command "/nofires" removes all fires on the board. + * + * @author Luana Coppio + */ +public class NoFiresCommand extends GamemasterServerCommand { + + private final String reason; + + public NoFiresCommand(Server server, TWGameManager gameManager) { + super(server, + gameManager, + "nofires", + Messages.getString("Gamemaster.cmd.nofire.help"), + Messages.getString("Gamemaster.cmd.nofire.longName")); + this.reason = Messages.getString("Gamemaster.cmd.firefight.reason"); + } + + @Override + public List> defineArguments() { + return List.of(); + } + + /** + * Run this command with the arguments supplied + * + * @see ServerCommand#run(int, String[]) + */ + @Override + protected void runAsGM(int connId, Map> args) { + try { + getAllCoords().forEach(this::firefight); + } catch (Exception e) { + logger.error(Messages.getString("Gamemaster.cmd.fire.failed"), e); + server.sendServerChat(connId, Messages.getString("Gamemaster.cmd.fire.failed")); + } + } + + private HashSet getAllCoords() { + var boardHeight = gameManager.getGame().getBoard().getHeight(); + var boardWidth = gameManager.getGame().getBoard().getWidth(); + var coordsSet = new HashSet(); + for (int x = 0; x < boardWidth; x++) { + for (int y = 0; y < boardHeight; y++) { + coordsSet.add(new Coords(x, y)); + } + } + return coordsSet; + } + + private void firefight(Coords coords) { + Hex hex = gameManager.getGame().getBoard().getHex(coords); + if (null == hex) { + // Just ignore null hexes... + // they should not happen, but I don't want to crash the command + return; + } + gameManager.removeFire(coords, reason); + } +} diff --git a/megamek/src/megamek/server/commands/RescueCommand.java b/megamek/src/megamek/server/commands/RescueCommand.java new file mode 100644 index 00000000000..8fa20fa57e0 --- /dev/null +++ b/megamek/src/megamek/server/commands/RescueCommand.java @@ -0,0 +1,61 @@ +/* + * MegaMek - Copyright (c) 2024 - The MegaMek Team. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ +package megamek.server.commands; + +import megamek.client.ui.Messages; +import megamek.common.MovePath; +import megamek.server.Server; +import megamek.server.commands.arguments.Argument; +import megamek.server.commands.arguments.IntegerArgument; +import megamek.server.totalwarfare.TWGameManager; + +import java.util.List; +import java.util.Map; + +/** + * @author Luana Coppio + */ +public class RescueCommand extends GamemasterServerCommand{ + + public static final String UNIT_ID = "unitID"; + + /** Creates new Rescue Command, it "flees" a unit no matter where they are */ + public RescueCommand(Server server, TWGameManager gameManager) { + super(server, gameManager, "rescue", Messages.getString("Gamemaster.cmd.rescue.help"), + Messages.getString("Gamemaster.cmd.rescue.longName")); + } + + @Override + public List> defineArguments() { + return List.of(new IntegerArgument(UNIT_ID, Messages.getString("Gamemaster.cmd.rescue.unitID"))); + } + + /** + * Run this command with the arguments supplied + */ + @Override + protected void runAsGM(int connId, Map> args) { + int unitId = (int) args.get(UNIT_ID).getValue(); + // is the unit on the board? + var unit = gameManager.getGame().getEntity(unitId); + if (unit == null) { + server.sendServerChat(connId, Messages.getString("Gamemaster.cmd.missingUnit")); + return; + } + MovePath path = new MovePath(gameManager.getGame(), unit); + path.addStep(MovePath.MoveStepType.FLEE); + gameManager.addReport(gameManager.processLeaveMap(path, false, -1)); + server.sendServerChat(unit.getDisplayName() + Messages.getString("Gamemaster.cmd.rescue.success")); + } +} diff --git a/megamek/src/megamek/server/commands/arguments/Argument.java b/megamek/src/megamek/server/commands/arguments/Argument.java index 5bcd84ef251..3b77343129a 100644 --- a/megamek/src/megamek/server/commands/arguments/Argument.java +++ b/megamek/src/megamek/server/commands/arguments/Argument.java @@ -1,11 +1,20 @@ package megamek.server.commands.arguments; -// A generic Argument class that can be extended for different argument types +/** + * Generic Argument class, can be extended for different argument types for server commands + * @param + * @author Luana Coppio + */ public abstract class Argument { protected T value; private final String name; private final String description; + /** + * Constructor for Generic Argument + * @param name name of the argument + * @param description description of the argument + */ public Argument(String name, String description) { this.name = name; this.description = description; @@ -23,6 +32,9 @@ public String getDescription() { return description; } + /** + * @return the string representation of the argument + */ public String getRepr() { return "<" + getName() + "=#>"; } diff --git a/megamek/src/megamek/server/commands/arguments/EnumArgument.java b/megamek/src/megamek/server/commands/arguments/EnumArgument.java index 85747815c97..cdaae3e7b0d 100644 --- a/megamek/src/megamek/server/commands/arguments/EnumArgument.java +++ b/megamek/src/megamek/server/commands/arguments/EnumArgument.java @@ -4,6 +4,11 @@ import java.util.Arrays; +/** + * Argument for an Enum type. + * @param + * @author Luana Coppio + */ public class EnumArgument> extends Argument { protected final Class enumType; protected final E defaultValue; diff --git a/megamek/src/megamek/server/commands/arguments/IntegerArgument.java b/megamek/src/megamek/server/commands/arguments/IntegerArgument.java index e3d7b27d962..2a942bf9e86 100644 --- a/megamek/src/megamek/server/commands/arguments/IntegerArgument.java +++ b/megamek/src/megamek/server/commands/arguments/IntegerArgument.java @@ -2,8 +2,10 @@ import megamek.client.ui.Messages; -import java.util.Arrays; - +/** + * Argument for an Integer type. + * @author Luana Coppio + */ public class IntegerArgument extends Argument { private final int minValue; private final int maxValue; diff --git a/megamek/src/megamek/server/commands/arguments/OptionalEnumArgument.java b/megamek/src/megamek/server/commands/arguments/OptionalEnumArgument.java index 2c7ce40a1c4..5e7fcd78630 100644 --- a/megamek/src/megamek/server/commands/arguments/OptionalEnumArgument.java +++ b/megamek/src/megamek/server/commands/arguments/OptionalEnumArgument.java @@ -4,6 +4,11 @@ import java.util.Arrays; +/** + * Nullable Argument for an Enum type. + * @param + * @author Luana Coppio + */ public class OptionalEnumArgument> extends EnumArgument { public OptionalEnumArgument(String name, String description, Class enumType) { diff --git a/megamek/src/megamek/server/commands/arguments/OptionalIntegerArgument.java b/megamek/src/megamek/server/commands/arguments/OptionalIntegerArgument.java index fc857b1148e..4bc3cd17139 100644 --- a/megamek/src/megamek/server/commands/arguments/OptionalIntegerArgument.java +++ b/megamek/src/megamek/server/commands/arguments/OptionalIntegerArgument.java @@ -18,6 +18,7 @@ import java.util.Optional; /** + * Optional Argument for an Integer type. * @author Luana Coppio */ public class OptionalIntegerArgument extends Argument> { diff --git a/megamek/src/megamek/server/totalwarfare/TWGameManager.java b/megamek/src/megamek/server/totalwarfare/TWGameManager.java index 2ac90e804de..500a29fb12c 100644 --- a/megamek/src/megamek/server/totalwarfare/TWGameManager.java +++ b/megamek/src/megamek/server/totalwarfare/TWGameManager.java @@ -194,6 +194,8 @@ public List getCommandList(Server server) { commands.add(new ChangeOwnershipCommand(server, this)); commands.add(new DisasterCommand(server, this)); commands.add(new FirestarterCommand(server, this)); + commands.add(new NoFiresCommand(server, this)); + commands.add(new FirefightCommand(server, this)); commands.add(new FirestormCommand(server, this)); commands.add(new RemoveSmokeCommand(server, this)); commands.add(new ChangeWeatherCommand(server, this)); @@ -5290,7 +5292,7 @@ Vector processCrash(Entity entity, int vel, Coords c) { * if it can't return) * @return Vector of turn reports. */ - Vector processLeaveMap(MovePath movePath, boolean flewOff, int returnable) { + public Vector processLeaveMap(MovePath movePath, boolean flewOff, int returnable) { Entity entity = movePath.getEntity(); Vector vReport = new Vector<>(); Report r; @@ -31696,10 +31698,6 @@ void clearBombIcons() { game.getBoard().clearBombIcons(); } - void clearOrbitalBombardmentIcons() { - game.getBoard().clearOrbitalBombardmentIcons(); - } - /** * Convenience function to send a ground object update. */ From a28fd13ca6274c0a3fdbedd4d25d9325c0848f5e Mon Sep 17 00:00:00 2001 From: Scoppio Date: Sat, 16 Nov 2024 01:27:13 -0300 Subject: [PATCH 13/20] feat: added rescue command --- megamek/i18n/megamek/client/messages.properties | 3 ++- megamek/src/megamek/client/ui/swing/MapMenu.java | 9 ++++++--- .../ui/swing/gmCommands/GamemasterCommandPanel.java | 4 ++-- megamek/src/megamek/server/commands/RescueCommand.java | 2 +- .../src/megamek/server/totalwarfare/TWGameManager.java | 1 + 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/megamek/i18n/megamek/client/messages.properties b/megamek/i18n/megamek/client/messages.properties index 87910252951..e9de0a4c7cc 100644 --- a/megamek/i18n/megamek/client/messages.properties +++ b/megamek/i18n/megamek/client/messages.properties @@ -4636,6 +4636,7 @@ SBFTargetDialog.title=Targeting Gamemaster.Gamemaster=Gamemaster Gamemaster.EditDamage=Edit Damage (unstable) Gamemaster.Configure=Configure (unstable) +Gamemaster.Rescue=Rescue Unit Gamemaster.Traitor.title=Traitor Gamemaster.Traitor.confirm=Confirm Gamemaster.Traitor=Traitor Unit @@ -4661,7 +4662,7 @@ Gamemaster.cmd.y=The y coordinate of the hex. Gamemaster.cmd.rescue.longName=Rescue Unit Gamemaster.cmd.rescue.unitID=ID of the unit to rescue. Gamemaster.cmd.rescue.help=Rescues a single unit. -Gamemaster.cmd.rescue.success=Will be rescued at the end of this phase. +Gamemaster.cmd.rescue.success={0} was rescued. Gamemaster.Rescue.text=Rescue Unit {0} Gamemaster.Rescue.confirmation=Are you sure you want to rescue {0}? # Remove Smoke cmd diff --git a/megamek/src/megamek/client/ui/swing/MapMenu.java b/megamek/src/megamek/client/ui/swing/MapMenu.java index fa22b1f3710..debd0d517f5 100644 --- a/megamek/src/megamek/client/ui/swing/MapMenu.java +++ b/megamek/src/megamek/client/ui/swing/MapMenu.java @@ -435,6 +435,9 @@ private JMenu createGamemasterMenu() { if (traitorMenu.getItemCount() != 0) { menu.add(traitorMenu); } + if (rescueMenu.getItemCount() != 0) { + menu.add(rescueMenu); + } if (killMenu.getItemCount() != 0) { menu.add(killMenu); menu.addSeparator(); @@ -567,7 +570,7 @@ private JMenuItem createTraitorMenuItem(Entity entity) { * @return JMenuItem the kill menu item */ private JMenuItem createKillMenuItem(Entity entity) { - return createCommandMenuItem(entity, "Gamemaster.KillUnit.text", + return createEntityCommandMenuItem(entity, "Gamemaster.KillUnit.text", "Gamemaster.KillUnit.confirmation", String.format("/kill %d", entity.getId())); } @@ -577,7 +580,7 @@ private JMenuItem createKillMenuItem(Entity entity) { * @return the rescue menu item */ private JMenuItem createRescueMenuItem(Entity entity) { - return createCommandMenuItem(entity, "Gamemaster.Rescue.text", + return createEntityCommandMenuItem(entity, "Gamemaster.Rescue.text", "Gamemaster.Rescue.confirmation", String.format("/rescue %d", entity.getId())); } @@ -589,7 +592,7 @@ private JMenuItem createRescueMenuItem(Entity entity) { * @param command the command that will be sent to the server * @return the menu item */ - private JMenuItem createCommandMenuItem(Entity entity, String messageKey, String confirmationKey, String command) { + private JMenuItem createEntityCommandMenuItem(Entity entity, String messageKey, String confirmationKey, String command) { JMenuItem item = new JMenuItem(Messages.getString(messageKey, entity.getDisplayName())); item.addActionListener(evt -> { int confirm = JOptionPane.showConfirmDialog( diff --git a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java index 25d7b94acc5..d2e4d7fa70a 100644 --- a/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java +++ b/megamek/src/megamek/client/ui/swing/gmCommands/GamemasterCommandPanel.java @@ -109,8 +109,8 @@ private boolean isArgumentY(Argument argument) { } private int getIntArgumentDefaultValue(IntegerArgument intArg) { - return intArg.hasDefaultValue() ? intArg.getValue() : isArgumentX(intArg) ? coords.getX() : - isArgumentY(intArg) ? coords.getY() : 0; + return intArg.hasDefaultValue() ? intArg.getValue() : isArgumentX(intArg) ? coords.getX()+1 : + isArgumentY(intArg) ? coords.getY()+1 : 0; } private JSpinner createSpinner(IntegerArgument intArg) { diff --git a/megamek/src/megamek/server/commands/RescueCommand.java b/megamek/src/megamek/server/commands/RescueCommand.java index 8fa20fa57e0..62c9df1c491 100644 --- a/megamek/src/megamek/server/commands/RescueCommand.java +++ b/megamek/src/megamek/server/commands/RescueCommand.java @@ -56,6 +56,6 @@ protected void runAsGM(int connId, Map> args) { MovePath path = new MovePath(gameManager.getGame(), unit); path.addStep(MovePath.MoveStepType.FLEE); gameManager.addReport(gameManager.processLeaveMap(path, false, -1)); - server.sendServerChat(unit.getDisplayName() + Messages.getString("Gamemaster.cmd.rescue.success")); + server.sendServerChat(Messages.getString("Gamemaster.cmd.rescue.success", unit.getDisplayName())); } } diff --git a/megamek/src/megamek/server/totalwarfare/TWGameManager.java b/megamek/src/megamek/server/totalwarfare/TWGameManager.java index 500a29fb12c..7d0f1607d41 100644 --- a/megamek/src/megamek/server/totalwarfare/TWGameManager.java +++ b/megamek/src/megamek/server/totalwarfare/TWGameManager.java @@ -198,6 +198,7 @@ public List getCommandList(Server server) { commands.add(new FirefightCommand(server, this)); commands.add(new FirestormCommand(server, this)); commands.add(new RemoveSmokeCommand(server, this)); + commands.add(new RescueCommand(server, this)); commands.add(new ChangeWeatherCommand(server, this)); commands.add(new TraitorCommand(server, this)); commands.add(new ListEntitiesCommand(server, this)); From b4b004ae93a2997085037149b6456ff80ee4bc32 Mon Sep 17 00:00:00 2001 From: Scoppio Date: Sun, 17 Nov 2024 01:59:09 -0300 Subject: [PATCH 14/20] feat: added nuke graphics --- .../images/hexes/nuke/hit/col_0_row_0.png | Bin 0 -> 13958 bytes .../images/hexes/nuke/hit/col_0_row_0_odd.png | Bin 0 -> 13476 bytes .../images/hexes/nuke/hit/col_0_row_1.png | Bin 0 -> 9350 bytes .../images/hexes/nuke/hit/col_0_row_1_odd.png | Bin 0 -> 11931 bytes .../images/hexes/nuke/hit/col_0_row_2.png | Bin 0 -> 11874 bytes .../images/hexes/nuke/hit/col_0_row_2_odd.png | Bin 0 -> 10110 bytes .../images/hexes/nuke/hit/col_0_row_3.png | Bin 0 -> 11246 bytes .../images/hexes/nuke/hit/col_0_row_3_odd.png | Bin 0 -> 11429 bytes .../images/hexes/nuke/hit/col_0_row_4.png | Bin 0 -> 11060 bytes .../images/hexes/nuke/hit/col_0_row_4_odd.png | Bin 0 -> 11215 bytes .../images/hexes/nuke/hit/col_0_row_5.png | Bin 0 -> 12184 bytes .../images/hexes/nuke/hit/col_0_row_5_odd.png | Bin 0 -> 11296 bytes .../images/hexes/nuke/hit/col_0_row_6.png | Bin 0 -> 11144 bytes .../images/hexes/nuke/hit/col_0_row_6_odd.png | Bin 0 -> 12409 bytes .../images/hexes/nuke/hit/col_0_row_7.png | Bin 0 -> 10496 bytes .../images/hexes/nuke/hit/col_0_row_7_odd.png | Bin 0 -> 9238 bytes .../images/hexes/nuke/hit/col_0_row_8.png | Bin 0 -> 5985 bytes .../images/hexes/nuke/hit/col_0_row_8_odd.png | Bin 0 -> 12188 bytes .../images/hexes/nuke/hit/col_1_row_0.png | Bin 0 -> 12694 bytes .../images/hexes/nuke/hit/col_1_row_0_odd.png | Bin 0 -> 11520 bytes .../images/hexes/nuke/hit/col_1_row_1.png | Bin 0 -> 11172 bytes .../images/hexes/nuke/hit/col_1_row_1_odd.png | Bin 0 -> 12382 bytes .../images/hexes/nuke/hit/col_1_row_2.png | Bin 0 -> 11980 bytes .../images/hexes/nuke/hit/col_1_row_2_odd.png | Bin 0 -> 11806 bytes .../images/hexes/nuke/hit/col_1_row_3.png | Bin 0 -> 12670 bytes .../images/hexes/nuke/hit/col_1_row_3_odd.png | Bin 0 -> 12621 bytes .../images/hexes/nuke/hit/col_1_row_4.png | Bin 0 -> 12660 bytes .../images/hexes/nuke/hit/col_1_row_4_odd.png | Bin 0 -> 13138 bytes .../images/hexes/nuke/hit/col_1_row_5.png | Bin 0 -> 13296 bytes .../images/hexes/nuke/hit/col_1_row_5_odd.png | Bin 0 -> 13194 bytes .../images/hexes/nuke/hit/col_1_row_6.png | Bin 0 -> 12655 bytes .../images/hexes/nuke/hit/col_1_row_6_odd.png | Bin 0 -> 12073 bytes .../images/hexes/nuke/hit/col_1_row_7.png | Bin 0 -> 12529 bytes .../images/hexes/nuke/hit/col_1_row_7_odd.png | Bin 0 -> 12013 bytes .../images/hexes/nuke/hit/col_1_row_8.png | Bin 0 -> 9280 bytes .../images/hexes/nuke/hit/col_1_row_8_odd.png | Bin 0 -> 4022 bytes .../images/hexes/nuke/hit/col_2_row_0.png | Bin 0 -> 13129 bytes .../images/hexes/nuke/hit/col_2_row_0_odd.png | Bin 0 -> 13250 bytes .../images/hexes/nuke/hit/col_2_row_1.png | Bin 0 -> 11938 bytes .../images/hexes/nuke/hit/col_2_row_1_odd.png | Bin 0 -> 10874 bytes .../images/hexes/nuke/hit/col_2_row_2.png | Bin 0 -> 10191 bytes .../images/hexes/nuke/hit/col_2_row_2_odd.png | Bin 0 -> 11494 bytes .../images/hexes/nuke/hit/col_2_row_3.png | Bin 0 -> 12760 bytes .../images/hexes/nuke/hit/col_2_row_3_odd.png | Bin 0 -> 11579 bytes .../images/hexes/nuke/hit/col_2_row_4.png | Bin 0 -> 10659 bytes .../images/hexes/nuke/hit/col_2_row_4_odd.png | Bin 0 -> 12224 bytes .../images/hexes/nuke/hit/col_2_row_5.png | Bin 0 -> 11995 bytes .../images/hexes/nuke/hit/col_2_row_5_odd.png | Bin 0 -> 9919 bytes .../images/hexes/nuke/hit/col_2_row_6.png | Bin 0 -> 13644 bytes .../images/hexes/nuke/hit/col_2_row_6_odd.png | Bin 0 -> 13712 bytes .../images/hexes/nuke/hit/col_2_row_7.png | Bin 0 -> 11448 bytes .../images/hexes/nuke/hit/col_2_row_7_odd.png | Bin 0 -> 12981 bytes .../images/hexes/nuke/hit/col_2_row_8.png | Bin 0 -> 6336 bytes .../images/hexes/nuke/hit/col_2_row_8_odd.png | Bin 0 -> 10982 bytes .../images/hexes/nuke/hit/col_3_row_0.png | Bin 0 -> 10230 bytes .../images/hexes/nuke/hit/col_3_row_0_odd.png | Bin 0 -> 11534 bytes .../images/hexes/nuke/hit/col_3_row_1.png | Bin 0 -> 12399 bytes .../images/hexes/nuke/hit/col_3_row_1_odd.png | Bin 0 -> 11895 bytes .../images/hexes/nuke/hit/col_3_row_2.png | Bin 0 -> 12786 bytes .../images/hexes/nuke/hit/col_3_row_2_odd.png | Bin 0 -> 14204 bytes .../images/hexes/nuke/hit/col_3_row_3.png | Bin 0 -> 14130 bytes .../images/hexes/nuke/hit/col_3_row_3_odd.png | Bin 0 -> 13912 bytes .../images/hexes/nuke/hit/col_3_row_4.png | Bin 0 -> 13621 bytes .../images/hexes/nuke/hit/col_3_row_4_odd.png | Bin 0 -> 13611 bytes .../images/hexes/nuke/hit/col_3_row_5.png | Bin 0 -> 12747 bytes .../images/hexes/nuke/hit/col_3_row_5_odd.png | Bin 0 -> 10880 bytes .../images/hexes/nuke/hit/col_3_row_6.png | Bin 0 -> 11014 bytes .../images/hexes/nuke/hit/col_3_row_6_odd.png | Bin 0 -> 12680 bytes .../images/hexes/nuke/hit/col_3_row_7.png | Bin 0 -> 13328 bytes .../images/hexes/nuke/hit/col_3_row_7_odd.png | Bin 0 -> 12187 bytes .../images/hexes/nuke/hit/col_3_row_8.png | Bin 0 -> 10662 bytes .../images/hexes/nuke/hit/col_3_row_8_odd.png | Bin 0 -> 5582 bytes .../images/hexes/nuke/hit/col_4_row_0.png | Bin 0 -> 12293 bytes .../images/hexes/nuke/hit/col_4_row_0_odd.png | Bin 0 -> 12614 bytes .../images/hexes/nuke/hit/col_4_row_1.png | Bin 0 -> 12313 bytes .../images/hexes/nuke/hit/col_4_row_1_odd.png | Bin 0 -> 11987 bytes .../images/hexes/nuke/hit/col_4_row_2.png | Bin 0 -> 14145 bytes .../images/hexes/nuke/hit/col_4_row_2_odd.png | Bin 0 -> 14301 bytes .../images/hexes/nuke/hit/col_4_row_3.png | Bin 0 -> 14043 bytes .../images/hexes/nuke/hit/col_4_row_3_odd.png | Bin 0 -> 14016 bytes .../images/hexes/nuke/hit/col_4_row_4.png | Bin 0 -> 12402 bytes .../images/hexes/nuke/hit/col_4_row_4_odd.png | Bin 0 -> 13170 bytes .../images/hexes/nuke/hit/col_4_row_5.png | Bin 0 -> 12549 bytes .../images/hexes/nuke/hit/col_4_row_5_odd.png | Bin 0 -> 11805 bytes .../images/hexes/nuke/hit/col_4_row_6.png | Bin 0 -> 11524 bytes .../images/hexes/nuke/hit/col_4_row_6_odd.png | Bin 0 -> 11649 bytes .../images/hexes/nuke/hit/col_4_row_7.png | Bin 0 -> 12117 bytes .../images/hexes/nuke/hit/col_4_row_7_odd.png | Bin 0 -> 13182 bytes .../images/hexes/nuke/hit/col_4_row_8.png | Bin 0 -> 4390 bytes .../images/hexes/nuke/hit/col_4_row_8_odd.png | Bin 0 -> 10247 bytes .../images/hexes/nuke/hit/col_5_row_0.png | Bin 0 -> 11702 bytes .../images/hexes/nuke/hit/col_5_row_0_odd.png | Bin 0 -> 12380 bytes .../images/hexes/nuke/hit/col_5_row_1.png | Bin 0 -> 12994 bytes .../images/hexes/nuke/hit/col_5_row_1_odd.png | Bin 0 -> 12700 bytes .../images/hexes/nuke/hit/col_5_row_2.png | Bin 0 -> 13837 bytes .../images/hexes/nuke/hit/col_5_row_2_odd.png | Bin 0 -> 13849 bytes .../images/hexes/nuke/hit/col_5_row_3.png | Bin 0 -> 12789 bytes .../images/hexes/nuke/hit/col_5_row_3_odd.png | Bin 0 -> 11242 bytes .../images/hexes/nuke/hit/col_5_row_4.png | Bin 0 -> 10938 bytes .../images/hexes/nuke/hit/col_5_row_4_odd.png | Bin 0 -> 11823 bytes .../images/hexes/nuke/hit/col_5_row_5.png | Bin 0 -> 12176 bytes .../images/hexes/nuke/hit/col_5_row_5_odd.png | Bin 0 -> 10031 bytes .../images/hexes/nuke/hit/col_5_row_6.png | Bin 0 -> 8947 bytes .../images/hexes/nuke/hit/col_5_row_6_odd.png | Bin 0 -> 11886 bytes .../images/hexes/nuke/hit/col_5_row_7.png | Bin 0 -> 13185 bytes .../images/hexes/nuke/hit/col_5_row_7_odd.png | Bin 0 -> 11578 bytes .../images/hexes/nuke/hit/col_5_row_8.png | Bin 0 -> 9709 bytes .../images/hexes/nuke/hit/col_5_row_8_odd.png | Bin 0 -> 4276 bytes .../images/hexes/nuke/hit/col_6_row_0.png | Bin 0 -> 12886 bytes .../images/hexes/nuke/hit/col_6_row_0_odd.png | Bin 0 -> 12207 bytes .../images/hexes/nuke/hit/col_6_row_1.png | Bin 0 -> 13408 bytes .../images/hexes/nuke/hit/col_6_row_1_odd.png | Bin 0 -> 13567 bytes .../images/hexes/nuke/hit/col_6_row_2.png | Bin 0 -> 12093 bytes .../images/hexes/nuke/hit/col_6_row_2_odd.png | Bin 0 -> 13041 bytes .../images/hexes/nuke/hit/col_6_row_3.png | Bin 0 -> 10410 bytes .../images/hexes/nuke/hit/col_6_row_3_odd.png | Bin 0 -> 10909 bytes .../images/hexes/nuke/hit/col_6_row_4.png | Bin 0 -> 11706 bytes .../images/hexes/nuke/hit/col_6_row_4_odd.png | Bin 0 -> 11394 bytes .../images/hexes/nuke/hit/col_6_row_5.png | Bin 0 -> 5680 bytes .../images/hexes/nuke/hit/col_6_row_5_odd.png | Bin 0 -> 9525 bytes .../images/hexes/nuke/hit/col_6_row_6.png | Bin 0 -> 10680 bytes .../images/hexes/nuke/hit/col_6_row_6_odd.png | Bin 0 -> 6762 bytes .../images/hexes/nuke/hit/col_6_row_7.png | Bin 0 -> 10800 bytes .../images/hexes/nuke/hit/col_6_row_7_odd.png | Bin 0 -> 11878 bytes .../images/hexes/nuke/hit/col_6_row_8.png | Bin 0 -> 6306 bytes .../images/hexes/nuke/hit/col_6_row_8_odd.png | Bin 0 -> 11724 bytes .../images/hexes/nuke/hit/col_7_row_0.png | Bin 0 -> 13095 bytes .../images/hexes/nuke/hit/col_7_row_0_odd.png | Bin 0 -> 12423 bytes .../images/hexes/nuke/hit/col_7_row_1.png | Bin 0 -> 13043 bytes .../images/hexes/nuke/hit/col_7_row_1_odd.png | Bin 0 -> 12569 bytes .../images/hexes/nuke/hit/col_7_row_2.png | Bin 0 -> 13945 bytes .../images/hexes/nuke/hit/col_7_row_2_odd.png | Bin 0 -> 14032 bytes .../images/hexes/nuke/hit/col_7_row_3.png | Bin 0 -> 12589 bytes .../images/hexes/nuke/hit/col_7_row_3_odd.png | Bin 0 -> 11767 bytes .../images/hexes/nuke/hit/col_7_row_4.png | Bin 0 -> 10953 bytes .../images/hexes/nuke/hit/col_7_row_4_odd.png | Bin 0 -> 11359 bytes .../images/hexes/nuke/hit/col_7_row_5.png | Bin 0 -> 11400 bytes .../images/hexes/nuke/hit/col_7_row_5_odd.png | Bin 0 -> 10033 bytes .../images/hexes/nuke/hit/col_7_row_6.png | Bin 0 -> 9932 bytes .../images/hexes/nuke/hit/col_7_row_6_odd.png | Bin 0 -> 8854 bytes .../images/hexes/nuke/hit/col_7_row_7.png | Bin 0 -> 6893 bytes .../images/hexes/nuke/hit/col_7_row_7_odd.png | Bin 0 -> 7747 bytes .../images/hexes/nuke/hit/col_7_row_8.png | Bin 0 -> 8789 bytes .../images/hexes/nuke/hit/col_7_row_8_odd.png | Bin 0 -> 4060 bytes .../images/hexes/nuke/hit/col_8_row_0.png | Bin 0 -> 11917 bytes .../images/hexes/nuke/hit/col_8_row_0_odd.png | Bin 0 -> 11471 bytes .../images/hexes/nuke/hit/col_8_row_1.png | Bin 0 -> 10916 bytes .../images/hexes/nuke/hit/col_8_row_1_odd.png | Bin 0 -> 10714 bytes .../images/hexes/nuke/hit/col_8_row_2.png | Bin 0 -> 11274 bytes .../images/hexes/nuke/hit/col_8_row_2_odd.png | Bin 0 -> 11919 bytes .../images/hexes/nuke/hit/col_8_row_3.png | Bin 0 -> 11642 bytes .../images/hexes/nuke/hit/col_8_row_3_odd.png | Bin 0 -> 11520 bytes .../images/hexes/nuke/hit/col_8_row_4.png | Bin 0 -> 11404 bytes .../images/hexes/nuke/hit/col_8_row_4_odd.png | Bin 0 -> 11979 bytes .../images/hexes/nuke/hit/col_8_row_5.png | Bin 0 -> 9131 bytes .../images/hexes/nuke/hit/col_8_row_5_odd.png | Bin 0 -> 11125 bytes .../images/hexes/nuke/hit/col_8_row_6.png | Bin 0 -> 5224 bytes .../images/hexes/nuke/hit/col_8_row_6_odd.png | Bin 0 -> 6471 bytes .../images/hexes/nuke/hit/col_8_row_7.png | Bin 0 -> 4839 bytes .../images/hexes/nuke/hit/col_8_row_7_odd.png | Bin 0 -> 4060 bytes .../images/hexes/nuke/hit/col_8_row_8.png | Bin 0 -> 4495 bytes .../images/hexes/nuke/hit/col_8_row_8_odd.png | Bin 0 -> 7341 bytes .../images/hexes/{obinc.gif => nukeinc.gif} | Bin .../orbital_bombardment/hit/col_0_row_0.png | Bin 0 -> 119 bytes .../hit/col_0_row_0_odd.png | Bin 0 -> 115 bytes .../orbital_bombardment/hit/col_0_row_1.png | Bin 0 -> 103 bytes .../hit/col_0_row_1_odd.png | Bin 0 -> 103 bytes .../orbital_bombardment/hit/col_0_row_2.png | Bin 0 -> 109 bytes .../hit/col_0_row_2_odd.png | Bin 0 -> 441 bytes .../orbital_bombardment/hit/col_0_row_3.png | Bin 0 -> 1061 bytes .../hit/col_0_row_3_odd.png | Bin 0 -> 1717 bytes .../orbital_bombardment/hit/col_0_row_4.png | Bin 0 -> 2783 bytes .../hit/col_0_row_4_odd.png | Bin 0 -> 2708 bytes .../orbital_bombardment/hit/col_0_row_5.png | Bin 0 -> 5620 bytes .../hit/col_0_row_5_odd.png | Bin 0 -> 4004 bytes .../orbital_bombardment/hit/col_0_row_6.png | Bin 0 -> 3044 bytes .../hit/col_0_row_6_odd.png | Bin 0 -> 1754 bytes .../orbital_bombardment/hit/col_0_row_7.png | Bin 0 -> 2656 bytes .../hit/col_0_row_7_odd.png | Bin 0 -> 1749 bytes .../orbital_bombardment/hit/col_0_row_8.png | Bin 0 -> 296 bytes .../hit/col_0_row_8_odd.png | Bin 0 -> 103 bytes .../orbital_bombardment/hit/col_1_row_0.png | Bin 0 -> 6686 bytes .../hit/col_1_row_0_odd.png | Bin 0 -> 1876 bytes .../orbital_bombardment/hit/col_1_row_1.png | Bin 0 -> 2316 bytes .../hit/col_1_row_1_odd.png | Bin 0 -> 6618 bytes .../orbital_bombardment/hit/col_1_row_2.png | Bin 0 -> 7735 bytes .../hit/col_1_row_2_odd.png | Bin 0 -> 1676 bytes .../orbital_bombardment/hit/col_1_row_3.png | Bin 0 -> 10470 bytes .../hit/col_1_row_3_odd.png | Bin 0 -> 11489 bytes .../orbital_bombardment/hit/col_1_row_4.png | Bin 0 -> 10138 bytes .../hit/col_1_row_4_odd.png | Bin 0 -> 9976 bytes .../orbital_bombardment/hit/col_1_row_5.png | Bin 0 -> 11385 bytes .../hit/col_1_row_5_odd.png | Bin 0 -> 12064 bytes .../orbital_bombardment/hit/col_1_row_6.png | Bin 0 -> 6426 bytes .../hit/col_1_row_6_odd.png | Bin 0 -> 9154 bytes .../orbital_bombardment/hit/col_1_row_7.png | Bin 0 -> 2978 bytes .../hit/col_1_row_7_odd.png | Bin 0 -> 7419 bytes .../orbital_bombardment/hit/col_1_row_8.png | Bin 0 -> 103 bytes .../hit/col_1_row_8_odd.png | Bin 0 -> 132 bytes .../orbital_bombardment/hit/col_2_row_0.png | Bin 0 -> 222 bytes .../hit/col_2_row_0_odd.png | Bin 0 -> 3507 bytes .../orbital_bombardment/hit/col_2_row_1.png | Bin 0 -> 10168 bytes .../hit/col_2_row_1_odd.png | Bin 0 -> 12908 bytes .../orbital_bombardment/hit/col_2_row_2.png | Bin 0 -> 13616 bytes .../hit/col_2_row_2_odd.png | Bin 0 -> 13116 bytes .../orbital_bombardment/hit/col_2_row_3.png | Bin 0 -> 12675 bytes .../hit/col_2_row_3_odd.png | Bin 0 -> 12531 bytes .../orbital_bombardment/hit/col_2_row_4.png | Bin 0 -> 12562 bytes .../hit/col_2_row_4_odd.png | Bin 0 -> 12661 bytes .../orbital_bombardment/hit/col_2_row_5.png | Bin 0 -> 11957 bytes .../hit/col_2_row_5_odd.png | Bin 0 -> 11714 bytes .../orbital_bombardment/hit/col_2_row_6.png | Bin 0 -> 11506 bytes .../hit/col_2_row_6_odd.png | Bin 0 -> 11157 bytes .../orbital_bombardment/hit/col_2_row_7.png | Bin 0 -> 11151 bytes .../hit/col_2_row_7_odd.png | Bin 0 -> 7311 bytes .../orbital_bombardment/hit/col_2_row_8.png | Bin 0 -> 2145 bytes .../hit/col_2_row_8_odd.png | Bin 0 -> 211 bytes .../orbital_bombardment/hit/col_3_row_0.png | Bin 0 -> 4091 bytes .../hit/col_3_row_0_odd.png | Bin 0 -> 1212 bytes .../orbital_bombardment/hit/col_3_row_1.png | Bin 0 -> 11679 bytes .../hit/col_3_row_1_odd.png | Bin 0 -> 10764 bytes .../orbital_bombardment/hit/col_3_row_2.png | Bin 0 -> 11349 bytes .../hit/col_3_row_2_odd.png | Bin 0 -> 10611 bytes .../orbital_bombardment/hit/col_3_row_3.png | Bin 0 -> 9941 bytes .../hit/col_3_row_3_odd.png | Bin 0 -> 11295 bytes .../orbital_bombardment/hit/col_3_row_4.png | Bin 0 -> 12642 bytes .../hit/col_3_row_4_odd.png | Bin 0 -> 10558 bytes .../orbital_bombardment/hit/col_3_row_5.png | Bin 0 -> 13108 bytes .../hit/col_3_row_5_odd.png | Bin 0 -> 13316 bytes .../orbital_bombardment/hit/col_3_row_6.png | Bin 0 -> 11036 bytes .../hit/col_3_row_6_odd.png | Bin 0 -> 11932 bytes .../orbital_bombardment/hit/col_3_row_7.png | Bin 0 -> 7538 bytes .../hit/col_3_row_7_odd.png | Bin 0 -> 11591 bytes .../orbital_bombardment/hit/col_3_row_8.png | Bin 0 -> 1401 bytes .../hit/col_3_row_8_odd.png | Bin 0 -> 3409 bytes .../orbital_bombardment/hit/col_4_row_0.png | Bin 0 -> 5868 bytes .../hit/col_4_row_0_odd.png | Bin 0 -> 10884 bytes .../orbital_bombardment/hit/col_4_row_1.png | Bin 0 -> 12408 bytes .../hit/col_4_row_1_odd.png | Bin 0 -> 10951 bytes .../orbital_bombardment/hit/col_4_row_2.png | Bin 0 -> 10453 bytes .../hit/col_4_row_2_odd.png | Bin 0 -> 9768 bytes .../orbital_bombardment/hit/col_4_row_3.png | Bin 0 -> 9451 bytes .../hit/col_4_row_3_odd.png | Bin 0 -> 8362 bytes .../orbital_bombardment/hit/col_4_row_4.png | Bin 0 -> 7835 bytes .../hit/col_4_row_4_odd.png | Bin 0 -> 10209 bytes .../orbital_bombardment/hit/col_4_row_5.png | Bin 0 -> 12354 bytes .../hit/col_4_row_5_odd.png | Bin 0 -> 12644 bytes .../orbital_bombardment/hit/col_4_row_6.png | Bin 0 -> 11233 bytes .../hit/col_4_row_6_odd.png | Bin 0 -> 8733 bytes .../orbital_bombardment/hit/col_4_row_7.png | Bin 0 -> 8932 bytes .../hit/col_4_row_7_odd.png | Bin 0 -> 7083 bytes .../orbital_bombardment/hit/col_4_row_8.png | Bin 0 -> 1867 bytes .../hit/col_4_row_8_odd.png | Bin 0 -> 103 bytes .../orbital_bombardment/hit/col_5_row_0.png | Bin 0 -> 7338 bytes .../hit/col_5_row_0_odd.png | Bin 0 -> 1384 bytes .../orbital_bombardment/hit/col_5_row_1.png | Bin 0 -> 12495 bytes .../hit/col_5_row_1_odd.png | Bin 0 -> 13124 bytes .../orbital_bombardment/hit/col_5_row_2.png | Bin 0 -> 10567 bytes .../hit/col_5_row_2_odd.png | Bin 0 -> 11410 bytes .../orbital_bombardment/hit/col_5_row_3.png | Bin 0 -> 9176 bytes .../hit/col_5_row_3_odd.png | Bin 0 -> 9521 bytes .../orbital_bombardment/hit/col_5_row_4.png | Bin 0 -> 10577 bytes .../hit/col_5_row_4_odd.png | Bin 0 -> 8926 bytes .../orbital_bombardment/hit/col_5_row_5.png | Bin 0 -> 12470 bytes .../hit/col_5_row_5_odd.png | Bin 0 -> 12310 bytes .../orbital_bombardment/hit/col_5_row_6.png | Bin 0 -> 9769 bytes .../hit/col_5_row_6_odd.png | Bin 0 -> 12141 bytes .../orbital_bombardment/hit/col_5_row_7.png | Bin 0 -> 6256 bytes .../hit/col_5_row_7_odd.png | Bin 0 -> 8654 bytes .../orbital_bombardment/hit/col_5_row_8.png | Bin 0 -> 103 bytes .../hit/col_5_row_8_odd.png | Bin 0 -> 1012 bytes .../orbital_bombardment/hit/col_6_row_0.png | Bin 0 -> 1230 bytes .../hit/col_6_row_0_odd.png | Bin 0 -> 6567 bytes .../orbital_bombardment/hit/col_6_row_1.png | Bin 0 -> 12048 bytes .../hit/col_6_row_1_odd.png | Bin 0 -> 11264 bytes .../orbital_bombardment/hit/col_6_row_2.png | Bin 0 -> 11927 bytes .../hit/col_6_row_2_odd.png | Bin 0 -> 12750 bytes .../orbital_bombardment/hit/col_6_row_3.png | Bin 0 -> 12136 bytes .../hit/col_6_row_3_odd.png | Bin 0 -> 12001 bytes .../orbital_bombardment/hit/col_6_row_4.png | Bin 0 -> 12364 bytes .../hit/col_6_row_4_odd.png | Bin 0 -> 12720 bytes .../orbital_bombardment/hit/col_6_row_5.png | Bin 0 -> 12623 bytes .../hit/col_6_row_5_odd.png | Bin 0 -> 12391 bytes .../orbital_bombardment/hit/col_6_row_6.png | Bin 0 -> 10836 bytes .../hit/col_6_row_6_odd.png | Bin 0 -> 8314 bytes .../orbital_bombardment/hit/col_6_row_7.png | Bin 0 -> 7281 bytes .../hit/col_6_row_7_odd.png | Bin 0 -> 6707 bytes .../orbital_bombardment/hit/col_6_row_8.png | Bin 0 -> 4500 bytes .../hit/col_6_row_8_odd.png | Bin 0 -> 684 bytes .../orbital_bombardment/hit/col_7_row_0.png | Bin 0 -> 2791 bytes .../hit/col_7_row_0_odd.png | Bin 0 -> 3268 bytes .../orbital_bombardment/hit/col_7_row_1.png | Bin 0 -> 11619 bytes .../hit/col_7_row_1_odd.png | Bin 0 -> 5351 bytes .../orbital_bombardment/hit/col_7_row_2.png | Bin 0 -> 11812 bytes .../hit/col_7_row_2_odd.png | Bin 0 -> 12593 bytes .../orbital_bombardment/hit/col_7_row_3.png | Bin 0 -> 11956 bytes .../hit/col_7_row_3_odd.png | Bin 0 -> 11333 bytes .../orbital_bombardment/hit/col_7_row_4.png | Bin 0 -> 9177 bytes .../hit/col_7_row_4_odd.png | Bin 0 -> 9686 bytes .../orbital_bombardment/hit/col_7_row_5.png | Bin 0 -> 11011 bytes .../hit/col_7_row_5_odd.png | Bin 0 -> 10288 bytes .../orbital_bombardment/hit/col_7_row_6.png | Bin 0 -> 9720 bytes .../hit/col_7_row_6_odd.png | Bin 0 -> 10643 bytes .../orbital_bombardment/hit/col_7_row_7.png | Bin 0 -> 3864 bytes .../hit/col_7_row_7_odd.png | Bin 0 -> 7514 bytes .../orbital_bombardment/hit/col_7_row_8.png | Bin 0 -> 672 bytes .../hit/col_7_row_8_odd.png | Bin 0 -> 2947 bytes .../orbital_bombardment/hit/col_8_row_0.png | Bin 0 -> 103 bytes .../hit/col_8_row_0_odd.png | Bin 0 -> 114 bytes .../orbital_bombardment/hit/col_8_row_1.png | Bin 0 -> 110 bytes .../hit/col_8_row_1_odd.png | Bin 0 -> 263 bytes .../orbital_bombardment/hit/col_8_row_2.png | Bin 0 -> 4073 bytes .../hit/col_8_row_2_odd.png | Bin 0 -> 8203 bytes .../orbital_bombardment/hit/col_8_row_3.png | Bin 0 -> 7979 bytes .../hit/col_8_row_3_odd.png | Bin 0 -> 9244 bytes .../orbital_bombardment/hit/col_8_row_4.png | Bin 0 -> 8758 bytes .../hit/col_8_row_4_odd.png | Bin 0 -> 7765 bytes .../orbital_bombardment/hit/col_8_row_5.png | Bin 0 -> 7063 bytes .../hit/col_8_row_5_odd.png | Bin 0 -> 6252 bytes .../orbital_bombardment/hit/col_8_row_6.png | Bin 0 -> 2685 bytes .../hit/col_8_row_6_odd.png | Bin 0 -> 2135 bytes .../orbital_bombardment/hit/col_8_row_7.png | Bin 0 -> 3197 bytes .../hit/col_8_row_7_odd.png | Bin 0 -> 2507 bytes .../orbital_bombardment/hit/col_8_row_8.png | Bin 0 -> 200 bytes .../hit/col_8_row_8_odd.png | Bin 0 -> 103 bytes .../i18n/megamek/client/messages.properties | 23 ++ .../client/ui/swing/CollapseWarning.java | 2 +- .../client/ui/swing/DeploymentDisplay.java | 1 + .../src/megamek/client/ui/swing/MapMenu.java | 217 ++++++++++++++++++ .../client/ui/swing/boardview/BoardView.java | 8 +- .../ui/swing/tileset/TilesetManager.java | 5 +- megamek/src/megamek/common/Configuration.java | 18 ++ megamek/src/megamek/common/Coords.java | 86 +++---- megamek/src/megamek/common/Mek.java | 3 + megamek/src/megamek/common/MoveStep.java | 4 +- .../src/megamek/common/SpecialHexDisplay.java | 112 ++++++--- .../megamek/common/hexarea/CircleHexArea.java | 3 +- .../src/megamek/common/util/ImageUtil.java | 19 ++ .../common/util/fileUtils/MegaMekFile.java | 8 + megamek/src/megamek/server/ServerHelper.java | 11 +- .../server/props/OrbitalBombardment.java | 23 ++ .../server/totalwarfare/TWGameManager.java | 120 ++++++++-- .../unittests/megamek/common/CoordsTest.java | 14 ++ 343 files changed, 587 insertions(+), 90 deletions(-) create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_0.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_0_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_1.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_1_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_2.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_2_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_3.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_3_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_4.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_4_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_5.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_5_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_6.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_6_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_7.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_7_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_8.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_0_row_8_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_0.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_0_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_1.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_1_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_2.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_2_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_3.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_3_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_4.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_4_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_5.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_5_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_6.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_6_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_7.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_7_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_8.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_1_row_8_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_0.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_0_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_1.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_1_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_2.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_2_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_3.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_3_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_4.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_4_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_5.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_5_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_6.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_6_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_7.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_7_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_8.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_2_row_8_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_0.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_0_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_1.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_1_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_2.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_2_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_3.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_3_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_4.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_4_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_5.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_5_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_6.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_6_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_7.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_7_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_8.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_3_row_8_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_0.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_0_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_1.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_1_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_2.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_2_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_3.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_3_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_4.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_4_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_5.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_5_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_6.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_6_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_7.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_7_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_8.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_4_row_8_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_0.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_0_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_1.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_1_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_2.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_2_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_3.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_3_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_4.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_4_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_5.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_5_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_6.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_6_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_7.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_7_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_8.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_5_row_8_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_0.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_0_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_1.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_1_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_2.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_2_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_3.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_3_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_4.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_4_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_5.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_5_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_6.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_6_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_7.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_7_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_8.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_6_row_8_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_0.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_0_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_1.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_1_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_2.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_2_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_3.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_3_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_4.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_4_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_5.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_5_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_6.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_6_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_7.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_7_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_8.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_7_row_8_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_0.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_0_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_1.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_1_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_2.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_2_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_3.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_3_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_4.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_4_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_5.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_5_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_6.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_6_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_7.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_7_odd.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_8.png create mode 100644 megamek/data/images/hexes/nuke/hit/col_8_row_8_odd.png rename megamek/data/images/hexes/{obinc.gif => nukeinc.gif} (100%) create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_0.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_0_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_1.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_1_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_2.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_2_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_3.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_3_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_4.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_4_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_5.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_5_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_6.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_6_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_7.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_7_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_8.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_0_row_8_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_0.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_0_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_1.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_1_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_2.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_2_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_3.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_3_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_4.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_4_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_5.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_5_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_6.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_6_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_7.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_7_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_8.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_1_row_8_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_0.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_0_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_1.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_1_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_2.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_2_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_3.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_3_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_4.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_4_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_5.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_5_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_6.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_6_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_7.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_7_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_8.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_2_row_8_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_0.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_0_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_1.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_1_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_2.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_2_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_3.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_3_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_4.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_4_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_5.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_5_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_6.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_6_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_7.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_7_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_8.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_3_row_8_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_0.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_0_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_1.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_1_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_2.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_2_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_3.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_3_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_4.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_4_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_5.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_5_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_6.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_6_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_7.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_7_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_8.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_4_row_8_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_0.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_0_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_1.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_1_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_2.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_2_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_3.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_3_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_4.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_4_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_5.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_5_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_6.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_6_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_7.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_7_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_8.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_5_row_8_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_0.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_0_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_1.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_1_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_2.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_2_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_3.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_3_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_4.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_4_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_5.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_5_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_6.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_6_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_7.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_7_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_8.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_6_row_8_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_0.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_0_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_1.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_1_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_2.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_2_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_3.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_3_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_4.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_4_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_5.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_5_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_6.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_6_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_7.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_7_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_8.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_7_row_8_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_0.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_0_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_1.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_1_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_2.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_2_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_3.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_3_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_4.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_4_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_5.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_5_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_6.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_6_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_7.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_7_odd.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_8.png create mode 100644 megamek/data/images/hexes/orbital_bombardment/hit/col_8_row_8_odd.png diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_0.png b/megamek/data/images/hexes/nuke/hit/col_0_row_0.png new file mode 100644 index 0000000000000000000000000000000000000000..092101704363228e74febecb6c8790df68f3b63f GIT binary patch literal 13958 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 TL_)y*G87pJMe%YmekQhBux*G(gq~7QK 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 Ik+F>aA88yZ^Z)<= literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_1.png b/megamek/data/images/hexes/nuke/hit/col_0_row_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e252dc1865f853caa33d394e85571cb2edb57b91 GIT binary patch literal 9350 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 Ao&W#< literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_1_odd.png b/megamek/data/images/hexes/nuke/hit/col_0_row_1_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..bb37b0672def412128bcddfd63ec4788c4486151 GIT binary patch literal 11931 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_2.png b/megamek/data/images/hexes/nuke/hit/col_0_row_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8af905b9a8fa347241b94af7d2cb2fe0b19b104c GIT binary patch literal 11874 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_2_odd.png b/megamek/data/images/hexes/nuke/hit/col_0_row_2_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..59626752ef9ddcb3db3c3e6568a150df978dfa16 GIT binary patch literal 10110 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

YM!WAAgUD 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 V-<@x|r?7LpI6%$USU$0h{vXUTI*kAT literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_3_odd.png b/megamek/data/images/hexes/nuke/hit/col_0_row_3_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..9974a8b1ed3b7ae44cdb7c6f2c7f13c3192c6394 GIT binary patch literal 11429 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_4_odd.png b/megamek/data/images/hexes/nuke/hit/col_0_row_4_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..6868e887a72ab867d820f76fb1109fc3350cdd5b GIT binary patch literal 11215 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_5_odd.png b/megamek/data/images/hexes/nuke/hit/col_0_row_5_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..8575ceb8df84eb49552cc807d5697c4db18ba30b GIT binary patch literal 11296 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 sE8Hir3H%FZR|g>rp;o^dV!Z literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_6.png b/megamek/data/images/hexes/nuke/hit/col_0_row_6.png new file mode 100644 index 0000000000000000000000000000000000000000..55548267c8745929fd9550e3508d941f15693a1b GIT binary patch literal 11144 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 NX*}0fsexET{tq~#G-v<- literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_6_odd.png b/megamek/data/images/hexes/nuke/hit/col_0_row_6_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..db700a6f8899ba909ce31d361effdcf85ca3b0e9 GIT binary patch literal 12409 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_7_odd.png b/megamek/data/images/hexes/nuke/hit/col_0_row_7_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..857551cd2e33b7a8f8d4fe632360c380d742d5ed GIT binary patch literal 9238 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 V$ZF|?4gB8+Lsd~rp;pc^?0=>=`#Jys literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_8.png b/megamek/data/images/hexes/nuke/hit/col_0_row_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c4fdc496420bf781bcd6ab02187c11dadc56242d GIT binary patch literal 5985 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_0_row_8_odd.png b/megamek/data/images/hexes/nuke/hit/col_0_row_8_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..625aa8294aa804764ca04823c9be05bb10d038ca GIT binary patch literal 12188 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_0_odd.png b/megamek/data/images/hexes/nuke/hit/col_1_row_0_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..f357422af8c676e2936f28d50f718f809e9852c7 GIT binary patch literal 11520 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 XHPLzdHVF9N01;G8?|GGqb@=}PP}69e literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_2.png b/megamek/data/images/hexes/nuke/hit/col_1_row_2.png new file mode 100644 index 0000000000000000000000000000000000000000..aef4c9c03b50a62092a718a3e5e98995bfcaaf4c GIT binary patch literal 11980 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 GHtK)XD3HJa literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_2_odd.png b/megamek/data/images/hexes/nuke/hit/col_1_row_2_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..85d2c723a68d6bc5f9f94fc4c9f16c433b9dbbfc GIT binary patch literal 11806 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

*;wU{rA53o_rvLTZq&T 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 XzpCw;lP|#kRou{o>8X{eSO@+O$%wkU literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_3_odd.png b/megamek/data/images/hexes/nuke/hit/col_1_row_3_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..b917e9ec085863640f50bb5f97776c8d75ac15bb GIT binary patch literal 12621 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_4.png b/megamek/data/images/hexes/nuke/hit/col_1_row_4.png new file mode 100644 index 0000000000000000000000000000000000000000..28751013823f866f472d04552efc1fc338158608 GIT binary patch literal 12660 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_4_odd.png b/megamek/data/images/hexes/nuke/hit/col_1_row_4_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..bfeeaaebbc2a549d3d67e2fd87a7538dd681584e GIT binary patch literal 13138 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_5.png b/megamek/data/images/hexes/nuke/hit/col_1_row_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a519266e65e23ef717ea2adb4e6074e4934e54 GIT binary patch literal 13296 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 z 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 ZQW`F;!c5O`fdAxq1Xa^hMJc}y{~rqv%f$cy literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_5_odd.png b/megamek/data/images/hexes/nuke/hit/col_1_row_5_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7700e1de6b1acae9a611585e7df7a0cb995818 GIT binary patch literal 13194 zcmWk#byQRD8#j>dj?p6oz6fJV4UlG}qzFy56 z-~Iiu?VRoGo_p{6ywCHg8~s9Cm5i8~_};yHWNb&-c&QQM1MhahIiRr?X zwW?eSCeIn46MaQ(#b0 zG$Xxq-6zNA(caW{T6J1|Zb}{eXk`ET>{INms}gPZyEw6WCLOFMpKx>al0P{d<9f96 z_}4FOSNC18pz6z{lsGe&#O`p(=3J%_4jYeU*_YKOCB{`pUCBC@OuRn(v)qGXq_Zo3 z;@|vzZC>gl!jYh7oJ*g#zx+>ja8Lsz;?17X3DJ z-=6!N4Bl%y_&3jx$6z5X+qS$M?_S6H(`_`+*;;szlpGbkeZaTvkvf zk=z8yfJ<6xi22p!;La{+)DDWa&P-jUqqkYVs5ig!*nF=pR`&@lMOh8nxzwKeOr)K_e{Qgf8vQ6-_=wXTuX~;)h~_% znGlfzqe`xRNU3%%RHz zq;VF#7&frEPSEan`;f-m-Li2ZQI@~Wh7N`blepIC5#%72@xUE zs1ztw52Yi%OXF{_2cMlQ?H7#LK|79Nj!!ILxfsqDWUPwR{LK-DI5bZ*Si33UTzFmk9qO*5hoK~TjEE7xBK(gL5DlG zb3rL>R`1wOB0wMz`h)0le+rCYMFEX^ysAz#Ka!c7T{7)}v0=I*xKhJuwwnEa?IfJP z{W>G()2Vj5?qbfeL9YRq=)U!nSx4?zqIw(HHlNy#n1QXgyf*xrG?H7TlgM@?ceT7U z|9KMK-t6|0pX|B#v+3zSr3S*tEM6w`-~%{D{=vxc0W8tIDXz$2pOAc?u%P|)bvvhH zfO-y!RF&okR%(EAmC3iMluxtaj|oF=WEe$<22m*Mmm3K5VY(RsMbon>(MH>z&Y%8D375>FK!%_+bAd zT!cHmaB5#PSL&T6T1hP?q(}e^52>IJR;29$b1fg1&hxchE_t{Js?R?wxI3G=rTFYq zqq9Na+osy2hc&>dVZz+&BjV!NFZgjoc94~BhIR!^1oX9*z%H>a<&uPOtVZnDyNCPh zNvdp|BVtPu9Z)YLqr`(P!B3ytg7P^C8OfXmRt0KniL19gPBz?vu6u9EYdvcJ&VL?*%nSqT)rABo`jk$(Zv%pUC&STTfE;@Wj zw`TC`d}HANBgYLYShwP~rX7Az1sj z3lH~8ryXfjiDCqb-!SXaVpf^X_nchUf5^xl+@5n&?(FSyaTab%`RrF8FTFJ58pP{O zsB*tq)7o=!baNH?cC1Jl((f5lL96<=!eEpv9vYqWVQJEGN-4R1SWy%T5M)(6Ym%`tTUpS5so>!Iu{@HidQe` z=7r>z-Aeji8z|e@_Ib>iwjLTB9%_~-LQ1s!P9nPh zIH%V3$H5{+aE5n_R^ED9Mab?KwdWu{{ul*Nuaa&T!|h5el=(kkgFMCWyx$_-a&o0; zT=h(s){+^&a|}(AX!c=pN2Fb(Q)~p5Af$2K^XZPa+04euBQ_wLMJ?t5Ve{-WF|pbe zd-V+hFkHRKvak$-q&(`Mzol?t%HQW#xI1mXM2+ow^QR9OY|}YR;`^l~e-Nb!7_g84 zN7D$b3fQONnwsJ(_(2F$c{P!&IG|Ts*xII>ee(G&`gmu5U;oq8m{(|gJWE`!RYa#O z%lTBl$HCjgk()8wf1?C)UFX3UoqxajWe=u5q3Naq=4i#orRHZE8YIBDYk6gsyO`?o z_Tkj#aZ=*fe4BG_lNP_^o0~xV8`Z<$MqKaPYrea-i~76c z`L8@L+KUNqI`ZGD0QM|SnE(Gv3!>r?>=>bJ$>G~2ls!xY z1c7FL|4@5#uh(~`#ok^ovzN{~EPr{X@a^(aO1ee*)*6X=@p|+m;CY*4qpdYtLrWo@F9k5a%GoJ`L#3 z($X!CPELzgvM)cGtX`hJd3$~}H>mS=$I4)U>^XY%ae_3*pcUKO1E^ch(F#rCq2k>v zg}bZkHw|;YB!;{j2v8WFL6&L8tv}jtPUpYXXp#T8on|%TiUeE!x~p{z(a%>!jNi}la_vdnKXRb7L53+ ziL8Zs6^sAK-7w>2FPRb|Oj^8Clli8eQ~S1!cy5huQzTiZ9#hB+RlRP!_#@s1G(nSQ zce3f92chq@OBIFPBN`N2=fK1YO2QjtmtWU2Z8yAan%=H@!KT*Fa;05}@*8P?v|qR1 zdT_!+a&!ONif6X{k%RPedo%$_0zb!OXk$%Uf>;p|K601*z(^pxKe3roHLT_Beg532 z%s~BPHE8ua!ANn1fL~s1dwU|*9+>)cs00MpFtvLUSC~@!RBwY5fW{a}FW)Y2n{&rd zZ=Ld{3!8FB>x1D~X|X|9=)&4?HZXWpLOC0j7b0YX7%{v=yWT8lVEdKfLXa65*ze^u zy-g>V;z@L`OkORWYNTgmZXUdD|2H#FZ{+e=VP==NZNIj;c_4J1-2#PT(t3LMkRf2J zroOeiHNZ!gEhB8nq{d|`nw?%4ffPR*}Fv(u=(E8nu;oBL?r3bJ~Ex6 zA~Z1MiF-&Hl0&NTq;MO*VfRQi|LW~`gVU>&A!6+P?AKSm&d(|F>Wm4(bidg_kxLR6 zLC-N=&~2>*cFFJYGvbK$+63%Y4y>uClYwpVr2MI{d2?6r?ZlJguH;0I+v|s4gEk>X z{njY2)0v))nS@cD;7gzI?WQl)T0Yo^ghe7;BahCyY@xX6+1c-hyg72g5xq}jdxjhd zrrdtd?=MP_>(Va!-Jdj0C1DW8NwmL1GOsi}7l-163LEEp4?%0|Yvl$ND_nfiAAX;m zpEvoRN_}cQlXA-u&HL?Z_Poi2H`>Z%%1Q*p@mT$^cAYYUQw>t@kUBYu0>in80~6R} zI`nm9dzxxX(I{8P$oZR}r8NUQL1(tX^i#Ed|5jfDvs+rIH>m<4T zm}rchR1HHo0Y!s}X7a|%8YvZ2($v*3->tVOmF};)yIGMFSe>1D6NRA1T%*|W>SkEy zPW!k$|2W}E`sD!_>}D>*tUVHic!iC2-XL_xfERm)XWkw*Jwfv_B}d0sXEJ6*JMB|P zaE5+=cjy}@M5pzhT~&>mAE%zS3Wh6zx=#pXibPh}Z~u-QdB~lMsez+lyn}isr9HiJ zx92tL^jX#8KeKaS^$}_w0N>KAjT2*ya%eqH54m)@?+*Yj$KJJ{<;gZ_*b^&DfZp%aqvG4ODH21o^sH@agIZkI!1}~@?k{h}mH9#IH~g^y2S zZmyH(Y=K@i7eu~g)<(+hOThUp=R|%Ii9D$HcY_v4bp=5lqnTC$U{A^iS`(wtc-TmJ z%AiS`XLPY@I+dS7|M)%m5))-3>z(r9+gsW5U;CnLTK7|>eV#=Xh1ur$VHPbk>ZAvQ zktuDD3$j^Whv~j6WKpArGJ8EA-9KkaECub5xz0u%`f36z>`xHa`;fUFqA?gN^rXrn zL!fP6zd;>1k0!msX-CRl(d_K(p`jtyqo2%8eG6!dx4lD4BPG3*4E+T{UC<*5jnMDGgRR6vzIP^ErOgA zBH8`%rYM>`PnpGmFFZVGIz`6nAg`sR!`%AJ??wp-iw>j{M-u~gtNVU?Tkceg)vZsSJDa^0JTd|@3> z^%Ql~I9Peo`p+)?u6KHX&)&rTyfP-1VcRncB-5Z?i{Ku1zr4BM(jrY75y%{mf3J8f zO1m`lxrmrps1O`L6ZoB+m4bo>6;BPclnKB8^ad_{%wot6iVE}~={;UV+h~lZz((%= zs$#%l3nIb9w8}^*$nExf?U1K5=;R8xZy`6K_eX*^m2GUDynP7%e)Xam5p4c;=&Mv^ zq-xHuTP421dU7$uE*oo~Wzz1QOp++~U)$j%!=2!ZJB8<3gG%~OO{S2L%n-^G0!2?# zfGu*s1zMy7K7N{4o-lxFsp?vLDx#pwBFv}#$Dk=Uwehgx-h@$y`pkrgvI+%|s$Eus z(4e*bfQ87yud3G>5%NtYoHPZSQhW*d-=OMs*{sgRGl82{xp3Bb!nuJdP6aP$D9GjA?$wH)Hc0s%7_RVEf?FV6 z-B*6>ne`!UC-{l|ESG4jMZvTsS; zs-vFqfI4=x%8+LZ$vnDPPCVWyW?&*yaddI2otNf_Q@}wvwe-OVl?Px%eEC8&JV z(uNK%4Njl=bvkLi{Z*C8UxlfAaZi_7?Kw^yKqGU9)qoe=DbLY~r`LD!o_YXH}jRUXt#i&$Hs!Wk}h$u`N zI7|vuZ!a_fKgR2oE0jtP_FUqd-~16Ijo|*v@$LAb_xYKtDT8$;j7BXcra~YLsl-TU z84VS{cZ;c5kYtND4u$HxLLin`qL&}7yDsB@YP-~O=j22ab=ELK(lkB_e*zZs#nX6j z0#khNiewz$vx=hPEoxka`{j4luK2-E@L*1KJ9e{y+Q z&c*vDxE@#|q^y%1K{Gt6_d<+{`*(IokB^T%TeJq~NK9Y$DJx*gpe#=6Ms$X$W6)ff zhFflt*3OTi_a7i2QeE&PxoF0O9!E##MSt10^<)we%~*#jZBTDlWRrfsdy0^vy2po3 z@#J@~hfhu}^7gOTg0@P7FmrRl`8PZ4?$;Z{iEUT2aXrt14+!$VyMcrTEwR#yRc56| z<>MbGzj$o}ilZeXeh_WaIyx3qY4G4MU1{Uf^|m=x@?lu=n^HI??9f*M)0KghPb=Bk z-Lquo#UhuQ{;zG3UOfyE>4Ipj+1l7cvpxT?($lZ?OPlo zl;&daJLHPN^EA620-XP;D`dAVVPaB(zO>euW**{sxtch@% z%Hp0Xoxot7c~>yKv(O|QQC;L9fDop9KstLbNhB9ED!oCY%GBsGi*yKn*y}-9oWif& zCnjGzQ8edBiFe4kxI`1dIgRZ9pazkYZ0d`~;28?O`j~F+7Z24&7-yiIgYqh0R@Vdt zM<(80%rBM(UzYyZ~AK%kAu}_3`RC>Y zH0vonJ$+e9C0>#aiK1RkDl{wzLpPJ`a?=$PPO#@NM-2B7 zOi=hSf`byE8)+za&X{NP(Jd_5AGlWgZS$7KV)t#{_$1C>wazcoXeQZV3f zy)On0qh7hrjiFfPi^4=Ki=DA(5MgJAan+9|4+@~O`7VYtpwSoG?3edEj*m^6{lft& zF^Dj5 z3KO)Kt!!HqH+>YbySuCyFmE&s^Dus?P8D#O2pL>lks1JG)A&g76~{Zr`{ZcxepVRT z*w~g&ZTI2g>@)bY27INE0dKO0tDKHBYwGHhN++;D*(%>h(&`GQ@+0VZD#M%@dVh&{ zHZ=OUnkK530P;7V`h&fBb6ZG*Zjyb9;EJ1iMNCM1y0w9_yt0%5IJQVT_1g7P zFns98u=`=hqo4xVQzv zEgS;w0a$B#b{Z8BkgnbYsJg>0LCFB&Bxfg9sP7$Yc|zX=jVdjwO+RsHW6x6f)t(!< zIwtP!ntGpkGwJXG;>dLeDX@ID$e=Xu;%Jm{U!+Gqf6PH3`wS6dVyR}SK31P)M6m7z zkv5*Yxe!2ZtDU#PejS?6LueWiN+r+#8=x!o^_^AHK3@XYg^T+$_|^L!sS%>Vc$CUi zh%{=pigeUMQsj>bho5$h*|3`vF@r%m;ntwc@2-7TiKZ)ivt-VHzrZOkeka5hmF?`a zqu06*s|~c~t^i-`;JyCOO4QuV-uX>BZZn*rO`&mS@w#)JKUE<7H+vthh(9kgvv9_# zh(BDrJSyxRzdD-d(Q1vhMr}@i7j}w$`HHPVV7ZC&J$n)n(F{p+aSnfs8iuylE2;=B zk#hGE@@I3$*d))7T-kr?(j^S-*I!RYZoAtl`E*zXuVo5#O7sd1 zZ~*)VNE}u_`_Pw^a0$$tKm&&NG&u3nu=JAr{@QN(cgrSPXc$e$k3d0Z`SES+)zeTC z&YUxFOq57mhBhnUj`<1K2*s+G#330Ou|LY@t&lM%z zTq}(HQR^2Rx#$|Qe^oc*WHQ1HhZq?d9mwPxwRHZyE|;5seE+)E{91X_{ARyh00Umz z7>A^lSfvUXDF649Ek?6(0_mW`M6SBCySv;hEKjK~oF04T>`Y#1pknPRBEb=*=nl7p zGEwo~w>R))JvC;XfWVg+dmA>-ulQqBiV=#2wARYsp_)+T_u#cm+dL%jU!wPYND1bp z-{j5MaVMX$NtT_RJ+Zt$zZ*0t@qspheFK0cFcEB?k4RBLjzfcnRI7XRKhoia+a6x? z%cb;-1%mm+>dLo^B>8+J-$#Yid16mb$vXIzx@!D)_yby`g+5h7!wjtjw`sU0Mq42)& z=lUdPGCE>VW#yL!N?D6>r5A09Dc>C%V?XkLu#c&J<7wOcXoM+j=*N%GbzhazP`@Wc ztDW=(QYHL%2*qY4J0#WyP8F(3-$-Ruqpg_{d4Q-JQ$&e(zipYySJoatV8kmSutCB= z_Cbh**A^6>b2J|N#Qom@ip}o=>Fwhq8L%f0Sb|O9Dh8aXZ#-x?YoDK2MTb&r?O{yjUtzBe0i z;vaa=X59vXKv>$?L_oD(SZ97aW{QtcX3tsY$AwhbTl=Zxt-ELnbc!fVK!J_+hA-i> z_Yz~&}5_eeKuCJrZzT5hqjL8(A>QaF?hbA?qbDj?l$=j#mdz`RKn{EmM%7gG> z;=gI8wsV)aPZD8ABIkRvSiQ%()vt1-0}`r+WyUo*z^QV#*9;jF&k*F ztVDCOdgZK28V@jP+SaKrWf4Yc!hFsCoKeq-2V{rakx_ zyDv!EKd!$1>Dt;;T7(TOZ`|%_llKk&O+T&a6yg=XwvO;oNW7HLQLPYnDqaNgpqTwe z7cgyLSrxc1UkM-Jx5_3gi;77nhIL$C${6P|vAtcPYP&ss>31`Z!bq(AI2D|~MQiKE zY82{~1A9rQ)tHk(vU*z#MBhQ6tSjN}7_QR#9$UeoVQsIHhTVv`Pq^pe^i?z(>KXnb zy*y2$E}Lv%Rqy*>7W`CWy4jyp501X7J&q_86PqX*`?&b~Sv7+Qn--wMol!)5XbS7| z@GM>+{D_N2Lu}SthK7Vi7)b%DRy^rY$WNW1FLIl=P7}#l;!dP&#GgKBm)0%c-pej~ zg-BqP?BL$_XQ*EPT-&0^$S09E__FPYOWgUd3I|osSYy}jlgZ8N()l~q!cD13cP1^v zno@mlZ=Zf#oN>KMt6Ayfu0@tj;n;}@Y~%?Zenp3?NLQYA`J_X5KM9eoREc9M@$1+k z4mbp!_D(1{s;H8x$pV^18LnKlMZoEnB9i(00;!O;;^^#D)7Y+x=>kc&4QvfSs@LyX zWEf)g(^~{)gKueGU`h`y2pO^vmVLzDosLyq^M32j{6<#0`@J4`WA&lTarVXBpZ~)(9Ktpakbe zjV2QXaZ)fC^MNsI)sHitsAGXlu&}zE5u5NWs+-QmIK|kJYGuHzcm(gW(+(P%vSLW%FjQ zlDtV=PA3|i5WS2xZtYmsG5MhP_;`gz$93(5N%pi{hi=OOzB-U92)0+LoLKEwMbR~~Elt9xYr>IpH%Erv;}{}TUU4~O*e2A! zRV51>*ORQsm#v&<3y5WD;66-Pg&m^}(d@X|GO50JR9%$%^vcO*vcdM#GYWswUhWE` zN1Y;l{h!qzO-!(p0&$#2ht#DjO-i&SJA14gB#)HGVj#i{)`$pXmPEo}ZT=0Y$|w|| zmxsT*NxmL!RYvCK^x8ocRzyC}hJ3!$$aB$Pzx>M}D`=oxG_%Qu+Y$9kE4CwU0*f)} zFp_?MV8DI2=epLKgU=^C$0d}KP|U-;FwqKToV7wojxVE9Eb1q~nAoGqt8cB0`pu4O^m&e10}K&b1i;LBCx`$_f>Zy1 zh(Xc)g3sjXl^cwCk4^fj$Lyg=0jAb5ykko{vn9w?` zIuvVH8GniJG6iJgB?;a^JZea}nww1G@bJ}_JRQsj$7&b1n@cia86ksTs#RN!mj6x@ z07!dx_rHn~!0j;&!vmzAW?>|VDx9j`INZ50c3A>wxy8CxK|yR&UVs;81!LocOX@Nv zmpssVIY(RR^7{LA;~+h)=;*^tM4om!-AjM&#=C&JQE$ZvNw;B%=o&XB71>MO3)6)20Lkn zX3W=&^#_KNaLh;a7t#R0d@*|YGBZ0H8C0#&YSxYWC@#zieqZg-9iBob`IPWM2M3rC zz_+}^5cO2zEbOxCeU|fQoasQ%vxQ0l0s@1C$0ZofO!M!4NJvU_aY|5d->)C!nf$yT zuUch*s0QF_cYbyPXll}`LRQfFnbY3vYd(1FpvKPTfsZg6qG2o335z_2r>;8m7c*!VfMGC6I>l$JCTQ1DHg#45yC!)+sTN|6(K|G1b)Q6v$MQj8mcU z_Br2VCH-6~jCHO7(o!klp^@R*I*CLizXVqg^yw1bvwfGPE7^FPWW91V-BbTmpx3oK z#m(W8_g)6CrgtxO2nBZ#_~vD-`2J`iUICCsJ?-8+&^yIJLnW)Ea{g zQ#|p^^4SgR*%>*Sj?T~!$YT5p_tVaSX{Vul^J0tm)%r9+>2Ic7xPVdfpY>J=rh6-i z`%87F+`nGAyO*}t4p0`x5^4lmzuai_>B9*T_;|`;oyA|75uO-oVC%0sM60wCuW0U4 zwJk3a0O3yV`w>XMufTn@NF}vK@M=@zpgeH>4vu?>7ylUo!h{+|iHCm(hXae{#%+2U zm*IL+r#`vf-3In7KSnZ+If&asW9HhY9ozz78RHofA~c;?0+!zQy)Yyi6dE&i zMl#{ot7i%c3TMKGMgF6ifKWC8BpdZGMrgTNpO+?5XfTP6sI#stWstuj#D=j;x5F1= zDZwbpOwOd!)2G1EPwlfmXBiaqp1^1X&~=hfL=(`>A>XFerTzkMb zK>R1Txj*Ruq!xVFTJo^7n`ji%s`?{D(mdqZ{Acsq{orfcuDx6G;>~w3nv{6z=8B>+ z$e>1Sjop(0#*_+

8ZJ4>Z0tXybiy<A2mv3U>g< zaN9_;{>YIT9$$i8F2=+<)T>j5Y4Xy*MmPsQC>CdF?JwMuBRuH17a+w$s8BH}6&rgD z*kV8OgQJ`qA3m>tc6E0X6ZbE?=+!5qEif`(pN zst178$`r4nJXtV+7u4qq`<|zL7;n9CZC09d z^aXc^$#=S!|I9DgyMO$6*7CZ=GwZ(}c{2S=;}68d#2%qa)w)&F&^(ziLFWUx*OE+l z_jPHLun&4E2t(g()``qiR1iZx_$3sTU9`ngh5*(aKqz*#Bi&2lDz<-D4_m`{2w|kf z1vEhU03vYipGWtTQC)C_+DS|AU*GcRBVy`l_{t_Le{Rarjz6rg50?TRR>Ne7kh+;t%$yy-^82kd zDSI>>BZKzuO?j0Yy{UVx1!PL(YbQBlU=f{E6YxdmF*35GZoKz8fL}Fj$2q8%q~UQ8 zdT;)iF~0YMeb2xEBsNxK=!wvH*(5QO%>uiyuqON{E;UuW(WQO*IN?7USil}BkiP|j za-d(4-G@IY{nRlfz+KJ4MqcX4r_o^miK@maa?DjJZ?)UeR2N7}E9%lUG(MwvGh*qM z2DrKwOw6^lrhsXms!pagQM3EFQ$8O^+T5#{6e!inU;F*}>7QL*YDmJHWj|+5WpOfh zh&s

-R-gQ>L$<-3(LI>8T+r)CwQ0{rr7tJ;M6n7}_bX3~kWc_R-hmk%~RZkCC*6 z{NenTHrU^e(rk&-f95z7EP=dL3>O$opT34bWR=c1Suw5^KDPX3C(+^EGc+>7UJW)Y zm~dv_dpb;5j20mz-Ys($Id!}YrDAyU_B=R%1o5=K<`mAwH$rk_o45XsLrV_>M1qi|4%fK%=iCO3I@} pn8`CGWD~YMj(^4boZQ^8%h$Dp2eL|r0ngangDYz*RV!G8{12C~jn@DG literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_6.png b/megamek/data/images/hexes/nuke/hit/col_1_row_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b11947de99379ae5b87833332935b837580da64a GIT binary patch literal 12655 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 I>g&+|1I5JRIRF3v literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_6_odd.png b/megamek/data/images/hexes/nuke/hit/col_1_row_6_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe8b1548da4381e159d38dde3be9b2d79f80077 GIT binary patch literal 12073 zcmWlfcQo5?8^){E8buYgM{Oz;4MmNbwW4U17)6bWy<(3RjoKQ1Mr9AGRjVm# zH3&jcyD4hde!uS@NzQSObG~`<-1mK5pX*LAHF?BH&rN^n(j`U%eI0Y)^C|Gsr@aQe zyG8#HymU$CuYr!{(~$hZ*3fD+EbQlg_|M3bgXKS~W0jcam=^rYUVfU;PGo_z^E(MG zhsDWf`ONt}5<>D+bm#O)(T74>2|};+&uO(p93(ku-}d$}-+d@w$T@8M*r%az|H0hx zCS~_8;beTBOZDEY8d0vb#=HolViZXV);J89Bf)2z=8L*^*C_VSx<=ek2wb(Pp}BK@S`TJq9 zCF_|MDGx_KAleG-f)0bZm`?VNBTaATaZinv!M;W`uB^Bk@b-RRG2+)yTdciExzLY5 z)}FDRxnA08+ZP=NGis4wsB7hH78W;kZ|Xu#Zz+TpKFJiVpGqEd)wZzMJHCP@+QpdA z41g0Bb0|{`q=qSS(GSXjL_exGqVvV)vO7|VxKgY~S!R!4oC|cOEj&BkNA>pKD`ii? zIHAW+kRqbP{;nh`*LvmMWtO{ZFRa-wChX7etIP2wKmN_r7P6ySQOV=Zh7ucz(<@vB zPQzIgV32yx7~f|Xx20pZna#%i_pn%O&Tuwui5$0yRc-fU zhS}&DQ;S<6GL10DDKR&0DD;&%IHe3E^-z#U7l{T#VjVe^8dF@LIgJM6V_=9j z?=mR+I(w3G=<`wvccYhZxpO_;J4nh1gWe)v*sMCDGDC#RfQ1NVG(diw@>Eh+ej(3Q zKUJNRsz+NA5arkDU-zQHx}Ki36zo(_2lY}sU7S0f>v*ZEUPs&D#nUbO(erwykO50S zT2J!LLsQZ%6#CujRTT4NVLS}lG-{oB6_$l8m-NeICCI_0shG7K)~+F(=J7JAMD(@U zkHAlYei!FBiDsfU%PG#hJ);BSFgiYy(S5#i`X@gr$q0iHOJrH0q%VhQ6D8vQIT!!a z5!!2t-X&$4vJl-a%wQ}TmbX$VuVQc@$;5m-*3UD$(=86WE+OfsmR2fZjCC16M7k%3h;srtTPs71-TSHB!2<6^nvVtk7(V~cCV{w)0B&2M;1b72bBL&s77 zJ-4d(?L?t|+(VL0vGhO}+)j14R~AA&0>;%m-c8ms{EZh&lz&zQoYO+M*O60>SerLT z=8MnISu5x+`Q?9P5=JVCGQ4l3XD&^7Cb+iWatXN9NaPC}n%aq~gW=4sk6tk*!QnCf zQM&@C)4?eNhrFv`PGB~!;t%T58PZJmWMnW%Z; z|AZ2p`b&YSPQz?Oem)&xj@I@Dd_b;mDw%2v@J=ki@b{i%SC^MxR*@huuPVrn=FR?syQD%Wv~X_a`3i~~uUnwyQ^@?(24j>Kam z`jI#Z2@JASBHs$L_DSv(|C^v;nThk{9Se6ojGzX|UgGh}Wyl zz#Ec9@(Vb{ORm;zNjIFX?;26|!yXF4;ummFIQ2!GtebPJ3+j@7`A8t+08XMmQFZu3 z6$0=55yT@(Z9%+Uu0sSPl?0QuKm$Dic5L&Z{B6(EaNi`&tk5ZoDzp&hzz1^*Vsr4g z^PP@E%dzDtuGgzO{R4Lwj+hFHV^>3;!fnn&uNR|-BPW>5VfUXX z6pCEta^%E8A61iho>eIz9Ov=;2=Ckfm3|BOAtXM0{Wt#F?PS)7+E|xdXPBO(sEe6d z)>X*N9+PS zJAEi1>yB$jO9%im@%;x=rjh%e4)FN zRY((plM=TniLr1M*VOb_l&4hIv7RoWGzX~gA0pa@25fIa3cD8;sLsw`bsPy?q@=wW z4Tdju%Q{C#r$u!THUqU#XdN>hX6nht6p9ki)`;LW{E+`=kyIyMLJ5eT`LZ2pbia|W zIx&CWRhP5(o8GT5b%Z0!KlS!4Ry3U-uQ2#E+G7u|2G$ntlaCWiPZ3Fc0V0-RrOG@x zQ?KoX*@4Jqm^-Im&^&>1#u*{E0{lWXIeT>+zq_|-JrW+2|BXjuJu;E{k{XJN0z4zp zCv!*l$2&Wz7PoVJS#egf*+iofIxMYuqfQm+`AJ(D(CQesNU zTnfEbI@p1wI6@Vn)~2KlUA9LzwP=g4)?@FiBwfu@(lSW6%+T%7VEqCmc7wk)k%9*% zLLlSUaMnP(PoJCLfwHB#1`!ZWoNcv3-WCz0E15ueMy51Y7%@D%=oHw=I3uMQ}(NP*so?8 zv={Lkx_ptFs&wNd1FXx+U0@P_*2ZLj+&&<642jX#*~McpbzXUREEm%wuhcPz_8cda z3QhdU8eY$ADbru zz?NJz%`%su1{PVgH5&_W(67xw?AP0O#%s6t*6%TBzf|Iuo1H3W{b!>$P*!~hDbl$c z$xB8{7>2b0Q+IcWyd|GE`_Z=6;0FU()2>Mz=uVeA9#t&vP7OyO7JR?Cft`b2#`igw zouAj9lLRCUHQ0+W-XpI}2;D)RKR_$Le)a3k%vDVLKPvSrs%7>(-SFKUQIKuqo&T1fI_2GaanSZ+)zUW87+VQYzgKe z@RerfHxW{oj$^4(H|A;hXT8((x?a?|s@t27Dk93^Zj&F&Dct9ULgP1ps$( z9vo<8PlAvM**kN^MCc8f))iF{R(=x)oMevqfNuSc+2W08mfi;VnRC z@v>103J2{95pW<+a?dV#?WuVQj2k|i-oq7&0{#)>J*gw-IKw}_( ze%Ks-$j@QPkzb%Dp31^YDkp6%Oe$h2^4uvO`Qk+qpr9<(=!0Z5%vUW9Jk;Eb7m=b5 zwCf&$dlKh|3Z5{fF>R|ARSifb;+Hm>=0pux)Gv;PcS+~JqyLqJM2bATn7MmiI?a_f z5;wV`(NM!>V^=|37oz^B`K9w`6q$QMG*(l9_~`?NWzJ_nVmO%Y@(saKtP2GMa8hp!9>$rb2eRbx99a1GFK5d0tIxSWM~XRS*-APIP+F;JsefZH zO@XUPf@WjqKfo!Ai^BYBQQxPgxQdDE)VxLc^Pid8S4Y+dC27gtZS1+ETB z7Owh-hW5@K=UuD^_xus&J6iUCvcV!&zjn0;Fq z6-?djEMExY=j(`txq~5$^gqDmll{WdUK~&U^CIW2DyJa#P9jSsTqcQ0!G(YbO%N4@rwaW~Zb z(o)Xi147^fs@E?wD(LV(@8oA^19zsYV3GAW){*>3s&8{hMsuXZjL}dLj01*FKSt|P zs2OlsP(S*1GbIe(vGn7`l7)VVEUvAkmr5KB&YgPwQhEXA_VbPCdH*P_8QE#7$XC>*d1!w@;^9DR!U9Cc&n7ixlagb z*EU;fs;JUft8b}KTE(A!A3i^A>fO*54jd5>1Q%2rbKSV6l$tc5@2Oq!Jpf!{#xCl| zvWQm?-pnsG1+m{>LufV;sRRv>>7{qf;5L7Z%4Op;q3j}N^jb8tWgkj3o$9QR%gSd_ z+1;_)J3^}k!E=HMta|V1G?{%vLkEv`uQSgdu@`uAkb*uqLqt8EUajwCgg@E+%H#7l zzWwjj%X8ue=0k-=+yAzo$kbvDN}1>O*FyNNwF$PbBGHmrE&;wDhkaEYlsJ74|1n{X zhI-F~lShWnzTBvMUVEMX^4#)Y2LUpebFantYh{iiUQ0%3Gsi6ZckYkF!%u9aXT`uN z6~n_;GVBcT+CjnM&Y>n*E@h!W-2-DeH8t(%_1%cq!_nsfOQAy zW&Bk*NX+RVD0uDg0Vj73`fG^lXO|TUMvn+*uoEA?_y4*IYjah}omY~{=!=`3Ey!Av zHtffFYRDMLV12&rl-3x$Uhw@g7%_A-rHrNgpuk5NWBWolOjX17XeFr$j|iC-y%C4xa!UVKe&LYnE!AblaK zr5F)I7n|AH60Ccny{)`G2wIaB7{ipcE}#3y-`DpcuXq_W5lt63cw5R`F)s&gmV-!` zF8pvPpe8gE*Shz^D8I1qMb0(iI@^?f)N1fK-Gc`YT6gBDEG;cZBpqCXBSobzYRwtw{=>6}xsWEhCk z!`Xs9LaJN_z^^w{=2)71xJroKPejXgNZ=T6jyd?`Y_1S(3JO}I2Ha*bRti<4XKz^(>kKG)3!^4cgG85HX}{{uf{Z6< zB3(=PlY@f;17hag=%WD;hm^{!%qj;d-#)+o-Yg7q%i75HK_Sg$SJFM~OVU#4Yi!;h zlM1CQ?R=f;`ySU~Wop|F=rguy=Yr+nd;?>DPha6d?^3!xf-smaS%x_G&>6f;LPj$B z-RW-hsdxunH}G8yB{R)$KU8G2u&B4i0=K|rQkHX%)A(zgL8_R%=YXE%hdi{JcWSKT z1BT-(#>CqL0g4=g_>#qwsBq^-^R2KpO+}=t)L+%KeY~^mpMVhGhfU-XjX!|EdR(Lq zbl2N?h(2c>w(??;qO-kwrzEe5CR1CSD>8f$WY zZlsr&^-H-EzxXpa3oC^OwX6NdBrh$?z-UK%`bC^Udu5jgP~J|{0{kW2v%=*RZWQ`G zj|u|q$SG!cCzF}_j45Lw{W*c400(Sr`_>Q2{@P)1R4HI` zF-v#h+C9o|{RS`tz=ExYO24)ncf-&BIz{5Dr*bz(Hm>C$OlrvsYirD;I{jZc5{V;m zfRx99x@7~8&-lAXU)}!uwv?7AUl(|ttr#5jkI)g4w78XIDtW8Xt9V`IlEtk2!^@0d z%`B1cDAd0Bdx~;%W3TUI#oQKgVv=EI4ov z2Ns4r!ME|_z0=DC0oliXwVgvYH$=bEs^(cTBC_?1QxH+!6ha)?2sAVI_d9=!u3S58 z@oM?Aab<+EZ*6W1bJG$}&G6~k%Dcp8d?Qm!u)OP2U_Y)5bjOpdL!!pJl$bh0^-4ry zO&*S{%L3xXI73xx1YCgj2Iv6b!oG`SuUdY0z2`|@S`dHr* zi(dbZt+l~%zMy4`1G{s)*SVkuYWPyC;4j6fOlflsB14yieQ{; z2qyi5;GmGReM=?PNrE5n;63tuU6614e^4SO>E=6s*6*>!ba!iS&UQSK7EN_p#PcWh zB5NZyq&OS<+OqBS?gh4=Z<1~E?Pb@3n}aVh0prj_>V?~u%69Flb=CZQ%4T8I)yy=7 z-{?0UC{UEfm;eh0fs9W-|KjTJ?e8cf- zb_WK>_YE;24}$IjMW!ukgac_41CL|XqYpJM$iMB6*Ne`+M3-i2UDh%LL(4Mx8I1z(JKLeHaA&% zZ-y2UH}>>@Wd{F@iqFeaKHU5%p1{iAcKCLn>UzwVmoI$)DD*8vzEhE}OIA-(f8r(u zu21~b^jXUfpj6pJyyWCn$BN6E}WcLnT(=!@I4LZ1SFdCP-MH6S%l~FO= zx9cA6V`VI+9aPaG;yB~(f=ER-%~WTy#C7fS?#L5x$v0%mJ45WL^y~I-a;enNJgJNJ zefZ9$$4qCQhMKQvc9t(Fr~(Y{4U~WJQbq7C{m@WhK%`o?Jfw`e`%`o9p-enMy!Gth z!II0+S<7M0+|1wbj>B7ud5i#E__FoUy0)of>+dn;1}9VaOh z(YGbv(%$K3d)&qk5f1(PJMwwxI<*mLJL1Ny+g*G-VzlP{g;>RQCf zYT+N?g+G7ti^;1Cu{7WG03RB4%Z`+5B6d30adHbVoh>a-a3G*4e}H;Nu8yF2?Cwv- z$>sTK^Y)HG2LFWVS^T$mB7AUo!yqGb-(A~cd}DR&765TB4dCP;tmMWivd4eZgtQ_6 zsbVRAH;?T=^$ovT4>wz$!rw5f;4q=j(7YSbSem}_Jja_&}At`V95Ah#5%XJP57 z$dfhT625doyyCK^lH%DJQF2AH9Po3Q3l3if_ZjB4iq|jOaRAtZ>Bfz8NZ;Tf!|?tj znfxB>0eGqfv6bVnuYh|L58f)}?(JQ^O0P=<1LExMsBf3Eyo-8AXQLPJ4QczfM{m-E zx4d$0o09E-nr4b#R?^TQ?5g5tWl|R%pzMzeRZFlGGA+~nn|LgdvY)WXId?cUHKl3T z=l|Kc&dS018sy16{*)1TM%6$SS#=|X3C6jz(oGYwopvq}Z1OntU{4tkQDg9KXO(gd zUh}7-m&`c*Bh`cl>b;m|mCf;JVVCfG?$$hljZRN2Zxs}G2deb?%{-g%wL^3ZqSApb z3}}Pcv&b@Y)j2~JEw>zW-&yu^p@Dn9B+4cHks_{9_ne}mi%t&he-#A(EXNoEX@$AM zALC%Ilxu9Edcr(1cV#N8=t;X)GTAwZ&dp7JM>g~OgEdBX8MJYr-bOx5=?m3DX2i`| zZz)b!XqBup)WpI9xbUN+f*A#TKSNLKx@3EHBRz?w66UIeg{0^u!cqHhN1w*=qYI8z z4$J(R&)w&nR0ywkXfC|BDVy?E`$ZIGk8+^CmiaZj!f^DHcM}@sAw5uf#|SvqlarHV zJ?)2|3QJ3GLs)rR6yny&CKXr@u?)I~xKa>pga9+3@%Q%u+;ANz#>357;pyKSjb86P zxB+W-1VjNC^os^tUzNcCJMo7h%2VrMHJ7uArj6J;k{EjHG zs_{e|=#o{;PlMrfJ8@5PQ=hl^^@F*-#O*Y*xr}wyVnl4=A2acZ@y6v-ufwM5Wrr= z=!g9KGkgmG%#s5v1C5`9FVx{rq5~>E;iK*#S_t&ikS8TD_N-YX|6SEh7bwoUMiz2i zaC$UL*7zHaLDZ$H!V-zQqmSbx`%QXkDdr7ML`%vtCdnp#lupXF59K2Geg2%AftD*U zc?E;6rKT<_0cxpKRz%up!mMY1Tmeg&4-Wr^E_s&-8iaB8?T<4;h_c*iTn8t#4)}U) zXr^lTL2{Uf!}ZHWea+n zt1opNjm_BhPOk8`pL2J~{(EEpZ+C7+k_uE?m@xXYZYP%C@XiE90rArsSA`cE-rcCX z+2lP3HUX*uLbADVg*KWvL%rJy_7zzeGTl84v`OTA&j(APUtNj(oeOR{ND&Fqsadk{ zusnOxRp1(7K)J?WCFTJr+2?Fr2cIv8B`zxc+1QZdWy-a)zXyb-o_VXoh3_*(XfMY+ z1eD#k-3W55)XbL(?>nybQmKzqeR;F1syxE@ibg*YI zjxknaxAwfNN&FF8BHmqX6PKkwiYF(werfaqAU5qrW6eM!L$~a=fn*HEr|L>dqe}xr z?6Z46nPOnqP-x*>04)z=6}%PL61j3e04cJ(w<(EstkY))Fg*LNXvN`XDP4;Ae0=hp zOrcw6!RsOFwQa|*OvD|)ydSM=lrGwgx_k#uT{R1{%M7%TD;s%D9Y#p;=F~&TzcclR z+1bOrzK8nCsYZ6=Uf!k{1@Bu|Ei4?PV{i2BTW_U}P(w!(gFIWVLf*1Rj1RrwMkRb! zNPc7X-F;WF(d8b0TJG$3rSS87lZtMDRRfspQ5t`}t<3uV34mW-z8r3%PS)eq1>7u* z^MjsT(V((M%a;*GAQpXy677NYpPd|%$KHrAIbmyEn+pM+DEQz(xN7Ke-13Xww(yEc zv^I*}wlMm?UjNq*=au=11(7?gfD=j9`+>g*7kbUX|o&OnU=L3>3-1!%%(uYdmJB6rKF&X(C* zkX75Inpv` zQ#KzDe89(a5Onlf;NRsl&9tN>Al|(S%-i2J<+ET&zx9q$$6mGuUZ3XEUE4;%3Ydzy zVPfeQxLu~_#uP-jiNV;TMzet+P;M=j7-Zga7y;lCclRCnN5u_K_&*gM;oWBk34}*+ zd5n~C6v$|F?_l-dL=8CYqT{iOkfUYGe+6?#KWbR!RhaT*mkOHZglI2swng~Z1ZPRm zQ8tW`TOriXX_hO=5_8q}dth;>Sf~-zZ7^d%LT}9^5$ZbnEasHfR(N*|5@wHuyCbCLuY>z{mKSnVFi(k@u#k zoW-~Uw;~MQf6&4f#EbSydo-I@py3(9VaIHsw-txQq}Ifmng6y8TarC^W~C+2}tW; zhGEo|VjI1$jiA7RG70~72GOKnr&)oH=cOXX}SrpbE3*UqRYgD9oMsi|ClfB*iYBT>qJBH(^zbij}lw8t90 z7-rqljBaW-8yFdF)WDLx2sGIPw=BjLZ~C-uU(+~n($GVSfU=FSwYAV8AHWNd8$X91 z$^>r}0-+EyLJ&f<7OTQ6b;i;Fe$sz+?N#@gok|-MqQnukp$noQ(I7W&IxXP=BlW{G zjng(Vm&VYpP=&kJdk`7cgma5`NGe_0UKH;!OQw9Tw&Y=!rX#Ymdhw4oQ51GSq8Z39 zhaW*nXqZ*4C7Z5+-TnVB-W2^yC<3@l`(F87KR-WB3lba5(BeO1@h6)z%6hcT&8ppp zmlY{Na-DfT?R|ZHbPtFJ0bzF8xI5$(Z4NNRDF3B_mW6^dbjY*)-w5gA-6gxbGQHPx zmv}UO5(v6Fx7S(rS}E)XNadw<(f$1 zVnFoD)8xhLMHi~rRnJvwhD?y(pP=856(A2B*egT~eolO*q!%6MYV4MX9}7QPbC24F z6h~c2p4)L^WE3U0O64I`2Yqeh-@n)X0TNCXW+3YJqxoQaDo-u6%|6YC6%vXyzKp<4 z84d4XR{=HH>87N|%AM4k-!ylwqH8u|{bRVW$Sez37m`F&ZV!cTrHjbr?IYYiul$$2 z8345TV?F@_d@?UpmXU9Oh5YbCUwuBXCuR0D&as8>S4H$ecju|qtEjtaBUgd3aB&{_ zJZ%5g&(PI^nnxc5A*_gQs)v+Rbrm2ZX6P0%BCo4JBr+LnUKW)!c_WvRQ-c;Qdtcm@ z5g?D%f>fp(xhCkEN-dAOqe@Iuvw8l35&9i-!fXE+;;(?nGb@`YT!iMOh9?q0vKGc? zP8xg^T_eDeKgUu2>&g|(DT2k2bRFd=GNZ7wbdiT zDV7!u1#D=Mlb(tq2Fa^oV{qc8^YqXN1*K<^{jWXAYYJ@sB9|Sz`0H54Yz#TJ zxc#>GMcwlK@aDqD(Esua)EVW$2|qi*;(&wH0-Zhw(2l|n#he@4A*F>&!Ps5xe%RXpNE6m%1X164(Z;%z0a?{v`>0oB5?=k_c8U(y*utW(8c6rgypNB-(`A-Heb7Q1G^{?H!qnV@CnMe zbjTcr%1s&+Y0?HbLt5qi>@+h8GEGxr44ssVS>?{qZ4kQGUKGFJmPo z$lk#0lT9GNlTw|WxS0wmmlC~eyE{jz4ow~xzuP!xElc z#<@d4ti?I%7p?-sDK#|}*d_w7+*wpnK|w)QS&m7%A&c(lhEgc>nb%XPKIgGjhv+oo zgGUTBe9qF_Z4P8Q7_bs(<~jyXaI~t?lA^YN?mUY6W&bbM{#^-|*L`PbP>ZN0C+&2? zBH7$&Ahg|A*F&py-r~}S-}KrBccyEuLnriL4SZCGsvUOplls?U)o%j^9>9G54MM5H zF~vk|i^O#tsDez9<=q34^|&o%C6fn!zb3shHT@6^}~nXDDR4RFKG2M4>tM+yRjWD?$ivnAy21&+%4TKEK5<7@ za5&^Xvx#SyuHU;C{d+i)ByM@~_wmutaG<=;J5G6;BwR z06|ZgIoQ0hu}GTkET--UhXZL}`?ssh(&~9XLC=>jY)G z&6x(QV7BaqMJ84cR-rfM!>G&~c2Db}588!qv+70PTPywNZ_xNuBP|>Q9 z3Zq#(qVPu27!c*0DSADA9y8L3$z2kT+1c%+K(%-Rd(EQt0BJ!fI2P zy4*v7juZIyS@c@`7^Swuq%gZxBO(q^88VF zLC|!Utv8{Sf-CiQ2kw4qOH0A)w2vD>*#;=rjTlRUrW?1pqK@NRtsnb#Kfv$jwiZIw zQ_O+w#mt^dIf&P2*y&8s`EJoS*qP3h7$Ab9qdGlm)f`m#ccnUZ?EMb+`0o$gO0i|> zl|#4yKW0ML+g6GH)5B^*Y%R9wHn8KU`F6t0i>#=d<@7*I<2*i^cQ~Ml$A@HVKj^Ix zWlF6{Gf+1f$AiH+`_%F&N(|65rsx^2REZAsBGIt5!!RqGj4ko~h|*W*Uo}qcdj-yZ z2|UU2+UDulzH#(tRec}?ypkHXn-l){&~i7Xv@25_w{;?>F5Co zFP9a(3&lQk`Bs;2ue1Er(0w%_1J=tLw}%52khFrim<`&CC#65BmPK zbH+R_di(A_WBNR>5h}zT^6+4RBt48frTaDOz?^;28t3^?JZ;GaEs9B>n zwKwncd;c)5E0lXi4 zq=KyOyWHLuyF{y1Pwa`mce@B-=;QH5Rn^?YEEOmOrb0?1OC1BFF@%dLBz-wjChd)M zQxP&`6rxCwWL6gKI7&Ew(2>pD z)!dkjlNU9=NU&|3P*L%drskR_^L}jyt*cVIVj)4n1evqeAUH|DLmnZg`MDzfDz}{( zG1XF!K}};~#-ZVrQt4 z*`M1RG#Hgd)!&zvDkj6sy}cjKpFE<7Ad*#R4tSAX8XS`PD1Pbl=g%+d49z_~<6u#C zhz(+ay)UtjOS7~$3!Yi$6%AGb)1oKh zB;?i)D%5oNlKEP4Xq-vNO{z%LQj*zqeC|!4)BB}<4VUfTp10KS9S6#44K|vP@VX<< z?{Mokei5+vYNiOMhL|clU0yV1Cvnc~#V3Ni76jAH*0yV&{UEwX^OFda!Wj3HH{E(- z-2+NNavJ!8u^&v#78663%B$mjbTI!D6tMhw{#gpFaO!Qc6_pZOuiR}aBH0e$!T2># z|8UUx@4x>Rn)u{EYIp@S1Z$55c5K!uLNspOvzaKcWB)s~IEu#3rYaUHt;=3N`!s*fWD!odhuP*OdLCD%ne$w^- zyd#UDXu7qg&Y^0$%jyU!QiJU3`g)}Xe6JUyu43=W-5PlD0%YyP_wXVBj>j7D>cAgV zJLZVSub=nKgzY^68Z4-&`;{v z>*TXzjGA0JR=>V?fGG+4C{(rpfvOOp|A9jjjc4a`k#ba-wyQ(J!_3vH^*>C#HJhfu z;n>4JOq5S-d!8*9+(d}P^#jX6pzaq(a!0Gw#=>HtjU0=xEQJtEYBG29xNe$WWw^B= z(fcv8M3zp&)^G15m4;%orVQ@Pm*LmPH;*EVBW-Hm6aC(PK57%n4?-prjU9Z3$4pHb z*w@it`1z@!EA_F1fBU$!Z6Gm<(TcLA+H9aZO2q=K)iL*y5jH_VCshj{X5vH)qO;wJ=6m3}1U^o)$j!=U4SKQJ?hr84E!Z zq|UEy=Y{ee*^mwMer_OeAqBm>f6sgkjFEK?F3kCo{WLn9CTBC}zfaCoefLG2=1OE3 zU98TabxNU1wTjs)Glef{%0|A8RJVMIm4IrykzStMEEWvk%-@#s*^#bb5XaahTiwqZ zNnDo6U?;*A6|p7?%A+CRVI{mLW+$?eP*qdih)lNGYB=%v6aH{&e*Q5jhj<=EgVV?F z>mC)lm8sFzzOBsfS(1BrTAe73@e{&KS*jGrl<&?;GaemA zlQYeqOwP_K{`7e8;6Y}7zO|oUgj1Pvg>L7Mr`IPzC(iSba_94bN?f#r8!`o=sFt5V zL?x!I%G!-}Z-1>`_o{IGc1u8zAr2QNoG_aqb4%R(KeQ-`g85eQSW zvz-V2YQrT)eE9O8D&HYv2f#sw^YPWRw5XNME5-@WU3W~cc}Rds?skbTFDwL$Mpc*g zP9A)9Js{SCR@cvm`3ge^|~Lk7KEczfps4=D(HbCfoZD(cXI0O zB89P1zA{(srOd-SiqxP&)>_CgLf=rl>x^u5YHF_Uz`uywN|L#@eI7VlQ&VE;>FKu5 z8MbzJ{xtC+lg+Y;?Xm^jjA^pmb}psXvcK)jF#{Lg%dcQ!yqh0f#4o1>0T8Iv;yzLd zN^B)qXv8ZZBhlS{a}snYZ+?JfM}Y5qN62f@B_>)wQlW~z#WPr=8s020 z@H(PzIU;`i*QM5d)|CdG_!q2@_qmMjRG`~OhU8%#p2l7LN?LS(S6BA}3Odb#aphKm zrG`9~Q_n-MZ?O&7rB(?s$Cc~3OD(ir>l3_ir3KhDgQ*UV$si&u>Rd@tYv}_&q zsQpzA0q|X85ojadPq(DnlbKMv>`bg8L@@>NxqoAW*Bq+-QBTbG5QM{0$M%;;%YB-+ zM9{mQAKC%KuNzoku`Cr40G`C5(sJDTP3rU{jK!2G}(wO_Wg2uh+HF!%5BACA1l*>5h!^Pu$Pw?g5ULq3C#$Sn^r93D7<$Kj`Q^ITysRFS-} zBj3D=4ak*jL6U@pZ&Pm)$M9Rn?eX0c?zCty37=i|hjLOJuL>UC{-16*3@L!1v)-Ri z8@7fh7EW(d_xn)0USImmowS_@Fej{gHE(TiPe|Dc(Z}(lQY`!9UAHC$FD@K`v1^wt z$k^25+LI;pCNnGR&)T9SnY&ObFDC*eOK`7G=A^cRxNTg9eqtzVu6jN@SP`umSp@Q4 zrU|Fc#!_RbD=QrUf>Upa-z9$$>;&Z|o%!<`hfButyx;xv=234*s5!L6PPKiW1I&>O zTbZo3ygbynK{QnzY}Jm{w6>yhVPW~ojLHC{#xonsfhOk~QJp-3Ym{q8e*YVs9Ln+h zvqLwi(zmp|)Y0sky0Y0^J;*Q_=Jvv|8w@+}$WE9_UbWy5?~d-JAvNj3;lp+*c3C9` z(YyDc*eI-BCMIfoG9vfK7kJBFCJdRF)x%G&8qRLMpjD--iB9|YaT*{F`) zd5*^?CxbPyZjB><|BA0@N1aIRgJQ@I{`>e*(9Kv*#_H-9@2Fl(KT8nfbalDjlaUd` zI64YfQJ#$%(Z1~HXNY^0ASpSvvj8n~L{saknYN9~qk19$#RNVv4bF83o1XK5Tk|2QNHSkdb3{@t! zccM53{`9GKRq7+KuSXM!X#L>#8Frx~;^E<8+W1Nf11=nv)jE1JKC&oN4I68e(P^eY z71pSN-~1y=!E*I+{-Q0jwTh!)2og3Tn?&PUUg7^L(lq8|`B%ac6pbF&-PZi(&KS{Y z*6~iVtC}epR*K)I=@&3akKu8p(c+%W#2~Y+p-t}{rzY<)5JnX@l#12M@SUCj%O$PX zVU6Yhw1on@n9m}t&hQ@f8w5SMe-K!(RF}tGg)V7DQY?r&8KEu<0(Y~5i&}KirYzy- z@9pt7M{ig%WR6aYeLMy|Xuf-!L9DWJ6|f=f`=+0i42D|rUqO-x=XNHW5wacEbIbr> zfiLcM@v}yUw&?J{mi9o3bhg<_6-I3GG+}Jo!Rz`e_sPh}{`-%y*yIyODIg&Pg@i(} z_HX}l#!u~<*%NQiN*&jGaf?$dRllSnUc)};5w!r=08+4sTl!K8>_%?B9IsNF3V@__ z)@6>&rD>Zp_^Jcs`8KEEYU=T4$IvnVzqLK)VdhYk9wPXAJ9;Q)@SS9~!Y_w{zf5zy zrD1T6fBp#L;WTcvq7K3X)%ycw?hg!^zuul-{*gsXRG5HU zzOS!!Q2qs;;@0SP+WM*SgUQiQO)O#<)E&tmOC{I&SuLz+!G~E6v~eW<@fQM_{JFh7 zL4t8%@;R=Em55QyEzGc0DcK6RDNy2AC5~Uee%UshfV!zr=v&A}ZHqwHeEb`AE#7oZ zv?KeB6~Nh9!VZ0x%SeH^HW9~LYB9mbiG>{cpQ`E&V`%u!I#8242^^|{2& zR(s0F^#}8(%?$rl%@s}ITz4+T!Zasz^Im4~74nK_+p$5y&4W~uIYrfPqtJVI3;1LC zJ>n245x2TP|g;F9`a;7)Iz6uUEDGrYtDW3$;5Kf zK6wyK@Eoj}8KF`XC{32-rL|v?Y=6EXtSh|QhcQov-A@#Vm+TsNjATcQ4oG~Fqf*wo z{!o+%Q|E>-+Uw|~zT^b!C~Fa!`tIZR|Mcgd#*=OM-7);AcQ%t!U>R^EUYgwfF-OFe z^j?YD=|sdF5)v`(Mg+EEWjpaIl4(1AfbW?yJQ78jbyCg#)b zTz0l!7OaRAoN>uq2+5%8jF$h$;XFyoae~wVmWHE`@`J89^P3MX)aM=>+Hwgk!U~OW zX7t2>ii}dQc_c^8E$8E?&bdk|r==-O-tRT;5hofSwFv63r`}h0EV$((|JmeIF)!)+ zUH7*u&~&>A7O)FrPS!ftlPCS$X{6BX7a|CNK$bkxf(kNHM0K?&o8ll9kQm!0^=#Ow zY+@NRD^mMA!rC6E^ieNoyfT(MdUD!PXpQ`AP3C%*V0LQEaVT>=`ey3)Z!5&s-h#y3 zx64aOxeh|xHR8#WCxAFw^|>4fc=)xobrcZQ(QXmG+#p!J<3W{oTS{CUd3}Auy2o#y zi>@yVH#w%I3f#-qEHwSqdy-Mubv5*p!)B>FGB41OlGHHsjt_)4fr0tqXNm~pyF_tH zDRPB?%4R>j8cSp+KYpI930WA!^{)%9vAbw7oPyF1zPy$3{>dE4y_AdC@8weP7& zL;oap9I(AaCZ~$V%MMz1RaDReRt_MkH|pqrR`6o&XfV{*1Esod`bLH?2nVkvhb=;q zBCvMAzs#L7JV@zZqQ>)(EJCUZfzm?L_1E)2NLBXdvZz7|C9DvP0>|u^tQP!h2Qrrl zH+Z)AdFsO1o!ey^1%I!0Z*BoMY$>JSl1#}mW2rx(w#6+ZCc~s;>aDAvUq()Yo&Y%1 z&@p<#Hf;AoK}&pnI?SlaBg&%sMW%j@)NC9Hh9=WT}f@ z`7o;l%H(~;KO#ZidRfke0K6o8+KPET`iyTN z;aY@cWkQ+d&)I6hs!q@uk6L$;KKBBNG(hgb#N91ubHlA&@5#wY1uY0;f1!3ojsF%@ zM@Of}HMdd?gM?sO_J@YI8r(DT99J=X!!;9iGxtvHvsW(u2kU&qzd-l z#Zrarz3X|GYiib=G<>v4ctn8#Mr=9~a10vs2y4t9$VKRIP5Dm;2-&?wQ5(tq$Sx{2 zB4qMI`T@ypTl*^UQUj%QtO^fczPn$eoPahtRShw4VXe)lxNud4YVj#JTnTc>MO0xZ7CyZ1rT9r1 ziUG8Vn6JkpJR)idiqg?ay(~KHGns4B+o$}!d-P9SAw9sw!Igw3Bjw%YAIWqW%0yy|>ro@2S2T@VETd2pF=_>qs2%ei|Fa4Dl!{ zt_gJ9$5F>``BL(g6AQEjr)2R@KaKAktJL!C*oN7x>6YQX%4e{Gv-0vdqd5QPJ3-cH3kU>| zoF53K)9ZkM_^EoYyJpYd`TH)fh5qvjqA@0FqTBCT0NGQ&%}SRBO9KcbhT|cgUjUV2 zUl(1qIp3BleVSyNB;q`0<@`qC(>vbAXKO=0pOj|w^hA(j&;z?!7pZX6y-mbv&Ze`my}ob`B!xHcvo|e)ZbsYH*sf*oxzM5dCAr6T^`KBNYw2 z6b%m<9cTKUiL2okiBVXLlY%uq`nU!`eh*^>Yogy66ouNn&Fy72?~KeOb`a*e-7)_aMCZkB6) zn!$prbzsk7NMDuvg2P`u9r8AG(`w5!gk(heM;S!+uBc^B++{+o4c=KMggRx&b(Uy* zBt|c!y)r3mo#%?;lmk6@_z=LF?d|QEd7sr}()}9BtP{Z7AyoX_csBx`Q4$(EHlGQd!-fpdW6l{hk3L7Hf$;Tlj^ZnUR3Q%S0=a}Ys(zj2jMP(mVRM9sHV zI^MFjwl>b%fIE8Vh=EX{hXZ6G1(n!B-rdWN)#bsI%b`z~gj{jYQ|tf{eY z^3S;9b<7Tq9j|wGuk+pCj0v`X9mo?F@O&y4J0(azFdKD=w34Y5sM}WE z{T#@Q3FU;%#;eN(Rt*^y^#aM!k+7^-DN1ktTOTyJSv9%zMxT?AFooShk3Lbfd6+P? zzHZmm!SU~INh%?*_I2U~7dc}out$Jt-|EHCU#}wMqRat7amKTMN8BUA zVJ&RMU7_z2;qZ}zj%nr(gl#v6?Fa84Qup64-m_)ruqkiCSZ4tMrdx@QXOfa@eICxr zfvoK|dWd0bmH>`W^tOIUg;kJq0smoAN4WdyyZ+GK4~Be;6eM4ZsX4q=sFcKlj=E;> zEWk5~HmA?TB(a<|v>knvJQxwmZC{07_%$D%-~E;=H5^4-rb*Wc%(Lat_QRK8B|Z(Q zBVhzeSxeXJ%!%k-|0VPX$9!{h{l-f(QowiIliC^ zK?;mw3NLTA*mZJc$vq(r&2rtdU$tW{SLdFBJSw$e2qYB-hNMLpbKK)IX+j8OC|cPm zF)D+IqFEcZVUOO6U?11s4-&p#1me^I$t56ApB+iYP9FK)t`!mjW8{5jrR{j{hh(aj zj$C%#Db?l)3KD+kcpfT^OkYkPsE&9TR)V~9X9zR&wle+hd6q_ioahSABPHr4a|Pm)%DfiY$c0yc?Fos8-dXV$SAd$LDK2h(^dx2+nMlZET#Hz znttj!CGy?me#-=zArJTTx;kOzz}@DvN{xVQQFWeIj83~w-|g$lb$KPd_t>ur6C4dd zs6t)bLK6ptuM~_2puUb2Uyoj94u#_%F}scXQW?GH=M0dUS$M#0dGb4WMb{zK0GtS zm}Y+uA`1;u8{kx*kk!)FzK={#f(f`%6_Uy(b19g6=tB{&$!%$oIesufq`OV zTjy@MMI5p@HXYcHJ{?%C(@iCY zA2lm~P9V~P&NXhb-jP?6OwPAGRnHaWdy2PkwM(k|=}EjpHSJ0j-Ssl#S+P3gyg~Y( z7Xr1EwaVu7@GFzHuD)}wQtkICW%0F*ZJosl(sw%gWv*F7Cmr1Xjy%#u zmriK%d*sB$p#b1%@cs?hiEhUuc5?^$EF9oF(ic-V1GQt)F|o9|Qe(3?EPG9?MIm4s z!|bGoEHfKV|Jx+a$!SnT!FFMwN>3ZHfanA>Ard)6#%(tfa6a#;hIBM$0cU zJ5=`Sw<92L;&oWTce_|W7*>41(WhIR({r`o%wJ!hJW$>V+Ps?i>J#eKjH=cz0sef- zzIuM{jg8X-)KAf-FJYS$Sy@@7%a8$p$wyOb%gO@3bJIoViut7T?+XaW%+4A=uvx8m zPzis^WNjXpe|0Q9X6#Ra*2>Bzl=w5u}pqXcNh^52g+ zGe*XoV0QSlmE<=R2)Om*Vjl>b=Gk19^UA7GXzs)w>O_%?K9i1(-%1qfxireuttJWl z(c@1;KjV8T{X@8i(4XP=6nptn`8{ZZB(VmcgwU0L;-pA>1$#q|=r7yuj>}xWx>3FC zbH1u)q`wK7VPfp(N})+S6&xP6Fy@GM z|KMT#c#SxsSQLPgMk6r~v(-|^j0*d3`%=|veHiGDYAJiXW$`9`ww{~_IPgj&aEXL$ zLwKU(_oSxsBpH_HU6p~upDNE;jMqc~$V{NnL8%6FE+m4=qm62>2C8OCn= zBj@e*)>6}5IDX-Hd%DMU#4qsD@m*jC%hevsflk5=tXD1x@zUpfy=>ewt}*LD3>lf^ zX*@}z@3#2->4ipZV|BPqW@dWS>RIZrB9Q9UFKO~ZvhuS4I3ez@UZ*5}>*PosVZKwP z2PsK}*+oC6mRp479~Npe_7A=u!@l43(dD%Uqec(fEp@8&sN~dI^u@EQIEX~!N8erM zJ;>W#4>?UUy+RvsL(Voef-t?kiY2LE4DoB(sRY4SsSZb;R8Q5R|9YGBLlVh3XUq8C=Xbv#^_+Zo~1wIVe_p+>~7tR5IPNH~E#oka} z3_=L+lJ;mRRO?&V*l@KAqQkW-6wfM`=lsCK3;AO{F#wV>J+>5meml3{^yirh34 z%bBYW1}AJ&g|f7%`)k}J5~{Q-)o#;_F%&D&EB3Rc@Y>O*Sci1FoEp1cv`Oc!Px+iJ zgzgq;SL|m5ogwXi@={)%%5z6|MbSR-XkwDSSx!;Y82en~c8B0u{Wb=X;(z5}S|-D| z0Etmcdt#g2C%ek}xEmW)wedkkdjAilPG#!p{;RgGItLMb0|Vm1&-K-v-xq0C$4t!t zybhf2t%0|ljWmFY5^ai+T(Bz>N|aDJ!2yvIH~7|W;Q09YRiMmn>&3MK!$7Y&TBlm= z2@5JU*`_w$E^9Jfv38=w$b}!A$4&Zg2H+K%a60ac=*jxtNrnTGn@iKcS6gkLCd{4R zyxiK^aXa`+&buO5=NoF-uQxe0^+)4+Sp(FaXnIj+x{{>KyfSukIVR@2JfI*pq-cr8 zBk`%Bp?96;T6*6t1HsKt`?S*HmnFz9p)r553hv8??WZwtCaIxsb9{ggV&53O>jN;k zhOfR?^s}-NISwK`5HeuSEQ%qj|nYIdq zApH>1UjM;PTLq}Hm0j{{`nxRiCrN_N4S=%)xVIGTk2C*?|0hbQGPVS+p)uhg|JY^V z$)^@IC~?d7`v%wj<@q{~9 z0_ko-`?c_QHMhOR1IeIu8kToA7go?6`C0m*E`Y@-);@OxmY~9J8Cf-YAgT+m;ba^YrrX z8%faVOo~R$y!66eKg()k%-D*2W&J3?zlN1FTqAtGtoiPI6|HxRRVw~gp;NXO5L6`D z=)V^e^m3KeS-82F+VA3`@lGi&R+*y)F-p>`#9>6RUZVi)?#X(ob#42%yKlANY1|pZ zw0@&z``$w(Z#cEWlBZn<92L^7QDHSkQ8jP|MJ>u88)LkHXQ*gYWJ+exLHqTzi1V8t z!c6F&lfUOIHjlY>eNLqq8NZzMJiZR8t0QL)+7bw(0tjnOTlM=QJ7CjSgukQ^dh%Bb zd3g)YHpkqo?08tj;AzMdA~agm?->4AJ%3q7>Ie-V?s40aPXf9%(Ks3<%OYTDyep(Y zj+U4AKXmVX$Y(A=F=`W&m$&U7SxAtlzJtO)zDqr5<@QYGT;;PPgW_!-A=O^?dlKGj z_hCSIh^-(p4_o#7II}! z!8~$hdE?wxk}H}6kR=2Jy%0HRz2Zkh8*jqhtfW4+*EtS7Q3`lZ@NA}susf^g?7*`k zwIT-MkimfjN3Bn&Kl)tSSeRYzs*xg9AK)WJ!lFzGT^R(aIREVpvaT99kPApiNC3qZ zMwvi=L3rZ6yUfi&CN@e?03><7R;>HP+K9mU&wawn+dJdv$g|3{xo>4S!~F>=QzC47 z`?+6pGb=0D-QLpRZx7>h_Ne`*qH@%_I2~ZN*T5x~voYquR0>)lML2-s)=u@*{CD3Q zF}PE%hRhbZi*M=1ajSlNMMsC$*|*6nOtEouo8tWB=l6|)-tg-|=&A;MB`w4BZ|_6X zT%%iOzR@KI^3!`lhDJKixwox3(A= z7&gC5lQgK1_iq7u0T z0@0qPzO`^t~3h3$0Rm`Kbe`_M>DjYJ8%m_K?_Ms#7=^qdBn zOod?!q|)Smu;$fl+l0Y7G`dLcEv?e2JJG+ygB4V%hyd~d(>L*n{$HC!h7$3WbOaRfC1h&m-#Wzk?4+Y zI3md^WoFffStm}M!&$9$?t@7se)Gir+MMk%udu~bQzIeO-qUawG2h>3m>NB{kFy@3ZP`k(8I-Bp=@l_&m-&#pr{2TG0j zX!`~7S5cB0;vk^u7Jhb5shD~@^m+X@(Cjg%Dzg7w=(nuy0icAQ^K91__&M$40vvCT zt6bY}*vZ~}#av35ysN^*jwbifc(yttP;m)daCaI1`^|Ql$?KnzsmzaWNivs&8$&DY zns!2;r?GmzWc+3m;}=SPHK9+90OfA`7yc{}%LAMuV}fh0QKG)MTiC{rA0^t=`marw zy28m23;>NbcXhp=dU@ApX>U36l@>&}{VgOMNQv`aau)~=$_(XEyBLr4cTn;eAV_36A=@%#>uxEba~Zv5D?u<1B}kqN)4&r zR|V(vGH0ijGk&|Rl1FuAKzdoM$(@M3|8da2w2Hx~(JeeQlp=6JhnMbALf_0>6RJ_W z?__^!Na9PGHqX+9bd^MjF7ICqCQ9cSiuOBVRIHS$v4Smr!ecwJqutBpe7fHV^xmA_ zHrw|rZs1`58+O&N<=@Es)v9Td>-L7Q|NQC_%Z)o@Sr~R>X72ajk#&3ob@H?x0(fD) ztiZ_3vcRrf&(?Yx4fAyh-_wxj<-6eSfg+iu{$ zJpW~R7A*RcJHWk7+Wa5M{}ijPk@Is-P;ZV~5+9WdZWz zd&3BdsPe)MAuw%;j}Ws(jb2gb-Xntm5z<*IG^6%mU zb8Lm6p#9((He3;VnB1E;2dE|2S6=h7*BN^kE=hoa zWi)3ryv!EVA|!9fn>LP!L!ewEy8UI3rvjX*rk=mN|4yOQ2Iyg0)cqJKguBF>;@AN#hp;6P_%Cg|qMfBmJYcy5*7 zzfKY$k_SS4U{~<}lhTex-iV3kbl-K0cuCV8lS+9)3niv}Ul&i5Q=dw2ro@S7rx)Nt zXQ#dI#WXkdD1zvQ>yh}d4zeVb5I8GXj`t@i#+)Cz+$ackf1GQbHCgYT`LLLK{yV?0 zaPRfCbY*2_#NV)nmX)VQZT?xUtx~{{>z}H9bGG=fT{KJKdE`=yF8Sr9MI*;gyCw{d z+oPH3Tdr8RUH04Et-pSy`)FHl%FyOx^%TN>6n-Dr#FoqNbpA5l4E^S9t-p9g*P1Y? zk3u_L7CXi%Bi=Cevmt4W2!JihocvF_q6bK%WvTdOWX6EjA0V$5a^^3IuL27qn0+JP z6a>WE*8wHMFVjpww>w&s!aJr9DaRNA#l-KDr067l65QBwoE2u=nJdm}2@8&ki@S^z z-mo&L%Adc@jY=8x+HHXZcycajNFuRW4Je@NnIO3ja%HS-Y#jXdje>!J!GD>9MOMpg z|9b93dL-@1D^a0!V!*q|mG-2^^B??l3GDbVUl5CliK?4mk1rlP&TGCnyD{Z8dU>#G Tf{X?}%5V#*sIE{YXBP5*qlsZl^cKw3Z==@4m<2I+42 zp7;BMSg>Zzy?4%Y&fdR$B3`M=KO~?bxOeZ~Lxh5i2KcE3z7+6qz;_$}QHFc>IKLxg zB(*#;JAbUlem!$tzwmS_hQ8GLoWbPztM3D|B7|8Z5k8f?QDGM=P$Ph8mzwqDCzrMH zPTK>HwE@mkI&O+nk}kzciykfRB<2K0HXcKxdFZ7ZQrqz2m#wkLxU5D2EL2!n{L^qu zS(%jRXVvrUy^C!5zb$PS3%8g4DoU#alnZsiwt8Pn%a4|#T2{(5Kc}W;w7Wsej9Vld zXBPM4^C1tI2Xn;5y<8*ra625MIg|nXN`hYHB*KJ>+nJ(NioU#_5xQ%z3qdL#pkIGewQUIoOXsh4pN*n9!Uul zvz9KyF(!$Im9@3U{_IDW>G$?r3ti3_ZQN!y#0XR(3=s#RHk|mP)tjiuO!VZ=huf%5b^<~ui#eH^4-1~_Rv%K-?4)ZVs_7aQ{$%rMu9LZ!M%Yrj# zTqi*#cWxv>#u{uI5D)+lfFoe)LF0&j_09h9%i5U}jFJ0j zR)m)quy+w~FDN{Xk5o27C_KuA%A%18zj^tk_4+Di?i74u`?ah(>qj)--$ zM&b9DNr^YT>^`@E!2O?VYb@DYd7Ce@x8k|hgnTa{XxqOHVj)t2QexfH|7c!w881(d zN6}5wy7x&o3LGpg_U*GqHpqqAaJ{*AuwY6Pp;gP*TkE?xD6RaCP@B4CK$ZyAft zzBM$+6>3=emi!tV6#T53{dYuOJYvt&=d5vIdHl68^Ft<>tR#dPrYogD=9C^zq&!0^fuZ_^q^{WDml_S|vt%A8-O%96t5gE@@Y--XWy{p1zVZuwf z{^#=k=|&A6@qV@P)jF1WM$E=N2b1Qpi@2P8nh$GgYwKM$$=U-47MbKzv(ij!>-$0; zIM7Fsv8v65Bn{=hqiOOBgA-gFo5xmG%`C0OFjG)c>i%fzSsEo%hvq+~F-?tw;TIR@ z!3nZdaaG3PiHZfbk?U77ruXoADwQkV$c*tTkF{|>Y@`1)w)q$Leq>o*I4`A<*RAx_ zinRB}XYs50<3i&bf;nz(Ckl0FMb!j`q=}{FBNa`AS)J1=!E^grdI!A~jt4`|^-ino zwf1vne)h@v-9$^+VyvoAd2I-V!~CbISqpRDs0h7BB;16U+7r6E`btj*u0w0;UJEBabqP9Dk->-P_e+&Z|so?AG$ z%DEGD(m@JEcrJ#lzk;N7{l;>xsuDRK39Iv4W@))x9s62pPhUclUbZO286t(WuMIOz zUnzwqXeKDDsF?;!<+m33O5aNRmrR?~I zOXK$$Llzd6FB4lZMBDG*5DbhKp9^M@A!(AzSCm-yMK0V&Y|DGwRCuy z<9)=`$mH=5{d{WvTbNU8(w-Zb#ItIgum2tv_W2wp#Qyc96~7*dtvK||gLj?zHq3F> z`ykCKWE#g-LEXzeCsYh!9BSGZAwPMU&dyZwvW)UuLyg>LVR{t}=#2SWuXKLIEB+@u z$X5x8MlJG?P6br|=^#;-YFJT`?VpJWTLFEnX0-~fpEXbN;4sAKfi+RE31p3>xR@78 z6#t0&X-@lZS1d^h%>rV(1mf-7yKev6p-m(2SUR7(D`izx$Mb!4@VFat$ywPz@A7Q8 zp|#?auYVFIZRl;gbI^^Ay43@@nX@E`k;^UjDDWPCJ zmC<={h05TvO$C%pI{NpPHosx}uI#s~0^8mXLNX9pE$x9zZ?>x^^pTajy^eNvGhLNV;Dh)e)Ip4i5@L*C5*b=; zxuUzhI(AQ8da{lgay?%1dfzwJnK*lSvLgTb^WAaFunqsdZ_bf}!QZuk43|b<3t34` z2pNy5y?wHMZQq>xLT3aytLN>7F$pW%`cTW@7A5C?CznrP(I%T>5?R^Sh;8lE>^vhO zlS_MnIFtm3p;Iaijyw=e(F*v8OFX*y9ZZZb#a(?|E&bQmB4F;gHO8!adSr*et!hYR z?n~ZN;Tz_EXgKlBiK5etRuXdHo1-uh08#h3yFG0-J}BxIOQ03=Nfo~wO_2z&Zocz% z%XlVscQFKp=>$AQaU-;KWd(*y47C^@`XQ?hkx~CUyeR$qtu~TQJaDUlY0dU$tp7Fn zsh$e7+mahvS=E@q^9mI#3PpABIA&I8eQXW5{WJu6Q>ZCPx31XS>@ zt7*iUaT8B2A}AbY=?7C}Y$%f^a76K_H`vohj-K<~b>CfxH*<0MF3?_HUL1*BPUe5t zQ)#{!aQOD)NAJ4$*$XU56IaWaq;YK-T`RBR_>*BYa;rfI`4Oh*vp%z6Y3fJY&JACA z(4ig-i^zQG8kygXJm4A4Tlm zIZaYoPA;+Z^)n`GR2s)5Ay^i=k|?YtAt|V*4Ma9B$doFavA|YJETx@S+0HvaLUE8+ zK6Be!e6LTMl89EN9d0HBb=nwap!M2V&h*}A0-Y#*weS%d{rI>M69zMwF*Wza)K>qM zMnQ%FCgaNaNWM*R@09m$u1?9~l~^R&(fL5IJlp@t!qMd1RN=xCvl-fO#!57=3p9wE zUe#Pi_miM@JFg3SAqFFU0lwo#RYgtzS{F;r&L?*E$UG}MEwX$#I|>#X&>VCR+yk^T zF^XB)kV(ZnPe>-NBl=T>+3n%NZR6Q?;a=aThBD1kovG>RJOg&el^#+zcXtHp|3v|c zM;*oe@FQ!sN03IvPZRE+&W0K$-rgBWNssL3>skwyQsQJtht4YAhgntq8ax%mi>CHA zoOlI!G($^G$8{Z7EeP#z*n^h7Kg{g~g~O(9S^jA&%X2Dw;FdL&ugKKtt~DKhr?H zYB@1ui821S)imDT-c!*%C&TOnVMCvC&FV1~%)q&d)=36~vMek9*!-X2ut+$O>! z_kHOmjzIU>aeJ&AAOGkD6SAEIK_>r1HIn0Lha-km^tvY`3LDzJ_;0n(BU`?9h8aOd zC@qb$Xq)VIo+I5RC6Nu}XLxV~@4e-epppgtiBYKzDb1PFPV7TPJ>~eMO^5}raw-X3 z)H0^i!WZ@jZKW~eT({M4+nYpyw&jJMUUaaE4dz_`O6j3=PJAlce7-{IalRN^RZ-D; zc6%XgXK(Lxx~==~l#l0Waqg?#9rGU@J(%^sySeTg@*jNOa`4cr z{XWp_+=Px$Tv_#DEo`h|m#nEY-OzT10UdJS5cnT09K~BuOOlN6zuz`&UyLi9sU302 zvTu=34}wJmn+DUzjkqD&Znfn}&7EWt<3lF_vI~++Y?O3>A*Q#lS$pEH@b<6(Zu9 zsoS|pNIn>zee~XFHSZovU{#BD(&~+B@yWI?m#(UoN1?ZO`KbwUpu%p!ttJvBQ&QvK zzpmeom!FTs`pH1MSB|hDvaS4lQf8opHR?tFX}Ki7PJZFMMtGu^C4@}P$iU@kr0=eg zH#L%i6n>oyXKXTxyN?Mhc-?d;FVHTVf{lxRdpU2RcBeuk&N~REvltDpQ|SrbB2~*5PiJ8H^$FHh&fXe z55pfi3P(}Ns>eMF`ALk|eh-n%!=D8wM2zu2wZBT?!Yc?0zxSm$@~cIsDwT>-mA$GA z3HB(A?>oB4CY^`E5D%k6T?U2zak*5r_ie#}@S<^OHU|A=wz)})1j{44Z#n0dkXXzE zi90CTvqd@RynOl4U}Ckz_=X0ZCZ7!X^IY(S=TgU{G!VEb3-F&1N+T0%>kPU4KyzV* zN`=oetNV-626g*5#d-S?Y9eiF{->H+vdlSs*6&RdjB0cRMZ|zoJKIV42AvdKFNlnAiuC)j--Kc+K=6RcG-qhNC6*!ACNI+;|J) z_Iosk@~WAt`i_l$syu!jb2BZtOu)%efLuu{QF_i?$@C zlvm6l`C-Ikvs0$!fT94Qk~_1*!^6`$KTq4dm*2}<2`8-+gV7hzD={`x{=HzRETG3D zqer3B24D={FjEP#FnSmap`2cjk7QTEv_;W}GdiaK4P&TT=lvFTyu*Mw!=h}aI`6*w zB=@ci=V4Gls|mQDsK?LC`KSoL{3(XMa0>pM?G?G6?VGImS=AXd8}=juHb$VT7>#?X z`2K~~)YMdPMDbYOA5-de{j%Dm!jtV z*wzW~K|W$bK%G@`m=p8W(3uE*kB5;CIg`qoYT1~HOguJKbu@@Z!2mUZ@i@2htAPI+ zYIgq=R{@&&`sWZ0wk``o!)GFYW^;7v-SVWMItiHMjB!7da8HnNEmzx^o43c@Dw2$Y^MtGT{FdCG=(G(U?9@L4L9#G-BX7$MJ{bTP#|5hb4tfhPh1^<4U&Y=~JdI$Sa4?XUkb*D=(bK2&jl30bG)&=+2Idy{J@M=IiHnk!%cmkkkMW_& zZ*+A#&qQfrsM7}wwX~PFr!>!-ySe-?7(2}ZF>xurjKBSF1nQLvV%$u*Zm<8ivB#_Y zGvaIr(UnVP<|vVZoa-v?V-oiLB$oF2D29SF;OUab;g3_T8}TIZ60439S|R93Vk|`w zWOr+E9R^>P@b>L_F97aK+WN|)<#mF%|E@R%L61QUDj2~K$w@f1}JywT= z7>LQIvm9Sx=5YgNrZMUmsW8UD3`4Bd$5Hb}=S3&PFp3N@shZ^pF(SkbTrc}SvOCOC@_f1V;G-icA}+Tp%?Z5)k;zf+1#`Rm`Lu`)@QsR393+$<6&t9 zR7c1I%6*YoVEoeutXNq12tgAh zQs*V$#KW-AMT=nEDk&+MN1w;X`UESba2~YN-Ntz}4U(&gNS2J7nVAJC76x%BZ8RYH zF)mE0mT(y=8S~-1JEycKURg}?v4BT8W+GV5jvPcVE?YJabj*?d>pSv;Kb*y?l^=9J zAq!m;a!G)pXEs3%h4=(s?fJ)nw_ylp6mAqIyu_4|lp-+?qK7>##_x`$TkliYySUcAFU6~++(KdZ}>jdCNU7d|HcT(B=WBd_$;hmkbZfA)>c-b0|P3m zIbt!k>Cl%hsn$8Z6y1(*-n{uVKAo>o1gPf6);J%rSa^6xy!3o8sT^sX)9tmV!Ng;> zL&7|`+&Di9V$gkG(&Mq4Z`98Gt^2%Zz={HiTY&5 zk5#^}@=(b?C9EX!Od*KN!PZP}-Ve#f3&+2W&!%sfXkU80 zJP{#YI0ERM9!~*<)mQn!kWx1u7;d@z){YgdhB9?Hgaj)>DmOe24i$FHY&xY?hk!x! ztE&qK#bHXb7XD3PACqq4go-fq*h`e-X6ajh9nf_>;<7QhQOuu?hb~|fQvLJ1 zBvRSjD_zbUwVCEwX4KTW_J^Wu{ljU$s8+Fd^Ucm@Hi}+lHMOd$Mocy#CZsxvOv4;e z5ItibBMOEbcdF#5`u0ttWx-kqifkEns#k`{0!g;EzTPcIA{)`!sSg$L2nSj(HPgcD zZDdJGc^sPU!O?^5-Cb^;7a{M7sgJLq!hX;`-n2B^{aNRs!>&Rlc%*8}LYS5W?a6*| z`i+ZW3O{0j^iSTtm3bU;q&368@59p%E5AiIPfv+nXtJs##7k=C!M9wO;eRLNnfUcp z*48LDT;A*Gy#6xr4k}jnGbZCXVk}XkLaKa%DO!r-X&Bnp<>h;jx;SRWZ%9a}uQ=XM zghc?>QdvC{-bRW^Q;cS>Yn1AM7Xr3bsv}SGvnDK2(K3kslc0t-=&~XUtT}y- z*XNGxqr*M|B5la*h=GoUzQ}K_LoOj za|XIYO6P~AEbZ$%AtayHhpk?0UkBO_Kwv}pcto-JGL|Y_!zh>A=Nm`B&VXF;?3)& z3*!$^#8!+XSC&sO{UInvQ%cDq*Q zRgWlW_=UNmvH$;^i7m~tNY%OR&~ax zK-MIwGxBUqCfTAt^Viy`V7*Uv*DPU^WKMOA>l!5mD5kEOs^Mm_B|Ty~G2rw$IOhu{ z9-C0%fB{xrEx^&2HH9zt*mIYN*>Yr9;<^ua>OQ@;|F#u8u8NV>?}&{kBCL$LNm`ovh|r-vw>0| zsczgN_t2S;(>7ImuFB^**)hUVep53u6rihvIsQrAwBCuTjRTJz3@qH-k`=3apO*jV z$0Qc%86D84W=ceVbtvO`E-v2!Is>orOVK$KYwrg`j@>YOXt#{Ia#5lrU$-MjSLE_} zf{Y9m3we>t9}ZXW?H7#lMr=N8PpW5o?@}r&|1KK;XZN)n1Xr7&GV6S67}3kpk%TF{ z=Mj8$l`dC;rzYHgaF`u~wi>=V*nj%>vNG?()*nXsSX%Hf2U|{QtOqkqoqd6gKJcMi zI0D`R^n|J@=%Q|*eJx*h>4N)$FFaDJNGngTlnhJk!Y3O{5YU#V=H_IRnSnV8&1J%i z<}UiRw8Y5ObWE0W-q8-a8eqO%x$R+b7NmXr|JCLGU(6LJPaPc{60E>5TCZ@RCZ{i_ z-w@RgUEaN9c|ysIkV$4n@%v`*ER27;vL-Z;e-iYy2WA^-tNZ0Gx>;d~N}7*E;lFGS zM3pk?GF9U=XNSo5Oiu}J{Bq#Eb%O&j4*|qMpenh=#VI=G0UPM+d)njFz-97gBHImAW{CiN@n~C=X%d& zmXeZpF4Lm4H^1|hRRnBm8>t#1EOiTPgWy(jGq1OIa)giwc>*z0{*23$qcR-dF{Opu zfnd|{fB=|f>Hx7%9*lu7pH!~jMNL0LKU2gtGUK_!lKjY*&OQq+N2-eY>P`?M72uct zp}jE3#(aSLW?|Aq2>Pj*pjt1)sa}R8I8*$N#^Hx!pqqDWdl)eQ7h79fU=qglrId3& ze;&4XrGQdyGBO7)>Axob6JzmkoKV?FY|WKqlrMFwduEH+jYA^%s*LIU_li zUk<)`>j7x5i(z*q2XH9rkI>fE`xrSwk5Y5Qe|BB6pi(8DED*nfJS0)q{umPS(dRH; zJ|gd{IqFdo&`G=k0-XT=)_I+<1OFDD7m%kQanEXZ`5w*D{iB1`IY(x2C3k$!b1J%b6mc&@q0S-CagJgrFFy z#wb67iuuz19JWP^_U9_&PZIP`V)W0X0Yg^!CDdJe++a%Oba!(GHaEDOKsXNEk)vZg zcxvCOs}ZOIkq-clZFGxUIXR(#8E|uRC)ETxy}!SoTUc0$Gi7=G?vM+F8E)>iMOwvm zWqej8z%bOb^8EV*q6I&{>{fbmZ5X1rRR8%4mkp9tr?jW9%Ra%`?-s?c)qM867r?*) zr)9|Jj(TmK;+1yHRQ(GURu;gnR{PVuCue6@8W(Ojxth|p z{>N^^7ALLWxhYs`=>jpJn%E&8xN6+*=_-TSO*xyJY|Temd)!onLO$o*AOe|nU(f}o zy>;PwVBznTuKCFH{CSMqm4wm*2hpqfdNr1-W;Gz|02(;%B zRs%po?wM(CJF!1>;S8Rn$W$g^CG@@C>x3rDEycliYX&Opl^I6o7rdTxhYfO2;QK(s zs(0I=L68A7(op8O*K`(LE9W=ksrHWP!b$W-g_gjf`z>$+Ecj^K(Y-Uibmg8;$$Pk3 zCF4AMn^$6Bs7xYb_AI_n1BOy>fPDA5yz<+JfRh+kewD?ZcqWc#&rH)_h!+Y^u5U_?}W@;LkmPQTw z&eZ(8l@&U0-7{aiGtsIrKG`}YFUTZZbd47zAhJm43+2W+If!g>a`HEhcO6d%-xwL8jmmT31mxtd;3HP8 zc(c+L^56}VP+d)p9F^tFKrIDjMVPdfcDtjU*yTv<;m5tw8y)?o&vA4$?*3b~mEwxY z9m?DQUVc@ud}b%eh9zhCN(Lgo!V$%;O|AZ-YIEV&O?jOzfPod0)<(<(rIH z38gvumZ~R=mJ3t-WYf`KOH1SXR^>38|Jlem*@$#t1}=W+nVzP(X$@FiWqz3@*q%FZ zakQ>$WVF^5v*okGv<|wtP)(K!UzDu!7z`=BwzhWBdgj+SNio09V%RJa->l!W*OCAa z&v&Z`pu{p49lrfB%S{+WFEPPK8uDHkUL3S%Ngg;iH|JPBzjg8f%BndL(^Y-p6BrZo z5F*Q>(#n0TPX0F@#+HykzH;Q*#=SC}+YaVOl2g56Rej&-sbD1sIhL+-?iY698DX&b zQKYppTkpKRQ>_bjw`OOdppR>nXoGqff18wINBbNti&08d6;D7_Z&aZlwj=pMYj?4zyTiqnhY z@qgiory%l*QNQ2YfR2bjD32}uF46?ldCb=RqN6?bgUKTO$G{lVjSk0POI?xM^JQ?1 zeT9(iz5m$t_4W6r2=}~Gc#N}^7sjRicN8L{VG$tswBHC1`uV{`6aI*bD3l5vD1vIY zV6uqG6_p`l#`zen-D`DJqV-gE6blU4u`x|1d=C*$r>hJosCO;|ne)!HE4befsdzBS zOlJh6qM}mK5%5SMqzZ)D=a`9Z`E>Msa!Sf8i0#)egB}>YC!#Z(m>wJ6 z8T#_33S^ydR4^j~=9uY9jZkck>*iN($ePE~*E#T|BfYOV!Iq-vQPwxzOAuMW4Xt~l z<0o=DP_t!#CE4ccD*+=kPfmFavP)(>DaAsvWJ?qbAGw@o`!bNOqOvm7*2?n&SKKEw zE9)7E;?lCRnDC_jtNT(NOUHvh;rIOg8y)v%K7AZ4`!*zVgASv|bBM=96XF6Knj0Ib zR6f&Z|30^<4!r%e7y73H8P3gp42$$j{&!TN(iwAehKKcxP4fYnN%D}Ym?a@q8|CK; z>%XeEwzUn>D^*ogY|0+-3e6p}Q3isra_INglIK*Haml#c z#6zzp+Q(087hXdaMrH_iyf<&JGZIHQNtLb&fwd1e=C>|>ULERo-aT^=p)fA&K?UcrQ*S*BvQ5v& z#&PH9q&~(ia8%BH)!}MbT+QBOAM4Sf@eoHh0cfz(VHRWfFmPdwvO1g(RPKj4={v5z0)JfdqYR+k3xzz5kM-h^cmmsmbdr?o}35(aqjGT z;XAXA`TBz6*#BzkY!a?2w-rjNPPOQnw!x6nXL;m5(OL5z0N6G-xQy*wmBu;r8xFJ8 zukjKLgQvVtANeduLtq3U7-i3~7-Y3ATnw32%vnCO{8~NgaCF-ul#K@~AFnx$CF39M zHg9o`^2_PSxViJ49}nGK4}q3MhSiG8%QB0YJVqW_sj7^H!y@qW1{}LwKiyN4*p50g}Y;G~8Q{$8=D8Ca`dj(=aTB?XZ^tiKMgc)sZ-4ARh@$;3WzP{lq<<|qm< z<+~a_cE-E9IWrmltW!dUBUU52vP|qBEoUCNHBmOUbqeUz<|fWq47G(Ww#;|(lP#@M28~`Zqc*Dt?U}^y zhtE(-3tlh;bk1qC=QKPo)v8LCj5RIW_j~_p9cLv>oik~J_|hZ08$>f;4EW@7lVO*D zj_Nfhw&O-=y}=_Oz-PogGe6IWAP=pHS+0llJrb-Dq@EP)bc*=Z#s75cT~BdPvDKBT za0VTR`)&@{4czPgf*^|x-=Lq7RWtKyQf2vgAnKwbO#-t(n7O$jjap*&F4BJd&>2en z<<*5>V5?ZFldo5*0f)pDZa1rgrksj?F*;#Q<2`g12a7P^l>a=&qM`{tLqz%kAvrm@ zLCf`JShMTgof-qzk5vX_qAzVW<=;lJ%CBIHqyC316?R?rLkzH8Y^wKCQ!`=mlwMzk z%;ep>41Vms{*k>i+iJbvtSlphPsGC&NNwC30OaJTHwe@yk}_|If972{bz5Bg7G9~i zA+M}zk-42E0G^1b1I6OWnMnvC@U%sqn6{`Ci2_IkizG&+-*hFQHkg@l#u3%B_rnyEfR~g@W6Kq zlta#t>5Oz6oQmzxXB0ND%Zfq^wcoGLl&zg9e8oYJAj`5(0mv1m-j78vH>gma2=J9( zciBHA&G8Mzms(#Ep2qj@pxtkDh}yYrs!u0p-kGQ4;1WSUz3Jb5^=HQozwI6ZB~SCm zu2oyxRfOx)8&30ditH`2b1?v~yB+P`p3ng3^XoJPf-S3VQ!Bjv_1PThUho~7_Hu2i zyNLQ-(p+oJh|R0=*A+W<_a#YqFV2sTl5o6~@FqOPr6i^_datFZgLty`vR51~+qrZh6j@nG zvcm84`{O?M@bK{dynNoT*K@r;@rL?OXlXcT$jHcOb+k3$z_&5*(WasVu1?`Id}L&T zH+3{rjROiM3XqwCB;TUqeBCwk;Ai_p#d8oPuXaR<6P(ORg6+F!G>)-#C+&o}rno%y z%n4jx;-t&+Fh)bI92QOWn(QUcwZ~(&#iL_sn;!j)s6I~C9PzvG?bhbc@ps+#rxcGB z_X7=RdLxZ$q>V9+DjmjH-x)QiX2zg~5lGv0VZe*C9QEh?I?attwbIuJwj{h=IjW|% zmJu(h$}qj<)Bb8rYGca!oAu?Ib-=|DiJdOar^~YU>S7;*G*BgW z>uZ;Pj`zl7CYJhEVxp+{L$AX#S`^&1#=|otWN=`GY4zaEcbgAu51#*0$eEqJy%fB^ z5%O=VG8a2xBSChL?dXO01fBR|39DEic13XbFhq2$Y+<(qDVI4y0lwEMCZQK4s6#gG zTL|2vv8^r6!HkoO3xlGdh($0^JpFkj2L%W9a3^aq^VukH8&w&{m%Y)#=!|%?Cu>n4 zvp~y2JKm$Wid8Ajy`<>@%%h6}vEoe6?=jF{^hfszO;r|T6 z-=?Ids)_&$dvPLei^k%}buvn*lZ6xBl%?@fNrHfCPB$^B!dcL0#2ZwG7KU7SMOKUW zzTDbX)4v~_^Ci$NJ$TWC6>&!xPgY4Zb zjVeQ=HaKT2NlPFW#}|uub@cNYWfUKR&DQLO$#YVJXuipIt^`O@j~VYp6-h>fAY05W zx&zV=0>=0D=%Q44@M6>Z^g!`7b#hGz{J33DIEDgkkx*JzM-nwT(evdM-iWg!`e|sgg z!5r#lZmuPK&Kv=;NaSl7G5${M&)sQfMU>ZGr^vs10dYIV_n zITY*{0H&-JD>PaTIn>)*>cV~ge8+LBNK*!+)Nx5&AG+%cDdnpuGpYAF-cx+nBI3p5 zefas|XckR<_{Ckh3=Hyjb5aspGMKRp>H#pq&gdu)4r>{N1H>VEUeYd6CJeIYf zLlgNj;4G+ih3sRb_ujw9=J)T5ii$OKH%0Es6)5_rjMzsqMBZW*YiK!rEgOHjb#)5v zJ6Q`ZkZ;rPBiSJwR%3ep#LxzvZZE@cEDTEkh4$bpbaNWq66uvsUX!fD3ojNeXCU{e z)CYJ64;6rks5ME1S4A^KTGi`zEownW?s{}bAoGkxZUetFVu6d^F|%H_2@Ne=U9|(L zSDI9Rmz7rg0Bm;A#;g4$#ij78(50~Rhguk;SWEGOCo&KPl7oXoj7;B=P_MPUi_0xO zisjQu|IOp`ot?cjLGaMem0RpbF|8=e`7Ke=<97yV9Ov^pyi?=J2u$AJr%N2_1 ze=QjAWf^zT13X9$xQO&;5?a4f8+>}UUEkc%5rfE$Mhx0Ws1SX!b8-$8QV#+m9n5O# z>xoW~&7-q_-)<_~Ad%Dyt*3kbeNhY?GVWhL9EZ9u_fA}1D!q8|!l`o-lKX0-S>DxS ze|q;%;PGXB{Tn}r!zG-zjp8OW8~96i3N+YV|z>77($v_e>vf;QLV|FvRr!Qf3N?K z;f4D7z_u~qCA+%13grD$wn-kI>*MSL5*j4hya`I6EQ_9?EcZ5D76*3oW`eyJBAw@A z^9g60x#&ajgN^V5)*V-m=HA|jX$m7YCQZrg=Yj6xp?p!4{m};vaY#1UedaP@Et0R8 zRredW1z=W?Y`Hfw*IJ%M3JX4qJUVLL+1{dCKgEuTQ1jlkg z%^x1rcMr_WFcpWLfn_|F?CtEX>oMnIC#S+My(y!}{r8s;3fy*V|F5&ArbdE;_Vhb_ z_{V&YOC{jx@~1FO7AfksEmW9_HnsF<<_%M^~z+Egt~?{{4L3XNy2YXkq%js$*7Vg;}8BI;-A+00lmM+s~gT)5(MV^yuH*ty{FL(EQy*cvg-pe zw=|5#|6jdx3rBItZ|d-~%J9*PbNUmW@Za}=XOSU9{anm?{p2KfanaIZs$!|;aPN3| zEqFONj^|>(SRp4z>G|lh8u5uf7!eZ9V44kJ-k?{~s_bT`e&4b>m1-W86W=cZie@+o zOOJ{Q9bJQGUqmyifhTJU5iZ`DR`qcX3+2d!)i1L85jdOxL=R)-!4ON1%;T>Zgxosm z#gB|olND_o{H(5jb#X=u)a+s%oP4|#oC>WNaH;PZe&NwGw7byeU+90bQ2dYU ze(jyU8R{X>60-?4Jn0ZcmRyPgg-9+e@S1YmkJ;-ig(jj!*2 zS6yZBs_Fe>BN5&EZLQK~mX`NG0)PMhjUPyp0HKrco1K#bEBv$0G0rWK8-Wz6ABS{v zOkcd1SnR^ zW*c#}{_75?6R@9lLxY3a$P zuC_!6^#A$qCO!AJPO-SSIEya7hn0t6Bg4a#o$d`C05YZ=gcj>pW(LoZV+e0vdPjJK ztZskp^v(ZXV$f*3(jRpbP(Tfxoui*WO9Ouo@FoKVc?Fz3qRjWzz~`Q+qIvzPg0Wji zr(L{cRV*f@DpjWC%4~q1YH-V!O<`0UrmePiBJgqa?`Wsx}GoPD1 zB$!*qE|&#G2OsZUH!GLa%d~C$IHHpX@M=BD&flM2kJuh?aIH}PrXDfi*EjN_jkT}+ zX%iEA019A{O%2mOMzbEE#vH-`n*0{X9itXeSje>^SUTtW>Uc?U7(;k8w}H+MY3%&< zMWq&{MuPb0se_xwHD3nk6CpDYKB{YEE3!g*%o&jWV+9oaz4=1`Bqc%D7yN+zGJcm; zknq4Z@5X>c$($<_UJ_`){+m3%F3&V7$+=W#V`E-~<`l#L%JbV7ArWcMO7UXK(lL zIQ;4ukSEMIiIdCYK7+Oeb?{JI--R2{<(`~z@T$St>UxD1uA=!8gWr>kZIdI>p zh!CAuhQ(OquyisWCd53vO5N%H?fmjzHwGgRO@@>B^7X3*79eBx2wt7020jO9qv@cp z<()fsfHk*#BDaH1dJTH4rgXMm8z`O1F28Q7K_U>0q@#AfU5@STZ6A5XrLb+TN%sOf zS$w`fVZH>4Ma7Xrx5Bd9~N8S86>bS~>vriHeI8 zwvTf4@zDs4=DG2w#>uZbl2BVA0wP(X-3P;W0rNo_Wobd0SlweI`TkPi(IXi_4>AE{ ziA4b2ebTIa{)iI~pg6pK*3`mc;5c+e77k#`Y0TYE#K5<5ZWEvarg_=ZRQ*%p9RenXYLT3VvEUwWPHhn=+n#-QQ- z`;YVU>}A61z+^x;d;wjT&-{(@{{8!a^pq;3uy%eY9&(<{XX&w6 zhud0~M26QhH;h=G)|1#llvI4v5L$ez&I;ST+pTuqGjjc{uH9uow+tOCzRTk12}^Zu z8R)+RCXz497U`9~yUR5LDK)SCz24S4vc7&DS|QbUd2~~|s@?Ou0stGr6{gn9-+uha zh3ElRMgqjB=IP@z*x|jwmU`buj>|&k7P!}1P#+%6gc`lQw|IFHKO9i?Uj?z~9g^cM z=wzWa29YOQm-unN6pKVbHOo=3N>$1iFy^r)2~ZTUan^slxNefX8$}cKHz>01GrsKC zD5b)YF??y&%n%y%8ei-(GoRo0r^clT#v|JngsYsS^LBQ3XWZM&UdXEx#3yxU*^6cm zjiq&=0B&Bhd2!=T&Yi&B78h%$C~==Iw13!MdFAiVqW7Lb5u0+r>R6_Vi0w{bWqYZi z)`z2OQn-GGEG!D@07&X1t-`Q+gS=*A93orLG+mRYf;xwqVhrw>0-S3292+1cAGL6sXe zu%+Sw!~<}uBlMiE3Y8n%|9vkC&+$E;`)3Z1$G9W=BM&{e4x1MHWfF5Fue}`YuTY)} z8>vDm?o=}~vwQlsK!K}-T>VP*4vXPKMc^l$j0_?0ta-8oXgXTI%Gj18Nky0j8{x)k zDB|FSWb88))VrsvtDB3B*a-gG9(J85aXRl(Uuv9yaOULUL9kJVAIgN|CMTthSd6M? z8{P7^e4uQUU;D1e&`=A!gO^wOQQ~uMm*V>z#w83ixer$zrR($hP|!4~2?VX+n}x@kUTdZbz1qjX(fEIY|f)kDQA|MUgD$J5gEu@dCrEj1Q`HH#@aBfu3;- zx=_L#IMGeEwY35s+4}0tx@y*CXU7#FQd3jcGDE;Ha^fB2Xu&xmAWHR`NXCWCF*AL7H)`*%ADP7;Os zU=|u}Fj6`nfbs9=_fT-Bybq0BlsIxM0$%&_zqhp$dK}3@RWMJ>IN20x97EqGrd(r< zWraXsoOPzf0V7;#T#e?nl`H%WD43N%?!MDayOfj^Gs_o4O|HN|19k>$EZWrGuD$&u zS{M`|+LZ|}L#c@jp&z-x2B-n+v{tEnNf3AxT9rRT1XYwQ?lEWrR=}2x5(=it*3833 zBUCttfLvk*QbBM9j0iBoHHD9(P)w>X+eZX%-Oe1z6{blSgjEVm7AqHLPTgR*R*HN~ zga}ey0}9zZ3PwH9%$tx44wnDg8JGy|7_^r{T-g)@8fLo#2tIbdeER9@e8izs;2GkR zRJZkS9h0gg(>HaRZXE<$5(y|9Qyh6w{G&8aNIN4MT9JTaQYWQD88szu5cv}XEbv(3 zuF)SwtH3pm+RQuW=jUXDUIRaWN=2#0B4}|Xv(Dt~tewDrUusyg=&vE!@T+B_;qZV&@=n~KyONb8Xn%_^8r~py6u84`d>>>9bE8F zXfaz78{FcA6AVRe@c_CCaCxP7fow@yM#jsMl_((rx{jNs9w4(M0b*wL(lY&bk zYtZH@W*8G!eCZJT?1mZ@45#wWHOg}l=8k!l+Txb4n`kL+zF_=Y z(obF%zztb+`=GyjesF^D={>4g8cJlHTUf>)hXRAKdXNikfwII3Ypz@ND2?grQV?H9 zn(-#QL_fz~)3DE-gTS;_C51H^VrA=MuB`}H8}7I*-S!++x2(q+X8g;S?a>V^!Sq=!tElzG=;$*xyQxEJ%f6jAc zuL83MU4+A{pKq8)mRXOFeub_CbEm8tik_8Fq-=fb;65@hJUVP6FR~l$w|+{QO6ZaMkpYYZSnxC%sSVNf=|X z(rvj#tJJ8d>wx|f$=Z6xC=8xkSgf!R0T7psjuPNaf|E2Mx@2+7u-1fd1UeMb$xcS9 zT_e?WDt1VJy!)h zGCE2#@v`tB0OgWzBZY42Y|38S@QNgxtf>VIH9Ot;Nv|#g%+$@LRHg)*sAw&4vmNe0?a2P6g?-8d%XRu9s)>?7TsM8%|$Z3azHSGE#8 zt)9w;1eLe=zOV(})a8<11&i@ZNOep2-?_rT?B<>x^|l2-SRMeGNCsAtRA*UX`sd5y zVkvNEJY&)JBkq*kq$dF>xM8%fdF`Ezsp5^DxuYa*V<~YngDTX6L!VhM*VZFN+&m95f0xuvkbKt;cTWW79XpUXy~Fw8!zOg0o0DuxQ??ecwpl5<>~VbFP2; z_8LeP0BanZ-rr#MB4y(az)WkG7w4i7)+YWX9~dSbc};6o36aKIF(4iUAd7B}7{R#^ z(CE9F`jmfJS!I5fHe?opPc_&x>^f1Xqf3c$Zb5)(O*Mj z;}K5Y9a8`|#;6JP6MPl-M0SXU1Z%w5VtcUB?<%mOPD9z838$GbayX-(cg z^;YNM;UR4MAq(HPdv5XL@#vy=p&1p8u?WK|RI?S?!l*}k?5b>ma=230Un28?{?_=T z9(jAKLqQMbw~l`ek6z&4O!X+^D(N$C3bVizriydYR%P>U34?IFAc1mNqubpWHD-X| zzRy*x-LoKR$s~cGntVDL>pIr}B>^L@^j`qhJ|H4h=^xuzW8=fbmX`lo+uGWL)^59p z`z7+`GR5-EI%lm9Ttj96X_Z{~Mb6dJkjWA18xH-um0WR zL%WyumNL1jqJZ)?kCiTmpUz#=X2^?0Wk9kHZ3{OXG+J^T74onI_clooa|MNz9{BkK z3L-D&x>0+bW}mVORFg&1xcYX2X0c$FtB2dc-vy6DQuyhHfzXp^hB-}Vj!rDb<;D$TY4GAAlTs!l>zzajV({TLCdBba)UJ)DCWF6Q=SR)W&x)>qGOZav+>`*OJ+gu zJ)rcHXZHwxHGqCpErizu>U1_EKvB;pg#?>5!0K*<-<|%f0M>|Af=GDiug0 z{+Dr)FMdzJh)wO)+mV9l+Eo%TX3MeeuT7$nyc*1DqcyZM$GT=A$#x-AW4zBXs`aEI znT0%TJVWGIjyQk^nZDKUx!qhsYW~ye$vz436W~4!`qyQ>;y4vDj2Snf5grg8Jmhqh zUpRgEU@SnY=iR6;xlk+u2m>te6TTJfVW0tq=-~hti@0r!eEPycTqkp`I3num&aSurPTPi%tTLnqMJEvRBYJf z@})CB?!Bk$T{Kq1YXCqCQ_(UcKk?UHN}>dB7Ly)Pm_-yd3jO58VxIv6v!^~n>)(Mh zfofIyMI>mi`RHM6%s^+MKI+pRJjy+)L?sb8)(HISSOv#gswBYqo* zp#=hRx6w7|B*#&}6{&CCI{bofkeUO{7tvvAD)OIr|M;I;HL6Htnu}(lPgjq4cb)iu zn{P>X!qy1TO%S{=NZ<;6Rmr{n*n0M3o$9wh_qt_zZ$$kEUoI096Lc)!)fxTOYvi5( zhtrsYXu+iP4h3y+ys-@%hY{zLe6b^gC`dpBNXjsT=zg1zZ;wygPe1x9P7FCx7ViFJ z{}soMJV@)F_H`3$nnnHnvUc%XO|>;1Fs2UXKEb=NWepQYh2~zR`a^)em|`XKrd8i^ zPW>E@uCL_Mpo$QJz|s5;a>rqKzc1lxI|aq(?^%^`*kZ?X499;_k;(jD+jIEYRLN>E2q&#ov;E=9e1 zb|s2liR?zUrOIgB{Og^iTjekbUl%c5dR&@pN|hG?G0J8*VwzJDeC9t6P2X;)gZB#z3Gu3J7#3#Ea>BR zwtRkvkPf<;oy0ue%IZ*IU?{oFQQ6jHA&ON(Kph48aT44)1)=QEC%)NI=`pH~PQn4F z8GtK`M!ZJk4I&dZ9L9-0QbSEOu=gesIxD$bkldW6o7QQzO33bMQIjc46AZ!0s_zaH z9BsQPHv~^t>n|g^XO@px>}H2npM0G>RiG>kE(>BQqAo36>oIC|n{v^PMP__tDSdhJ z>|2mnXVFOT=o%A{E0P)?FD(R#Ep!`-DRY3*tJIj~IOOu`7>B6yfb<|kcKfto>suxZ z3N>ecX!R#9*4V%|*noNdk(SdP`HlTsF~(q~5l<;K-s%661@)%AW0m#p=`cOwPLkS5 z&=8VLaVROm7=(p|PKCZy`f6*542)turHBz)pK*)HGcdt2m9pn{s`58qPCZ^dYwtb4 zTmIUjiGb4wQhe$*l&Kyps(VMHR|40mGRH&J0lGbUvAwMhCO{ka?E-f zksGSH*TbHqBcTVJNvZIqOOfyDL_;>!)LGGn$A3ObE5@V1I(g&&9h)z;iC5&s{WJ>{ z$U>)?5Fs4NT2?w)rw<%Hx%5rH3q`)3emILlY#z3{KVA-RqE%b-C`V$G{Vn~MY#N%I zfs^15kXwPen4tFeHv+*g><5qRipp~pPgF|p${|H`vc?q;OI2e&O7o##O7U2dHfrDn z_6AE_eg;-wxW$ugKKowRG;uJ7r>)U13+{ipVGxMw#~R-?$&nOQ7v8UlW&UfEuX+PmcmRK%f##-eKEM$)Zq>F8x^X)=!SBYuPHV1SUV-|22(i`jS0jIb+O} zu963@e{O26to|qo$Xx-6OcpcH+I&Y9H(g~6WuXxQj`|Pm)i@nOggU-z>7dn1cMjC$ zDm6F~@EnKL9OAPj7%N@WyTqS9XwSbAIqb;Nk0($)B2^^y^1t=2e*~Tjna&Hz{k|)5 z;ANGmfL}I`o@iXdw<4vRCoqJ!#QkI7-4^Y844wTp61ln{$GaJ@CR%7oX8CVj(&5-| z{S%r5AO2-tRL0@i=~jD=5K?RsO7KlyT;$SP@$A%OmtxY@~}*Hn~obqnS>X}4aUYAW*FOxFrhE^6#iV1Kk!*hvu2n5|C>Q%I-2?# Jb!s+|{{w?U56%Dp literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_1_row_8_odd.png b/megamek/data/images/hexes/nuke/hit/col_1_row_8_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..3f85db439135de5b01fcd7266643a1251b5eff14 GIT binary patch literal 4022 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 I#yE!l59&CWrT_o{ literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_0.png b/megamek/data/images/hexes/nuke/hit/col_2_row_0.png new file mode 100644 index 0000000000000000000000000000000000000000..135c6a98ae53cc81a32fb13df5e83923ba199c09 GIT binary patch literal 13129 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 ADF6Tf literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_0_odd.png b/megamek/data/images/hexes/nuke/hit/col_2_row_0_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1a38b23de675e06b34985aa9e0e2c8fb7fb6b4 GIT binary patch literal 13250 zcmWk#bv)evAK%27j$=B`F>zDVIo-{4$HZwS#!S0Y!<=TA+nCt#b*8(fW@p-TcMVg& z&+iXBJRTk%@6Y@5if0{MUssKkh=J(Ag9oG<>dJ<|Ph;Rqo$wLx-8JGD`-2D1;Tp;c z#=-d`EkXItrh%K+vR51WlBR(sfk7sl`4jHWAd7TLq+#->vbD2@mQKK+7FJto1jWolDDRwInXIji1vI^Ut$o2`%k7Z*x& z1(v_;Y&Wtt>W)ih9B?_wmkQ54J{EetKdV%3ys|a!*m9ZiDt1@$VmDOiovTj9ssvdS z+lmAk8BRsz13L@aC|pFz#|q&RLX$MXW%YN*XrY6-2=U~RWG49#1o7sh!3}@quNAKD zFi4Ij7(w+rje7=$H0D*Ye8WgCe?w8`kTzl|CfF|6KRit0F;(px8k#%p5Ea+=$l+Mx zvtCiDVfh0=84-ki&cyFY3ZmHH9XP9%IMdp0VDY;B3~faPn+8?Ns(!gK_qG%cRV|o< z5Xa8Ibn!*Fr)Y|2VO)n!NP^PnI>oA zUc)qF-rhLUT{llJdlxSxjK8<*hN*b(PSjHwd&ytRjar5LSMHHJMZ{`yXqP4(_g4WH82on2;?mxJrIAY#rIIr(LEx*F8@t>s zsi99;b7K=FEJ!$qDT^SUo`r?8Xsnh(OW)K~51jVViq{C5X&{;tE`HFvd;IZ>@a|O2 zCP!-cT9cixHNE=|O{He6rzPg+pYhQj2bmLM6XUbLRH2ls_gACs#pOiIyHn{yo95Y; z%BR7D>smKk+pHN00u;%ru7_K8LmN7<*`}OHO~dNjj;jx_WrH{H`!bN=Y&>u~rHSdeYrpT4~vU)aM@1 zdwVh;*uB&wbY{wOonQpraCNP8oWoS%;k=cSo<)1+nc7Hqr54>jCMG5hmSHI2PS-3u z3ccA{r=q1zCOsDspY%Np55msQMon$n3(=MuL)nRh3CLLNzD2wvm;Fl@=SGp*yM1{0 zxfmUZoD|dK%ovL1_%Ot&8W&IaD0(dsUut&FywRN|9l~C0mm?P1YiDmyYY>w*&fZo0 zp!wop*{JApSh{Z&IA9;6H^fr?n}dpU%Kp-6@YNu(z{wB38X+;McJ{9$%eUQjcH9$` zIbaJd$w*9SMMdcpe*A9NPc_zCn$O`XjC^lQmrg@+3JNysP00kMgcZuo`Y_rzHUe`E z-phaIyj@oN>SMYeIwTSUBf-XC(XjXhIA`r_+lY-QSVqoo23%6YJ|t{iU_Csn?SC@C z(_!x`qzf_Z{W(B5s7y74KEA>Qov1J{GEBF=BG3BwkB*t%xx0^4S&@<`R^~W3pLlZ& zeTZtE57}(~#vHvr*l=9k?8T9(!Hxj0I;dTA|5TH+OdjpCc+yPfwtxmrp~+`DhA5?(oy$ARV2mN{gB9vQC44 z{Dq$z%Tj<>2sipnL1AE==}@fAZ`n}``!xuSvv;Hm!PEF;T>Wu?2vNeWA$%29ShqR4 zdhS|{FF|H)UGU)~L{&{~y52)Nmy7x_L3!2JK9N9eg1*nFMM{>#gkt&2yNd$M-`BjE zL~1EaF2SzZq>N(vyz4oIxh3fGhecyUZQ?ekwYJ{a z$qru)FqK9TG<<~d9Qo2gg^e>IvlerbK1+hJ4mpEBe^^>>9as!*4REKd3W|&C@n@A9 z^KxhihnlOUgM_zZIg7DJ*HPIhc*T$Z>Knefoj&qv3t?@3z5n823X4?FV8*L0n^pv> zPfB=(B-XHS9R0YDi;EI3wjx)`-6L=7Kv=^6;AXCG&GY%0_x*uDfwIhCxzQ`2rAnJU zXc#A});l^)xA&|%XX|ByTXT!R>&F6%Yj^%EG@2l1g zwf4S7>>hHCos={d{ZPhI1zq505oSnjOx<%YP4wrh4jkI-jm(TwVeDVjbEnR>X z%^ZI@zh>FD=_z!!*mkP3d2@BDt*7Id$CX>DZ)ub~^%d=TO*<<+OL!@=0+*-{{5>H) zxqKeNL#w5&r{|a>*4pZ!{`uG0*!F#t@XPSGepfiaJP#{=$4y8W6|;EQiDriN zclt0rfORVx(B$UjX>d6*N&02O_>(LCz?URGB&v`V$}2f4;V!FZ8_SJt^*q2KT1Rv& z9nq=3RekC*;CzxV6VCG0Vd?x*2#tp2Rm8n~Dk*=Cd=YL*(i(KnOg61vq8zS-TkiCz z`@fk+M?R0K3$PZBT&gC7!Ntor4dF$dJRvA5IWjQKU7=R`wJxzUQekIjS0Z#x0ynx_ zxx@srqA^*s*wLk!)Yc}aJ=F7sP9g=D&@3gIjW8iS!Ok)`+~(J|h{t5$Nkhb`Gf^x! zW7QEtMrHYkN7wF{LJJwe-KrK`GAcMDNzw5IAw3_L2uT zRNiT2-t<4m-fsAQu4>Kv_fN{*-Cdt1Gvlc)Rce3mQSk)@S^VI}FYT1njL}aC{nXkz z{Q5Li90eo#)|Oh9meS!*1RUrdjp*peT&)=?e|4W}^bo(jy)_fdmk3E$mWf+r?ZJ2w z#Zr}UQy#^?heQH5>}UyFY|Gi76ZgLcW@y%s-?kxZnmP^fDKYT=u#57F-iM(U78c)q zj=}x9`N}UkR9{eZqCN2xI>bn|hq}xG(pRngmBwMi^;Yg_gH|PtUidXxp3roa}BQO9W zsh{e8tYEmkRRR`?W>X4yFs9oe*U~~F?2_=QZb8rH#WI`S3|R##ihJondL`Qr;gr?y z=d)$Y5~E|iE6IJ94qJQza;s~8=4TFYEB?gfky%j>o~$7!VadrV%XlzfQc9|@=yN4c z9odm*BkHxoTLW|%Mn?IP{>Wal{K&|MQqt1p#=JeNk1>bSDsB3o+S`lD%Xwy{n_Xe9 zY%Hl9T11`t37RUO&7g)R%*EB!afOAM0fDc5LR<+|Oz2pc)=z#4B0aH_lL`>3^`FJj zTTQxL87c-M${Ibj$QM+xWqx47uHREB&bAK?Dez%KF78fCI`-$t2e*0ccZa$V24~Mh z2IvsP!X%cLk0dq4(8Ne7OlTB4CX;B-KtgJ*Y7*YETP;2K3EOgXL%cUr#~8uZaZLS` zLM5&FpeZlQCY0X9e^*ulCq__=WHSI2{W&wW>$n!MAo(UPn{V-pn$e4iK()E=}Ig!kU*>c^{+)g=is z%>KIvDf@y#0o(s@LQgK)KkE`DMfkJzL5xe=T_w6GB zwVxvRct^pl0|*?lgpzkto17V=cILD+SbX`cF>0dNgt*cr!Zo5sPBs8sxD71sXV?m4B`I+*XZ5B44_Dc$g)O z_%A!KuBWGX5(mq^W$Nz~B$SD zJ*Q-xLr2gyO$ixO;Ncm3cQ~o#1}A{iA;lHEnAN4}YWNIp+c|4bsf$hjd1}?7PbyMXH%Mc*!Ob z3$@*yd;6>nP=ZWUjxQf{iV7L@)Ixn=W`F%hg|XK6pY!^t(yX|iMLz|DeN50<<*t&n zWTPhSS5j;$3IV;E-;tOoHZZ(e&${iYInp{(gyhj!LFk)zVhur3arP@0*8`ixuDPln z9(>Ccgd7|k!($^HnpCw=drMkqEC)+!T!ov{b8}z`UrqPR{Xoz#C#C8gEksW^F%XS}1U4(;FU{e}&D`KA!LwHnGOKBL zeQw(z8tNs@{$IcFrgJ;YiFN$~Tgil+k)p2~--*=+NRp8ucuTp3%Mhan1pp?GA0IbR zRkhN$a(QfqA;r9_9B{25ihAd1x%8dSE0+u93}#y*$D{BGXN>v}BqX7pp2YTU32N<4 zALEh#hmklDf=EdBDQk4dDLV+t_qcPBOwLr^{;|$Pz|{YG#Ky;*AHI^#IY6h1UxT6~ zd&INr4AEG*ES`G%sJ)0!6M>3)@V1@2eUYG~V`5l@qnpDF6N_?7D2Z{)F$EdFGy$3P z3R=}Y$?}@^g=r5d8W<~UDA#N)eJ7#Dn<5}0w6mPn+Snspp{ctM*}V%b#xN5znLhAk zG9yaEBM>jNYD?#4lkn0U+zqSp%mKDN_^TNv(m9VXB>^{EHTGXq=*#~aGR9oEkxl^d zlYF~XU)1>YIN9s0n>Bo1!G{9UV2srMoRe4JymjKttLp5AGqi#R$izF8+dz6k$#1Sgm#pI4UZLe~Imr3bE z&$jG+p4$k|h^Y4ZnCgGfS3a(oAw1BAXefSwXk)Dme|%-bHQO+0Zx}{8i@t^tU@_I) zRjU#bIOGUuEHdOZ> zyh65@S9J?LqxMOBWSW0XMOf`^`NQ9L#?_J*>B*tNTe9@8T^#4{=l8{`tJcLA1?GTY=1n^QFrwaCre-rg=QMyEIoF6{7UXP+mB(wGx%i1zj7W5NDyp9$|VM{epLfeqDH11Z3gUr)i0g#9=>TjI5&DgHlZ&AkF_oqx>K0vzRLvU%r-I1TI3xO;NXQng!Qv$>ZWOP9sLV4lL$5` zvP=>qfz7$>PKI}hzIz>1JikEUG(oEf$$lr{f!s5NMhgIk=Q(*sJ#!^i-sWVhUdsA(?; z0Q#*vJe(6Y`(2l7vQPl~(-IlLHMBQOvKu<3Z)-a?D=I6I66^L-kc7E?F?!>CXnSCEn*6Q&eY}s#2N{Io)DBHRKmZtlgFUTF z($h&BakhRXfKad9%S|o${(HX+-d0$a!eM1k3?@YSlV-Q8*E9DkP^mB}Sk0={&f8f~ zP^dhdd)O^ViN`$WJO7ed155>fKjgwggW%`mOq=dv(jiTre|!CGK6F=SSXb|tzG-)1 z!JL5!X+%eAMFoUP2=+CqM4hfo7*lF6&S!>%kL`Z0G!-NvZiV?A|6)UV`l1i1SVqQf zZkSkVvg`!$pyfA*w}0=K&;I^3w6xW-wPn3hEc{`dqYg=eXaEwg7hN`{evO6M$sQj2 z&T~e~VVUij4#SK0^Ae-zYE-(n3-C9qgj)8<80Q&NT8Eio<~auyHEDEklmj}!`TH9^ z9a2(bl4!qjWi2IKa=9}$OHAeF_I)r>ouLaBRc{ujE1bnu=<_qM08xw`pCpnH5t%d^ z1y(bHjwV`>OHa6fJx@STT3SzniQUj7c0B=N$m2AkC1Hr4KFq-y+|GeJA9C?*VoLmo zRZm{WKwy00*SnqLkESqKzrD-rxYO|PgecsK7@G>Hjy_($jph@4ae|=5z{r64_q}O7 z9u-S9;{M`@?>}?_T3nm6-bBX8r~yiYq-plPKyu>9vChC!V3P~FAbu!-kJ^ZZCovzK5@KPlW369=zr9rtZod;9E(gxu?C$TcI zijS?QD4jE%cy$7GNNX$nHumrX7J39>p>N*6ISrFYlL5F$f3^L&?eI%Q{9We|U5XBG z-g?&ydDWRub#-}Yv=A-rljCdA+AEo^-3b#4yx}rBBeM#@8Ld1U=q7e3XDC7pxvF9S zG-fSqUN|=aI%G=sbV&GNQBkmr0vkog1YbglI#*svd3nwY!H%tIZe%fsmOc$BAOUJ| zWh{?29{`vwUH7ShEN^)LLKzwd9*T)lNQaBC=x}J{&NSjfv9B$sMCAtq5XMr8{ZBr9 z_)%gy5B__$2d&s}1XP=uMoEB=o!nisg6@{u@6w(>mmcaF7D-|IX8dY>8vcI~45ZWj zRKqowz`{P*9r8)f>pec6m0AH>UwvbItRT;alP`#< z#Y469k7zV}xp=73s+A~$ZNP3(MI<%e)g(sL<0W=_qGK^^op0|CI-?Jziu&wwHP?Pk z^ycDE2gcL#y)!)^MU6YY`YDp^DyS{N1b|3;V{N}iDx^ViNnSQ8+FmjNp$g7a`2gZS zC-(~p&JL5)<0@chsN%{Q6_l0MX*B*+>KMDLR20192JKfkcKu>Qj&inRpwaGDez}0+ z?;dClX$};1ZOEFKz!dOt);d#|Ykop9SFjP;3Dmuwc?zYR#uzx!Ti39ad{-fxvmYB> zfI^`^0ls>3gEMGMRkNrkR#0|0jQ_G~-+qi#+-IxfA;@H<_etSq+nd8>|Mn|O5;BsL zGJ#u8mYTl(h6OT-Plg&O)Kfw{#Y*eu$!GU)Fh{o|#E3^RQn1mArN8#QQ>NhzTb{c8 zG(}>sgzpO8wlM>sFp|D`{ajSCw~RR4_=i-PVWei6pUJx^*z7?z67H4j%0h}2S&#`H zq_>EJdzufV$8fxJHaGq237Z>v0gEi#x%889YhLuNo@CE2+m)<&)^=o4Efhv8gmH16VRN1IKX$3 zNwZ_8RRTfI5DJY}#Z^_z)&N(eHOnq4Eh~e|zImNK=4}2O+g;W0=SRvj>1t9U>Ch?b zuPj=($~f|T&>_illl9lt|Mce+kj|$1XNcwo&$-}M88VR*f+0m0rWIZF6#SZO{v)GT{_GxmnjgerHoB%Nee-5n*M2IfzV^*K&smDYE_s;wi9!hz!b&zmX(rb47oyG_bVPDt`Zz0bcw4 zySfAus;xRDtWBNWw(CnaleAyHI%MDtYuGzfp9NXVKXCi;<*JCND0V_$kIT|7EFj6D zy2JM7>Ipp~W3OOxnP2e>ZqO$*I@WK7^p|Osg#z2s(@fpctRH9OWd1i3^zI(+IkwtA ze|ZVY)^$Y4Tr+W$mi{NwV8s1FV-q2Bz4~OUSwvmV_9MEOW#Ok}#4^;f!R!CaE`Gl5 z-izppsm!6!ic1Oh_KxA^k03eBwskV(HXaAs8#k5PQukkP1^0nax9fkoXteL_?5z4{ z>@-FPLdBV<;b=iy7JMXjk}5}M7%E^Qi|z%`?BT$RgBK{lk6uIpYIrHnAdJJ zUcO#@lisbSD<~wSgVtC4Z45H;9g0E5y3qmtTbzL^7Q_;M`S9<-Lbn4fjWz84F`&jP zyl>n_$E1;Kfc)zjJ$OmR;aHb-*09 zgKh7`>@(6cGduYByg#V+B4d^sekFfvTitm?N<3^@!f?Igl@iX0bmFNF;5(__MmYJK zzxY^Hl?)S0bYqzK{rkD3Bw*h#H-@DgqkTI%56LMK1)BQ3TNq?z`7}_Q<1JhfcbgG_ zj=Iqmt95fKA08b|K;9Vm(m)}7e&ri?f>%(2GXTPQvJk;Cyv;%T0NK3T8H(uM+k?v0 z6!n^=U&tJ>12I- zM@|@v3!ygGEs#mAAu2mzbhwBs^<2+gx9U%R=1D-n2qQ2-zIV>C;s}XiN{S&$e`7X!K+wjuCUp$NKL3Th3_LS04YfhfGh#5uAefl=6ff!_@Gs}XPUYmTbH?l} zxK=Y(gJtDbj`7lYf!+&VjFx|6v9{^;OEP7jmc4pr?DaPoal1UCq^Ve+E02rT@?&`; zeXA8a9f{53vf3GFMTMa?4JU|581QKXw>INi#evmr6T1CWJ-t(jJUlyacQQR;J$NTx zep#UXQanK`q>)XNu(so0^6r4ksToa1y3Hql6=`7dk+*Exh3 z#j6Hy%)A093SKw+-4){^Tb@R#TVdJ1FVX@P$$kA+6gi`ji60&I=EL)hoG+U_4EzhCnQtc1Ep)UH!%difpys$Y; za>b6jZb1O~?8_-*-<#>jO#KUngPV2J$XE!RF3wUQu-U)~qVdsTi@P?;d>pRI5q7L~ zk6VKh3J!UPs5Y|R$227(hKJ8Y99NBoM@LUbYVK!~qb8>QA<}f2r{+{f7rdR6~x>RsF^4pVW*!=g$ z0FqnoRtw(lHC2byaw8C)d9azL9L4e;ICcMn@Agw(E}I*4%&ea=Kla~Mf2}I3-0g8l zbj^(iu2{Rf*n$270{`YA>s1(;&N$!`bc^`H7RA01^YRl68&0KpbkOZqtHUF2PXezOW zcc&sia3B(wAVHM_5L7qTLMFYZ2d?}#x2@1PtyW6m)*OzdtCcqO>9*IGYV`Dt+G=kI z>P1Dvwgv8Ur);EO_#5#7&9h4*cjv*nakgF8L+kLRLKQ-_^40d%Qtm!JqGxS_1P4s* zxSB5+7^lyj1OZ@3NNuBxTn$0D*f&pHyoSA3l468ZDcmbd`oD%goP(p5zP~j$nr?I? zkPg~g%38dAAkcmyT*|>gLQ0MfzkX?P(XjMeq@_ZWJ+HL1H8cADu}wS0&zv-c;>OZB zv?l?jtCzb25XF(X-g};n>a`A9=pCwQ8SW;R?*hPUmVoWX!r@!-&nc|0>_c;vXbJ!q z>gDU8TKfelK;DuF*b-d4>}wa4lG0TXck}RYzW!TPY13QTn$)p{ zd!BV-Xb-IcP1>ASb1W(2jJF3*NPai-X<_5gTp1uvjTj{&YaqqrwHZwLs;{OCRm ze;*IHzN0iAe?p{7xi$Xp`gfBvK>GlV;!)!9H! z-5ckGU?5OXF#me)S(2Xa5pa+!INXh^@6}OAn9SL6>gm??;t;jojkM0lIg?y4UPOmd z`G;b3BOLHcaIu1}-rmleqs$~$ERd|xTF+}2jMu^s0MiW*3AFVji!Z4A`!lXPCEP#U=_1Us?d{_Tix7>%5``_PQqe*dFSGb-amnp~y2;-x^;&jQEix9qtB_Q3x^R|YJV=?dbOXEjpj@Ap6!tU@HOo8{!T1S|9ye8?@CZ$MX z^zgp3=v%En=LImH{~ks>8Jv*8jeasy|BCfWJ4fL5>dDOa5Nbjk=KTdAp3-&{E8m4- zI!o78d&3BLkArXx%}`2nlZTYvKU29o9AJ_0tfAx)H&qyu`ZFFO|j z9t6PN_{_{;&hyWMG_~`7SR1+9@_zFL>_|iVttZu>NIzMT3oI;OFMJ1hz4ZmPh5ftd z6qZS=#4%rtp@8ir`FfALrsW?_`)zZPl1Ug-@HvI`enCJ$)zVknYX-jNH`#ePr8S3O z0F_mg2n)%jupt0HELIW7gO!AWc6N8^i}LLbN#9)FE?&z<$q7W?W+go12a<1F%@bp7 zdER}yr~l7O2uq8{yJg34P{M|aQ7EMPCxl{g2LPtZcgeY5{8!xT=IK_ZKk!^!K9!4S z{=2sTHMOH_?vHr+6LtU}=ol%<0-Jv;G$-Tf*sn!-^|2imsh9sz5?y_RW{i&VcP$fc z3RtaZ+5XeYwU}+34uaoa?Df+!6^3lkcNGh!xMgVfDNvl~m&f3`hKbBtC z2YY)CE?&8CG$jVM*tem>=;q<=xY`u>UxQf2*eA4S;@}{?%O>q(wXfL)d5(4;S&OE| zZn~IAb&{1!P4J@RaPA(opKp(~y5;{7{%G;-$4px|pTEC9U7SL=Cn@#n>fUsHGLRpm zuH1sH0?EWnkqcKX-W-Q8hy1v>N1>rFjjXAQ%gZBUuR{3G&MAphDOK>h1w%F(i}bmX zjq4khmmA{k@XCQ;8J5u^$@mK1>O2EyK*62j3vOirrxDIr(H2eh15-j(IA>|8Ga9n; z7(hnBBKX)ZK2rq^r_JrxmfAWg{u{#@6%{)YAtkA&Px!$^ICAae57UB$M;)MX)w?l@ z4~crg9Jt;GNmMP#83CdEJOP10lHuV`E>BF`hS3~q-(b37NS1&h5YjwrB)&Pfy%$Y~E}sWy z=j5tlMHGuEY--|-rF6vdiW@#>0fXG<--L#sXCLp0Ug!TSQcB)r?Cz2)5C7 z8}xH}dU)W7TcGtsIJ8`wYx6zdOF?LS0I!CdJD^%LOuR0qIC`VrV>GNy*3S8>wF)~x zW4$SGw=#x?Mw`JR1tP9$zEoE$ra}7D)P!`XRgh-bX2cWQQ22%18AUFaqZBVo&5trI zrM>Ca#AkUJVG+TeuQe0o;XS|C}b^3v7Qjh!LcZ~GS~$lU%E^=x=_ z_$XtuD9EE~oELbiy1F`78&-_9!!B|}=I%Ik{Lf2rr0)F-`I?rn_l>aA}&tg)E3b0x3^r&%G(N+ zp?y!*EbZe1KnW(P;B0_XG0(mJ6;zyxuvtF&=?oB4|C?z8 z*wB&^>kY-%Cezy2BNk%bv&!tYcCdh?(NSHw%T6_YfSI^50OqlAQxfHVkAJ2DtUuj zZ1}Cd4`k@c!WR!W#pO>WQ79CUPr*LbJIQRnelsgArQVkToBjsx>r)jjhvrTV^(H={ zZ| z{JG~NU&i7hcf<0E4{_B3j33_|uftez{WQ z+Zd4`f1A<%QC~P@De{`0k#%`)@y--t?%?ho=Q)SLVw-^q=xm|ioX<(jmkXgacu9f( z*l3CeL@c32+EiLvIy^FJ$O~E&;{rl#4 zc@@a#6dc2SZ9>jPE%Gc4Ok(W>yUxx;wvD5jnxu?VRe=Io{1cupAMr311teE5(#M`8 z^g1~GGEZTVRh26${rrmN*)!3J$@uMq9c2@x;o&~`GcGy?hQ0u(l<9xih1T?x6ft0d zl0*#}>B)_B;;Lom=9fB1Wus!*GzSndZVYQgUSa#wv_>4!-i%p6H`&EzGM#(#Br{>T z$8eqs5BK2x`e^kiWk3d(2amO-`~C1GJ-}B&)Nx-yqrRD_8N8Sy%dlKWCKQ$k6(?}FHF*}^K*CHom9B!NDQI0l7Tl6xuR4c zWSXuH$<8aTx$OFEEJcxwO2R1RXd}chx}jBo;~tuKz7MA94S-YgusY_EM7N z&0h4x#Kij%7mZhSmDboqwywQB65s@WjoLDW4?69`U{Tg{uUC#k%jsy65WVg9NAdYm z{<$zIwQ?&k9hrbPY2Z14tKrm7UEST4O-x?aSR_||IY1-*axNY6D=N5UWxwX+X0vCEP*o#J z26*f114Tq8o=Zr)v*Dp8#M|08k2XMaXK4W?(`bcy&-Xo^sT%vengrj~)y)qPE5mxd zwz}mUeSdXv-w{nNJ1npeArMc-x^@Y7{7*!D`Sj|t`~Gi;L!waO^>OO)zgt%u^3S@3 zU>3cPyEMPb&kWy`D@lNy7TdxrE$fhjgBm2=9U^=QwLNFUP+VN4Pw6}m69s`?5izlG zEH-*$%#c1+ZMAH(W-+6y=31%h{!*{)T}i^;LPKhId`epA z(nGnw}{?ZOGpfiYYfO=vff{sj}{#|jupxR$d~QaSYfdl@A4@= zJf{0YB7Tb;d7ikp%lZ$m6lUqZo*umV`ugEfUB_&$ZEd7tu{MOMtQwsLIH7L2{6|O? z2`b=|5K%yU??z6(*oO}Lh2jkVD41g^@a~>5>0=kYIm&wl_-xJt4HaGGYDK%K{{eHY Bt^WW3 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_1.png b/megamek/data/images/hexes/nuke/hit/col_2_row_1.png new file mode 100644 index 0000000000000000000000000000000000000000..98cf4453a522ae755a5b828c4ea1c2cb5c489991 GIT binary patch literal 11938 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 K>8qku$o~Kfj5)FZ literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_1_odd.png b/megamek/data/images/hexes/nuke/hit/col_2_row_1_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..61148eef047faa4ed51e62ac7a3e9e1222309ad6 GIT binary patch literal 10874 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 QTmS$707*qoM6N<$f=f`8tN;K2 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_2.png b/megamek/data/images/hexes/nuke/hit/col_2_row_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7a2c70c4de91c24a9b936d6338c2539c6c585523 GIT binary patch literal 10191 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 JPDHLkV1i5C?t1_L literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_2_odd.png b/megamek/data/images/hexes/nuke/hit/col_2_row_2_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..b061912bec324e9a30f6fe50089a6a3455039ad5 GIT binary patch literal 11494 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 If~`aT2hT%~M*si- literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_3.png b/megamek/data/images/hexes/nuke/hit/col_2_row_3.png new file mode 100644 index 0000000000000000000000000000000000000000..24d06daa0a5068f66a792676e45ae3a2939616e6 GIT binary patch literal 12760 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_4.png b/megamek/data/images/hexes/nuke/hit/col_2_row_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c4b569721c2b2dcd6267b5b68946b354a72caf02 GIT binary patch literal 10659 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_5_odd.png b/megamek/data/images/hexes/nuke/hit/col_2_row_5_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..abb80953c926c7daf74235a75d7b7ff723c0f790 GIT binary patch literal 9919 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_6.png b/megamek/data/images/hexes/nuke/hit/col_2_row_6.png new file mode 100644 index 0000000000000000000000000000000000000000..cb173a8bda3f6fe8cee855118abd21a891c4d7d7 GIT binary patch literal 13644 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 MRrORFljZ64*P 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 RfKOTxX(9CyHL6d;{|7$?phf@y literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_7.png b/megamek/data/images/hexes/nuke/hit/col_2_row_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e111bc2a567ba1e11c9d8ad9e7c04e76ba7be434 GIT binary patch literal 11448 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 e?>6o3H8H4v)Uaa)ivBlFrIqMz#>TjNFGK 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_8.png b/megamek/data/images/hexes/nuke/hit/col_2_row_8.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc13482795484613dd07d98f1a33b3a2ea6dbcd GIT binary patch literal 6336 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 R0RK$TA$9NR)N0v9{SS*NNk#ww literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_2_row_8_odd.png b/megamek/data/images/hexes/nuke/hit/col_2_row_8_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..9aad676f8c5aa23020df76971a03ea448f463fae GIT binary patch literal 10982 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_0_odd.png b/megamek/data/images/hexes/nuke/hit/col_3_row_0_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..f83365995e40ef2ae09dd119a3ef8daaf07eb2ee GIT binary patch literal 11534 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�gv6hM9mjNvM2Pr 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 H&Heue>A84$ literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_1_odd.png b/megamek/data/images/hexes/nuke/hit/col_3_row_1_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..c90bac0c60f2b9fe8889a1624609cd95cb024501 GIT binary patch literal 11895 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 Y#F)^$&`4!AY@i$mtg55(Q|WE+f7#bkG5`Po literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_2.png b/megamek/data/images/hexes/nuke/hit/col_3_row_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3c961fdb8bf06b700f5769e7d5efa766d4d703d7 GIT binary patch literal 12786 zcmWlgWk8f&6NUkK$t47&ySqb>ZkApUDd|q>F6r);E>{GkyBkDe31R6j>CW%@ez5#m zcF%LpoSA#Bdx+LhQ^3L?#Xvwnz*16_g#f>`fgeRQ6yVh+Xody>fu~hTR!ZCZTW5z? z+|Gi>-hJ!sOW$~n>&cIkAAcsWEfhRW2(+|{9l&YKqxo}SK~Q1`Wu-2H_{g0`*JU zt2Sy5^Q+({sW3(_3Qkzz7fG?m)h|k;MGfPlA$Fad@u&B;}^WdB`gw-T6_z5^t{|JN#y1cPq19P zGm`9FE!}BCK>Lcz@~-O?KX!Pu6xLE5d-~X*&!L|XYMP}8{X$Me!>?~oULl8z9A>JB zi>yeK1SxK01eGkr4Q~x>xs;|MO9h`kqP=}KQ-KZetA+(9iruGm8x5M%W7 zqxB_G$I;d{*CfjK(_~JjP7+CmDbk>OL}3d^t(#{N9yny^S0x;^G22efV2^2JL5doO zZe>9IHla}9O$10Z^wM_7Z-1E*f5k0@u&~357aeBo8qxdLd>g6kzppiw8M#D9GzLq+R?|xc}9NKD<`+j;KW+hp_SgOs+)7@~V^-i=@zp6My zz7t(PNriz&HP!ofIUQVz7g)pSp&jM0%T&(w53Kd~oDhtLdEy9JG_oo>4edw2Fk}{j zj1;ulYUNsFYpLVPU)E#N|{09M-)zjv?AW|@(Z2^An6FcUo2CGY3w zS(+07$&kh~ni9Vwh9|(LlNqwXn||W4v9bJQSYNr35i=}laKlWaY)O%&q9Azvzi??E zDEqlJAR!2IC~8fK_1FT^80;`gwtz6~lsu3pr6g_gMfHjDOUsp1BOI zUv$FiO_fZaMkoyr2tP!!SqcKCL8PGvD;57B=RtrLOVfY+z#1NhkfG@mhSt&8jU$sJ z@lN{3XX@}M$mlEDSz$+Gtw5%azU}Y<_;kk)tq>P!JZ5RAF+&5bR_%u> zY=9d}rGLOhza?K?@h?iXsx3lTkKk|5^n|66Msd*?joQ^*%;GKumT(pQ>AYm&wg}7XfSRN`(Ol>jp>Gc!`<*>$m zyD<*08`NXBr|>lix0BM;lvsXH?r8rgnCxRt&;TM<87`WQ!tbDfL2fQhwxS8b)J}s?=E7YMb+~Ky$jAqsPHZO04tq@!BJCB=)g&|2|_6D)Qht zP0XNWlWLsX#Wo$tk=Vl5Dj|Iisow3f^ux@oy?|)VoD~~mx#@Y?+H1gb!ONBUnpaw& ziDY=%k!v=>)0e6VK5o^miVI8G2Dl{wj5`UkelI@anc(0hE=62TR4AZ1z)uhXr5#nx z(ai|A)hCXaE|Aethh8m*CcQNvh=6TDi@j7kjn$BXTm>4Wds z;ib(Lkt*e>lR+=WU#^!vT3K0>5bs+*&ZAQoLZBw3j0X-8sZ3N1u<23b!0XCW%#zzY zGPUK~B&Q~F|1}w9ZV)D%_pRpTS4LKGh!T>7-L(o`u|kF;aMf;~1-TsDzzosDW`8|F zD;c{gFj~S`c`9>r^E9xWlVNuZBu17ugy5@+NPkEu>R(=--m^2@&^H16`dDcM-$bsl zrKXB2+G8(?{%CP#{B;|4iinKV94pjdo|&5iDk)>?KS@O;s9~`oC(J=mPuI}Il40^0 zM|@;Q`P1EFcTmJj2n~7jVE1ci(5v#fuW>MC_p7NYabt2IZb)${phz_HQ)yWlO{Ws3 zq8!-DeyL!NH_?_UgaTn`HyId44dhrwdfZ^goPkZ3u;97$k2w>J2P!Grv<1aorIxIeZzNNrI6boF{AtA?s%bX*hr8-B_3C3vM6#1%XTiwzW zJzrlFC#P(;J+7iOsWM2p2CLh_#k-g?UN_9x(i9fFZRICti%y+))>| zUQ}7Is8r1ln>ExDhOvCq*1%S2b4fG+OYK+VVVu*7%RO>vSXBh(8paE@Xi} z-e!bxr|qF6?t2e)@ff9&9R}pa#yLa--(kqYx?~>Ad~tEh+ZfGgv8O60xt{^i90>|4ocT87-D$j zlosRb>mKDO*8w@gh4I2SYiJ4UmC7LQ9$vNF9~7LOxpJEwin?nepS}K7=+q>0{VaTw zIX!Kf){t%dt;CSC&h1gn$oHI~`g8lxp7^aEUbL(q0aBY-wcs&meXA8qKcRnYj5pgo zr~1SxjTfrJniU~cGFPl)JCm%cRrN`CVuyuDc{}#Mu^rY{>4ew&peN%XPS02RLLBj% zFr(AnH&knvXnhC_@2q~uAfVH+(g)driey&uZ;6k3UR1a^djzr4Y-yurZ!{tYj^95& z2ZV{(8JlNJ0DHICWJxY`h9*NbY+DpoZd6m((GjNoRlf@C<%I(*XfNL1CdZF2sdKW^=jrFYwUxqeGzwp2Pg2QhOPUAlI zd9!UGqNa)@3>mq;U$u-Wis6n1%$DnqG!<%jy93eqPk&CIIBT@i$j6nH2k>3KS@9Qh?znbbZN@IU3_HmS#q+eege9m% zc+;M{@jSM^^?eFaXt2$p$5Ucgej9-(g^L$~$T4g?X`f9Y$}%rV+u*&EfXh zl6Q$fnFXJLAB?_vE<2z(L458_4^~%KcU$=Uc)x62z<9==e@a^>{{sQ7#rr_?6X)mM z`6?F9&mF%e{Z&P;%{xKO#bHfuulO(9jZ~NU*-01%;Tb!T$yd0T-;Tt z%q-hMAtLXCSKU#vw{SlB``!-&P4^av7U?`X+D~2rAH}X}F!8NeMcVFp;Rk z9Og!d+#HCP&iRO6Qs0s`CW=clv%}@XWXZJ^4JZ3?0_XvOiVa4K#uFh;V+kjqPM3@l zC_+xNi*3=z-^W#k-s}_U=;*W_RkzMxu=#Y>=c?BVEadGUPnHfAGCzXp`1Lv)V9C8uYu#IHX(s^&AP%|2$&U0hJ zBC5v$SesD|egtBZV+y#8hXa2xqdAm&;4(npF=(2UAw?4h{2fk*Qc{K6nAm0bDRW-F z4JG3(9i_4cXF796%+p5qql{p@W2v53R5k{e4TQOR^Svs&ax%DLIz+w1$QpL1lR;?R z61c@mM@L3XL9zAQ?-Wv{({lO}nbqNwcarbKKF(+bN3$(%RA|)yuj(yClbtX-=bJ^K zOUTQM_(_X76DB6+>=B2*F`t;g1etTkXx`(^#Wqu5Ucw*tL9-BW8Sw$}*zVGt5@q03 zv|H+S11CgADQ12w=nu5-!cb~0xa|#6^-I*x-h8)D=BGN^S6tH!3*z8(^%~^ z%i_{5xCdMe+uD4y{=SbmdYE4R{I#sOflrjbXVJ~t`(NV%T0mldBo3d)5z2&4DqUnE zZMvD&1L2|rYWwYR36KO#-P6bxYTQnq{)3G2dmVR$0?LqAKwz-?^M_=}TV%vh?TjAd z^?%K3$x2>dt`9$|b-LwPRgQMvuEy@Qwp1&B@)FWVErr@$}rVK6@mQ zJPq0|#qP(2H=#9#I2e&fkOoMTlZ8oFOAA~0LFne zkdPk_*5Tb%Po|Fx-L2l{@3pTza~d=|(d8aU+V_6;q9{z7bh{sWhk}B7aCmG68=9CU z!*;75pCzLlR$m^sujw2U>N>{~bX*$nvtHY3UkixnkHnTw)qw(pBYHc z;@Y^mQ}ZZT{A^#Tb3Rg;rR2PlAS)vz1&>0K82PSYxEW%mCs-ckTDd0=1KY~J;VoPG z(M53dBZYeNSqjcd_mQ6pL%INHQ$n}ol@yPH!|#R7&WSNEW7#<-&d!Y=iK~w^S$7vZ zEI)wzo}TCz9f%tBu^6!WG~8~EZC8CS9RY2zH(5~9-kw=e@B&guSdKpuMneob-;>xJ znox=BzTNV2z5ftLK_vhE^dfwB?X+ZRSxSm>p$i$xyo|l{BT;|z=?VgT+ zqI##LN8b6!oRMu|=Kpnd)#*YmYPA7NLCZug4;yi9hIQGOglc zjacDC2>TxC`Au7@tV$xOy|`a>{74U55Tg^EP*726W@qg@9{k!#NDcrf1C`0CVuWDG zM@H6Sr6!7g`D(^8Tv^lc8z@G#?4f04dUcD~Dbe&o&T2D@(}NSasU0_mWWRs^cHMdq zz@`%JOH~&iT|cAlLtZ;?`Lclr_j2ry8E)}EAZ?wa<>Pb1%^^^hQ-N*vwZ;NqiqiiK zQQsrdo3{7$*Pa|~4tL><4g#8|3ZGP>6uG5du(#PH1qt1CvoHrXp zv4}0bX8m~M=x%{`R}@Jjpyc2{1D*Tfu*j=cX1KlLwZ=dgn>eM}tDJE;8Wy{G7K85`06cjk8Gl{#?UWD(^+C1RM; zFK)V4(-A?JC$|UZEMU4xO<|Vt!W3mXF7o?`O=AY0>~?8=v7o!E4@MvE!tJl6n{4|} zHB)fdgmcga=21XkqyFB6(3-{3E(f{D7c?k+wEwwC2Liv<44d` z$%lsD`?R%v0Q6ev+)rK)`yAKS-wWL@LhM|eE(e~JfO#;~LIZ(?o{ zbIZJo4iQxTuX3D5Eh_BOfO2L^SJSMTQ?gDeWPl9n>T#H@W?9+#q#qoxBv46!ozI%5v;6qieArZ5f?m6ys8~()Fe6yyuC($LaD8(L>Ej%s5}+HUZZ{*CCR13I5wRWjSA9PfPP-@L7lXNYx+ z?3b~yj>nUBpu0%x?Gh)}!UG&dQRW39GAO#{(!?0~PImjr1y68EN zukV8*!xr({Q)NwbqQteWV}r+-jVRgMd2X~K)giGpI#Y#je-Z`@KO4r`#KdX<$<%Q+ zVG(q7outa(y}c1hLcTxjVbG%XhT&c3$_l@oK*K3)CEL=%CfK!BvZJ#UH-cu)E?T-v zk@qcAs*>x$3_nnti;8GUwN+GAfw1h^p2%%Uh&)AQW)c2!M$L30ELF1F<6&5B)H!A+ zu3n|Hw?9o67w=@^dcl}L_J48W?sZ*){@(W(q3e{7k8hmJ`6&ttCHtE}n;qpgDR!$- z^U>$1iVBdN-wa^&fJz8b7IkvFT~S!<^6(=FlfvDZqDGq*`7!fjf+${49sgfz8y;>m zorJYuZnPlB6T+}9fEq%MOm$J>eN%VB^*n>FT*NPWI|7aNJ{qgux!Y|5Y~biDI| zlTjJbn!)WVmaYqHt`zoF7hqHjMJtcECc(DfL@4pZ|o-E6V zq?c;5PpvH|{H{a)8Z1b{U^V>9A=auysmh4%EFh-}Wqh11tGxH(f_Fk5b39?AksKpj z6s869Ke!Fd%wOds+$GA&&)%3BR91v$<>u{ej}8Mz$~|F~XH`EscE}s=3+Mo6n()G) z!h+;!P2b0d{SkNku;f~zDu5F&xA=sT2~}T?$l#=oTIlKPZ+6!25tANT`B1jxQ|BSPeu^G7eATVEPPn!(TQzQv$5U^xM zsKs`yS0|x)37v{c+~rw6m6THN@-j%sX?fsQw4BkIho66dqW!iIgx{}ml>gnGHGZoB zVZ!7U!R^xR$cSOVMX>_1t@DYNP^uxb;a5w~)D$(m$+4up5|xEuOl70tM?(%41WNGy z#t(6DgKl`9rTM54mo`W4fE$2w7{e}qJABvx=?x?rFl}-vgcAl^88lDKm)+8=N!QKF zH3w1>r093~dHgZF8E4WNo&>tC&zli?J+$8x>b`^P?~g2!HK008uc|k^e;2!W*Ht|2 zfQN#ZVQWeplL6cQ(|&V46^a9?$vA(5!vNyV=J#4{O}t+eE-x=vq)*k&7<}rZJ(vCF z&EEBgJ`8u;Rd{!A?_k7Jwr}WymFSOgAzdm%b6a1u-$_wLJ3f>i6^A^I5m~lN-IDp6 zPO@*O8m=!tY2*GIQbwsl9#t|aesMiG>F8btbm0($g^icU5H+kK`Q>?u0pKNI7QwiL z85mskchmh}1&J}BDF4AR@&-P;HM6>!QU{aG-P3b=;RBuz{H}(w`?73p!IZe#xk^uG zdtR{||H|D%Ayz*maZ5xuLJ0<~cRV7@_dQHiEG}d3Pn%_Z$GU@Y@1Kw>#H9CGe|Poq zq)fl^eCf#fY{Wc~yUCP5i&e)>m^5BwhX1=ZD?Pr_?(W`uzZ>$EJTZ$I^pnohzz1Ky z;G_&#UxS0T-@uIPvPU98)X0{E(D0CIu3`nR4F`bHWP_<@Ykzvre#{e$ZGe_Z5R z)%RxCpStc`G}>tVotsdg3i{^T8D|Ox_B!1)-oI;LHyR!Ivi;)|`qUGH;d3g)hq9n+ z=c}cN9J@rn=N_4;r0VMG>z%L6RCXY(i|v|MQhf6*NACX`?Xn@zk>z92SmoF_P~uef zzyDthp`a)8&GYw>*c5$r?2OK8uIHQo0bIrG5*eyZ+OGj5O@N4H5f@PB9U%GJ&9Tnu z0|e{8wzf86GO`LoPM4cwJqVQF+`I&Egfbk>^%(Py5DP(MEDSrY+gV0N`j$Qnk=O!d zkmyLNz^H^joT~x1ju{zlKnc9qOb=j z+nZlG<64#Tf9ovyz~HfT45$Uhqzi3gTAH@Kz$OnF3l@+?YIWnh*&~uLJ`nc1=x<*N z3TtF_dF@BFG{1;?k> z(Oea$Z02e?a@`rp&VLIU+c)XkV6_^C0OSzV-&5!C@bCyEjrTiv_4UBEmMhV3TJR>r z7hP7Eg(5g*`ukNJ@_U-hr;~|DE9UIlb!Fiq+f%NF-(L6lu~_ICE?HzJ9sZo(T8dg0@JsV=f5$%G`jb+Bna`-8;)cB=+br&T)BQ zd)uR}-M2L`AVpSm;y~+k+NMcEy0)$ZT&2I2{d5V!#=*N2?+kdupUaUFop38rYJeZ1 z3Zu=BQea~>4K~dRGY#JIoh8Fsw)($$lreXU-k+o*5?>>rTCr#Z0t)f=_gTBEn;X}c zC%KG_j4z$R8kiVm7_I3a&6-9}#M%K4{=Q0N)WYoZ2_ML9WoW+*d(;9$!{*AE=l2L0P5-gnLRNc&kNar7dpn z-hz*U0K-SrI8|jx&rsLIDUgx{q3C{jPyEr%4<*I8GxlE`Vk}e}mCU*NYz$J>Sx*`{ zz{*#@pZ7f9@`&=w(vn1S7el0QJ)Fx);;Y0ao$lohV7!hp7j^Ru5gjly~1A))?y@HQeQt~@=M$IQMbvipQkb%{5z1U z)-y*!4FUXh3tJx+5$sX=>OGg|2h|7P$6v?9WzxyMRcf4>6}rDK=M&c~`p=jFxzRtc z>vC2SqyYW?@AC%+d+~eju=Fwp5fKqRy-~M^6))(5ogz!C%d?0%nUL%2^KI>~Gultp z%g7WO%z%rs1=P#LXjQW8?A*QA=gRJK-9L>bT%$LRAH46=7h1hHXhminmOG-mdc|+3 zM0x=5Ktf5{cPW;Za)oo{_8RRMFUD)k;5>ENpo&%D!MVy$N(@^6KC|?Wj1Y_~SN{CT zPM1zi*bHb#_TfZIn!LFBhK8PA8LwKuTc;n_C|;|L1+WS=t;(JIm7x1IxBV&8Cyjbj z2Re#8Jx;@p5uBHe$L-7i2s1Mlo4roC295$2NnV>JUg*TQxqD#h0TH^(<%>V%7||>d z@Mw^7sxY)to3pa@*3&Zs2Zqk$k(ZcqN58E1NWGk#zU1fUQ=W8OssZJrLcKE{Mf@5H zG-QDWtq?_qGecAfv?&q#DMS=$lj+k{k|&9L z4t9uy@Bb=2JU&8oD%05H9v<2N74+@(wA(*7znaqXcp2DS)<*eQKI=aa=UHLTO=JTm zL9Lp(to*!q;sn!+d1$i_aLo=54{7q$&eJ6x2i10OEv=X9t%Yuv-N^eh*g3gyn>pC| zLiU=Iq~$BaLrQfVHQBYZvi^oy8qAVXk_kC(kEOE#4e|NiR${UuJ$ipIhe19HHCl&_ zs)1ygHeigrRn-?Oh1g($(OvI9uKGSYmNNp8{Lg%?OU!=*(-?5I7-1oMf&e@J-aJ<}KcYzj@*a3;)#;>+HhV8EL`T0gCLFYig& zA7cBrbjB8NmJ;OtSX9YKS3z~`rX7W%k-JVyJltdBP36rGz-4i#B3HLK!3kE^`u2ds z7w?-Vv=*34)qPJ0VLNHvLrxUGL2I-N54wvybvaq~aaze?O8;l(VjIqpD^%|Y*Xerv zy;dJEtmclZH_v6<_Ir7m91v9mm_Fh+=S)6ly{N(-hXepOEfjdXIT^f03cTwl`tlj* zS)9@!9rr`y%|W(BhSdn9u)6P`?6rTqi%^gU8W>0XlPES%FOLmh%6sVq`4Xx1NPtP! zQP{@aJQPeD^#X%wN7Wtfk2>UYMvRxC`<@XCMnM$A*LT0I#rqSgJ|sajM)qtQ?WW(6 z8Mz;+b{YZRj@$W# zz~wW>Agw+oke8Y)xBlZC1Rn&LUxgs7aCdxUuTnYG=}f?#%057#NKq*R6o-whyB@e+ zjx&=kbG){$uJ3QTYFwN{5BHJ~H!;SfhmA0{zCEDmq8E9Vtx|h#Yw^$tclY!R4Pzd> zIHL3f>tX+&!~y_>QmHuzgu^W+HlF!<%ys6kSpLCMP*omaHi`k}3h zdYk9S{A5S4<(HR0Y5sfveCb-npdg98KLr&=HCuj^dq2WPg zBA_V8lMU_f?-%OSxZICfT9sG0tRO7h9vq!8T**$cI@yqjOuXpn8 zy}w;0d3bzyJ3|d$45gA5%{KG*|7yWH8c!yaotI~NH1EjHRbv8o0WJe+wC$q1r-$41 zAr@&oN@r&$5H;zQpS~~rpvPm$iQgZ}55LdG2|K81h$p}M__=byMIU=bjAHhOfX=5+ z=Q30>B!C`DQ7MHhu(c^bAy5tW3`ItK3*PJ-aiAe$g0+(?3*jncmuc7hMzPp4rH1` zxKQ&M6>AXk)|5GAl>R_FCwc<@-t!nO+abcb>+!RdRk=$ZV-f0pl3k;8QP$($n!Jv@ ze%iS5(zT)CFasKr;ew^f7lewPUkwcdQzrbeysB>&Zt1$)aREyjFB&=80i{8`3{tk} zkTP2O|2(R!JnlfeA_>(l)~PhjVbsz}O&fm)w6{K|%X&8_E8}zapL}jR>qTEXPcB_owlG{`%yB*u}3EnnUSyVLfcjZo9j z#KtO5t1=Z)Rqf3lz5c5i+5dMicuA3#GO&d{w)1~Wc)FIyusK0HX>!k2Aa9>iv|VpM1X?pA5oG&4|(J&i2Iy7kr7Aa|3ox4jvvJ zHD_a-IdJr1wyrWiUhF;YW5>@O&dwsX_Owb^Y!wEkWij0@foTaX zsCKLGHEE-7UIx6+u{En{)GqKpBqd{GE}78KIOm+GupRk$Gfo9-1yr$467kC`tzi1u z>Fb=~1WFSty9Be^k*O&JfLCLxsI5xs5jIgU5!O#h1xuC$h8vIvKAac1?k|-X8O#G+ zbjH?{4Zk8IURH)wtD!VYs4VR$fEyR8jVp8#iKPll-sRLL^LU;vP5^23t^P%FqG*`p zm!lziBVvuJIcCCGdWZ|4>hiZPN7VyUKDT?Ww{dD|HJ|xsCa7enhyc^p|8K+nITKA6 ze^36Yb%Dtb$qQaI)&#_lXI7hJ^Zd9b<#TgWe5={%S{pVW1FpI%;%?;#Mru)$T7Y}4 zFr>1OSD?#MD3z=h?=%3uTKDAPA!|uV39<-%0o#}JCqOJdws>B%s!KfctBc>Glg5+s zu!Zod1iIeqH3&>Q$ob`iS?tpBgq&9``XjJ_+2x}q-Om%rlRL!Z;i*Q z9cT&{pb9FO_FBNE%$5tB6aS~c;mA!Ha`M8cu`!A={pMZQA6^<8T6~i&}NJzVjUFN8t13rHfe&z&f{bs)T zFbOF+eV$U%zXm5v>}C#WnivQRL&z!qelRr%7$$ws5ea;pD2c+64U9fn1sEihe^Vnton*!Ile_E;Dr) zJ)!bh3Dt9yb%9?(bI=oZWCHm{Z=&eH_5@4U(+<~VPbkipr#o~jYiq!(FNRbDqeMQ> z3eIMvC|mfsnq%u%aO;t(UB&V`5Dt#(Lf5llr*Hi2>WBV3ztioDGPYT}9e6~qW4s1J zMfyU~{A@0k>pi(!y;~ZX0njuDr>9JWu{?qzF%HH=$0Esx^l}aKf&w0~fEdu{h;$A( z$^|UMlkU^NCa1OD|C{DPPl-Weowv*5&M&cR7Cx5Ydj)=!WdwX$e2N4{`&z)n_@4@W zVDyG>Y9Z1#8yIGabY~oFb=zxs4M9cspJ-%TxI1!wx_0c}Xfn3@4ArSs!C$-lp2kLx zhwgc@94*N$#y27PiV(qTE5hO0`Vk=Tgti|Wh~Y38W>5I#-eQyE2QZ80@n0#Z_AW36 zvzPd?pZMPQR`cbFtEBW9}$7_tda8VANv9 yV$L2405~lYXHAvHcz1abvqAsF@%iah;#RU}++aFQ4)|XV1SL5&*=lK%um1y{=NsAp literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_2_odd.png b/megamek/data/images/hexes/nuke/hit/col_3_row_2_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..910d26bf7667522b76347e3f66fa81b56ccee634 GIT binary patch literal 14204 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 IWGy5A2jCsdrvLx| literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_3.png b/megamek/data/images/hexes/nuke/hit/col_3_row_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a824a39163b8f863932469370e96d341d1970164 GIT binary patch literal 14130 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 TTzdoG!eJ=Nsv@eSjf4LWr|)fU literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_3_odd.png b/megamek/data/images/hexes/nuke/hit/col_3_row_3_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..66993654d700b15da19e2086b6dd88673b91a310 GIT binary patch literal 13912 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 M3L5fdvhRcb4-wb{{{R30 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_4.png b/megamek/data/images/hexes/nuke/hit/col_3_row_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8b458f6b40d520cbcc62c248280fef54fdf4a17d GIT binary patch literal 13621 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 H^&$K}&Qg~> literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_4_odd.png b/megamek/data/images/hexes/nuke/hit/col_3_row_4_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..bd68941d4ecdc078ed26c2e6dfa76c24c54858b8 GIT binary patch literal 13611 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 Ch+i83 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_5.png b/megamek/data/images/hexes/nuke/hit/col_3_row_5.png new file mode 100644 index 0000000000000000000000000000000000000000..748ac269960cb4c8a1afb59dfd5030c91838af59 GIT binary patch literal 12747 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_5_odd.png b/megamek/data/images/hexes/nuke/hit/col_3_row_5_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf48ed94cab496a2c1f0ac4cd3edb82c7676c18 GIT binary patch literal 10880 zcmWlfcRX9~7ssi+)u=ridlPMp+Dc-NC~A|ElA5tc?b-yXz3I1BZEBAetu{v5C~DIv zRl7F7{QkK2zFzmA``q)~dp_s$J}1f4SdWgHlbVQ#hz_i;V@|kQ5)OSza>CgoYDR#F zNL&xBqiGpj)Yls_`Zv0Ueedt_sp-R%R6*OoEh|{Q5q``Y}XZPJdhns+X~4j#eaUG^i9gvbedF!6_Z70VhHN?bPz*h4P}JiS zy<5za!_ro~e)cK5{#`?JPtU~ny23wy{y5Fw!;{^ywsp`FOJj_g_89kiP~IpZjEy*y z6p@i{bm;pWb=!HPf+i=CcI+MZzW(KXut2zT{+Zcv)%)h*z!0LdbnW=JJEP!w_U*sB zH!I6m0(@61QNzm@-chm3H!8Ohe8IOeJ`0G>)_^lBUxk65-h6NJ{b}{9M*|(*j|-}P zMqchx3V=cm0g3cH02yj4E2|$%OTUKWX;e>t`r8derd5ppJ_!rn12cVflZW~HXE!uR zNjrAy*x&*>?i*MX)RY(HiZ=XMSab$)H}ypnOFWVB-&+jwKirT@F9xNed=?tKU0e}q zH6^}hE9C08Z6SEJ_$N9o@u*-cu76Z3NU#A$N&VsJ8P1HX9{VNT#5sWKa=94Y_3W~fU z?Ogo#%+NxCm(J$t)9P`5G#agsVu`L2H?YOdAbCauiA2Se{5B{l7MiB5 zIX28e5(V#va*x#Yx95p_O0o}yU4=n@oG=&g1nIawMKZ6WdkkMJHS zb-b!(*#Cj&!z*N{1z=r#uy-!bo~Z4;e*OCHo~7!=oLGWXRiYJ*cj`eDxq9cIvx~GZS$Gw}s11odxlRm3g zuqp_+RjqI~@T@0lkB{GN)C0JN@Q#w$NqqPM!u^8UE%>Zl{lNUCc?`yulsC7gNIfbm zg-v?x;AaTlWdG)LfG@GK9uj%<@bJ6E~AOgy`)%s7;YT9xrZ z9*L*@2KjBtW~d*K!fbpu#_y(cD;e5%8opsRF1?|ztcEpuy^t?9^eNt4iH-%~MJK57 zs?evE)x#VqjQrJA^#%ze#Fv-MfBW(DelrAaggWEB{p$_1 zp-SLdrRzUId4>j7Po7NM$`xbIE@n&Jl#371oxSndA}0I$+6*n`vmlDjzG5k`+{lCvtc#Pw(!O!GSd;jI9%fCx6 zF4o_v{O1kQRzKPo>20MKAX~{YUn|lU*R5b~k<=B_jgqYr^-G8)?sLE_-KeQ7Tym>~ z=3tajl9h1U+hanMZZ~dkcs_Tp8g(uu9Qo|dEB^cUPjdQMl|PaAM@35h=-owxbpM%P=TASH*D{XJf`S<0bf`0ofi|caKH5CvH$;+B8To(z z%FQi|2n=dl?DqZb>MiHJn445x=?l^qGKHA2kX=WrA9nyWJ<}|i8Wd{~KbGd7$uEwD z>Y+S7`;8J(Sl`Xd;s&V}!0MC8^VjDqj^`5GO5vn?k7gU~$J)?^4VMf6Gip`z>Je#C=U9U9Tix_~<&qK| zogF@y=GNAcq1Z$-as2!*VKy1NHQd4r{8_W>H=~jE2E=y9N0sQDJA37|oS44-J5L(z zR)4YUpsisSXDD+;wqe{Qtu#MbF0rGTt3(V^tT+Pw`~`$VEPT$|B|m4)xh zAaUg1h+Ezce>>G%?*IQ0j^Te&!uMlu#Z1(XXm!n;`Ur8rvJ-i^6AvAJmaklWRZLKA za}fT37X@7X_SV9#FEqZm*q)$}AfFYYo}RFrRdv}B~;1{oMvV0OGF(!$%iUtMEo`=0{No+@tF1EF{QEX zZE6|&$Rzjvb6QGG8>=e#aOrjHz=r_k^}+I3Lcn5V!dK-!*8(Q}w!1fWy`#ALB8O-u z2L=O_N7zRQl4k2!-|itMHi4Q8AlEWwAsaL9pK~M#zbEzf&h!4#kgaSr8Tmui`vyz} z9W{ujq<5+nZN<1_FoB>QA|Ff^UI|{%)CPP8Lz3;O+Isf?YxkBd#`xfl9IsyAD(YpF zx>!N&7M6bD7M2WWIi>BoH0+^OaEQh1mgTA>_oL9%%fCGt1IK*VLTbn50~7v}#lJ+N z4n^b|R{cwFxq}vw3=sI^%DWITOsV>0zJhzE`AmltM6A29QdGY8ls1v1>KgzKS!nA$ zyZSxLQaP)d!+UW|q6W6OxF){V#PO+rk zkvv@rdw9ASB=b~7rT5f**I+xc(jFAAA9dV+1lOm`CxraEI9^f1a7OD-H}VZ z8lJyUHZU-#0w+@}{rg)QVMMas{<`JXno7aqdlYyghNmpW{pMGt~yxo*Z;~E2`h?b%G~pWO`qou8y8wM!e|T zwJJga5hEW{@N;uZ0u#f+!f_R%evd1MJgFx=A^1e~>z9))sX&^cET*E}eT;L%$1uL= zK8@!_C2aa)W)OjRB7rGefodmNc3EzExY0y_xr?Emx2&6c&@k2{sxazC=9ZQ4t3lh0 zMMKGq7B#NIijaAj%o>g*mF;d#$k1ZYvJtAv?){;8+1>U#r1;5F8f`i7f!1nYwP@(i z(47Xm{%|T!9xae`e{ja`)!mehNyTGUmU8@i8CdSKVt_O`!cw7D z;pYb;XWO&=Lq4(}%6}{^Zsxxk057s1_7bULLJSvNQi-{7HU%I?{A`)JlPiKpj1^|n z(%z?w0yckD~$`_eiRs28n%4--wvv; z?@{F5?K#^!_IFQMr%a-@*B#)RC}Du|kS&+IwwQVKT}ti}AlMW_?($YJxP zp$3^zYI@j5OH#30^6%5k*icfP@dpL-*(SF4o=Ba_@k&ka(EUES=)G?6UZu&1EU7KX za-+I4>Gi-_l~=CVNX~v@exCC(8@$ylD9K{f*+OzL}#6CiJ`e0B1DsTmOCawd1SKqi) zZRGtC8{BpTyBvw$QCaZv_EyL@+1&`Q4V4S7qHXF>lyZnma%3U16|48x-!$b-Z3Y@e+{fnf zgMk?K9HMGK=VEB`Qd@kMK~z zgdPG#zADsQW)p3aTEcX_e~g5T5$wg)eZn3B3FAAsR(PM5Q zpFMzDkR(QRHHxS|rD`|1ljo|F#L+?YuFBnwBg!)?i;};CZynH_80fm#@v+G z*HQ}G?8oYhTvSprV|3mS4Ab-uYg>bJRFqahLNqYn(Avhn2F^vW`GBNn%K7H#auIw; z#z-PVRt?!gkBXr%vv4*Q1^o*jC)c#JH0?iod##;4V`J(US$v#5d>m6U5eLqtcrq|* z<&gj-RCfVr&31g$sL+NmLc>I>H8tLejvw7=APp%Htoo35&yxoi_|3=w`cRX3M*M{- zoZSQLlo-bdP^RKDrHuR5)?QxpRlk)MFNuYJs&u@PPfX|DoNqU3bQ~~V;3P;^0<(zm z{twrT=8g_bu&P^7PzIr%$wB?!K@rqAhgl@uHFfoz&7rK(6ZhoFr{tIk8GD#={=uKt zNx$>Y&=$!}gm;+4Qds{{vHSbLUF8t7m#5)JJC5hkXV>E>22FF2doxb1(6|}r(w*Mj z$nOFX8`&f8VriKOp%7JFss9*~fkZd%c%%&}nUvtSbSN;E)T+Fh#4)<_bc5^D!`aUY zB>70FtA!-$B(A=zMA8We@tZ=9W;S1g!v0C>rSsz5myTZ0^C*9bj^(mj?!~0MmTvCu z_%f76;^kGZ_k*mR3iORLc7|$FEhyn#_$Jk}Rt_lCcc-C~kXCvF&V{-g*Qd(0-9kox zegDeG*~wQ>&Y*tmJJ8%5jiVX`etE_UW&L;5BKfv3p{Dlt=_Rcm3Bdr_{BaIJXW>Kg zwlOa2;`1EZHfWHHhJNU^L!8a_Xkay|IQnuzJs&3)e6L|J%%q?uSU`Jagek#1S;wHB z*{$0Io8Vl9WLla;0+DHQJVpz5_=N&+W>yNHYn_#g4|d%LCdO{gmS+OU8-P!rJ{5iI zu^=rexJlcf*cVy47rtJ%%sfI^sr=FjQI;1`KMbrSAy$W~t@XjkWs-#UIoQc*qe0d+IaATk%F~3kr&!>bspqQSdVIGTw=%Z7Z|f0%(p& zBDY8FnH+w05o4sw@(0(+R#~+ zGacl+Mv8@ll?t;qIeL0}R8P|01n-sJklnsdRBIof;iKGgk_CX7=5eOEirC*dwYAN~ zx_Bzx^5Mo3VcH6E3zqU_TTkD{kL&PSPAq2?>NuGfjuwnhjd)N-o-qP8jqBgB%QWJ? zw?`J7fh+%l*LXT^{p*!S4F5B^tT3cpll09`*WyYAa%}#8{A~d>BLUhF%wj2WG+2YMr2a!t%(S8o0XU2z|EtB%aV(zV}FJVAedNdp#FL7 zbG4V;1_l%Qq+!{Qa?I!`Bv^=66}}Th&zxEwA4NCPq4g5Ju!Vq z*AvFv_`;zw$rguQzPe|kegd>X`<~hdO}EkMI_P{`^H`AmcC)E|x%lxR$;yOd=m&}F zygw#+UuyC?bUlsGo56T}RNRe|hEk!~EUUQ~y%%@c?4vI;}ovYt`s%1_6K; z`A=uwWn*JNxX+aucJ;Sw&$YER5K3lS;T-5!8oZ;1K$p*rDuJ}QsPdL0wcd@tZwblm z-8vY!-d$!&LG7Jf5c04sb6z0;%$_!!vai+xrZ29l!el+;F#klPt|KXfKhWaO1*H7& zJJ5x$2vnQv3$aPw7HJ!yl)kg6p$G;%hW6_zLS)JRKC^2exv#8-%v~7i-modsEJJ?u zL&wInc>Rnyr7hO%VKXP$20Q_UdaR!_Q%^^Y!#x3=ULE!BUvacZ!hpPFb}wwnM~Dev zU?L3__4n9fiCudU*oI6=)6~b3GO}X@cjl z=f)_2+f#srmMn8l>QK5SO8(eRhSfZ2@cH|uRu%l<96$ZMzR$XuxnS;S7do3q@{&m%rO{x-FIU?KQrad@aFrf9ZdVvF62?3?U8;z!1q9tJc#JvPK^it2s`=CpDU z{69fU`CMsj#V$q!;7p>brO!b4JT%mU4o-j|EPXM3eLT-Lb2c~czA@%;S7l#oaJRxt zxlgLDk0eqDg$_{^(D#l7@IY#|7tnKv_qcRB;+Imrp>~4hS`SV$}3K^()Cep za&}d(9%W52S5sE+7BS5I8g}4|Jbhf+cHpnf7CH95DTyq9&b3%CnCr4;$kxRDkIVd% z)}|AJ0m(03?(0Nz@COjQaT$4wmtYk-VaH zKyyme76O6-{*&a;00o-O9~pg`3(Si4btCKlHvbY>M5B4EX6Ug8F9_5O76He!qH*l0 zDa+Nh(Xw9%JgO^vQ=A|jL)OBi1dP8no^@YRM#izP?uU&mt8C36R3U)A^1M5EPiu6=9QT@wP)7|!}; z5XHS{G&R;{yM}JZ4{Cu^tvcb*B!+)>>_Hg9JtUH z%hmz)@+U0Zpf=3K1@*dfsj5kq;LnxwVZWgb3XZ$N^R0yyi_u>lk#Pig^;dKdq@|E&*$i=v%WzHH{-cNIg)oZk9=%dfII{KO= z#~$+u*Vj}~s6gERKY#$t{WyY5=bwCsj;`~D6nx<2HS&!i8@=Iud8)^E8L@1MZ2K=x zn|Ne8bF&&oUdfweY-&5k)>jX7m1PrBrof%?3wg#f`76I03Pd;3M3{(?Enz=el~n^8 z_lbMM_^d3s?##E*2}49ityN=i?6ut$yR@Tic`eoAp3jg|mpteiIsM$3wgey*$PXks z9u{KFTU3RhYqi;bRBZ!6Khu}8ergX><&@jn6s5u;Q`j{$^gDkB-k!dI9PP9+sISB( zv!{O`G=F+U#}73i;RCe%AJU+{2S<4!M_3U(CxGwojmWpROL!Tx}kw12V+3pv9* z#EPlX zlzjQ%$S^?8DLUTVT>8bdojWzLFyj|o3`5uS<3Xu79o_eHBx=v9ce#sc&ZgU(DLRYo zWwpx5NShpRtgU{dURLB^`{^?2C`pYfqRSeM-Ld}-4cANlJ|UT1Y0wr)?tpWoClKB~ zGHP&$q^>IIaj;LZkP*=QWixSNRMg`e4UMRazT5t@HG-wIrTFvP{zHT zpo@7se@g5_R2tF2P>=`1#mT zF*!t2l0@|u!zJy-P&bG(ZG5H)Yx2e-05xTkSP({^qXp;bc(`{jVVUTLYrFfG{oeWc z6PX#h3zC-jr+|6pcn$Z5KL5=mYb5$tQYag^^NhC9=;?DMW+0t=z|5=<%S@LL3ogpq zOp71v**1R3exmC*q6sSXPp_dzC732lPL8i%?DWyV;1PC7LW+uYo^`b35eXw|@B&#* zinKljd(-C>O2Y|XWhTr+`_y7JOC^oWe2eL+y~pb7hlM#h-|r1X)=Nj7f5i7efEe3B zK^T8*Jf%wkoBWp24XlHcOTH07(*FH{(MxHyE4yI50*_bp?sr=Q(jP56s4vCY%nR?o zUP>8nO5`nY=g@tZ_$~Ry=_M+H{5(j)xd!ZhEnem;%}_sKL9PZ1{Wg zVGEoEHS~WXlxPZPiyGG-domtG3_lR|m{%tExpBy{NoEHoCGuay5??!H)Qe^&jkZZG zDSfW(UM)atJ`k%&a(NN+Ysh=<`sz=O&H z%)LCbx-zR_xX)o)oqz(Q+4iUB=Sxaz%Q)J_JUV*pmxj*h^;L15wTXGL(R8;E^F~eD zY3zLEZDEu8Lqx11F$Mtd?z-!r{MDMP?VmMqh*>5;9CTv2|7RBZmC!g1K`SI1UR+_G zS2HThs)q2EP22s=)Y8>w3ym~8t_T&^Z+GY-9=VKPl^3b?{^`T_$&bs3oyptr{A#$4 zdMm54^Oe6$_}HWnJ$|ub5-DuBC!2P^x0zmyb$k$M>&eE~jaZP~SVNcu3^v=K%~-_1 z1u+a(di$D}84xc*R(Z=E+9W2i{h;g2&Q9Y_bVDV9De$q*+!tV6U3+XEXFyuS6Z`v~ zdWNL6{&XpumSsObxvet3`ZjXqf&N$rs zM>Xf3DQ{TCNRmp!v~QCok`?zA&hCPF-$nXrN(IY8;fv}t+u6ROD5|Z_YF@z{|4Nuj zjI0>`R${z`TWly#`0$-G?4KDa795kI+&4Cs9sR(EPDa79cjlzF;^uJY(>t|ok{qf! zx8s(Ch7FjSDHcgE(*?q3Z54EnMdOW+?-+E9I;B!Q90{r45p1OWW{38`;bu9~M%i6O zCv3R2N+c)NeGUQ2X?=@4^J>PzYJ( zwr;=*cGtvyODO?${`}E3)68$)z0$=TZHSqXEF#AY3p_23^VgG^Z6bB95J?i0In124 z3EunUrZubE{WXj{R;_ZCvK(+N_-5SvBG%#9l&p85!$^nDS(;Ly>+T! zD#gxuaHYonml9jKGhZh0X!{W3tN;6 z(Pr>H|L%A>`LVvJd0;>f3I*QfdtlVM^+t;^cuMJ03wxp3-&tB-??6oYEK z862Y)&z*&ksjt!ZV(*)QU#e=!^3un4ux9AvklN#CrY%J9g659?$0cJO<;eZA~D8BQ3PumONn3h9ztLB~ylC$J<## zuY0Ik*;p9g*2{S3(H2nPI~BMBK^n z%thm}zae-`fI&GhFczqhSrzp!V&E*n#n0jn_5N=P^Vf=gxRN{Fhr- zsX>UJjbgl@yF5AI=gp1U8{_ylsfZUZ2-cm@Llm5l@8}G=_iwzmc7I9X55qpj>>)yf z2o6ER3_m}YD;_CN^towkd>)s%5fXhGQzMt#4DM=$gud%XfkCIT2o1)bOJ>6b0&TOOZAL~&6uo?m0w@_6xT0T=O~2!7JO8~T zsb(g~Bw0-I`~P2S-9w>!4^N`&k&90DpaxacVi#(p{ZZZRK~x}CD-_H3ytrm=EnolX!c$8a z$fi8b%?eGtU*{8S;Q6uHbu9Sc<7-oh?&Sn~bQS#hzthvXTxd~&`8>ed!PB9d+(d-)!0?lT|IDUs@bGSNs%>XqAZb?O-C{iDOO;_K%7K~qrXf$ zu@K9OU?BM;P!PaLU`R47$1)>3mL*#`htE;Q4>Q%krj%VCc{@CZ; zCc~!LL+PR~s!;vj9oAWUt#5tbw~pYC;qlqee#V<#qm-n`3$iRDiWF&@lB6k0DWs5i z@9}s90;Lo}L|AJu#^9X;5&m693IOLE);XMYIA`(B;;g}Wk9QvD94b->A*q|1zSmgm zG1}t2$2v#T_1wFAkGps8GMmr%>A(56#KZjV5B0?Wp8vzodSeY%Tci-Ac}5b&BuPS= zCMXqs)z5qH5kugd1?Mczx$xnHL@J4w0(=OVcMj)0);ffDv~7d67HchW93y~UYqYcI z-q18H5H8+gvEc5(eU6WhIXXH<3c;1DSNN~~%fI~4;t+k~A9;I^qA1Wt+s%%fDW1FoWtp!zVGO}9s~#h#u$37 z@j_774RzIkP;_0(d_H5fS`#V7&dwHjR&f6O`G@-b<->fj*I$3Z$4L^7`6wqz6Oa;* z2MJzEgp?>HaYKN_5L|%=;qf@Evp64u=)FaF2gB1li!%nJJG3@92Nr>l5!zUquBYn_ ztNDu6YK?K0rmJbYmeqQV)|%c}WE8W#yTfE_%5VSfzw{3)1`jnu1rntMAP`Ps0jbn* zbQMvgaMok3#b}N99u=L|Q;GK$kH`B^3XHJ`De%tYH%H#0wZRyTF(I?3XD;>~3w57X@`wBjm%Yd=KrF4(`6kAs)VlBByqxII$>PqWJN|2CkQ9`_{V?nUB~00WvGzRrY=emGEb@S zZ&C_2QHm5sbU5E(t)=ff{7^R~9_u}L5jwgJM;{MHhuUbJ!Dvn2YlH~F@4AMjZCS6^ z^j$}_T2ogoQ5@mCLnSej$pm9O&V#jvx~@nPg^+|sXCBU}e<&GxaPL*GRD_ap^NLET zkbMB2aLla*Z*k7hcOAwU0Hh3!3BpnL-eZl!ID@qo-D`|BSYzq?e)BWVLD%=xZ9`R8 zR8@`cdvx35oJUAW*L9?$oGeXgTg}O0i9nEL8RN-_GiP=gmnGghdae27pZ;_2Dkkqb zp!e?H^h!lUQ8Zx55FByZ?uOcDti|Ylc$%T%IONc%y!SZkFxKFm$5;d2qqPYrpzE>L z(6%k!LzOs1qsPE}PHYXT&5p0@2+u2)Q_TO@HzlEz%R zbcr~Quv*ji9YVmzKmJ4SI4^vWZA+GX-Zj^L`q?_rfaHzm9y+!#p7LN=*jWxUds3lObKCX@eVf}S7XAT)>yRB zSYr^vA%z-#&kqgCYyf-Tg-r1toOkq{L2JFiq0W0G(Dpr5T@%M4FQk;DNs4iT#d1m4 zbr@}!&*vzm7>!4iqk{2d%w#elO;P~X>owMdGLa@RdwY9)_?y4u9mVEdWvGf2`0&1= z8-sTiV;x%e7^8>Aqp{XtokMs}5~~1kz;#yUTAa*Z_sYMnx-u5AN` zRf;rA$>yL7FBM z#poT!4)qwHbA1jZ|HST-wgoVhkqB|k;D-oFxDUt!|@ImrSE&3 zvsh>8yB@7I-V2O2Xk+NQjx0^divk%bMrDbT3Tq8jRnasJLdGB!)>x#Jl;e^}3GzHg z$S{rdeNU1k6r+MTiiu=6F>xFb#WAB%!OqU5w;i8%6wsr?+g{2LOvf-^JBPKQR`$K7 z>sp$+rmicjwW0Aihk(to6@+8zefW}H-wpvheJwk@Zph3yig3;`DoaL1L7L~tI70V5 z-Z|=~q3?9~Vp5UB33(nSHft?X3Zf`rT`46+F`_66qBshJnD-lW5=AOpjLF%z6{B}{ zdTIzL0U030aq6ig510)KdUI>r_R`ovoUVu>Gz1z(H z);RK_pe)NUaY>1aBH|>$d56^+Cq!sWD#m+{l!`pdNRlC#z$h=s(h#gTj)~(y*Z@QG zBNT1{-a3qNZ#y(^J3|ldz3TnYJWd;rbrxsCNT_wsx~gc_)dn+0N)g2|5Gc6QCZ@IC zFil2lJZ_-+1{%*=tT9AULRpSUl7u*pkx~YXD+Jn{LMb=AUwG{}PDqj%25QiI`A zvzRnZiQ@zzK&fcR%otl#*=izV)O3wllQX-GCDZn#~35c-nZ{F3ite-(hut zGjWn^z<3%|7KWo6k>>?b6nKUtio$!y(`Fj7Fq9Yj6&Kux|Ga%$@p)STedWgg>vi96 zm>_E%Mu+Yly72&StV2o#GH{*N+RcaV`yOX)7(;=0z_DqXlIIC=l7RR0y#_o*QIN#p zSO&f`d|Br`x^8Iu7Guo7A3%~Mn~@jKrj803pjI452;nzL5gq~|{3e*rz7a%$=fS-j ze*gTnx0I!CE1&_Zx#0_irqOq1L&Z7kkU*p)Scz6)Tsmdn1%a_vjpH~*B@x~_+NPmt0wLn8K?p^br6?7Ji|IXL;7Gl*n~BUAjg)eO zX~PqQFvFn1z<7lx&ZE>@XF1<;ZFupIe%}ZBEEH{HOaSC21e0OpGy}Bhx0)vzDgo!UW|U&RT?0L~*pilD*bwt&u|DoX0vd;L1SFrE$dGnKMi# zQ?%C9bu~00Pnu>!bMnMdGSo(i?gK?AfOxnVYRJxT5kSgNUr*VvNW~yR6Vlq^eW<5V z6d{$u4vBK@$!GtqF?&l#zVCa44_*9p;&Il6+GPPe4sb)GI(_z9({~*Z>ZcTfSjup; zMF7`L)4*^+j0xa91lN%y36tqA)9I8rj)(EnZ}`^GpgeIDlcoUy80%=e4%5GJw3Si_ zDX~T)Wyr!)J~mBLoC7EAhBgeJM*#uCSz`w_>>KCbHw@^%`Rs3ctu@{n`o0f}Pp>sm6b)cKln@mu;wVB$fi;1gfdE4xWNH{^ zJ>FUD(Dc6i{O|eqKK;?J8`*Cd(9`+Z=%Ho~(@;YBdm_<=VeqQCBuuc|fpfn-Qxq=&BSHb=r*OVczM8;l2qh*j&qK-Z3#7B496$1O+*T%V$vj|9FIxUl&)pT0_$`G) zlO_pK6cfiWbsa{v!g#b~T|2y{RWb(l9vOvzI%`>1>ri6} zAS-rbfsiMep$JV}xb_1x1pn!0W1+LpfSX}b>VY$#=ekxeNH2DGs# z0aBWc1alh9A@-+}@|z#|U-}0>@3rokOr}_CDU&hF+0 z(D!6Tjueun)znQLoGUiW*2$18(ZI(_rNU_4wEUxA{y+T>{^=hUUlq_VeE$FO;5YjA zxEzz^1-<5Fe*lY|7_bpuSvmbwMHq)`3o1geDM-SYZl7|^ZA1HY857(IO4+j3v_)j zO&lK`)Abz!NgO9AmEf$Wt{Suss^)rGfd_2{g2gzH9+kxd4d_^})@a=as?j)-Gzo?_ zDaoQ}I61);*!LQ196$ea|A+ri{`_AMn}9y~^i?wd<=L- z<%lQ=FV0sqhEv~B+jc{_kQ-LqxxhUFlx2`_^E{(zg0J(^#fv0KLf`kH(P=$sRF?g- z`#kpOqoi351ft{mjT>}r$Nt%UE?&4mnr75>!(y?ZT30NVOO#4b%2Cx7))|C^$)qG! zL52wujNcH_LO|rj;0f?_y`iaF=8FYsl&}>=192VDf>aV?9LD;=Yw!k)iU1xQyymap zxK7iwjK)(gU4E3Kqhn^v8QN%e&zvEO0>Q9Y%!hgxx^}E2N`i_aief}v*F-8}TuwJY z*n5wXF+wQnx@EmyZ9JoK9B(cLK-1LJRe(R2FJDGQ3Zn<&!h6P(DMi_H;gR!fm0Nh{ zS;Y}i6th^YcyN3|)3+GsY5NA_MwI1JjNtUJLd4V=-V5r4i zN2CNv5`mYj*A0HXCW;0 zU~g{^DHTG5OexC}Az(V4qIEt%8@>7e;UX3oW0=hsoE#l-`?cG=dh-@hoU*EdFqo!6 z=$lR_oI8J>(P)J87Tsyux@EOm(su1e@<@^pOf@vx>2#Z_YH=2#BxO`i(AKeB2lOG8 zB!~+!ZEvWX9^Gr|x*>Y}iT8<{H(v1f4h}dvI_B=(`&i>yuNsbzX6)|nGAc$0Ave0w zd_E_MW6tdFlOzeVlNrVsk~Aev61?*pldW@}rfxT;EhQy=-&2<5(6nNR*c7! z0U3L`wqs{!2Pq|e-;(D6EmU{ZgO&bgma#A=g*VQ=bX$=sH&Q)S03fj zN3Rk^iuqzr)6|&0M<6%#&ZKPbzHrAWoTpp4|;-~ zrmkz|vlF&=wn<};6416Ci^UvcEK)`EeaB+42w%#1%5u#9*?oi%+`oUHx?W>!AYt+( zCrM(GB*wX5r7T88V5H)huGeH)N1CRjnMTDC>$;}x4PDh6rGuQ#-p!w@CVdQL)#7tgOEg0k*2{+QI;eA+Nb`?8?fnx7hk3* z3U;=4kV;TjYpnH*MgjUb8%zu#gL2xsp;}i6{D%Fmn+l^fd6Ck#4N67q?VX`4OX9)N zJSq#eceW_<0wF`7tHF7E?)-VAl$@NLY$&v@TP8kkf^% zG)q}mYnr-YT#V?up7~-Z*bv^Rp}`S21~>52a&Gnj|13NgQpu_bDhp^-xt+ zvmuO63G=RBBSi4(*G)~^wm?|l@dKpm`<~@;i4cM;&xmD06e;??rRyVp>c9U<0dGQ% z{J@|3K_97@vMkx#+hH^+0Z-jjbX|**k|<4BtrnQBCsr{RFJ5Fk9#a$<+q>IT)hZl^ zB<0-Mvx9~c4cJwY=fTuE9*;?q6gONfHyFMq<1yuUOxJZhxPPDVs6a}=e7>M8OY%G= ziV~cc9Nd4vt=q42{rW51JvhJ^&v=wG9+yZNESKZ57_5$#NJK<&w6XNKVQlr@()OWr ztg4D?T~k#xz18$ugAcX&+O@~n-Q7iaXzGUBuixgs{nTIk`s7I0X+)|9(%7?HE<%H8 zE39?IQGg1@c(ezM=H9)#Xmf^37oVmqM<@a1XvE&$8Im~W_~eAc*KaeKOxfPv+N>!C z4%M?-uj$&B@pw$0WprInn)bv|#Qxbc*uJN2J3Mgv_1D?i*=B3H&2m-Ibv?VgyT~Y_ zZd>lWeisOXN2DaCZdff>7^4S6ZAMWPc_UaxWP)ax2DR0zRjQm}t! zpZ7fV6qhbu2&`BaFlbrkUlqTv3FvS9vwteS|4;oH-)qgue1`6O(j*WdNt_^MMBDeQ z*F8;JQzjCxd(OT8eLVBb(q;Yb)`IkUgZ<;xdo+LrCDEk>hJkT3?NGSqE} zHGbG93L~&{mMD&x&lVVC+27wMPST)jAqJJzQB@(ZaT2DklWt>aiT~wOIx>C6L?OKAW1UDV~Id8-5T@c$R=P#V$>V>nEMaJV#Jb{!@6d6)@q!Ors z;oeDh*xTECL-STDcsgOjMg=cY7%z?OxOeX$kjsf;u?V$mu~=;Q)02}EZryr~)oRUR zwPsz_%$KVmq!~xkXyL|c5fQcU-?J>P<-Dfe$XfJ>9VV$(~i1cgLj-gx6da&@%@}T zdxrC8b}@qmFfVfOmgCtmQbtV1lffz&Fq*SLIh@buND-*MJkOa-r^Hb-Fg%*$<6~Cq z73a^LCruNklbx`sF_>=aszPfG2B@ZJuaCpwJ35ZIzTqbx=! zIogcCv5Faw#sk3|_=He4A|{g&MUi5xrfDsG7ra|h9P>Tj{js+$(v6CoJTC*zN;B%V zMlTjT_2lDx*LVL3o_gXjob55XBZ`x-D&q`I+i>{cK53RCg#!Gb_f(`=h5(8@=j7ys zJ9qAo=Q$TIUP39cQB!w!ce!-w5z;gtJo};k&1N$eUCYVI2~FMN9Yk?V-y04OkE!c! z7z!NL2VS@i=QP!E!Z97a^#_gEhsC0*Bq4dbR^Hk+|p zHmp`b6ROq~cJTWL7T(~jqdTP(ohM2Zagq>6F-j@YG;B(1ZK ztBnDx$O}}Qpb+$3P1RInc}kM!xRuicp>P@#NY){6NWkH$-Q?GZP|LBunf7|XGT5%!?&pi7KPrv_t zJaY9ClW`vAXdM*5)p|{y7j)el>wv-w=8HMUNB4=6h@HJFY;A9$jiDATTie@=Cne)k z1#=*jr_(9U2FMb`vlizaiHgxeaPRItnx+jCnK7K4oG@F=5rdPiZd*JT58Ag00DfWU#a^ z=5v1HFaN~5w==A>g0`uHaF!&2jcGgVV05^6{v4xGLEm+( zS8D=dFf8T^l#-mxX4F+huQf%HQxpY41Z%g)2gyMyqDZi{z0J|l4DUUw<%+g#>H3a! z)!>1w$k19-t;3Nw#`2xt@tt_*`Nd!SMMlMlUWCOl?}MKyIGY7=lm@ZSI-Iw|^w#68 zqa2mPGDhuB1B zb+snVQUsEsD0%Va7x|xm_Gd}cguS!-n+4ocQag%bk|fw1JuGjMz%D@=Kb! z!8yy{{2M>@4Nvr2_SkQYFNnqB&VWr-;5`p#96WfyYQ4re%X+=$&Ye5NQO0}T^91jE z@;!l|17Cu!)`r?#AIlyY)BS|Vwzn*2 zYue7xR1MwW0S!jmh`Oo4duFo}qzXGrky7-!r>;VP;@A;IDy%*_jVAzhmu2L6j;j~=kIy~`t)AL07->%92li+uP)@8w%Q@=>PK$#6Rh zLlniFJ9m!0*Tiu;IPvtbLX!lOt`Azya_X zg*?=Njwffu?BuRruPg4~zsL0(H@JNH3ePbm3p!F{@}WjZaWnu_JB!CQ~? z5uUJgJGe-3&XQ)?z%57~dE_EdteDS^xqRgkfB5_tc=5%Tc;wP$x~^kAaIWL=m?TZP ze{k<@#pfL@&;C#U<4^hdY)+KK{Mdi`7uerFLtU?k;$(Qi07LL>j@{|*eA{+-4|!3L z#1V_djKzFOk|rc+unn%)6~c!ltp|sPEEY3%w|98r$@gN6b`Yp=cbwqx^-_vQb$|NUoun&wC;*xuge$tRx-BW5C*PA51chF!^F zsTIi51Y?3jP6|n!1jW*ON1kVxevneuHQt4p{Dl`@;PCJe?>&z_c8$xAT)|k2w+@vg z{QNKc0ykcHjjion9vmJH=CH7>()E3SOnbXrxpIZcwB)_-doOuDLJG-CFTKRC|HiK~ zDn^XQ(?CxSyH-up@_+wd|KM%M=N$(W;3t3bQ+~Nz@}1xHT|D#5H&NsnNE?g{*_gIz zI6OQA7|aK10M8z&B$G+7G&W7md_H3_=tXoaU%uaaz z51*%;jJb5_GPiEO&L4d4^QbswZ~rV(N^ZUSD&um*g^TC;(I5R0-v9ph;qg2;JmhzN z=U?&Mb6?o(mrA9Glw!TEIX*sSu~^XcJ-_uE|Lh&b=3U()<3k^QmdlqPWpD2cQhDMe z9^B80x~@4nJ{gu35~`|Vxm;|vE{f5JEDO8rw_bgXFTeN#LQ2}U!&%GSd-u3{^-+rH z7UwTrAs>(Vz2}}|xm;0IYwjK$^3si)SmTMa92v!|2cQ8_A)6`AHbUNm9 zpZ@}j`I6~$%KiKIiK2*$mo9Ss`VHpu<-l}VoPGOy@~4k?m7xGHy!gB?Mg`m3(|{#i zPZUK|tBSe`4!gE(sj7;TlNn_>;@r7&66*+mm6{&r=jR zN=lZ?il%812(Dgzgzc^EfmM&WZyhhbbe+EMsp^K4qZysC^i_-15qUnMYg+!rum4Mu zBw~MmpSJHpusu9>?Qyho)OAJI1{d6Fy}(&VUALrZMqZTYzT@b@G21)a>}>5ao=kZ5 znGa&L=J@!Cd{nR##lu##;dg)QGw(Pa?>eC0_kAB1|LfoWU%Ypg%a2^*o4)A-Y;RA4 z|HnG)uoc`HO`ODo>nD#1n174<9omNdwA-J zC%OIFYwYdr(Hq0JeapA7sw@8DkNw!YI<*hw-gp1`U;Hn`U;Xbs+A zaOd^c+1}o!9F3Sv#&mth)-paXR%m>6>%x)`;Iiu$&(B_Eb(e| z;6Q<+!$W@c*M5yNduPB|=F0_j-EjT-D-R_O4=teo_?LcJ{Lp{=L%tl3c({U2vD~?Hn+uosu~-i7 zA8jBk48X>PpyDxdqk-wzJCScRno!1%Dbc>Vgz z+`Rb;7cX8MM&p#eZ~b=u{Ez(zQc1%2>4vR31_U6OFP7kgbYhGp zj#3uO1&if^vYc@1)@@E^$0SL_=RWs&zWn8vSl624;}gF0#h18qa6nTxni=5rxe`qmy zC|BhxAB*LYKV2~M-fj$60L=iOx~ApE%~ud2LW$tN{L+{Hi1~aO!1Z!Lo@GcW8I4Mu z7aSZMP*oM$ggZc-Izp@swCti7ZytW;v^F!d+{%IlU>XU^E)>%^&>;mo8r5OJDo~pZonkpluCh z8N8;;dX2S)ovm%sJVOXrtyZk-n)%?}dRUMD4+c6NmmQqHCjbBd07*qoM6N<$g8PJ! Ay#N3J literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_6_odd.png b/megamek/data/images/hexes/nuke/hit/col_3_row_6_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..23396b6d0646de6336d88e0ee4969879c771c837 GIT binary patch literal 12680 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 F{{dZFnmhmi literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_7.png b/megamek/data/images/hexes/nuke/hit/col_3_row_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c7d6606b48777466bb7211e93c8f1b310c76fa14 GIT binary patch literal 13328 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 B)-nJ9 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_8.png b/megamek/data/images/hexes/nuke/hit/col_3_row_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0329a4a21174e640b1d671c2c89031d5a581257d GIT binary patch literal 10662 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 F{y)GyAZY*q literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_3_row_8_odd.png b/megamek/data/images/hexes/nuke/hit/col_3_row_8_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..a1817a814524d687325a415bda3d004a6d6f0313 GIT binary patch literal 5582 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

l0CO<9xE|2W|?d2if{JVBQ8Q!Bg{6l+_p+eHw> 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_4_row_1.png b/megamek/data/images/hexes/nuke/hit/col_4_row_1.png new file mode 100644 index 0000000000000000000000000000000000000000..369ef796cddc7d6ff0eb71339e3bcdd80fb1d2e4 GIT binary patch literal 12313 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%0D0%MaJeeT=DtLM7bjV^E_rz=Ze1 zt;HDMn+aS(I1x5Z^YOi?!a#)JHnXgIrP^JD<{^k=_5O*ujjQAM)t#+;=$qFEO(J~> z#`V_QR9CrvTGg{9Ge_T-+^k59>!tcXq0`6MlP^d6rkw88E=_|g^CPMmemGxw6=ve}qMB-R zywdsbrIgxFBM@GpchD`W$?m>}B55X%FWddbFrQn(H*lWNKlj#9Lk%MB47iSuP4N4E zJ<2`2xSJ#!SX1ngCw#G2<)P-IIv+B|L2v9*1~y6S9zz4ke`wI9LWp<~bZgFUzJA4H zHjBJ{Rp@^nv17`JEL^hpeZ1*8=jmWlsXy9Q+yOGT$_(=tj7|f1Fckr7nnldsXhx;) z3*)#PXH$g3%WGaD2^>Maz5N8IS`wo&2E*@Z>%IV0i@oFm4Wj>vl^X3=Nuz5RI@R7> zT0XV}MGnZB4==cKyo=g6;v2D=5^el>*>L!FtcESBMGvPy{SU%2SJ*&Xmm#K@!jSpb z0#s(QNaVZ{8<9XGYNr5PfGBk=_gx30UMw?z?sGe{WhVjQM!N2#Ur z@;Q+-W>M}vU1RqB+iBL4>v!Eb&5 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_4_row_2.png b/megamek/data/images/hexes/nuke/hit/col_4_row_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a97149906700f62710bae7cb349bb31dc87dcfe1 GIT binary patch literal 14145 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 literal 0 HcmV?d00001 diff --git a/megamek/data/images/hexes/nuke/hit/col_4_row_2_odd.png b/megamek/data/images/hexes/nuke/hit/col_4_row_2_odd.png new file mode 100644 index 0000000000000000000000000000000000000000..82eb5231d64915f6de3ac3770f1b4b0f2f6e6b23 GIT binary patch literal 14301 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