Potential fix for wilderness course stepping stone bug

This commit is contained in:
ceikry
2021-06-26 11:45:24 -05:00
parent 473728c2bd
commit f10c7dc059
3 changed files with 30 additions and 21 deletions
@@ -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;
} }
}); });
} }
+2 -1
View File
@@ -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()
}
}) })
} }