Proper support for Elixirs.

Contributed by manax182.
This commit is contained in:
MobiusDevelopment
2021-05-25 00:01:56 +00:00
parent 543c73482c
commit 3a6bd69465
9 changed files with 169 additions and 50 deletions

View File

@@ -107,9 +107,6 @@ The Kamael: https://eu.4game.com/patchnotes/lineage2classic/154/
-Auto potion system -Auto potion system
-Rank system -Rank system
Essence: https://eu.4game.com/patchnotes/lineage2essence/188/
-Just enter game support
Customs: Customs:
-Newbie Helper NPC location info -Newbie Helper NPC location info
-Newbie Helper buff support until 40 level -Newbie Helper buff support until 40 level

View File

@@ -18,7 +18,9 @@ package handlers.itemhandlers;
import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
public class Elixir extends ItemSkills public class Elixir extends ItemSkills
{ {
@@ -30,6 +32,34 @@ public class Elixir extends ItemSkills
playable.sendPacket(SystemMessageId.YOUR_PET_CANNOT_CARRY_THIS_ITEM); playable.sendPacket(SystemMessageId.YOUR_PET_CANNOT_CARRY_THIS_ITEM);
return false; return false;
} }
final int elixirsAvailable = playable.getActingPlayer().getVariables().getInt(PlayerVariables.ELIXIRS_AVAILABLE, 0);
final int elixirsUsed = playable.getActingPlayer().getVariables().getInt(PlayerVariables.ELIXIRS_USED, 0) + elixirsAvailable;
if ((playable.getLevel() >= 88) && (elixirsUsed >= 10))
{
playable.sendPacket(SystemMessageId.THE_ELIXIR_UNAVAILABLE);
return false;
}
else if ((playable.getLevel() < 88) && (playable.getLevel() >= 76) && (elixirsUsed >= 5))
{
playable.sendPacket(SystemMessageId.THE_ELIXIR_UNAVAILABLE);
return false;
}
else if (playable.getLevel() < 76)
{
playable.sendPacket(SystemMessageId.THE_ELIXIR_UNAVAILABLE);
return false;
}
if (!playable.getActingPlayer().destroyItem("Elixir", item.getObjectId(), 1, playable.getActingPlayer(), true))
{
playable.sendPacket(SystemMessageId.THE_ELIXIR_UNAVAILABLE);
return false;
}
playable.getActingPlayer().getVariables().set(PlayerVariables.ELIXIRS_AVAILABLE, elixirsAvailable + 1);
playable.sendPacket(new SystemMessage(SystemMessageId.THANKS_TO_THE_ELIXIR_CHARACTER_S_STAT_POINTS_S1).addInt(1));
playable.getActingPlayer().broadcastUserInfo();
return super.useItem(playable, item, forceUse); return super.useItem(playable, item, forceUse);
} }
} }

View File

@@ -7921,7 +7921,7 @@ public class PlayerInstance extends Playable
sendPacket(new HennaInfo(this)); sendPacket(new HennaInfo(this));
// Send Server->Client UserInfo packet to this PlayerInstance // Send Server->Client UserInfo packet to this PlayerInstance
broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.STAT_POINTS, UserInfoType.STAT_ABILITIES, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED);
final long remainingTime = getVariables().getLong("HennaDuration" + slot, 0) - Chronos.currentTimeMillis(); final long remainingTime = getVariables().getLong("HennaDuration" + slot, 0) - Chronos.currentTimeMillis();
if ((henna.getDuration() < 0) || (remainingTime > 0)) if ((henna.getDuration() < 0) || (remainingTime > 0))
@@ -8011,7 +8011,7 @@ public class PlayerInstance extends Playable
sendPacket(new HennaInfo(this)); sendPacket(new HennaInfo(this));
// Send Server->Client UserInfo packet to this PlayerInstance // Send Server->Client UserInfo packet to this PlayerInstance
broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.STAT_ABILITIES, UserInfoType.STAT_POINTS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED);
// Notify to scripts // Notify to scripts
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this);

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.stats.BaseStat; import org.l2jmobius.gameserver.model.stats.BaseStat;
import org.l2jmobius.gameserver.model.stats.IStatFunction; import org.l2jmobius.gameserver.model.stats.IStatFunction;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -47,7 +48,43 @@ public class BaseStatFinalizer implements IStatFunction
// Henna calculation // Henna calculation
baseValue += player.getHennaValue(BaseStat.valueOf(stat)); baseValue += player.getHennaValue(BaseStat.valueOf(stat));
// Bonus stats
switch (stat)
{
case STAT_STR:
{
baseValue += player.getVariables().getInt(PlayerVariables.STAT_STR, 0);
break;
} }
case STAT_CON:
{
baseValue += player.getVariables().getInt(PlayerVariables.STAT_CON, 0);
break;
}
case STAT_DEX:
{
baseValue += player.getVariables().getInt(PlayerVariables.STAT_DEX, 0);
break;
}
case STAT_INT:
{
baseValue += player.getVariables().getInt(PlayerVariables.STAT_INT, 0);
break;
}
case STAT_MEN:
{
baseValue += player.getVariables().getInt(PlayerVariables.STAT_MEN, 0);
break;
}
case STAT_WIT:
{
baseValue += player.getVariables().getInt(PlayerVariables.STAT_WIT, 0);
break;
}
}
}
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, BaseStat.MAX_STAT_VALUE - 1); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, BaseStat.MAX_STAT_VALUE - 1);
} }
} }

View File

@@ -71,6 +71,8 @@ public class PlayerVariables extends AbstractVariables
public static final String MAGIC_LAMP_COUNT = "MAGIC_LAMP_COUNT"; public static final String MAGIC_LAMP_COUNT = "MAGIC_LAMP_COUNT";
public static final String DEATH_POINT_COUNT = "DEATH_POINT_COUNT"; public static final String DEATH_POINT_COUNT = "DEATH_POINT_COUNT";
public static final String FAVORITE_TELEPORTS = "FAVORITE_TELEPORTS"; public static final String FAVORITE_TELEPORTS = "FAVORITE_TELEPORTS";
public static final String ELIXIRS_AVAILABLE = "ELIXIRS_AVAILABLE";
public static final String ELIXIRS_USED = "ELIXIRS_USED";
public static final String STAT_POINTS = "STAT_POINTS"; public static final String STAT_POINTS = "STAT_POINTS";
public static final String STAT_STR = "STAT_STR"; public static final String STAT_STR = "STAT_STR";
public static final String STAT_DEX = "STAT_DEX"; public static final String STAT_DEX = "STAT_DEX";

View File

@@ -62,7 +62,6 @@ import org.l2jmobius.gameserver.model.siege.Fort;
import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.FortSiege;
import org.l2jmobius.gameserver.model.siege.Siege; import org.l2jmobius.gameserver.model.siege.Siege;
import org.l2jmobius.gameserver.model.skills.AbnormalVisualEffect; import org.l2jmobius.gameserver.model.skills.AbnormalVisualEffect;
import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.model.zone.ZoneId;
@@ -620,13 +619,6 @@ public class EnterWorld implements IClientIncomingPacket
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
player.getStat().mergeAdd(Stat.STAT_STR, player.getVariables().getInt(PlayerVariables.STAT_STR, 0));
player.getStat().mergeAdd(Stat.STAT_DEX, player.getVariables().getInt(PlayerVariables.STAT_DEX, 0));
player.getStat().mergeAdd(Stat.STAT_CON, player.getVariables().getInt(PlayerVariables.STAT_CON, 0));
player.getStat().mergeAdd(Stat.STAT_INT, player.getVariables().getInt(PlayerVariables.STAT_INT, 0));
player.getStat().mergeAdd(Stat.STAT_WIT, player.getVariables().getInt(PlayerVariables.STAT_WIT, 0));
player.getStat().mergeAdd(Stat.STAT_MEN, player.getVariables().getInt(PlayerVariables.STAT_MEN, 0));
player.broadcastUserInfo(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@@ -16,13 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets.stats; package org.l2jmobius.gameserver.network.clientpackets.stats;
import static org.l2jmobius.gameserver.model.itemcontainer.Inventory.LCOIN_ID;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount;
/** /**
* @author Mobius * @author Mobius
@@ -44,16 +46,67 @@ public class ExResetStatusBonus implements IClientIncomingPacket
return; return;
} }
// 200 L-Coin requirement? final int points = player.getVariables().getInt(PlayerVariables.STAT_POINTS, 0);
if (player.reduceAdena("ExResetStatusBonus", 100000, player, true)) int adenaCost = 5000000;
int lcoinCost = 600;
switch (points)
{ {
player.getStat().mergeAdd(Stat.STAT_STR, -player.getVariables().getInt(PlayerVariables.STAT_STR, 0)); case 1:
player.getStat().mergeAdd(Stat.STAT_DEX, -player.getVariables().getInt(PlayerVariables.STAT_DEX, 0)); case 2:
player.getStat().mergeAdd(Stat.STAT_CON, -player.getVariables().getInt(PlayerVariables.STAT_CON, 0)); case 3:
player.getStat().mergeAdd(Stat.STAT_INT, -player.getVariables().getInt(PlayerVariables.STAT_INT, 0)); case 4:
player.getStat().mergeAdd(Stat.STAT_WIT, -player.getVariables().getInt(PlayerVariables.STAT_WIT, 0)); case 5:
player.getStat().mergeAdd(Stat.STAT_MEN, -player.getVariables().getInt(PlayerVariables.STAT_MEN, 0)); {
adenaCost = 200000;
lcoinCost = 200;
break;
}
case 6:
case 7:
case 8:
case 9:
case 10:
{
adenaCost = 500000;
lcoinCost = 300;
break;
}
case 11:
case 12:
case 13:
case 14:
case 15:
{
adenaCost = 1000000;
lcoinCost = 400;
break;
}
case 16:
case 17:
case 18:
case 19:
case 20:
{
adenaCost = 2000000;
lcoinCost = 500;
break;
}
case 21:
case 22:
case 23:
case 24:
case 25:
{
adenaCost = 5000000;
lcoinCost = 600;
break;
}
}
if (player.reduceAdena("ExResetStatusBonus", adenaCost, player, true) && (player.getInventory().getInventoryItemCount(LCOIN_ID, -1) >= lcoinCost))
{
player.getInventory().destroyItemByItemId("ExResetStatusBonus", LCOIN_ID, lcoinCost, player, true);
player.sendPacket(new ExBloodyCoinCount(player));
player.getVariables().remove(PlayerVariables.STAT_POINTS); player.getVariables().remove(PlayerVariables.STAT_POINTS);
player.getVariables().remove(PlayerVariables.STAT_STR); player.getVariables().remove(PlayerVariables.STAT_STR);
player.getVariables().remove(PlayerVariables.STAT_DEX); player.getVariables().remove(PlayerVariables.STAT_DEX);
@@ -61,6 +114,8 @@ public class ExResetStatusBonus implements IClientIncomingPacket
player.getVariables().remove(PlayerVariables.STAT_INT); player.getVariables().remove(PlayerVariables.STAT_INT);
player.getVariables().remove(PlayerVariables.STAT_WIT); player.getVariables().remove(PlayerVariables.STAT_WIT);
player.getVariables().remove(PlayerVariables.STAT_MEN); player.getVariables().remove(PlayerVariables.STAT_MEN);
player.getVariables().set(PlayerVariables.ELIXIRS_AVAILABLE, player.getVariables().getInt(PlayerVariables.ELIXIRS_USED, 0) + player.getVariables().getInt(PlayerVariables.ELIXIRS_AVAILABLE, 0));
player.getVariables().remove(PlayerVariables.ELIXIRS_USED);
player.sendPacket(new UserInfo(player)); player.sendPacket(new UserInfo(player));
player.getStat().recalculateStats(true); player.getStat().recalculateStats(true);

View File

@@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.clientpackets.stats;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
@@ -39,8 +38,8 @@ public class ExSetStatusBonus implements IClientIncomingPacket
@Override @Override
public boolean read(GameClient client, PacketReader packet) public boolean read(GameClient client, PacketReader packet)
{ {
packet.readH(); // ? packet.readH(); // unk
packet.readH(); // ? packet.readH(); // totalBonus
_str = packet.readH(); _str = packet.readH();
_dex = packet.readH(); _dex = packet.readH();
_con = packet.readH(); _con = packet.readH();
@@ -64,45 +63,52 @@ public class ExSetStatusBonus implements IClientIncomingPacket
} }
final int usedPoints = player.getVariables().getInt(PlayerVariables.STAT_POINTS, 0); final int usedPoints = player.getVariables().getInt(PlayerVariables.STAT_POINTS, 0);
final int elixirsAvailable = player.getVariables().getInt(PlayerVariables.ELIXIRS_AVAILABLE, 0);
final int elixirsUsed = player.getVariables().getInt(PlayerVariables.ELIXIRS_USED, 0);
final int currentPoints = _str + _dex + _con + _int + _wit + _men; final int currentPoints = _str + _dex + _con + _int + _wit + _men;
if ((player.getLevel() - 75 - usedPoints - currentPoints) < 0) if ((((player.getLevel() - 75) + elixirsAvailable) - usedPoints - currentPoints) < 0)
{ {
return; return;
} }
player.getVariables().set(PlayerVariables.STAT_POINTS, usedPoints + currentPoints);
if (((player.getLevel() - 75) - usedPoints - currentPoints) < 0)
{
final int neededElixirs = -((player.getLevel() - 75) - usedPoints - currentPoints);
final int neededPoints = currentPoints - neededElixirs;
player.getVariables().set(PlayerVariables.ELIXIRS_AVAILABLE, Math.min(0, elixirsAvailable - neededElixirs));
player.getVariables().set(PlayerVariables.ELIXIRS_USED, elixirsUsed + neededElixirs);
player.getVariables().set(PlayerVariables.STAT_POINTS, usedPoints + neededPoints);
}
else
{
player.getVariables().set(PlayerVariables.STAT_POINTS, usedPoints + currentPoints);
}
if (_str > 0) if (_str > 0)
{ {
player.getVariables().set(PlayerVariables.STAT_STR, player.getVariables().getInt(PlayerVariables.STAT_STR, 0) + _str); player.getVariables().set(PlayerVariables.STAT_STR, player.getVariables().getInt(PlayerVariables.STAT_STR, 0) + _str);
player.getStat().mergeAdd(Stat.STAT_STR, _str);
} }
if (_dex > 0) if (_dex > 0)
{ {
player.getVariables().set(PlayerVariables.STAT_DEX, player.getVariables().getInt(PlayerVariables.STAT_DEX, 0) + _dex); player.getVariables().set(PlayerVariables.STAT_DEX, player.getVariables().getInt(PlayerVariables.STAT_DEX, 0) + _dex);
player.getStat().mergeAdd(Stat.STAT_DEX, _dex);
} }
if (_con > 0) if (_con > 0)
{ {
player.getVariables().set(PlayerVariables.STAT_CON, player.getVariables().getInt(PlayerVariables.STAT_CON, 0) + _con); player.getVariables().set(PlayerVariables.STAT_CON, player.getVariables().getInt(PlayerVariables.STAT_CON, 0) + _con);
player.getStat().mergeAdd(Stat.STAT_CON, _con);
} }
if (_int > 0) if (_int > 0)
{ {
player.getVariables().set(PlayerVariables.STAT_INT, player.getVariables().getInt(PlayerVariables.STAT_INT, 0) + _int); player.getVariables().set(PlayerVariables.STAT_INT, player.getVariables().getInt(PlayerVariables.STAT_INT, 0) + _int);
player.getStat().mergeAdd(Stat.STAT_INT, _int);
} }
if (_wit > 0) if (_wit > 0)
{ {
player.getVariables().set(PlayerVariables.STAT_WIT, player.getVariables().getInt(PlayerVariables.STAT_WIT, 0) + _wit); player.getVariables().set(PlayerVariables.STAT_WIT, player.getVariables().getInt(PlayerVariables.STAT_WIT, 0) + _wit);
player.getStat().mergeAdd(Stat.STAT_WIT, _wit);
} }
if (_men > 0) if (_men > 0)
{ {
player.getVariables().set(PlayerVariables.STAT_MEN, player.getVariables().getInt(PlayerVariables.STAT_MEN, 0) + _men); player.getVariables().set(PlayerVariables.STAT_MEN, player.getVariables().getInt(PlayerVariables.STAT_MEN, 0) + _men);
player.getStat().mergeAdd(Stat.STAT_MEN, _men);
} }
player.sendPacket(new UserInfo(player)); player.sendPacket(new UserInfo(player));
player.getStat().recalculateStats(true);
} }
} }

View File

@@ -427,32 +427,32 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
if (containsMask(UserInfoType.STAT_POINTS)) // 235 if (containsMask(UserInfoType.STAT_POINTS)) // 235
{ {
packet.writeH(16); packet.writeH(16);
packet.writeH(_player.getLevel() < 76 ? 0 : _player.getLevel() - 75 - _player.getVariables().getInt(PlayerVariables.STAT_POINTS, 0)); // Usable points packet.writeH(_player.getLevel() < 76 ? 0 : (_player.getLevel() - 75) + _player.getVariables().getInt(PlayerVariables.ELIXIRS_AVAILABLE, 0) + _player.getVariables().getInt(PlayerVariables.ELIXIRS_USED, 0)); // Usable points
packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_STR, 0)); // STR points packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_STR, 0));
packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_DEX, 0)); // DEX points packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_DEX, 0));
packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_CON, 0)); // CON points packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_CON, 0));
packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_INT, 0)); // INT points packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_INT, 0));
packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_WIT, 0)); // WIT points packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_WIT, 0));
packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_MEN, 0)); // MEN points packet.writeH(_player.getVariables().getInt(PlayerVariables.STAT_MEN, 0));
} }
if (containsMask(UserInfoType.STAT_ABILITIES)) // 235 if (containsMask(UserInfoType.STAT_ABILITIES)) // 235
{ {
packet.writeH(18); packet.writeH(18);
packet.writeH(_player.getStat().getSTR() - _player.getVariables().getInt(PlayerVariables.STAT_STR, 0)); // additional STR packet.writeH(_player.getSTR() - _player.getTemplate().getBaseSTR() - _player.getVariables().getInt(PlayerVariables.STAT_STR, 0)); // additional STR
packet.writeH(_player.getStat().getDEX() - _player.getVariables().getInt(PlayerVariables.STAT_DEX, 0)); // additional DEX packet.writeH(_player.getDEX() - _player.getTemplate().getBaseDEX() - _player.getVariables().getInt(PlayerVariables.STAT_DEX, 0)); // additional DEX
packet.writeH(_player.getStat().getCON() - _player.getVariables().getInt(PlayerVariables.STAT_CON, 0)); // additional CON packet.writeH(_player.getCON() - _player.getTemplate().getBaseCON() - _player.getVariables().getInt(PlayerVariables.STAT_CON, 0)); // additional CON
packet.writeH(_player.getStat().getINT() - _player.getVariables().getInt(PlayerVariables.STAT_INT, 0)); // additional INT packet.writeH(_player.getINT() - _player.getTemplate().getBaseINT() - _player.getVariables().getInt(PlayerVariables.STAT_INT, 0)); // additional INT
packet.writeH(_player.getStat().getWIT() - _player.getVariables().getInt(PlayerVariables.STAT_WIT, 0)); // additional WIT packet.writeH(_player.getWIT() - _player.getTemplate().getBaseWIT() - _player.getVariables().getInt(PlayerVariables.STAT_WIT, 0)); // additional WIT
packet.writeH(_player.getStat().getMEN() - _player.getVariables().getInt(PlayerVariables.STAT_MEN, 0)); // additional MEN packet.writeH(_player.getMEN() - _player.getTemplate().getBaseMEN() - _player.getVariables().getInt(PlayerVariables.STAT_MEN, 0)); // additional MEN
packet.writeH(0x00); packet.writeH(0x00);
packet.writeH(0x00); packet.writeH(0x00);
} }
if (containsMask(UserInfoType.ELIXIR_USED)) // 286 if (containsMask(UserInfoType.ELIXIR_USED)) // 286
{ {
packet.writeH(0x00); // count packet.writeD(_player.getVariables().getInt(PlayerVariables.ELIXIRS_USED, 0)); // count
packet.writeD(0x00); packet.writeH(0);
} }
// Send exp bonus change. // Send exp bonus change.