Add record MobSkillId for mob skill type + level combination
Pair is nasty to work with when they are passed around all over
This commit is contained in:
@@ -188,11 +188,12 @@ public class LifeFactory {
|
||||
Data monsterSkillInfoData = monsterInfoData.getChildByPath("skill");
|
||||
if (monsterSkillInfoData != null) {
|
||||
int i = 0;
|
||||
List<Pair<Integer, Integer>> skills = new ArrayList<>();
|
||||
List<MobSkillId> skills = new ArrayList<>();
|
||||
while (monsterSkillInfoData.getChildByPath(Integer.toString(i)) != null) {
|
||||
int skillId = DataTool.getInt(i + "/skill", monsterSkillInfoData, 0);
|
||||
int skillLv = DataTool.getInt(i + "/level", monsterSkillInfoData, 0);
|
||||
skills.add(new Pair<>(skillId, skillLv));
|
||||
MobSkillType type = MobSkillType.from(skillId);
|
||||
skills.add(new MobSkillId(type, skillLv));
|
||||
|
||||
Data monsterSkillData = monsterData.getChildByPath("skill" + (i + 1));
|
||||
if (monsterSkillData != null) {
|
||||
@@ -201,7 +202,7 @@ public class LifeFactory {
|
||||
animationTime += DataTool.getIntConvert("delay", effectEntry, 0);
|
||||
}
|
||||
|
||||
MobSkill skill = MobSkillFactory.getMobSkill(MobSkillType.from(skillId), skillLv);
|
||||
MobSkill skill = MobSkillFactory.getMobSkill(type, skillLv);
|
||||
mi.setMobSkillAnimationTime(skill, animationTime);
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ public class MobSkillFactory {
|
||||
return Optional.of(existingMs);
|
||||
}
|
||||
|
||||
Data skillData = skillRoot.getChildByPath(type + "/level/" + level);
|
||||
Data skillData = skillRoot.getChildByPath("%d/level/%d".formatted(type.getId(), level));
|
||||
if (skillData == null) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
3
src/main/java/server/life/MobSkillId.java
Normal file
3
src/main/java/server/life/MobSkillId.java
Normal file
@@ -0,0 +1,3 @@
|
||||
package server.life;
|
||||
|
||||
public record MobSkillId(MobSkillType type, int level) {}
|
||||
@@ -1426,7 +1426,7 @@ public class Monster extends AbstractLoadedLife {
|
||||
return map.getAggroCoordinator();
|
||||
}
|
||||
|
||||
public List<Pair<Integer, Integer>> getSkills() {
|
||||
public List<MobSkillId> getSkills() {
|
||||
return stats.getSkills();
|
||||
}
|
||||
|
||||
@@ -1436,8 +1436,8 @@ public class Monster extends AbstractLoadedLife {
|
||||
|
||||
public int getSkillPos(int skillId, int level) {
|
||||
int pos = 0;
|
||||
for (Pair<Integer, Integer> ms : this.getSkills()) {
|
||||
if (ms.getLeft() == skillId && ms.getRight() == level) {
|
||||
for (MobSkillId ms : this.getSkills()) {
|
||||
if (ms.type().getId() == skillId && ms.level() == level) {
|
||||
return pos;
|
||||
}
|
||||
|
||||
@@ -1490,7 +1490,7 @@ public class Monster extends AbstractLoadedLife {
|
||||
private boolean isReflectSkill(MobSkill mobSkill) {
|
||||
return switch (mobSkill.getType()) {
|
||||
case PHYSICAL_COUNTER, MAGIC_COUNTER, PHYSICAL_AND_MAGIC_COUNTER -> true;
|
||||
default -> false ;
|
||||
default -> false;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ public class MonsterStats {
|
||||
public Map<Element, ElementalEffectiveness> resistance = new HashMap<>();
|
||||
public List<Integer> revives = Collections.emptyList();
|
||||
public byte tagColor, tagBgColor;
|
||||
public List<Pair<Integer, Integer>> skills = new ArrayList<>();
|
||||
public List<MobSkillId> skills = new ArrayList<>();
|
||||
public Pair<Integer, Integer> cool = null;
|
||||
public BanishInfo banish = null;
|
||||
public List<loseItem> loseItem = null;
|
||||
@@ -190,17 +190,16 @@ public class MonsterStats {
|
||||
this.tagBgColor = (byte) tagBgColor;
|
||||
}
|
||||
|
||||
public void setSkills(List<Pair<Integer, Integer>> skills) {
|
||||
public void setSkills(List<MobSkillId> skills) {
|
||||
for (int i = this.skills.size(); i < skills.size(); i++) {
|
||||
this.skills.add(null);
|
||||
}
|
||||
|
||||
for (int i = 0; i < skills.size(); i++) {
|
||||
this.skills.set(i, skills.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
public List<Pair<Integer, Integer>> getSkills() {
|
||||
public List<MobSkillId> getSkills() {
|
||||
return Collections.unmodifiableList(this.skills);
|
||||
}
|
||||
|
||||
@@ -209,8 +208,8 @@ public class MonsterStats {
|
||||
}
|
||||
|
||||
public boolean hasSkill(int skillId, int level) {
|
||||
for (Pair<Integer, Integer> skill : skills) {
|
||||
if (skill.getLeft() == skillId && skill.getRight() == level) {
|
||||
for (MobSkillId skill : skills) {
|
||||
if (skill.type().getId() == skillId && skill.level() == level) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user