Proper support for Elixirs.
Contributed by manax182.
This commit is contained in:
@@ -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
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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";
|
||||||
|
@@ -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()))
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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.
|
||||||
|
Reference in New Issue
Block a user