Fixes run energy, aggressiveness, and highscores (#137)

* Update ShopAssistant.java

Adds ability to sell tokkul items back to shop for tokkul

* Fixes npc aggressiveness closes #132

* Fixes highscores for admin + ingame. Closes #131

* Caps run energy at 100%. Closes #135
This commit is contained in:
Mr Extremez
2019-11-06 09:55:08 -06:00
committed by Daniel Ginovker
parent a176bfa9cb
commit ff75851cad
5 changed files with 84 additions and 85 deletions
@@ -4,7 +4,6 @@ import java.io.BufferedReader;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import redone.Constants; import redone.Constants;
import redone.Server; import redone.Server;
import redone.game.content.combat.npcs.NpcAggressive; import redone.game.content.combat.npcs.NpcAggressive;
@@ -418,20 +417,16 @@ public class NpcHandler {
* Attacking player * Attacking player
**/ **/
if (NpcAggressive.isAggressive(i) && !npcs[i].underAttack && !npcs[i].isDead && !switchesAttackers(i)) { Client client = (Client) PlayerHandler.players[NpcData.getCloseRandomPlayer(i)];
Client client = (Client) PlayerHandler.players[NpcData.getCloseRandomPlayer(i)]; if (client != null) {
if (client != null && getNpcListCombat(npcs[i].npcType) * 2 > client.combatLevel || npcs[i].npcType == 1265 || npcs[i].npcType == 1267 || npcs[i].npcType == 96 || npcs[i].npcType == 97 || npcs[i].npcType == 141) { boolean aggressive = NpcAggressive.isAggressive(i) || getNpcListCombat(npcs[i].npcType) * 2 > client.combatLevel;
if (aggressive && !npcs[i].underAttack && !npcs[i].isDead && !switchesAttackers(i)) {
npcs[i].killerId = NpcData.getCloseRandomPlayer(i); npcs[i].killerId = NpcData.getCloseRandomPlayer(i);
} } else if (aggressive && !npcs[i].underAttack && !npcs[i].isDead && switchesAttackers(i)) {
} else if (NpcAggressive.isAggressive(i) && !npcs[i].underAttack && !npcs[i].isDead && switchesAttackers(i)) {
Client c = (Client) PlayerHandler.players[NpcData.getCloseRandomPlayer(i)];
if (c != null && getNpcListCombat(npcs[i].npcType) * 2 > c.combatLevel) {
npcs[i].killerId = NpcData.getCloseRandomPlayer(i); npcs[i].killerId = NpcData.getCloseRandomPlayer(i);
} }
} }
/*
* Attacking player
*/
if (System.currentTimeMillis() - npcs[i].lastDamageTaken > 5000) { if (System.currentTimeMillis() - npcs[i].lastDamageTaken > 5000) {
npcs[i].underAttackBy = 0; npcs[i].underAttackBy = 0;
@@ -934,7 +934,7 @@ public class Client extends Player {
@Override @Override
public void process() { public void process() {
if (playerEnergy < 100&& System.currentTimeMillis() - lastIncrease >= getPlayerAssistant().raiseTimer()) { if (playerEnergy < 100 && System.currentTimeMillis() - lastIncrease >= getPlayerAssistant().raiseTimer()) {
playerEnergy += 1; playerEnergy += 1;
lastIncrease = System.currentTimeMillis(); lastIncrease = System.currentTimeMillis();
} }
@@ -1,62 +1,62 @@
package redone.game.players; package redone.game.players;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import static redone.game.players.PlayerSave.loadPlayerInfo; import static redone.game.players.PlayerSave.loadPlayerInfo;
public class HighscoresHandler { public class HighscoresHandler {
public ArrayList<Client> players = new ArrayList<>(); public ArrayList<Client> players = new ArrayList<>();
public HighscoresHandler() { public HighscoresHandler() {
File dir = new File("./data/characters"); File dir = new File("./data/characters");
File[] directoryListing = dir.listFiles(); File[] directoryListing = dir.listFiles();
for (File child : directoryListing) { for (File child : directoryListing) {
Client player = new Client(null, -1); Client player = new Client(null, -1);
player.playerName = child.getName().split("\\.")[0]; player.playerName = child.getName().split("\\.")[0];
loadPlayerInfo(player, child.getName().split("\\.")[0], "", false); loadPlayerInfo(player, child.getName().split("\\.")[0], "", false);
players.add(player); players.add(player);
} }
} }
public String getRank(int i, String sortBy) { public String getRank(Client player, int i, String sortBy) {
if (players.size() <= i) if (players.size() <= i || player.playerRights >= 2) {
return "Nobody"; return "Nobody";
}
switch (sortBy)
{ switch (sortBy) {
case "level": case "level":
players.sort(new totalLevelComparator()); players.sort(new totalLevelComparator());
return players.get(i).playerName + ": " + players.get(i).getPlayerAssistant().getTotalLevel(); return players.get(i).playerName + ": " + players.get(i).getPlayerAssistant().getTotalLevel();
case "gold": case "gold":
players.sort(new totalGoldComparator()); players.sort(new totalGoldComparator());
return players.get(i).playerName + ": " + players.get(i).getPlayerAssistant().totalGold() + "gp"; return players.get(i).playerName + ": " + players.get(i).getPlayerAssistant().totalGold() + "gp";
default: default:
players.sort(new globalDmgComparator()); players.sort(new globalDmgComparator());
return players.get(i).playerName + ": " + players.get(i).globalDamageDealt; return players.get(i).playerName + ": " + players.get(i).globalDamageDealt;
} }
} }
private class totalLevelComparator implements Comparator<Client> { private class totalLevelComparator implements Comparator<Client> {
@Override @Override
public int compare(Client client, Client t1) { public int compare(Client client, Client t1) {
return - client.getPlayerAssistant().getTotalLevel() + t1.getPlayerAssistant().getTotalLevel(); return - client.getPlayerAssistant().getTotalLevel() + t1.getPlayerAssistant().getTotalLevel();
} }
} }
private class totalGoldComparator implements Comparator<Client> { private class totalGoldComparator implements Comparator<Client> {
@Override @Override
public int compare(Client client, Client t1) { public int compare(Client client, Client t1) {
return - client.getPlayerAssistant().totalGold() + t1.getPlayerAssistant().totalGold(); return - client.getPlayerAssistant().totalGold() + t1.getPlayerAssistant().totalGold();
} }
} }
private class globalDmgComparator implements Comparator<Client> { private class globalDmgComparator implements Comparator<Client> {
@Override @Override
public int compare(Client client, Client t1) { public int compare(Client client, Client t1) {
return - client.globalDamageDealt + t1.globalDamageDealt; return - client.globalDamageDealt + t1.globalDamageDealt;
} }
} }
} }
@@ -430,10 +430,14 @@ public class PlayerAssistant {
} }
public void writeEnergy() { public void writeEnergy() {
if (player.playerEnergy > 0) { if (player.playerEnergy >= 100) {
sendFrame126((int) Math.ceil(player.playerEnergy) + "%", 149); sendFrame126("100%", 149);
} else { } else {
sendFrame126("0%", 149); if (player.playerEnergy > 0 && player.playerEnergy < 100) {
sendFrame126((int) Math.ceil(player.playerEnergy) + "%", 149);
} else if (player.playerEnergy <= 0) {
sendFrame126("0%", 149);
}
} }
} }
@@ -166,13 +166,13 @@ public class Commands implements PacketType {
"@dre@Highscores", "@dre@Highscores",
"", "",
"Top 5 Total Level:", "Top 5 Total Level:",
hs.getRank(0, "level"), hs.getRank(1, "level"), hs.getRank(2, "level"), hs.getRank(3, "level"), hs.getRank(4, "level"), hs.getRank(player, 0, "level"), hs.getRank(player,1, "level"), hs.getRank(player,2, "level"), hs.getRank(player,3, "level"), hs.getRank(player,4, "level"),
"", "",
"Top 5 Wealthiest Players:", "Top 5 Wealthiest Players:",
hs.getRank(0, "gold"), hs.getRank(1, "gold"), hs.getRank(2, "gold"), hs.getRank(3, "gold"), hs.getRank(4, "gold"), hs.getRank(player,0, "gold"), hs.getRank(player,1, "gold"), hs.getRank(player,2, "gold"), hs.getRank(player,3, "gold"), hs.getRank(player, 4, "gold"),
"", "",
"Top 5 Highest Total Damage:", "Top 5 Highest Total Damage:",
hs.getRank(0, "damage"), hs.getRank(1, "damage"), hs.getRank(2, "damage"), hs.getRank(3, "damage"), hs.getRank(4, "damage"), hs.getRank(player,0, "damage"), hs.getRank(player,1, "damage"), hs.getRank(player,2, "damage"), hs.getRank(player, 3, "damage"), hs.getRank(player, 4, "damage"),
}; };
for (int i = 8144; i < 8245; i++) { for (int i = 8144; i < 8245; i++) {
@@ -470,7 +470,7 @@ public class Commands implements PacketType {
player.playerLevel[skill] = player.getPlayerAssistant().getLevelForXP(player.playerXP[skill]); player.playerLevel[skill] = player.getPlayerAssistant().getLevelForXP(player.playerXP[skill]);
player.getPlayerAssistant().refreshSkill(skill); player.getPlayerAssistant().refreshSkill(skill);
player.getPlayerAssistant().levelUp(skill); player.getPlayerAssistant().levelUp(skill);
} catch (Exception ಠ_ಠ) {} } catch (Exception e) {}
break; break;
case "spellbook": case "spellbook":
if (player.inWild()) { if (player.inWild()) {
@@ -506,7 +506,7 @@ public class Commands implements PacketType {
} else { } else {
player.getActionSender().sendMessage("No such item."); player.getActionSender().sendMessage("No such item.");
} }
} catch (Exception ಠ_ಠ) {} } catch (Exception e) {}
break; break;
case "master": case "master":
for (int i = 0; i < 25; i++) { for (int i = 0; i < 25; i++) {
@@ -626,7 +626,7 @@ public class Commands implements PacketType {
} else { } else {
player.getActionSender().sendMessage("Npc " + newNPC + " does not exist."); player.getActionSender().sendMessage("Npc " + newNPC + " does not exist.");
} }
} catch (Exception ಠ_ಠ) {} } catch (Exception e) {}
break; break;
case "cantattack": case "cantattack":
player.npcCanAttack = !player.npcCanAttack; player.npcCanAttack = !player.npcCanAttack;
@@ -685,7 +685,7 @@ public class Commands implements PacketType {
PlayerHandler.updateAnnounced = false; PlayerHandler.updateAnnounced = false;
PlayerHandler.updateRunning = true; PlayerHandler.updateRunning = true;
PlayerHandler.updateStartTime = System.currentTimeMillis(); PlayerHandler.updateStartTime = System.currentTimeMillis();
} catch (Exception ಠ_ಠ) {} } catch (Exception e) {}
break; break;
} }
} }