테스트

aion-server 4.8

Gitteol
최고관리자 · 1 · 💬 0 클론/새로받기
 4.8 61f661d · 1 commits 새로받기(Pull)
game-server/src/com/aionemu/gameserver/model/templates/event/Buff.java
package com.aionemu.gameserver.model.templates.event;

import java.util.List;
import java.util.Set;
import java.util.function.Predicate;

import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.*;

import org.slf4j.LoggerFactory;

import com.aionemu.gameserver.world.WorldMapInstance;

/**
 * @author Neon
 */
@XmlType(name = "Buff")
@XmlAccessorType(XmlAccessType.FIELD)
public class Buff {

	@XmlAttribute(name = "skill_ids", required = true)
	private Set<Integer> skillIds;
	@XmlAttribute(name = "pool")
	private int pool;
	@XmlAttribute(name = "permanent")
	private boolean isPermanent;
	@XmlAttribute(name = "team")
	private boolean isTeam;
	@XmlElement(name = "restriction")
	private BuffRestriction restriction;
	@XmlElement(name = "trigger", required = true)
	private List<Trigger> triggers;

	void afterUnmarshal(Unmarshaller u, Object parent) {
		if (pool > skillIds.size())
			LoggerFactory.getLogger(Buff.class).warn("Pool size for event buffs must be smaller than skill id size (skill ids: " + skillIds + ").");
	}

	public Set<Integer> getSkillIds() {
		return skillIds;
	}

	public List<Trigger> getTriggers() {
		return triggers;
	}

	public int getPool() {
		return pool;
	}

	public boolean isPermanent() {
		return isPermanent;
	}

	public boolean isTeam() {
		return isTeam;
	}

	public BuffRestriction getRestriction() {
		return restriction;
	}

	@XmlType(name = "BuffMapType")
	@XmlEnum
	public enum BuffMapType {
		WORLD_MAP(instance -> !instance.getTemplate().isInstance()),
		SOLO_INSTANCE(instance -> instance.getMaxPlayers() == 1),
		GROUP_INSTANCE(instance -> instance.getMaxPlayers() > 1 && instance.getMaxPlayers() <= 6),
		ALLIANCE_INSTANCE(instance -> instance.getMaxPlayers() > 6 && instance.getMaxPlayers() <= 24);

		private final Predicate<WorldMapInstance> matches;

		BuffMapType(Predicate<WorldMapInstance> matches) {
			this.matches = matches;
		}

		public boolean matches(WorldMapInstance worldMapInstance) {
			return matches.test(worldMapInstance);
		}
	}

	@XmlType(name = "Trigger")
	@XmlAccessorType(XmlAccessType.FIELD)
	public static class Trigger {

		@XmlAttribute
		private TriggerCondition condition;
		@XmlAttribute
		private float chance = 100;

		public TriggerCondition getCondition() {
			return condition;
		}

		public float getChance() {
			return chance;
		}
	}

	@XmlType(name = "TriggerCondition")
	@XmlEnum
	public enum TriggerCondition {
		ENTER_MAP,
		ENTER_TEAM,
		PVE_KILL,
		PVP_KILL
	}
}

📎 첨부파일

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