I haven't figured out a few things. Walking up from the gate is glitchy, the stepping stones are a tad bit off and the cliff has a 1-2 second delay that gets annoying if your a player trying to concentrate trying to level up at the course and just trying to get laps done. Post a reply here if any of you can add or change things to make it better. And yes, most of it was copied from other agility files so it took me 10 minutes to change some stuff around.
Code:
package com.rs.game.player.content.agility;
import com.rs.game.Animation;
import com.rs.game.ForceMovement;
import com.rs.game.World;
import com.rs.game.WorldObject;
import com.rs.game.WorldTile;
import com.rs.game.player.Player;
import com.rs.game.player.Skills;
import com.rs.game.tasks.WorldTask;
import com.rs.game.tasks.WorldTasksManager;
public class WildernessAgility {
/*
* Author Bandoswhips
*/
public static void GateWalk(final Player player) {
if (player.getX() != 2998 || player.getY() != 3915) {
return;
}
final boolean running = player.getRun();
player.setRunHidden(false);
player.lock(8);
player.addWalkSteps(2998, 3931, -1, false);
player.getPackets().sendGameMessage("You walk carefully upwards to the Agility Arena");
WorldTasksManager.schedule(new WorldTask() {
boolean secondloop;
@Override
public void run() {
if (!secondloop) {
secondloop = true;
player.getAppearence().setRenderEmote(155);
} else {
player.getAppearence().setRenderEmote(-1);
player.setRunHidden(running);
stop();
}
}
}, 0, 6);
}
public static void enterObstaclePipe(final Player player, int objectX, int objectY) {
if(!Agility.hasLevel(player, 35))
return;
final boolean running = player.getRun();
player.setRunHidden(false);
player.lock(8);
player.addWalkSteps(objectX, objectY == 3938 ? 3950 : 3937, -1, false);
player.getPackets().sendGameMessage(
"You pulled yourself through the pipes.", true);
WorldTasksManager.schedule(new WorldTask() {
boolean secondloop;
@Override
public void run() {
if (!secondloop) {
secondloop = true;
player.getAppearence().setRenderEmote(295);
} else {
player.getAppearence().setRenderEmote(-1);
setWildernessStage(player, 0);
player.setRunHidden(running);
player.getSkills().addXp(Skills.AGILITY, 7);
stop();
}
}
}, 0, 6);
}
public static void swingOnRopeSwing(final Player player, WorldObject object) {
if(!Agility.hasLevel(player, 35))
return;
if(player.getY() != 3953) {
player.getPackets().sendGameMessage("You'll need to get closer to make this jump.");
return;
}
player.lock(4);
player.setNextAnimation(new Animation(751));
World.sendObjectAnimation(player, object, new Animation(497));
final WorldTile toTile = new WorldTile(object.getX(), 3958, object.getPlane());
player.setNextForceMovement(new ForceMovement(player, 1, toTile, 3, ForceMovement.NORTH));
player.getSkills().addXp(Skills.AGILITY, 22);
player.getPackets().sendGameMessage("You skilfully swing across.", true);
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.setNextWorldTile(toTile);
if (getWildernessStage(player) == 0)
setWildernessStage(player, 1);
player.getSkills().addXp(Skills.AGILITY, 15.5);
}
}, 1);
}
public static void PreStepStone(final Player player, final WorldObject object) {
if(!Agility.hasLevel(player, 35)) {
return;
}
player.lock(3);
player.setNextAnimation(new Animation(769));
final WorldTile toTile = new WorldTile(3001, 3960, 0);
player.setNextForceMovement(new ForceMovement(player, 0, toTile, 1, ForceMovement.WEST));
WorldTasksManager.schedule(new WorldTask() {
int stage;
@Override
public void run() {
if(stage == 1) {
player.setNextWorldTile(toTile);
player.setNextAnimation(new Animation(-1));
StepStone(player,object);
stop();
}
stage++;
}
}, 0, 1);
}
public static void StepStone(final Player player, final WorldObject object) {
player.lock(3);
player.setNextAnimation(new Animation(769));
final WorldTile NextTile = new WorldTile(3000, 3960, 0);
player.setNextForceMovement(new ForceMovement(player, 0, NextTile, 1, ForceMovement.WEST));
WorldTasksManager.schedule(new WorldTask() {
int stage;
@Override
public void run() {
if(stage == 1) {
player.setNextWorldTile(NextTile);
player.setNextAnimation(new Animation(-1));
StepStone1(player,object);
stop();
}
stage++;
}
}, 0, 1);
}
public static void StepStone1(final Player player, final WorldObject object) {
player.lock(3);
player.setNextAnimation(new Animation(769));
final WorldTile NextTile = new WorldTile(2999, 3960, 0);
player.setNextForceMovement(new ForceMovement(player, 0, NextTile, 1, ForceMovement.WEST));
WorldTasksManager.schedule(new WorldTask() {
int stage;
@Override
public void run() {
if(stage == 1) {
player.setNextWorldTile(NextTile);
player.setNextAnimation(new Animation(-1));
StepStone2(player,object);
stop();
}
stage++;
}
}, 0, 1);
}
public static void StepStone2(final Player player, final WorldObject object) {
player.lock(3);
player.setNextAnimation(new Animation(769));
final WorldTile NextTile = new WorldTile(2998, 3960, 0);
player.setNextForceMovement(new ForceMovement(player, 0, NextTile, 1, ForceMovement.WEST));
WorldTasksManager.schedule(new WorldTask() {
int stage;
@Override
public void run() {
if(stage == 1) {
player.setNextWorldTile(NextTile);
player.setNextAnimation(new Animation(-1));
StepStone3(player,object);
stop();
}
stage++;
}
}, 0, 1);
}
public static void StepStone3(final Player player, final WorldObject object) {
player.lock(3);
player.setNextAnimation(new Animation(769));
final WorldTile NextTile = new WorldTile(2997, 3960, 0);
player.setNextForceMovement(new ForceMovement(player, 0, NextTile, 1, ForceMovement.WEST));
WorldTasksManager.schedule(new WorldTask() {
int stage;
@Override
public void run() {
if(stage == 1) {
player.setNextWorldTile(NextTile);
player.setNextAnimation(new Animation(-1));
StepStone4(player,object);
stop();
}
stage++;
}
}, 0, 1);
}
public static void StepStone4(final Player player, final WorldObject object) {
player.lock(3);
player.setNextAnimation(new Animation(769));
final WorldTile LastTile = new WorldTile(2996, 3960, 0);
player.setNextForceMovement(new ForceMovement(player, 0, LastTile, 1, ForceMovement.WEST));
WorldTasksManager.schedule(new WorldTask() {
int stage;
@Override
public void run() {
if(stage == 1) {
player.setNextWorldTile(LastTile);
player.setNextAnimation(new Animation(-1));
player.getAppearence().setRenderEmote(-1);
player.getSkills().addXp(Skills.AGILITY, 7.5);
stop();
if (getWildernessStage(player) == 1)
setWildernessStage(player, 2);
}
stage++;
}
}, 0, 1);
}
public static void walkLog(final Player player) {
if (player.getX() != 3002 || player.getY() != 3945) {
player.getPackets().sendGameMessage("You need to be next to the log or you'll slip.");
return;
}
final boolean running = player.getRun();
player.setRunHidden(false);
player.lock(8);
player.addWalkSteps(2994, 3945, -1, false);
player.getPackets().sendGameMessage(
"You walk carefully across the log...", true);
WorldTasksManager.schedule(new WorldTask() {
boolean secondloop;
@Override
public void run() {
if (!secondloop) {
secondloop = true;
player.getAppearence().setRenderEmote(155);
} else {
player.getAppearence().setRenderEmote(-1);
player.setRunHidden(running);
player.getSkills().addXp(Skills.AGILITY, 7.5);
player.getPackets().sendGameMessage(
"... and make it safely to the other side.", true);
stop();
if (getWildernessStage(player) == 2)
setWildernessStage(player, 3);
}
}
}, 0, 6);
}
public static void climbCliff(final Player player, WorldObject object) {
player.setNextAnimation(new Animation(3378));
final WorldTile toTile = new WorldTile(2995, 3935, 0);
player.getPackets().sendGameMessage("You climb up the rock.", true);
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.setNextWorldTile(toTile);
stop();
if (getWildernessStage(player) == 3) {
removeWildernessStage(player);
player.getSkills().addXp(Skills.AGILITY, 50.5);
}
}
}, 6);
}
public static void removeWildernessStage(Player player) {
player.getTemporaryAttributtes().remove("WildernessCourse");
}
public static void setWildernessStage(Player player, int stage) {
player.getTemporaryAttributtes().put("WildernessCourse", stage);
}
public static int getWildernessStage(Player player) {
Integer stage = (Integer) player.getTemporaryAttributtes().get(
"WildernessCourse");
if (stage == null)
return -1;
return stage;
}
}