Merge branch 'development' of https://github.com/dginovker/09HDscape into development

This commit is contained in:
dginovker 2019-06-08 21:14:56 -04:00
commit 16dceba4bc

View file

@ -33,176 +33,176 @@ import java.util.List;
@InitializablePlugin
public final class AIPCommandPlugin extends CommandPlugin {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
link(CommandSet.ADMINISTRATOR);
return this;
}
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
link(CommandSet.ADMINISTRATOR);
return this;
}
@Override
public boolean parse(final Player player, String name, String[] args) {
List<AIPlayer> legion = player.getAttribute("aip_legion");
switch (name) {
case "desaip":
player.removeAttribute("aip_select");
return true;
case "sellegion":
if (legion != null && !legion.isEmpty()) {
player.setAttribute("aip_select", legion.get(0));
}
return true;
case "regroup":
Player last = player;
if (legion != null && !legion.isEmpty()) {
for (AIPlayer p : legion) {
p.follow(last);
last = p;
}
}
player.removeAttribute("aip_select");
return true;
case "clearlegion":
if (legion != null && !legion.isEmpty()) {
for (AIPlayer p : legion) {
AIPlayer.deregister(p.getUid());
}
legion.clear();
}
player.removeAttribute("aip_select");
player.removeAttribute("aip_legion");
return true;
case "clearaips":
for (Player p : Repository.getPlayers()) {
if (p.isArtificial()) {
p.clear();
}
}
return true;
case "aip":
name = args.length < 2 ? player.getName() : args[1];
AIPlayer p = AIPBuilder.copy(player, name, player.getLocation().transform(0, 1, 0));
Repository.getPlayers().add(p);
p.init();
@Override
public boolean parse(final Player player, String name, String[] args) {
List<AIPlayer> legion = player.getAttribute("aip_legion");
switch (name) {
case "desaip":
player.removeAttribute("aip_select");
return true;
case "sellegion":
if (legion != null && !legion.isEmpty()) {
player.setAttribute("aip_select", legion.get(0));
}
return true;
case "regroup":
Player last = player;
if (legion != null && !legion.isEmpty()) {
for (AIPlayer p : legion) {
p.follow(last);
last = p;
}
}
player.removeAttribute("aip_select");
return true;
case "clearlegion":
if (legion != null && !legion.isEmpty()) {
for (AIPlayer p : legion) {
AIPlayer.deregister(p.getUid());
}
legion.clear();
}
player.removeAttribute("aip_select");
player.removeAttribute("aip_legion");
return true;
case "clearaips":
for (Player p : Repository.getPlayers()) {
if (p.isArtificial()) {
p.clear();
}
}
return true;
case "aip":
name = args.length < 2 ? player.getName() : args[1];
AIPlayer p = AIPBuilder.copy(player, name, player.getLocation().transform(0, 1, 0));
Repository.getPlayers().add(p);
p.init();
Interaction.sendOption(player, 7, "Control");
return true;
case "legion":
int size = args.length < 2 ? 10 : Integer.parseInt(args[1]);
last = player;
if (legion == null) {
player.setAttribute("aip_legion", legion = new ArrayList<>());
}
Interaction.sendOption(player, 7, "Control");
boolean joinClan = player.getCommunication().getClan() != null && !player.getCommunication().getClan().isDefault();
String message = player.getName().equals("ethan") ? "The Dark Army marches again!" : null; // Add
// your
// own
// message
for (int i = 0; i < size; i++) {
final AIPlayer aip = AIPBuilder.copy(player, last.getLocation().transform(0, 1, 0));
Repository.getPlayers().add(aip);
aip.init();
if (legion.isEmpty()) {
aip.setAttribute("aip_legion", legion);
}
legion.add(aip);
final Player l = last;
if (joinClan) {
if (player.getCommunication().getClan().enter(aip)) {
aip.getCommunication().setClan(player.getCommunication().getClan());
}
if (player.getCommunication().getClan().getClanWar() != null) {
player.getCommunication().getClan().getClanWar().fireEvent("join", aip);
}
}
GameWorld.submit(new Pulse(1) {
@Override
public boolean pulse() {
aip.follow(l);
return true;
}
});
if (message != null) {
aip.sendChat("The Dark Army marches again!");
}
last = aip;
}
return true;
case "pvplegion":
size = args.length < 2 ? 10 : Integer.parseInt(args[1]);
last = player;
if (PVPAIPActions.pvp_players == null) {
player.setAttribute("aip_legion", PVPAIPActions.pvp_players = new ArrayList<>());
}
for (int i = 0; i < size; i++) {
String aipName = PVPAIPBuilderUtils.names[i];
final AIPlayer aip = AIPBuilder.create(aipName, generateLocation(player));
aip.setControler(player);
aip.getAppearance().setGender(RandomFunction.random(3) == 1 ? Gender.FEMALE : Gender.MALE);
Repository.getPlayers().add(aip);
aip.init();
PVPAIPBuilderUtils.generateClass(aip);
if (PVPAIPActions.pvp_players.isEmpty()) {
aip.setAttribute("aip_legion", PVPAIPActions.pvp_players);
}
PVPAIPActions.pvp_players.add(aip);
last = aip;
}
return true;
case "resourcelegion":
size = args.length < 2 ? 10 : Integer.parseInt(args[1]);
last = player;
if (ResourceAIPActions.resource_players == null) {
player.setAttribute("aip_legion", ResourceAIPActions.resource_players = new ArrayList<>());
}
for (int i = 0; i < size; i++) {
String aipName = PVPAIPBuilderUtils.names[i];
final AIPlayer aip = AIPBuilder.create(aipName, generateLocation(player));
aip.setControler(player);
aip.getAppearance().setGender(RandomFunction.random(3) == 1 ? Gender.FEMALE : Gender.MALE);
Repository.getPlayers().add(aip);
aip.init();
PVPAIPBuilderUtils.generateClass(aip);
if (ResourceAIPActions.resource_players .isEmpty()) {
aip.setAttribute("aip_legion", ResourceAIPActions.resource_players );
}
ResourceAIPActions.resource_players.add(aip);
last = aip;
}
return true;
case "syncresource":
ResourceAIPActions.syncBotThread(player);
break;
case "pvpfight":
PVPAIPActions.syncBotThread(player);
return true;
Interaction.sendOption(player, 7, "Control");
return true;
case "legion":
int size = args.length < 2 ? 10 : Integer.parseInt(args[1]);
last = player;
if (legion == null) {
player.setAttribute("aip_legion", legion = new ArrayList<>());
}
Interaction.sendOption(player, 7, "Control");
boolean joinClan = player.getCommunication().getClan() != null && !player.getCommunication().getClan().isDefault();
String message = player.getName().equals("ethan") ? "The Dark Army marches again!" : null; // Add
// your
// own
// message
for (int i = 0; i < size; i++) {
final AIPlayer aip = AIPBuilder.copy(player, last.getLocation().transform(0, 1, 0));
Repository.getPlayers().add(aip);
aip.init();
if (legion.isEmpty()) {
aip.setAttribute("aip_legion", legion);
}
legion.add(aip);
final Player l = last;
if (joinClan) {
if (player.getCommunication().getClan().enter(aip)) {
aip.getCommunication().setClan(player.getCommunication().getClan());
}
if (player.getCommunication().getClan().getClanWar() != null) {
player.getCommunication().getClan().getClanWar().fireEvent("join", aip);
}
}
GameWorld.submit(new Pulse(1) {
@Override
public boolean pulse() {
aip.follow(l);
return true;
}
});
if (message != null) {
aip.sendChat("The Dark Army marches again!");
}
last = aip;
}
return true;
case "pvplegion":
size = args.length < 2 ? 10 : Integer.parseInt(args[1]);
last = player;
if (PVPAIPActions.pvp_players == null) {
player.setAttribute("aip_legion", PVPAIPActions.pvp_players = new ArrayList<>());
}
for (int i = 0; i < size; i++) {
String aipName = PVPAIPBuilderUtils.names[i];
final AIPlayer aip = AIPBuilder.create(aipName, generateLocation(player));
aip.setControler(player);
aip.getAppearance().setGender(RandomFunction.random(3) == 1 ? Gender.FEMALE : Gender.MALE);
Repository.getPlayers().add(aip);
aip.init();
PVPAIPBuilderUtils.generateClass(aip);
/*
Start regular bots
*/
case "manthiev":
new GeneralBotCreator("Bot", player.getLocation(), new ManThiever());
break;
if (PVPAIPActions.pvp_players.isEmpty()) {
aip.setAttribute("aip_legion", PVPAIPActions.pvp_players);
}
PVPAIPActions.pvp_players.add(aip);
last = aip;
}
return true;
case "resourcelegion":
size = args.length < 2 ? 10 : Integer.parseInt(args[1]);
last = player;
if (ResourceAIPActions.resource_players == null) {
player.setAttribute("aip_legion", ResourceAIPActions.resource_players = new ArrayList<>());
}
for (int i = 0; i < size; i++) {
String aipName = PVPAIPBuilderUtils.names[i];
final AIPlayer aip = AIPBuilder.create(aipName, generateLocation(player));
aip.setControler(player);
aip.getAppearance().setGender(RandomFunction.random(3) == 1 ? Gender.FEMALE : Gender.MALE);
Repository.getPlayers().add(aip);
aip.init();
PVPAIPBuilderUtils.generateClass(aip);
if (ResourceAIPActions.resource_players .isEmpty()) {
aip.setAttribute("aip_legion", ResourceAIPActions.resource_players );
}
ResourceAIPActions.resource_players.add(aip);
last = aip;
}
return true;
case "syncresource":
ResourceAIPActions.syncBotThread(player);
break;
case "pvpfight":
PVPAIPActions.syncBotThread(player);
return true;
/*
Start regular bots
*/
case "manthiev":
new GeneralBotCreator("Bot", player.getLocation(), new ManThiever());
break;
}
return false;
}
private Location generateLocation(Player player) {
Location random_location = player.getLocation().transform(RandomFunction.random(-15, 15), RandomFunction.random(-15, 15), 0);
if (!RegionManager.isTeleportPermitted(random_location)) {
return generateLocation(player);
}
if (!Pathfinder.find(player, random_location, false, Pathfinder.DUMB).isSuccessful()) {
return generateLocation(player);
}
if (RegionManager.getObject(random_location) != null) {
return generateLocation(player);
}
return random_location;
}
}
return false;
}
private Location generateLocation(Player player) {
Location random_location = player.getLocation().transform(RandomFunction.random(-15, 15), RandomFunction.random(-15, 15), 0);
if (!RegionManager.isTeleportPermitted(random_location)) {
return generateLocation(player);
}
if (!Pathfinder.find(player, random_location, false, Pathfinder.DUMB).isSuccessful()) {
return generateLocation(player);
}
if (RegionManager.getObject(random_location) != null) {
return generateLocation(player);
}
return random_location;
}
}