Underground update.
This commit is contained in:
@@ -86,6 +86,7 @@ import com.l2jserver.gameserver.model.actor.tasks.character.QueuedMagicUseTask;
|
||||
import com.l2jserver.gameserver.model.actor.templates.L2CharTemplate;
|
||||
import com.l2jserver.gameserver.model.actor.transform.Transform;
|
||||
import com.l2jserver.gameserver.model.actor.transform.TransformTemplate;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.effects.EffectFlag;
|
||||
import com.l2jserver.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jserver.gameserver.model.entity.Instance;
|
||||
@@ -119,6 +120,7 @@ import com.l2jserver.gameserver.model.options.OptionsSkillHolder;
|
||||
import com.l2jserver.gameserver.model.options.OptionsSkillType;
|
||||
import com.l2jserver.gameserver.model.skills.AbnormalType;
|
||||
import com.l2jserver.gameserver.model.skills.AbnormalVisualEffect;
|
||||
import com.l2jserver.gameserver.model.skills.BlowSuccess;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.model.skills.CommonSkill;
|
||||
import com.l2jserver.gameserver.model.skills.EffectScope;
|
||||
@@ -1853,7 +1855,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
{
|
||||
if (!destroyItemByItemId("Consume", skill.getItemConsumeId(), skill.getItemConsumeCount(), null, true))
|
||||
{
|
||||
getActingPlayer().sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
getActingPlayer().sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
abortCast();
|
||||
return;
|
||||
}
|
||||
@@ -1880,7 +1882,18 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
|
||||
// Send a Server->Client packet MagicSkillUser with target, displayId, level, skillTime, reuseDelay
|
||||
// to the L2Character AND to all L2PcInstance in the _KnownPlayers of the L2Character
|
||||
broadcastPacket(new MagicSkillUse(this, target, skill.getDisplayId(), skill.getDisplayLevel(), skillTime, reuseDelay));
|
||||
if (skill.getBlowChance() > 0)
|
||||
{
|
||||
for (AbstractEffect effect : skill.getEffects(EffectScope.GENERAL))
|
||||
{
|
||||
BlowSuccess.getInstance().set(this, skill, effect.calcSuccess(new BuffInfo(this, target, skill)));
|
||||
}
|
||||
broadcastPacket(new MagicSkillUse(this, target, skill.getDisplayId(), skill.getDisplayLevel(), skillTime, reuseDelay, BlowSuccess.getInstance().get(this, skill)));
|
||||
}
|
||||
else
|
||||
{
|
||||
broadcastPacket(new MagicSkillUse(this, target, skill.getDisplayId(), skill.getDisplayLevel(), skillTime, reuseDelay));
|
||||
}
|
||||
|
||||
// Send a system message to the player.
|
||||
if (isPlayer() && !skill.isAbnormalInstant())
|
||||
|
@@ -395,7 +395,7 @@ public final class L2ClassMasterInstance extends L2MerchantInstance
|
||||
{
|
||||
if (player.getInventory().getInventoryItemCount(holder.getId(), -1) < holder.getCount())
|
||||
{
|
||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -419,11 +419,11 @@ public final class L2ClassMasterInstance extends L2MerchantInstance
|
||||
|
||||
if (player.isSubClassActive())
|
||||
{
|
||||
player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass());
|
||||
player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClassId());
|
||||
}
|
||||
else
|
||||
{
|
||||
player.setBaseClass(player.getActiveClass());
|
||||
player.setBaseClassId(player.getActiveClassId());
|
||||
}
|
||||
|
||||
player.broadcastUserInfo();
|
||||
|
@@ -429,6 +429,7 @@ public final class L2PcInstance extends L2Playable
|
||||
private long _uptime;
|
||||
|
||||
private final ReentrantLock _subclassLock = new ReentrantLock();
|
||||
protected int _initialClass;
|
||||
protected int _baseClass;
|
||||
protected int _activeClass;
|
||||
protected int _classIndex = 0;
|
||||
@@ -954,6 +955,8 @@ public final class L2PcInstance extends L2Playable
|
||||
player.setName(name);
|
||||
// Set Character's create time
|
||||
player.setCreateDate(Calendar.getInstance());
|
||||
// Set the initial class ID to that of the actual class ID.
|
||||
player.setInitialClassId(player.getClassId().getId());
|
||||
// Set the base class ID to that of the actual class ID.
|
||||
player.setBaseClass(player.getClassId());
|
||||
// Give 20 recommendations
|
||||
@@ -1234,14 +1237,19 @@ public final class L2PcInstance extends L2Playable
|
||||
return super.getLevelMod();
|
||||
}
|
||||
|
||||
public void setBaseClass(int baseClass)
|
||||
public void setInitialClassId(int classId)
|
||||
{
|
||||
_initialClass = classId;
|
||||
}
|
||||
|
||||
public void setBaseClassId(int baseClass)
|
||||
{
|
||||
_baseClass = baseClass;
|
||||
}
|
||||
|
||||
public void setBaseClass(ClassId classId)
|
||||
{
|
||||
_baseClass = classId.ordinal();
|
||||
_baseClass = classId.getId();
|
||||
}
|
||||
|
||||
public boolean isInStoreMode()
|
||||
@@ -3125,7 +3133,7 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -3459,7 +3467,7 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -3519,7 +3527,7 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -3544,7 +3552,7 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -3576,7 +3584,7 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -3771,7 +3779,7 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -3864,7 +3872,7 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -6616,7 +6624,7 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
// You can't mount, dismount, break and drop items while fishing
|
||||
sendPacket(ActionFailed.STATIC_PACKET);
|
||||
sendPacket(SystemMessageId.YOU_CANNOT_DO_THAT_WHILE_FISHING2);
|
||||
sendPacket(SystemMessageId.YOU_CANNOT_DO_THAT_WHILE_FISHING);
|
||||
return false;
|
||||
}
|
||||
else if (isTransformed() || isCursedWeaponEquipped())
|
||||
@@ -7020,7 +7028,7 @@ public final class L2PcInstance extends L2Playable
|
||||
ps.setInt(30, isOnlineInt());
|
||||
ps.setInt(31, getClanPrivileges().getBitmask());
|
||||
ps.setInt(32, getWantsPeace());
|
||||
ps.setInt(33, getBaseClass());
|
||||
ps.setInt(33, getBaseClassId());
|
||||
ps.setInt(34, isNoble() ? 1 : 0);
|
||||
ps.setLong(35, 0);
|
||||
ps.setTimestamp(36, new Timestamp(getCreateDate().getTimeInMillis()));
|
||||
@@ -7125,18 +7133,18 @@ public final class L2PcInstance extends L2Playable
|
||||
player._classIndex = 0;
|
||||
try
|
||||
{
|
||||
player.setBaseClass(rset.getInt("base_class"));
|
||||
player.setBaseClassId(rset.getInt("base_class"));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// TODO: Should this be logged?
|
||||
player.setBaseClass(activeClassId);
|
||||
player.setBaseClassId(activeClassId);
|
||||
}
|
||||
player.setInitialClassId(ClassId.getInitialClassId(player));
|
||||
|
||||
// Restore Subclass Data (cannot be done earlier in function)
|
||||
if (restoreSubClassData(player))
|
||||
{
|
||||
if (activeClassId != player.getBaseClass())
|
||||
if (activeClassId != player.getBaseClassId())
|
||||
{
|
||||
for (SubClass subClass : player.getSubClasses().values())
|
||||
{
|
||||
@@ -7147,12 +7155,12 @@ public final class L2PcInstance extends L2Playable
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((player.getClassIndex() == 0) && (activeClassId != player.getBaseClass()))
|
||||
if ((player.getClassIndex() == 0) && (activeClassId != player.getBaseClassId()))
|
||||
{
|
||||
// Subclass in use but doesn't exist in DB -
|
||||
// a possible restart-while-modifysubclass cheat has been attempted.
|
||||
// Switching to use base class
|
||||
player.setClassId(player.getBaseClass());
|
||||
player.setClassId(player.getBaseClassId());
|
||||
_log.warning("Player " + player.getName() + " reverted to base class. Possibly has tried a relogin exploit while subclassing.");
|
||||
}
|
||||
else
|
||||
@@ -7651,7 +7659,7 @@ public final class L2PcInstance extends L2Playable
|
||||
ps.setInt(31, isOnlineInt());
|
||||
ps.setInt(32, getClanPrivileges().getBitmask());
|
||||
ps.setInt(33, getWantsPeace());
|
||||
ps.setInt(34, getBaseClass());
|
||||
ps.setInt(34, getBaseClassId());
|
||||
|
||||
long totalOnlineTime = _onlineTime;
|
||||
if (_onlineBeginTime > 0)
|
||||
@@ -9657,8 +9665,32 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
if (_activeSoulShots.contains(itemId))
|
||||
{
|
||||
removeAutoSoulShot(itemId);
|
||||
sendPacket(new ExAutoSoulShot(itemId, 0));
|
||||
final L2ItemInstance item = getInventory().getItemByItemId(itemId);
|
||||
|
||||
switch (item.getEtcItem().getDefaultAction())
|
||||
{
|
||||
case SOULSHOT:
|
||||
case FISHINGSHOT:
|
||||
{
|
||||
sendPacket(new ExAutoSoulShot(itemId, 0, 0));
|
||||
break;
|
||||
}
|
||||
case SPIRITSHOT:
|
||||
{
|
||||
sendPacket(new ExAutoSoulShot(itemId, 0, 1));
|
||||
break;
|
||||
}
|
||||
case SUMMON_SOULSHOT:
|
||||
{
|
||||
sendPacket(new ExAutoSoulShot(itemId, 0, 2));
|
||||
break;
|
||||
}
|
||||
case SUMMON_SPIRITSHOT:
|
||||
{
|
||||
sendPacket(new ExAutoSoulShot(itemId, 0, 3));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_AUTOMATIC_USE_OF_S1_HAS_BEEN_DEACTIVATED);
|
||||
sm.addItemName(itemId);
|
||||
@@ -9675,7 +9707,33 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
for (int itemId : _activeSoulShots)
|
||||
{
|
||||
sendPacket(new ExAutoSoulShot(itemId, 0));
|
||||
final L2ItemInstance item = getInventory().getItemByItemId(itemId);
|
||||
|
||||
switch (item.getEtcItem().getDefaultAction())
|
||||
{
|
||||
case SOULSHOT:
|
||||
case FISHINGSHOT:
|
||||
{
|
||||
sendPacket(new ExAutoSoulShot(itemId, 0, 0));
|
||||
break;
|
||||
}
|
||||
case SPIRITSHOT:
|
||||
{
|
||||
sendPacket(new ExAutoSoulShot(itemId, 0, 1));
|
||||
break;
|
||||
}
|
||||
case SUMMON_SOULSHOT:
|
||||
{
|
||||
sendPacket(new ExAutoSoulShot(itemId, 0, 2));
|
||||
break;
|
||||
}
|
||||
case SUMMON_SPIRITSHOT:
|
||||
{
|
||||
sendPacket(new ExAutoSoulShot(itemId, 0, 3));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_AUTOMATIC_USE_OF_S1_HAS_BEEN_DEACTIVATED);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
@@ -10573,12 +10631,27 @@ public final class L2PcInstance extends L2Playable
|
||||
return getSubClasses().size();
|
||||
}
|
||||
|
||||
public int getBaseClass()
|
||||
public int getInitialClassId()
|
||||
{
|
||||
return _initialClass;
|
||||
}
|
||||
|
||||
public ClassId getInitialClass()
|
||||
{
|
||||
return ClassId.getClassId(_initialClass);
|
||||
}
|
||||
|
||||
public int getBaseClassId()
|
||||
{
|
||||
return _baseClass;
|
||||
}
|
||||
|
||||
public int getActiveClass()
|
||||
public ClassId getBaseClass()
|
||||
{
|
||||
return ClassId.getClassId(_baseClass);
|
||||
}
|
||||
|
||||
public int getActiveClassId()
|
||||
{
|
||||
return _activeClass;
|
||||
}
|
||||
@@ -10663,7 +10736,7 @@ public final class L2PcInstance extends L2Playable
|
||||
|
||||
if (classIndex == 0)
|
||||
{
|
||||
setClassTemplate(getBaseClass());
|
||||
setClassTemplate(getBaseClassId());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -14888,7 +14961,7 @@ public final class L2PcInstance extends L2Playable
|
||||
|
||||
public boolean isAwaken()
|
||||
{
|
||||
if (((getActiveClass() >= 139) && (getActiveClass() <= 181)) || (getActiveClass() >= 188))
|
||||
if (((getActiveClassId() >= 139) && (getActiveClassId() <= 181)) || (getActiveClassId() >= 188))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -15298,7 +15371,7 @@ public final class L2PcInstance extends L2Playable
|
||||
*/
|
||||
public int getVitalityPoints()
|
||||
{
|
||||
if (getClassId().getId() == getBaseClass())
|
||||
if (getClassId().getId() == getBaseClassId())
|
||||
{
|
||||
return _vitalityPoints;
|
||||
}
|
||||
@@ -15311,7 +15384,7 @@ public final class L2PcInstance extends L2Playable
|
||||
|
||||
public void setVitalityPoints(int points)
|
||||
{
|
||||
if (getClassId().getId() == getBaseClass())
|
||||
if (getClassId().getId() == getBaseClassId())
|
||||
{
|
||||
_vitalityPoints = points;
|
||||
return;
|
||||
|
@@ -395,7 +395,7 @@ public class L2PetInstance extends L2Summon
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -443,7 +443,7 @@ public class L2PetInstance extends L2Summon
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT2);
|
||||
sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@@ -218,8 +218,6 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
}
|
||||
|
||||
/**
|
||||
* For characters below level 77 teleport service is free.<br>
|
||||
* From 8.00 pm to 00.00 from Monday till Tuesday for all characters there's a 50% discount on teleportation services
|
||||
* @param player
|
||||
* @param type
|
||||
* @param loc
|
||||
@@ -247,7 +245,7 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
|
||||
protected boolean shouldPayFee(L2PcInstance player, TeleportType type, TeleportLocation loc)
|
||||
{
|
||||
return (type != TeleportType.NORMAL) || (!Config.ALT_GAME_FREE_TELEPORT && ((player.getLevel() > 76) || player.isSubClassActive()) && ((loc.getFeeId() != 0) && (loc.getFeeCount() > 0)));
|
||||
return (type != TeleportType.NORMAL) || (!Config.FREE_TELEPORTING && ((player.getLevel() > 76) || player.isSubClassActive()) && ((loc.getFeeId() != 0) && (loc.getFeeCount() > 0)));
|
||||
}
|
||||
|
||||
protected int parseNextInt(StringTokenizer st, int defaultVal)
|
||||
@@ -556,7 +554,7 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
}
|
||||
}
|
||||
|
||||
if (Config.ALT_GAME_FREE_TELEPORT || player.destroyItemByItemId("Teleport " + (list.getIsForNoble() ? " nobless" : ""), list.getItemId(), price, this, true))
|
||||
if (Config.FREE_TELEPORTING || player.destroyItemByItemId("Teleport " + (list.getIsForNoble() ? " nobless" : ""), list.getItemId(), price, this, true))
|
||||
{
|
||||
if (Config.DEBUG)
|
||||
{
|
||||
|
Reference in New Issue
Block a user