I've been fixing almost all the major bugs in duel, including 2nd screen, prayer, and what not.
I've come accross one - Then a player, drinks an overload, preferably before a box, the overload effects, not skill levels, will carry over.
Heres the void to reset overload, and the statement that will call it.
Code:
public static void resetOverLoadEffect(Player player) {
if (!player.isDead()) {
int actualLevel = player.getSkills().getLevel(Skills.ATTACK);
int realLevel = player.getSkills().getLevelForXp(Skills.ATTACK);
if (actualLevel > realLevel)
player.getSkills().set(Skills.ATTACK, realLevel);
actualLevel = player.getSkills().getLevel(Skills.STRENGTH);
realLevel = player.getSkills().getLevelForXp(Skills.STRENGTH);
if (actualLevel > realLevel)
player.getSkills().set(Skills.STRENGTH, realLevel);
actualLevel = player.getSkills().getLevel(Skills.DEFENCE);
realLevel = player.getSkills().getLevelForXp(Skills.DEFENCE);
if (actualLevel > realLevel)
player.getSkills().set(Skills.DEFENCE, realLevel);
actualLevel = player.getSkills().getLevel(Skills.MAGIC);
realLevel = player.getSkills().getLevelForXp(Skills.MAGIC);
if (actualLevel > realLevel)
player.getSkills().set(Skills.MAGIC, realLevel);
actualLevel = player.getSkills().getLevel(Skills.RANGE);
realLevel = player.getSkills().getLevelForXp(Skills.RANGE);
if (actualLevel > realLevel)
player.getSkills().set(Skills.RANGE, realLevel);
player.heal(500);
}
player.setOverloadDelay(0);
player.getPackets().sendGameMessage(
"The effects of overload have worn off.");
}
return true;
And the statement that calls it:
Pots.resetOverLoadEffect(this);
(Got from player.java)
I have imported com.rs.game.player.content.Pots; and com.rs.game.player.Player; to the Duelarena.java controller.
When i apply it to the start of the duel here,
@Override
public void start() {
player.stopAll();
player.addStopDelay(2); // fixes mass click steps
player.getTemporaryAttributtes().put("startedDuel" , true);
player.getTemporaryAttributtes().put("canFight", false);
player.reset();
player.setCanPvp(true);
Pots.resetOverLoadEffect(this);
player.getHintIconsManager().addHintIcon(
player.getDuelConfigurations().getOther(player), 1, -1, false);
WorldTasksManager.schedule(new WorldTask() {
int count = 3;
@Override
public void run() {
if (count > 0)
player.setNextForceTalk(new ForceTalk("" + count));
if (count == 0) {
player.getTemporaryAttributtes().put("canFight", true);
player.setNextForceTalk(new ForceTalk("FIGHT!"));
this.stop();
}
count--;
}
}, 0, 2);
}
I get this errror
src/com/rs/player/controlers/Duelarena.java:30: error: method resetOverLoadEffect in class Pots cannot be applied to the given types:
Pots.resetOverLoadEffect(this);
......^
required: Player
found: Duelarena
reason: actualy argument Duelarene cannot be converted to Player by method invo
1 error
Compiled All Sycessfully
press any key to continue...