Disease and MCSkill hold MobSkillType instead of int
This commit is contained in:
@@ -22,37 +22,34 @@
|
||||
package client;
|
||||
|
||||
import constants.game.GameConstants;
|
||||
import server.life.MobSkillType;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public enum Disease {
|
||||
NULL(0x0),
|
||||
SLOW(0x1, 126),
|
||||
SEDUCE(0x80, 128),
|
||||
SLOW(0x1, MobSkillType.SLOW),
|
||||
SEDUCE(0x80, MobSkillType.SEDUCE),
|
||||
FISHABLE(0x100),
|
||||
ZOMBIFY(0x4000),
|
||||
CONFUSE(0x80000, 132),
|
||||
STUN(0x2000000000000L, 123),
|
||||
POISON(0x4000000000000L, 125),
|
||||
SEAL(0x8000000000000L, 120),
|
||||
DARKNESS(0x10000000000000L, 121),
|
||||
WEAKEN(0x4000000000000000L, 122),
|
||||
CURSE(0x8000000000000000L, 124);
|
||||
CONFUSE(0x80000, MobSkillType.REVERSE_INPUT),
|
||||
STUN(0x2000000000000L, MobSkillType.STUN),
|
||||
POISON(0x4000000000000L, MobSkillType.POISON),
|
||||
SEAL(0x8000000000000L, MobSkillType.SEAL),
|
||||
DARKNESS(0x10000000000000L, MobSkillType.DARKNESS),
|
||||
WEAKEN(0x4000000000000000L, MobSkillType.WEAKNESS),
|
||||
CURSE(0x8000000000000000L, MobSkillType.CURSE);
|
||||
|
||||
private final long i;
|
||||
private final boolean first;
|
||||
private final int mobskill;
|
||||
private final MobSkillType mobSkillType;
|
||||
|
||||
Disease(long i) {
|
||||
this(i, false, 0);
|
||||
this(i, null);
|
||||
}
|
||||
|
||||
Disease(long i, int skill) {
|
||||
this(i, false, skill);
|
||||
}
|
||||
|
||||
Disease(long i, boolean first, int skill) {
|
||||
Disease(long i, MobSkillType skill) {
|
||||
this.i = i;
|
||||
this.first = first;
|
||||
this.mobskill = skill;
|
||||
this.mobSkillType = skill;
|
||||
}
|
||||
|
||||
public long getValue() {
|
||||
@@ -60,11 +57,11 @@ public enum Disease {
|
||||
}
|
||||
|
||||
public boolean isFirst() {
|
||||
return first;
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getDisease() {
|
||||
return mobskill;
|
||||
public MobSkillType getMobSkillType() {
|
||||
return mobSkillType;
|
||||
}
|
||||
|
||||
public static Disease ordinal(int ord) {
|
||||
@@ -80,13 +77,14 @@ public enum Disease {
|
||||
return diseases[(int) (Math.random() * diseases.length)];
|
||||
}
|
||||
|
||||
public static final Disease getBySkill(final int skill) {
|
||||
for (Disease d : Disease.values()) {
|
||||
if (d.getDisease() == skill && d.getDisease() != 0) {
|
||||
return d;
|
||||
}
|
||||
public static final Disease getBySkill(MobSkillType skill) {
|
||||
if (skill == null) {
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
return Arrays.stream(Disease.values())
|
||||
.filter(d -> d.mobSkillType == skill)
|
||||
.findAny()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -29,6 +29,7 @@ import net.packet.InPacket;
|
||||
import net.server.world.Party;
|
||||
import net.server.world.PartyCharacter;
|
||||
import server.life.LifeFactory;
|
||||
import server.life.MobSkillType;
|
||||
import server.life.Monster;
|
||||
import server.partyquest.CarnivalFactory;
|
||||
import server.partyquest.CarnivalFactory.MCSkill;
|
||||
@@ -102,10 +103,7 @@ public final class MonsterCarnivalHandler extends AbstractPacketHandler {
|
||||
final Disease dis = skill.getDisease();
|
||||
Party enemies = c.getPlayer().getParty().getEnemy();
|
||||
if (skill.targetsAll) {
|
||||
int hitChance = 0;
|
||||
if (dis.getDisease() == 121 || dis.getDisease() == 122 || dis.getDisease() == 125 || dis.getDisease() == 126) {
|
||||
hitChance = (int) (Math.random() * 100);
|
||||
}
|
||||
int hitChance = rollHitChance(dis.getMobSkillType());
|
||||
if (hitChance <= 80) {
|
||||
for (PartyCharacter mpc : enemies.getPartyMembers()) {
|
||||
Character mc = mpc.getPlayer();
|
||||
@@ -179,4 +177,11 @@ public final class MonsterCarnivalHandler extends AbstractPacketHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int rollHitChance(MobSkillType type) {
|
||||
return switch (type) {
|
||||
case DARKNESS, WEAKNESS, POISON, SLOW -> (int) (Math.random() * 100);
|
||||
default -> 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1046,7 +1046,7 @@ public class StatEffect {
|
||||
if (dis == null) {
|
||||
chrApp.dispel();
|
||||
} else {
|
||||
chrApp.giveDebuff(dis, MCSkill.getMobSkill(dis.getDisease(), skill.level));
|
||||
chrApp.giveDebuff(dis, MCSkill.getMobSkill(dis.getMobSkillType(), skill.level));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1058,7 +1058,7 @@ public class StatEffect {
|
||||
if (dis == null) {
|
||||
chrApp.dispel();
|
||||
} else {
|
||||
chrApp.giveDebuff(dis, MCSkill.getMobSkill(dis.getDisease(), skill.level));
|
||||
chrApp.giveDebuff(dis, MCSkill.getMobSkill(dis.getMobSkillType(), skill.level));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1068,8 +1068,9 @@ public class StatEffect {
|
||||
applyfrom.dispelDebuff(debuff);
|
||||
}
|
||||
} else if (mobSkill > 0 && mobSkillLevel > 0) {
|
||||
MobSkill ms = MobSkillFactory.getMobSkill(MobSkillType.from(mobSkill), mobSkillLevel);
|
||||
Disease dis = Disease.getBySkill(mobSkill);
|
||||
var mobSkillType = MobSkillType.from(mobSkill);
|
||||
MobSkill ms = MobSkillFactory.getMobSkill(mobSkillType, mobSkillLevel);
|
||||
Disease dis = Disease.getBySkill(mobSkillType);
|
||||
|
||||
if (target > 0) {
|
||||
for (Character chr : applyto.getMap().getAllPlayers()) {
|
||||
|
||||
@@ -43,7 +43,15 @@ public class CarnivalFactory {
|
||||
}
|
||||
for (Data z : dataRoot.getData("MCSkill.img")) {
|
||||
Integer id = Integer.parseInt(z.getName());
|
||||
MCSkill ms = new MCSkill(DataTool.getInt("spendCP", z, 0), DataTool.getInt("mobSkillID", z, 0), DataTool.getInt("level", z, 0), DataTool.getInt("target", z, 1) > 1);
|
||||
int spendCp = DataTool.getInt("spendCP", z, 0);
|
||||
int mobSkillId = DataTool.getInt("mobSkillID", z, 0);
|
||||
MobSkillType mobSkillType = null;
|
||||
if (mobSkillId != 0) {
|
||||
mobSkillType = MobSkillType.from(mobSkillId);
|
||||
}
|
||||
int level = DataTool.getInt("level", z, 0);
|
||||
boolean isMultiTarget = DataTool.getInt("target", z, 1) > 1;
|
||||
MCSkill ms = new MCSkill(spendCp, mobSkillType, level, isMultiTarget);
|
||||
|
||||
skills.put(id, ms);
|
||||
if (ms.targetsAll) {
|
||||
@@ -53,7 +61,11 @@ public class CarnivalFactory {
|
||||
}
|
||||
}
|
||||
for (Data z : dataRoot.getData("MCGuardian.img")) {
|
||||
guardians.put(Integer.parseInt(z.getName()), new MCSkill(DataTool.getInt("spendCP", z, 0), DataTool.getInt("mobSkillID", z, 0), DataTool.getInt("level", z, 0), true));
|
||||
int spendCp = DataTool.getInt("spendCP", z, 0);
|
||||
int mobSkillId = DataTool.getInt("mobSkillID", z, 0);
|
||||
MobSkillType mobSkillType = MobSkillType.from(mobSkillId);
|
||||
int level = DataTool.getInt("level", z, 0);
|
||||
guardians.put(Integer.parseInt(z.getName()), new MCSkill(spendCp, mobSkillType, level, true));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +79,7 @@ public class CarnivalFactory {
|
||||
|
||||
public MCSkill getSkill(final int id) {
|
||||
MCSkill skill = skills.get(id);
|
||||
if (skill != null && skill.skillid <= 0) {
|
||||
if (skill != null && skill.mobSkillType == null) {
|
||||
return randomizeSkill(skill.targetsAll);
|
||||
} else {
|
||||
return skill;
|
||||
@@ -80,26 +92,28 @@ public class CarnivalFactory {
|
||||
|
||||
public static class MCSkill {
|
||||
|
||||
public int cpLoss, skillid, level;
|
||||
public int cpLoss;
|
||||
public MobSkillType mobSkillType;
|
||||
public int level;
|
||||
public boolean targetsAll;
|
||||
|
||||
public MCSkill(int _cpLoss, int _skillid, int _level, boolean _targetsAll) {
|
||||
public MCSkill(int _cpLoss, MobSkillType mobSkillType, int _level, boolean _targetsAll) {
|
||||
cpLoss = _cpLoss;
|
||||
skillid = _skillid;
|
||||
mobSkillType = mobSkillType;
|
||||
level = _level;
|
||||
targetsAll = _targetsAll;
|
||||
}
|
||||
|
||||
public MobSkill getSkill() {
|
||||
return getMobSkill(skillid, level);
|
||||
return getMobSkill(mobSkillType, level);
|
||||
}
|
||||
|
||||
public static MobSkill getMobSkill(int skillid, int level) {
|
||||
return MobSkillFactory.getMobSkill(MobSkillType.from(skillid), level);
|
||||
public static MobSkill getMobSkill(MobSkillType type, int level) {
|
||||
return MobSkillFactory.getMobSkill(type, level);
|
||||
}
|
||||
|
||||
public Disease getDisease() {
|
||||
return Disease.getBySkill(skillid);
|
||||
return Disease.getBySkill(mobSkillType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user