diff --git a/09HDscape-server/src/org/crandor/Main.java b/09HDscape-server/src/org/crandor/Main.java index b6d51c74f..2bab7fff1 100644 --- a/09HDscape-server/src/org/crandor/Main.java +++ b/09HDscape-server/src/org/crandor/Main.java @@ -11,6 +11,8 @@ import org.crandor.net.amsc.WorldCommunicator; import org.crandor.tools.TimeStamp; import org.crandor.tools.backup.AutoBackup; +import java.net.BindException; + /** * The main class, for those that are unable to read the class' name. * @author Emperor @@ -51,7 +53,14 @@ public final class Main{ SQLManager.init(); Runtime.getRuntime().addShutdownHook(new Thread(new SystemShutdownHook())); SystemLogger.log("Starting NIO reactor..."); - reactor = NioReactor.configure(43594 + GameWorld.getSettings().getWorldId()); + + try { + reactor = NioReactor.configure(43594 + GameWorld.getSettings().getWorldId()); + } catch (BindException e) { + System.out.println("Port " + 43594 + GameWorld.getSettings().getWorldId() + " is already in use!"); + throw e; + } + WorldCommunicator.connect(); reactor.start(); SystemLogger.log(GameWorld.getName() + " flags " + GameWorld.getSettings().toString()); diff --git a/09HDscape-server/src/org/crandor/game/node/entity/player/ai/AIPlayer.java b/09HDscape-server/src/org/crandor/game/node/entity/player/ai/AIPlayer.java index d53533575..315843c70 100644 --- a/09HDscape-server/src/org/crandor/game/node/entity/player/ai/AIPlayer.java +++ b/09HDscape-server/src/org/crandor/game/node/entity/player/ai/AIPlayer.java @@ -231,7 +231,7 @@ public class AIPlayer extends Player { ArrayList nodeList = getNodeInRange(range, entry); if (nodeList.isEmpty()) { - System.out.println("nodelist empty"); + //System.out.println("nodelist empty"); return null; } Node node = getClosestNodeinNodeList(nodeList); @@ -243,7 +243,7 @@ public class AIPlayer extends Player { ArrayList nodeList = getNodeInRange(range, entrys); if (nodeList.isEmpty()) { - System.out.println("nodelist empty"); + //System.out.println("nodelist empty"); return null; } Node node = getClosestNodeinNodeList(nodeList); @@ -297,7 +297,7 @@ public class AIPlayer extends Player { { if (nodes.isEmpty()) { - System.out.println("nodelist empty"); + //System.out.println("nodelist empty"); return null; } diff --git a/09HDscape-server/src/org/crandor/game/node/entity/player/ai/pvmbots/PestControlTestBot.java b/09HDscape-server/src/org/crandor/game/node/entity/player/ai/minigamebots/PestControlTestBot.java similarity index 73% rename from 09HDscape-server/src/org/crandor/game/node/entity/player/ai/pvmbots/PestControlTestBot.java rename to 09HDscape-server/src/org/crandor/game/node/entity/player/ai/minigamebots/PestControlTestBot.java index 5ccda6168..3bca040ec 100644 --- a/09HDscape-server/src/org/crandor/game/node/entity/player/ai/pvmbots/PestControlTestBot.java +++ b/09HDscape-server/src/org/crandor/game/node/entity/player/ai/minigamebots/PestControlTestBot.java @@ -1,38 +1,41 @@ -package org.crandor.game.node.entity.player.ai.pvmbots; +package org.crandor.game.node.entity.player.ai.minigamebots; import java.util.ArrayList; import org.crandor.game.content.skill.Skills; import org.crandor.game.node.Node; -import org.crandor.game.node.entity.player.ai.AIPlayer; -import org.crandor.game.node.entity.player.link.TeleportManager.TeleportType; +import org.crandor.game.node.entity.player.ai.pvmbots.PvMBots; import org.crandor.game.node.entity.player.link.prayer.*; -import org.crandor.game.world.GameWorld; import org.crandor.game.world.map.Location; -import org.crandor.game.world.map.zone.impl.WildernessZone; import org.crandor.net.packet.in.InteractionPacket; -import org.crandor.tools.RandomFunction; +import plugin.activity.pestcontrol.PCLanderZone; -public class PestControlTestBot extends PvMBots{ +import static plugin.activity.pestcontrol.PestControlHelper.*; + +public class PestControlTestBot extends PvMBots { private int tick = 0; private int movetimer = 0; public PestControlTestBot(String name, Location l) { - super(name, l); + super(name, legitimizeLocation(l)); // TODO Auto-generated constructor stub } - + + private static Location legitimizeLocation(Location l) { + return PCLanderZone.landerContainsLoc(l) ? new Location(2657, 2639, 0) : l; + } + @Override public void tick() { super.tick(); - Node test = getClosestNodeWithEntry(15, 14315); + Node test = getClosestNodeWithEntry(15, NOVICE_GANGPLANK); if (test != null) { int x = test.getLocation().getX(); int y = test.getLocation().getY(); - if (this.getLocation() != new Location(2660, 2638)) + if (!this.getLocation().equals(new Location(2660, 2638))) InteractionPacket.handleObjectInteraction(this, 0, x, y, test.getId()); } diff --git a/09HDscape-server/src/org/crandor/game/node/entity/player/ai/pvmbots/PvMBotsBuilder.java b/09HDscape-server/src/org/crandor/game/node/entity/player/ai/pvmbots/PvMBotsBuilder.java index 18d011d8d..555c0956e 100644 --- a/09HDscape-server/src/org/crandor/game/node/entity/player/ai/pvmbots/PvMBotsBuilder.java +++ b/09HDscape-server/src/org/crandor/game/node/entity/player/ai/pvmbots/PvMBotsBuilder.java @@ -6,6 +6,7 @@ import org.crandor.game.container.impl.EquipmentContainer; import org.crandor.game.content.skill.Skills; import org.crandor.game.node.entity.combat.CombatSpell; import org.crandor.game.node.entity.player.ai.AIPlayer; +import org.crandor.game.node.entity.player.ai.minigamebots.PestControlTestBot; import org.crandor.game.node.entity.player.link.SpellBookManager; import org.crandor.game.node.entity.player.link.appearance.Gender; import org.crandor.game.node.item.Item; diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PCLanderZone.java b/09HDscape-server/src/plugin/activity/pestcontrol/PCLanderZone.java index adac01c45..7f42352c5 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/PCLanderZone.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/PCLanderZone.java @@ -5,6 +5,7 @@ import org.crandor.game.node.Node; import org.crandor.game.node.entity.Entity; import org.crandor.game.node.entity.player.Player; import org.crandor.game.node.object.GameObject; +import org.crandor.game.world.map.Location; import org.crandor.game.world.map.zone.MapZone; import org.crandor.game.world.map.zone.ZoneBorders; import org.crandor.game.world.map.zone.ZoneRestriction; @@ -89,11 +90,20 @@ public final class PCLanderZone extends MapZone { return super.leave(e, logout); } + private static ZoneBorders boatA = new ZoneBorders(2659, 2637, 2664, 2664); //I should probably find the real names + private static ZoneBorders boatB = new ZoneBorders(2637, 2641, 2642, 2648); + private static ZoneBorders boatC = new ZoneBorders(2631, 2648, 2636, 2655); + @Override public void configure() { - register(new ZoneBorders(2659, 2637, 2664, 2664)); - register(new ZoneBorders(2637, 2641, 2642, 2648)); - register(new ZoneBorders(2631, 2648, 2636, 2655)); + register(boatA); + register(boatB); + register(boatC); + } + + public static boolean landerContainsLoc(Location l) + { + return boatA.insideBorder(l) || boatB.insideBorder(l) || boatC.insideBorder(l); } } \ No newline at end of file diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PCPortalNPC.java b/09HDscape-server/src/plugin/activity/pestcontrol/PCPortalNPC.java index 5c5d9adfd..60fa4b66f 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/PCPortalNPC.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/PCPortalNPC.java @@ -12,6 +12,8 @@ import org.crandor.game.world.map.Location; import org.crandor.game.world.map.RegionPlane; import org.crandor.game.world.update.flag.context.Animation; import org.crandor.tools.RandomFunction; +import plugin.activity.pestcontrol.monsters.PCRavagerNPC; +import plugin.activity.pestcontrol.monsters.PCSpinnerNPC; /** * Handles the portal NPC. diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PestControlActivityPlugin.java b/09HDscape-server/src/plugin/activity/pestcontrol/PestControlActivityPlugin.java index 01481812b..ef0d0cdf2 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/PestControlActivityPlugin.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/PestControlActivityPlugin.java @@ -1,7 +1,6 @@ package plugin.activity.pestcontrol; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import org.crandor.ServerConstants; @@ -29,6 +28,7 @@ import org.crandor.plugin.PluginManager; import org.crandor.tools.RandomFunction; import org.crandor.plugin.InitializablePlugin; import org.crandor.tools.StringUtils; +import plugin.activity.pestcontrol.monsters.*; /** * Handles the Pest Control activity. @@ -74,24 +74,24 @@ public final class PestControlActivityPlugin extends ActivityPlugin { @Override public boolean pulse() { - for (Iterator it = sessions.iterator(); it.hasNext();) { - PestControlSession session = it.next(); - if (session != null && session.update()) { - it.remove(); + sessions.removeIf(session -> session != null && session.update()); + ticks++; + if (waitingPlayers.size() >= MAX_TEAM_SIZE && ticks < 575) + { + ticks = 585; + } + if ((ticks < 450 && ticks % 100 == 0) || (ticks % 50 == 0) || ticks == 596) { + for (Player p : waitingPlayers) { + updateTime(p); } } - if (++ticks >= 500) { // 500 + if (ticks >= 500) { // 500 if (waitingPlayers.size() >= MIN_TEAM_SIZE) { PestControlActivityPlugin.this.start(); } else { ticks = 400; } } - if ((ticks < 450 && ticks % 100 == 0) || (ticks % 50 == 0)) { - for (Player p : waitingPlayers) { - updateTime(p); - } - } return false; } }; @@ -105,6 +105,7 @@ public final class PestControlActivityPlugin extends ActivityPlugin { session.getRegion().getRegionZones().add(new RegionZone(this, session.getRegion().getBorders())); sessions.add(session); ticks = 0; + updatePlayerCount(); } /** diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PestControlHelper.java b/09HDscape-server/src/plugin/activity/pestcontrol/PestControlHelper.java new file mode 100644 index 000000000..d49089b13 --- /dev/null +++ b/09HDscape-server/src/plugin/activity/pestcontrol/PestControlHelper.java @@ -0,0 +1,5 @@ +package plugin.activity.pestcontrol; + +public class PestControlHelper { + public static final int NOVICE_GANGPLANK = 14315; +} diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PestControlSession.java b/09HDscape-server/src/plugin/activity/pestcontrol/PestControlSession.java index c27b8718c..22efdab3e 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/PestControlSession.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/PestControlSession.java @@ -18,6 +18,8 @@ import org.crandor.game.world.map.RegionPlane; import org.crandor.game.world.map.build.DynamicRegion; import org.crandor.tools.RandomFunction; +import static plugin.activity.pestcontrol.PestControlActivityPlugin.MAX_TEAM_SIZE; + /** * Represents a pest control session. * @author Emperor @@ -219,7 +221,7 @@ public final class PestControlSession { for (Iterator it = waitingPlayers.iterator(); it.hasNext();) { Player p = it.next(); if (p.getSession().isActive()) { - if (++count > 25) { + if (++count > MAX_TEAM_SIZE) { int priority = p.getAttribute("pc_prior", 0) + 1; p.getPacketDispatch().sendMessage("You have been given priority level " + priority + " over other players in joining the next"); p.getPacketDispatch().sendMessage("game."); diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/VoidSealPlugin.java b/09HDscape-server/src/plugin/activity/pestcontrol/VoidSealPlugin.java index 62bb72113..82d0010f4 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/VoidSealPlugin.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/VoidSealPlugin.java @@ -11,6 +11,7 @@ import org.crandor.game.world.map.RegionManager; import org.crandor.game.world.update.flag.context.Graphics; import org.crandor.plugin.Plugin; import org.crandor.tools.RandomFunction; +import plugin.activity.pestcontrol.monsters.*; /** * Handles the void knight seal. diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PCDefilerNPC.java b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCDefilerNPC.java similarity index 96% rename from 09HDscape-server/src/plugin/activity/pestcontrol/PCDefilerNPC.java rename to 09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCDefilerNPC.java index 84c427238..c8ae81884 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/PCDefilerNPC.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCDefilerNPC.java @@ -1,4 +1,4 @@ -package plugin.activity.pestcontrol; +package plugin.activity.pestcontrol.monsters; import org.crandor.game.node.entity.Entity; import org.crandor.game.node.entity.combat.BattleState; @@ -10,6 +10,7 @@ import org.crandor.game.node.entity.npc.AbstractNPC; import org.crandor.game.node.entity.player.Player; import org.crandor.game.world.map.Location; import org.crandor.game.world.map.MapDistance; +import plugin.activity.pestcontrol.PestControlSession; /** * Handles the Defiler NPCs. diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PCRavagerNPC.java b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCRavagerNPC.java similarity index 98% rename from 09HDscape-server/src/plugin/activity/pestcontrol/PCRavagerNPC.java rename to 09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCRavagerNPC.java index d31a2bb0a..36911abc6 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/PCRavagerNPC.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCRavagerNPC.java @@ -1,4 +1,4 @@ -package plugin.activity.pestcontrol; +package plugin.activity.pestcontrol.monsters; import org.crandor.game.interaction.MovementPulse; import org.crandor.game.node.Node; @@ -15,6 +15,7 @@ import org.crandor.game.world.map.MapDistance; import org.crandor.game.world.map.path.Pathfinder; import org.crandor.game.world.map.zone.ZoneBorders; import org.crandor.tools.RandomFunction; +import plugin.activity.pestcontrol.PestControlSession; /** * Handles the Ravager pest control NPC. diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PCShifterNPC.java b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCShifterNPC.java similarity index 97% rename from 09HDscape-server/src/plugin/activity/pestcontrol/PCShifterNPC.java rename to 09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCShifterNPC.java index e138db5b0..ddd3e89af 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/PCShifterNPC.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCShifterNPC.java @@ -1,4 +1,4 @@ -package plugin.activity.pestcontrol; +package plugin.activity.pestcontrol.monsters; import java.util.ArrayList; import java.util.Collections; @@ -20,6 +20,7 @@ import org.crandor.game.world.map.RegionManager; import org.crandor.game.world.update.flag.context.Animation; import org.crandor.game.world.update.flag.context.Graphics; import org.crandor.tools.RandomFunction; +import plugin.activity.pestcontrol.PestControlSession; /** * Handles the pest control shifter NPCs. diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PCSpinnerNPC.java b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCSpinnerNPC.java similarity index 97% rename from 09HDscape-server/src/plugin/activity/pestcontrol/PCSpinnerNPC.java rename to 09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCSpinnerNPC.java index c4e9fe4e8..c93cf46d9 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/PCSpinnerNPC.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCSpinnerNPC.java @@ -1,4 +1,4 @@ -package plugin.activity.pestcontrol; +package plugin.activity.pestcontrol.monsters; import org.crandor.game.interaction.MovementPulse; import org.crandor.game.node.entity.Entity; @@ -16,6 +16,7 @@ import org.crandor.game.world.map.RegionManager; import org.crandor.game.world.update.flag.context.Animation; import org.crandor.game.world.update.flag.context.Graphics; import org.crandor.tools.RandomFunction; +import plugin.activity.pestcontrol.PestControlSession; /** * Handles a pest control spinner NPC. diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PCSplatterNPC.java b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCSplatterNPC.java similarity index 97% rename from 09HDscape-server/src/plugin/activity/pestcontrol/PCSplatterNPC.java rename to 09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCSplatterNPC.java index b66d9297a..705deb5b0 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/PCSplatterNPC.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCSplatterNPC.java @@ -1,4 +1,4 @@ -package plugin.activity.pestcontrol; +package plugin.activity.pestcontrol.monsters; import java.util.ArrayList; @@ -17,6 +17,7 @@ import org.crandor.game.world.map.RegionManager; import org.crandor.game.world.update.flag.context.Animation; import org.crandor.game.world.update.flag.context.Graphics; import org.crandor.tools.RandomFunction; +import plugin.activity.pestcontrol.PestControlSession; /** * Handles the pest control splatter NPC. diff --git a/09HDscape-server/src/plugin/activity/pestcontrol/PCTorcherNPC.java b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCTorcherNPC.java similarity index 97% rename from 09HDscape-server/src/plugin/activity/pestcontrol/PCTorcherNPC.java rename to 09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCTorcherNPC.java index dabe2a1fa..0f5f6d912 100644 --- a/09HDscape-server/src/plugin/activity/pestcontrol/PCTorcherNPC.java +++ b/09HDscape-server/src/plugin/activity/pestcontrol/monsters/PCTorcherNPC.java @@ -1,4 +1,4 @@ -package plugin.activity.pestcontrol; +package plugin.activity.pestcontrol.monsters; import org.crandor.game.node.entity.Entity; import org.crandor.game.node.entity.combat.BattleState; @@ -18,6 +18,7 @@ import org.crandor.game.world.map.MapDistance; import org.crandor.game.world.update.flag.context.Animation; import org.crandor.game.world.update.flag.context.Graphics; import org.crandor.plugin.Plugin; +import plugin.activity.pestcontrol.PestControlSession; /** * Handles the torcher pest control NPC.