Potential fix for wilderness course stepping stone bug
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package core.game.node.entity.skill.agility;
|
package core.game.node.entity.skill.agility;
|
||||||
|
|
||||||
|
import api.ContentAPI;
|
||||||
|
import core.game.node.entity.player.link.TeleportManager;
|
||||||
import core.game.node.entity.skill.Skills;
|
import core.game.node.entity.skill.Skills;
|
||||||
import core.game.interaction.MovementPulse;
|
import core.game.interaction.MovementPulse;
|
||||||
import core.game.node.entity.combat.ImpactHandler.HitsplatType;
|
import core.game.node.entity.combat.ImpactHandler.HitsplatType;
|
||||||
@@ -100,21 +102,26 @@ public final class AgilityHandler {
|
|||||||
*/
|
*/
|
||||||
public static void fail(final Player player, int delay, final Location dest, Animation anim, final int hit, final String message) {
|
public static void fail(final Player player, int delay, final Location dest, Animation anim, final int hit, final String message) {
|
||||||
if (anim != null) {
|
if (anim != null) {
|
||||||
player.animate(anim);
|
ContentAPI.animate(player, anim, true);
|
||||||
}
|
}
|
||||||
GameWorld.getPulser().submit(new Pulse(anim.getDefinition().getDurationTicks(), player) {
|
ContentAPI.submitWorldPulse(new Pulse(ContentAPI.animationDuration(anim), player) {
|
||||||
|
boolean dmg = false;
|
||||||
@Override
|
@Override
|
||||||
public boolean pulse() {
|
public boolean pulse() {
|
||||||
player.getProperties().setTeleportLocation(dest);
|
ContentAPI.teleport(player, dest, TeleportManager.TeleportType.INSTANT);
|
||||||
player.animate(Animation.RESET);
|
ContentAPI.animate(player, Animation.RESET, true);
|
||||||
if (hit > 0) {
|
if(!dmg) {
|
||||||
player.getImpactHandler().setDisabledTicks(0);
|
if (hit > 0) {
|
||||||
player.getImpactHandler().manualHit(player, hit, HitsplatType.NORMAL);
|
player.getImpactHandler().setDisabledTicks(0);
|
||||||
|
ContentAPI.impact(player, hit, HitsplatType.NORMAL);
|
||||||
|
}
|
||||||
|
if (message != null) {
|
||||||
|
ContentAPI.sendMessage(player, message);
|
||||||
|
}
|
||||||
|
dmg = true;
|
||||||
}
|
}
|
||||||
if (message != null) {
|
setDelay(0);
|
||||||
player.getPacketDispatch().sendMessage(message);
|
return player.getLocation().equals(dest);
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -767,7 +767,8 @@ object ContentAPI {
|
|||||||
*/
|
*/
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun teleport(entity: Entity, loc: Location, type: TeleportManager.TeleportType = TeleportManager.TeleportType.INSTANT){
|
fun teleport(entity: Entity, loc: Location, type: TeleportManager.TeleportType = TeleportManager.TeleportType.INSTANT){
|
||||||
entity.teleporter.send(loc,type)
|
if(type == TeleportManager.TeleportType.INSTANT) entity.properties.teleportLocation = loc
|
||||||
|
else entity.teleporter.send(loc,type)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package rs09.game.node.entity.skill.agility
|
package rs09.game.node.entity.skill.agility
|
||||||
|
|
||||||
|
import api.ContentAPI
|
||||||
import core.cache.def.impl.ObjectDefinition
|
import core.cache.def.impl.ObjectDefinition
|
||||||
import core.game.content.global.action.DoorActionHandler
|
import core.game.content.global.action.DoorActionHandler
|
||||||
import core.game.node.Node
|
import core.game.node.Node
|
||||||
@@ -176,26 +177,26 @@ class WildernessCourse
|
|||||||
* @param object the object.
|
* @param object the object.
|
||||||
*/
|
*/
|
||||||
private fun handleSteppingStones(player: Player, `object`: Scenery) {
|
private fun handleSteppingStones(player: Player, `object`: Scenery) {
|
||||||
player.locks.lock()
|
ContentAPI.lock(player, 50)
|
||||||
val fail = AgilityHandler.hasFailed(player, 1, 0.3)
|
val fail = AgilityHandler.hasFailed(player, 1, 0.3)
|
||||||
player.addExtension(LogoutTask::class.java, LocationLogoutTask(12, player.location))
|
val origLoc = player.location
|
||||||
GameWorld.Pulser.submit(object : Pulse(2, player) {
|
ContentAPI.registerLogoutListener(player, "steppingstone"){p ->
|
||||||
|
ContentAPI.teleport(p, origLoc)
|
||||||
|
}
|
||||||
|
ContentAPI.submitWorldPulse(object : Pulse(2, player){
|
||||||
var counter = 0
|
var counter = 0
|
||||||
override fun pulse(): Boolean {
|
override fun pulse(): Boolean {
|
||||||
if (counter == 3 && fail) {
|
if (counter == 3 && fail) {
|
||||||
AgilityHandler.fail(player, -1, Location.create(3001, 3963, 0), Animation.create(771), (player.skills.lifepoints * 0.26).toInt(), "...You lose your footing and fall into the lava.")
|
AgilityHandler.fail(player, -1, Location.create(3001, 3963, 0), Animation.create(771), (player.skills.lifepoints * 0.26).toInt(), "...You lose your footing and fall into the lava.")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
AgilityHandler.forceWalk(player, if (counter == 5) 2 else -1, player.location, player.location.transform(-1, 0, 0), Animation.create(741), 10, if (counter == 5) 20.0 else 0.toDouble(), if (counter != 0) null else "You carefully start crossing the stepping stones...")
|
AgilityHandler.forceWalk(player, if (counter == 5) 2 else -1, player.location, player.location.transform(-1, 0, 0), Animation.create(741), 10, if (counter == 5) 20.0 else 0.0, if (counter != 0) null else "You carefully start crossing the stepping stones...")
|
||||||
if(++counter == 6){
|
if(++counter == 6){
|
||||||
player.unlock()
|
ContentAPI.unlock(player)
|
||||||
|
ContentAPI.clearLogoutListener(player, "steppingstone")
|
||||||
}
|
}
|
||||||
return counter == 6
|
return counter == 6
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun stop() {
|
|
||||||
super.stop()
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user