Initial changes.

This commit is contained in:
MobiusDevelopment
2022-03-10 10:46:16 +00:00
parent 124da5b623
commit 2edee74e5d
15 changed files with 188 additions and 64 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>L2J_Mobius_10.1_MasterClass</name> <name>L2J_Mobius_10.2_MasterClass</name>
<comment></comment> <comment></comment>
<projects> <projects>
</projects> </projects>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml> <!DOCTYPE xml>
<project name="L2J_Mobius_10.1_MasterClass" default="cleanup" basedir="."> <project name="L2J_Mobius_10.2_MasterClass" default="cleanup" basedir=".">
<description> <description>
This file is part of the L2J Mobius project. This file is part of the L2J Mobius project.
@@ -134,15 +134,15 @@
</target> </target>
<target name="adding-core" depends="jar" description="Adding the compiled jars to the Zip file."> <target name="adding-core" depends="jar" description="Adding the compiled jars to the Zip file.">
<zip destfile="${build}/L2J_Mobius_10.1_MasterClass.zip" basedir="${build.dist}" level="9" /> <zip destfile="${build}/L2J_Mobius_10.2_MasterClass.zip" basedir="${build.dist}" level="9" />
</target> </target>
<target name="adding-datapack" depends="adding-core" description="Updating the Zip file with datapack content."> <target name="adding-datapack" depends="adding-core" description="Updating the Zip file with datapack content.">
<zip destfile="${build}/L2J_Mobius_10.1_MasterClass.zip" basedir="${datapack}" excludes="**/*-sources.jar" update="true" level="9" /> <zip destfile="${build}/L2J_Mobius_10.2_MasterClass.zip" basedir="${datapack}" excludes="**/*-sources.jar" update="true" level="9" />
</target> </target>
<target name="adding-readme" depends="adding-datapack" description="Adding readme.txt to the Zip file."> <target name="adding-readme" depends="adding-datapack" description="Adding readme.txt to the Zip file.">
<zip destfile="${build}/L2J_Mobius_10.1_MasterClass.zip" basedir="." includes="readme.txt" update="true" level="9" /> <zip destfile="${build}/L2J_Mobius_10.2_MasterClass.zip" basedir="." includes="readme.txt" update="true" level="9" />
</target> </target>
<target name="cleanup" depends="adding-readme" description="Cleaning the build folder."> <target name="cleanup" depends="adding-readme" description="Cleaning the build folder.">

View File

@@ -101,8 +101,8 @@ MaximumOnlineUsers = 2000
# Numbers of protocol revisions that server allows to connect. # Numbers of protocol revisions that server allows to connect.
# Delimiter is ; # Delimiter is ;
# WARNING: <u><b><font color="red">Changing the protocol revision may result in incompatible communication and many errors in game!</font></b></u> # WARNING: <u><b><font color="red">Changing the protocol revision may result in incompatible communication and many errors in game!</font></b></u>
# Master Class: 338 # Master Class Chapter 2: 362
AllowedProtocolRevisions = 338 AllowedProtocolRevisions = 362
# Displays server type next to the server name on character selection. # Displays server type next to the server name on character selection.
# Notes: # Notes:

View File

@@ -25,9 +25,10 @@ public enum ItemListType implements IUpdateTypeComponent
{ {
AUGMENT_BONUS(1), AUGMENT_BONUS(1),
ELEMENTAL_ATTRIBUTE(2), ELEMENTAL_ATTRIBUTE(2),
ENCHANT_EFFECT(4), VISUAL_ID(4),
VISUAL_ID(8), SOUL_CRYSTAL(8),
SOUL_CRYSTAL(16); REUSE_DELAY(16),
BLESSED(128);
private final int _mask; private final int _mask;

View File

@@ -56,7 +56,9 @@ public enum UserInfoType implements IUpdateTypeComponent
STAT_POINTS(0x19, 16), STAT_POINTS(0x19, 16),
STAT_ABILITIES(0x1A, 18), STAT_ABILITIES(0x1A, 18),
ELIXIR_USED(0x1B, 1); ELIXIR_USED(0x1B, 1),
VANGUARD_MOUNT(0x1C, 1);
/** Int mask. */ /** Int mask. */
private final int _mask; private final int _mask;

View File

@@ -22,6 +22,7 @@ import java.util.Objects;
import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.enums.AttributeType; import org.l2jmobius.gameserver.enums.AttributeType;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.buylist.Product; import org.l2jmobius.gameserver.model.buylist.Product;
import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption;
import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.ItemTemplate;
@@ -87,6 +88,9 @@ public class ItemInfo
private int _visualId; private int _visualId;
private long _visualExpiration; private long _visualExpiration;
private int _reuseDelay;
private Player _owner;
/** /**
* Get all information from Item to generate ItemInfo. * Get all information from Item to generate ItemInfo.
* @param item * @param item
@@ -153,6 +157,8 @@ public class ItemInfo
_soulCrystalSpecialOptions = item.getAdditionalSpecialAbilities(); _soulCrystalSpecialOptions = item.getAdditionalSpecialAbilities();
_visualId = item.getVisualId(); _visualId = item.getVisualId();
_visualExpiration = item.getVisualLifeTime() > 0 ? (item.getVisualLifeTime() - Chronos.currentTimeMillis()) / 1000 : 0; _visualExpiration = item.getVisualLifeTime() > 0 ? (item.getVisualLifeTime() - Chronos.currentTimeMillis()) / 1000 : 0;
_reuseDelay = item.getReuseDelay();
_owner = item.getActingPlayer();
} }
public ItemInfo(Item item, int change) public ItemInfo(Item item, int change)
@@ -408,6 +414,16 @@ public class ItemInfo
return _visualExpiration; return _visualExpiration;
} }
public int getReuseDelay()
{
return _reuseDelay;
}
public Player getOwner()
{
return _owner;
}
@Override @Override
public String toString() public String toString()
{ {

View File

@@ -707,11 +707,46 @@ public enum ExIncomingPackets implements IIncomingPackets<GameClient>
EX_PACKETREADCOUNTPERSECOND(0x220, null, ConnectionState.IN_GAME), EX_PACKETREADCOUNTPERSECOND(0x220, null, ConnectionState.IN_GAME),
EX_SELECT_GLOBAL_EVENT_UI(0x221, null, ConnectionState.IN_GAME), EX_SELECT_GLOBAL_EVENT_UI(0x221, null, ConnectionState.IN_GAME),
EX_L2PASS_INFO(0x222, 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(0x223, null, ConnectionState.IN_GAME),
EX_L2PASS_REQUEST_REWARD_ALL(0x224, null, ConnectionState.IN_GAME), EX_L2PASS_REQUEST_REWARD_ALL(0x224, null, ConnectionState.IN_GAME),
EX_L2PASS_BUY_PREMIUM(0x225, null, ConnectionState.IN_GAME), EX_L2PASS_BUY_PREMIUM(0x225, null, ConnectionState.IN_GAME),
EX_SAYHAS_SUPPORT_TOGGLE(0x226, null, ConnectionState.IN_GAME), EX_SAYHAS_SUPPORT_TOGGLE(0x226, null, ConnectionState.IN_GAME),
EX_MAX(0x227, null, ConnectionState.IN_GAME); // 362
EX_REQ_ENCHANT_FAIL_REWARD_INFO(0x227, null, ConnectionState.IN_GAME),
EX_SET_ENCHANT_CHALLENGE_POINT(0x228, null, ConnectionState.IN_GAME),
EX_RESET_ENCHANT_CHALLENGE_POINT(0x229, null, ConnectionState.IN_GAME),
EX_REQ_VIEW_ENCHANT_RESULT(0x22A, null, ConnectionState.IN_GAME),
EX_REQ_START_MULTI_ENCHANT_SCROLL(0x22B, null, ConnectionState.IN_GAME),
EX_REQ_VIEW_MULTI_ENCHANT_RESULT(0x22C, null, ConnectionState.IN_GAME),
EX_REQ_FINISH_MULTI_ENCHANT_SCROLL(0x22D, null, ConnectionState.IN_GAME),
EX_REQ_CHANGE_MULTI_ENCHANT_SCROLL(0x22E, null, ConnectionState.IN_GAME),
EX_REQ_SET_MULTI_ENCHANT_ITEM_LIST(0x22F, null, ConnectionState.IN_GAME),
EX_REQ_MULTI_ENCHANT_ITEM_LIST(0x230, null, ConnectionState.IN_GAME),
EX_WORLDCASTLEWAR_SUPPORT_PLEDGE_FLAG_SET(0x231, null, ConnectionState.IN_GAME),
EX_WORLDCASTLEWAR_SUPPORT_PLEDGE_INFO_SET(0x232, null, ConnectionState.IN_GAME),
EX_REQ_HOMUNCULUS_PROB_LIST(0x233, null, ConnectionState.IN_GAME),
EX_WORLDCASTLEWAR_HOST_CASTLE_SIEGE_ALL_RANKING_INFO(0x234, null, ConnectionState.IN_GAME),
EX_WORLDCASTLEWAR_CASTLE_SIEGE_ALL_RANKING_INFO(0x235, null, ConnectionState.IN_GAME),
EX_MISSION_LEVEL_REWARD_LIST(0x236, null, ConnectionState.IN_GAME),
EX_MISSION_LEVEL_RECEIVE_REWARD(0x237, null, ConnectionState.IN_GAME),
EX_BALROGWAR_TELEPORT(0x238, null, ConnectionState.IN_GAME),
EX_BALROGWAR_SHOW_UI(0x239, null, ConnectionState.IN_GAME),
EX_BALROGWAR_SHOW_RANKING(0x23A, null, ConnectionState.IN_GAME),
EX_BALROGWAR_GET_REWARD(0x23B, null, ConnectionState.IN_GAME),
EX_USER_RESTART_LOCKER_UPDATE(0x23C, null, ConnectionState.IN_GAME),
EX_WORLD_EXCHANGE_ITEM_LIST(0x23D, null, ConnectionState.IN_GAME),
EX_WORLD_EXCHANGE_REGI_ITEM(0x23E, null, ConnectionState.IN_GAME),
EX_WORLD_EXCHANGE_BUY_ITEM(0x23F, null, ConnectionState.IN_GAME),
EX_WORLD_EXCHANGE_SETTLE_LIST(0x240, null, ConnectionState.IN_GAME),
EX_WORLD_EXCHANGE_SETTLE_RECV_RESULT(0x241, null, ConnectionState.IN_GAME),
EX_READY_ITEM_AUTO_PEEL(0x242, null, ConnectionState.IN_GAME),
EX_REQUEST_ITEM_AUTO_PEEL(0x243, null, ConnectionState.IN_GAME),
EX_STOP_ITEM_AUTO_PEEL(0x244, null, ConnectionState.IN_GAME),
EX_VARIATION_OPEN_UI(0x245, null, ConnectionState.IN_GAME),
EX_VARIATION_CLOSE_UI(0x246, null, ConnectionState.IN_GAME),
EX_APPLY_VARIATION_OPTION(0x247, null, ConnectionState.IN_GAME),
EX_BR_VERSION(0x248, null, ConnectionState.IN_GAME),
EX_MAX(0x249, null, ConnectionState.IN_GAME);
public static final ExIncomingPackets[] PACKET_ARRAY; public static final ExIncomingPackets[] PACKET_ARRAY;

View File

@@ -1014,21 +1014,58 @@ public enum OutgoingPackets
EX_PRIVATE_STORE_SEARCH_ITEM(0xFE, 0x2D4), EX_PRIVATE_STORE_SEARCH_ITEM(0xFE, 0x2D4),
EX_PRIVATE_STORE_SEARCH_HISTORY(0xFE, 0x2D5), EX_PRIVATE_STORE_SEARCH_HISTORY(0xFE, 0x2D5),
EX_PRIVATE_STORE_SEARCH_STATISTICS(0xFE, 0x2D6), EX_PRIVATE_STORE_SEARCH_STATISTICS(0xFE, 0x2D6),
EX_WORLDCASTLEWAR_HOST_CASTLE_SIEGE_RANKING_INFO(0xFE, 0x2D7), EX_NEW_HENNA_LIST(0xFE, 0x2D7),
EX_WORLDCASTLEWAR_CASTLE_SIEGE_RANKING_INFO(0xFE, 0x2D8), EX_NEW_HENNA_EQUIP(0xFE, 0x2D8),
EX_NEW_HENNA_LIST(0xFE, 0x2D9), EX_NEW_HENNA_UNEQUIP(0xFE, 0x2D9),
EX_NEW_HENNA_EQUIP(0xFE, 0x2DA), EX_NEW_HENNA_POTEN_SELECT(0xFE, 0x2DA),
EX_NEW_HENNA_UNEQUIP(0xFE, 0x2DB), EX_NEW_HENNA_POTEN_ENCHANT(0xFE, 0x2DB),
EX_NEW_HENNA_POTEN_SELECT(0xFE, 0x2DC), EX_NEW_HENNA_COMPOSE(0xFE, 0x2DC),
EX_NEW_HENNA_POTEN_ENCHANT(0xFE, 0x2DD), EX_REQUEST_INVITE_PARTY(0xFE, 0x2DD),
EX_NEW_HENNA_COMPOSE(0xFE, 0x2DE), EX_INIT_GLOBAL_EVENT_UI(0xFE, 0x2DE),
EX_REQUEST_INVITE_PARTY(0xFE, 0x2DF), EX_SHOW_GLOBAL_EVENT_UI(0xFE, 0x2DF),
EX_INIT_GLOBAL_EVENT_UI(0xFE, 0x2E0), EX_L2PASS_SIMPLE_INFO(0xFE, 0x2E0),
EX_SHOW_GLOBAL_EVENT_UI(0xFE, 0x2E1), EX_L2PASS_INFO(0xFE, 0x2E1),
EX_L2PASS_SIMPLE_INFO(0xFE, 0x2E2), EX_SAYHAS_SUPPORT_INFO(0xFE, 0x2E2),
EX_L2PASS_INFO(0xFE, 0x2E3), // 362
EX_SAYHAS_SUPPORT_INFO(0xFE, 0x2E4), EX_RES_ENCHANT_ITEM_FAIL_REWARD_INFO(0xFE, 0x2E3),
EX_MAX(0xFE, 0x2E5); EX_CHANGED_ENCHANT_TARGET_ITEM_PROB_LIST(0xFE, 0x2E4),
EX_ENCHANT_CHALLENGE_POINT_INFO(0xFE, 0x2E5),
EX_SET_ENCHANT_CHALLENGE_POINT(0xFE, 0x2E6),
EX_RESET_ENCHANT_CHALLENGE_POINT(0xFE, 0x2E7),
EX_RES_SELECT_MULTI_ENCHANT_SCROLL(0xFE, 0x2E8),
EX_RES_SET_MULTI_ENCHANT_ITEM_LIST(0xFE, 0x2E9),
EX_RES_MULTI_ENCHANT_ITEM_LIST(0xFE, 0x2EA),
EX_WORLDCASTLEWAR_HOST_SUPPORT_PLEDGE_RANKING_INFO(0xFE, 0x2EB),
EX_WORLDCASTLEWAR_HOST_PLEDGE_RANKING_INFO(0xFE, 0x2EC),
EX_WORLDCASTLEWAR_HOST_PERSONAL_RANKING_INFO(0xFE, 0x2ED),
EX_WORLDCASTLEWAR_SUPPORT_PLEDGE_RANKING_INFO(0xFE, 0x2EE),
EX_WORLDCASTLEWAR_PLEDGE_RANKING_INFO(0xFE, 0x2EF),
EX_WORLDCASTLEWAR_PERSONAL_RANKING_INFO(0xFE, 0x2F0),
EX_HOMUNCULUS_CREATE_PROB_LIST(0xFE, 0x2F1),
EX_HOMUNCULUS_COUPON_PROB_LIST(0xFE, 0x2F2),
EX_WORLDCASTLEWAR_HOST_CASTLE_SIEGE_RANKING_INFO(0xFE, 0x2F3),
EX_WORLDCASTLEWAR_CASTLE_SIEGE_RANKING_INFO(0xFE, 0x2F4),
EX_MISSION_LEVEL_REWARD_LIST(0xFE, 0x2F5),
EX_BALROGWAR_SHOW_UI(0xFE, 0x2F6),
EX_BALROGWAR_SHOW_RANKING(0xFE, 0x2F7),
EX_BALROGWAR_GET_REWARD(0xFE, 0x2F8),
EX_BALROGWAR_HUD(0xFE, 0x2F9),
EX_BALROGWAR_BOSSINFO(0xFE, 0x2FA),
EX_USER_RESTART_LOCKER_LIST(0xFE, 0x2FB),
EX_USER_RESTART_LOCKER_UPDATE(0xFE, 0x2FC),
EX_WORLD_EXCHANGE_ITEM_LIST(0xFE, 0x2FD),
EX_WORLD_EXCHANGE_REGI_ITEM(0xFE, 0x2FE),
EX_WORLD_EXCHANGE_BUY_ITEM(0xFE, 0x2FF),
EX_WORLD_EXCHANGE_SETTLE_LIST(0xFE, 0x300),
EX_WORLD_EXCHANGE_SETTLE_RECV_RESULT(0xFE, 0x301),
EX_WORLD_EXCHANGE_SELL_COMPLETE_ALARM(0xFE, 0x302),
EX_READY_ITEM_AUTO_PEEL(0xFE, 0x303),
EX_RESULT_ITEM_AUTO_PEEL(0xFE, 0x304),
EX_STOP_ITEM_AUTO_PEEL(0xFE, 0x305),
EX_TIME_RESTRICT_FIELD_DIE_LIMT_TIME(0xFE, 0x306),
EX_APPLY_VARIATION_OPTION(0xFE, 0x307),
EX_BR_VERSION(0xFE, 0x308),
EX_MAX(0xFE, 0x309);
private final int _id1; private final int _id1;
private final int _id2; private final int _id2;

View File

@@ -85,8 +85,7 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
packet.writeC(0); // 270 protocol packet.writeC(0); // 270 protocol
packet.writeD(item.getTime()); packet.writeD(item.getTime());
packet.writeC(item.isAvailable() ? 1 : 0); // GOD Item enabled = 1 disabled (red) = 0 packet.writeC(item.isAvailable() ? 1 : 0); // GOD Item enabled = 1 disabled (red) = 0
packet.writeC(0); // 140 protocol packet.writeH(0); // 140 - locked
packet.writeC(0); // 140 protocol
if (containsMask(mask, ItemListType.AUGMENT_BONUS)) if (containsMask(mask, ItemListType.AUGMENT_BONUS))
{ {
writeItemAugment(packet, item); writeItemAugment(packet, item);
@@ -95,10 +94,11 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{ {
writeItemElemental(packet, item); writeItemElemental(packet, item);
} }
if (containsMask(mask, ItemListType.ENCHANT_EFFECT)) // 362 - Removed
{ // if (containsMask(mask, ItemListType.ENCHANT_EFFECT))
writeItemEnchantEffect(packet, item); // {
} // writeItemEnchantEffect(packet, item);
// }
if (containsMask(mask, ItemListType.VISUAL_ID)) if (containsMask(mask, ItemListType.VISUAL_ID))
{ {
packet.writeD(item.getVisualId()); // Item remodel visual ID packet.writeD(item.getVisualId()); // Item remodel visual ID
@@ -107,6 +107,13 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{ {
writeItemEnsoulOptions(packet, item); writeItemEnsoulOptions(packet, item);
} }
// TODO:
// if (containsMask(mask, ItemListType.REUSE_DELAY))
// {
// final Player owner = item.getOwner();
// packet.writeD(owner == null ? 0 : (int) (owner.getItemRemainingReuseTime(item.getObjectId()) / 1000));
// }
// Essence
// if (containsMask(mask, ItemListType.BLESSED)) // if (containsMask(mask, ItemListType.BLESSED))
// { // {
// packet.writeC(1); // packet.writeC(1);
@@ -130,8 +137,7 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
packet.writeC(0); // 270 protocol packet.writeC(0); // 270 protocol
packet.writeD(item.getTime()); packet.writeD(item.getTime());
packet.writeC(item.isAvailable() ? 1 : 0); // GOD Item enabled = 1 disabled (red) = 0 packet.writeC(item.isAvailable() ? 1 : 0); // GOD Item enabled = 1 disabled (red) = 0
packet.writeC(0); // 140 protocol packet.writeH(0); // 140 - locked
packet.writeC(0); // 140 protocol
if (containsMask(mask, ItemListType.AUGMENT_BONUS)) if (containsMask(mask, ItemListType.AUGMENT_BONUS))
{ {
writeItemAugment(packet, item); writeItemAugment(packet, item);
@@ -140,10 +146,11 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{ {
writeItemElemental(packet, item); writeItemElemental(packet, item);
} }
if (containsMask(mask, ItemListType.ENCHANT_EFFECT)) // 362 - Removed
{ // if (containsMask(mask, ItemListType.ENCHANT_EFFECT))
writeItemEnchantEffect(packet, item); // {
} // writeItemEnchantEffect(packet, item);
// }
if (containsMask(mask, ItemListType.VISUAL_ID)) if (containsMask(mask, ItemListType.VISUAL_ID))
{ {
packet.writeD(item.getVisualId()); // Item remodel visual ID packet.writeD(item.getVisualId()); // Item remodel visual ID
@@ -152,6 +159,13 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{ {
writeItemEnsoulOptions(packet, item); writeItemEnsoulOptions(packet, item);
} }
// TODO:
// if (containsMask(mask, ItemListType.REUSE_DELAY))
// {
// final Player owner = item.getOwner();
// packet.writeD(owner == null ? 0 : (int) (owner.getItemRemainingReuseTime(item.getObjectId()) / 1000));
// }
// Essence
// if (containsMask(mask, ItemListType.BLESSED)) // if (containsMask(mask, ItemListType.BLESSED))
// { // {
// packet.writeC(1); // packet.writeC(1);
@@ -169,17 +183,18 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{ {
mask |= ItemListType.ELEMENTAL_ATTRIBUTE.getMask(); mask |= ItemListType.ELEMENTAL_ATTRIBUTE.getMask();
} }
if (item.getEnchantOptions() != null) // 362 - Removed
{ // if (item.getEnchantOptions() != null)
for (int id : item.getEnchantOptions()) // {
{ // for (int id : item.getEnchantOptions())
if (id > 0) // {
{ // if (id > 0)
mask |= ItemListType.ENCHANT_EFFECT.getMask(); // {
break; // mask |= ItemListType.ENCHANT_EFFECT.getMask();
} // break;
} // }
} // }
// }
if (item.getVisualId() > 0) if (item.getVisualId() > 0)
{ {
mask |= ItemListType.VISUAL_ID.getMask(); mask |= ItemListType.VISUAL_ID.getMask();
@@ -188,6 +203,12 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{ {
mask |= ItemListType.SOUL_CRYSTAL.getMask(); mask |= ItemListType.SOUL_CRYSTAL.getMask();
} }
// TODO:
// if (item.getReuseDelay() > 0)
// {
// mask |= ItemListType.REUSE_DELAY.getMask();
// }
// Essence
// if (item.isBlessed()) // if (item.isBlessed())
// { // {
// mask |= ItemListType.BLESSED.getMask(); // mask |= ItemListType.BLESSED.getMask();

View File

@@ -264,6 +264,7 @@ public class CharInfo implements IClientOutgoingPacket
packet.writeC(0); packet.writeC(0);
packet.writeD(_player.getVisualHairColor() + 1); // 338 - DK color. packet.writeD(_player.getVisualHairColor() + 1); // 338 - DK color.
packet.writeD(0); packet.writeD(0);
packet.writeC(0); // 362 - Vanguard mount.
return true; return true;
} }

View File

@@ -256,6 +256,7 @@ public class CharSelectionInfo implements IClientOutgoingPacket
packet.writeD((int) (charInfoPackage.getLastAccess() / 1000)); // 235 - last play time packet.writeD((int) (charInfoPackage.getLastAccess() / 1000)); // 235 - last play time
packet.writeC(0); // 338 packet.writeC(0); // 338
packet.writeD(charInfoPackage.getHairColor() + 1); // 338 - DK color. packet.writeD(charInfoPackage.getHairColor() + 1); // 338 - DK color.
packet.writeC(0); // 362 - Vanguard mount.
} }
return true; return true;
} }

View File

@@ -139,7 +139,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
OutgoingPackets.USER_INFO.writeId(packet); OutgoingPackets.USER_INFO.writeId(packet);
packet.writeD(_player.getObjectId()); packet.writeD(_player.getObjectId());
packet.writeD(_initSize); packet.writeD(_initSize);
packet.writeH(28); // 286 - 28 packet.writeH(29); // 362 - 29
packet.writeB(_masks); packet.writeB(_masks);
if (containsMask(UserInfoType.RELATION)) if (containsMask(UserInfoType.RELATION))
{ {
@@ -419,8 +419,14 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
if (containsMask(UserInfoType.ELIXIR_USED)) // 286 if (containsMask(UserInfoType.ELIXIR_USED)) // 286
{ {
packet.writeH(1); packet.writeH(1);
packet.writeD(0); packet.writeH(0);
} }
if (containsMask(UserInfoType.VANGUARD_MOUNT)) // 362
{
packet.writeC(0); // 362 - Vanguard mount.
}
// Send exp bonus change. // Send exp bonus change.
if (containsMask(UserInfoType.VITA_FAME)) if (containsMask(UserInfoType.VITA_FAME))
{ {
@@ -428,6 +434,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
_player.sendPacket(new ExUserBoostStat(_player, BonusExpType.BUFFS)); _player.sendPacket(new ExUserBoostStat(_player, BonusExpType.BUFFS));
_player.sendPacket(new ExUserBoostStat(_player, BonusExpType.PASSIVE)); _player.sendPacket(new ExUserBoostStat(_player, BonusExpType.PASSIVE));
} }
return true; return true;
} }

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/GameServer.java"/> <listEntry value="/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/GameServer.java"/>
</listAttribute> </listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/> <listEntry value="1"/>
@@ -12,7 +12,7 @@
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/> <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.l2jmobius.gameserver.GameServer"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.l2jmobius.gameserver.GameServer"/>
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="L2J_Mobius_10.1_MasterClass"/> <stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="L2J_Mobius_10.2_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="L2J_Mobius_10.1_MasterClass"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="L2J_Mobius_10.2_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:L2J_Mobius_10.1_MasterClass}/dist/game/"/> <stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:L2J_Mobius_10.2_MasterClass}/dist/game/"/>
</launchConfiguration> </launchConfiguration>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/loginserver/LoginServer.java"/> <listEntry value="/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/loginserver/LoginServer.java"/>
</listAttribute> </listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/> <listEntry value="1"/>
@@ -13,7 +13,7 @@
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/> <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.l2jmobius.loginserver.LoginServer"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.l2jmobius.loginserver.LoginServer"/>
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="L2J_Mobius_10.1_MasterClass"/> <stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="L2J_Mobius_10.2_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="L2J_Mobius_10.1_MasterClass"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="L2J_Mobius_10.2_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:L2J_Mobius_10.1_MasterClass}/dist/login/"/> <stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:L2J_Mobius_10.2_MasterClass}/dist/login/"/>
</launchConfiguration> </launchConfiguration>

View File

@@ -1,6 +1,6 @@
L2J-Mobius Master Class L2J-Mobius Master Class Chapter 2
Client (password L2jMobius): https://drive.google.com/u/0/uc?id=1fuTmSa-W-OTFZV1ZnaCv8ql5O39Uw9oL&export=download Client (password L2jMobius): https://drive.google.com/u/0/uc?id=1I3nwvFOkuKrq9E_f-8iMiOHxlMvv2CtI&export=download
System: https://mega.nz/file/EwdSFZKD#1yIxgst5gzrpc7DQvSm1aokgfan7vfl3tRpMi6nZ51U System: https://mega.nz/file/AlVFEIhL#dZwVnzxdP2-La3mMsUfnXHkxdl35Iu0ojkjbwriIHnE
JDK: https://www.mediafire.com/file/kb2nfx54wojys4f/bellsoft-jdk17.0.2%252B9-windows-amd64.msi JDK: https://www.mediafire.com/file/kb2nfx54wojys4f/bellsoft-jdk17.0.2%252B9-windows-amd64.msi
XAMPP: https://www.mediafire.com/file/hkehxpyjn81ybsw/xampp-windows-x64-8.0.11-2-VS16-installer.exe XAMPP: https://www.mediafire.com/file/hkehxpyjn81ybsw/xampp-windows-x64-8.0.11-2-VS16-installer.exe
@@ -125,6 +125,9 @@ Return of the Queen Ant Chapter 2: https://eu.4game.com/patchnotes/lineage2/331/
Master Class: https://eu.4game.com/patchnotes/lineage2/362/ Master Class: https://eu.4game.com/patchnotes/lineage2/362/
-Death Knight creation support -Death Knight creation support
Master Class Chapter 2: https://eu.4game.com/patchnotes/lineage2/374/
-New enchant system
Events: Events:
-Birth of Draco -Birth of Draco
-Character Birthday -Character Birthday