Rename and clean up MapleStat

This commit is contained in:
P0nk
2021-09-09 21:25:35 +02:00
parent 8f91d8e7ac
commit d35ead558f
13 changed files with 110 additions and 111 deletions

View File

@@ -6,7 +6,7 @@ function enter(pi) {
//lol nexon does this xD //lol nexon does this xD
pi.teachSkill(20000017, 0, -1, -1); pi.teachSkill(20000017, 0, -1, -1);
pi.teachSkill(20000018, 0, -1, -1); pi.teachSkill(20000018, 0, -1, -1);
//nexon sends updatePlayerStats MapleStat.AVAILABLESP 0 //nexon sends updatePlayerStats Stat.AVAILABLESP 0
pi.teachSkill(20000017, 1, 0, -1); pi.teachSkill(20000017, 1, 0, -1);
pi.teachSkill(20000018, 1, 0, -1); pi.teachSkill(20000018, 1, 0, -1);
//actually nexon does enableActions here :P //actually nexon does enableActions here :P

View File

@@ -2,7 +2,7 @@ function enter(pi) {
//lol nexon does this xD //lol nexon does this xD
pi.teachSkill(20000014, 0, -1, -1); pi.teachSkill(20000014, 0, -1, -1);
pi.teachSkill(20000015, 0, -1, -1); pi.teachSkill(20000015, 0, -1, -1);
//nexon sends updatePlayerStats MapleStat.AVAILABLESP 0 //nexon sends updatePlayerStats Stat.AVAILABLESP 0
pi.teachSkill(20000014, 1, 0, -1); pi.teachSkill(20000014, 1, 0, -1);
pi.teachSkill(20000015, 1, 0, -1); pi.teachSkill(20000015, 1, 0, -1);
//actually nexon does enableActions here :P //actually nexon does enableActions here :P

View File

@@ -1,7 +1,7 @@
function enter(pi) { function enter(pi) {
//lol nexon does this xD //lol nexon does this xD
pi.teachSkill(20000016, 0, -1, -1); pi.teachSkill(20000016, 0, -1, -1);
//nexon sends updatePlayerStats MapleStat.AVAILABLESP 0 //nexon sends updatePlayerStats Stat.AVAILABLESP 0
pi.teachSkill(20000016, 1, 0, -1); pi.teachSkill(20000016, 1, 0, -1);
//actually nexon does enableActions here :P //actually nexon does enableActions here :P
pi.playPortalSound(); pi.warp(914000220, 1); pi.playPortalSound(); pi.warp(914000220, 1);

View File

@@ -48,7 +48,7 @@ public abstract class AbstractCharacterObject extends AbstractAnimatedMapleMapOb
protected float transienthp = Float.NEGATIVE_INFINITY, transientmp = Float.NEGATIVE_INFINITY; protected float transienthp = Float.NEGATIVE_INFINITY, transientmp = Float.NEGATIVE_INFINITY;
private AbstractCharacterListener listener = null; private AbstractCharacterListener listener = null;
protected Map<MapleStat, Integer> statUpdates = new HashMap<>(); protected Map<Stat, Integer> statUpdates = new HashMap<>();
protected Lock effLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_EFF, true); protected Lock effLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_EFF, true);
protected MonitoredReadLock statRlock; protected MonitoredReadLock statRlock;
@@ -332,13 +332,13 @@ public abstract class AbstractCharacterObject extends AbstractAnimatedMapleMapOb
poolUpdate = true; poolUpdate = true;
setMaxHp(newMaxHp); setMaxHp(newMaxHp);
statUpdates.put(MapleStat.MAXHP, clientmaxhp); statUpdates.put(Stat.MAXHP, clientmaxhp);
statUpdates.put(MapleStat.HP, hp); statUpdates.put(Stat.HP, hp);
} }
if (newHp != Short.MIN_VALUE) { if (newHp != Short.MIN_VALUE) {
setHp(newHp); setHp(newHp);
statUpdates.put(MapleStat.HP, hp); statUpdates.put(Stat.HP, hp);
} }
if (newMaxMp != Short.MIN_VALUE) { if (newMaxMp != Short.MIN_VALUE) {
@@ -348,13 +348,13 @@ public abstract class AbstractCharacterObject extends AbstractAnimatedMapleMapOb
poolUpdate = true; poolUpdate = true;
setMaxMp(newMaxMp); setMaxMp(newMaxMp);
statUpdates.put(MapleStat.MAXMP, clientmaxmp); statUpdates.put(Stat.MAXMP, clientmaxmp);
statUpdates.put(MapleStat.MP, mp); statUpdates.put(Stat.MP, mp);
} }
if (newMp != Short.MIN_VALUE) { if (newMp != Short.MIN_VALUE) {
setMp(newMp); setMp(newMp);
statUpdates.put(MapleStat.MP, mp); statUpdates.put(Stat.MP, mp);
} }
} }
@@ -366,27 +366,27 @@ public abstract class AbstractCharacterObject extends AbstractAnimatedMapleMapOb
if (newStr >= 4) { if (newStr >= 4) {
setStr(newStr); setStr(newStr);
statUpdates.put(MapleStat.STR, str); statUpdates.put(Stat.STR, str);
} }
if (newDex >= 4) { if (newDex >= 4) {
setDex(newDex); setDex(newDex);
statUpdates.put(MapleStat.DEX, dex); statUpdates.put(Stat.DEX, dex);
} }
if (newInt >= 4) { if (newInt >= 4) {
setInt(newInt); setInt(newInt);
statUpdates.put(MapleStat.INT, int_); statUpdates.put(Stat.INT, int_);
} }
if (newLuk >= 4) { if (newLuk >= 4) {
setLuk(newLuk); setLuk(newLuk);
statUpdates.put(MapleStat.LUK, luk); statUpdates.put(Stat.LUK, luk);
} }
if (newAp >= 0) { if (newAp >= 0) {
setRemainingAp(newAp); setRemainingAp(newAp);
statUpdates.put(MapleStat.AVAILABLEAP, remainingAp); statUpdates.put(Stat.AVAILABLEAP, remainingAp);
} }
statUpdate = true; statUpdate = true;
@@ -397,7 +397,7 @@ public abstract class AbstractCharacterObject extends AbstractAnimatedMapleMapOb
short skillbook = newSp.shortValue(); short skillbook = newSp.shortValue();
setRemainingSp(sp, skillbook); setRemainingSp(sp, skillbook);
statUpdates.put(MapleStat.AVAILABLESP, remainingSp[skillbook]); statUpdates.put(Stat.AVAILABLESP, remainingSp[skillbook]);
} }
if (!statUpdates.isEmpty()) { if (!statUpdates.isEmpty()) {

View File

@@ -268,19 +268,19 @@ public class Character extends AbstractCharacterObject {
@Override @Override
public void onHpmpPoolUpdate() { public void onHpmpPoolUpdate() {
List<Pair<MapleStat, Integer>> hpmpupdate = recalcLocalStats(); List<Pair<Stat, Integer>> hpmpupdate = recalcLocalStats();
for (Pair<MapleStat, Integer> p : hpmpupdate) { for (Pair<Stat, Integer> p : hpmpupdate) {
statUpdates.put(p.getLeft(), p.getRight()); statUpdates.put(p.getLeft(), p.getRight());
} }
if (hp > localmaxhp) { if (hp > localmaxhp) {
setHp(localmaxhp); setHp(localmaxhp);
statUpdates.put(MapleStat.HP, hp); statUpdates.put(Stat.HP, hp);
} }
if (mp > localmaxmp) { if (mp > localmaxmp) {
setMp(localmaxmp); setMp(localmaxmp);
statUpdates.put(MapleStat.MP, mp); statUpdates.put(Stat.MP, mp);
} }
} }
@@ -291,8 +291,8 @@ public class Character extends AbstractCharacterObject {
@Override @Override
public void onAnnounceStatPoolUpdate() { public void onAnnounceStatPoolUpdate() {
List<Pair<MapleStat, Integer>> statup = new ArrayList<>(8); List<Pair<Stat, Integer>> statup = new ArrayList<>(8);
for (Map.Entry<MapleStat, Integer> s : statUpdates.entrySet()) { for (Map.Entry<Stat, Integer> s : statUpdates.entrySet()) {
statup.add(new Pair<>(s.getKey(), s.getValue())); statup.add(new Pair<>(s.getKey(), s.getValue()));
} }
@@ -1129,14 +1129,14 @@ public class Character extends AbstractCharacterObject {
addMaxMPMaxHP(addhp, addmp, true); addMaxMPMaxHP(addhp, addmp, true);
recalcLocalStats(); recalcLocalStats();
List<Pair<MapleStat, Integer>> statup = new ArrayList<>(7); List<Pair<Stat, Integer>> statup = new ArrayList<>(7);
statup.add(new Pair<>(MapleStat.HP, hp)); statup.add(new Pair<>(Stat.HP, hp));
statup.add(new Pair<>(MapleStat.MP, mp)); statup.add(new Pair<>(Stat.MP, mp));
statup.add(new Pair<>(MapleStat.MAXHP, clientmaxhp)); statup.add(new Pair<>(Stat.MAXHP, clientmaxhp));
statup.add(new Pair<>(MapleStat.MAXMP, clientmaxmp)); statup.add(new Pair<>(Stat.MAXMP, clientmaxmp));
statup.add(new Pair<>(MapleStat.AVAILABLEAP, remainingAp)); statup.add(new Pair<>(Stat.AVAILABLEAP, remainingAp));
statup.add(new Pair<>(MapleStat.AVAILABLESP, remainingSp[GameConstants.getSkillBook(job.getId())])); statup.add(new Pair<>(Stat.AVAILABLESP, remainingSp[GameConstants.getSkillBook(job.getId())]));
statup.add(new Pair<>(MapleStat.JOB, job.getId())); statup.add(new Pair<>(Stat.JOB, job.getId()));
sendPacket(PacketCreator.updatePlayerStats(statup, true, this)); sendPacket(PacketCreator.updatePlayerStats(statup, true, this));
} finally { } finally {
statWlock.unlock(); statWlock.unlock();
@@ -3032,11 +3032,11 @@ public class Character extends AbstractCharacterObject {
expgain = this.gachaexp.getAndSet(0); expgain = this.gachaexp.getAndSet(0);
} }
gainExp(expgain, false, true); gainExp(expgain, false, true);
updateSingleStat(MapleStat.GACHAEXP, this.gachaexp.get()); updateSingleStat(Stat.GACHAEXP, this.gachaexp.get());
} }
public void addGachaExp(int gain) { public void addGachaExp(int gain) {
updateSingleStat(MapleStat.GACHAEXP, gachaexp.addAndGet(gain)); updateSingleStat(Stat.GACHAEXP, gachaexp.addAndGet(gain));
} }
public void gainExp(int gain) { public void gainExp(int gain) {
@@ -3104,7 +3104,7 @@ public class Character extends AbstractCharacterObject {
total = Integer.MAX_VALUE - exp.get(); total = Integer.MAX_VALUE - exp.get();
leftover = nextExp - Integer.MAX_VALUE; leftover = nextExp - Integer.MAX_VALUE;
} }
updateSingleStat(MapleStat.EXP, exp.addAndGet((int) total)); updateSingleStat(Stat.EXP, exp.addAndGet((int) total));
if (show) { if (show) {
announceExpGain(gain, equip, party, inChat, white); announceExpGain(gain, equip, party, inChat, white);
} }
@@ -3112,7 +3112,7 @@ public class Character extends AbstractCharacterObject {
levelUp(true); levelUp(true);
if (level == getMaxLevel()) { if (level == getMaxLevel()) {
setExp(0); setExp(0);
updateSingleStat(MapleStat.EXP, 0); updateSingleStat(Stat.EXP, 0);
break; break;
} }
} }
@@ -3151,7 +3151,7 @@ public class Character extends AbstractCharacterObject {
delta = fameRes.getRight(); delta = fameRes.getRight();
if (delta != 0) { if (delta != 0) {
int thisFame = fameRes.getLeft(); int thisFame = fameRes.getLeft();
updateSingleStat(MapleStat.FAME, thisFame); updateSingleStat(Stat.FAME, thisFame);
if (fromPlayer != null) { if (fromPlayer != null) {
fromPlayer.sendPacket(PacketCreator.giveFameResponse(mode, getName(), thisFame)); fromPlayer.sendPacket(PacketCreator.giveFameResponse(mode, getName(), thisFame));
@@ -3195,7 +3195,7 @@ public class Character extends AbstractCharacterObject {
} }
if (gain != 0) { if (gain != 0) {
updateSingleStat(MapleStat.MESO, (int) nextMeso, enableActions); updateSingleStat(Stat.MESO, (int) nextMeso, enableActions);
if (show) { if (show) {
sendPacket(PacketCreator.getShowMesoGain(gain, inChat)); sendPacket(PacketCreator.getShowMesoGain(gain, inChat));
} }
@@ -6431,17 +6431,17 @@ public class Character extends AbstractCharacterObject {
recalcLocalStats(); recalcLocalStats();
changeHpMp(localmaxhp, localmaxmp, true); changeHpMp(localmaxhp, localmaxmp, true);
List<Pair<MapleStat, Integer>> statup = new ArrayList<>(10); List<Pair<Stat, Integer>> statup = new ArrayList<>(10);
statup.add(new Pair<>(MapleStat.AVAILABLEAP, remainingAp)); statup.add(new Pair<>(Stat.AVAILABLEAP, remainingAp));
statup.add(new Pair<>(MapleStat.AVAILABLESP, remainingSp[GameConstants.getSkillBook(job.getId())])); statup.add(new Pair<>(Stat.AVAILABLESP, remainingSp[GameConstants.getSkillBook(job.getId())]));
statup.add(new Pair<>(MapleStat.HP, hp)); statup.add(new Pair<>(Stat.HP, hp));
statup.add(new Pair<>(MapleStat.MP, mp)); statup.add(new Pair<>(Stat.MP, mp));
statup.add(new Pair<>(MapleStat.EXP, exp.get())); statup.add(new Pair<>(Stat.EXP, exp.get()));
statup.add(new Pair<>(MapleStat.LEVEL, level)); statup.add(new Pair<>(Stat.LEVEL, level));
statup.add(new Pair<>(MapleStat.MAXHP, clientmaxhp)); statup.add(new Pair<>(Stat.MAXHP, clientmaxhp));
statup.add(new Pair<>(MapleStat.MAXMP, clientmaxmp)); statup.add(new Pair<>(Stat.MAXMP, clientmaxmp));
statup.add(new Pair<>(MapleStat.STR, str)); statup.add(new Pair<>(Stat.STR, str));
statup.add(new Pair<>(MapleStat.DEX, dex)); statup.add(new Pair<>(Stat.DEX, dex));
sendPacket(PacketCreator.updatePlayerStats(statup, true, this)); sendPacket(PacketCreator.updatePlayerStats(statup, true, this));
} finally { } finally {
@@ -7862,12 +7862,12 @@ public class Character extends AbstractCharacterObject {
} }
} }
private List<Pair<MapleStat, Integer>> recalcLocalStats() { private List<Pair<Stat, Integer>> recalcLocalStats() {
effLock.lock(); effLock.lock();
chrLock.lock(); chrLock.lock();
statWlock.lock(); statWlock.lock();
try { try {
List<Pair<MapleStat, Integer>> hpmpupdate = new ArrayList<>(2); List<Pair<Stat, Integer>> hpmpupdate = new ArrayList<>(2);
int oldlocalmaxhp = localmaxhp; int oldlocalmaxhp = localmaxhp;
int oldlocalmaxmp = localmaxmp; int oldlocalmaxmp = localmaxmp;
@@ -7875,7 +7875,7 @@ public class Character extends AbstractCharacterObject {
if (YamlConfig.config.server.USE_FIXED_RATIO_HPMP_UPDATE) { if (YamlConfig.config.server.USE_FIXED_RATIO_HPMP_UPDATE) {
if (localmaxhp != oldlocalmaxhp) { if (localmaxhp != oldlocalmaxhp) {
Pair<MapleStat, Integer> hpUpdate; Pair<Stat, Integer> hpUpdate;
if (transienthp == Float.NEGATIVE_INFINITY) { if (transienthp == Float.NEGATIVE_INFINITY) {
hpUpdate = calcHpRatioUpdate(localmaxhp, oldlocalmaxhp); hpUpdate = calcHpRatioUpdate(localmaxhp, oldlocalmaxhp);
@@ -7887,7 +7887,7 @@ public class Character extends AbstractCharacterObject {
} }
if (localmaxmp != oldlocalmaxmp) { if (localmaxmp != oldlocalmaxmp) {
Pair<MapleStat, Integer> mpUpdate; Pair<Stat, Integer> mpUpdate;
if (transientmp == Float.NEGATIVE_INFINITY) { if (transientmp == Float.NEGATIVE_INFINITY) {
mpUpdate = calcMpRatioUpdate(localmaxmp, oldlocalmaxmp); mpUpdate = calcMpRatioUpdate(localmaxmp, oldlocalmaxmp);
@@ -7913,7 +7913,7 @@ public class Character extends AbstractCharacterObject {
statWlock.lock(); statWlock.lock();
try { try {
int oldmaxhp = localmaxhp; int oldmaxhp = localmaxhp;
List<Pair<MapleStat, Integer>> hpmpupdate = recalcLocalStats(); List<Pair<Stat, Integer>> hpmpupdate = recalcLocalStats();
enforceMaxHpMp(); enforceMaxHpMp();
if (!hpmpupdate.isEmpty()) { if (!hpmpupdate.isEmpty()) {
@@ -9031,18 +9031,18 @@ public class Character extends AbstractCharacterObject {
} }
} }
private Pair<MapleStat, Integer> calcHpRatioUpdate(int newHp, int oldHp) { private Pair<Stat, Integer> calcHpRatioUpdate(int newHp, int oldHp) {
int delta = newHp - oldHp; int delta = newHp - oldHp;
this.hp = calcHpRatioUpdate(hp, oldHp, delta); this.hp = calcHpRatioUpdate(hp, oldHp, delta);
hpChangeAction(Short.MIN_VALUE); hpChangeAction(Short.MIN_VALUE);
return new Pair<>(MapleStat.HP, hp); return new Pair<>(Stat.HP, hp);
} }
private Pair<MapleStat, Integer> calcMpRatioUpdate(int newMp, int oldMp) { private Pair<Stat, Integer> calcMpRatioUpdate(int newMp, int oldMp) {
int delta = newMp - oldMp; int delta = newMp - oldMp;
this.mp = calcMpRatioUpdate(mp, oldMp, delta); this.mp = calcMpRatioUpdate(mp, oldMp, delta);
return new Pair<>(MapleStat.MP, mp); return new Pair<>(Stat.MP, mp);
} }
private static int calcTransientRatio(float transientpoint) { private static int calcTransientRatio(float transientpoint) {
@@ -9050,16 +9050,16 @@ public class Character extends AbstractCharacterObject {
return !(ret <= 0 && transientpoint > 0.0f) ? ret : 1; return !(ret <= 0 && transientpoint > 0.0f) ? ret : 1;
} }
private Pair<MapleStat, Integer> calcHpRatioTransient() { private Pair<Stat, Integer> calcHpRatioTransient() {
this.hp = calcTransientRatio(transienthp * localmaxhp); this.hp = calcTransientRatio(transienthp * localmaxhp);
hpChangeAction(Short.MIN_VALUE); hpChangeAction(Short.MIN_VALUE);
return new Pair<>(MapleStat.HP, hp); return new Pair<>(Stat.HP, hp);
} }
private Pair<MapleStat, Integer> calcMpRatioTransient() { private Pair<Stat, Integer> calcMpRatioTransient() {
this.mp = calcTransientRatio(transientmp * localmaxmp); this.mp = calcTransientRatio(transientmp * localmaxmp);
return new Pair<>(MapleStat.MP, mp); return new Pair<>(Stat.MP, mp);
} }
private int calcHpRatioUpdate(int curpoint, int maxpoint, int diffpoint) { private int calcHpRatioUpdate(int curpoint, int maxpoint, int diffpoint) {
@@ -10047,11 +10047,11 @@ public class Character extends AbstractCharacterObject {
} }
} }
public void updateSingleStat(MapleStat stat, int newval) { public void updateSingleStat(Stat stat, int newval) {
updateSingleStat(stat, newval, false); updateSingleStat(stat, newval, false);
} }
private void updateSingleStat(MapleStat stat, int newval, boolean itemReaction) { private void updateSingleStat(Stat stat, int newval, boolean itemReaction) {
sendPacket(PacketCreator.updatePlayerStats(Collections.singletonList(new Pair<>(stat, Integer.valueOf(newval))), itemReaction, this)); sendPacket(PacketCreator.updatePlayerStats(Collections.singletonList(new Pair<>(stat, Integer.valueOf(newval))), itemReaction, this));
} }

View File

@@ -21,8 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package client; package client;
public enum MapleStat { public enum Stat {
SKIN(0x1), SKIN(0x1),
FACE(0x2), FACE(0x2),
HAIR(0x4), HAIR(0x4),
@@ -45,7 +44,7 @@ public enum MapleStat {
GACHAEXP(0x200000); GACHAEXP(0x200000);
private final int i; private final int i;
private MapleStat(int i) { Stat(int i) {
this.i = i; this.i = i;
} }
@@ -53,8 +52,8 @@ public enum MapleStat {
return i; return i;
} }
public static MapleStat getByValue(int value) { public static Stat getByValue(int value) {
for (MapleStat stat : MapleStat.values()) { for (Stat stat : Stat.values()) {
if (stat.getValue() == value) { if (stat.getValue() == value) {
return stat; return stat;
} }
@@ -62,7 +61,7 @@ public enum MapleStat {
return null; return null;
} }
public static MapleStat getBy5ByteEncoding(int encoded) { public static Stat getBy5ByteEncoding(int encoded) {
switch (encoded) { switch (encoded) {
case 64: case 64:
return STR; return STR;
@@ -76,7 +75,7 @@ public enum MapleStat {
return null; return null;
} }
public static MapleStat getByString(String type) { public static Stat getByString(String type) {
if (type.equals("SKIN")) { if (type.equals("SKIN")) {
return SKIN; return SKIN;
} else if (type.equals("FACE")) { } else if (type.equals("FACE")) {

View File

@@ -25,7 +25,7 @@ package client.command.commands.gm2;
import client.Character; import client.Character;
import client.Client; import client.Client;
import client.MapleStat; import client.Stat;
import client.command.Command; import client.command.Command;
import config.YamlConfig; import config.YamlConfig;
@@ -45,8 +45,8 @@ public class MaxStatCommand extends Command {
player.updateStrDexIntLuk(Short.MAX_VALUE); player.updateStrDexIntLuk(Short.MAX_VALUE);
player.setFame(13337); player.setFame(13337);
player.updateMaxHpMaxMp(30000, 30000); player.updateMaxHpMaxMp(30000, 30000);
player.updateSingleStat(MapleStat.LEVEL, 255); player.updateSingleStat(Stat.LEVEL, 255);
player.updateSingleStat(MapleStat.FAME, 13337); player.updateSingleStat(Stat.FAME, 13337);
player.yellowMessage("Stats maxed out."); player.yellowMessage("Stats maxed out.");
} }
} }

View File

@@ -25,7 +25,7 @@ package client.command.commands.gm3;
import client.Character; import client.Character;
import client.Client; import client.Client;
import client.MapleStat; import client.Stat;
import client.command.Command; import client.command.Command;
import constants.inventory.ItemConstants; import constants.inventory.ItemConstants;
import server.MapleItemInformationProvider; import server.MapleItemInformationProvider;
@@ -52,7 +52,7 @@ public class FaceCommand extends Command {
} }
player.setFace(itemId); player.setFace(itemId);
player.updateSingleStat(MapleStat.FACE, itemId); player.updateSingleStat(Stat.FACE, itemId);
player.equipChanged(); player.equipChanged();
} else { } else {
int itemId = Integer.parseInt(params[1]); int itemId = Integer.parseInt(params[1]);
@@ -63,7 +63,7 @@ public class FaceCommand extends Command {
Character victim = c.getChannelServer().getPlayerStorage().getCharacterByName(params[0]); Character victim = c.getChannelServer().getPlayerStorage().getCharacterByName(params[0]);
if (victim == null) { if (victim == null) {
victim.setFace(itemId); victim.setFace(itemId);
victim.updateSingleStat(MapleStat.FACE, itemId); victim.updateSingleStat(Stat.FACE, itemId);
victim.equipChanged(); victim.equipChanged();
} else { } else {
player.yellowMessage("Player '" + params[0] + "' has not been found on this channel."); player.yellowMessage("Player '" + params[0] + "' has not been found on this channel.");

View File

@@ -25,7 +25,7 @@ package client.command.commands.gm3;
import client.Character; import client.Character;
import client.Client; import client.Client;
import client.MapleStat; import client.Stat;
import client.command.Command; import client.command.Command;
public class FameCommand extends Command { public class FameCommand extends Command {
@@ -44,7 +44,7 @@ public class FameCommand extends Command {
Character victim = c.getWorldServer().getPlayerStorage().getCharacterByName(params[0]); Character victim = c.getWorldServer().getPlayerStorage().getCharacterByName(params[0]);
if (victim != null) { if (victim != null) {
victim.setFame(Integer.parseInt(params[1])); victim.setFame(Integer.parseInt(params[1]));
victim.updateSingleStat(MapleStat.FAME, victim.getFame()); victim.updateSingleStat(Stat.FAME, victim.getFame());
player.message("FAME given."); player.message("FAME given.");
} else { } else {
player.message("Player '" + params[0] + "' could not be found."); player.message("Player '" + params[0] + "' could not be found.");

View File

@@ -25,7 +25,7 @@ package client.command.commands.gm3;
import client.Character; import client.Character;
import client.Client; import client.Client;
import client.MapleStat; import client.Stat;
import client.command.Command; import client.command.Command;
import constants.inventory.ItemConstants; import constants.inventory.ItemConstants;
import server.MapleItemInformationProvider; import server.MapleItemInformationProvider;
@@ -52,7 +52,7 @@ public class HairCommand extends Command {
} }
player.setHair(itemId); player.setHair(itemId);
player.updateSingleStat(MapleStat.HAIR, itemId); player.updateSingleStat(Stat.HAIR, itemId);
player.equipChanged(); player.equipChanged();
} else { } else {
int itemId = Integer.parseInt(params[1]); int itemId = Integer.parseInt(params[1]);
@@ -64,7 +64,7 @@ public class HairCommand extends Command {
Character victim = c.getChannelServer().getPlayerStorage().getCharacterByName(params[0]); Character victim = c.getChannelServer().getPlayerStorage().getCharacterByName(params[0]);
if (victim != null) { if (victim != null) {
victim.setHair(itemId); victim.setHair(itemId);
victim.updateSingleStat(MapleStat.HAIR, itemId); victim.updateSingleStat(Stat.HAIR, itemId);
victim.equipChanged(); victim.equipChanged();
} else { } else {
player.yellowMessage("Player '" + params[0] + "' has not been found on this channel."); player.yellowMessage("Player '" + params[0] + "' has not been found on this channel.");

View File

@@ -110,7 +110,7 @@ public class AssignAPProcessor {
int prStat = 0, scStat = 0, trStat = 0, temp, tempAp = remainingAp, CAP; int prStat = 0, scStat = 0, trStat = 0, temp, tempAp = remainingAp, CAP;
if (tempAp < 1) return; if (tempAp < 1) return;
MapleStat primary, secondary, tertiary = MapleStat.LUK; Stat primary, secondary, tertiary = Stat.LUK;
switch(stance) { switch(stance) {
case MAGICIAN: case MAGICIAN:
CAP = 165; CAP = 165;
@@ -132,9 +132,9 @@ public class AssignAPProcessor {
prStat += temp; prStat += temp;
} }
primary = MapleStat.INT; primary = Stat.INT;
secondary = MapleStat.LUK; secondary = Stat.LUK;
tertiary = MapleStat.DEX; tertiary = Stat.DEX;
break; break;
@@ -158,8 +158,8 @@ public class AssignAPProcessor {
prStat += temp; prStat += temp;
} }
primary = MapleStat.DEX; primary = Stat.DEX;
secondary = MapleStat.STR; secondary = Stat.STR;
break; break;
@@ -184,8 +184,8 @@ public class AssignAPProcessor {
prStat += temp; prStat += temp;
} }
primary = MapleStat.DEX; primary = Stat.DEX;
secondary = MapleStat.STR; secondary = Stat.STR;
break; break;
@@ -243,9 +243,9 @@ public class AssignAPProcessor {
prStat += temp; prStat += temp;
} }
primary = MapleStat.LUK; primary = Stat.LUK;
secondary = MapleStat.DEX; secondary = Stat.DEX;
tertiary = MapleStat.STR; tertiary = Stat.STR;
break; break;
@@ -310,8 +310,8 @@ public class AssignAPProcessor {
prStat += temp; prStat += temp;
} }
primary = MapleStat.STR; primary = Stat.STR;
secondary = MapleStat.DEX; secondary = Stat.DEX;
} }
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
@@ -350,7 +350,7 @@ public class AssignAPProcessor {
return; return;
} }
gainStatByType(MapleStat.getBy5ByteEncoding(type), statGain, tempVal, statUpdate); gainStatByType(Stat.getBy5ByteEncoding(type), statGain, tempVal, statUpdate);
} }
chr.assignStrDexIntLuk(statGain[0], statGain[1], statGain[3], statGain[2]); chr.assignStrDexIntLuk(statGain[0], statGain[1], statGain[3], statGain[2]);
@@ -365,11 +365,11 @@ public class AssignAPProcessor {
return(statList.size() <= rank ? 0 : statList.get(rank)); return(statList.size() <= rank ? 0 : statList.get(rank));
} }
private static int gainStatByType(MapleStat type, int[] statGain, int gain, int[] statUpdate) { private static int gainStatByType(Stat type, int[] statGain, int gain, int[] statUpdate) {
if(gain <= 0) return 0; if(gain <= 0) return 0;
int newVal = 0; int newVal = 0;
if (type.equals(MapleStat.STR)) { if (type.equals(Stat.STR)) {
newVal = statUpdate[0] + gain; newVal = statUpdate[0] + gain;
if (newVal > YamlConfig.config.server.MAX_AP) { if (newVal > YamlConfig.config.server.MAX_AP) {
statGain[0] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); statGain[0] += (gain - (newVal - YamlConfig.config.server.MAX_AP));
@@ -378,7 +378,7 @@ public class AssignAPProcessor {
statGain[0] += gain; statGain[0] += gain;
statUpdate[0] = newVal; statUpdate[0] = newVal;
} }
} else if (type.equals(MapleStat.INT)) { } else if (type.equals(Stat.INT)) {
newVal = statUpdate[3] + gain; newVal = statUpdate[3] + gain;
if (newVal > YamlConfig.config.server.MAX_AP) { if (newVal > YamlConfig.config.server.MAX_AP) {
statGain[3] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); statGain[3] += (gain - (newVal - YamlConfig.config.server.MAX_AP));
@@ -387,7 +387,7 @@ public class AssignAPProcessor {
statGain[3] += gain; statGain[3] += gain;
statUpdate[3] = newVal; statUpdate[3] = newVal;
} }
} else if (type.equals(MapleStat.LUK)) { } else if (type.equals(Stat.LUK)) {
newVal = statUpdate[2] + gain; newVal = statUpdate[2] + gain;
if (newVal > YamlConfig.config.server.MAX_AP) { if (newVal > YamlConfig.config.server.MAX_AP) {
statGain[2] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); statGain[2] += (gain - (newVal - YamlConfig.config.server.MAX_AP));
@@ -396,7 +396,7 @@ public class AssignAPProcessor {
statGain[2] += gain; statGain[2] += gain;
statUpdate[2] = newVal; statUpdate[2] = newVal;
} }
} else if (type.equals(MapleStat.DEX)) { } else if (type.equals(Stat.DEX)) {
newVal = statUpdate[1] + gain; newVal = statUpdate[1] + gain;
if (newVal > YamlConfig.config.server.MAX_AP) { if (newVal > YamlConfig.config.server.MAX_AP) {
statGain[1] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); statGain[1] += (gain - (newVal - YamlConfig.config.server.MAX_AP));
@@ -413,9 +413,9 @@ public class AssignAPProcessor {
return 0; return 0;
} }
private static MapleStat getQuaternaryStat(Job stance) { private static Stat getQuaternaryStat(Job stance) {
if(stance != Job.MAGICIAN) return MapleStat.INT; if(stance != Job.MAGICIAN) return Stat.INT;
return MapleStat.STR; return Stat.STR;
} }
public static boolean APResetAction(Client c, int APFrom, int APTo) { public static boolean APResetAction(Client c, int APFrom, int APTo) {

View File

@@ -285,19 +285,19 @@ public class NPCConversationManager extends AbstractPlayerInteraction {
public void setHair(int hair) { public void setHair(int hair) {
getPlayer().setHair(hair); getPlayer().setHair(hair);
getPlayer().updateSingleStat(MapleStat.HAIR, hair); getPlayer().updateSingleStat(Stat.HAIR, hair);
getPlayer().equipChanged(); getPlayer().equipChanged();
} }
public void setFace(int face) { public void setFace(int face) {
getPlayer().setFace(face); getPlayer().setFace(face);
getPlayer().updateSingleStat(MapleStat.FACE, face); getPlayer().updateSingleStat(Stat.FACE, face);
getPlayer().equipChanged(); getPlayer().equipChanged();
} }
public void setSkin(int color) { public void setSkin(int color) {
getPlayer().setSkinColor(SkinColor.getById(color)); getPlayer().setSkinColor(SkinColor.getById(color));
getPlayer().updateSingleStat(MapleStat.SKIN, color); getPlayer().updateSingleStat(Stat.SKIN, color);
getPlayer().equipChanged(); getPlayer().equipChanged();
} }

View File

@@ -83,7 +83,7 @@ import java.util.stream.Collectors;
*/ */
public class PacketCreator { public class PacketCreator {
public static final List<Pair<MapleStat, Integer>> EMPTY_STATUPDATE = Collections.emptyList(); public static final List<Pair<Stat, Integer>> EMPTY_STATUPDATE = Collections.emptyList();
private final static long FT_UT_OFFSET = 116444736010800000L + (10000L * TimeZone.getDefault().getOffset(System.currentTimeMillis())); // normalize with timezone offset suggested by Ari private final static long FT_UT_OFFSET = 116444736010800000L + (10000L * TimeZone.getDefault().getOffset(System.currentTimeMillis())); // normalize with timezone offset suggested by Ari
private final static long DEFAULT_TIME = 150842304000000000L;//00 80 05 BB 46 E6 17 02 private final static long DEFAULT_TIME = 150842304000000000L;//00 80 05 BB 46 E6 17 02
public final static long ZERO_TIME = 94354848000000000L;//00 40 E0 FD 3B 37 4F 01 public final static long ZERO_TIME = 94354848000000000L;//00 40 E0 FD 3B 37 4F 01
@@ -951,14 +951,14 @@ public class PacketCreator {
* @param chr The update target. * @param chr The update target.
* @return The stat update packet. * @return The stat update packet.
*/ */
public static Packet updatePlayerStats(List<Pair<MapleStat, Integer>> stats, boolean enableActions, Character chr) { public static Packet updatePlayerStats(List<Pair<Stat, Integer>> stats, boolean enableActions, Character chr) {
OutPacket p = OutPacket.create(SendOpcode.STAT_CHANGED); OutPacket p = OutPacket.create(SendOpcode.STAT_CHANGED);
p.writeBool(enableActions); p.writeBool(enableActions);
int updateMask = 0; int updateMask = 0;
for (Pair<MapleStat, Integer> statupdate : stats) { for (Pair<Stat, Integer> statupdate : stats) {
updateMask |= statupdate.getLeft().getValue(); updateMask |= statupdate.getLeft().getValue();
} }
List<Pair<MapleStat, Integer>> mystats = stats; List<Pair<Stat, Integer>> mystats = stats;
if (mystats.size() > 1) { if (mystats.size() > 1) {
mystats.sort((o1, o2) -> { mystats.sort((o1, o2) -> {
int val1 = o1.getLeft().getValue(); int val1 = o1.getLeft().getValue();
@@ -967,7 +967,7 @@ public class PacketCreator {
}); });
} }
p.writeInt(updateMask); p.writeInt(updateMask);
for (Pair<MapleStat, Integer> statupdate : mystats) { for (Pair<Stat, Integer> statupdate : mystats) {
if (statupdate.getLeft().getValue() >= 1) { if (statupdate.getLeft().getValue() >= 1) {
if (statupdate.getLeft().getValue() == 0x1) { if (statupdate.getLeft().getValue() == 0x1) {
p.writeByte(statupdate.getRight().byteValue()); p.writeByte(statupdate.getRight().byteValue());
@@ -4473,7 +4473,7 @@ public class PacketCreator {
final OutPacket p = OutPacket.create(SendOpcode.STAT_CHANGED); final OutPacket p = OutPacket.create(SendOpcode.STAT_CHANGED);
int mask = 0; int mask = 0;
mask |= MapleStat.PET.getValue(); mask |= Stat.PET.getValue();
p.writeByte(0); p.writeByte(0);
p.writeInt(mask); p.writeInt(mask);
Pet[] pets = chr.getPets(); Pet[] pets = chr.getPets();