테스트

aion-server 4.8

Gitteol
최고관리자 · 1 · 💬 0 클론/새로받기
 4.8 61f661d · 1 commits 새로받기(Pull)
game-server/data/handlers/instance/SeizedDanuarSanctuaryInstance.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.Race;
import com.aionemu.gameserver.model.animations.TeleportAnimation;
import com.aionemu.gameserver.model.gameobjects.Npc;
import com.aionemu.gameserver.model.gameobjects.player.Player;
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.skillengine.SkillEngine;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.utils.ThreadPoolManager;
import com.aionemu.gameserver.world.WorldMapInstance;

/**
 * @author Yeats
 */
@InstanceID(301140000)
public class SeizedDanuarSanctuaryInstance extends GeneralInstanceHandler {

	private Race instanceRace;
	private final AtomicBoolean started = new AtomicBoolean(false);
	private final AtomicBoolean cannonUsed = new AtomicBoolean(false);

	public SeizedDanuarSanctuaryInstance(WorldMapInstance instance) {
		super(instance);
	}

	@Override
	public void onInstanceCreate() {
		spawnRndBoss();
	}

	@Override
	public void onEnterInstance(Player player) {
		if (instanceRace == null && started.compareAndSet(false, true)) {
			instanceRace = player.getRace();
			spawnQuestNpcs();
		}
	}

	@Override
	public void onDie(Npc npc) {
		super.onDie(npc);
		switch (npc.getNpcId()) {
			case 233187:
				spawn(233087, 906.4945f, 861.5854f, 280.5441f, (byte) 73, 1699);
				npc.getController().delete();
				break;
			case 235620:
			case 235619:
			case 235621:
				spawn(701876, 1071.9772f, 682.4911f, 282.0391f, (byte) 60); // Emergency Exit
				break;
			case 730866:
			case 233448:
			case 233447:
				npc.getController().delete();
				break;

		}
	}

	@Override
	public void handleUseItemFinish(Player player, Npc npc) {
		switch (npc.getNpcId()) {
			case 701873:
				TeleportService.teleportTo(player, instance, 1029.273f, 362.651f, 297.89f, (byte) 30, TeleportAnimation.FADE_OUT_BEAM);
				break;
			case 701871:
				TeleportService.teleportTo(player, instance, 1006.0412f, 1366.468f, 337.26f, (byte) 105, TeleportAnimation.FADE_OUT_BEAM);
				break;
			case 701872:
				TeleportService.teleportTo(player, instance, 846.172f, 991.731f, 300.04f, (byte) 110, TeleportAnimation.FADE_OUT_BEAM);
				break;
			case 730863:
				if (cannonUsed.compareAndSet(false, true)) {
					Npc target = instance.getNpc(730866);
					SkillEngine.getInstance().getSkill(npc, 20385, 1, target).useWithoutPropSkill();
					if (target != null) {
						ThreadPoolManager.getInstance().schedule(() -> target.getController().die(), 5700);
					}
				}
				break;
			case 701876:
				TeleportService.moveToInstanceExit(player, mapId, player.getRace());
				break;

		}
	}

	@Override
	public boolean onReviveEvent(Player player) {
		PlayerReviveService.revive(player, 25, 25, true, 0);
		PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_REBIRTH_MASSAGE_ME());
		player.getGameStats().updateStatsAndSpeedVisually();
		TeleportService.teleportTo(player, instance, 388.6437f, 1184.639f, 55.30134f);
		return true;
	}

	private void spawnRndBoss() {
		/*
		 * 235619 Warmage Suyaroka
		 * 235620 Chief Medic Tagnu
		 * 235621 Virulent Ukahim
		 */
		spawn((235619 + Rnd.get(0, 2)), 1056.6105f, 694.0836f, 282.04f, (byte) 30);
	}

	private void spawnQuestNpcs() {
		if (instanceRace == Race.ELYOS) {
			spawn(233129, 1022.065f, 465.547f, 290.2684f, (byte) 10);
			spawn(233129, 867.786f, 911.695f, 293.007f, (byte) 80);
			spawn(233129, 1068.531f, 481.1384f, 285.4618f, (byte) 110);
			spawn(233129, 920.645f, 923.6408f, 293.1628f, (byte) 110);
			spawn(233130, 1034.348f, 482.7226f, 290.3569f, (byte) 40);
			spawn(233130, 972.4765f, 1327.148f, 335.876f, (byte) 100);
			spawn(233131, 1103.7655f, 440.8195f, 284.6165f, (byte) 70);
			spawn(233131, 954.9696f, 910.779f, 299.523f, (byte) 110);
		} else {
			spawn(233126, 1022.065f, 465.547f, 290.2684f, (byte) 10);
			spawn(233126, 1068.531f, 481.1384f, 285.4618f, (byte) 110);
			spawn(233126, 867.786f, 911.695f, 293.007f, (byte) 80);
			spawn(233126, 920.645f, 923.6408f, 293.1628f, (byte) 110);
			spawn(233127, 1034.348f, 482.7226f, 290.3569f, (byte) 40);
			spawn(233127, 972.4765f, 1327.148f, 335.876f, (byte) 100);
			spawn(233128, 1103.7655f, 440.8195f, 284.6165f, (byte) 70);
			spawn(233128, 954.9696f, 910.779f, 299.523f, (byte) 110);
		}
	}
}

📎 첨부파일

댓글 작성 권한이 없습니다.
🏆 포인트 랭킹 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