Initial changes.
This commit is contained in:
@@ -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>
|
||||||
|
@@ -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.">
|
||||||
|
@@ -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:
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
@@ -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()
|
||||||
{
|
{
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
@@ -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();
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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>
|
||||||
|
@@ -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>
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user