Code:
Building Morytania - please wait...
---------------------------------------
src\net\runefusion\player\FightingManager.java:83: ';' expected
public boolean npcDid public void attack(int id) {
^
src\net\runefusion\player\FightingManager.java:121: invalid method declaration;
return type required
}Defend(NPC npc, NPCList list) {
^
src\net\runefusion\player\FightingManager.java:207: illegal start of type
if(variables.get("isFightingPlayer") == Boolean.TRUE); {
^
src\net\runefusion\player\FightingManager.java:207: <identifier> expected
if(variables.get("isFightingPlayer") == Boolean.TRUE); {
^
src\net\runefusion\player\FightingManager.java:207: ';' expected
if(variables.get("isFightingPlayer") == Boolean.TRUE); {
^
src\net\runefusion\player\FightingManager.java:207: illegal start of type
if(variables.get("isFightingPlayer") == Boolean.TRUE); {
^
src\net\runefusion\player\FightingManager.java:207: <identifier> expected
if(variables.get("isFightingPlayer") == Boolean.TRUE); {
^
src\net\runefusion\player\FightingManager.java:207: ';' expected
if(variables.get("isFightingPlayer") == Boolean.TRUE); {
^
src\net\runefusion\player\FightingManager.java:207: illegal start of type
if(variables.get("isFightingPlayer") == Boolean.TRUE); {
^
src\net\runefusion\player\FightingManager.java:207: ';' expected
if(variables.get("isFightingPlayer") == Boolean.TRUE); {
^
10 errors
---------------------------------------
Build complete.
Press any key to continue . . .
My FightingManager.java looks like this:
Code:
package net.runefusion.player;
import java.util.Hashtable;
import java.util.Map;
import net.runefusion.event.Event;
import net.runefusion.event.EventContainer;
import net.runefusion.event.TerminatingEvent;
import net.runefusion.npc.NPC;
import net.runefusion.npc.NPCList;
import net.runefusion.server.Server;
/**
* Manages everything to do with fighting.
* @author Graham
*
*/
public class FightingManager {
private Map<String,Object> variables = new Hashtable<String,Object>();
private Player player;
/**
* Time between hits.
*/
private static final int TIMING = 2000;
/**
* Used to randomize timing a little.
*/
private static final int TIMING_FACTOR = 1000;
/**
* Combat experience rate.
*/
public static final int COMBAT_EXP_RATE = 5;
public FightingManager(Player player) {
this.player = player;
}
public void attackNPC(int id) {
if(!(id > 0 && id < Server.npcHandler.npcs.size())) return;
if(Server.npcHandler.getNPCFromID(id) == null) return;
if(Server.npcHandler.getNPCFromID(id).hp == 0) {
player.sendMessage("You can't attack that!");
return;
}
NPC npc = Server.npcHandler.getNPCFromID(id);
if(!player.withinInteractionDistance(npc)) {
player.sendMessage("You are too far away to attack!");
return;
}
if(player.isBusy() == false) {
player.setBusy(true);
} else {
player.sendMessage("You are already under attack.");
return;
}
variables.put("isFighting", Boolean.TRUE);
variables.put("isFightingNPC", Boolean.TRUE);
variables.put("npcID", id);
variables.put("isMyTurn", Boolean.TRUE);
if(npc.attacking == null) {
npc.attacking = player;
npc.turnTo(player.playerId);
}
npc.attackers.add(player);
Server.eventManager.addEvent(new TerminatingEvent() {
public void run(EventContainer c) {
if(!attackTick()) {
c.disable();
} else {
c.setDelay((int) (TIMING+Math.random()*TIMING_FACTOR));
}
}
public void terminate(EventContainer c) {
reset();
}
}, TIMING);
}
public boolean npcDid public void attack(int id) {
if(!(id > 0 && id < PlayerHandler.playerTable.size() + 1)) return;
if(PlayerHandler.getPlayerFromID(id) == null) return;
if(PlayerHandler.playerTable.get(id).playerLevel[PlayerConstants.SKILL_HITPOINTS] == 0) {
player.sendMessage("They have 0 hp already");
return;
}
Entity plr = PlayerHandler.getPlayerFromID(id);
if(!player.withinPlayerInteractionDistance(plr)) {
player.sendMessage("That player is too far away to attack");
return;
}
if(player.nonWild() || plr.nonWild()) {
player.sendMessage("Both players need to be in the wilderness to attack.");
return;
}
if(player.isBusy() == false) {
player.setBusy(true);
} else {
player.sendMessage("You are already under attack.");
return;
}
variables.put("isFighting", Boolean.TRUE);
variables.put("isFightingPlayer", Boolean.TRUE);
variables.put("playerID", id);
variables.put("isMyTurn", Boolean.TRUE);
Server.eventManager.addEvent(new TerminatingEvent() {
public void run(EventContainer c) {
if(!attackTick()) {
c.disable();
} else {
c.setDelay((int) (TIMING+Math.random()*TIMING_FACTOR));
}
}
public void terminate(EventContainer c) {
reset();
}
}, TIMING);
}Defend(NPC npc, NPCList list) {
if(list.npcCombat > player.playerLevel[PlayerConstants.SKILL_ATTACK]) {
if(Server.random.nextInt(list.npcCombat) > player.playerLevel[PlayerConstants.SKILL_ATTACK]) {
return false;
}
} else if(list.npcCombat == player.playerLevel[PlayerConstants.SKILL_ATTACK]) {
return Server.random.nextBoolean();
} else {
int levelDiff = list.npcCombat - player.playerLevel[PlayerConstants.SKILL_ATTACK];
if(Server.random.nextInt(100) < levelDiff) return false;
}
return true;
}
public boolean playerDidDefend(NPC npc, NPCList list) {
if(list.npcCombat > player.playerLevel[PlayerConstants.SKILL_ATTACK]) {
if(Server.random.nextInt(list.npcCombat) > player.playerLevel[PlayerConstants.SKILL_ATTACK]) {
return true;
}
} else if(list.npcCombat == player.playerLevel[PlayerConstants.SKILL_ATTACK]) {
return Server.random.nextBoolean();
} else {
int levelDiff = list.npcCombat - player.playerLevel[PlayerConstants.SKILL_ATTACK];
if(Server.random.nextInt(100) < levelDiff) return true;
}
return false;
}
public void attack(int id) {
if(!(id > 0 && id < PlayerHandler.playerTable.size() + 1)) return;
if(PlayerHandler.getPlayerFromID(id) == null) return;
if(PlayerHandler.playerTable.get(id).playerLevel[PlayerConstants.SKILL_HITPOINTS] == 0) {
player.sendMessage("They have 0 hp already");
return;
}
Entity plr = PlayerHandler.getPlayerFromID(id);
if(!player.withinPlayerInteractionDistance(plr)) {
player.sendMessage("That player is too far away to attack");
return;
}
if(player.nonWild() || plr.nonWild()) {
player.sendMessage("Both players need to be in the wilderness to attack.");
return;
}
if(player.isBusy() == false) {
player.setBusy(true);
} else {
player.sendMessage("You are already under attack.");
return;
}
variables.put("isFighting", Boolean.TRUE);
variables.put("isFightingPlayer", Boolean.TRUE);
variables.put("playerID", id);
variables.put("isMyTurn", Boolean.TRUE);
Server.eventManager.addEvent(new TerminatingEvent() {
public void run(EventContainer c) {
if(!attackTick()) {
c.disable();
} else {
c.setDelay((int) (TIMING+Math.random()*TIMING_FACTOR));
}
}
public void terminate(EventContainer c) {
reset();
}
}, TIMING);
}
public void dead() {
reset();
player.pEmote = 0x900;
player.updateRequired = true;
player.appearanceUpdateRequired = true;
player.sendMessage("Oh dear, you are dead!");
Server.eventManager.addEvent(new Event() {
public void run(EventContainer c) {
player.teleportToX = PlayerConstants.SPAWN_X;
player.teleportToY = PlayerConstants.SPAWN_Y;
player.resetAnimation();
player.playerLevel[PlayerConstants.SKILL_HITPOINTS] = player.getLevelForXP(player.playerXP[PlayerConstants.SKILL_HITPOINTS]);
player.setSkillLevel(PlayerConstants.SKILL_HITPOINTS, player.playerLevel[PlayerConstants.SKILL_HITPOINTS], player.playerXP[PlayerConstants.SKILL_HITPOINTS]);
player.updateRequired = true;
player.appearanceUpdateRequired = true;
c.disable();
}
}, 2000);
}
if(variables.get("isFightingPlayer") == Boolean.TRUE); {
player.animationRequest = -1;
player.resetAnimation();
player.updateRequired = true;
}
public boolean playerDidDefendPlayer(Entity plr) {
if(plr.cmbLevel > player.playerLevel[PlayerConstants.SKILL_ATTACK]) {
if(Server.random.nextInt(plr.cmbLevel) > player.playerLevel[PlayerConstants.SKILL_ATTACK]) {
return true;
}
} else if(plr.cmbLevel == player.playerLevel[PlayerConstants.SKILL_ATTACK]) {
return Server.random.nextBoolean();
} else {
int levelDiff = plr.cmbLevel = player.playerLevel[PlayerConstants.SKILL_ATTACK];
if(Server.random.nextInt(100) < levelDiff) return true;
}
return false;
}
public boolean attackTick() {
if(player.isDead) {
return false;
}
if(variables.get("isFighting") == Boolean.TRUE && variables.get("isFightingNPC") == Boolean.TRUE) {
int id = (Integer) variables.get("npcID");
if(!(id > 0 && id < Server.npcHandler.npcs.size())) return false;
if(Server.npcHandler.getNPCFromID(id) == null) return false;
if(Server.npcHandler.getNPCFromID(id).hp == 0) return false;
NPC npc = Server.npcHandler.getNPCFromID(id);
if(!player.withinInteractionDistance(npc)) {
player.sendMessage("You are too far away to attack!");
return false;
}
NPCList list = Server.npcHandler.getNPCListFromID(npc.npcType);
player.turnTo(npc.absX, npc.absY);
if(variables.get("isMyTurn") == Boolean.TRUE) {
if(Math.random() > 0.2) {
variables.put("isMyTurn",Boolean.FALSE);
}
if (Animations.getAttackAnimation(player) > -1) {
player.playerSEA = Animations.getAttackAnimation(player);
}
player.animationRequest = player.playerSEA;
npc.animNumber = 404;
if(npcDidDefend(npc,list)) {
int hit = (int) (Math.random() * player.getMaximumHit()) + 1;
npc.hit(hit);
if(player.fightType != 3) {
double totalExp = (double)(4*hit);
totalExp = (double)(totalExp*COMBAT_EXP_RATE);
player.addSkillXP((int)(totalExp),player.fightSkillID);
} else {
double totalExp = (double)(1.33*hit);
totalExp = (double)(totalExp*COMBAT_EXP_RATE);
player.addSkillXP((int)(totalExp),PlayerConstants.SKILL_ATTACK);
player.addSkillXP((int)(totalExp),PlayerConstants.SKILL_DEFENCE);
player.addSkillXP((int)(totalExp),PlayerConstants.SKILL_STRENGTH);
}
player.addSkillXP((int)(hit*2*COMBAT_EXP_RATE),PlayerConstants.SKILL_HITPOINTS);
} else {
npc.hit(0);
}
} else {
if(Math.random() > 0.2) {
variables.put("isMyTurn",Boolean.TRUE);
}
if(npc.isDead) {
return false;
}
if(npc.attacking == player) {
player.animationRequest = Animations.getDefenseAnimation(player);
npc.animNumber = 422;//player.playerSEA;
if(playerDidDefend(npc,list)) {
player.hitDiff = (int) (Math.random() * npc.getMaximumHit()) + 1;
player.hitUpdateRequired = true;
} else {
player.hitDiff = 0;
player.hitUpdateRequired = true;
}
}
}
player.updateRequired = true;
//player.appearanceUpdateRequired = true;
npc.updateRequired = true;
npc.animUpdateRequired = true;
} else if(variables.get("isFighting") == Boolean.TRUE && variables.get("isFightingPlayer") == Boolean.TRUE) {
} else {
return false;
}
return true;
}
public void process() {
if(player.isDead) {
dead();
player.isDead = false;
}
}
public void reset() {
if(variables.get("isFighting") != null) {
player.setBusy(false);
}
if(variables.get("isFightingNPC") == Boolean.TRUE) {
player.animationRequest = -1;
player.resetAnimation();
player.updateRequired = true;
//player.appearanceUpdateRequired = true;
int id = (Integer) variables.get("npcID");
NPC npc = Server.npcHandler.getNPCFromID(id);
npc.attackers.remove(player);
npc.turnTo(0);
if(npc.attacking == player) {
npc.previousAttacking = npc.attacking;
if(npc.attackers.size() >= 1 && !npc.isDead) {
npc.attacking = npc.attackers.iterator().next();
} else {
npc.attacking = null;
}
}
}
// clear all fighting related variables
variables.clear();
}
public void destruct() {
reset();
}
}