Initial changes.
This commit is contained in:
@@ -1168,42 +1168,42 @@ public class Config
|
||||
public static String TITLE_FOR_PVP_AMOUNT4;
|
||||
public static String TITLE_FOR_PVP_AMOUNT5;
|
||||
public static boolean CHAT_ADMIN;
|
||||
public static float[] PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_MAGICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_MAGICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_MAGICAL_SKILL_CRITICAL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_MAGICAL_SKILL_CRITICAL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_PHYSICAL_SKILL_CRITICAL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_PHYSICAL_SKILL_CRITICAL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_PHYSICAL_ATTACK_CRITICAL_CHANCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_PHYSICAL_ATTACK_CRITICAL_CHANCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_PHYSICAL_ATTACK_CRITICAL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_PHYSICAL_ATTACK_CRITICAL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_BLOW_SKILL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new float[190];
|
||||
public static float[] PLAYER_HEALING_SKILL_MULTIPLIERS = new float[190];
|
||||
public static float[] SKILL_MASTERY_CHANCE_MULTIPLIERS = new float[190];
|
||||
public static float[] EXP_AMOUNT_MULTIPLIERS = new float[190];
|
||||
public static float[] SP_AMOUNT_MULTIPLIERS = new float[190];
|
||||
public static float[] PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_MAGICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_MAGICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_MAGICAL_SKILL_CRITICAL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_MAGICAL_SKILL_CRITICAL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_PHYSICAL_SKILL_CRITICAL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_PHYSICAL_SKILL_CRITICAL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_PHYSICAL_ATTACK_CRITICAL_CHANCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_PHYSICAL_ATTACK_CRITICAL_CHANCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_PHYSICAL_ATTACK_CRITICAL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_PHYSICAL_ATTACK_CRITICAL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_BLOW_SKILL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new float[217];
|
||||
public static float[] PLAYER_HEALING_SKILL_MULTIPLIERS = new float[217];
|
||||
public static float[] SKILL_MASTERY_CHANCE_MULTIPLIERS = new float[217];
|
||||
public static float[] EXP_AMOUNT_MULTIPLIERS = new float[217];
|
||||
public static float[] SP_AMOUNT_MULTIPLIERS = new float[217];
|
||||
public static boolean MULTILANG_ENABLE;
|
||||
public static List<String> MULTILANG_ALLOWED = new ArrayList<>();
|
||||
public static String MULTILANG_DEFAULT;
|
||||
|
@@ -304,7 +304,8 @@ public enum CategoryType
|
||||
HEAVY_ARMOR_CLASS,
|
||||
LIGHT_ARMOR_CLASS,
|
||||
ROBE_CLASS,
|
||||
EXCEPT_ERTHEIA_CLASS;
|
||||
EXCEPT_ERTHEIA_CLASS,
|
||||
DEATH_KNIGHT_ALL_CLASS;
|
||||
|
||||
/**
|
||||
* Finds category by it's name
|
||||
|
@@ -209,7 +209,13 @@ public enum ClassId implements IIdentifiable
|
||||
STRATOMANCER(187, true, Race.ERTHEIA, CLOUD_BREAKER),
|
||||
|
||||
EVISCERATOR(188, false, Race.ERTHEIA, RIPPER),
|
||||
SAYHA_SEER(189, true, Race.ERTHEIA, STRATOMANCER);
|
||||
SAYHA_SEER(189, true, Race.ERTHEIA, STRATOMANCER),
|
||||
|
||||
DEATH_SOLDIER(212, false, Race.HUMAN, null),
|
||||
DEATH_WARRIOR(213, false, Race.HUMAN, DEATH_SOLDIER),
|
||||
DEATH_BERSERKER(214, false, Race.HUMAN, DEATH_WARRIOR),
|
||||
DEATH_KNIGHT(215, false, Race.HUMAN, DEATH_BERSERKER),
|
||||
SIGEL_DEATH_KNIGHT(216, false, Race.HUMAN, DEATH_KNIGHT);
|
||||
|
||||
/** The Identifier of the Class */
|
||||
private final int _id;
|
||||
|
@@ -28,8 +28,8 @@ public enum UserInfoType implements IUpdateTypeComponent
|
||||
BASE_STATS(0x02, 18),
|
||||
MAX_HPCPMP(0x03, 14),
|
||||
CURRENT_HPMPCP_EXP_SP(0x04, 38),
|
||||
ENCHANTLEVEL(0x05, 4),
|
||||
APPAREANCE(0x06, 15),
|
||||
ENCHANTLEVEL(0x05, 5),
|
||||
APPAREANCE(0x06, 19),
|
||||
STATUS(0x07, 6),
|
||||
|
||||
STATS(0x08, 64),
|
||||
|
@@ -461,6 +461,7 @@ public class PlayerInstance extends Playable
|
||||
protected int _baseClass;
|
||||
protected int _activeClass;
|
||||
protected int _classIndex = 0;
|
||||
private boolean _isDeathKnight = false;
|
||||
|
||||
/** data for mounted pets */
|
||||
private int _controlItemId;
|
||||
@@ -6684,6 +6685,10 @@ public class PlayerInstance extends Playable
|
||||
{
|
||||
player._activeClass = activeClassId;
|
||||
}
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.DEATH_KNIGHT_ALL_CLASS, activeClassId))
|
||||
{
|
||||
player._isDeathKnight = true;
|
||||
}
|
||||
|
||||
player.setApprentice(rset.getInt("apprentice"));
|
||||
player.setSponsor(rset.getInt("sponsor"));
|
||||
@@ -8661,6 +8666,14 @@ public class PlayerInstance extends Playable
|
||||
return getClassId().isMage();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return True if the PlayerInstance is a Death Knight.
|
||||
*/
|
||||
public boolean isDeathKnight()
|
||||
{
|
||||
return _isDeathKnight;
|
||||
}
|
||||
|
||||
public boolean isMounted()
|
||||
{
|
||||
return _mountType != MountType.NONE;
|
||||
|
@@ -1130,7 +1130,7 @@ public class SkillCaster implements Runnable
|
||||
return false;
|
||||
}
|
||||
|
||||
if (skill.isBad()&& !player.isOnSoloEvent())
|
||||
if (skill.isBad() && !player.isOnSoloEvent())
|
||||
{
|
||||
final WorldObject target = player.getTarget();
|
||||
if ((target != null) && target.isPlayable() && (player.getTeam() == target.getActingPlayer().getTeam()))
|
||||
|
@@ -659,7 +659,54 @@ public enum ExIncomingPackets implements IIncomingPackets<GameClient>
|
||||
EX_PLEDGE_RANKING_LIST(0x1F6, null, ConnectionState.IN_GAME),
|
||||
EX_ITEM_RESTORE_LIST(0x1F7, null, ConnectionState.IN_GAME),
|
||||
EX_ITEM_RESTORE(0x1F8, null, ConnectionState.IN_GAME),
|
||||
EX_MAX(0x1F9, null, ConnectionState.IN_GAME);
|
||||
// 338
|
||||
EX_DETHRONE_INFO(0x1F9, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_RANKING_INFO(0x1FA, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_SERVER_INFO(0x1FB, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_DISTRICT_OCCUPATION_INFO(0x1FC, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_DAILY_MISSION_INFO(0x1FD, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_DAILY_MISSION_GET_REWARD(0x1FE, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_PREV_SEASON_INFO(0x1FF, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_GET_REWARD(0x200, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_ENTER(0x201, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_LEAVE(0x202, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_CHECK_NAME(0x203, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_CHANGE_NAME(0x204, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_CONNECT_CASTLE(0x205, null, ConnectionState.IN_GAME),
|
||||
EX_DETHRONE_DISCONNECT_CASTLE(0x206, null, ConnectionState.IN_GAME),
|
||||
EX_CHANGE_NICKNAME_COLOR_ICON(0x207, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_MOVE_TO_HOST(0x208, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_RETURN_TO_ORIGIN_PEER(0x209, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_CASTLE_INFO(0x20A, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_CASTLE_SIEGE_INFO(0x20B, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_CASTLE_SIEGE_JOIN(0x20C, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_CASTLE_SIEGE_ATTACKER_LIST(0x20D, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_PLEDGE_MERCENARY_RECRUIT_INFO_SET(0x20E, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_PLEDGE_MERCENARY_MEMBER_LIST(0x20F, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_PLEDGE_MERCENARY_MEMBER_JOIN(0x210, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_TELEPORT(0x211, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_OBSERVER_START(0x212, null, ConnectionState.IN_GAME),
|
||||
EX_PRIVATE_STORE_SEARCH_LIST(0x213, null, ConnectionState.IN_GAME),
|
||||
EX_PRIVATE_STORE_SEARCH_STATISTICS(0x214, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_HOST_CASTLE_SIEGE_RANKING_INFO(0x215, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_CASTLE_SIEGE_RANKING_INFO(0x216, null, ConnectionState.IN_GAME),
|
||||
EX_WORLDCASTLEWAR_SIEGE_MAINBATTLE_HUD_INFO(0x217, null, ConnectionState.IN_GAME),
|
||||
EX_NEW_HENNA_LIST(0x218, null, ConnectionState.IN_GAME),
|
||||
EX_NEW_HENNA_EQUIP(0x219, null, ConnectionState.IN_GAME),
|
||||
EX_NEW_HENNA_UNEQUIP(0x21A, null, ConnectionState.IN_GAME),
|
||||
EX_NEW_HENNA_POTEN_SELECT(0x21B, null, ConnectionState.IN_GAME),
|
||||
EX_NEW_HENNA_POTEN_ENCHANT(0x21C, null, ConnectionState.IN_GAME),
|
||||
EX_NEW_HENNA_COMPOSE(0x21D, null, ConnectionState.IN_GAME),
|
||||
EX_REQUEST_INVITE_PARTY(0x21E, null, ConnectionState.IN_GAME),
|
||||
EX_ITEM_USABLE_LIST(0x21F, null, ConnectionState.IN_GAME),
|
||||
EX_PACKETREADCOUNTPERSECOND(0x220, null, ConnectionState.IN_GAME),
|
||||
EX_SELECT_GLOBAL_EVENT_UI(0x221, null, ConnectionState.IN_GAME),
|
||||
EX_L2PASS_INFO(0x222, null, ConnectionState.IN_GAME),
|
||||
EX_L2PASS_REQUEST_REWARD(0x2231, null, ConnectionState.IN_GAME),
|
||||
EX_L2PASS_REQUEST_REWARD_ALL(0x224, null, ConnectionState.IN_GAME),
|
||||
EX_L2PASS_BUY_PREMIUM(0x225, null, ConnectionState.IN_GAME),
|
||||
EX_SAYHAS_SUPPORT_TOGGLE(0x226, null, ConnectionState.IN_GAME),
|
||||
EX_MAX(0x227, null, ConnectionState.IN_GAME);
|
||||
|
||||
public static final ExIncomingPackets[] PACKET_ARRAY;
|
||||
|
||||
|
@@ -981,7 +981,54 @@ public enum OutgoingPackets
|
||||
EX_ITEM_RESTORE_LIST(0xFE, 0x2B4),
|
||||
EX_ITEM_RESTORE(0xFE, 0x2B5),
|
||||
EX_PLEDGE_COIN_INFO(0xFE, 0x2B6),
|
||||
EX_MAX(0xFE, 0x2B7);
|
||||
// 338
|
||||
EX_DETHRONE_INFO(0xFE, 0x2B7),
|
||||
EX_DETHRONE_RANKING_INFO(0xFE, 0x2B8),
|
||||
EX_DETHRONE_SERVER_INFO(0xFE, 0x2B9),
|
||||
EX_DETHRONE_DISTRICT_OCCUPATION_INFO(0xFE, 0x2BA),
|
||||
EX_DETHRONE_DAILY_MISSION_INFO(0xFE, 0x2BB),
|
||||
EX_DETHRONE_DAILY_MISSION_GET_REWARD(0xFE, 0x2BC),
|
||||
EX_DETHRONE_DAILY_MISSION_COMPLETE(0xFE, 0x2BD),
|
||||
EX_DETHRONE_PREV_SEASON_INFO(0xFE, 0x2BE),
|
||||
EX_DETHRONE_GET_REWARD(0xFE, 0x2BF),
|
||||
EX_DETHRONE_CHECK_NAME(0xFE, 0x2C0),
|
||||
EX_DETHRONE_CHANGE_NAME(0xFE, 0x2C1),
|
||||
EX_DETHRONE_CONNECT_CASTLE(0xFE, 0x2C2),
|
||||
EX_DETHRONE_DISCONNECT_CASTLE(0xFE, 0x2C3),
|
||||
EX_DETHRONE_SEASON_INFO(0xFE, 0x2C4),
|
||||
EX_SERVERLIMIT_ITEM_ANNOUNCE(0xFE, 0x2C5),
|
||||
EX_CHANGE_NICKNAME_COLOR_ICON(0xFE, 0x2C6),
|
||||
EX_WORLDCASTLEWAR_HOST_CASTLE_SIEGE_HUD_INFO(0xFE, 0x2C7),
|
||||
EX_WORLDCASTLEWAR_CASTLE_INFO(0xFE, 0x2C8),
|
||||
EX_WORLDCASTLEWAR_CASTLE_SIEGE_INFO(0xFE, 0x2C9),
|
||||
EX_WORLDCASTLEWAR_CASTLE_SIEGE_HUD_INFO(0xFE, 0x2CA),
|
||||
EX_WORLDCASTLEWAR_CASTLE_SIEGE_ATTACKER_LIST(0xFE, 0x2CB),
|
||||
EX_WORLDCASTLEWAR_PLEDGE_MERCENARY_MEMBER_LIST(0xFE, 0x2CC),
|
||||
EX_WORLDCASTLEWAR_PLEDGE_MERCENARY_MEMBER_JOIN(0xFE, 0x2CD),
|
||||
EX_WORLDCASTLEWAR_SIEGE_MAINBATTLE_OCCUPY_INFO(0xFE, 0x2CE),
|
||||
EX_WORLDCASTLEWAR_SIEGE_MAINBATTLE_HERO_WEAPON_INFO(0xFE, 0x2CF),
|
||||
EX_WORLDCASTLEWAR_SIEGE_MAINBATTLE_HERO_WEAPON_USER(0xFE, 0x2D0),
|
||||
EX_WORLDCASTLEWAR_SIEGE_MAINBATTLE_SIEGE_GOLEM_INFO(0xFE, 0x2D1),
|
||||
EX_WORLDCASTLEWAR_SIEGE_MAINBATTLE_DOOR_INFO(0xFE, 0x2D2),
|
||||
EX_WORLDCASTLEWAR_SIEGE_MAINBATTLE_HUD_INFO(0xFE, 0x2D3),
|
||||
EX_PRIVATE_STORE_SEARCH_ITEM(0xFE, 0x2D4),
|
||||
EX_PRIVATE_STORE_SEARCH_HISTORY(0xFE, 0x2D5),
|
||||
EX_PRIVATE_STORE_SEARCH_STATISTICS(0xFE, 0x2D6),
|
||||
EX_WORLDCASTLEWAR_HOST_CASTLE_SIEGE_RANKING_INFO(0xFE, 0x2D7),
|
||||
EX_WORLDCASTLEWAR_CASTLE_SIEGE_RANKING_INFO(0xFE, 0x2D8),
|
||||
EX_NEW_HENNA_LIST(0xFE, 0x2D9),
|
||||
EX_NEW_HENNA_EQUIP(0xFE, 0x2DA),
|
||||
EX_NEW_HENNA_UNEQUIP(0xFE, 0x2DB),
|
||||
EX_NEW_HENNA_POTEN_SELECT(0xFE, 0x2DC),
|
||||
EX_NEW_HENNA_POTEN_ENCHANT(0xFE, 0x2DD),
|
||||
EX_NEW_HENNA_COMPOSE(0xFE, 0x2DE),
|
||||
EX_REQUEST_INVITE_PARTY(0xFE, 0x2DF),
|
||||
EX_INIT_GLOBAL_EVENT_UI(0xFE, 0x2E0),
|
||||
EX_SHOW_GLOBAL_EVENT_UI(0xFE, 0x2E1),
|
||||
EX_L2PASS_SIMPLE_INFO(0xFE, 0x2E2),
|
||||
EX_L2PASS_INFO(0xFE, 0x2E3),
|
||||
EX_SAYHAS_SUPPORT_INFO(0xFE, 0x2E4),
|
||||
EX_MAX(0xFE, 0x2E5);
|
||||
|
||||
private final int _id1;
|
||||
private final int _id2;
|
||||
|
@@ -131,7 +131,8 @@ public class CharInfo implements IClientOutgoingPacket
|
||||
|
||||
packet.writeH(_player.getRace().ordinal()); // Confirmed
|
||||
packet.writeC(_player.getAppearance().isFemale() ? 0x01 : 0x00); // Confirmed
|
||||
packet.writeD(_player.getBaseClass()); // Confirmed
|
||||
|
||||
packet.writeD(_player.isDeathKnight() ? 212 : _player.getBaseClass());
|
||||
|
||||
for (int slot : getPaperdollOrder())
|
||||
{
|
||||
@@ -282,6 +283,13 @@ public class CharInfo implements IClientOutgoingPacket
|
||||
// Rank.
|
||||
packet.writeC(RankManager.getInstance().getPlayerGlobalRank(_player) == 1 ? 1 : RankManager.getInstance().getPlayerRaceRank(_player) == 1 ? 2 : 0);
|
||||
|
||||
packet.writeH(0x00); // 338
|
||||
packet.writeD(0x00); // 338
|
||||
packet.writeD(0x00); // 338
|
||||
packet.writeC(0x00); // 338
|
||||
packet.writeD(_player.getVisualHairColor() + 1); // 338 - DK color.
|
||||
packet.writeD(0x00); // 338
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -29,7 +29,9 @@ import org.l2jmobius.commons.database.DatabaseFactory;
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.commons.util.Chronos;
|
||||
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
||||
import org.l2jmobius.gameserver.data.xml.CategoryData;
|
||||
import org.l2jmobius.gameserver.data.xml.ExperienceData;
|
||||
import org.l2jmobius.gameserver.enums.CategoryType;
|
||||
import org.l2jmobius.gameserver.instancemanager.PremiumManager;
|
||||
import org.l2jmobius.gameserver.model.CharSelectInfoPackage;
|
||||
import org.l2jmobius.gameserver.model.VariationInstance;
|
||||
@@ -298,6 +300,9 @@ public class CharSelectionInfo implements IClientOutgoingPacket
|
||||
|
||||
packet.writeD(0x00); // 235 - ban time left
|
||||
packet.writeD((int) (charInfoPackage.getLastAccess() / 1000)); // 235 - last play time
|
||||
|
||||
packet.writeC(0x00); // 338
|
||||
packet.writeD(charInfoPackage.getHairColor() + 1); // 338 - DK color.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -402,7 +407,13 @@ public class CharSelectionInfo implements IClientOutgoingPacket
|
||||
|
||||
charInfopackage.setRace(chardata.getInt("race"));
|
||||
|
||||
final int baseClassId = chardata.getInt("base_class");
|
||||
int baseClassId = chardata.getInt("base_class");
|
||||
// Death Knight check.
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.DEATH_KNIGHT_ALL_CLASS, baseClassId))
|
||||
{
|
||||
baseClassId = 212;
|
||||
}
|
||||
|
||||
final int activeClassId = chardata.getInt("classid");
|
||||
charInfopackage.setX(chardata.getInt("x"));
|
||||
charInfopackage.setY(chardata.getInt("y"));
|
||||
|
@@ -299,7 +299,7 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
|
||||
|
||||
packet.writeD(_npc.getObjectId());
|
||||
packet.writeC(_npc.isShowSummonAnimation() ? 0x02 : 0x00); // // 0=teleported 1=default 2=summoned
|
||||
packet.writeH(37); // mask_bits_37
|
||||
packet.writeH(38); // 338 - mask_bits_38
|
||||
packet.writeB(_masks);
|
||||
|
||||
// Block 1
|
||||
|
@@ -201,18 +201,20 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
|
||||
|
||||
if (containsMask(UserInfoType.ENCHANTLEVEL))
|
||||
{
|
||||
packet.writeH(4);
|
||||
packet.writeH(5); // 338
|
||||
packet.writeC(_enchantLevel);
|
||||
packet.writeC(_armorEnchant);
|
||||
packet.writeC(0x00); // 338 - cBackEnchant?
|
||||
}
|
||||
|
||||
if (containsMask(UserInfoType.APPAREANCE))
|
||||
{
|
||||
packet.writeH(15);
|
||||
packet.writeH(19); // 338
|
||||
packet.writeD(_player.getVisualHair());
|
||||
packet.writeD(_player.getVisualHairColor());
|
||||
packet.writeD(_player.getVisualFace());
|
||||
packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00);
|
||||
packet.writeD(_player.getVisualHairColor() + 1); // 338 - DK color.
|
||||
}
|
||||
|
||||
if (containsMask(UserInfoType.STATUS))
|
||||
|
Reference in New Issue
Block a user