테스트

aion-server 4.8

Gitteol
최고관리자 · 1 · 💬 0 클론/새로받기
 4.8 61f661d · 1 commits 새로받기(Pull)
game-server/data/handlers/ai/instance/engulfedOphidianBridgeInstance/ExplosionDeviceAI.java
package ai.instance.engulfedOphidianBridgeInstance;

import java.util.ArrayList;
import java.util.List;

import com.aionemu.gameserver.ai.AIName;
import com.aionemu.gameserver.model.Race;
import com.aionemu.gameserver.model.gameobjects.Item;
import com.aionemu.gameserver.model.gameobjects.Npc;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.utils.ThreadPoolManager;

import ai.ActionItemNpcAI;

/**
 * @author cheatkiller
 */
@AIName("engulfedophidianexplosiondevice")
public class ExplosionDeviceAI extends ActionItemNpcAI {

	private List<Npc> bomb = new ArrayList<>();

	public ExplosionDeviceAI(Npc owner) {
		super(owner);
	}

	@Override
	protected void handleUseItemFinish(Player player) {
		if (checkScroll(player)) {
			switch (getOwner().getNpcId()) {
				case 701969:
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701939 : 701953, 660.36865f, 461.0626f, 600.2547f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701939 : 701953, 667.22784f, 488.69467f, 599.8417f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701939 : 701953, 670.0791f, 458.5767f, 599.75f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701939 : 701953, 671.87946f, 472.70087f, 600.772f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701939 : 701953, 679.0547f, 488.28452f, 599.75f, (byte) 116));
					PacketSendUtility.broadcastToMap(getOwner(), 1402057);
					break;
				case 701970:
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701940 : 701954, 539.50714f, 430.42578f, 620.25f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701940 : 701954, 540.8305f, 438.79446f, 620.25f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701940 : 701954, 544.2634f, 448.85068f, 620.19464f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701940 : 701954, 535.0376f, 449.98453f, 620.25f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701940 : 701954, 532.6748f, 441.45563f, 620.25f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701940 : 701954, 528.1262f, 448.87216f, 620.3671f, (byte) 116));
					PacketSendUtility.broadcastToMap(getOwner(), 1402067);
					break;
				case 701971:
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701941 : 701955, 598.453f, 569.7365f, 590.91034f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701941 : 701955, 608.8183f, 568.04224f, 590.6276f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701941 : 701955, 616.0901f, 560.89703f, 590.6867f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701941 : 701955, 614.1525f, 547.63904f, 590.625f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701941 : 701955, 603.2911f, 542.8298f, 590.625f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701941 : 701955, 593.12506f, 547.4969f, 590.625f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701941 : 701955, 591.4903f, 559.3725f, 590.625f, (byte) 116));
					PacketSendUtility.broadcastToMap(getOwner(), 1402062);
					break;
				case 701972:
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701942 : 701956, 477.32898f, 537.0476f, 597.375f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701942 : 701956, 482.75482f, 546.7067f, 597.5f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701942 : 701956, 486.86075f, 523.6781f, 597.375f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701942 : 701956, 492.95834f, 533.3082f, 598.8186f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701942 : 701956, 493.98892f, 549.46606f, 597.6485f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701942 : 701956, 503.4563f, 526.20776f, 597.5f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701942 : 701956, 505.39758f, 551.0327f, 597.7016f, (byte) 116));
					bomb.add((Npc) spawn(player.getRace() == Race.ELYOS ? 701942 : 701956, 508.31046f, 539.70984f, 598.1651f, (byte) 116));
					PacketSendUtility.broadcastToMap(getOwner(), 1402072);
					break;
			}
			boom();
			player.getInventory().decreaseByItemId(164000278, 1);
		} else {
			PacketSendUtility.broadcastToMap(getOwner(), 1402005);
		}
	}

	private void boom() {
		ThreadPoolManager.getInstance().schedule(new Runnable() {

			@Override
			public void run() {
				for (Npc npc : bomb) {
					npc.getController().useSkill(21178);
				}
			}
		}, 5000);
		ThreadPoolManager.getInstance().schedule(new Runnable() {

			@Override
			public void run() {
				for (Npc npc : bomb) {
					npc.getController().delete();
				}
			}
		}, 20000);
	}

	private boolean checkScroll(Player player) {
		Item key = player.getInventory().getFirstItemByItemId(164000278);
		if (key != null && key.getItemCount() >= 1) {
			return true;
		}
		return false;
	}
}

📎 첨부파일

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