package instance; import java.util.concurrent.atomic.AtomicBoolean; import com.aionemu.commons.utils.Rnd; import com.aionemu.gameserver.instance.handlers.GeneralInstanceHandler; import com.aionemu.gameserver.instance.handlers.InstanceID; import com.aionemu.gameserver.model.flyring.FlyRing; import com.aionemu.gameserver.model.gameobjects.Npc; import com.aionemu.gameserver.model.gameobjects.player.Player; import com.aionemu.gameserver.model.geometry.Point3D; import com.aionemu.gameserver.model.templates.flyring.FlyRingTemplate; import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE; import com.aionemu.gameserver.services.player.PlayerReviveService; import com.aionemu.gameserver.services.teleport.TeleportService; import com.aionemu.gameserver.utils.PacketSendUtility; import com.aionemu.gameserver.world.WorldMapInstance; /** * @author Sykra */ @InstanceID(320080000) public class DraupnirCaveInstance extends GeneralInstanceHandler { private final AtomicBoolean isInstanceStartMessageSend = new AtomicBoolean(); private int adjutantsKilled; public DraupnirCaveInstance(WorldMapInstance instance) { super(instance); } @Override public void onInstanceCreate() { new FlyRing(new FlyRingTemplate("INSTANCE_MSG_START", mapId, new Point3D(475.8222f, 427.8852f, 618.3719f), new Point3D(478.3698f, 450.1829f, 624.6974f), new Point3D(473.2742f, 405.5875f, 612.0464f), 20), instance.getInstanceId()).spawn(); switch (Rnd.get(1, 4)) { case 1 -> spawn(213587, 567.438f, 700.875f, 538.701f, (byte) 7); // Hungry Ooze case 2 -> spawn(213588, 166.8f, 536.285f, 505.802f, (byte) 9); // Lucky Golden Saam case 3 -> spawn(213771, 497.006f, 434.713f, 616.584f, (byte) 71); // Protector Rakkan case 4 -> spawn(213773, 380.694f, 611.956f, 598.523f, (byte) 98); // Dragonpriest Tairgus } } @Override public boolean onPassFlyingRing(Player player, String flyingRing) { if ("INSTANCE_MSG_START".equals(flyingRing) && isInstanceStartMessageSend.compareAndSet(false, true)) { sendMsg(SM_SYSTEM_MESSAGE.STR_MSG_BOSS_SPAWN_IDDF3_DRAGON_1()); return true; } return false; } @Override public void onDie(Npc npc) { switch (npc.getNpcId()) { case 213776: // Instructor Afrane case 213778: // Beautiful Lakshmi case 213779: // Commander Nimbarka case 213802: // Kind Saraswati switch (++adjutantsKilled) { case 1 -> sendMsg(SM_SYSTEM_MESSAGE.STR_MSG_BOSS_SPAWN_IDDF3_DRAGON_2()); case 2 -> sendMsg(SM_SYSTEM_MESSAGE.STR_MSG_BOSS_SPAWN_IDDF3_DRAGON_3()); case 3 -> sendMsg(SM_SYSTEM_MESSAGE.STR_MSG_BOSS_SPAWN_IDDF3_DRAGON_4()); case 4 -> { sendMsg(SM_SYSTEM_MESSAGE.STR_MSG_BOSS_SPAWN_IDDF3_DRAGON()); spawn(213780, 813.189f, 432.255f, 318.928f, (byte) 30); // Commander Bakarma } } break; } } @Override public boolean onReviveEvent(Player player) { PlayerReviveService.revive(player, 25, 25, true, 0); player.getGameStats().updateStatsAndSpeedVisually(); PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_REBIRTH_MASSAGE_ME()); TeleportService.teleportTo(player, instance, 492.83383f, 375.46542f, 622.26920f, (byte) 29); return true; } }