Add game tips and remove medals from initial release
This commit is contained in:
parent
a47c4291c5
commit
0b7789328a
@ -6,7 +6,6 @@ import java.util.HashMap;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.WeakHashMap;
|
import java.util.WeakHashMap;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -89,9 +88,6 @@ import nautilus.game.arcade.game.games.castlesiege.data.KillStreakData;
|
|||||||
import nautilus.game.arcade.game.games.castlesiege.data.ObjectiveTNTSpawner;
|
import nautilus.game.arcade.game.games.castlesiege.data.ObjectiveTNTSpawner;
|
||||||
import nautilus.game.arcade.game.games.castlesiege.data.TeamBeacon;
|
import nautilus.game.arcade.game.games.castlesiege.data.TeamBeacon;
|
||||||
import nautilus.game.arcade.game.games.castlesiege.data.TeamKing;
|
import nautilus.game.arcade.game.games.castlesiege.data.TeamKing;
|
||||||
import nautilus.game.arcade.game.games.castlesiege.data.medals.MedalData;
|
|
||||||
import nautilus.game.arcade.game.games.castlesiege.data.medals.MedalData.MedalLevel;
|
|
||||||
import nautilus.game.arcade.game.games.castlesiege.data.medals.MedalType;
|
|
||||||
import nautilus.game.arcade.game.games.castlesiege.shockkits.KitArcher;
|
import nautilus.game.arcade.game.games.castlesiege.shockkits.KitArcher;
|
||||||
import nautilus.game.arcade.game.games.castlesiege.shockkits.KitDemolitionist;
|
import nautilus.game.arcade.game.games.castlesiege.shockkits.KitDemolitionist;
|
||||||
import nautilus.game.arcade.game.games.castlesiege.shockkits.KitFighter;
|
import nautilus.game.arcade.game.games.castlesiege.shockkits.KitFighter;
|
||||||
@ -112,7 +108,6 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
private ItemBuilder _wearableTnt;
|
private ItemBuilder _wearableTnt;
|
||||||
|
|
||||||
private Map<Player, KillStreakData> _streakData = new WeakHashMap<>();
|
private Map<Player, KillStreakData> _streakData = new WeakHashMap<>();
|
||||||
private Map<Player, MedalData> _medalData = new WeakHashMap<>();
|
|
||||||
private Map<GameTeam, List<TeamBeacon>> _beacons = new HashMap<>();
|
private Map<GameTeam, List<TeamBeacon>> _beacons = new HashMap<>();
|
||||||
private Map<GameTeam, TeamKing> _kings = new HashMap<>();
|
private Map<GameTeam, TeamKing> _kings = new HashMap<>();
|
||||||
private List<Player> _tntCarry = new ArrayList<>();
|
private List<Player> _tntCarry = new ArrayList<>();
|
||||||
@ -127,7 +122,6 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
private ChestLoot _rodsAndGaps = new ChestLoot(true);
|
private ChestLoot _rodsAndGaps = new ChestLoot(true);
|
||||||
private ChestLoot _potionGearCommon = new ChestLoot(true);
|
private ChestLoot _potionGearCommon = new ChestLoot(true);
|
||||||
private ChestLoot _potionGearRare = new ChestLoot(true);
|
private ChestLoot _potionGearRare = new ChestLoot(true);
|
||||||
//private ChestLoot _blockGear = new ChestLoot();
|
|
||||||
private ChestLoot _enchantGearCommon = new ChestLoot(true);
|
private ChestLoot _enchantGearCommon = new ChestLoot(true);
|
||||||
private ChestLoot _enchantGearRare = new ChestLoot(true);
|
private ChestLoot _enchantGearRare = new ChestLoot(true);
|
||||||
private ChestLoot _miscGear = new ChestLoot();
|
private ChestLoot _miscGear = new ChestLoot();
|
||||||
@ -153,6 +147,14 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
},
|
},
|
||||||
new String[] {"AlexTheCoder is awesome!"});
|
new String[] {"AlexTheCoder is awesome!"});
|
||||||
|
|
||||||
|
_help = new String[]
|
||||||
|
{
|
||||||
|
"Use the TNT spawning platforms to run TNT to the enemy beacons to destroy them!",
|
||||||
|
"The enemy king is invulnerable until you destroy the two sentry beacons on each sentry tower",
|
||||||
|
"Go on Kill Streaks to earn Kill Streak Rewards to obtain better armor & weapons!",
|
||||||
|
"Chests refill every 2 minutes with potions, golden applegates, fishing rods, and other useful PvP items!"
|
||||||
|
};
|
||||||
|
|
||||||
this.StrictAntiHack = true;
|
this.StrictAntiHack = true;
|
||||||
this.HungerSet = 20;
|
this.HungerSet = 20;
|
||||||
this.DeathOut = false;
|
this.DeathOut = false;
|
||||||
@ -183,60 +185,6 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
generateLoot();
|
generateLoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Player[] getMedalOwners(MedalType type)
|
|
||||||
{
|
|
||||||
Player gold = null;
|
|
||||||
Double goldScore = 0D;
|
|
||||||
Player silver = null;
|
|
||||||
Double silverScore = 0D;
|
|
||||||
Player bronze = null;
|
|
||||||
Double bronzeScore = 0D;
|
|
||||||
|
|
||||||
//GOLD
|
|
||||||
for (Entry<Player, MedalData> scores : _medalData.entrySet())
|
|
||||||
{
|
|
||||||
if (scores.getValue().getScore(type) > goldScore)
|
|
||||||
{
|
|
||||||
gold = scores.getKey();
|
|
||||||
goldScore = scores.getValue().getScore(type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//SILVER
|
|
||||||
for (Entry<Player, MedalData> scores : _medalData.entrySet())
|
|
||||||
{
|
|
||||||
if (gold != null && gold.getName().equals(scores.getKey().getName()))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (scores.getValue().getScore(type) > silverScore)
|
|
||||||
{
|
|
||||||
silver = scores.getKey();
|
|
||||||
silverScore = scores.getValue().getScore(type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//BRONZE
|
|
||||||
for (Entry<Player, MedalData> scores : _medalData.entrySet())
|
|
||||||
{
|
|
||||||
if (gold != null && gold.getName().equals(scores.getKey().getName()))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (silver != null && silver.getName().equals(scores.getKey().getName()))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (scores.getValue().getScore(type) > bronzeScore)
|
|
||||||
{
|
|
||||||
bronze = scores.getKey();
|
|
||||||
bronzeScore = scores.getValue().getScore(type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Player[] {gold, silver, bronze};
|
|
||||||
}
|
|
||||||
|
|
||||||
private void generateLoot()
|
private void generateLoot()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
@ -286,10 +234,6 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
_potionGearRare.addLoot(new ItemBuilder(Material.POTION).setData((short)8193).build(), 2);
|
_potionGearRare.addLoot(new ItemBuilder(Material.POTION).setData((short)8193).build(), 2);
|
||||||
_potionGearRare.addLoot(new ItemBuilder(Material.POTION).setData((short)8195).build(), 2);
|
_potionGearRare.addLoot(new ItemBuilder(Material.POTION).setData((short)8195).build(), 2);
|
||||||
}
|
}
|
||||||
/*{
|
|
||||||
_blockGear.addLoot(new ItemStack(Material.STONE, 64), 2);
|
|
||||||
_blockGear.addLoot(new ItemStack(Material.WOOD, 64), 2);
|
|
||||||
}*/
|
|
||||||
{
|
{
|
||||||
_enchantGearCommon.addLoot(new EnchantedBookBuilder(1).setLevel(Enchantment.PROTECTION_ENVIRONMENTAL, 1).build(), 2);
|
_enchantGearCommon.addLoot(new EnchantedBookBuilder(1).setLevel(Enchantment.PROTECTION_ENVIRONMENTAL, 1).build(), 2);
|
||||||
_enchantGearCommon.addLoot(new EnchantedBookBuilder(1).setLevel(Enchantment.DAMAGE_ALL, 1).build(), 2);
|
_enchantGearCommon.addLoot(new EnchantedBookBuilder(1).setLevel(Enchantment.DAMAGE_ALL, 1).build(), 2);
|
||||||
@ -301,7 +245,6 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
_miscGear.addLoot(new ItemStack(Material.ENDER_PEARL), 2);
|
_miscGear.addLoot(new ItemStack(Material.ENDER_PEARL), 2);
|
||||||
_miscGear.addLoot(new ItemBuilder(Material.TNT, 4).setTitle(F.item("Throwing TNT")).build(), 2);
|
|
||||||
_miscGear.addLoot(new ItemStack(Material.WATER_BUCKET), 2);
|
_miscGear.addLoot(new ItemStack(Material.WATER_BUCKET), 2);
|
||||||
_miscGear.addLoot(_flintAndSteel.build(), 2);
|
_miscGear.addLoot(_flintAndSteel.build(), 2);
|
||||||
_miscGear.addLoot(new ItemStack(Material.SNOW_BALL, 16), 3);
|
_miscGear.addLoot(new ItemStack(Material.SNOW_BALL, 16), 3);
|
||||||
@ -340,23 +283,7 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
if (chance <= 0.3)
|
if (chance <= 0.3)
|
||||||
{
|
{
|
||||||
loot = _rangedGear;
|
loot = _rangedGear;
|
||||||
}/*
|
|
||||||
if (chance <= 0.4)
|
|
||||||
{
|
|
||||||
loot = _weaponGearCommon;
|
|
||||||
if (subChance <= 0.4)
|
|
||||||
{
|
|
||||||
loot = _weaponGearRare;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (chance <= 0.3)
|
|
||||||
{
|
|
||||||
loot = _diamondGearCommon;
|
|
||||||
if (subChance <= 0.3)
|
|
||||||
{
|
|
||||||
loot = _diamondGearRare;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
chest.getBlockInventory().setItem(slot, loot.getLoot());
|
chest.getBlockInventory().setItem(slot, loot.getLoot());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -500,34 +427,6 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
TeamKing dead = _kings.values().stream().filter(k -> k.getOwner().GetColor() != king.getOwner().GetColor()).findFirst().get();
|
TeamKing dead = _kings.values().stream().filter(k -> k.getOwner().GetColor() != king.getOwner().GetColor()).findFirst().get();
|
||||||
AnnounceEnd(winner);
|
AnnounceEnd(winner);
|
||||||
writeFinalScoreboard(dead.getName(false), king.getName(false), dead.getOwner().GetColor() + "Quitters");
|
writeFinalScoreboard(dead.getName(false), king.getName(false), dead.getOwner().GetColor() + "Quitters");
|
||||||
boolean announcedMedalStart = false;
|
|
||||||
for (MedalType type : MedalType.values())
|
|
||||||
{
|
|
||||||
Player[] rewarding = getMedalOwners(type);
|
|
||||||
if (rewarding[0] != null)
|
|
||||||
{
|
|
||||||
if (!announcedMedalStart)
|
|
||||||
{
|
|
||||||
announcedMedalStart = true;
|
|
||||||
Bukkit.broadcastMessage(C.cGoldB + "-==Match Medal Recipients==-");
|
|
||||||
}
|
|
||||||
AddGems(rewarding[0], 50, MedalLevel.GOLD.getName() + " " + type.getName(), false, false);
|
|
||||||
AddStat(rewarding[0], "Medalist", 1, false, false);
|
|
||||||
Bukkit.broadcastMessage(MedalLevel.GOLD.getName() + " " + type.getName() + C.cGray + ": " + MedalLevel.GOLD.getColor() + rewarding[0].getName());
|
|
||||||
}
|
|
||||||
if (rewarding[1] != null)
|
|
||||||
{
|
|
||||||
AddGems(rewarding[1], 30, MedalLevel.SILVER.getName() + " " + type.getName(), false, false);
|
|
||||||
AddStat(rewarding[1], "Medalist", 1, false, false);
|
|
||||||
Bukkit.broadcastMessage(MedalLevel.SILVER.getName() + " " + type.getName() + C.cGray + ": " + MedalLevel.SILVER.getColor() + rewarding[1].getName());
|
|
||||||
}
|
|
||||||
if (rewarding[2] != null)
|
|
||||||
{
|
|
||||||
AddGems(rewarding[2], 20, MedalLevel.BRONZE.getName() + " " + type.getName(), false, false);
|
|
||||||
AddStat(rewarding[2], "Medalist", 1, false, false);
|
|
||||||
Bukkit.broadcastMessage(MedalLevel.BRONZE.getName() + " " + type.getName() + C.cGray + ": " + MedalLevel.BRONZE.getColor() + rewarding[2].getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (GameTeam team : GetTeamList())
|
for (GameTeam team : GetTeamList())
|
||||||
{
|
{
|
||||||
for (Player player : team.GetPlayers(true))
|
for (Player player : team.GetPlayers(true))
|
||||||
@ -603,34 +502,6 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
{
|
{
|
||||||
AnnounceEnd(blue);
|
AnnounceEnd(blue);
|
||||||
writeFinalScoreboard(redKing.getName(false), blueKing.getName(false), blue.GetColor() + redKing.getLastDamager());
|
writeFinalScoreboard(redKing.getName(false), blueKing.getName(false), blue.GetColor() + redKing.getLastDamager());
|
||||||
boolean announcedMedalStart = false;
|
|
||||||
for (MedalType type : MedalType.values())
|
|
||||||
{
|
|
||||||
Player[] rewarding = getMedalOwners(type);
|
|
||||||
if (rewarding[0] != null)
|
|
||||||
{
|
|
||||||
if (!announcedMedalStart)
|
|
||||||
{
|
|
||||||
announcedMedalStart = true;
|
|
||||||
Bukkit.broadcastMessage(C.cGoldB + "-==Match Medal Recipients==-");
|
|
||||||
}
|
|
||||||
AddGems(rewarding[0], 50, MedalLevel.GOLD.getName() + " " + type.getName(), false, false);
|
|
||||||
AddStat(rewarding[0], "Medalist", 1, false, false);
|
|
||||||
Bukkit.broadcastMessage(MedalLevel.GOLD.getName() + " " + type.getName() + C.cGray + ": " + MedalLevel.GOLD.getColor() + rewarding[0].getName());
|
|
||||||
}
|
|
||||||
if (rewarding[1] != null)
|
|
||||||
{
|
|
||||||
AddGems(rewarding[1], 30, MedalLevel.SILVER.getName() + " " + type.getName(), false, false);
|
|
||||||
AddStat(rewarding[1], "Medalist", 1, false, false);
|
|
||||||
Bukkit.broadcastMessage(MedalLevel.SILVER.getName() + " " + type.getName() + C.cGray + ": " + MedalLevel.SILVER.getColor() + rewarding[1].getName());
|
|
||||||
}
|
|
||||||
if (rewarding[2] != null)
|
|
||||||
{
|
|
||||||
AddGems(rewarding[2], 20, MedalLevel.BRONZE.getName() + " " + type.getName(), false, false);
|
|
||||||
AddStat(rewarding[2], "Medalist", 1, false, false);
|
|
||||||
Bukkit.broadcastMessage(MedalLevel.BRONZE.getName() + " " + type.getName() + C.cGray + ": " + MedalLevel.BRONZE.getColor() + rewarding[2].getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (GameTeam team : GetTeamList())
|
for (GameTeam team : GetTeamList())
|
||||||
{
|
{
|
||||||
for (Player player : team.GetPlayers(true))
|
for (Player player : team.GetPlayers(true))
|
||||||
@ -680,34 +551,6 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
{
|
{
|
||||||
AnnounceEnd(red);
|
AnnounceEnd(red);
|
||||||
writeFinalScoreboard(blueKing.getName(false), redKing.getName(false), red.GetColor() + blueKing.getLastDamager());
|
writeFinalScoreboard(blueKing.getName(false), redKing.getName(false), red.GetColor() + blueKing.getLastDamager());
|
||||||
boolean announcedMedalStart = false;
|
|
||||||
for (MedalType type : MedalType.values())
|
|
||||||
{
|
|
||||||
Player[] rewarding = getMedalOwners(type);
|
|
||||||
if (rewarding[0] != null)
|
|
||||||
{
|
|
||||||
if (!announcedMedalStart)
|
|
||||||
{
|
|
||||||
announcedMedalStart = true;
|
|
||||||
Bukkit.broadcastMessage(C.cGoldB + "-==Match Medal Recipients==-");
|
|
||||||
}
|
|
||||||
AddGems(rewarding[0], 50, MedalLevel.GOLD.getName() + " " + type.getName(), false, false);
|
|
||||||
AddStat(rewarding[0], "Medalist", 1, false, false);
|
|
||||||
Bukkit.broadcastMessage(MedalLevel.GOLD.getName() + " " + type.getName() + C.cGray + ": " + MedalLevel.GOLD.getColor() + rewarding[0].getName());
|
|
||||||
}
|
|
||||||
if (rewarding[1] != null)
|
|
||||||
{
|
|
||||||
AddGems(rewarding[1], 30, MedalLevel.SILVER.getName() + " " + type.getName(), false, false);
|
|
||||||
AddStat(rewarding[1], "Medalist", 1, false, false);
|
|
||||||
Bukkit.broadcastMessage(MedalLevel.SILVER.getName() + " " + type.getName() + C.cGray + ": " + MedalLevel.SILVER.getColor() + rewarding[1].getName());
|
|
||||||
}
|
|
||||||
if (rewarding[2] != null)
|
|
||||||
{
|
|
||||||
AddGems(rewarding[2], 20, MedalLevel.BRONZE.getName() + " " + type.getName(), false, false);
|
|
||||||
AddStat(rewarding[2], "Medalist", 1, false, false);
|
|
||||||
Bukkit.broadcastMessage(MedalLevel.BRONZE.getName() + " " + type.getName() + C.cGray + ": " + MedalLevel.BRONZE.getColor() + rewarding[2].getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (GameTeam team : GetTeamList())
|
for (GameTeam team : GetTeamList())
|
||||||
{
|
{
|
||||||
for (Player player : team.GetPlayers(true))
|
for (Player player : team.GetPlayers(true))
|
||||||
@ -957,16 +800,6 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
}
|
}
|
||||||
|
|
||||||
AddStat(player, GetKit(player).GetName() + "KitKills", 1, false, false);
|
AddStat(player, GetKit(player).GetName() + "KitKills", 1, false, false);
|
||||||
_medalData.computeIfAbsent(player, key -> new MedalData()).addScore(MedalType.ELIM, 1D);
|
|
||||||
|
|
||||||
for (TeamKing king : _kings.values())
|
|
||||||
{
|
|
||||||
if (UtilMath.offsetSquared(player.getLocation(), king.getLocation()) <= 25)
|
|
||||||
{
|
|
||||||
_medalData.computeIfAbsent(player, key -> new MedalData()).addScore(MedalType.OBJECTIVE_KILL, 1D);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (UtilPlayer.isSpectator(player))
|
if (UtilPlayer.isSpectator(player))
|
||||||
{
|
{
|
||||||
@ -1215,7 +1048,6 @@ public class ShockCastleSiege extends TeamGame
|
|||||||
TeamKing king = _kings.get(owner);
|
TeamKing king = _kings.get(owner);
|
||||||
if (king.handleDamage(p.getName(), e.getDamage()))
|
if (king.handleDamage(p.getName(), e.getDamage()))
|
||||||
{
|
{
|
||||||
_medalData.computeIfAbsent(p, key -> new MedalData()).addScore(MedalType.KING_DMG, e.getDamage());
|
|
||||||
for (Player alert : owner.GetPlayers(true))
|
for (Player alert : owner.GetPlayers(true))
|
||||||
{
|
{
|
||||||
if (Recharge.Instance.use(alert, "KingDamageAlert", 5000, false, false))
|
if (Recharge.Instance.use(alert, "KingDamageAlert", 5000, false, false))
|
||||||
|
@ -16,6 +16,7 @@ import mineplex.core.common.util.UtilTime;
|
|||||||
|
|
||||||
public class ObjectiveTNTSpawner
|
public class ObjectiveTNTSpawner
|
||||||
{
|
{
|
||||||
|
private static final long TNT_SPAWN_DELAY = 60000;
|
||||||
private List<Location> _locs;
|
private List<Location> _locs;
|
||||||
private Location _lastSpawnLoc;
|
private Location _lastSpawnLoc;
|
||||||
private Item _entity;
|
private Item _entity;
|
||||||
@ -41,7 +42,7 @@ public class ObjectiveTNTSpawner
|
|||||||
|
|
||||||
public long getNextTNT()
|
public long getNextTNT()
|
||||||
{
|
{
|
||||||
return (_lastPickedUp + 60000) - System.currentTimeMillis();
|
return (_lastPickedUp + TNT_SPAWN_DELAY) - System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void spawn()
|
public void spawn()
|
||||||
@ -64,7 +65,7 @@ public class ObjectiveTNTSpawner
|
|||||||
|
|
||||||
public void update()
|
public void update()
|
||||||
{
|
{
|
||||||
if (!isSpawned() && UtilTime.elapsed(_lastPickedUp, 60000))
|
if (!isSpawned() && UtilTime.elapsed(_lastPickedUp, TNT_SPAWN_DELAY))
|
||||||
{
|
{
|
||||||
spawn();
|
spawn();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user