테스트

aion-server 4.8

Gitteol
최고관리자 · 1 · 💬 0 클론/새로받기
 4.8 61f661d · 1 commits 새로받기(Pull)
game-server/data/handlers/instance/DraupnirCaveInstance.java
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;
	}
}

📎 첨부파일

댓글 작성 권한이 없습니다.
🏆 포인트 랭킹 TOP 10
순위 닉네임 포인트
1 no_profile 타키야겐지쪽지보내기 자기소개 아이디로 검색 전체게시물 100,792
2 no_profile 동가리쪽지보내기 자기소개 아이디로 검색 전체게시물 58,079
3 no_profile 라프텔쪽지보내기 자기소개 아이디로 검색 전체게시물 51,771
4 no_profile 불멸의행복쪽지보내기 자기소개 아이디로 검색 전체게시물 36,923
5 서번트쪽지보내기 자기소개 아이디로 검색 전체게시물 35,011
6 no_profile 보거스쪽지보내기 자기소개 아이디로 검색 전체게시물 29,969
7 no_profile 닥터스쪽지보내기 자기소개 아이디로 검색 전체게시물 29,470
8 no_profile 검은고양이쪽지보내기 자기소개 아이디로 검색 전체게시물 29,077
9 no_profile Revolution쪽지보내기 자기소개 아이디로 검색 전체게시물 28,199
10 no_profile 호롤롤로쪽지보내기 자기소개 아이디로 검색 전체게시물 17,020
알림 0