Fixed fishing trawler teleport and random event issues

This commit is contained in:
Zerken 2023-10-17 11:02:12 +00:00 committed by Ryan
parent 5237051e71
commit 0e6b4ad816
3 changed files with 16 additions and 4 deletions

View file

@ -1,5 +1,6 @@
package content.minigame.fishingtrawler package content.minigame.fishingtrawler
import core.api.MapArea
import core.game.node.entity.player.Player import core.game.node.entity.player.Player
import core.game.system.task.Pulse import core.game.system.task.Pulse
import core.game.world.GameWorld import core.game.world.GameWorld
@ -10,6 +11,7 @@ import core.plugin.Initializable
import core.tools.ticksToSeconds import core.tools.ticksToSeconds
import core.game.activity.ActivityManager import core.game.activity.ActivityManager
import core.game.activity.ActivityPlugin import core.game.activity.ActivityPlugin
import core.game.world.map.zone.ZoneBorders
import core.tools.colorize import core.tools.colorize
@ -17,13 +19,14 @@ import core.tools.colorize
* Handles the fishing trawler "waiting room" * Handles the fishing trawler "waiting room"
* @author Ceikry * @author Ceikry
*/ */
private val WAIT_TIME = if(GameWorld.settings?.isDevMode == true) 10 else 203 private val WAIT_TIME = if(GameWorld.settings?.isDevMode == true) 30 else 203
private val waitingPlayers = ArrayList<Player>() private val waitingPlayers = ArrayList<Player>()
private val ftWaitingArea = arrayOf(ZoneBorders(2668, 3165, 2675, 3184))
private val sessions = ArrayList<FishingTrawlerSession>() private val sessions = ArrayList<FishingTrawlerSession>()
private var activity: FishingTrawlerActivity? = null private var activity: FishingTrawlerActivity? = null
private var nextStart = GameWorld.ticks + WAIT_TIME private var nextStart = GameWorld.ticks + WAIT_TIME
@Initializable @Initializable
class FishingTrawlerActivity : ActivityPlugin("fishing trawler",false,false,true,ZoneRestriction.CANNON,ZoneRestriction.FIRES,ZoneRestriction.FOLLOWERS,ZoneRestriction.RANDOM_EVENTS) { class FishingTrawlerActivity : ActivityPlugin("fishing trawler",false,false,true,ZoneRestriction.CANNON,ZoneRestriction.FIRES,ZoneRestriction.FOLLOWERS,ZoneRestriction.RANDOM_EVENTS), MapArea {
init { init {
activity = this activity = this
@ -86,4 +89,12 @@ class FishingTrawlerActivity : ActivityPlugin("fishing trawler",false,false,true
override fun getSpawnLocation(): Location { override fun getSpawnLocation(): Location {
return Location.create(2667, 3161, 0) return Location.create(2667, 3161, 0)
} }
override fun defineAreaBorders(): Array<ZoneBorders> {
return ftWaitingArea
}
override fun getRestrictions(): Array<ZoneRestriction> {
return arrayOf(ZoneRestriction.RANDOM_EVENTS, ZoneRestriction.TELEPORT)
}
} }

View file

@ -16,6 +16,7 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.TeleportManager; 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.system.task.Pulse; import core.game.system.task.Pulse;
import core.game.world.map.zone.ZoneRestriction;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import core.game.world.GameWorld; import core.game.world.GameWorld;
import core.game.world.map.Location; import core.game.world.map.Location;
@ -928,7 +929,7 @@ public abstract class Entity extends Node {
* @return {@code True} if so. * @return {@code True} if so.
*/ */
public boolean isTeleBlocked() { public boolean isTeleBlocked() {
return timers.getTimer("teleblock") != null || getLocks().isTeleportLocked(); return timers.getTimer("teleblock") != null || getLocks().isTeleportLocked() || getZoneMonitor().isRestricted(ZoneRestriction.TELEPORT);
} }
/** /**

View file

@ -99,7 +99,7 @@ public class TeleportManager {
if (!entity.getZoneMonitor().teleport(teleportType, null)) { if (!entity.getZoneMonitor().teleport(teleportType, null)) {
return false; return false;
} }
if (teleportType != -1 && (entity.isTeleBlocked() || entity.getZoneMonitor().isRestricted(ZoneRestriction.TELEPORT))) { if (teleportType != -1 && entity.isTeleBlocked()) {
if (entity.isPlayer()) if (entity.isPlayer())
entity.asPlayer().sendMessage("A magical force has stopped you from teleporting."); entity.asPlayer().sendMessage("A magical force has stopped you from teleporting.");
return false; return false;