테스트

aion-server 4.8

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

import java.util.ArrayList;
import java.util.Collection;

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.VisibleObject;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.geometry.Point3D;
import com.aionemu.gameserver.model.instance.InstanceScoreType;
import com.aionemu.gameserver.model.instance.instancescore.HarmonyArenaScore;
import com.aionemu.gameserver.model.instance.instancescore.PvPArenaScore;
import com.aionemu.gameserver.model.instance.playerreward.HarmonyGroupReward;
import com.aionemu.gameserver.model.instance.playerreward.PvPArenaPlayerReward;
import com.aionemu.gameserver.model.templates.flyring.FlyRingTemplate;
import com.aionemu.gameserver.network.aion.instanceinfo.HarmonyScoreWriter;
import com.aionemu.gameserver.network.aion.serverpackets.SM_INSTANCE_SCORE;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.world.WorldMapInstance;

/**
 * @author xTz
 */
@InstanceID(300570000)
public class HarmonyTrainingGroundsInstance extends PvPArenaInstance {

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

	@Override
	protected int getBoostMoraleEffectDuration(int rank) {
		return switch (rank) {
			case 0 -> 14000;
			default -> 15000;
		};
	}

	@Override
	protected void spawnRings() {
		spawnFlyRing("PVP_ARENA_1", new Point3D(526.3772, 1800.0292, 176.74919), new Point3D(526.3772, 1800.0292, 179.74919),
			new Point3D(525.0156, 1797.356, 176.74919));
		spawnFlyRing("PVP_ARENA_2", new Point3D(506.68332, 1801.1233, 176.29509), new Point3D(506.68332, 1801.1233, 179.29509),
			new Point3D(506.68332, 1798.1233, 176.29509));
		spawnFlyRing("PVP_ARENA_3", new Point3D(537.7089, 1772.1154, 176.39908), new Point3D(537.7089, 1772.1154, 179.39908),
			new Point3D(534.8185, 1772.9186, 176.39908));
		spawnFlyRing("PVP_ARENA_4", new Point3D(506.82697, 1761.2292, 176.5923), new Point3D(506.82697, 1761.2292, 179.5923),
			new Point3D(506.54703, 1764.2162, 176.5923));
		spawnFlyRing("PVP_ARENA_5", new Point3D(526.93854, 1761.6971, 176.46439), new Point3D(526.93854, 1761.6971, 179.46439),
			new Point3D(525.2771, 1764.1951, 176.46439));
		spawnFlyRing("PVP_ARENA_6", new Point3D(486.66653, 1761.2954, 176.52344), new Point3D(486.66653, 1761.2954, 179.52344),
			new Point3D(486.22333, 1764.2625, 176.52344));
		spawnFlyRing("PVP_ARENA_7", new Point3D(463.7616, 1760.8594, 176.37796), new Point3D(463.7616, 1760.8594, 179.37796),
			new Point3D(465.9929, 1762.8647, 176.37796));
		spawnFlyRing("PVP_ARENA_8", new Point3D(453.18936, 1775.0388, 176.37965), new Point3D(453.18936, 1775.0388, 179.37965),
			new Point3D(451.03714, 1772.9489, 176.37965));
		spawnFlyRing("PVP_ARENA_9", new Point3D(453.36063, 1792.1831, 176.28424), new Point3D(453.36063, 1792.1831, 179.28424),
			new Point3D(450.8542, 1792.6652, 176.28424));
		spawnFlyRing("PVP_ARENA_10", new Point3D(464.15717, 1801.1119, 176.49224), new Point3D(464.15717, 1801.1119, 179.4922),
			new Point3D(462.10913, 1803.3041, 176.49224));
		spawnFlyRing("PVP_ARENA_11", new Point3D(486.1619, 1801.2965, 176.45914), new Point3D(486.1619, 1801.2965, 179.45914),
			new Point3D(485.39664, 1804.1973, 176.45914));
		spawnFlyRing("PVP_ARENA_12", new Point3D(537.2858, 1789.3806, 176.13591), new Point3D(537.2858, 1789.3806, 179.13591),
			new Point3D(534.82043, 1787.6713, 176.13591));
		spawnFlyRing("PVP_ARENA_13", new Point3D(519.96678, 1767.7379, 164.51219), new Point3D(519.96678, 1767.7379, 167.51219),
			new Point3D(518.04193, 1770.0391, 164.51219));
		spawnFlyRing("PVP_ARENA_14", new Point3D(529.45605, 1780.3438, 152.91333), new Point3D(529.45605, 1780.3438, 155.91333),
			new Point3D(526.61993, 1779.3657, 152.91333));
		spawnFlyRing("PVP_ARENA_15", new Point3D(520.3683, 1792.2515, 138.297), new Point3D(520.3683, 1792.2515, 141.297),
			new Point3D(520.271, 1789.253, 138.297));
		spawnFlyRing("PVP_ARENA_16", new Point3D(469.53625, 1792.6782, 163.97906), new Point3D(469.53625, 1792.6782, 166.97906),
			new Point3D(467.26062, 1794.633, 163.97906));
		spawnFlyRing("PVP_ARENA_17", new Point3D(459.51752, 1783.4421, 152.58247), new Point3D(459.51752, 1783.4421, 155.58247),
			new Point3D(456.87985, 1782.013, 152.58247));
		spawnFlyRing("PVP_ARENA_18", new Point3D(469.3592, 1769.092, 137.91689), new Point3D(469.3592, 1769.092, 140.91689),
			new Point3D(470.37436, 1771.915, 137.91689));
		spawnFlyRing("PVP_ARENA_19", new Point3D(494.79196, 1759.603, 151.13585), new Point3D(494.79196, 1759.603, 154.13585),
			new Point3D(494.51202, 1762.59, 151.13585));
		spawnFlyRing("PVP_ARENA_20", new Point3D(503.06744, 1759.9893, 157.17598), new Point3D(503.06744, 1759.9893, 160.17598),
			new Point3D(502.7875, 1762.9762, 157.17598));
		spawnFlyRing("PVP_ARENA_21", new Point3D(495.112, 1802.11895, 151.642), new Point3D(495.112, 1802.11895, 154.642),
			new Point3D(494.50687, 1805.1278, 151.642));
		spawnFlyRing("PVP_ARENA_22", new Point3D(503.28552, 1801.8163, 142.87953), new Point3D(503.28552, 1801.8163, 145.87953),
			new Point3D(502.52026, 1804.717, 142.87953));
		spawnFlyRing("PVP_ARENA_23", new Point3D(487.70947, 1802.1512, 157.30313), new Point3D(487.70947, 1802.1512, 160.30313),
			new Point3D(487.10434, 1805.0896, 157.30313));
		spawnFlyRing("PVP_ARENA_24", new Point3D(486.5052, 1759.7152, 143.67566), new Point3D(486.5052, 1759.7152, 146.67566),
			new Point3D(485.90005, 1762.6536, 143.67566));
		spawnFlyRing("PVP_ARENA_25", new Point3D(495.1142, 1769.1791, 151.02248), new Point3D(495.1142, 1769.1791, 154.02248),
			new Point3D(492.2781, 1768.201, 151.02248));
		spawnFlyRing("PVP_ARENA_26", new Point3D(517.1142, 1780.5552, 151.54797), new Point3D(517.1142, 1780.5552, 154.54797),
			new Point3D(517.248, 1783.5222, 151.54797));
		spawnFlyRing("PVP_ARENA_27", new Point3D(539.5928, 1768.1559, 153.20947), new Point3D(539.5928, 1768.1559, 156.20947),
			new Point3D(536.7507, 1769.1163, 153.20947));
		spawnFlyRing("PVP_ARENA_28", new Point3D(494.78378, 1791.6841, 151.01425), new Point3D(494.78378, 1791.6841, 154.01425),
			new Point3D(497.77554, 1791.9062, 151.01425));
		spawnFlyRing("PVP_ARENA_29", new Point3D(496.37292, 1781.1427, 151.12042), new Point3D(496.37292, 1781.1427, 154.12042),
			new Point3D(496.093, 1784.1296, 151.12042));
		spawnFlyRing("PVP_ARENA_30", new Point3D(504.7736, 1781.0814, 151.68193), new Point3D(504.7736, 1781.0814, 154.68193),
			new Point3D(505.331, 1778.1337, 151.68193));
		spawnFlyRing("PVP_ARENA_31", new Point3D(538.9759, 1791.9437, 153.94568), new Point3D(538.9759, 1791.9437, 156.94568),
			new Point3D(537.32996, 1789.4355, 153.94568));
		spawnFlyRing("PVP_ARENA_32", new Point3D(486.21588, 1781.1268, 150.98273), new Point3D(486.21588, 1781.1268, 153.98273),
			new Point3D(486.6109, 1778, 150.98273));
		spawnFlyRing("PVP_ARENA_33", new Point3D(472.12088, 1781.8315, 150.49611), new Point3D(472.12088, 1781.8315, 153.49611),
			new Point3D(472.839, 1778.9187, 150.49611));
		spawnFlyRing("PVP_ARENA_34", new Point3D(496.78357, 1781.3253, 151.18472), new Point3D(496.78357, 1781.3253, 154.18472),
			new Point3D(496.64036, 1784.2924, 151.18472));
		spawnFlyRing("PVP_ARENA_35", new Point3D(450.68466, 1771.1696, 153.57443), new Point3D(450.68466, 1771.1696, 156.57443),
			new Point3D(452.91595, 1771.1696, 153.57443));
		spawnFlyRing("PVP_ARENA_36", new Point3D(452.1979, 1790.3647, 153.43126), new Point3D(452.1979, 1790.3647, 156.43126),
			new Point3D(449.41272, 1791.4795, 153.43126));
	}

	private void spawnFlyRing(String name, Point3D center, Point3D p1, Point3D p2) {
		new FlyRing(new FlyRingTemplate(name, mapId, center, p1, p2, 3), instance.getInstanceId()).spawn();
	}

	@Override
	public boolean onPassFlyingRing(Player player, String flyingRing) {
		if (!instanceScore.isStartProgress())
			return false;

		Npc npc = switch (flyingRing) {
			case "PVP_ARENA_1" -> getNpc(526.5524f, 1799.9530f, 177.3270f);
			case "PVP_ARENA_2" -> getNpc(506.4008f, 1801.0159f, 177.3270f);
			case "PVP_ARENA_3" -> getNpc(537.6169f, 1772.0968f, 177.3270f);
			case "PVP_ARENA_4" -> getNpc(506.2996f, 1761.2419f, 177.3270f);
			case "PVP_ARENA_5" -> getNpc(526.5186f, 1761.3792f, 177.3270f);
			case "PVP_ARENA_6" -> getNpc(485.9503f, 1761.1323f, 177.3270f);
			case "PVP_ARENA_7" -> getNpc(463.6774f, 1761.2948f, 177.3270f);
			case "PVP_ARENA_8" -> getNpc(453.2310f, 1774.9258f, 177.3975f);
			case "PVP_ARENA_9" -> getNpc(453.3799f, 1791.6423f, 177.3270f);
			case "PVP_ARENA_10" -> getNpc(464.1622f, 1801.0581f, 177.3270f);
			case "PVP_ARENA_11" -> getNpc(485.8056f, 1801.1987f, 177.3270f);
			case "PVP_ARENA_12" -> getNpc(537.3194f, 1789.4381f, 177.3270f);
			case "PVP_ARENA_13" -> getNpc(520.1588f, 1767.9170f, 165.3259f);
			case "PVP_ARENA_14" -> getNpc(529.5792f, 1780.8058f, 153.6571f);
			case "PVP_ARENA_15" -> getNpc(519.9453f, 1792.4106f, 139.4744f);
			case "PVP_ARENA_16" -> getNpc(469.7408f, 1792.6573f, 165.4409f);
			case "PVP_ARENA_17" -> getNpc(459.6954f, 1783.1649f, 153.1804f);
			case "PVP_ARENA_18" -> getNpc(469.6530f, 1769.2192f, 138.8079f);
			case "PVP_ARENA_19" -> getNpc(494.7642f, 1759.5282f, 152.5068f);
			case "PVP_ARENA_20" -> getNpc(503.3351f, 1759.6985f, 158.4491f);
			case "PVP_ARENA_21" -> getNpc(494.9348f, 1802.1798f, 152.5857f);
			case "PVP_ARENA_22" -> getNpc(503.2661f, 1801.7520f, 143.9769f);
			case "PVP_ARENA_23" -> getNpc(486.9509f, 1801.9956f, 158.4124f);
			case "PVP_ARENA_24" -> getNpc(486.7321f, 1759.7345f, 144.8943f);
			case "PVP_ARENA_25" -> getNpc(495.0289f, 1769.2734f, 152.1635f);
			case "PVP_ARENA_26" -> getNpc(518.0588f, 1780.5404f, 152.5605f);
			case "PVP_ARENA_27" -> getNpc(539.5499f, 1767.9496f, 154.2043f);
			case "PVP_ARENA_28" -> getNpc(494.9674f, 1791.8362f, 152.1635f);
			case "PVP_ARENA_29" -> getNpc(495.0894f, 1781.0751f, 152.1635f);
			case "PVP_ARENA_30" -> getNpc(505.1635f, 1781.0885f, 152.3523f);
			case "PVP_ARENA_31" -> getNpc(539.3393f, 1791.3956f, 154.9766f);
			case "PVP_ARENA_32" -> getNpc(486.1324f, 1781.1040f, 152.0575f);
			case "PVP_ARENA_33" -> getNpc(472.1582f, 1781.9821f, 151.6493f);
			case "PVP_ARENA_34" -> getNpc(496.5575f, 1781.0718f, 152.1614f);
			case "PVP_ARENA_35" -> getNpc(450.1526f, 1771.6342f, 154.4948f);
			case "PVP_ARENA_36" -> getNpc(451.9798f, 1789.6945f, 154.4945f);
			default -> null;
		};
		if (npc != null && npc.isSpawned()) {
			npc.getController().deleteAndScheduleRespawn();
			HarmonyGroupReward reward = ((HarmonyArenaScore) instanceScore).getGroupReward(player.getObjectId());
			updatePoints(reward, player, npc, 100);
		}
		return false;
	}

	@Override
	protected void updatePoints(PvPArenaPlayerReward receiver, Player player, VisibleObject victim, int rewardPoints) {
		super.updatePoints(receiver, player, victim, rewardPoints);
	}

	@Override
	public void onInstanceCreate() {
		pointsPerKill = 800;
		pointsPerDeath = -150;
		super.onInstanceCreate();
	}

	@Override
	protected float getRunnerUpScoreMod(int victimRank) {
		return 4f;
	}

	@Override
	protected PvPArenaScore createNewArenaScore() {
		return new HarmonyArenaScore(instance);
	}

	@Override
	protected Collection<PvPArenaPlayerReward> getArenaRewards() {
		return new ArrayList<>(((HarmonyArenaScore) instanceScore).getHarmonyGroupInside());
	}

	@Override
	protected PvPArenaPlayerReward getStatReward(Player player) {
		return ((HarmonyArenaScore) instanceScore).getGroupReward(player.getObjectId());
	}

	@Override
	protected boolean canStart() {
		return ((HarmonyArenaScore) instanceScore).getHarmonyGroupInside().size() > 1;
	}

	@Override
	protected boolean shouldMergeGroupDamage() {
		return true;
	}

	@Override
	protected void sendEntryPacket(Player player) {
		broadcastUpdate(player, InstanceScoreType.UPDATE_RANK);
		broadcastUpdate(player, InstanceScoreType.INIT_PLAYER);
		broadcastUpdate(player, InstanceScoreType.UPDATE_PLAYER_BUFF_STATUS);
		broadcastUpdate(InstanceScoreType.UPDATE_INSTANCE_BUFFS_AND_SCORE);
	}

	@Override
	protected void broadcastUpdate(Player target, InstanceScoreType scoreType) {
		PacketSendUtility.broadcastToMap(instance,
			new SM_INSTANCE_SCORE(instance.getMapId(), new HarmonyScoreWriter((HarmonyArenaScore) instanceScore, scoreType, target), getTime()));
	}

	@Override
	protected void broadcastUpdate(InstanceScoreType scoreType) {
		PacketSendUtility.broadcastToMap(instance,
			new SM_INSTANCE_SCORE(instance.getMapId(), new HarmonyScoreWriter((HarmonyArenaScore) instanceScore, scoreType), getTime()));
	}

	@Override
	protected void broadcastResults() {
		instance.forEachPlayer(player -> sendPacket(player, InstanceScoreType.SHOW_REWARD));
	}

	@Override
	protected void sendPacket(Player receiver, InstanceScoreType scoreType) {
		PacketSendUtility.sendPacket(receiver,
			new SM_INSTANCE_SCORE(instance.getMapId(), new HarmonyScoreWriter((HarmonyArenaScore) instanceScore, scoreType, receiver), getTime()));
	}

	private int getTime() {
		return instanceScore.getTime();
	}
}

📎 첨부파일

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