Code improvements.
This commit is contained in:
@@ -56,17 +56,7 @@ public final class AbsorberInfo implements IUniqueId
|
||||
@Override
|
||||
public final boolean equals(Object obj)
|
||||
{
|
||||
if (this == obj)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (obj instanceof AbsorberInfo)
|
||||
{
|
||||
return (((AbsorberInfo) obj).getObjectId() == _objectId);
|
||||
}
|
||||
|
||||
return false;
|
||||
return (this == obj) || ((obj instanceof AbsorberInfo) && (((AbsorberInfo) obj).getObjectId() == _objectId));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -147,8 +147,7 @@ public final class ArenaParticipantsHolder
|
||||
if (redSize > (blueSize + 1))
|
||||
{
|
||||
broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.TEAM_MEMBERS_WERE_MODIFIED_BECAUSE_THE_TEAMS_WERE_UNBALANCED));
|
||||
final int needed = redSize - (blueSize + 1);
|
||||
for (int i = 0; i < (needed + 1); i++)
|
||||
for (int i = 0; i < ((redSize - (blueSize + 1)) + 1); i++)
|
||||
{
|
||||
final L2PcInstance plr = _redPlayers.get(i);
|
||||
if (plr == null)
|
||||
@@ -161,8 +160,7 @@ public final class ArenaParticipantsHolder
|
||||
else if (blueSize > (redSize + 1))
|
||||
{
|
||||
broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.TEAM_MEMBERS_WERE_MODIFIED_BECAUSE_THE_TEAMS_WERE_UNBALANCED));
|
||||
final int needed = blueSize - (redSize + 1);
|
||||
for (int i = 0; i < (needed + 1); i++)
|
||||
for (int i = 0; i < ((blueSize - (redSize + 1)) + 1); i++)
|
||||
{
|
||||
final L2PcInstance plr = _bluePlayers.get(i);
|
||||
if (plr == null)
|
||||
|
||||
@@ -228,8 +228,7 @@ public class AutoSpawnHandler
|
||||
_registeredSpawns.remove(spawnInst.getId());
|
||||
|
||||
// Cancel the currently associated running scheduled task.
|
||||
final ScheduledFuture<?> respawnTask = _runningSpawns.remove(spawnInst._objectId);
|
||||
respawnTask.cancel(false);
|
||||
_runningSpawns.remove(spawnInst._objectId).cancel(false);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -263,40 +262,29 @@ public class AutoSpawnHandler
|
||||
|
||||
final int objectId = spawnInst._objectId;
|
||||
|
||||
if (isSpawnRegistered(objectId))
|
||||
if (!isSpawnRegistered(objectId))
|
||||
{
|
||||
ScheduledFuture<?> spawnTask = null;
|
||||
|
||||
if (isActive)
|
||||
{
|
||||
final AutoSpawner rs = new AutoSpawner(objectId);
|
||||
|
||||
if (spawnInst._desDelay > 0)
|
||||
{
|
||||
spawnTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(rs, spawnInst._initDelay, spawnInst._resDelay);
|
||||
}
|
||||
else
|
||||
{
|
||||
spawnTask = ThreadPoolManager.getInstance().scheduleEffect(rs, spawnInst._initDelay);
|
||||
}
|
||||
|
||||
_runningSpawns.put(objectId, spawnTask);
|
||||
}
|
||||
else
|
||||
{
|
||||
final AutoDespawner rd = new AutoDespawner(objectId);
|
||||
spawnTask = _runningSpawns.remove(objectId);
|
||||
|
||||
if (spawnTask != null)
|
||||
{
|
||||
spawnTask.cancel(false);
|
||||
}
|
||||
|
||||
ThreadPoolManager.getInstance().scheduleEffect(rd, 0);
|
||||
}
|
||||
|
||||
spawnInst.setSpawnActive(isActive);
|
||||
return;
|
||||
}
|
||||
|
||||
ScheduledFuture<?> spawnTask = null;
|
||||
if (isActive)
|
||||
{
|
||||
final AutoSpawner rs = new AutoSpawner(objectId);
|
||||
spawnTask = spawnInst._desDelay > 0 ? ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(rs, spawnInst._initDelay, spawnInst._resDelay) : ThreadPoolManager.getInstance().scheduleEffect(rs, spawnInst._initDelay);
|
||||
_runningSpawns.put(objectId, spawnTask);
|
||||
}
|
||||
else
|
||||
{
|
||||
final AutoDespawner rd = new AutoDespawner(objectId);
|
||||
spawnTask = _runningSpawns.remove(objectId);
|
||||
if (spawnTask != null)
|
||||
{
|
||||
spawnTask.cancel(false);
|
||||
}
|
||||
ThreadPoolManager.getInstance().scheduleEffect(rd, 0);
|
||||
}
|
||||
spawnInst.setSpawnActive(isActive);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -326,13 +314,7 @@ public class AutoSpawnHandler
|
||||
public final long getTimeToNextSpawn(AutoSpawnInstance spawnInst)
|
||||
{
|
||||
final int objectId = spawnInst.getObjectId();
|
||||
|
||||
if (!isSpawnRegistered(objectId))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return (_runningSpawns.containsKey(objectId)) ? _runningSpawns.get(objectId).getDelay(TimeUnit.MILLISECONDS) : 0;
|
||||
return !isSpawnRegistered(objectId) ? -1 : (_runningSpawns.containsKey(objectId)) ? _runningSpawns.get(objectId).getDelay(TimeUnit.MILLISECONDS) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -496,22 +478,15 @@ public class AutoSpawnHandler
|
||||
}
|
||||
}
|
||||
|
||||
if (npcInst != null)
|
||||
if ((npcInst != null) && spawnInst.isBroadcasting())
|
||||
{
|
||||
final String nearestTown = MapRegionManager.getInstance().getClosestTownName(npcInst);
|
||||
|
||||
// Announce to all players that the spawn has taken place, with the nearest town location.
|
||||
if (spawnInst.isBroadcasting())
|
||||
{
|
||||
Broadcast.toAllOnlinePlayers("The " + npcInst.getName() + " has spawned near " + nearestTown + "!");
|
||||
}
|
||||
Broadcast.toAllOnlinePlayers("The " + npcInst.getName() + " has spawned near " + MapRegionManager.getInstance().getClosestTownName(npcInst) + "!");
|
||||
}
|
||||
|
||||
// If there is no despawn time, do not create a despawn task.
|
||||
if (spawnInst.getDespawnDelay() > 0)
|
||||
{
|
||||
final AutoDespawner rd = new AutoDespawner(_objectId);
|
||||
ThreadPoolManager.getInstance().scheduleAi(rd, spawnInst.getDespawnDelay() - 1000);
|
||||
ThreadPoolManager.getInstance().scheduleAi((new AutoDespawner(_objectId)), spawnInst.getDespawnDelay() - 1000);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -722,12 +697,7 @@ public class AutoSpawnHandler
|
||||
|
||||
public boolean addSpawnLocation(int[] spawnLoc)
|
||||
{
|
||||
if (spawnLoc.length != 3)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return addSpawnLocation(spawnLoc[0], spawnLoc[1], spawnLoc[2], -1);
|
||||
return (spawnLoc.length == 3) && addSpawnLocation(spawnLoc[0], spawnLoc[1], spawnLoc[2], -1);
|
||||
}
|
||||
|
||||
public Location removeSpawnLocation(int locIndex)
|
||||
|
||||
@@ -122,8 +122,7 @@ public class BlockList
|
||||
{
|
||||
continue;
|
||||
}
|
||||
final String memo = rs.getString("memo");
|
||||
list.put(friendId, memo);
|
||||
list.put(friendId, rs.getString("memo"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -485,11 +485,7 @@ public final class CharEffectList
|
||||
*/
|
||||
public boolean removeBlockedBuffSlots(Set<AbnormalType> blockedBuffSlots)
|
||||
{
|
||||
if (_blockedBuffSlots != null)
|
||||
{
|
||||
return _blockedBuffSlots.removeAll(blockedBuffSlots);
|
||||
}
|
||||
return false;
|
||||
return (_blockedBuffSlots != null) && _blockedBuffSlots.removeAll(blockedBuffSlots);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -809,12 +805,13 @@ public final class CharEffectList
|
||||
*/
|
||||
public void stopAllToggles(boolean update)
|
||||
{
|
||||
if (hasToggles())
|
||||
if (!hasToggles())
|
||||
{
|
||||
getToggles().forEach(b -> stopAndRemove(b, getToggles()));
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
return;
|
||||
}
|
||||
getToggles().forEach(b -> stopAndRemove(b, getToggles()));
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -823,12 +820,13 @@ public final class CharEffectList
|
||||
*/
|
||||
public void stopAllDances(boolean update)
|
||||
{
|
||||
if (hasDances())
|
||||
if (!hasDances())
|
||||
{
|
||||
getDances().forEach(b -> stopAndRemove(b, getDances()));
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
return;
|
||||
}
|
||||
getDances().forEach(b -> stopAndRemove(b, getDances()));
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -837,12 +835,13 @@ public final class CharEffectList
|
||||
*/
|
||||
public void stopAllDebuffs(boolean update)
|
||||
{
|
||||
if (hasDebuffs())
|
||||
if (!hasDebuffs())
|
||||
{
|
||||
getDebuffs().forEach(b -> stopAndRemove(b, getDebuffs()));
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
return;
|
||||
}
|
||||
getDebuffs().forEach(b -> stopAndRemove(b, getDebuffs()));
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -964,87 +963,88 @@ public final class CharEffectList
|
||||
*/
|
||||
public void stopEffectsOnAction()
|
||||
{
|
||||
if (_hasBuffsRemovedOnAnyAction)
|
||||
if (!_hasBuffsRemovedOnAnyAction)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
boolean update = false;
|
||||
if (hasBuffs())
|
||||
{
|
||||
getBuffs().stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(info, getBuffs()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasTriggered())
|
||||
{
|
||||
getTriggered().stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(info, getTriggered()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDebuffs())
|
||||
{
|
||||
getDebuffs().stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(info, getDebuffs()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDances())
|
||||
{
|
||||
getDances().stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(info, getDances()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasToggles())
|
||||
{
|
||||
getToggles().stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(info, getToggles()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
}
|
||||
|
||||
public void stopEffectsOnDamage(boolean awake)
|
||||
{
|
||||
if (!awake)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
boolean update = false;
|
||||
if (_hasBuffsRemovedOnDamage)
|
||||
{
|
||||
boolean update = false;
|
||||
if (hasBuffs())
|
||||
{
|
||||
getBuffs().stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(info, getBuffs()));
|
||||
getBuffs().stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(info, getBuffs()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasTriggered())
|
||||
{
|
||||
getTriggered().stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(info, getTriggered()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDebuffs())
|
||||
{
|
||||
getDebuffs().stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(info, getDebuffs()));
|
||||
getTriggered().stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(info, getTriggered()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDances())
|
||||
{
|
||||
getDances().stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(info, getDances()));
|
||||
getDances().stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(info, getDances()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasToggles())
|
||||
{
|
||||
getToggles().stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(info, getToggles()));
|
||||
getToggles().stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(info, getToggles()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
}
|
||||
}
|
||||
|
||||
public void stopEffectsOnDamage(boolean awake)
|
||||
{
|
||||
if (awake)
|
||||
|
||||
if (_hasDebuffsRemovedOnDamage && hasDebuffs())
|
||||
{
|
||||
boolean update = false;
|
||||
if (_hasBuffsRemovedOnDamage)
|
||||
{
|
||||
if (hasBuffs())
|
||||
{
|
||||
getBuffs().stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(info, getBuffs()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasTriggered())
|
||||
{
|
||||
getTriggered().stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(info, getTriggered()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDances())
|
||||
{
|
||||
getDances().stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(info, getDances()));
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasToggles())
|
||||
{
|
||||
getToggles().stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(info, getToggles()));
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (_hasDebuffsRemovedOnDamage)
|
||||
{
|
||||
if (hasDebuffs())
|
||||
{
|
||||
getDebuffs().stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(info, getDebuffs()));
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
getDebuffs().stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(info, getDebuffs()));
|
||||
update = true;
|
||||
}
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1347,18 +1347,12 @@ public final class CharEffectList
|
||||
break;
|
||||
}
|
||||
|
||||
if (!bi.isInUse())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (bi.getSkill().getAbnormalType() == AbnormalType.SUMMON_CONDITION)
|
||||
if (!bi.isInUse() || (bi.getSkill().getAbnormalType() == AbnormalType.SUMMON_CONDITION))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
stopAndRemove(bi, effects);
|
||||
|
||||
buffsToRemove--;
|
||||
}
|
||||
}
|
||||
@@ -1391,12 +1385,9 @@ public final class CharEffectList
|
||||
}
|
||||
|
||||
// Check if the previous call hasnt finished, if so, don't send packets uselessly again.
|
||||
if (_effectIconsUpdate != null)
|
||||
if ((_effectIconsUpdate != null) && !_effectIconsUpdate.isDone())
|
||||
{
|
||||
if (!_effectIconsUpdate.isDone())
|
||||
{
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
// Schedule the icon update packets 500miliseconds ahead, so it can gather-up most of the changes.
|
||||
_effectIconsUpdate = ThreadPoolManager.getInstance().scheduleGeneral(() ->
|
||||
@@ -1501,13 +1492,9 @@ public final class CharEffectList
|
||||
{
|
||||
if (summonOwner.isInParty())
|
||||
{
|
||||
summonOwner.getParty().broadcastToPartyMembers(summonOwner, psSummon); // send to all member except summonOwner
|
||||
summonOwner.sendPacket(ps); // now send to summonOwner
|
||||
}
|
||||
else
|
||||
{
|
||||
summonOwner.sendPacket(ps);
|
||||
summonOwner.getParty().broadcastToPartyMembers(summonOwner, psSummon);
|
||||
}
|
||||
summonOwner.sendPacket(ps);
|
||||
}
|
||||
}
|
||||
else if (_owner.isPlayer() && _owner.isInParty())
|
||||
|
||||
@@ -49,17 +49,7 @@ public final class DamageDoneInfo
|
||||
@Override
|
||||
public final boolean equals(Object obj)
|
||||
{
|
||||
if (this == obj)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (obj instanceof DamageDoneInfo)
|
||||
{
|
||||
return (((DamageDoneInfo) obj).getAttacker() == _attacker);
|
||||
}
|
||||
|
||||
return false;
|
||||
return (this == obj) || ((obj instanceof DamageDoneInfo) && (((DamageDoneInfo) obj).getAttacker() == _attacker));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -53,26 +53,7 @@ public class DropProtection implements Runnable
|
||||
|
||||
public synchronized boolean tryPickUp(L2PcInstance actor)
|
||||
{
|
||||
if (!_isProtected)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_owner == actor)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((_owner.getParty() != null) && (_owner.getParty() == actor.getParty()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* if (_owner.getClan() != null && _owner.getClan() == actor.getClan()) return true;
|
||||
*/
|
||||
|
||||
return false;
|
||||
return !_isProtected || (_owner == actor) || ((_owner.getParty() != null) && (_owner.getParty() == actor.getParty()));
|
||||
}
|
||||
|
||||
public boolean tryPickUp(L2PetInstance pet)
|
||||
|
||||
@@ -264,11 +264,7 @@ public final class Elementals
|
||||
public static byte getItemElement(int itemId)
|
||||
{
|
||||
final ElementalItems item = TABLE.get(itemId);
|
||||
if (item != null)
|
||||
{
|
||||
return item._element;
|
||||
}
|
||||
return NONE;
|
||||
return item != null ? item._element : NONE;
|
||||
}
|
||||
|
||||
public static ElementalItems getItemElemental(int itemId)
|
||||
@@ -279,11 +275,7 @@ public final class Elementals
|
||||
public static int getMaxElementLevel(int itemId)
|
||||
{
|
||||
final ElementalItems item = TABLE.get(itemId);
|
||||
if (item != null)
|
||||
{
|
||||
return item._type._maxLevel;
|
||||
}
|
||||
return -1;
|
||||
return item != null ? item._type._maxLevel : -1;
|
||||
}
|
||||
|
||||
public static String getElementName(byte element)
|
||||
|
||||
@@ -100,15 +100,8 @@ public class ItemInfo
|
||||
// Get the enchant level of the L2ItemInstance
|
||||
_enchant = item.getEnchantLevel();
|
||||
|
||||
// Get the augmentation boni
|
||||
if (item.isAugmented())
|
||||
{
|
||||
_augmentation = item.getAugmentation().getAugmentationId();
|
||||
}
|
||||
else
|
||||
{
|
||||
_augmentation = 0;
|
||||
}
|
||||
// Get the augmentation bonus
|
||||
_augmentation = item.isAugmented() ? item.getAugmentation().getAugmentationId() : 0;
|
||||
|
||||
// Get the quantity of the L2ItemInstance
|
||||
_count = item.getCount();
|
||||
@@ -182,14 +175,7 @@ public class ItemInfo
|
||||
_enchant = item.getEnchant();
|
||||
|
||||
// Get the augmentation boni
|
||||
if (item.isAugmented())
|
||||
{
|
||||
_augmentation = item.getAugmentation().getAugmentationId();
|
||||
}
|
||||
else
|
||||
{
|
||||
_augmentation = 0;
|
||||
}
|
||||
_augmentation = item.isAugmented() ? item.getAugmentation().getAugmentationId() : 0;
|
||||
|
||||
// Get the quantity of the L2ItemInstance
|
||||
_count = item.getCount();
|
||||
@@ -279,14 +265,7 @@ public class ItemInfo
|
||||
_enchant = item.getEnchantLevel();
|
||||
|
||||
// Get the augmentation boni
|
||||
if (item.isAugmented())
|
||||
{
|
||||
_augmentation = item.getAugmentationId();
|
||||
}
|
||||
else
|
||||
{
|
||||
_augmentation = 0;
|
||||
}
|
||||
_augmentation = item.isAugmented() ? item.getAugmentationId() : 0;
|
||||
|
||||
// Get the quantity of the L2ItemInstance
|
||||
_count = item.getCount();
|
||||
|
||||
@@ -75,14 +75,6 @@ public class ItemRequest
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (this == obj)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (!(obj instanceof ItemRequest))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return (_objectId != ((ItemRequest) obj)._objectId);
|
||||
return (this == obj) || ((obj instanceof ItemRequest) && (_objectId != ((ItemRequest) obj)._objectId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,12 +292,7 @@ public final class L2ArmorSet
|
||||
|
||||
public boolean containShield(int shield_id)
|
||||
{
|
||||
if (_shield.isEmpty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return _shield.contains(Integer.valueOf(shield_id));
|
||||
return !_shield.isEmpty() && _shield.contains(Integer.valueOf(shield_id));
|
||||
}
|
||||
|
||||
public List<SkillHolder> getShieldSkills()
|
||||
@@ -334,12 +329,9 @@ public final class L2ArmorSet
|
||||
for (int armorSlot : ARMORSET_SLOTS)
|
||||
{
|
||||
final L2ItemInstance itemPart = inv.getPaperdollItem(armorSlot);
|
||||
if (itemPart != null)
|
||||
if ((itemPart != null) && (enchantLevel > itemPart.getEnchantLevel()))
|
||||
{
|
||||
if (enchantLevel > itemPart.getEnchantLevel())
|
||||
{
|
||||
enchantLevel = itemPart.getEnchantLevel();
|
||||
}
|
||||
enchantLevel = itemPart.getEnchantLevel();
|
||||
}
|
||||
}
|
||||
if (enchantLevel == Byte.MAX_VALUE)
|
||||
|
||||
@@ -731,17 +731,19 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
public void setLevel(int level)
|
||||
{
|
||||
_level = level;
|
||||
if ((_level >= 2) && (_forum == null) && Config.ENABLE_COMMUNITY_BOARD)
|
||||
if ((_level < 2) || (_forum != null) || !Config.ENABLE_COMMUNITY_BOARD)
|
||||
{
|
||||
final Forum forum = ForumsBBSManager.getInstance().getForumByName("ClanRoot");
|
||||
if (forum != null)
|
||||
{
|
||||
_forum = forum.getChildByName(_name);
|
||||
if (_forum == null)
|
||||
{
|
||||
_forum = ForumsBBSManager.getInstance().createNewForum(_name, ForumsBBSManager.getInstance().getForumByName("ClanRoot"), Forum.CLAN, Forum.CLANMEMBERONLY, getId());
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
final Forum forum = ForumsBBSManager.getInstance().getForumByName("ClanRoot");
|
||||
if (forum == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_forum = forum.getChildByName(_name);
|
||||
if (_forum == null)
|
||||
{
|
||||
_forum = ForumsBBSManager.getInstance().createNewForum(_name, ForumsBBSManager.getInstance().getForumByName("ClanRoot"), Forum.CLAN, Forum.CLANMEMBERONLY, getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -847,7 +849,7 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
*/
|
||||
public boolean isMember(int id)
|
||||
{
|
||||
return (id == 0 ? false : _members.containsKey(id));
|
||||
return ((id != 0) && _members.containsKey(id));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1237,11 +1239,7 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
|
||||
public String getNotice()
|
||||
{
|
||||
if (_notice == null)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return _notice;
|
||||
return _notice == null ? "" : _notice;
|
||||
}
|
||||
|
||||
private void restoreSkills()
|
||||
@@ -1297,12 +1295,7 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
*/
|
||||
public final Skill[] getAllSkills()
|
||||
{
|
||||
if (_skills == null)
|
||||
{
|
||||
return new Skill[0];
|
||||
}
|
||||
|
||||
return _skills.values().toArray(new Skill[_skills.values().size()]);
|
||||
return _skills == null ? new Skill[0] : _skills.values().toArray(new Skill[_skills.values().size()]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1320,15 +1313,7 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
*/
|
||||
public Skill addSkill(Skill newSkill)
|
||||
{
|
||||
Skill oldSkill = null;
|
||||
|
||||
if (newSkill != null)
|
||||
{
|
||||
// Replace oldSkill by newSkill or Add the newSkill
|
||||
oldSkill = _skills.put(newSkill.getId(), newSkill);
|
||||
}
|
||||
|
||||
return oldSkill;
|
||||
return newSkill != null ? _skills.put(newSkill.getId(), newSkill) : null;
|
||||
}
|
||||
|
||||
public Skill addNewSkill(Skill newSkill)
|
||||
@@ -1358,15 +1343,12 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
else
|
||||
{
|
||||
final SubPledge subunit = getSubPledge(subType);
|
||||
if (subunit != null)
|
||||
{
|
||||
oldSkill = subunit.addNewSkill(newSkill);
|
||||
}
|
||||
else
|
||||
if (subunit == null)
|
||||
{
|
||||
_log.log(Level.WARNING, "Subpledge " + subType + " does not exist for clan " + this);
|
||||
return oldSkill;
|
||||
}
|
||||
oldSkill = subunit.addNewSkill(newSkill);
|
||||
}
|
||||
|
||||
try (Connection con = DatabaseFactory.getInstance().getConnection())
|
||||
@@ -1441,12 +1423,9 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
{
|
||||
try
|
||||
{
|
||||
if ((temp != null) && temp.isOnline())
|
||||
if ((temp != null) && temp.isOnline() && (skill.getMinPledgeClass() <= temp.getPlayerInstance().getPledgeClass()))
|
||||
{
|
||||
if (skill.getMinPledgeClass() <= temp.getPlayerInstance().getPledgeClass())
|
||||
{
|
||||
temp.getPlayerInstance().addSkill(skill, false); // Skill is not saved to player DB
|
||||
}
|
||||
temp.getPlayerInstance().addSkill(skill, false);
|
||||
}
|
||||
}
|
||||
catch (NullPointerException e)
|
||||
@@ -1815,11 +1794,7 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
while (rset.next())
|
||||
{
|
||||
final int id = rset.getInt("sub_pledge_id");
|
||||
final String name = rset.getString("name");
|
||||
final int leaderId = rset.getInt("leader_id");
|
||||
// Create a SubPledge object for each record
|
||||
final SubPledge pledge = new SubPledge(id, name, leaderId);
|
||||
_subPledges.put(id, pledge);
|
||||
_subPledges.put(id, (new SubPledge(id, rset.getString("name"), rset.getInt("leader_id"))));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1836,12 +1811,7 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
*/
|
||||
public final SubPledge getSubPledge(int pledgeType)
|
||||
{
|
||||
if (_subPledges == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return _subPledges.get(pledgeType);
|
||||
return _subPledges == null ? null : _subPledges.get(pledgeType);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1919,17 +1889,7 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
|
||||
if (pledgeType != -1)
|
||||
{
|
||||
// Royal Guard 5000 points per each
|
||||
// Order of Knights 10000 points per each
|
||||
if (pledgeType < L2Clan.SUBUNIT_KNIGHT1)
|
||||
{
|
||||
setReputationScore(getReputationScore() - Config.ROYAL_GUARD_COST, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
setReputationScore(getReputationScore() - Config.KNIGHT_UNIT_COST, true);
|
||||
// TODO: clan lvl9 or more can reinforce knights cheaper if first knight unit already created, use Config.KNIGHT_REINFORCE_COST
|
||||
}
|
||||
setReputationScore(pledgeType < L2Clan.SUBUNIT_KNIGHT1 ? getReputationScore() - Config.ROYAL_GUARD_COST : getReputationScore() - Config.KNIGHT_UNIT_COST, true);
|
||||
}
|
||||
|
||||
if (Config.DEBUG)
|
||||
@@ -2054,11 +2014,7 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
|
||||
public EnumIntBitmask<ClanPrivilege> getRankPrivs(int rank)
|
||||
{
|
||||
if (_privs.get(rank) != null)
|
||||
{
|
||||
return _privs.get(rank).getPrivs();
|
||||
}
|
||||
return new EnumIntBitmask<>(ClanPrivilege.class, false);
|
||||
return _privs.get(rank) != null ? _privs.get(rank).getPrivs() : new EnumIntBitmask<>(ClanPrivilege.class, false);
|
||||
}
|
||||
|
||||
public void setRankPrivs(int rank, int privs)
|
||||
@@ -2085,17 +2041,11 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
|
||||
for (L2ClanMember cm : getMembers())
|
||||
{
|
||||
if (cm.isOnline())
|
||||
if (cm.isOnline() && (cm.getPowerGrade() == rank) && (cm.getPlayerInstance() != null))
|
||||
{
|
||||
if (cm.getPowerGrade() == rank)
|
||||
{
|
||||
if (cm.getPlayerInstance() != null)
|
||||
{
|
||||
cm.getPlayerInstance().getClanPrivileges().setBitmask(privs);
|
||||
cm.getPlayerInstance().sendPacket(new PledgeReceiveUpdatePower(privs));
|
||||
cm.getPlayerInstance().sendPacket(new UserInfo(cm.getPlayerInstance()));
|
||||
}
|
||||
}
|
||||
cm.getPlayerInstance().getClanPrivileges().setBitmask(privs);
|
||||
cm.getPlayerInstance().sendPacket(new PledgeReceiveUpdatePower(privs));
|
||||
cm.getPlayerInstance().sendPacket(new UserInfo(cm.getPlayerInstance()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2139,12 +2089,7 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
*/
|
||||
public final RankPrivs[] getAllRankPrivs()
|
||||
{
|
||||
if (_privs == null)
|
||||
{
|
||||
return new RankPrivs[0];
|
||||
}
|
||||
|
||||
return _privs.values().toArray(new RankPrivs[_privs.values().size()]);
|
||||
return _privs == null ? new RankPrivs[0] : _privs.values().toArray(new RankPrivs[_privs.values().size()]);
|
||||
}
|
||||
|
||||
public int getLeaderSubPledge(int leaderId)
|
||||
@@ -2491,13 +2436,10 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
player.sendPacket(SystemMessageId.TO_CREATE_AN_ALLIANCE_YOUR_CLAN_MUST_BE_LEVEL_5_OR_HIGHER);
|
||||
return;
|
||||
}
|
||||
if (getAllyPenaltyExpiryTime() > System.currentTimeMillis())
|
||||
if ((getAllyPenaltyExpiryTime() > System.currentTimeMillis()) && (getAllyPenaltyType() == L2Clan.PENALTY_TYPE_DISSOLVE_ALLY))
|
||||
{
|
||||
if (getAllyPenaltyType() == L2Clan.PENALTY_TYPE_DISSOLVE_ALLY)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.YOU_CANNOT_CREATE_A_NEW_ALLIANCE_WITHIN_1_DAY_OF_DISSOLUTION);
|
||||
return;
|
||||
}
|
||||
player.sendPacket(SystemMessageId.YOU_CANNOT_CREATE_A_NEW_ALLIANCE_WITHIN_1_DAY_OF_DISSOLUTION);
|
||||
return;
|
||||
}
|
||||
if (getDissolvingExpiryTime() > System.currentTimeMillis())
|
||||
{
|
||||
@@ -2590,93 +2532,74 @@ public class L2Clan implements IIdentifiable, INamable
|
||||
case 0:
|
||||
{
|
||||
// Upgrade to 1
|
||||
if ((player.getSp() >= 20000) && (player.getAdena() >= 650000))
|
||||
if ((player.getSp() >= 20000) && (player.getAdena() >= 650000) && player.reduceAdena("ClanLvl", 650000, player.getTarget(), true))
|
||||
{
|
||||
if (player.reduceAdena("ClanLvl", 650000, player.getTarget(), true))
|
||||
{
|
||||
player.setSp(player.getSp() - 20000);
|
||||
final SystemMessage sp = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1);
|
||||
sp.addInt(20000);
|
||||
player.sendPacket(sp);
|
||||
increaseClanLevel = true;
|
||||
}
|
||||
player.setSp(player.getSp() - 20000);
|
||||
final SystemMessage sp = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1);
|
||||
sp.addInt(20000);
|
||||
player.sendPacket(sp);
|
||||
increaseClanLevel = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
// Upgrade to 2
|
||||
if ((player.getSp() >= 100000) && (player.getAdena() >= 2500000))
|
||||
if ((player.getSp() >= 100000) && (player.getAdena() >= 2500000) && player.reduceAdena("ClanLvl", 2500000, player.getTarget(), true))
|
||||
{
|
||||
if (player.reduceAdena("ClanLvl", 2500000, player.getTarget(), true))
|
||||
{
|
||||
player.setSp(player.getSp() - 100000);
|
||||
final SystemMessage sp = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1);
|
||||
sp.addInt(100000);
|
||||
player.sendPacket(sp);
|
||||
increaseClanLevel = true;
|
||||
}
|
||||
player.setSp(player.getSp() - 100000);
|
||||
final SystemMessage sp = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1);
|
||||
sp.addInt(100000);
|
||||
player.sendPacket(sp);
|
||||
increaseClanLevel = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
// Upgrade to 3
|
||||
if ((player.getSp() >= 350000) && (player.getInventory().getItemByItemId(1419) != null))
|
||||
if ((player.getSp() >= 350000) && (player.getInventory().getItemByItemId(1419) != null) && player.destroyItemByItemId("ClanLvl", 1419, 1, player.getTarget(), false))
|
||||
{
|
||||
// TODO unhardcode these item IDs
|
||||
// itemId 1419 == Blood Mark
|
||||
if (player.destroyItemByItemId("ClanLvl", 1419, 1, player.getTarget(), false))
|
||||
{
|
||||
player.setSp(player.getSp() - 350000);
|
||||
final SystemMessage sp = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1);
|
||||
sp.addInt(350000);
|
||||
player.sendPacket(sp);
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
|
||||
sm.addItemName(1419);
|
||||
player.sendPacket(sm);
|
||||
increaseClanLevel = true;
|
||||
}
|
||||
player.setSp(player.getSp() - 350000);
|
||||
final SystemMessage sp = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1);
|
||||
sp.addInt(350000);
|
||||
player.sendPacket(sp);
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
|
||||
sm.addItemName(1419);
|
||||
player.sendPacket(sm);
|
||||
increaseClanLevel = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
// Upgrade to 4
|
||||
if ((player.getSp() >= 1000000) && (player.getInventory().getItemByItemId(3874) != null))
|
||||
if ((player.getSp() >= 1000000) && (player.getInventory().getItemByItemId(3874) != null) && player.destroyItemByItemId("ClanLvl", 3874, 1, player.getTarget(), false))
|
||||
{
|
||||
// itemId 3874 == Alliance Manifesto
|
||||
if (player.destroyItemByItemId("ClanLvl", 3874, 1, player.getTarget(), false))
|
||||
{
|
||||
player.setSp(player.getSp() - 1000000);
|
||||
final SystemMessage sp = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1);
|
||||
sp.addInt(1000000);
|
||||
player.sendPacket(sp);
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
|
||||
sm.addItemName(3874);
|
||||
player.sendPacket(sm);
|
||||
increaseClanLevel = true;
|
||||
}
|
||||
player.setSp(player.getSp() - 1000000);
|
||||
final SystemMessage sp = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1);
|
||||
sp.addInt(1000000);
|
||||
player.sendPacket(sp);
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
|
||||
sm.addItemName(3874);
|
||||
player.sendPacket(sm);
|
||||
increaseClanLevel = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
// Upgrade to 5
|
||||
if ((player.getSp() >= 2500000) && (player.getInventory().getItemByItemId(3870) != null))
|
||||
if ((player.getSp() >= 2500000) && (player.getInventory().getItemByItemId(3870) != null) && player.destroyItemByItemId("ClanLvl", 3870, 1, player.getTarget(), false))
|
||||
{
|
||||
// itemId 3870 == Seal of Aspiration
|
||||
if (player.destroyItemByItemId("ClanLvl", 3870, 1, player.getTarget(), false))
|
||||
{
|
||||
player.setSp(player.getSp() - 2500000);
|
||||
final SystemMessage sp = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1);
|
||||
sp.addInt(2500000);
|
||||
player.sendPacket(sp);
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
|
||||
sm.addItemName(3870);
|
||||
player.sendPacket(sm);
|
||||
increaseClanLevel = true;
|
||||
}
|
||||
player.setSp(player.getSp() - 2500000);
|
||||
final SystemMessage sp = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1);
|
||||
sp.addInt(2500000);
|
||||
player.sendPacket(sp);
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
|
||||
sm.addItemName(3870);
|
||||
player.sendPacket(sm);
|
||||
increaseClanLevel = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -152,15 +152,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public boolean isOnline()
|
||||
{
|
||||
if ((_player == null) || !_player.isOnline())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (_player.isInOfflineMode())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return (_player != null) && _player.isOnline() && !_player.isInOfflineMode();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -169,11 +161,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public int getClassId()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getClassId().getId();
|
||||
}
|
||||
return _classId;
|
||||
return _player != null ? _player.getClassId().getId() : _classId;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -182,11 +170,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public int getLevel()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getLevel();
|
||||
}
|
||||
return _level;
|
||||
return _player != null ? _player.getLevel() : _level;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -195,11 +179,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public String getName()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getName();
|
||||
}
|
||||
return _name;
|
||||
return _player != null ? _player.getName() : _name;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -208,11 +188,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public int getObjectId()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getObjectId();
|
||||
}
|
||||
return _objectId;
|
||||
return _player != null ? _player.getObjectId() : _objectId;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -221,11 +197,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public String getTitle()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getTitle();
|
||||
}
|
||||
return _title;
|
||||
return _player != null ? _player.getTitle() : _title;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -234,11 +206,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public int getPledgeType()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getPledgeType();
|
||||
}
|
||||
return _pledgeType;
|
||||
return _player != null ? _player.getPledgeType() : _pledgeType;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -283,11 +251,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public int getPowerGrade()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getPowerGrade();
|
||||
}
|
||||
return _powerGrade;
|
||||
return _player != null ? _player.getPowerGrade() : _powerGrade;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -343,11 +307,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public int getRaceOrdinal()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getRace().ordinal();
|
||||
}
|
||||
return _raceOrdinal;
|
||||
return _player != null ? _player.getRace().ordinal() : _raceOrdinal;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -356,11 +316,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public boolean getSex()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getAppearance().getSex();
|
||||
}
|
||||
return _sex;
|
||||
return _player != null ? _player.getAppearance().getSex() : _sex;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -369,11 +325,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public int getSponsor()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getSponsor();
|
||||
}
|
||||
return _sponsor;
|
||||
return _player != null ? _player.getSponsor() : _sponsor;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -382,11 +334,7 @@ public class L2ClanMember
|
||||
*/
|
||||
public int getApprentice()
|
||||
{
|
||||
if (_player != null)
|
||||
{
|
||||
return _player.getApprentice();
|
||||
}
|
||||
return _apprentice;
|
||||
return _player != null ? _player.getApprentice() : _apprentice;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -117,17 +117,18 @@ public class L2CommandChannel extends AbstractPlayerGroup
|
||||
*/
|
||||
public void disbandChannel()
|
||||
{
|
||||
if (_parties != null)
|
||||
if (_parties == null)
|
||||
{
|
||||
for (L2Party party : _parties)
|
||||
{
|
||||
if (party != null)
|
||||
{
|
||||
removeParty(party);
|
||||
}
|
||||
}
|
||||
_parties.clear();
|
||||
return;
|
||||
}
|
||||
for (L2Party party : _parties)
|
||||
{
|
||||
if (party != null)
|
||||
{
|
||||
removeParty(party);
|
||||
}
|
||||
}
|
||||
_parties.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -194,11 +195,7 @@ public class L2CommandChannel extends AbstractPlayerGroup
|
||||
*/
|
||||
public boolean meetRaidWarCondition(L2Object obj)
|
||||
{
|
||||
if (!((obj instanceof L2Character) && ((L2Character) obj).isRaid()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return (getMemberCount() >= Config.LOOT_RAIDS_PRIVILEGE_CC_SIZE);
|
||||
return (obj instanceof L2Character) && ((L2Character) obj).isRaid() && (getMemberCount() >= Config.LOOT_RAIDS_PRIVILEGE_CC_SIZE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -95,11 +95,7 @@ public final class L2EnchantSkillGroup
|
||||
|
||||
public byte getRate(L2PcInstance ply)
|
||||
{
|
||||
if (ply.getLevel() < 76)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return _rate[ply.getLevel() - 76];
|
||||
return ply.getLevel() < 76 ? 0 : _rate[ply.getLevel() - 76];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,27 +82,13 @@ public final class L2EnchantSkillLearn
|
||||
|
||||
public int getMinSkillLevel(int level)
|
||||
{
|
||||
if ((level % 1000) == 1)
|
||||
{
|
||||
return _baseLvl;
|
||||
}
|
||||
return level - 1;
|
||||
return (level % 1000) == 1 ? _baseLvl : level - 1;
|
||||
}
|
||||
|
||||
public boolean isMaxEnchant(int level)
|
||||
{
|
||||
final int enchantType = getEnchantRoute(level);
|
||||
if ((enchantType < 1) || !_enchantRoutes.containsKey(enchantType))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
final int index = getEnchantIndex(level);
|
||||
|
||||
if ((index + 1) >= EnchantSkillGroupsData.getInstance().getEnchantSkillGroupById(_enchantRoutes.get(enchantType)).getEnchantGroupDetails().size())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return (enchantType >= 1) && _enchantRoutes.containsKey(enchantType) && ((getEnchantIndex(level) + 1) >= EnchantSkillGroupsData.getInstance().getEnchantSkillGroupById(_enchantRoutes.get(enchantType)).getEnchantGroupDetails().size());
|
||||
}
|
||||
|
||||
public EnchantSkillHolder getEnchantSkillHolder(int level)
|
||||
|
||||
@@ -78,14 +78,7 @@ public class L2GroupSpawn extends L2Spawn
|
||||
final L2Npc mob = new L2ControllableMobInstance(_template);
|
||||
mob.setCurrentHpMp(mob.getMaxHp(), mob.getMaxMp());
|
||||
|
||||
if (getHeading() == -1)
|
||||
{
|
||||
mob.setHeading(Rnd.nextInt(61794));
|
||||
}
|
||||
else
|
||||
{
|
||||
mob.setHeading(getHeading());
|
||||
}
|
||||
mob.setHeading(getHeading() == -1 ? Rnd.nextInt(61794) : getHeading());
|
||||
|
||||
mob.setSpawn(this);
|
||||
mob.spawnMe(newlocx, newlocy, newlocz);
|
||||
|
||||
@@ -162,50 +162,22 @@ public class L2MapRegion
|
||||
|
||||
public final Location getSpawnLoc()
|
||||
{
|
||||
if (Config.RANDOM_RESPAWN_IN_TOWN_ENABLED)
|
||||
{
|
||||
return _spawnLocs.get(Rnd.get(_spawnLocs.size()));
|
||||
}
|
||||
return _spawnLocs.get(0);
|
||||
return Config.RANDOM_RESPAWN_IN_TOWN_ENABLED ? _spawnLocs.get(Rnd.get(_spawnLocs.size())) : _spawnLocs.get(0);
|
||||
}
|
||||
|
||||
public final Location getOtherSpawnLoc()
|
||||
{
|
||||
if (_otherSpawnLocs != null)
|
||||
{
|
||||
if (Config.RANDOM_RESPAWN_IN_TOWN_ENABLED)
|
||||
{
|
||||
return _otherSpawnLocs.get(Rnd.get(_otherSpawnLocs.size()));
|
||||
}
|
||||
return _otherSpawnLocs.get(0);
|
||||
}
|
||||
return getSpawnLoc();
|
||||
return _otherSpawnLocs != null ? Config.RANDOM_RESPAWN_IN_TOWN_ENABLED ? _otherSpawnLocs.get(Rnd.get(_otherSpawnLocs.size())) : _otherSpawnLocs.get(0) : getSpawnLoc();
|
||||
}
|
||||
|
||||
public final Location getChaoticSpawnLoc()
|
||||
{
|
||||
if (_chaoticSpawnLocs != null)
|
||||
{
|
||||
if (Config.RANDOM_RESPAWN_IN_TOWN_ENABLED)
|
||||
{
|
||||
return _chaoticSpawnLocs.get(Rnd.get(_chaoticSpawnLocs.size()));
|
||||
}
|
||||
return _chaoticSpawnLocs.get(0);
|
||||
}
|
||||
return getSpawnLoc();
|
||||
return _chaoticSpawnLocs != null ? Config.RANDOM_RESPAWN_IN_TOWN_ENABLED ? _chaoticSpawnLocs.get(Rnd.get(_chaoticSpawnLocs.size())) : _chaoticSpawnLocs.get(0) : getSpawnLoc();
|
||||
}
|
||||
|
||||
public final Location getBanishSpawnLoc()
|
||||
{
|
||||
if (_banishSpawnLocs != null)
|
||||
{
|
||||
if (Config.RANDOM_RESPAWN_IN_TOWN_ENABLED)
|
||||
{
|
||||
return _banishSpawnLocs.get(Rnd.get(_banishSpawnLocs.size()));
|
||||
}
|
||||
return _banishSpawnLocs.get(0);
|
||||
}
|
||||
return getSpawnLoc();
|
||||
return _banishSpawnLocs != null ? Config.RANDOM_RESPAWN_IN_TOWN_ENABLED ? _banishSpawnLocs.get(Rnd.get(_banishSpawnLocs.size())) : _banishSpawnLocs.get(0) : getSpawnLoc();
|
||||
}
|
||||
|
||||
public final void addBannedRace(String race, String point)
|
||||
|
||||
@@ -88,24 +88,18 @@ public class L2Mentee
|
||||
|
||||
public int getClassId()
|
||||
{
|
||||
if (isOnline())
|
||||
if (isOnline() && (getPlayerInstance().getClassId().getId() != _classId))
|
||||
{
|
||||
if (getPlayerInstance().getClassId().getId() != _classId)
|
||||
{
|
||||
_classId = getPlayerInstance().getClassId().getId();
|
||||
}
|
||||
_classId = getPlayerInstance().getClassId().getId();
|
||||
}
|
||||
return _classId;
|
||||
}
|
||||
|
||||
public int getLevel()
|
||||
{
|
||||
if (isOnline())
|
||||
if (isOnline() && (getPlayerInstance().getLevel() != _currentLevel))
|
||||
{
|
||||
if (getPlayerInstance().getLevel() != _currentLevel)
|
||||
{
|
||||
_currentLevel = getPlayerInstance().getLevel();
|
||||
}
|
||||
_currentLevel = getPlayerInstance().getLevel();
|
||||
}
|
||||
return _currentLevel;
|
||||
}
|
||||
|
||||
@@ -553,11 +553,7 @@ public abstract class L2Object extends ListenersContainer implements IIdentifiab
|
||||
@SuppressWarnings("unchecked")
|
||||
public final <T> T removeScript(Class<T> script)
|
||||
{
|
||||
if (_scripts == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return (T) _scripts.remove(script.getName());
|
||||
return _scripts == null ? null : (T) _scripts.remove(script.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -568,11 +564,7 @@ public abstract class L2Object extends ListenersContainer implements IIdentifiab
|
||||
@SuppressWarnings("unchecked")
|
||||
public final <T> T getScript(Class<T> script)
|
||||
{
|
||||
if (_scripts == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return (T) _scripts.get(script.getName());
|
||||
return _scripts == null ? null : (T) _scripts.get(script.getName());
|
||||
}
|
||||
|
||||
public void removeStatusListener(L2Character object)
|
||||
@@ -629,15 +621,15 @@ public abstract class L2Object extends ListenersContainer implements IIdentifiab
|
||||
}
|
||||
|
||||
final L2WorldRegion newRegion = L2World.getInstance().getRegion(getLocation());
|
||||
if (newRegion != getWorldRegion())
|
||||
if (newRegion == getWorldRegion())
|
||||
{
|
||||
getWorldRegion().removeVisibleObject(this);
|
||||
|
||||
setWorldRegion(newRegion);
|
||||
|
||||
// Add the L2Oject spawn to _visibleObjects and if necessary to _allplayers of its L2WorldRegion
|
||||
getWorldRegion().addVisibleObject(this);
|
||||
return;
|
||||
}
|
||||
|
||||
getWorldRegion().removeVisibleObject(this);
|
||||
setWorldRegion(newRegion);
|
||||
// Add the L2Oject spawn to _visibleObjects and if necessary to _allplayers of its L2WorldRegion
|
||||
getWorldRegion().addVisibleObject(this);
|
||||
}
|
||||
|
||||
public final L2WorldRegion getWorldRegion()
|
||||
@@ -971,13 +963,9 @@ public abstract class L2Object extends ListenersContainer implements IIdentifiab
|
||||
final DeleteObject deletePacket = new DeleteObject(this);
|
||||
for (L2Object obj : getKnownList().getKnownObjects().values())
|
||||
{
|
||||
if ((obj != null) && obj.isPlayer())
|
||||
if ((obj != null) && obj.isPlayer() && !isVisibleFor(obj.getActingPlayer()))
|
||||
{
|
||||
final L2PcInstance player = obj.getActingPlayer();
|
||||
if (!isVisibleFor(player))
|
||||
{
|
||||
obj.sendPacket(deletePacket);
|
||||
}
|
||||
obj.sendPacket(deletePacket);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,11 +164,7 @@ public class L2Party extends AbstractPlayerGroup
|
||||
availableMembers.add(member);
|
||||
}
|
||||
}
|
||||
if (!availableMembers.isEmpty())
|
||||
{
|
||||
return availableMembers.get(Rnd.get(availableMembers.size()));
|
||||
}
|
||||
return null;
|
||||
return !availableMembers.isEmpty() ? availableMembers.get(Rnd.get(availableMembers.size())) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -475,110 +471,111 @@ public class L2Party extends AbstractPlayerGroup
|
||||
*/
|
||||
public void removePartyMember(L2PcInstance player, messageType type)
|
||||
{
|
||||
if (getMembers().contains(player))
|
||||
if (!getMembers().contains(player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final boolean isLeader = isLeader(player);
|
||||
if (!_disbanding && ((getMembers().size() == 2) || (isLeader && !Config.ALT_LEAVE_PARTY_LEADER && (type != messageType.Disconnected))))
|
||||
{
|
||||
final boolean isLeader = isLeader(player);
|
||||
if (!_disbanding)
|
||||
{
|
||||
if ((getMembers().size() == 2) || (isLeader && !Config.ALT_LEAVE_PARTY_LEADER && (type != messageType.Disconnected)))
|
||||
{
|
||||
disbandParty();
|
||||
return;
|
||||
}
|
||||
disbandParty();
|
||||
return;
|
||||
}
|
||||
|
||||
getMembers().remove(player);
|
||||
recalculatePartyLevel();
|
||||
|
||||
try
|
||||
}
|
||||
|
||||
getMembers().remove(player);
|
||||
recalculatePartyLevel();
|
||||
|
||||
try
|
||||
{
|
||||
// Channeling a player!
|
||||
if (player.isChanneling() && (player.getSkillChannelizer().hasChannelized()))
|
||||
{
|
||||
// Channeling a player!
|
||||
if (player.isChanneling() && (player.getSkillChannelizer().hasChannelized()))
|
||||
{
|
||||
player.abortCast();
|
||||
}
|
||||
else if (player.isChannelized())
|
||||
{
|
||||
player.getSkillChannelized().abortChannelization();
|
||||
}
|
||||
player.abortCast();
|
||||
}
|
||||
catch (Exception e)
|
||||
else if (player.isChannelized())
|
||||
{
|
||||
_log.log(Level.WARNING, "", e);
|
||||
player.getSkillChannelized().abortChannelization();
|
||||
}
|
||||
|
||||
SystemMessage msg;
|
||||
if (type == messageType.Expelled)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_EXPELLED_FROM_THE_PARTY);
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_WAS_EXPELLED_FROM_THE_PARTY);
|
||||
msg.addString(player.getName());
|
||||
broadcastPacket(msg);
|
||||
}
|
||||
else if ((type == messageType.Left) || (type == messageType.Disconnected))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.YOU_HAVE_WITHDRAWN_FROM_THE_PARTY);
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_LEFT_THE_PARTY);
|
||||
msg.addString(player.getName());
|
||||
broadcastPacket(msg);
|
||||
}
|
||||
|
||||
// UI update.
|
||||
player.sendPacket(PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
player.setParty(null);
|
||||
broadcastPacket(new PartySmallWindowDelete(player));
|
||||
final L2Summon pet = player.getPet();
|
||||
if (pet != null)
|
||||
{
|
||||
broadcastPacket(new ExPartyPetWindowDelete(pet));
|
||||
}
|
||||
player.getServitors().values().forEach(s -> player.sendPacket(new ExPartyPetWindowDelete(s)));
|
||||
|
||||
// Close the CCInfoWindow
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_log.log(Level.WARNING, "", e);
|
||||
}
|
||||
|
||||
SystemMessage msg;
|
||||
if (type == messageType.Expelled)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_EXPELLED_FROM_THE_PARTY);
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_WAS_EXPELLED_FROM_THE_PARTY);
|
||||
msg.addString(player.getName());
|
||||
broadcastPacket(msg);
|
||||
}
|
||||
else if ((type == messageType.Left) || (type == messageType.Disconnected))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.YOU_HAVE_WITHDRAWN_FROM_THE_PARTY);
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_LEFT_THE_PARTY);
|
||||
msg.addString(player.getName());
|
||||
broadcastPacket(msg);
|
||||
}
|
||||
|
||||
// UI update.
|
||||
player.sendPacket(PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
player.setParty(null);
|
||||
broadcastPacket(new PartySmallWindowDelete(player));
|
||||
final L2Summon pet = player.getPet();
|
||||
if (pet != null)
|
||||
{
|
||||
broadcastPacket(new ExPartyPetWindowDelete(pet));
|
||||
}
|
||||
player.getServitors().values().forEach(s -> player.sendPacket(new ExPartyPetWindowDelete(s)));
|
||||
|
||||
// Close the CCInfoWindow
|
||||
if (isInCommandChannel())
|
||||
{
|
||||
player.sendPacket(new ExCloseMPCC());
|
||||
}
|
||||
if (isLeader && (getMembers().size() > 1) && (Config.ALT_LEAVE_PARTY_LEADER || (type == messageType.Disconnected)))
|
||||
{
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_BECOME_THE_PARTY_LEADER);
|
||||
msg.addString(getLeader().getName());
|
||||
broadcastPacket(msg);
|
||||
broadcastToPartyMembersNewLeader();
|
||||
}
|
||||
else if (getMembers().size() == 1)
|
||||
{
|
||||
if (isInCommandChannel())
|
||||
{
|
||||
player.sendPacket(new ExCloseMPCC());
|
||||
// delete the whole command channel when the party who opened the channel is disbanded
|
||||
if (getCommandChannel().getLeader().getObjectId() == getLeader().getObjectId())
|
||||
{
|
||||
getCommandChannel().disbandChannel();
|
||||
}
|
||||
else
|
||||
{
|
||||
getCommandChannel().removeParty(this);
|
||||
}
|
||||
}
|
||||
if (isLeader && (getMembers().size() > 1) && (Config.ALT_LEAVE_PARTY_LEADER || (type == messageType.Disconnected)))
|
||||
|
||||
if (getLeader() != null)
|
||||
{
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_BECOME_THE_PARTY_LEADER);
|
||||
msg.addString(getLeader().getName());
|
||||
broadcastPacket(msg);
|
||||
broadcastToPartyMembersNewLeader();
|
||||
getLeader().setParty(null);
|
||||
}
|
||||
else if (getMembers().size() == 1)
|
||||
if (_changeDistributionTypeRequestTask != null)
|
||||
{
|
||||
if (isInCommandChannel())
|
||||
{
|
||||
// delete the whole command channel when the party who opened the channel is disbanded
|
||||
if (getCommandChannel().getLeader().getObjectId() == getLeader().getObjectId())
|
||||
{
|
||||
getCommandChannel().disbandChannel();
|
||||
}
|
||||
else
|
||||
{
|
||||
getCommandChannel().removeParty(this);
|
||||
}
|
||||
}
|
||||
|
||||
if (getLeader() != null)
|
||||
{
|
||||
getLeader().setParty(null);
|
||||
}
|
||||
if (_changeDistributionTypeRequestTask != null)
|
||||
{
|
||||
_changeDistributionTypeRequestTask.cancel(true);
|
||||
_changeDistributionTypeRequestTask = null;
|
||||
}
|
||||
if (_positionBroadcastTask != null)
|
||||
{
|
||||
_positionBroadcastTask.cancel(false);
|
||||
_positionBroadcastTask = null;
|
||||
}
|
||||
_members.clear();
|
||||
_changeDistributionTypeRequestTask.cancel(true);
|
||||
_changeDistributionTypeRequestTask = null;
|
||||
}
|
||||
applyTacticalSigns(player, true);
|
||||
if (_positionBroadcastTask != null)
|
||||
{
|
||||
_positionBroadcastTask.cancel(false);
|
||||
_positionBroadcastTask = null;
|
||||
}
|
||||
_members.clear();
|
||||
}
|
||||
applyTacticalSigns(player, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -587,15 +584,17 @@ public class L2Party extends AbstractPlayerGroup
|
||||
public void disbandParty()
|
||||
{
|
||||
_disbanding = true;
|
||||
if (_members != null)
|
||||
if (_members == null)
|
||||
{
|
||||
broadcastPacket(SystemMessage.getSystemMessage(SystemMessageId.THE_PARTY_HAS_DISPERSED));
|
||||
for (L2PcInstance member : _members)
|
||||
return;
|
||||
}
|
||||
|
||||
broadcastPacket(SystemMessage.getSystemMessage(SystemMessageId.THE_PARTY_HAS_DISPERSED));
|
||||
for (L2PcInstance member : _members)
|
||||
{
|
||||
if (member != null)
|
||||
{
|
||||
if (member != null)
|
||||
{
|
||||
removePartyMember(member, messageType.None);
|
||||
}
|
||||
removePartyMember(member, messageType.None);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -641,8 +640,7 @@ public class L2Party extends AbstractPlayerGroup
|
||||
}
|
||||
if (player.isInPartyMatchRoom())
|
||||
{
|
||||
final PartyMatchRoom room = PartyMatchRoomList.getInstance().getPlayerRoom(player);
|
||||
room.changeLeader(player);
|
||||
PartyMatchRoomList.getInstance().getPlayerRoom(player).changeLeader(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -687,25 +685,26 @@ public class L2Party extends AbstractPlayerGroup
|
||||
final L2PcInstance target = getActualLooter(player, item.getId(), false, player);
|
||||
target.addItem("Party", item, player, true);
|
||||
|
||||
// Send messages to other party members about reward
|
||||
if (item.getCount() > 0)
|
||||
if (item.getCount() <= 0)
|
||||
{
|
||||
if (item.getCount() > 1)
|
||||
{
|
||||
final SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S3_S2);
|
||||
msg.addString(target.getName());
|
||||
msg.addItemName(item);
|
||||
msg.addLong(item.getCount());
|
||||
broadcastToPartyMembers(target, msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
final SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S2);
|
||||
msg.addString(target.getName());
|
||||
msg.addItemName(item);
|
||||
broadcastToPartyMembers(target, msg);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
final SystemMessage msg;
|
||||
if (item.getCount() > 1)
|
||||
{
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S3_S2);
|
||||
msg.addString(target.getName());
|
||||
msg.addItemName(item);
|
||||
msg.addLong(item.getCount());
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S2);
|
||||
msg.addString(target.getName());
|
||||
msg.addItemName(item);
|
||||
}
|
||||
broadcastToPartyMembers(target, msg);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -728,25 +727,26 @@ public class L2Party extends AbstractPlayerGroup
|
||||
|
||||
looter.addItem(spoil ? "Sweeper Party" : "Party", itemId, itemCount, target, true);
|
||||
|
||||
// Send messages to other party members about reward
|
||||
if (itemCount > 0)
|
||||
if (itemCount <= 0)
|
||||
{
|
||||
if (itemCount > 1)
|
||||
{
|
||||
final SystemMessage msg = spoil ? SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S3_S2_S_BY_USING_SWEEPER) : SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S3_S2);
|
||||
msg.addString(looter.getName());
|
||||
msg.addItemName(itemId);
|
||||
msg.addLong(itemCount);
|
||||
broadcastToPartyMembers(looter, msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
final SystemMessage msg = spoil ? SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S2_BY_USING_SWEEPER) : SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S2);
|
||||
msg.addString(looter.getName());
|
||||
msg.addItemName(itemId);
|
||||
broadcastToPartyMembers(looter, msg);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
final SystemMessage msg;
|
||||
if (itemCount > 1)
|
||||
{
|
||||
msg = spoil ? SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S3_S2_S_BY_USING_SWEEPER) : SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S3_S2);
|
||||
msg.addString(looter.getName());
|
||||
msg.addItemName(itemId);
|
||||
msg.addLong(itemCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = spoil ? SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S2_BY_USING_SWEEPER) : SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_OBTAINED_S2);
|
||||
msg.addString(looter.getName());
|
||||
msg.addItemName(itemId);
|
||||
}
|
||||
broadcastToPartyMembers(looter, msg);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -937,8 +937,7 @@ public class L2Party extends AbstractPlayerGroup
|
||||
|
||||
for (L2PcInstance member : members)
|
||||
{
|
||||
final int sqLevel = member.getLevel() * member.getLevel();
|
||||
if ((sqLevel * 100) >= (sqLevelSum * Config.PARTY_XP_CUTOFF_PERCENT))
|
||||
if ((member.getLevel() * member.getLevel() * 100) >= (sqLevelSum * Config.PARTY_XP_CUTOFF_PERCENT))
|
||||
{
|
||||
validMembers.add(member);
|
||||
}
|
||||
@@ -965,8 +964,7 @@ public class L2Party extends AbstractPlayerGroup
|
||||
|
||||
for (L2PcInstance member : members)
|
||||
{
|
||||
final int sqLevel = member.getLevel() * member.getLevel();
|
||||
if (sqLevel >= (sqLevelSum / (members.size() * members.size())))
|
||||
if ((member.getLevel() * member.getLevel()) >= (sqLevelSum / (members.size() * members.size())))
|
||||
{
|
||||
validMembers.add(member);
|
||||
}
|
||||
@@ -1063,12 +1061,7 @@ public class L2Party extends AbstractPlayerGroup
|
||||
|
||||
public synchronized void answerLootChangeRequest(L2PcInstance member, boolean answer)
|
||||
{
|
||||
if (_changeRequestDistributionType == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_changeDistributionTypeAnswers.contains(member.getObjectId()))
|
||||
if ((_changeRequestDistributionType == null) || _changeDistributionTypeAnswers.contains(member.getObjectId()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -207,12 +207,9 @@ public class L2PetData
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if (temp.getMinLevel() <= petLvl)
|
||||
if ((temp.getMinLevel() <= petLvl) && (temp.getSkillLvl() > lvl))
|
||||
{
|
||||
if (temp.getSkillLvl() > lvl)
|
||||
{
|
||||
lvl = temp.getSkillLvl();
|
||||
}
|
||||
lvl = temp.getSkillLvl();
|
||||
}
|
||||
}
|
||||
return lvl;
|
||||
|
||||
@@ -102,8 +102,7 @@ public final class L2Radar
|
||||
result = (prime * result) + _type;
|
||||
result = (prime * result) + _x;
|
||||
result = (prime * result) + _y;
|
||||
result = (prime * result) + _z;
|
||||
return result;
|
||||
return result = (prime * result) + _z;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -118,11 +117,7 @@ public final class L2Radar
|
||||
return false;
|
||||
}
|
||||
final RadarMarker other = (RadarMarker) obj;
|
||||
if ((_type != other._type) || (_x != other._x) || (_y != other._y) || (_z != other._z))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return (_type == other._type) && (_x == other._x) && (_y == other._y) && (_z == other._z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,5 +53,4 @@ public class L2RecipeInstance
|
||||
{
|
||||
return _quantity;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -55,5 +55,4 @@ public class L2RecipeStatInstance
|
||||
{
|
||||
return _value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -121,8 +121,8 @@ public class L2Request
|
||||
|
||||
private void setOnRequestTimer(boolean isRequestor)
|
||||
{
|
||||
_isRequestor = isRequestor ? true : false;
|
||||
_isAnswerer = isRequestor ? false : true;
|
||||
_isRequestor = isRequestor;
|
||||
_isAnswerer = !isRequestor;
|
||||
ThreadPoolManager.getInstance().scheduleGeneral(() -> clear(), REQUEST_TIMEOUT * 1000);
|
||||
}
|
||||
|
||||
|
||||
@@ -146,10 +146,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
return;
|
||||
}
|
||||
|
||||
final String className = "com.l2jmobius.gameserver.model.actor.instance." + _template.getType() + "Instance";
|
||||
|
||||
// Create the generic constructor of L2Npc managed by this L2Spawn
|
||||
_constructor = Class.forName(className).asSubclass(L2Npc.class).getConstructor(L2NpcTemplate.class);
|
||||
_constructor = Class.forName("com.l2jmobius.gameserver.model.actor.instance." + _template.getType() + "Instance").asSubclass(L2Npc.class).getConstructor(L2NpcTemplate.class);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -618,12 +615,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
final int randX = newlocx + Rnd.get(Config.MOB_MIN_SPAWN_RANGE, Config.MOB_MAX_SPAWN_RANGE);
|
||||
final int randY = newlocy + Rnd.get(Config.MOB_MIN_SPAWN_RANGE, Config.MOB_MAX_SPAWN_RANGE);
|
||||
|
||||
boolean isQuestMonster = false;
|
||||
if ((mob.getTitle() != null) && mob.getTitle().contains("Quest"))
|
||||
{
|
||||
isQuestMonster = true;
|
||||
}
|
||||
|
||||
final boolean isQuestMonster = (mob.getTitle() != null) && mob.getTitle().contains("Quest");
|
||||
if (mob.isMonster() && !isQuestMonster && !mob.isWalker() && !mob.isInsideZone(ZoneId.NO_BOOKMARK) && GeoData.getInstance().canSeeTarget(newlocx, newlocy, newlocz, randX, randY, newlocz) && (getInstanceId() == 0) && !getTemplate().isUndying() && !mob.isRaid() && !mob.isRaidMinion() && !Config.MOBS_LIST_NOT_RANDOM.contains(mob.getId()))
|
||||
{
|
||||
newlocx = randX;
|
||||
|
||||
@@ -107,21 +107,7 @@ public class L2Territory
|
||||
}
|
||||
|
||||
final double dx1 = p1._x - x;
|
||||
final double dx2 = p2._x - x;
|
||||
|
||||
if ((dx1 >= 0) && (dx2 >= 0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((dx1 < 0) && (dx2 < 0))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final double dx0 = (dy1 * (p1._x - p2._x)) / (p1._y - p2._y);
|
||||
|
||||
return dx0 <= dx1;
|
||||
return ((dx1 >= 0) && ((p2._x - x) >= 0)) || (((dx1 >= 0) || ((p2._x - x) >= 0)) && (((dy1 * (p1._x - p2._x)) / (p1._y - p2._y)) <= dx1));
|
||||
}
|
||||
|
||||
public boolean isInside(int x, int y)
|
||||
@@ -129,10 +115,7 @@ public class L2Territory
|
||||
int intersect_count = 0;
|
||||
for (int i = 0; i < _points.size(); i++)
|
||||
{
|
||||
final Point p1 = _points.get(i > 0 ? i - 1 : _points.size() - 1);
|
||||
final Point p2 = _points.get(i);
|
||||
|
||||
if (isIntersect(x, y, p1, p2))
|
||||
if (isIntersect(x, y, _points.get(i > 0 ? i - 1 : _points.size() - 1), _points.get(i)))
|
||||
{
|
||||
intersect_count++;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class L2WalkRoute
|
||||
_name = name;
|
||||
_nodeList = route;
|
||||
_repeatType = repeatType;
|
||||
_repeatWalk = ((_repeatType >= 0) && (_repeatType <= 2)) ? repeat : false;
|
||||
_repeatWalk = (_repeatType >= 0) && (_repeatType <= 2) && repeat;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
|
||||
@@ -374,12 +374,7 @@ public final class L2World
|
||||
*/
|
||||
public void removeVisibleObject(L2Object object, L2WorldRegion oldWorldRegion)
|
||||
{
|
||||
if (object == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (oldWorldRegion == null)
|
||||
if ((object == null) || (oldWorldRegion == null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -428,13 +423,9 @@ public final class L2World
|
||||
// Go through visible objects of the selected region
|
||||
for (L2Object _object : regi.getVisibleObjects().values())
|
||||
{
|
||||
if ((_object == null) || _object.equals(object))
|
||||
if ((_object == null) || _object.equals(object) || !_object.isVisible())
|
||||
{
|
||||
continue; // skip our own character
|
||||
}
|
||||
else if (!_object.isVisible())
|
||||
{
|
||||
continue; // skip dying objects
|
||||
continue;
|
||||
}
|
||||
result.add(_object);
|
||||
}
|
||||
@@ -542,22 +533,12 @@ public final class L2World
|
||||
final List<L2Playable> result = new LinkedList<>();
|
||||
for (L2WorldRegion regi : reg.getSurroundingRegions())
|
||||
{
|
||||
// Create an Iterator to go through the visible L2Object of the L2WorldRegion
|
||||
final Map<Integer, L2Playable> _allpls = regi.getVisiblePlayable();
|
||||
final Collection<L2Playable> _playables = _allpls.values();
|
||||
// Go through visible object of the selected region
|
||||
for (L2Playable _object : _playables)
|
||||
for (L2Playable _object : regi.getVisiblePlayable().values())
|
||||
{
|
||||
if ((_object == null) || _object.equals(object))
|
||||
if ((_object == null) || _object.equals(object) || !_object.isVisible())
|
||||
{
|
||||
continue; // skip our own character
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!_object.isVisible())
|
||||
{
|
||||
continue; // skip dying objects
|
||||
}
|
||||
|
||||
result.add(_object);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,32 +132,9 @@ public final class L2WorldRegion
|
||||
|
||||
for (L2ZoneType e : getZones())
|
||||
{
|
||||
if (e instanceof L2PeaceZone)
|
||||
if ((e instanceof L2PeaceZone) && (e.isInsideZone(x, up, z) || e.isInsideZone(x, down, z) || e.isInsideZone(left, y, z) || e.isInsideZone(right, y, z) || e.isInsideZone(x, y, z)))
|
||||
{
|
||||
if (e.isInsideZone(x, up, z))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (e.isInsideZone(x, down, z))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (e.isInsideZone(left, y, z))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (e.isInsideZone(right, y, z))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (e.isInsideZone(x, y, z))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -332,14 +309,7 @@ public final class L2WorldRegion
|
||||
|
||||
// TODO
|
||||
// turn the geodata on or off to match the region's activation.
|
||||
if (value)
|
||||
{
|
||||
_log.fine("Starting Grid " + _tileX + "," + _tileY);
|
||||
}
|
||||
else
|
||||
{
|
||||
_log.fine("Stoping Grid " + _tileX + "," + _tileY);
|
||||
}
|
||||
_log.fine(value ? "Starting Grid " + _tileX + "," + _tileY : "Stoping Grid " + _tileX + "," + _tileY);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -207,12 +207,12 @@ public class Location implements IPositionable
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if ((obj != null) && (obj instanceof Location))
|
||||
if ((obj == null) || !(obj instanceof Location))
|
||||
{
|
||||
final Location loc = (Location) obj;
|
||||
return (getX() == loc.getX()) && (getY() == loc.getY()) && (getZ() == loc.getZ()) && (getHeading() == loc.getHeading()) && (getInstanceId() == loc.getInstanceId());
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
final Location loc = (Location) obj;
|
||||
return (getX() == loc.getX()) && (getY() == loc.getY()) && (getZ() == loc.getZ()) && (getHeading() == loc.getHeading()) && (getInstanceId() == loc.getInstanceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -68,7 +68,6 @@ public class MacroList implements IRestorable
|
||||
macro.setId(_macroId++);
|
||||
}
|
||||
_macroses.put(macro.getId(), macro);
|
||||
registerMacroInDb(macro);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -78,8 +77,8 @@ public class MacroList implements IRestorable
|
||||
{
|
||||
deleteMacroFromDb(old);
|
||||
}
|
||||
registerMacroInDb(macro);
|
||||
}
|
||||
registerMacroInDb(macro);
|
||||
_owner.sendPacket(new SendMacroList(1, macro, updateType));
|
||||
}
|
||||
|
||||
@@ -200,15 +199,7 @@ public class MacroList implements IRestorable
|
||||
{
|
||||
continue;
|
||||
}
|
||||
final MacroType type = MacroType.values()[Integer.parseInt(st.nextToken())];
|
||||
final int d1 = Integer.parseInt(st.nextToken());
|
||||
final int d2 = Integer.parseInt(st.nextToken());
|
||||
String cmd = "";
|
||||
if (st.hasMoreTokens())
|
||||
{
|
||||
cmd = st.nextToken();
|
||||
}
|
||||
commands.add(new MacroCmd(commands.size(), type, d1, d2, cmd));
|
||||
commands.add(new MacroCmd(commands.size(), MacroType.values()[Integer.parseInt(st.nextToken())], Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), (st.hasMoreTokens() ? st.nextToken() : "")));
|
||||
}
|
||||
_macroses.put(id, new Macro(id, icon, name, descr, acronym, commands));
|
||||
}
|
||||
|
||||
@@ -76,9 +76,7 @@ public final class MobGroup
|
||||
{
|
||||
try
|
||||
{
|
||||
final L2ControllableMobAI mobGroupAI = (L2ControllableMobAI) getMobs().get(0).getAI();
|
||||
|
||||
switch (mobGroupAI.getAlternateAI())
|
||||
switch (((L2ControllableMobAI) getMobs().get(0).getAI()).getAlternateAI())
|
||||
{
|
||||
case L2ControllableMobAI.AI_NORMAL:
|
||||
{
|
||||
@@ -192,8 +190,7 @@ public final class MobGroup
|
||||
final int y = player.getY() + Rnd.nextInt(50);
|
||||
|
||||
mobInst.teleToLocation(new Location(x, y, player.getZ()), true);
|
||||
final L2ControllableMobAI ai = (L2ControllableMobAI) mobInst.getAI();
|
||||
ai.follow(player);
|
||||
((L2ControllableMobAI) mobInst.getAI()).follow(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -201,14 +198,7 @@ public final class MobGroup
|
||||
public L2ControllableMobInstance getRandomMob()
|
||||
{
|
||||
removeDead();
|
||||
|
||||
if (getActiveMobCount() == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
final int choice = Rnd.nextInt(getActiveMobCount());
|
||||
return getMobs().get(choice);
|
||||
return getActiveMobCount() == 0 ? null : getMobs().get(Rnd.nextInt(getActiveMobCount()));
|
||||
}
|
||||
|
||||
public void unspawnGroup()
|
||||
@@ -288,8 +278,7 @@ public final class MobGroup
|
||||
continue;
|
||||
}
|
||||
|
||||
final L2ControllableMobAI ai = (L2ControllableMobAI) mobInst.getAI();
|
||||
ai.forceAttack(target);
|
||||
((L2ControllableMobAI) mobInst.getAI()).forceAttack(target);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -304,8 +293,7 @@ public final class MobGroup
|
||||
continue;
|
||||
}
|
||||
|
||||
final L2ControllableMobAI ai = (L2ControllableMobAI) mobInst.getAI();
|
||||
ai.stop();
|
||||
((L2ControllableMobAI) mobInst.getAI()).stop();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -320,13 +308,7 @@ public final class MobGroup
|
||||
continue;
|
||||
}
|
||||
|
||||
final int signX = (Rnd.nextInt(2) == 0) ? -1 : 1;
|
||||
final int signY = (Rnd.nextInt(2) == 0) ? -1 : 1;
|
||||
final int randX = Rnd.nextInt(MobGroupTable.RANDOM_RANGE);
|
||||
final int randY = Rnd.nextInt(MobGroupTable.RANDOM_RANGE);
|
||||
|
||||
final L2ControllableMobAI ai = (L2ControllableMobAI) mobInst.getAI();
|
||||
ai.move(activeChar.getX() + (signX * randX), activeChar.getY() + (signY * randY), activeChar.getZ());
|
||||
((L2ControllableMobAI) mobInst.getAI()).move(activeChar.getX() + (((Rnd.nextInt(2) == 0) ? -1 : 1) * Rnd.nextInt(MobGroupTable.RANDOM_RANGE)), activeChar.getY() + (((Rnd.nextInt(2) == 0) ? -1 : 1) * Rnd.nextInt(MobGroupTable.RANDOM_RANGE)), activeChar.getZ());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -341,8 +323,7 @@ public final class MobGroup
|
||||
continue;
|
||||
}
|
||||
|
||||
final L2ControllableMobAI ai = (L2ControllableMobAI) mobInst.getAI();
|
||||
ai.follow(character);
|
||||
((L2ControllableMobAI) mobInst.getAI()).follow(character);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,8 +338,7 @@ public final class MobGroup
|
||||
continue;
|
||||
}
|
||||
|
||||
final L2ControllableMobAI ai = (L2ControllableMobAI) mobInst.getAI();
|
||||
ai.setAlternateAI(L2ControllableMobAI.AI_CAST);
|
||||
((L2ControllableMobAI) mobInst.getAI()).setAlternateAI(L2ControllableMobAI.AI_CAST);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -373,8 +353,7 @@ public final class MobGroup
|
||||
continue;
|
||||
}
|
||||
|
||||
final L2ControllableMobAI ai = (L2ControllableMobAI) mobInst.getAI();
|
||||
ai.setNotMoving(enabled);
|
||||
((L2ControllableMobAI) mobInst.getAI()).setNotMoving(enabled);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -55,13 +55,10 @@ public class ShortCuts implements IRestorable
|
||||
{
|
||||
Shortcut sc = _shortCuts.get(slot + (page * MAX_SHORTCUTS_PER_BAR));
|
||||
// Verify shortcut
|
||||
if ((sc != null) && (sc.getType() == ShortcutType.ITEM))
|
||||
if ((sc != null) && (sc.getType() == ShortcutType.ITEM) && (_owner.getInventory().getItemByObjectId(sc.getId()) == null))
|
||||
{
|
||||
if (_owner.getInventory().getItemByObjectId(sc.getId()) == null)
|
||||
{
|
||||
deleteShortCut(sc.getSlot(), sc.getPage());
|
||||
sc = null;
|
||||
}
|
||||
deleteShortCut(sc.getSlot(), sc.getPage());
|
||||
sc = null;
|
||||
}
|
||||
return sc;
|
||||
}
|
||||
@@ -78,8 +75,7 @@ public class ShortCuts implements IRestorable
|
||||
}
|
||||
shortcut.setSharedReuseGroup(item.getSharedReuseGroup());
|
||||
}
|
||||
final Shortcut oldShortCut = _shortCuts.put(shortcut.getSlot() + (shortcut.getPage() * MAX_SHORTCUTS_PER_BAR), shortcut);
|
||||
registerShortCutInDb(shortcut, oldShortCut);
|
||||
registerShortCutInDb(shortcut, _shortCuts.put(shortcut.getSlot() + (shortcut.getPage() * MAX_SHORTCUTS_PER_BAR), shortcut));
|
||||
}
|
||||
|
||||
private void registerShortCutInDb(Shortcut shortcut, Shortcut oldShortCut)
|
||||
@@ -123,33 +119,30 @@ public class ShortCuts implements IRestorable
|
||||
{
|
||||
final L2ItemInstance item = _owner.getInventory().getItemByObjectId(old.getId());
|
||||
|
||||
if ((item != null) && (item.getItemType() == EtcItemType.SHOT))
|
||||
if ((item != null) && (item.getItemType() == EtcItemType.SHOT) && _owner.removeAutoSoulShot(item.getId()))
|
||||
{
|
||||
if (_owner.removeAutoSoulShot(item.getId()))
|
||||
switch (item.getEtcItem().getDefaultAction())
|
||||
{
|
||||
switch (item.getEtcItem().getDefaultAction())
|
||||
case SOULSHOT:
|
||||
case FISHINGSHOT:
|
||||
{
|
||||
case SOULSHOT:
|
||||
case FISHINGSHOT:
|
||||
{
|
||||
_owner.sendPacket(new ExAutoSoulShot(item.getId(), 0, 0));
|
||||
break;
|
||||
}
|
||||
case SPIRITSHOT:
|
||||
{
|
||||
_owner.sendPacket(new ExAutoSoulShot(item.getId(), 0, 1));
|
||||
break;
|
||||
}
|
||||
case SUMMON_SOULSHOT:
|
||||
{
|
||||
_owner.sendPacket(new ExAutoSoulShot(item.getId(), 0, 2));
|
||||
break;
|
||||
}
|
||||
case SUMMON_SPIRITSHOT:
|
||||
{
|
||||
_owner.sendPacket(new ExAutoSoulShot(item.getId(), 0, 3));
|
||||
break;
|
||||
}
|
||||
_owner.sendPacket(new ExAutoSoulShot(item.getId(), 0, 0));
|
||||
break;
|
||||
}
|
||||
case SPIRITSHOT:
|
||||
{
|
||||
_owner.sendPacket(new ExAutoSoulShot(item.getId(), 0, 1));
|
||||
break;
|
||||
}
|
||||
case SUMMON_SOULSHOT:
|
||||
{
|
||||
_owner.sendPacket(new ExAutoSoulShot(item.getId(), 0, 2));
|
||||
break;
|
||||
}
|
||||
case SUMMON_SPIRITSHOT:
|
||||
{
|
||||
_owner.sendPacket(new ExAutoSoulShot(item.getId(), 0, 3));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -240,11 +233,7 @@ public class ShortCuts implements IRestorable
|
||||
{
|
||||
final int slot = rset.getInt("slot");
|
||||
final int page = rset.getInt("page");
|
||||
final int type = rset.getInt("type");
|
||||
final int id = rset.getInt("shortcut_id");
|
||||
final int level = rset.getInt("level");
|
||||
|
||||
_shortCuts.put(slot + (page * MAX_SHORTCUTS_PER_BAR), new Shortcut(slot, page, ShortcutType.values()[type], id, level, 1));
|
||||
_shortCuts.put(slot + (page * MAX_SHORTCUTS_PER_BAR), new Shortcut(slot, page, ShortcutType.values()[rset.getInt("type")], rset.getInt("shortcut_id"), rset.getInt("level"), 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -501,11 +501,7 @@ public class StatsSet implements IParserAdvUtils
|
||||
public String getString(String key, String defaultValue)
|
||||
{
|
||||
final Object val = _set.get(key);
|
||||
if (val == null)
|
||||
{
|
||||
return defaultValue;
|
||||
}
|
||||
return String.valueOf(val);
|
||||
return val == null ? defaultValue : String.valueOf(val);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -523,11 +519,7 @@ public class StatsSet implements IParserAdvUtils
|
||||
public Duration getDuration(String key, Duration defaultValue)
|
||||
{
|
||||
final Object val = _set.get(key);
|
||||
if (val == null)
|
||||
{
|
||||
return defaultValue;
|
||||
}
|
||||
return TimeUtil.parseDuration(String.valueOf(val));
|
||||
return val == null ? defaultValue : TimeUtil.parseDuration(String.valueOf(val));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -580,35 +572,20 @@ public class StatsSet implements IParserAdvUtils
|
||||
public final <A> A getObject(String name, Class<A> type)
|
||||
{
|
||||
final Object obj = _set.get(name);
|
||||
if ((obj == null) || !type.isAssignableFrom(obj.getClass()))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return (A) obj;
|
||||
return (obj == null) || !type.isAssignableFrom(obj.getClass()) ? null : (A) obj;
|
||||
}
|
||||
|
||||
public SkillHolder getSkillHolder(String key)
|
||||
{
|
||||
final Object obj = _set.get(key);
|
||||
if ((obj == null) || !(obj instanceof SkillHolder))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return (SkillHolder) obj;
|
||||
return (obj == null) || !(obj instanceof SkillHolder) ? null : (SkillHolder) obj;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<MinionHolder> getMinionList(String key)
|
||||
{
|
||||
final Object obj = _set.get(key);
|
||||
if ((obj == null) || !(obj instanceof List<?>))
|
||||
{
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return (List<MinionHolder>) obj;
|
||||
return (obj == null) || !(obj instanceof List<?>) ? Collections.emptyList() : (List<MinionHolder>) obj;
|
||||
}
|
||||
|
||||
public void set(String name, Object value)
|
||||
|
||||
@@ -156,11 +156,7 @@ public class TradeList
|
||||
{
|
||||
if (exclItem.getItem().getId() == item.getId())
|
||||
{
|
||||
if (item.getCount() <= exclItem.getCount())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new TradeItem(item, item.getCount() - exclItem.getCount(), item.getReferencePrice());
|
||||
return item.getCount() <= exclItem.getCount() ? null : new TradeItem(item, item.getCount() - exclItem.getCount(), item.getReferencePrice());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -446,11 +442,7 @@ public class TradeList
|
||||
{
|
||||
partnerList.lock();
|
||||
lock();
|
||||
if (!partnerList.validate())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!validate())
|
||||
if (!partnerList.validate() || !validate())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -642,24 +634,8 @@ public class TradeList
|
||||
partnerList.TransferItems(getOwner(), partnerIU, ownerIU);
|
||||
TransferItems(partnerList.getOwner(), ownerIU, partnerIU);
|
||||
|
||||
// Send inventory update packet
|
||||
if (ownerIU != null)
|
||||
{
|
||||
_owner.sendPacket(ownerIU);
|
||||
}
|
||||
else
|
||||
{
|
||||
_owner.sendPacket(new ItemList(_owner, false));
|
||||
}
|
||||
|
||||
if (partnerIU != null)
|
||||
{
|
||||
_partner.sendPacket(partnerIU);
|
||||
}
|
||||
else
|
||||
{
|
||||
_partner.sendPacket(new ItemList(_partner, false));
|
||||
}
|
||||
_owner.sendPacket(ownerIU != null ? ownerIU : new ItemList(_owner, false));
|
||||
_partner.sendPacket(partnerIU != null ? partnerIU : new ItemList(_partner, false));
|
||||
|
||||
// Update current load as well
|
||||
_owner.sendPacket(new ExUserInfoInvenWeight(_owner));
|
||||
@@ -859,42 +835,36 @@ public class TradeList
|
||||
}
|
||||
|
||||
// Send messages about the transaction to both players
|
||||
SystemMessage msg;
|
||||
if (newItem.isStackable())
|
||||
{
|
||||
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.C1_PURCHASED_S3_S2_S);
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_PURCHASED_S3_S2_S);
|
||||
msg.addString(player.getName());
|
||||
msg.addItemName(newItem);
|
||||
msg.addLong(item.getCount());
|
||||
_owner.sendPacket(msg);
|
||||
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_PURCHASED_S3_S2_S_FROM_C1);
|
||||
msg.addString(_owner.getName());
|
||||
msg.addItemName(newItem);
|
||||
msg.addLong(item.getCount());
|
||||
player.sendPacket(msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.C1_PURCHASED_S2);
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_PURCHASED_S2);
|
||||
msg.addString(player.getName());
|
||||
msg.addItemName(newItem);
|
||||
_owner.sendPacket(msg);
|
||||
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_PURCHASED_S2_FROM_C1);
|
||||
msg.addString(_owner.getName());
|
||||
msg.addItemName(newItem);
|
||||
player.sendPacket(msg);
|
||||
}
|
||||
player.sendPacket(msg);
|
||||
}
|
||||
|
||||
// Send inventory update packet
|
||||
_owner.sendPacket(ownerIU);
|
||||
player.sendPacket(playerIU);
|
||||
if (ok)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return 2;
|
||||
return ok ? 0 : 2;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -905,12 +875,7 @@ public class TradeList
|
||||
*/
|
||||
public synchronized boolean privateStoreSell(L2PcInstance player, ItemRequest[] items)
|
||||
{
|
||||
if (_locked)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!_owner.isOnline() || !player.isOnline())
|
||||
if (_locked || !_owner.isOnline() || !player.isOnline())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -1037,32 +1002,30 @@ public class TradeList
|
||||
}
|
||||
|
||||
// Send messages about the transaction to both players
|
||||
SystemMessage msg;
|
||||
if (newItem.isStackable())
|
||||
{
|
||||
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_PURCHASED_S3_S2_S_FROM_C1);
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_PURCHASED_S3_S2_S_FROM_C1);
|
||||
msg.addString(player.getName());
|
||||
msg.addItemName(newItem);
|
||||
msg.addLong(item.getCount());
|
||||
_owner.sendPacket(msg);
|
||||
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_PURCHASED_S3_S2_S);
|
||||
msg.addString(_owner.getName());
|
||||
msg.addItemName(newItem);
|
||||
msg.addLong(item.getCount());
|
||||
player.sendPacket(msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_PURCHASED_S2_FROM_C1);
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_PURCHASED_S2_FROM_C1);
|
||||
msg.addString(player.getName());
|
||||
msg.addItemName(newItem);
|
||||
_owner.sendPacket(msg);
|
||||
|
||||
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_PURCHASED_S2);
|
||||
msg.addString(_owner.getName());
|
||||
msg.addItemName(newItem);
|
||||
player.sendPacket(msg);
|
||||
}
|
||||
player.sendPacket(msg);
|
||||
}
|
||||
|
||||
if (totalPrice > 0)
|
||||
|
||||
@@ -187,12 +187,7 @@ public class UIKeysSettings
|
||||
while (rs.next())
|
||||
{
|
||||
final int cat = rs.getInt("cat");
|
||||
final int cmd = rs.getInt("cmd");
|
||||
final int key = rs.getInt("key");
|
||||
final int tgKey1 = rs.getInt("tgKey1");
|
||||
final int tgKey2 = rs.getInt("tgKey2");
|
||||
final int show = rs.getInt("show");
|
||||
UIData.addKey(_storedKeys, cat, new ActionKey(cat, cmd, key, tgKey1, tgKey2, show));
|
||||
UIData.addKey(_storedKeys, cat, new ActionKey(cat, rs.getInt("cmd"), rs.getInt("key"), rs.getInt("tgKey1"), rs.getInt("tgKey2"), rs.getInt("show")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,12 +202,7 @@ public class L2Attackable extends L2Npc
|
||||
*/
|
||||
public void useMagic(Skill skill)
|
||||
{
|
||||
if ((skill == null) || isAlikeDead() || skill.isPassive() || isCastingNow() || isSkillDisabled(skill))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((getCurrentMp() < (getStat().getMpConsume(skill) + getStat().getMpInitialConsume(skill))) || (getCurrentHp() <= skill.getHpConsume()))
|
||||
if ((skill == null) || isAlikeDead() || skill.isPassive() || isCastingNow() || isSkillDisabled(skill) || (getCurrentMp() < (getStat().getMpConsume(skill) + getStat().getMpInitialConsume(skill))) || (getCurrentHp() <= skill.getHpConsume()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -351,8 +346,7 @@ public class L2Attackable extends L2Npc
|
||||
final int hpRestore = (int) killer.getStat().calcStat(Stats.HP_RESTORE_ON_KILL, 0, null, null);
|
||||
if (hpRestore > 0)
|
||||
{
|
||||
double amount = (killer.getMaxHp() * hpRestore) / 100;
|
||||
amount = Math.max(Math.min(amount, killer.getMaxRecoverableHp() - killer.getCurrentHp()), 0);
|
||||
final double amount = Math.max(Math.min(((killer.getMaxHp() * hpRestore) / 100), killer.getMaxRecoverableHp() - killer.getCurrentHp()), 0);
|
||||
if (amount != 0)
|
||||
{
|
||||
killer.setCurrentHp(amount + killer.getCurrentHp());
|
||||
@@ -366,8 +360,7 @@ public class L2Attackable extends L2Npc
|
||||
final L2MonsterInstance mob = (L2MonsterInstance) this;
|
||||
if ((mob.getLeader() != null) && mob.getLeader().hasMinions())
|
||||
{
|
||||
final int respawnTime = Config.MINIONS_RESPAWN_TIME.containsKey(getId()) ? Config.MINIONS_RESPAWN_TIME.get(getId()) * 1000 : -1;
|
||||
mob.getLeader().getMinionList().onMinionDie(mob, respawnTime);
|
||||
mob.getLeader().getMinionList().onMinionDie(mob, (Config.MINIONS_RESPAWN_TIME.containsKey(getId()) ? Config.MINIONS_RESPAWN_TIME.get(getId()) * 1000 : -1));
|
||||
}
|
||||
|
||||
if (mob.hasMinions())
|
||||
@@ -571,14 +564,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
if (partyPlayer.getLevel() > partyLvl)
|
||||
{
|
||||
if (attackerParty.isInCommandChannel())
|
||||
{
|
||||
partyLvl = attackerParty.getCommandChannel().getLevel();
|
||||
}
|
||||
else
|
||||
{
|
||||
partyLvl = partyPlayer.getLevel();
|
||||
}
|
||||
partyLvl = attackerParty.isInCommandChannel() ? attackerParty.getCommandChannel().getLevel() : partyPlayer.getLevel();
|
||||
}
|
||||
}
|
||||
rewards.remove(partyPlayer); // Remove the L2PcInstance from the L2Attackable rewards
|
||||
@@ -592,14 +578,7 @@ public class L2Attackable extends L2Npc
|
||||
rewardedMembers.add(partyPlayer);
|
||||
if (partyPlayer.getLevel() > partyLvl)
|
||||
{
|
||||
if (attackerParty.isInCommandChannel())
|
||||
{
|
||||
partyLvl = attackerParty.getCommandChannel().getLevel();
|
||||
}
|
||||
else
|
||||
{
|
||||
partyLvl = partyPlayer.getLevel();
|
||||
}
|
||||
partyLvl = attackerParty.isInCommandChannel() ? attackerParty.getCommandChannel().getLevel() : partyPlayer.getLevel();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1037,32 +1016,34 @@ public class L2Attackable extends L2Npc
|
||||
}
|
||||
|
||||
// Apply Special Item drop with random(rnd) quantity(qty) for champions.
|
||||
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion() && ((Config.L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE > 0) || (Config.L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE > 0)))
|
||||
if (!Config.L2JMOD_CHAMPION_ENABLE || !isChampion() || ((Config.L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE <= 0) && (Config.L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE <= 0)))
|
||||
{
|
||||
int champqty = Rnd.get(Config.L2JMOD_CHAMPION_REWARD_QTY);
|
||||
final ItemHolder item = new ItemHolder(Config.L2JMOD_CHAMPION_REWARD_ID, ++champqty);
|
||||
|
||||
if ((player.getLevel() <= getLevel()) && (Rnd.get(100) < Config.L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE))
|
||||
return;
|
||||
}
|
||||
|
||||
int champqty = Rnd.get(Config.L2JMOD_CHAMPION_REWARD_QTY);
|
||||
final ItemHolder item = new ItemHolder(Config.L2JMOD_CHAMPION_REWARD_ID, ++champqty);
|
||||
|
||||
if ((player.getLevel() <= getLevel()) && (Rnd.get(100) < Config.L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE))
|
||||
{
|
||||
if (Config.AUTO_LOOT || isFlying())
|
||||
{
|
||||
if (Config.AUTO_LOOT || isFlying())
|
||||
{
|
||||
player.addItem("ChampionLoot", item.getId(), item.getCount(), this, true); // Give the item(s) to the L2PcInstance that has killed the L2Attackable
|
||||
}
|
||||
else
|
||||
{
|
||||
dropItem(player, item);
|
||||
}
|
||||
player.addItem("ChampionLoot", item.getId(), item.getCount(), this, true); // Give the item(s) to the L2PcInstance that has killed the L2Attackable
|
||||
}
|
||||
else if ((player.getLevel() > getLevel()) && (Rnd.get(100) < Config.L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE))
|
||||
else
|
||||
{
|
||||
if (Config.AUTO_LOOT || isFlying())
|
||||
{
|
||||
player.addItem("ChampionLoot", item.getId(), item.getCount(), this, true); // Give the item(s) to the L2PcInstance that has killed the L2Attackable
|
||||
}
|
||||
else
|
||||
{
|
||||
dropItem(player, item);
|
||||
}
|
||||
dropItem(player, item);
|
||||
}
|
||||
}
|
||||
else if ((player.getLevel() > getLevel()) && (Rnd.get(100) < Config.L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE))
|
||||
{
|
||||
if (Config.AUTO_LOOT || isFlying())
|
||||
{
|
||||
player.addItem("ChampionLoot", item.getId(), item.getCount(), this, true); // Give the item(s) to the L2PcInstance that has killed the L2Attackable
|
||||
}
|
||||
else
|
||||
{
|
||||
dropItem(player, item);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1091,12 +1072,7 @@ public class L2Attackable extends L2Npc
|
||||
final L2PcInstance player = lastAttacker.getActingPlayer();
|
||||
|
||||
// Don't drop anything if the last attacker or owner isn't L2PcInstance
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((player.getLevel() - getLevel()) > 9)
|
||||
if ((player == null) || ((player.getLevel() - getLevel()) > 9))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -1202,15 +1178,15 @@ public class L2Attackable extends L2Npc
|
||||
*/
|
||||
public boolean isOldCorpse(L2PcInstance attacker, int remainingTime, boolean sendMessage)
|
||||
{
|
||||
if (isDead() && (DecayTaskManager.getInstance().getRemainingTime(this) < remainingTime))
|
||||
if (!isDead() || (DecayTaskManager.getInstance().getRemainingTime(this) >= remainingTime))
|
||||
{
|
||||
if (sendMessage && (attacker != null))
|
||||
{
|
||||
attacker.sendPacket(SystemMessageId.THE_CORPSE_IS_TOO_OLD_THE_SKILL_CANNOT_BE_USED);
|
||||
}
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
if (sendMessage && (attacker != null))
|
||||
{
|
||||
attacker.sendPacket(SystemMessageId.THE_CORPSE_IS_TOO_OLD_THE_SKILL_CANNOT_BE_USED);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1220,15 +1196,15 @@ public class L2Attackable extends L2Npc
|
||||
*/
|
||||
public boolean checkSpoilOwner(L2PcInstance sweeper, boolean sendMessage)
|
||||
{
|
||||
if ((sweeper.getObjectId() != getSpoilerObjectId()) && !sweeper.isInLooterParty(getSpoilerObjectId()))
|
||||
if ((sweeper.getObjectId() == getSpoilerObjectId()) || sweeper.isInLooterParty(getSpoilerObjectId()))
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
sweeper.sendPacket(SystemMessageId.THERE_ARE_NO_PRIORITY_RIGHTS_ON_A_SWEEPER);
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
if (sendMessage)
|
||||
{
|
||||
sweeper.sendPacket(SystemMessageId.THERE_ARE_NO_PRIORITY_RIGHTS_ON_A_SWEEPER);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1407,13 +1383,7 @@ public class L2Attackable extends L2Npc
|
||||
overhitPercentage = 25;
|
||||
}
|
||||
|
||||
// Get the overhit exp bonus according to the above over-hit damage percentage
|
||||
// (1/1 basis - 13% of over-hit damage, 13% of extra exp is given, and so on...)
|
||||
final double overhitExp = ((overhitPercentage / 100) * normalExp);
|
||||
|
||||
// Return the rounded ammount of exp points to be added to the player's normal exp reward
|
||||
final long bonusOverhit = Math.round(overhitExp);
|
||||
return bonusOverhit;
|
||||
return Math.round(((overhitPercentage / 100) * normalExp));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1448,12 +1418,9 @@ public class L2Attackable extends L2Npc
|
||||
setWalking();
|
||||
|
||||
// check the region where this mob is, do not activate the AI if region is inactive.
|
||||
if (!isInActiveRegion())
|
||||
if (!isInActiveRegion() && hasAI())
|
||||
{
|
||||
if (hasAI())
|
||||
{
|
||||
getAI().stopAITask();
|
||||
}
|
||||
getAI().stopAITask();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1490,66 +1457,67 @@ public class L2Attackable extends L2Npc
|
||||
*/
|
||||
public final void setSeeded(L2PcInstance seeder)
|
||||
{
|
||||
if ((_seed != null) && (_seederObjId == seeder.getObjectId()))
|
||||
if ((_seed == null) || (_seederObjId != seeder.getObjectId()))
|
||||
{
|
||||
_seeded = true;
|
||||
|
||||
int count = 1;
|
||||
for (int skillId : getTemplate().getSkills().keySet())
|
||||
return;
|
||||
}
|
||||
|
||||
_seeded = true;
|
||||
int count = 1;
|
||||
for (int skillId : getTemplate().getSkills().keySet())
|
||||
{
|
||||
switch (skillId)
|
||||
{
|
||||
switch (skillId)
|
||||
case 4303: // Strong type x2
|
||||
{
|
||||
case 4303: // Strong type x2
|
||||
{
|
||||
count *= 2;
|
||||
break;
|
||||
}
|
||||
case 4304: // Strong type x3
|
||||
{
|
||||
count *= 3;
|
||||
break;
|
||||
}
|
||||
case 4305: // Strong type x4
|
||||
{
|
||||
count *= 4;
|
||||
break;
|
||||
}
|
||||
case 4306: // Strong type x5
|
||||
{
|
||||
count *= 5;
|
||||
break;
|
||||
}
|
||||
case 4307: // Strong type x6
|
||||
{
|
||||
count *= 6;
|
||||
break;
|
||||
}
|
||||
case 4308: // Strong type x7
|
||||
{
|
||||
count *= 7;
|
||||
break;
|
||||
}
|
||||
case 4309: // Strong type x8
|
||||
{
|
||||
count *= 8;
|
||||
break;
|
||||
}
|
||||
case 4310: // Strong type x9
|
||||
{
|
||||
count *= 9;
|
||||
break;
|
||||
}
|
||||
count *= 2;
|
||||
break;
|
||||
}
|
||||
case 4304: // Strong type x3
|
||||
{
|
||||
count *= 3;
|
||||
break;
|
||||
}
|
||||
case 4305: // Strong type x4
|
||||
{
|
||||
count *= 4;
|
||||
break;
|
||||
}
|
||||
case 4306: // Strong type x5
|
||||
{
|
||||
count *= 5;
|
||||
break;
|
||||
}
|
||||
case 4307: // Strong type x6
|
||||
{
|
||||
count *= 6;
|
||||
break;
|
||||
}
|
||||
case 4308: // Strong type x7
|
||||
{
|
||||
count *= 7;
|
||||
break;
|
||||
}
|
||||
case 4309: // Strong type x8
|
||||
{
|
||||
count *= 8;
|
||||
break;
|
||||
}
|
||||
case 4310: // Strong type x9
|
||||
{
|
||||
count *= 9;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// hi-lvl mobs bonus
|
||||
final int diff = getLevel() - _seed.getLevel() - 5;
|
||||
if (diff > 0)
|
||||
{
|
||||
count += diff;
|
||||
}
|
||||
_harvestItem.set(new ItemHolder(_seed.getCropId(), count * Config.RATE_DROP_MANOR));
|
||||
}
|
||||
|
||||
// hi-lvl mobs bonus
|
||||
final int diff = getLevel() - _seed.getLevel() - 5;
|
||||
if (diff > 0)
|
||||
{
|
||||
count += diff;
|
||||
}
|
||||
_harvestItem.set(new ItemHolder(_seed.getCropId(), count * Config.RATE_DROP_MANOR));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1559,11 +1527,12 @@ public class L2Attackable extends L2Npc
|
||||
*/
|
||||
public final void setSeeded(L2Seed seed, L2PcInstance seeder)
|
||||
{
|
||||
if (!_seeded)
|
||||
if (_seeded)
|
||||
{
|
||||
_seed = seed;
|
||||
_seederObjId = seeder.getObjectId();
|
||||
return;
|
||||
}
|
||||
_seed = seed;
|
||||
_seederObjId = seeder.getObjectId();
|
||||
}
|
||||
|
||||
public final int getSeederId()
|
||||
@@ -1655,13 +1624,9 @@ public class L2Attackable extends L2Npc
|
||||
}
|
||||
|
||||
final float divider = (getLevel() > 0) && (getExpReward() > 0) ? (getTemplate().getBaseHpMax() * 9 * getLevel() * getLevel()) / (100 * getExpReward()) : 0;
|
||||
if (divider == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// negative value - vitality will be consumed
|
||||
return (int) (-Math.min(damage, getMaxHp()) / divider);
|
||||
return divider == 0 ? 0 : (int) (-Math.min(damage, getMaxHp()) / divider);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1669,12 +1634,7 @@ public class L2Attackable extends L2Npc
|
||||
*/
|
||||
public boolean useVitalityRate()
|
||||
{
|
||||
if (isChampion() && !Config.L2JMOD_CHAMPION_ENABLE_VITALITY)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
return (!isChampion() || Config.L2JMOD_CHAMPION_ENABLE_VITALITY);
|
||||
}
|
||||
|
||||
/** Return True if the L2Character is RaidBoss or his minion. */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -16,8 +16,6 @@
|
||||
*/
|
||||
package com.l2jmobius.gameserver.model.actor;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.InstanceType;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.templates.L2CharTemplate;
|
||||
@@ -57,9 +55,7 @@ public abstract class L2Decoy extends L2Character
|
||||
@Override
|
||||
public void updateAbnormalVisualEffects()
|
||||
{
|
||||
final Collection<L2PcInstance> plrs = getKnownList().getKnownPlayers().values();
|
||||
|
||||
for (L2PcInstance player : plrs)
|
||||
for (L2PcInstance player : getKnownList().getKnownPlayers().values())
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
@@ -130,16 +126,17 @@ public abstract class L2Decoy extends L2Character
|
||||
|
||||
public synchronized void unSummon(L2PcInstance owner)
|
||||
{
|
||||
if (isVisible() && !isDead())
|
||||
if (!isVisible() || isDead())
|
||||
{
|
||||
if (getWorldRegion() != null)
|
||||
{
|
||||
getWorldRegion().removeFromZones(this);
|
||||
}
|
||||
owner.setDecoy(null);
|
||||
decayMe();
|
||||
getKnownList().removeAllKnownObjects();
|
||||
return;
|
||||
}
|
||||
if (getWorldRegion() != null)
|
||||
{
|
||||
getWorldRegion().removeFromZones(this);
|
||||
}
|
||||
owner.setDecoy(null);
|
||||
decayMe();
|
||||
getKnownList().removeAllKnownObjects();
|
||||
}
|
||||
|
||||
public final L2PcInstance getOwner()
|
||||
|
||||
@@ -433,9 +433,7 @@ public class L2Npc extends L2Character
|
||||
@Override
|
||||
public void updateAbnormalVisualEffects()
|
||||
{
|
||||
// Send a Server->Client packet NpcInfo with state of abnormal effect to all L2PcInstance in the _KnownPlayers of the L2NpcInstance
|
||||
final Collection<L2PcInstance> plrs = getKnownList().getKnownPlayers().values();
|
||||
for (L2PcInstance player : plrs)
|
||||
for (L2PcInstance player : getKnownList().getKnownPlayers().values())
|
||||
{
|
||||
if ((player == null) || !isVisibleFor(player))
|
||||
{
|
||||
@@ -541,15 +539,13 @@ public class L2Npc extends L2Character
|
||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return false;
|
||||
}
|
||||
if (player.isLockedTarget() && (player.getLockedTarget() != this))
|
||||
if (!player.isLockedTarget() || (player.getLockedTarget() == this))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.FAILED_TO_CHANGE_ENMITY);
|
||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
// TODO: More checks...
|
||||
|
||||
return true;
|
||||
player.sendPacket(SystemMessageId.FAILED_TO_CHANGE_ENMITY);
|
||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canInteract(L2PcInstance player)
|
||||
@@ -647,13 +643,7 @@ public class L2Npc extends L2Character
|
||||
public final Castle getCastle(long maxDistance)
|
||||
{
|
||||
final int index = CastleManager.getInstance().findNearestCastleIndex(this, maxDistance);
|
||||
|
||||
if (index < 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return CastleManager.getInstance().getCastles().get(index);
|
||||
return index < 0 ? null : CastleManager.getInstance().getCastles().get(index);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -676,12 +666,7 @@ public class L2Npc extends L2Character
|
||||
}
|
||||
}
|
||||
|
||||
if (_fortIndex < 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return FortManager.getInstance().getForts().get(_fortIndex);
|
||||
return _fortIndex < 0 ? null : FortManager.getInstance().getForts().get(_fortIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -692,13 +677,7 @@ public class L2Npc extends L2Character
|
||||
public final Fort getFort(long maxDistance)
|
||||
{
|
||||
final int index = FortManager.getInstance().findNearestFortIndex(this, maxDistance);
|
||||
|
||||
if (index < 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return FortManager.getInstance().getForts().get(index);
|
||||
return index < 0 ? null : FortManager.getInstance().getForts().get(index);
|
||||
}
|
||||
|
||||
public final boolean getIsInTown()
|
||||
@@ -776,12 +755,7 @@ public class L2Npc extends L2Character
|
||||
// Get the weapon item equipped in the right hand of the L2NpcInstance
|
||||
final L2Item item = ItemTable.getInstance().getTemplate(getTemplate().getRHandId());
|
||||
|
||||
if (!(item instanceof L2Weapon))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return (L2Weapon) item;
|
||||
return !(item instanceof L2Weapon) ? null : (L2Weapon) item;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -809,12 +783,7 @@ public class L2Npc extends L2Character
|
||||
// Get the weapon item equipped in the right hand of the L2NpcInstance
|
||||
final L2Item item = ItemTable.getInstance().getTemplate(getTemplate().getLHandId());
|
||||
|
||||
if (!(item instanceof L2Weapon))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return (L2Weapon) item;
|
||||
return !(item instanceof L2Weapon) ? null : (L2Weapon) item;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -842,16 +811,7 @@ public class L2Npc extends L2Character
|
||||
*/
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
final String pom = val == 0 ? "" + npcId : npcId + "-" + val;
|
||||
|
||||
final String temp = "html/default/" + pom + ".htm";
|
||||
|
||||
@@ -889,13 +849,13 @@ public class L2Npc extends L2Character
|
||||
private boolean showPkDenyChatWindow(L2PcInstance player, String type)
|
||||
{
|
||||
final String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "html/" + type + "/" + getId() + "-pk.htm");
|
||||
if (html != null)
|
||||
if (html == null)
|
||||
{
|
||||
insertObjectIdAndShowChatWindow(player, html);
|
||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
insertObjectIdAndShowChatWindow(player, html);
|
||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -965,14 +925,7 @@ public class L2Npc extends L2Character
|
||||
{
|
||||
case 31688:
|
||||
{
|
||||
if (player.isNoble())
|
||||
{
|
||||
filename = Olympiad.OLYMPIAD_HTML_PATH + "noble_main.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
filename = (getHtmlPath(npcId, val));
|
||||
}
|
||||
filename = player.isNoble() ? Olympiad.OLYMPIAD_HTML_PATH + "noble_main.htm" : getHtmlPath(npcId, val);
|
||||
break;
|
||||
}
|
||||
case 31690:
|
||||
@@ -981,38 +934,17 @@ public class L2Npc extends L2Character
|
||||
case 31771:
|
||||
case 31772:
|
||||
{
|
||||
if (player.isHero() || player.isNoble())
|
||||
{
|
||||
filename = Olympiad.OLYMPIAD_HTML_PATH + "hero_main.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
filename = (getHtmlPath(npcId, val));
|
||||
}
|
||||
filename = player.isHero() || player.isNoble() ? Olympiad.OLYMPIAD_HTML_PATH + "hero_main.htm" : getHtmlPath(npcId, val);
|
||||
break;
|
||||
}
|
||||
case 36402:
|
||||
{
|
||||
if (player.getOlympiadBuffCount() > 0)
|
||||
{
|
||||
filename = (player.getOlympiadBuffCount() == Config.ALT_OLY_MAX_BUFFS ? Olympiad.OLYMPIAD_HTML_PATH + "olympiad_buffs.htm" : Olympiad.OLYMPIAD_HTML_PATH + "olympiad_5buffs.htm");
|
||||
}
|
||||
else
|
||||
{
|
||||
filename = Olympiad.OLYMPIAD_HTML_PATH + "olympiad_nobuffs.htm";
|
||||
}
|
||||
filename = player.getOlympiadBuffCount() > 0 ? player.getOlympiadBuffCount() == Config.ALT_OLY_MAX_BUFFS ? Olympiad.OLYMPIAD_HTML_PATH + "olympiad_buffs.htm" : Olympiad.OLYMPIAD_HTML_PATH + "olympiad_5buffs.htm" : Olympiad.OLYMPIAD_HTML_PATH + "olympiad_nobuffs.htm";
|
||||
break;
|
||||
}
|
||||
case 30298: // Blacksmith Pinter
|
||||
{
|
||||
if (player.isAcademyMember())
|
||||
{
|
||||
filename = (getHtmlPath(npcId, 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
filename = (getHtmlPath(npcId, val));
|
||||
}
|
||||
filename = player.isAcademyMember() ? getHtmlPath(npcId, 1) : getHtmlPath(npcId, val);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -1031,12 +963,9 @@ public class L2Npc extends L2Character
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), filename);
|
||||
|
||||
if (this instanceof L2MerchantInstance)
|
||||
if ((this instanceof L2MerchantInstance) && Config.LIST_PET_RENT_NPC.contains(npcId))
|
||||
{
|
||||
if (Config.LIST_PET_RENT_NPC.contains(npcId))
|
||||
{
|
||||
html.replace("_Quest", "_RentPet\">Rent Pet</a><br><a action=\"bypass -h npc_%objectId%_Quest");
|
||||
}
|
||||
html.replace("_Quest", "_RentPet\">Rent Pet</a><br><a action=\"bypass -h npc_%objectId%_Quest");
|
||||
}
|
||||
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
@@ -1265,11 +1194,12 @@ public class L2Npc extends L2Character
|
||||
|
||||
public void endDecayTask()
|
||||
{
|
||||
if (!isDecayed())
|
||||
if (isDecayed())
|
||||
{
|
||||
DecayTaskManager.getInstance().cancel(this);
|
||||
onDecay();
|
||||
return;
|
||||
}
|
||||
DecayTaskManager.getInstance().cancel(this);
|
||||
onDecay();
|
||||
}
|
||||
|
||||
public boolean isMob() // rather delete this check
|
||||
@@ -1338,21 +1268,23 @@ public class L2Npc extends L2Character
|
||||
@Override
|
||||
public void sendInfo(L2PcInstance activeChar)
|
||||
{
|
||||
if (isVisibleFor(activeChar))
|
||||
if (!isVisibleFor(activeChar))
|
||||
{
|
||||
if (Config.CHECK_KNOWN && activeChar.isGM())
|
||||
{
|
||||
activeChar.sendMessage("Added NPC: " + getName());
|
||||
}
|
||||
|
||||
if (getRunSpeed() == 0)
|
||||
{
|
||||
activeChar.sendPacket(new ServerObjectInfo(this, activeChar));
|
||||
}
|
||||
else
|
||||
{
|
||||
activeChar.sendPacket(new NpcInfo(this));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (Config.CHECK_KNOWN && activeChar.isGM())
|
||||
{
|
||||
activeChar.sendMessage("Added NPC: " + getName());
|
||||
}
|
||||
|
||||
if (getRunSpeed() == 0)
|
||||
{
|
||||
activeChar.sendPacket(new ServerObjectInfo(this, activeChar));
|
||||
}
|
||||
else
|
||||
{
|
||||
activeChar.sendPacket(new NpcInfo(this));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1423,11 +1355,12 @@ public class L2Npc extends L2Character
|
||||
|
||||
public void setDisplayEffect(int val)
|
||||
{
|
||||
if (val != _displayEffect)
|
||||
if (val == _displayEffect)
|
||||
{
|
||||
_displayEffect = val;
|
||||
broadcastPacket(new ExChangeNpcState(getObjectId(), val));
|
||||
return;
|
||||
}
|
||||
_displayEffect = val;
|
||||
broadcastPacket(new ExChangeNpcState(getObjectId(), val));
|
||||
}
|
||||
|
||||
public int getDisplayEffect()
|
||||
@@ -1484,37 +1417,27 @@ public class L2Npc extends L2Character
|
||||
@Override
|
||||
public void rechargeShots(boolean physical, boolean magic)
|
||||
{
|
||||
if ((_soulshotamount > 0) || (_spiritshotamount > 0))
|
||||
if ((_soulshotamount <= 0) && (_spiritshotamount <= 0))
|
||||
{
|
||||
if (physical)
|
||||
{
|
||||
if (_soulshotamount == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (Rnd.get(100) > getSoulShotChance())
|
||||
{
|
||||
return;
|
||||
}
|
||||
_soulshotamount--;
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillUse(this, this, 2154, 1, 0, 0), 600);
|
||||
setChargedShot(ShotType.SOULSHOTS, true);
|
||||
}
|
||||
if (magic)
|
||||
{
|
||||
if (_spiritshotamount == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (Rnd.get(100) > getSpiritShotChance())
|
||||
{
|
||||
return;
|
||||
}
|
||||
_spiritshotamount--;
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillUse(this, this, 2061, 1, 0, 0), 600);
|
||||
setChargedShot(ShotType.SPIRITSHOTS, true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (physical)
|
||||
{
|
||||
if ((_soulshotamount == 0) || (Rnd.get(100) > getSoulShotChance()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
_soulshotamount--;
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillUse(this, this, 2154, 1, 0, 0), 600);
|
||||
setChargedShot(ShotType.SOULSHOTS, true);
|
||||
}
|
||||
if (!magic || (_spiritshotamount == 0) || (Rnd.get(100) > getSpiritShotChance()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
_spiritshotamount--;
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillUse(this, this, 2061, 1, 0, 0), 600);
|
||||
setChargedShot(ShotType.SPIRITSHOTS, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1681,12 +1604,9 @@ public class L2Npc extends L2Character
|
||||
item.dropMe(this, newX, newY, newZ);
|
||||
|
||||
// Add drop to auto destroy item task.
|
||||
if (!Config.LIST_PROTECTED_ITEMS.contains(itemId))
|
||||
if (!Config.LIST_PROTECTED_ITEMS.contains(itemId) && (((Config.AUTODESTROY_ITEM_AFTER > 0) && !item.getItem().hasExImmediateEffect()) || ((Config.HERB_AUTO_DESTROY_TIME > 0) && item.getItem().hasExImmediateEffect())))
|
||||
{
|
||||
if (((Config.AUTODESTROY_ITEM_AFTER > 0) && !item.getItem().hasExImmediateEffect()) || ((Config.HERB_AUTO_DESTROY_TIME > 0) && item.getItem().hasExImmediateEffect()))
|
||||
{
|
||||
ItemsAutoDestroy.getInstance().addItem(item);
|
||||
}
|
||||
ItemsAutoDestroy.getInstance().addItem(item);
|
||||
}
|
||||
item.setProtected(false);
|
||||
|
||||
@@ -1815,11 +1735,7 @@ public class L2Npc extends L2Character
|
||||
*/
|
||||
public final L2Npc getSummonedNpc(int objectId)
|
||||
{
|
||||
if (_summonedNpcs != null)
|
||||
{
|
||||
return _summonedNpcs.get(objectId);
|
||||
}
|
||||
return null;
|
||||
return _summonedNpcs != null ? _summonedNpcs.get(objectId) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -402,63 +402,65 @@ public abstract class L2Summon extends L2Playable
|
||||
|
||||
public void unSummon(L2PcInstance owner)
|
||||
{
|
||||
if (isVisible() && !isDead())
|
||||
if (!isVisible() || isDead())
|
||||
{
|
||||
getAI().stopFollow();
|
||||
if (owner != null)
|
||||
return;
|
||||
}
|
||||
|
||||
getAI().stopFollow();
|
||||
if (owner != null)
|
||||
{
|
||||
owner.sendPacket(new PetDelete(getSummonType(), getObjectId()));
|
||||
final L2Party party = owner.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
owner.sendPacket(new PetDelete(getSummonType(), getObjectId()));
|
||||
final L2Party party = owner.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.broadcastToPartyMembers(owner, new ExPartyPetWindowDelete(this));
|
||||
}
|
||||
|
||||
if ((getInventory() != null) && (getInventory().getSize() > 0))
|
||||
{
|
||||
getOwner().setPetInvItems(true);
|
||||
sendPacket(SystemMessageId.THERE_ARE_ITEMS_IN_YOUR_PET_INVENTORY_RENDERING_YOU_UNABLE_TO_SELL_TRADE_DROP_PET_SUMMONING_ITEMS_PLEASE_EMPTY_YOUR_PET_INVENTORY);
|
||||
}
|
||||
else
|
||||
{
|
||||
getOwner().setPetInvItems(false);
|
||||
}
|
||||
}
|
||||
abortAttack();
|
||||
abortCast();
|
||||
storeMe();
|
||||
storeEffect(true);
|
||||
if (owner != null)
|
||||
{
|
||||
if (isPet())
|
||||
{
|
||||
owner.setPet(null);
|
||||
}
|
||||
else
|
||||
{
|
||||
owner.removeServitor(getObjectId());
|
||||
}
|
||||
party.broadcastToPartyMembers(owner, new ExPartyPetWindowDelete(this));
|
||||
}
|
||||
|
||||
// Stop AI tasks
|
||||
if (hasAI())
|
||||
if ((getInventory() != null) && (getInventory().getSize() > 0))
|
||||
{
|
||||
getAI().stopAITask();
|
||||
getOwner().setPetInvItems(true);
|
||||
sendPacket(SystemMessageId.THERE_ARE_ITEMS_IN_YOUR_PET_INVENTORY_RENDERING_YOU_UNABLE_TO_SELL_TRADE_DROP_PET_SUMMONING_ITEMS_PLEASE_EMPTY_YOUR_PET_INVENTORY);
|
||||
}
|
||||
|
||||
stopAllEffects();
|
||||
final L2WorldRegion oldRegion = getWorldRegion();
|
||||
decayMe();
|
||||
if (oldRegion != null)
|
||||
else
|
||||
{
|
||||
oldRegion.removeFromZones(this);
|
||||
getOwner().setPetInvItems(false);
|
||||
}
|
||||
getKnownList().removeAllKnownObjects();
|
||||
setTarget(null);
|
||||
if (owner != null)
|
||||
}
|
||||
abortAttack();
|
||||
abortCast();
|
||||
storeMe();
|
||||
storeEffect(true);
|
||||
if (owner != null)
|
||||
{
|
||||
if (isPet())
|
||||
{
|
||||
owner.setUsedSummonPoints(owner.getUsedSummonPoints() - _summonPoints);
|
||||
owner.setPet(null);
|
||||
}
|
||||
else
|
||||
{
|
||||
owner.removeServitor(getObjectId());
|
||||
}
|
||||
}
|
||||
|
||||
// Stop AI tasks
|
||||
if (hasAI())
|
||||
{
|
||||
getAI().stopAITask();
|
||||
}
|
||||
|
||||
stopAllEffects();
|
||||
final L2WorldRegion oldRegion = getWorldRegion();
|
||||
decayMe();
|
||||
if (oldRegion != null)
|
||||
{
|
||||
oldRegion.removeFromZones(this);
|
||||
}
|
||||
getKnownList().removeAllKnownObjects();
|
||||
setTarget(null);
|
||||
if (owner != null)
|
||||
{
|
||||
owner.setUsedSummonPoints(owner.getUsedSummonPoints() - _summonPoints);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -555,12 +557,7 @@ public abstract class L2Summon extends L2Playable
|
||||
@Override
|
||||
public L2Party getParty()
|
||||
{
|
||||
if (_owner == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return _owner.getParty();
|
||||
return _owner == null ? null : _owner.getParty();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -590,21 +587,7 @@ public abstract class L2Summon extends L2Playable
|
||||
@Override
|
||||
public boolean useMagic(Skill skill, boolean forceUse, boolean dontMove)
|
||||
{
|
||||
// Null skill, dead summon or null owner are reasons to prevent casting.
|
||||
if ((skill == null) || isDead() || (getOwner() == null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if the skill is active
|
||||
if (skill.isPassive())
|
||||
{
|
||||
// just ignore the passive skill request. why does the client send it anyway ??
|
||||
return false;
|
||||
}
|
||||
|
||||
// If a skill is currently being used
|
||||
if (isCastingNow())
|
||||
if ((skill == null) || isDead() || (getOwner() == null) || skill.isPassive() || isCastingNow())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -718,14 +701,8 @@ public abstract class L2Summon extends L2Playable
|
||||
}
|
||||
else
|
||||
{
|
||||
// Summons can cast skills on NPCs inside peace zones.
|
||||
if (!target.canBeAttacked() && !getOwner().getAccessLevel().allowPeaceAttack())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if a Forced attack is in progress on non-attackable target
|
||||
if (!target.isAutoAttackable(this) && !forceUse && !target.isNpc() && (skill.getTargetType() != L2TargetType.AURA) && (skill.getTargetType() != L2TargetType.FRONT_AURA) && (skill.getTargetType() != L2TargetType.BEHIND_AURA) && (skill.getTargetType() != L2TargetType.CLAN) && (skill.getTargetType() != L2TargetType.PARTY) && (skill.getTargetType() != L2TargetType.SELF))
|
||||
if ((!target.canBeAttacked() && !getOwner().getAccessLevel().allowPeaceAttack())//
|
||||
|| (!target.isAutoAttackable(this) && !forceUse && !target.isNpc() && (skill.getTargetType() != L2TargetType.AURA) && (skill.getTargetType() != L2TargetType.FRONT_AURA) && (skill.getTargetType() != L2TargetType.BEHIND_AURA) && (skill.getTargetType() != L2TargetType.CLAN) && (skill.getTargetType() != L2TargetType.PARTY) && (skill.getTargetType() != L2TargetType.SELF)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -765,62 +742,56 @@ public abstract class L2Summon extends L2Playable
|
||||
@Override
|
||||
public void sendDamageMessage(L2Character target, int damage, boolean mcrit, boolean pcrit, boolean miss)
|
||||
{
|
||||
if (miss || (getOwner() == null))
|
||||
if (miss || (getOwner() == null) || (target.getObjectId() == getOwner().getObjectId()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Prevents the double spam of system messages, if the target is the owning player.
|
||||
if (target.getObjectId() != getOwner().getObjectId())
|
||||
if (pcrit || mcrit)
|
||||
{
|
||||
if (pcrit || mcrit)
|
||||
if (isServitor())
|
||||
{
|
||||
if (isServitor())
|
||||
{
|
||||
sendPacket(SystemMessageId.SUMMONED_MONSTER_S_CRITICAL_HIT);
|
||||
}
|
||||
else
|
||||
{
|
||||
sendPacket(SystemMessageId.PET_S_CRITICAL_HIT);
|
||||
}
|
||||
}
|
||||
|
||||
if (getOwner().isInOlympiadMode() && (target instanceof L2PcInstance) && ((L2PcInstance) target).isInOlympiadMode() && (((L2PcInstance) target).getOlympiadGameId() == getOwner().getOlympiadGameId()))
|
||||
{
|
||||
OlympiadGameManager.getInstance().notifyCompetitorDamage(getOwner(), damage);
|
||||
}
|
||||
|
||||
final SystemMessage sm;
|
||||
|
||||
if (target.isInvul() && !(target instanceof L2NpcInstance))
|
||||
{
|
||||
sm = SystemMessage.getSystemMessage(SystemMessageId.THE_ATTACK_HAS_BEEN_BLOCKED);
|
||||
sendPacket(SystemMessageId.SUMMONED_MONSTER_S_CRITICAL_HIT);
|
||||
}
|
||||
else
|
||||
{
|
||||
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_INFLICTED_S3_DAMAGE_ON_C2_S4);
|
||||
sm.addNpcName(this);
|
||||
sm.addCharName(target);
|
||||
sm.addInt(damage);
|
||||
sm.addPopup(target.getObjectId(), getObjectId(), (damage * -1));
|
||||
sendPacket(SystemMessageId.PET_S_CRITICAL_HIT);
|
||||
}
|
||||
|
||||
sendPacket(sm);
|
||||
}
|
||||
|
||||
if (getOwner().isInOlympiadMode() && (target instanceof L2PcInstance) && ((L2PcInstance) target).isInOlympiadMode() && (((L2PcInstance) target).getOlympiadGameId() == getOwner().getOlympiadGameId()))
|
||||
{
|
||||
OlympiadGameManager.getInstance().notifyCompetitorDamage(getOwner(), damage);
|
||||
}
|
||||
final SystemMessage sm;
|
||||
if (target.isInvul() && !(target instanceof L2NpcInstance))
|
||||
{
|
||||
sm = SystemMessage.getSystemMessage(SystemMessageId.THE_ATTACK_HAS_BEEN_BLOCKED);
|
||||
}
|
||||
else
|
||||
{
|
||||
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_INFLICTED_S3_DAMAGE_ON_C2_S4);
|
||||
sm.addNpcName(this);
|
||||
sm.addCharName(target);
|
||||
sm.addInt(damage);
|
||||
sm.addPopup(target.getObjectId(), getObjectId(), (damage * -1));
|
||||
}
|
||||
|
||||
sendPacket(sm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reduceCurrentHp(double damage, L2Character attacker, Skill skill)
|
||||
{
|
||||
super.reduceCurrentHp(damage, attacker, skill);
|
||||
if ((getOwner() != null) && (attacker != null))
|
||||
if ((getOwner() == null) || (attacker == null))
|
||||
{
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_RECEIVED_S3_DAMAGE_FROM_C2);
|
||||
sm.addNpcName(this);
|
||||
sm.addCharName(attacker);
|
||||
sm.addInt((int) damage);
|
||||
sendPacket(sm);
|
||||
return;
|
||||
}
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_RECEIVED_S3_DAMAGE_FROM_C2);
|
||||
sm.addNpcName(this);
|
||||
sm.addCharName(attacker);
|
||||
sm.addInt((int) damage);
|
||||
sendPacket(sm);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -999,16 +970,13 @@ public abstract class L2Summon extends L2Playable
|
||||
{
|
||||
final L2PcInstance owner = getOwner();
|
||||
final L2Object target = getOwner().getTarget();
|
||||
|
||||
if ((owner != null) && (target != null))
|
||||
if ((owner == null) || (target == null)//
|
||||
|| (Config.FACTION_SYSTEM_ENABLED && target.isPlayer() && ((owner.isGood() && target.getActingPlayer().isGood()) || (owner.isEvil() && target.getActingPlayer().isEvil()))))
|
||||
{
|
||||
if (Config.FACTION_SYSTEM_ENABLED && target.isPlayer() && ((owner.isGood() && target.getActingPlayer().isGood()) || (owner.isEvil() && target.getActingPlayer().isEvil())))
|
||||
{
|
||||
return;
|
||||
}
|
||||
setTarget(target);
|
||||
getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
|
||||
return;
|
||||
}
|
||||
setTarget(target);
|
||||
getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1164,27 +1132,21 @@ public abstract class L2Summon extends L2Playable
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
if (magic)
|
||||
if (magic && (item.getItem().getDefaultAction() == ActionType.SUMMON_SPIRITSHOT))
|
||||
{
|
||||
if (item.getItem().getDefaultAction() == ActionType.SUMMON_SPIRITSHOT)
|
||||
handler = ItemHandler.getInstance().getHandler(item.getEtcItem());
|
||||
if (handler != null)
|
||||
{
|
||||
handler = ItemHandler.getInstance().getHandler(item.getEtcItem());
|
||||
if (handler != null)
|
||||
{
|
||||
handler.useItem(getOwner(), item, false);
|
||||
}
|
||||
handler.useItem(getOwner(), item, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (physical)
|
||||
if (physical && (item.getItem().getDefaultAction() == ActionType.SUMMON_SOULSHOT))
|
||||
{
|
||||
if (item.getItem().getDefaultAction() == ActionType.SUMMON_SOULSHOT)
|
||||
handler = ItemHandler.getInstance().getHandler(item.getEtcItem());
|
||||
if (handler != null)
|
||||
{
|
||||
handler = ItemHandler.getInstance().getHandler(item.getEtcItem());
|
||||
if (handler != null)
|
||||
{
|
||||
handler.useItem(getOwner(), item, false);
|
||||
}
|
||||
handler.useItem(getOwner(), item, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,13 +65,10 @@ public abstract class L2Tower extends L2Npc
|
||||
// Set the target of the L2PcInstance player
|
||||
player.setTarget(this);
|
||||
}
|
||||
else if (interact)
|
||||
else if (interact && isAutoAttackable(player) && (Math.abs(player.getZ() - getZ()) < 100) && GeoData.getInstance().canSeeTarget(player, this))
|
||||
{
|
||||
if (isAutoAttackable(player) && (Math.abs(player.getZ() - getZ()) < 100) && GeoData.getInstance().canSeeTarget(player, this))
|
||||
{
|
||||
// Notify the L2PcInstance AI with AI_INTENTION_INTERACT
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, this);
|
||||
}
|
||||
// Notify the L2PcInstance AI with AI_INTENTION_INTERACT
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, this);
|
||||
}
|
||||
// Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
|
||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
|
||||
@@ -132,13 +132,7 @@ public abstract class L2Vehicle extends L2Character
|
||||
final VehiclePathPoint point = _currentPath[_runState];
|
||||
if (!isMovementDisabled())
|
||||
{
|
||||
if (point.getMoveSpeed() == 0)
|
||||
{
|
||||
point.setHeading(point.getRotationSpeed());
|
||||
teleToLocation(point, false);
|
||||
_currentPath = null;
|
||||
}
|
||||
else
|
||||
if (point.getMoveSpeed() != 0)
|
||||
{
|
||||
if (point.getMoveSpeed() > 0)
|
||||
{
|
||||
@@ -171,6 +165,9 @@ public abstract class L2Vehicle extends L2Character
|
||||
GameTimeController.getInstance().registerMovingObject(this);
|
||||
return true;
|
||||
}
|
||||
point.setHeading(point.getRotationSpeed());
|
||||
teleToLocation(point, false);
|
||||
_currentPath = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -241,13 +238,7 @@ public abstract class L2Vehicle extends L2Character
|
||||
|
||||
public boolean addPassenger(L2PcInstance player)
|
||||
{
|
||||
if ((player == null) || _passengers.contains(player))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// already in other vehicle
|
||||
if ((player.getVehicle() != null) && (player.getVehicle() != this))
|
||||
if ((player == null) || _passengers.contains(player) || ((player.getVehicle() != null) && (player.getVehicle() != this)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -299,33 +290,35 @@ public abstract class L2Vehicle extends L2Character
|
||||
public void payForRide(int itemId, int count, int oustX, int oustY, int oustZ)
|
||||
{
|
||||
final Collection<L2PcInstance> passengers = getKnownList().getKnownPlayersInRadius(1000);
|
||||
if ((passengers != null) && !passengers.isEmpty())
|
||||
if ((passengers == null) || passengers.isEmpty())
|
||||
{
|
||||
L2ItemInstance ticket;
|
||||
InventoryUpdate iu;
|
||||
for (L2PcInstance player : passengers)
|
||||
return;
|
||||
}
|
||||
|
||||
L2ItemInstance ticket;
|
||||
InventoryUpdate iu;
|
||||
for (L2PcInstance player : passengers)
|
||||
{
|
||||
if (player == null)
|
||||
{
|
||||
if (player == null)
|
||||
continue;
|
||||
}
|
||||
if (player.isInBoat() && (player.getBoat() == this))
|
||||
{
|
||||
if (itemId > 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (player.isInBoat() && (player.getBoat() == this))
|
||||
{
|
||||
if (itemId > 0)
|
||||
ticket = player.getInventory().getItemByItemId(itemId);
|
||||
if ((ticket == null) || (player.getInventory().destroyItem("Boat", ticket, count, player, this) == null))
|
||||
{
|
||||
ticket = player.getInventory().getItemByItemId(itemId);
|
||||
if ((ticket == null) || (player.getInventory().destroyItem("Boat", ticket, count, player, this) == null))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.YOU_DO_NOT_POSSESS_THE_CORRECT_TICKET_TO_BOARD_THE_BOAT);
|
||||
player.teleToLocation(new Location(oustX, oustY, oustZ), true);
|
||||
continue;
|
||||
}
|
||||
iu = new InventoryUpdate();
|
||||
iu.addModifiedItem(ticket);
|
||||
player.sendPacket(iu);
|
||||
player.sendPacket(SystemMessageId.YOU_DO_NOT_POSSESS_THE_CORRECT_TICKET_TO_BOARD_THE_BOAT);
|
||||
player.teleToLocation(new Location(oustX, oustY, oustZ), true);
|
||||
continue;
|
||||
}
|
||||
addPassenger(player);
|
||||
iu = new InventoryUpdate();
|
||||
iu.addModifiedItem(ticket);
|
||||
player.sendPacket(iu);
|
||||
}
|
||||
addPassenger(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,11 +69,7 @@ public class PcAppearance
|
||||
*/
|
||||
public final String getVisibleName()
|
||||
{
|
||||
if (_visibleName == null)
|
||||
{
|
||||
return getOwner().getName();
|
||||
}
|
||||
return _visibleName;
|
||||
return _visibleName == null ? getOwner().getName() : _visibleName;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -89,11 +85,7 @@ public class PcAppearance
|
||||
*/
|
||||
public final String getVisibleTitle()
|
||||
{
|
||||
if (_visibleTitle == null)
|
||||
{
|
||||
return getOwner().getTitle();
|
||||
}
|
||||
return _visibleTitle;
|
||||
return _visibleTitle == null ? getOwner().getTitle() : _visibleTitle;
|
||||
}
|
||||
|
||||
public final byte getFace()
|
||||
@@ -171,11 +163,7 @@ public class PcAppearance
|
||||
|
||||
public int getNameColor()
|
||||
{
|
||||
if (_owner.getReputation() != 0)
|
||||
{
|
||||
return 0xFFFFFF; // Using 0xFFFFFF value in case _nameColor has changed.
|
||||
}
|
||||
return _nameColor;
|
||||
return _owner.getReputation() != 0 ? 0xFFFFFF : _nameColor; // Using 0xFFFFFF value in case _nameColor has changed.
|
||||
}
|
||||
|
||||
public void setNameColor(int nameColor)
|
||||
|
||||
@@ -35,17 +35,6 @@ public class L2AdventurerInstance extends L2NpcInstance
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
|
||||
return "html/adventurer_guildsman/" + pom + ".htm";
|
||||
return "html/adventurer_guildsman/" + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
}
|
||||
@@ -76,12 +76,7 @@ public final class L2AuctioneerInstance extends L2Npc
|
||||
final StringTokenizer st = new StringTokenizer(command, " ");
|
||||
final String actualCommand = st.nextToken(); // Get actual command
|
||||
|
||||
String val = "";
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
val = st.nextToken();
|
||||
}
|
||||
|
||||
final String val = st.countTokens() >= 1 ? st.nextToken() : "";
|
||||
if (actualCommand.equalsIgnoreCase("auction"))
|
||||
{
|
||||
if (val.isEmpty())
|
||||
@@ -95,12 +90,7 @@ public final class L2AuctioneerInstance extends L2Npc
|
||||
try
|
||||
{
|
||||
final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm");
|
||||
long bid = 0;
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
bid = Math.min(Long.parseLong(st.nextToken()), MAX_ADENA);
|
||||
}
|
||||
|
||||
final long bid = st.countTokens() >= 1 ? Math.min(Long.parseLong(st.nextToken()), MAX_ADENA) : 0;
|
||||
final Auction a = new Auction(player.getClan().getHideoutId(), player.getClan(), days * 86400000L, bid, ClanHallManager.getInstance().getClanHallByOwner(player.getClan()).getName());
|
||||
if (_pendingAuctions.get(a.getId()) != null)
|
||||
{
|
||||
@@ -215,13 +205,7 @@ public final class L2AuctioneerInstance extends L2Npc
|
||||
final int auctionId = Integer.parseInt(val);
|
||||
try
|
||||
{
|
||||
long bid = 0;
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
bid = Math.min(Long.parseLong(st.nextToken()), MAX_ADENA);
|
||||
}
|
||||
|
||||
ClanHallAuctionManager.getInstance().getAuction(auctionId).setBid(player, bid);
|
||||
ClanHallAuctionManager.getInstance().getAuction(auctionId).setBid(player, (st.countTokens() >= 1 ? Math.min(Long.parseLong(st.nextToken()), MAX_ADENA) : 0));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -325,21 +309,15 @@ public final class L2AuctioneerInstance extends L2Npc
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i > limit)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if (i < start)
|
||||
i++;
|
||||
if (i < start)
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
i++;
|
||||
}
|
||||
|
||||
items.append("<tr>");
|
||||
items.append("<td>");
|
||||
items.append(ClanHallManager.getInstance().getAuctionableHallById(a.getItemId()).getLocation());
|
||||
|
||||
@@ -93,12 +93,7 @@ public final class L2BabyPetInstance extends L2PetInstance
|
||||
}
|
||||
|
||||
final Skill skill = SkillData.getInstance().getSkill(id, lvl);
|
||||
if (skill == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((skill.getId() == BUFF_CONTROL) || (skill.getId() == AWAKENING))
|
||||
if ((skill == null) || (skill.getId() == BUFF_CONTROL) || (skill.getId() == AWAKENING))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -208,11 +203,12 @@ public final class L2BabyPetInstance extends L2PetInstance
|
||||
|
||||
private final void stopCastTask()
|
||||
{
|
||||
if (_castTask != null)
|
||||
if (_castTask == null)
|
||||
{
|
||||
_castTask.cancel(false);
|
||||
_castTask = null;
|
||||
return;
|
||||
}
|
||||
_castTask.cancel(false);
|
||||
_castTask = null;
|
||||
}
|
||||
|
||||
protected void castSkill(Skill skill)
|
||||
@@ -285,26 +281,20 @@ public final class L2BabyPetInstance extends L2PetInstance
|
||||
if ((isImprovedBaby && (hpPercent < 0.3)) || (!isImprovedBaby && (hpPercent < 0.15)))
|
||||
{
|
||||
skill = _majorHeal.getSkill();
|
||||
if (!_baby.isSkillDisabled(skill) && (Rnd.get(100) <= 75))
|
||||
if (!_baby.isSkillDisabled(skill) && (Rnd.get(100) <= 75) && (_baby.getCurrentMp() >= skill.getMpConsume()))
|
||||
{
|
||||
if (_baby.getCurrentMp() >= skill.getMpConsume())
|
||||
{
|
||||
castSkill(skill);
|
||||
return;
|
||||
}
|
||||
castSkill(skill);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if ((_majorHeal.getSkill() != _minorHeal.getSkill()) && ((isImprovedBaby && (hpPercent < 0.7)) || (!isImprovedBaby && (hpPercent < 0.8))))
|
||||
{
|
||||
// Cast _minorHeal only if it's different than _majorHeal, then pet has two heals available.
|
||||
skill = _minorHeal.getSkill();
|
||||
if (!_baby.isSkillDisabled(skill) && (Rnd.get(100) <= 25))
|
||||
if (!_baby.isSkillDisabled(skill) && (Rnd.get(100) <= 25) && (_baby.getCurrentMp() >= skill.getMpConsume()))
|
||||
{
|
||||
if (_baby.getCurrentMp() >= skill.getMpConsume())
|
||||
{
|
||||
castSkill(skill);
|
||||
return;
|
||||
}
|
||||
castSkill(skill);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -318,25 +308,15 @@ public final class L2BabyPetInstance extends L2PetInstance
|
||||
for (SkillHolder buff : _buffs)
|
||||
{
|
||||
skill = buff.getSkill();
|
||||
if (_baby.isSkillDisabled(skill))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_baby.getCurrentMp() < skill.getMpConsume())
|
||||
if (_baby.isSkillDisabled(skill) || (_baby.getCurrentMp() < skill.getMpConsume()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// If owner already have the buff, continue.
|
||||
final BuffInfo buffInfo = owner.getEffectList().getBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||
if ((buffInfo != null) && (skill.getAbnormalLvl() <= buffInfo.getSkill().getAbnormalLvl()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// If owner have the buff blocked, continue.
|
||||
if ((owner.getEffectList().getAllBlockedBuffSlots() != null) && owner.getEffectList().getAllBlockedBuffSlots().contains(skill.getAbnormalType()))
|
||||
if (((buffInfo != null) && (skill.getAbnormalLvl() <= buffInfo.getSkill().getAbnormalLvl()))//
|
||||
|| ((owner.getEffectList().getAllBlockedBuffSlots() != null) && owner.getEffectList().getAllBlockedBuffSlots().contains(skill.getAbnormalType())))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -56,22 +56,11 @@ public class L2BlockInstance extends L2MonsterInstance
|
||||
synchronized (this)
|
||||
{
|
||||
final BlockCheckerEngine event = holder.getEvent();
|
||||
if (_colorEffect == 0x53)
|
||||
{
|
||||
// Change color
|
||||
_colorEffect = 0x00;
|
||||
// BroadCast to all known players
|
||||
broadcastPacket(new NpcInfo(this));
|
||||
increaseTeamPointsAndSend(attacker, team, event);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Change color
|
||||
_colorEffect = 0x53;
|
||||
// BroadCast to all known players
|
||||
broadcastPacket(new NpcInfo(this));
|
||||
increaseTeamPointsAndSend(attacker, team, event);
|
||||
}
|
||||
// Change color
|
||||
_colorEffect = _colorEffect == 0x53 ? 0x00 : 0x53;
|
||||
// BroadCast to all known players
|
||||
broadcastPacket(new NpcInfo(this));
|
||||
increaseTeamPointsAndSend(attacker, team, event);
|
||||
// 30% chance to drop the event items
|
||||
final int random = Rnd.get(100);
|
||||
// Bond
|
||||
@@ -107,11 +96,7 @@ public class L2BlockInstance extends L2MonsterInstance
|
||||
@Override
|
||||
public boolean isAutoAttackable(L2Character attacker)
|
||||
{
|
||||
if (attacker instanceof L2PcInstance)
|
||||
{
|
||||
return (attacker.getActingPlayer() != null) && (attacker.getActingPlayer().getBlockCheckerArena() > -1);
|
||||
}
|
||||
return true;
|
||||
return !(attacker instanceof L2PcInstance) || ((attacker.getActingPlayer() != null) && (attacker.getActingPlayer().getBlockCheckerArena() > -1));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -83,12 +83,9 @@ public class L2CastleDoormenInstance extends L2DoormenInstance
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (getCastle() != null)
|
||||
else if ((getCastle() != null) && (player.getClanId() == getCastle().getOwnerId()))
|
||||
{
|
||||
if (player.getClanId() == getCastle().getOwnerId())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@@ -98,10 +95,6 @@ public class L2CastleDoormenInstance extends L2DoormenInstance
|
||||
protected final boolean isUnderSiege()
|
||||
{
|
||||
final SiegableHall hall = getConquerableHall();
|
||||
if (hall != null)
|
||||
{
|
||||
return hall.isInSiege();
|
||||
}
|
||||
return getCastle().getZone().isActive();
|
||||
return hall != null ? hall.isInSiege() : getCastle().getZone().isActive();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,58 +66,48 @@ public class L2ClanHallDoormenInstance extends L2DoormenInstance
|
||||
@Override
|
||||
public void onBypassFeedback(L2PcInstance player, String command)
|
||||
{
|
||||
if (_hasEvolve && command.startsWith("evolve"))
|
||||
if (_hasEvolve && command.startsWith("evolve") && isOwnerClan(player))
|
||||
{
|
||||
if (isOwnerClan(player))
|
||||
final StringTokenizer st = new StringTokenizer(command, " ");
|
||||
if (st.countTokens() < 2)
|
||||
{
|
||||
final StringTokenizer st = new StringTokenizer(command, " ");
|
||||
if (st.countTokens() < 2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
st.nextToken();
|
||||
boolean ok = false;
|
||||
switch (Integer.parseInt(st.nextToken()))
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
ok = Evolve.doEvolve(player, this, 9882, 10307, 55);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
ok = Evolve.doEvolve(player, this, 4422, 10308, 55);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
ok = Evolve.doEvolve(player, this, 4423, 10309, 55);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
ok = Evolve.doEvolve(player, this, 4424, 10310, 55);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
ok = Evolve.doEvolve(player, this, 10426, 10611, 70);
|
||||
break;
|
||||
}
|
||||
}
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
if (ok)
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallDoormen/evolve-ok.htm");
|
||||
}
|
||||
else
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallDoormen/evolve-no.htm");
|
||||
}
|
||||
player.sendPacket(html);
|
||||
return;
|
||||
}
|
||||
|
||||
st.nextToken();
|
||||
boolean ok = false;
|
||||
switch (Integer.parseInt(st.nextToken()))
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
ok = Evolve.doEvolve(player, this, 9882, 10307, 55);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
ok = Evolve.doEvolve(player, this, 4422, 10308, 55);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
ok = Evolve.doEvolve(player, this, 4423, 10309, 55);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
ok = Evolve.doEvolve(player, this, 4424, 10310, 55);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
ok = Evolve.doEvolve(player, this, 10426, 10611, 70);
|
||||
break;
|
||||
}
|
||||
}
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), ok ? "html/clanHallDoormen/evolve-ok.htm" : "html/clanHallDoormen/evolve-no.htm");
|
||||
player.sendPacket(html);
|
||||
return;
|
||||
}
|
||||
super.onBypassFeedback(player, command);
|
||||
}
|
||||
@@ -129,40 +119,30 @@ public class L2ClanHallDoormenInstance extends L2DoormenInstance
|
||||
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
|
||||
if (getClanHall() != null)
|
||||
if (getClanHall() == null)
|
||||
{
|
||||
final L2Clan owner = ClanTable.getInstance().getClan(getClanHall().getOwnerId());
|
||||
if (isOwnerClan(player))
|
||||
{
|
||||
if (_hasEvolve)
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallDoormen/doormen2.htm");
|
||||
html.replace("%clanname%", owner.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallDoormen/doormen1.htm");
|
||||
html.replace("%clanname%", owner.getName());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((owner != null) && (owner.getLeader() != null))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallDoormen/doormen-no.htm");
|
||||
html.replace("%leadername%", owner.getLeaderName());
|
||||
html.replace("%clanname%", owner.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallDoormen/emptyowner.htm");
|
||||
html.replace("%hallname%", getClanHall().getName());
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
final L2Clan owner = ClanTable.getInstance().getClan(getClanHall().getOwnerId());
|
||||
if (isOwnerClan(player))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), _hasEvolve ? "html/clanHallDoormen/doormen2.htm" : "html/clanHallDoormen/doormen1.htm");
|
||||
html.replace("%clanname%", owner.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
if ((owner != null) && (owner.getLeader() != null))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallDoormen/doormen-no.htm");
|
||||
html.replace("%leadername%", owner.getLeaderName());
|
||||
html.replace("%clanname%", owner.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallDoormen/emptyowner.htm");
|
||||
html.replace("%hallname%", getClanHall().getName());
|
||||
}
|
||||
}
|
||||
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
@@ -212,13 +192,6 @@ public class L2ClanHallDoormenInstance extends L2DoormenInstance
|
||||
@Override
|
||||
protected final boolean isOwnerClan(L2PcInstance player)
|
||||
{
|
||||
if ((player.getClan() != null) && (getClanHall() != null))
|
||||
{
|
||||
if (player.getClanId() == getClanHall().getOwnerId())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return (player.getClan() != null) && (getClanHall() != null) && (player.getClanId() == getClanHall().getOwnerId());
|
||||
}
|
||||
}
|
||||
@@ -82,13 +82,8 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
if (condition == COND_OWNER)
|
||||
{
|
||||
final StringTokenizer st = new StringTokenizer(command, " ");
|
||||
final String actualCommand = st.nextToken(); // Get actual command
|
||||
String val = "";
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
val = st.nextToken();
|
||||
}
|
||||
|
||||
final String actualCommand = st.nextToken();
|
||||
String val = st.countTokens() >= 1 ? st.nextToken() : "";
|
||||
if (actualCommand.equalsIgnoreCase("banish_foreigner"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -111,7 +106,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("manage_vault"))
|
||||
if (actualCommand.equalsIgnoreCase("manage_vault"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
if (player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE))
|
||||
@@ -126,16 +121,15 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
html.replace("%rent%", String.valueOf(getClanHall().getLease()));
|
||||
html.replace("%date%", format.format(getClanHall().getPaidUntil()));
|
||||
}
|
||||
sendHtmlMessage(player, html);
|
||||
}
|
||||
else
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/not_authorized.htm");
|
||||
sendHtmlMessage(player, html);
|
||||
}
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("door"))
|
||||
if (actualCommand.equalsIgnoreCase("door"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
if (player.hasClanPrivilege(ClanPrivilege.CH_OPEN_DOOR))
|
||||
@@ -154,16 +148,15 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/door.htm");
|
||||
}
|
||||
sendHtmlMessage(player, html);
|
||||
}
|
||||
else
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/not_authorized.htm");
|
||||
sendHtmlMessage(player, html);
|
||||
}
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("functions"))
|
||||
if (actualCommand.equalsIgnoreCase("functions"))
|
||||
{
|
||||
if (val.equalsIgnoreCase("tele"))
|
||||
{
|
||||
@@ -191,8 +184,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
return;
|
||||
}
|
||||
final int valbuy = Integer.parseInt(st.nextToken()) + (getClanHall().getFunction(ClanHall.FUNC_ITEM_CREATE).getLvl() * 100000);
|
||||
showBuyWindow(player, valbuy);
|
||||
showBuyWindow(player, (Integer.parseInt(st.nextToken()) + (getClanHall().getFunction(ClanHall.FUNC_ITEM_CREATE).getLvl() * 100000)));
|
||||
}
|
||||
else if (val.equalsIgnoreCase("support"))
|
||||
{
|
||||
@@ -216,35 +208,14 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions.htm");
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP) != null)
|
||||
{
|
||||
html.replace("%xp_regen%", String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP).getLvl()));
|
||||
}
|
||||
else
|
||||
{
|
||||
html.replace("%xp_regen%", "0");
|
||||
}
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP) != null)
|
||||
{
|
||||
html.replace("%hp_regen%", String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP).getLvl()));
|
||||
}
|
||||
else
|
||||
{
|
||||
html.replace("%hp_regen%", "0");
|
||||
}
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP) != null)
|
||||
{
|
||||
html.replace("%mp_regen%", String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP).getLvl()));
|
||||
}
|
||||
else
|
||||
{
|
||||
html.replace("%mp_regen%", "0");
|
||||
}
|
||||
html.replace("%xp_regen%", getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP) != null ? String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP).getLvl()) : "0");
|
||||
html.replace("%hp_regen%", getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP) != null ? String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP).getLvl()) : "0");
|
||||
html.replace("%mp_regen%", getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP) != null ? String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP).getLvl()) : "0");
|
||||
sendHtmlMessage(player, html);
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("manage"))
|
||||
if (actualCommand.equalsIgnoreCase("manage"))
|
||||
{
|
||||
if (player.hasClanPrivilege(ClanPrivilege.CH_SET_FUNCTIONS))
|
||||
{
|
||||
@@ -266,7 +237,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("mp_cancel"))
|
||||
if (val.equalsIgnoreCase("mp_cancel"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-cancel.htm");
|
||||
@@ -274,7 +245,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("exp_cancel"))
|
||||
if (val.equalsIgnoreCase("exp_cancel"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-cancel.htm");
|
||||
@@ -282,7 +253,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_hp"))
|
||||
if (val.equalsIgnoreCase("edit_hp"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -358,14 +329,13 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
html.replace("%cost%", String.valueOf(cost) + "</font>Adena /" + String.valueOf(Config.CH_HPREG_FEE_RATIO / 1000 / 60 / 60 / 24) + " Day</font>)");
|
||||
html.replace("%use%", "Provides additional HP recovery for clan members in the clan hall.<font color=\"00FFFF\">" + String.valueOf(percent) + "%</font>");
|
||||
html.replace("%apply%", "recovery hp " + String.valueOf(percent));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_mp"))
|
||||
if (val.equalsIgnoreCase("edit_mp"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -407,7 +377,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_exp"))
|
||||
if (val.equalsIgnoreCase("edit_exp"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -459,7 +429,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("hp"))
|
||||
if (val.equalsIgnoreCase("hp"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -471,15 +441,12 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-apply_confirmed.htm");
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP) != null)
|
||||
if ((getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP) != null) && (getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int percent = Integer.parseInt(val);
|
||||
switch (percent)
|
||||
@@ -569,7 +536,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("mp"))
|
||||
if (val.equalsIgnoreCase("mp"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -581,15 +548,12 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-apply_confirmed.htm");
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP) != null)
|
||||
if ((getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP) != null) && (getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int percent = Integer.parseInt(val);
|
||||
switch (percent)
|
||||
@@ -639,7 +603,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("exp"))
|
||||
if (val.equalsIgnoreCase("exp"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -651,15 +615,12 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-apply_confirmed.htm");
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP) != null)
|
||||
if ((getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP) != null) && (getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int percent = Integer.parseInt(val);
|
||||
switch (percent)
|
||||
@@ -738,8 +699,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
html.replace("%hp_recovery%", String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP).getLvl()) + "%</font> (<font color=\"FFAABB\">" + String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP).getLease()) + "</font>Adena /" + String.valueOf(Config.CH_HPREG_FEE_RATIO / 1000 / 60 / 60 / 24) + " Day)");
|
||||
html.replace("%hp_period%", "Withdraw the fee for the next time at " + format.format(getClanHall().getFunction(ClanHall.FUNC_RESTORE_HP).getEndTime()));
|
||||
final int grade = getClanHall().getGrade();
|
||||
switch (grade)
|
||||
switch (getClanHall().getGrade())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
@@ -767,8 +727,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
html.replace("%hp_recovery%", "none");
|
||||
html.replace("%hp_period%", "none");
|
||||
final int grade = getClanHall().getGrade();
|
||||
switch (grade)
|
||||
switch (getClanHall().getGrade())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
@@ -796,8 +755,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
html.replace("%exp_recovery%", String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP).getLvl()) + "%</font> (<font color=\"FFAABB\">" + String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP).getLease()) + "</font>Adena /" + String.valueOf(Config.CH_EXPREG_FEE_RATIO / 1000 / 60 / 60 / 24) + " Day)");
|
||||
html.replace("%exp_period%", "Withdraw the fee for the next time at " + format.format(getClanHall().getFunction(ClanHall.FUNC_RESTORE_EXP).getEndTime()));
|
||||
final int grade = getClanHall().getGrade();
|
||||
switch (grade)
|
||||
switch (getClanHall().getGrade())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
@@ -825,8 +783,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
html.replace("%exp_recovery%", "none");
|
||||
html.replace("%exp_period%", "none");
|
||||
final int grade = getClanHall().getGrade();
|
||||
switch (grade)
|
||||
switch (getClanHall().getGrade())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
@@ -854,8 +811,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
html.replace("%mp_recovery%", String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP).getLvl()) + "%</font> (<font color=\"FFAABB\">" + String.valueOf(getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP).getLease()) + "</font>Adena /" + String.valueOf(Config.CH_MPREG_FEE_RATIO / 1000 / 60 / 60 / 24) + " Day)");
|
||||
html.replace("%mp_period%", "Withdraw the fee for the next time at " + format.format(getClanHall().getFunction(ClanHall.FUNC_RESTORE_MP).getEndTime()));
|
||||
final int grade = getClanHall().getGrade();
|
||||
switch (grade)
|
||||
switch (getClanHall().getGrade())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
@@ -883,8 +839,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
html.replace("%mp_recovery%", "none");
|
||||
html.replace("%mp_period%", "none");
|
||||
final int grade = getClanHall().getGrade();
|
||||
switch (grade)
|
||||
switch (getClanHall().getGrade())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
@@ -928,7 +883,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("tele_cancel"))
|
||||
if (val.equalsIgnoreCase("tele_cancel"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-cancel.htm");
|
||||
@@ -936,7 +891,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("support_cancel"))
|
||||
if (val.equalsIgnoreCase("support_cancel"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-cancel.htm");
|
||||
@@ -944,7 +899,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_item"))
|
||||
if (val.equalsIgnoreCase("edit_item"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -976,7 +931,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_support"))
|
||||
if (val.equalsIgnoreCase("edit_support"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -1033,7 +988,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_tele"))
|
||||
if (val.equalsIgnoreCase("edit_tele"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -1060,7 +1015,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("item"))
|
||||
if (val.equalsIgnoreCase("item"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -1076,15 +1031,12 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-apply_confirmed.htm");
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_ITEM_CREATE) != null)
|
||||
if ((getClanHall().getFunction(ClanHall.FUNC_ITEM_CREATE) != null) && (getClanHall().getFunction(ClanHall.FUNC_ITEM_CREATE).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_ITEM_CREATE).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
int fee;
|
||||
final int lvl = Integer.parseInt(val);
|
||||
@@ -1125,7 +1077,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("tele"))
|
||||
if (val.equalsIgnoreCase("tele"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -1137,15 +1089,12 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-apply_confirmed.htm");
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_TELEPORT) != null)
|
||||
if ((getClanHall().getFunction(ClanHall.FUNC_TELEPORT) != null) && (getClanHall().getFunction(ClanHall.FUNC_TELEPORT).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_TELEPORT).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int lvl = Integer.parseInt(val);
|
||||
switch (lvl)
|
||||
@@ -1180,7 +1129,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("support"))
|
||||
if (val.equalsIgnoreCase("support"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -1192,15 +1141,12 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-apply_confirmed.htm");
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_SUPPORT) != null)
|
||||
if ((getClanHall().getFunction(ClanHall.FUNC_SUPPORT) != null) && (getClanHall().getFunction(ClanHall.FUNC_SUPPORT).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_SUPPORT).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int lvl = Integer.parseInt(val);
|
||||
switch (lvl)
|
||||
@@ -1290,8 +1236,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
html.replace("%support%", "Stage " + String.valueOf(getClanHall().getFunction(ClanHall.FUNC_SUPPORT).getLvl()) + "</font> (<font color=\"FFAABB\">" + String.valueOf(getClanHall().getFunction(ClanHall.FUNC_SUPPORT).getLease()) + "</font>Adena /" + String.valueOf(Config.CH_SUPPORT_FEE_RATIO / 1000 / 60 / 60 / 24) + " Day)");
|
||||
html.replace("%support_period%", "Withdraw the fee for the next time at " + format.format(getClanHall().getFunction(ClanHall.FUNC_SUPPORT).getEndTime()));
|
||||
final int grade = getClanHall().getGrade();
|
||||
switch (grade)
|
||||
switch (getClanHall().getGrade())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
@@ -1319,8 +1264,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
html.replace("%support%", "none");
|
||||
html.replace("%support_period%", "none");
|
||||
final int grade = getClanHall().getGrade();
|
||||
switch (grade)
|
||||
switch (getClanHall().getGrade())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
@@ -1376,7 +1320,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("fixtures_cancel"))
|
||||
if (val.equalsIgnoreCase("fixtures_cancel"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-cancel.htm");
|
||||
@@ -1384,7 +1328,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_curtains"))
|
||||
if (val.equalsIgnoreCase("edit_curtains"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -1411,7 +1355,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_fixtures"))
|
||||
if (val.equalsIgnoreCase("edit_fixtures"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -1438,7 +1382,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("curtains"))
|
||||
if (val.equalsIgnoreCase("curtains"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -1450,15 +1394,12 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-apply_confirmed.htm");
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_DECO_CURTAINS) != null)
|
||||
if ((getClanHall().getFunction(ClanHall.FUNC_DECO_CURTAINS) != null) && (getClanHall().getFunction(ClanHall.FUNC_DECO_CURTAINS).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_DECO_CURTAINS).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int lvl = Integer.parseInt(val);
|
||||
switch (lvl)
|
||||
@@ -1493,7 +1434,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("fixtures"))
|
||||
if (val.equalsIgnoreCase("fixtures"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -1505,15 +1446,12 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-apply_confirmed.htm");
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_DECO_FRONTPLATEFORM) != null)
|
||||
if ((getClanHall().getFunction(ClanHall.FUNC_DECO_FRONTPLATEFORM) != null) && (getClanHall().getFunction(ClanHall.FUNC_DECO_FRONTPLATEFORM).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_DECO_FRONTPLATEFORM).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int lvl = Integer.parseInt(val);
|
||||
switch (lvl)
|
||||
@@ -1598,7 +1536,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("support"))
|
||||
if (actualCommand.equalsIgnoreCase("support"))
|
||||
{
|
||||
if (player.isCursedWeaponEquipped())
|
||||
{
|
||||
@@ -1618,11 +1556,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
final int skill_id = Integer.parseInt(val);
|
||||
try
|
||||
{
|
||||
int skill_lvl = 0;
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
skill_lvl = Integer.parseInt(st.nextToken());
|
||||
}
|
||||
final int skill_lvl = st.countTokens() >= 1 ? Integer.parseInt(st.nextToken()) : 0;
|
||||
skill = SkillData.getInstance().getSkill(skill_id, skill_lvl);
|
||||
if (skill.hasEffectType(L2EffectType.SUMMON))
|
||||
{
|
||||
@@ -1630,13 +1564,8 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
else
|
||||
{
|
||||
final int mpCost = skill.getMpConsume() + skill.getMpInitialConsume();
|
||||
// If Clan Hall Buff are free or current MP is greater than MP cost, the skill should be casted.
|
||||
if ((getCurrentMp() >= mpCost) || Config.CH_BUFF_FREE)
|
||||
{
|
||||
doCast(skill);
|
||||
}
|
||||
else
|
||||
if ((getCurrentMp() < (skill.getMpConsume() + skill.getMpInitialConsume())) && !Config.CH_BUFF_FREE)
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/clanHallManager/support-no_mana.htm");
|
||||
@@ -1644,6 +1573,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
doCast(skill);
|
||||
}
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_SUPPORT) == null)
|
||||
{
|
||||
@@ -1669,21 +1599,17 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("list_back"))
|
||||
if (actualCommand.equalsIgnoreCase("list_back"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
String file = "html/clanHallManager/chamberlain-" + getId() + ".htm";
|
||||
if (!HtmCache.getInstance().isLoadable(file))
|
||||
{
|
||||
file = "html/clanHallManager/chamberlain.htm";
|
||||
}
|
||||
final String file = !HtmCache.getInstance().isLoadable(("html/clanHallManager/chamberlain-" + getId() + ".htm")) ? "html/clanHallManager/chamberlain.htm" : "html/clanHallManager/chamberlain-" + getId() + ".htm";
|
||||
html.setFile(player.getHtmlPrefix(), file);
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
html.replace("%npcname%", getName());
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("support_back"))
|
||||
if (actualCommand.equalsIgnoreCase("support_back"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
if (getClanHall().getFunction(ClanHall.FUNC_SUPPORT).getLvl() == 0)
|
||||
@@ -1695,7 +1621,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("goto"))
|
||||
if (actualCommand.equalsIgnoreCase("goto"))
|
||||
{
|
||||
final int whereTo = Integer.parseInt(val);
|
||||
doTeleport(player, whereTo);
|
||||
@@ -1799,7 +1725,7 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
player.sendPacket(SystemMessageId.YOU_CANNOT_TELEPORT_WHILE_IN_POSSESSION_OF_A_WARD);
|
||||
return;
|
||||
}
|
||||
else if (player.destroyItemByItemId("Teleport", list.getItemId(), list.getPrice(), this, true))
|
||||
if (player.destroyItemByItemId("Teleport", list.getItemId(), list.getPrice(), this, true))
|
||||
{
|
||||
if (Config.DEBUG)
|
||||
{
|
||||
@@ -1822,7 +1748,6 @@ public class L2ClanHallManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
return;
|
||||
}
|
||||
final AgitDecoInfo bl = new AgitDecoInfo(ch);
|
||||
player.sendPacket(bl);
|
||||
player.sendPacket(new AgitDecoInfo(ch));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,18 +55,7 @@ public final class L2ClassMasterInstance extends L2MerchantInstance
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
|
||||
return "html/classmaster/" + pom + ".htm";
|
||||
return "html/classmaster/" + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -155,8 +144,7 @@ public final class L2ClassMasterInstance extends L2MerchantInstance
|
||||
|
||||
try
|
||||
{
|
||||
final int val = Integer.parseInt(request.substring(21));
|
||||
checkAndChangeClass(player, val);
|
||||
checkAndChangeClass(player, Integer.parseInt(request.substring(21)));
|
||||
}
|
||||
catch (NumberFormatException e)
|
||||
{
|
||||
@@ -182,12 +170,7 @@ public final class L2ClassMasterInstance extends L2MerchantInstance
|
||||
}
|
||||
|
||||
final ClassId classId = player.getClassId();
|
||||
if (getMinLevel(classId.level(), player) > player.getLevel())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Config.CLASS_MASTER_SETTINGS.isAllowed(classId.level() + 1))
|
||||
if ((getMinLevel(classId.level(), player) > player.getLevel()) || !Config.CLASS_MASTER_SETTINGS.isAllowed(classId.level() + 1))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -356,9 +339,7 @@ public final class L2ClassMasterInstance extends L2MerchantInstance
|
||||
return;
|
||||
}
|
||||
|
||||
String msg = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "html/classmaster/tutorialtemplate.htm");
|
||||
msg = msg.replaceAll("%name%", ClassListData.getInstance().getClass(currentClassId).getEscapedClientCode());
|
||||
|
||||
String msg = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "html/classmaster/tutorialtemplate.htm").replaceAll("%name%", ClassListData.getInstance().getClass(currentClassId).getEscapedClientCode());
|
||||
final StringBuilder menu = new StringBuilder(100);
|
||||
for (ClassId cid : ClassId.values())
|
||||
{
|
||||
@@ -380,12 +361,7 @@ public final class L2ClassMasterInstance extends L2MerchantInstance
|
||||
private static final boolean checkAndChangeClass(L2PcInstance player, int val)
|
||||
{
|
||||
final ClassId currentClassId = player.getClassId();
|
||||
if ((getMinLevel(currentClassId.level(), player) > player.getLevel()) && !Config.ALLOW_ENTIRE_TREE)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!validateClassId(currentClassId, val))
|
||||
if (((getMinLevel(currentClassId.level(), player) > player.getLevel()) && !Config.ALLOW_ENTIRE_TREE) || !validateClassId(currentClassId, val))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -307,17 +307,19 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance
|
||||
public void run()
|
||||
{
|
||||
int fuel = getFuel();
|
||||
if (fuel > 0)
|
||||
if (fuel <= 0)
|
||||
{
|
||||
fuel -= 10;
|
||||
if (fuel < 0)
|
||||
{
|
||||
fuel = 0;
|
||||
}
|
||||
|
||||
setFuel(fuel);
|
||||
updateAbnormalVisualEffects();
|
||||
return;
|
||||
}
|
||||
|
||||
fuel -= 10;
|
||||
if (fuel < 0)
|
||||
{
|
||||
fuel = 0;
|
||||
}
|
||||
|
||||
setFuel(fuel);
|
||||
updateAbnormalVisualEffects();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -350,11 +350,12 @@ public final class L2CubicInstance implements IIdentifiable
|
||||
|
||||
public void cancelDisappear()
|
||||
{
|
||||
if (_disappearTask != null)
|
||||
if (_disappearTask == null)
|
||||
{
|
||||
_disappearTask.cancel(true);
|
||||
_disappearTask = null;
|
||||
return;
|
||||
}
|
||||
_disappearTask.cancel(true);
|
||||
_disappearTask = null;
|
||||
}
|
||||
|
||||
/** this sets the enemy target for a cubic */
|
||||
@@ -431,12 +432,9 @@ public final class L2CubicInstance implements IIdentifiable
|
||||
_target = PlayerA;
|
||||
}
|
||||
}
|
||||
if ((_target == PlayerA) || (_target == PlayerB))
|
||||
if (((_target == PlayerA) || (_target == PlayerB)) && (_target == ownerTarget))
|
||||
{
|
||||
if (_target == ownerTarget)
|
||||
{
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (partyEnemy != null)
|
||||
{
|
||||
@@ -463,15 +461,12 @@ public final class L2CubicInstance implements IIdentifiable
|
||||
// Olympiad targeting
|
||||
if (_owner.isInOlympiadMode())
|
||||
{
|
||||
if (_owner.isOlympiadStart())
|
||||
if (_owner.isOlympiadStart() && ownerTarget.isPlayable())
|
||||
{
|
||||
if (ownerTarget.isPlayable())
|
||||
final L2PcInstance targetPlayer = ownerTarget.getActingPlayer();
|
||||
if ((targetPlayer != null) && (targetPlayer.getOlympiadGameId() == _owner.getOlympiadGameId()) && (targetPlayer.getOlympiadSide() != _owner.getOlympiadSide()))
|
||||
{
|
||||
final L2PcInstance targetPlayer = ownerTarget.getActingPlayer();
|
||||
if ((targetPlayer != null) && (targetPlayer.getOlympiadGameId() == _owner.getOlympiadGameId()) && (targetPlayer.getOlympiadSide() != _owner.getOlympiadSide()))
|
||||
{
|
||||
_target = (L2Character) ownerTarget;
|
||||
}
|
||||
_target = (L2Character) ownerTarget;
|
||||
}
|
||||
}
|
||||
return;
|
||||
@@ -527,12 +522,9 @@ public final class L2CubicInstance implements IIdentifiable
|
||||
{
|
||||
targetIt = false;
|
||||
}
|
||||
else if (_owner.getParty().getCommandChannel() != null)
|
||||
else if ((_owner.getParty().getCommandChannel() != null) && _owner.getParty().getCommandChannel().getMembers().contains(enemy))
|
||||
{
|
||||
if (_owner.getParty().getCommandChannel().getMembers().contains(enemy))
|
||||
{
|
||||
targetIt = false;
|
||||
}
|
||||
targetIt = false;
|
||||
}
|
||||
}
|
||||
if ((_owner.getClan() != null) && !_owner.isInsideZone(ZoneId.PVP))
|
||||
@@ -541,12 +533,9 @@ public final class L2CubicInstance implements IIdentifiable
|
||||
{
|
||||
targetIt = false;
|
||||
}
|
||||
if ((_owner.getAllyId() > 0) && (enemy.getAllyId() > 0))
|
||||
if ((_owner.getAllyId() > 0) && (enemy.getAllyId() > 0) && (_owner.getAllyId() == enemy.getAllyId()))
|
||||
{
|
||||
if (_owner.getAllyId() == enemy.getAllyId())
|
||||
{
|
||||
targetIt = false;
|
||||
}
|
||||
targetIt = false;
|
||||
}
|
||||
}
|
||||
if ((enemy.getPvpFlag() == 0) && !enemy.isInsideZone(ZoneId.PVP))
|
||||
@@ -814,16 +803,9 @@ public final class L2CubicInstance implements IIdentifiable
|
||||
{
|
||||
L2Character target = null;
|
||||
double percentleft = 100.0;
|
||||
L2Party party = _owner.getParty();
|
||||
|
||||
// if owner is in a duel but not in a party duel, then it is the same as he does not have a party
|
||||
if (_owner.isInDuel())
|
||||
{
|
||||
if (!DuelManager.getInstance().getDuel(_owner.getDuelId()).isPartyDuel())
|
||||
{
|
||||
party = null;
|
||||
}
|
||||
}
|
||||
final L2Party party = _owner.isInDuel() && !DuelManager.getInstance().getDuel(_owner.getDuelId()).isPartyDuel() ? null : _owner.getParty();
|
||||
|
||||
if ((party != null) && !_owner.isInOlympiadMode())
|
||||
{
|
||||
@@ -831,22 +813,10 @@ public final class L2CubicInstance implements IIdentifiable
|
||||
// Get a list of Party Members
|
||||
for (L2Character partyMember : party.getMembers())
|
||||
{
|
||||
if (!partyMember.isDead())
|
||||
if (!partyMember.isDead() && isInCubicRange(_owner, partyMember) && (partyMember.getCurrentHp() < partyMember.getMaxHp()) && (percentleft > (partyMember.getCurrentHp() / partyMember.getMaxHp())))
|
||||
{
|
||||
// if party member not dead, check if he is in cast range of heal cubic
|
||||
if (isInCubicRange(_owner, partyMember))
|
||||
{
|
||||
// member is in cubic casting range, check if he need heal and if he have
|
||||
// the lowest HP
|
||||
if (partyMember.getCurrentHp() < partyMember.getMaxHp())
|
||||
{
|
||||
if (percentleft > (partyMember.getCurrentHp() / partyMember.getMaxHp()))
|
||||
{
|
||||
percentleft = (partyMember.getCurrentHp() / partyMember.getMaxHp());
|
||||
target = partyMember;
|
||||
}
|
||||
}
|
||||
}
|
||||
percentleft = (partyMember.getCurrentHp() / partyMember.getMaxHp());
|
||||
target = partyMember;
|
||||
}
|
||||
final L2Summon pet = partyMember.getPet();
|
||||
if (pet != null)
|
||||
@@ -858,13 +828,10 @@ public final class L2CubicInstance implements IIdentifiable
|
||||
|
||||
// member's pet is in cubic casting range, check if he need heal and if he have
|
||||
// the lowest HP
|
||||
if (pet.getCurrentHp() < pet.getMaxHp())
|
||||
if ((pet.getCurrentHp() < pet.getMaxHp()) && (percentleft > (pet.getCurrentHp() / pet.getMaxHp())))
|
||||
{
|
||||
if (percentleft > (pet.getCurrentHp() / pet.getMaxHp()))
|
||||
{
|
||||
percentleft = (pet.getCurrentHp() / pet.getMaxHp());
|
||||
target = pet;
|
||||
}
|
||||
percentleft = (pet.getCurrentHp() / pet.getMaxHp());
|
||||
target = pet;
|
||||
}
|
||||
}
|
||||
for (L2Summon s : partyMember.getServitors().values())
|
||||
@@ -876,13 +843,10 @@ public final class L2CubicInstance implements IIdentifiable
|
||||
|
||||
// member's pet is in cubic casting range, check if he need heal and if he have
|
||||
// the lowest HP
|
||||
if (s.getCurrentHp() < s.getMaxHp())
|
||||
if ((s.getCurrentHp() < s.getMaxHp()) && (percentleft > (s.getCurrentHp() / s.getMaxHp())))
|
||||
{
|
||||
if (percentleft > (s.getCurrentHp() / s.getMaxHp()))
|
||||
{
|
||||
percentleft = (s.getCurrentHp() / s.getMaxHp());
|
||||
target = s;
|
||||
}
|
||||
percentleft = (s.getCurrentHp() / s.getMaxHp());
|
||||
target = s;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -902,12 +866,9 @@ public final class L2CubicInstance implements IIdentifiable
|
||||
}
|
||||
}
|
||||
final L2Summon pet = _owner.getPet();
|
||||
if (pet != null)
|
||||
if ((pet != null) && !pet.isDead() && (pet.getCurrentHp() < pet.getMaxHp()) && (percentleft > (pet.getCurrentHp() / pet.getMaxHp())) && isInCubicRange(_owner, pet))
|
||||
{
|
||||
if (!pet.isDead() && (pet.getCurrentHp() < pet.getMaxHp()) && (percentleft > (pet.getCurrentHp() / pet.getMaxHp())) && isInCubicRange(_owner, pet))
|
||||
{
|
||||
target = _owner.getPet();
|
||||
}
|
||||
target = _owner.getPet();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -100,8 +100,7 @@ public class L2DecoyInstance extends L2Decoy
|
||||
try
|
||||
{
|
||||
_Decoy.decTimeRemaining(1000);
|
||||
final double newTimeRemaining = _Decoy.getTimeRemaining();
|
||||
if (newTimeRemaining < 0)
|
||||
if (_Decoy.getTimeRemaining() < 0)
|
||||
{
|
||||
_Decoy.unSummon(_activeChar);
|
||||
}
|
||||
|
||||
@@ -118,27 +118,19 @@ public class L2DefenderInstance extends L2Attackable
|
||||
@Override
|
||||
public void returnHome()
|
||||
{
|
||||
if (getWalkSpeed() <= 0)
|
||||
if ((getWalkSpeed() <= 0) || (getSpawn() == null) || isInsideRadius(getSpawn(), 40, false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (getSpawn() == null)
|
||||
if (Config.DEBUG)
|
||||
{
|
||||
return;
|
||||
_log.info(getObjectId() + ": moving home");
|
||||
}
|
||||
if (!isInsideRadius(getSpawn(), 40, false, false))
|
||||
setisReturningToSpawnPoint(true);
|
||||
clearAggroList();
|
||||
if (hasAI())
|
||||
{
|
||||
if (Config.DEBUG)
|
||||
{
|
||||
_log.info(getObjectId() + ": moving home");
|
||||
}
|
||||
setisReturningToSpawnPoint(true);
|
||||
clearAggroList();
|
||||
|
||||
if (hasAI())
|
||||
{
|
||||
getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, getSpawn().getLocation());
|
||||
}
|
||||
getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, getSpawn().getLocation());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,20 +173,14 @@ public class L2DefenderInstance extends L2Attackable
|
||||
}
|
||||
else if (interact)
|
||||
{
|
||||
if (isAutoAttackable(player) && !isAlikeDead())
|
||||
if (isAutoAttackable(player) && !isAlikeDead() && (Math.abs(player.getZ() - getZ()) < 600)) // this max heigth difference might need some tweaking
|
||||
{
|
||||
if (Math.abs(player.getZ() - getZ()) < 600) // this max heigth difference might need some tweaking
|
||||
{
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, this);
|
||||
}
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, this);
|
||||
}
|
||||
if (!isAutoAttackable(player))
|
||||
if (!isAutoAttackable(player) && !canInteract(player))
|
||||
{
|
||||
if (!canInteract(player))
|
||||
{
|
||||
// Notify the L2PcInstance AI with AI_INTENTION_INTERACT
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
|
||||
}
|
||||
// Notify the L2PcInstance AI with AI_INTENTION_INTERACT
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
|
||||
}
|
||||
}
|
||||
// Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
|
||||
|
||||
@@ -102,15 +102,17 @@ public class L2DoorInstance extends L2Character
|
||||
}
|
||||
|
||||
final int clanhallId = template.getClanHallId();
|
||||
if (clanhallId > 0)
|
||||
if (clanhallId <= 0)
|
||||
{
|
||||
final ClanHall hall = ClanHallManager.getAllClanHalls().get(clanhallId);
|
||||
if (hall != null)
|
||||
{
|
||||
setClanHall(hall);
|
||||
hall.getDoors().add(this);
|
||||
}
|
||||
return;
|
||||
}
|
||||
final ClanHall hall = ClanHallManager.getAllClanHalls().get(clanhallId);
|
||||
if (hall == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
setClanHall(hall);
|
||||
hall.getDoors().add(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -241,17 +243,18 @@ public class L2DoorInstance extends L2Character
|
||||
public void setOpen(boolean open)
|
||||
{
|
||||
_open = open;
|
||||
if (getChildId() > 0)
|
||||
if (getChildId() <= 0)
|
||||
{
|
||||
final L2DoorInstance sibling = getSiblingDoor(getChildId());
|
||||
if (sibling != null)
|
||||
{
|
||||
sibling.notifyChildEvent(open);
|
||||
}
|
||||
else
|
||||
{
|
||||
_log.log(Level.WARNING, getClass().getSimpleName() + ": Cannot find child id: " + getChildId());
|
||||
}
|
||||
return;
|
||||
}
|
||||
final L2DoorInstance sibling = getSiblingDoor(getChildId());
|
||||
if (sibling != null)
|
||||
{
|
||||
sibling.notifyChildEvent(open);
|
||||
}
|
||||
else
|
||||
{
|
||||
_log.log(Level.WARNING, getClass().getSimpleName() + ": Cannot find child id: " + getChildId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -291,11 +294,7 @@ public class L2DoorInstance extends L2Character
|
||||
{
|
||||
_castleIndex = CastleManager.getInstance().getCastleIndex(this);
|
||||
}
|
||||
if (_castleIndex < 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return CastleManager.getInstance().getCastles().get(_castleIndex);
|
||||
return _castleIndex < 0 ? null : CastleManager.getInstance().getCastles().get(_castleIndex);
|
||||
}
|
||||
|
||||
// TODO: Replace index with the fort id itself.
|
||||
@@ -305,11 +304,7 @@ public class L2DoorInstance extends L2Character
|
||||
{
|
||||
_fortIndex = FortManager.getInstance().getFortIndex(this);
|
||||
}
|
||||
if (_fortIndex < 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return FortManager.getInstance().getForts().get(_fortIndex);
|
||||
return _fortIndex < 0 ? null : FortManager.getInstance().getForts().get(_fortIndex);
|
||||
}
|
||||
|
||||
public void setClanHall(ClanHall clanhall)
|
||||
@@ -324,15 +319,9 @@ public class L2DoorInstance extends L2Character
|
||||
|
||||
public boolean isEnemy()
|
||||
{
|
||||
if ((getCastle() != null) && (getCastle().getResidenceId() > 0) && getCastle().getZone().isActive() && getIsShowHp())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ((getFort() != null) && (getFort().getResidenceId() > 0) && getFort().getZone().isActive() && getIsShowHp())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ((getClanHall() != null) && getClanHall().isSiegableHall() && ((SiegableHall) getClanHall()).getSiegeZone().isActive() && getIsShowHp())
|
||||
if (((getCastle() != null) && (getCastle().getResidenceId() > 0) && getCastle().getZone().isActive() && getIsShowHp())//
|
||||
|| ((getFort() != null) && (getFort().getResidenceId() > 0) && getFort().getZone().isActive() && getIsShowHp())//
|
||||
|| ((getClanHall() != null) && getClanHall().isSiegableHall() && ((SiegableHall) getClanHall()).getSiegeZone().isActive() && getIsShowHp()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -435,12 +424,7 @@ public class L2DoorInstance extends L2Character
|
||||
final StaticObject su = new StaticObject(this, false);
|
||||
final StaticObject targetableSu = new StaticObject(this, true);
|
||||
final DoorStatusUpdate dsu = new DoorStatusUpdate(this);
|
||||
OnEventTrigger oe = null;
|
||||
if (getEmitter() > 0)
|
||||
{
|
||||
oe = new OnEventTrigger(getEmitter(), getOpen());
|
||||
}
|
||||
|
||||
final OnEventTrigger oe = getEmitter() > 0 ? new OnEventTrigger(getEmitter(), getOpen()) : null;
|
||||
for (L2PcInstance player : knownPlayers)
|
||||
{
|
||||
if ((player == null) || !isVisibleFor(player))
|
||||
@@ -618,20 +602,10 @@ public class L2DoorInstance extends L2Character
|
||||
@Override
|
||||
public void reduceCurrentHp(double damage, L2Character attacker, boolean awake, boolean isDOT, Skill skill)
|
||||
{
|
||||
if (isWall() && (getInstanceId() == 0))
|
||||
if (isWall() && (getInstanceId() == 0) && (!attacker.isServitor() || (((L2ServitorInstance) attacker).getTemplate().getRace() != Race.SIEGE_WEAPON)))
|
||||
{
|
||||
if (!attacker.isServitor())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final L2ServitorInstance servitor = (L2ServitorInstance) attacker;
|
||||
if (servitor.getTemplate().getRace() != Race.SIEGE_WEAPON)
|
||||
{
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
super.reduceCurrentHp(damage, attacker, awake, isDOT, skill);
|
||||
}
|
||||
|
||||
@@ -683,15 +657,15 @@ public class L2DoorInstance extends L2Character
|
||||
@Override
|
||||
public void sendInfo(L2PcInstance activeChar)
|
||||
{
|
||||
if (isVisibleFor(activeChar))
|
||||
if (!isVisibleFor(activeChar))
|
||||
{
|
||||
if (getEmitter() > 0)
|
||||
{
|
||||
activeChar.sendPacket(new OnEventTrigger(getEmitter(), getOpen()));
|
||||
}
|
||||
|
||||
activeChar.sendPacket(new StaticObject(this, activeChar.isGM()));
|
||||
return;
|
||||
}
|
||||
if (getEmitter() > 0)
|
||||
{
|
||||
activeChar.sendPacket(new OnEventTrigger(getEmitter(), getOpen()));
|
||||
}
|
||||
activeChar.sendPacket(new StaticObject(this, activeChar.isGM()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -723,14 +697,8 @@ public class L2DoorInstance extends L2Character
|
||||
{
|
||||
return DoorData.getInstance().getDoor(doorId);
|
||||
}
|
||||
|
||||
final Instance inst = InstanceManager.getInstance().getInstance(getInstanceId());
|
||||
if (inst != null)
|
||||
{
|
||||
return inst.getDoor(doorId);
|
||||
}
|
||||
|
||||
return null; // 2 late
|
||||
return inst != null ? inst.getDoor(doorId) : null;
|
||||
}
|
||||
|
||||
private void startAutoCloseTask()
|
||||
|
||||
@@ -46,7 +46,7 @@ public class L2DoormenInstance extends L2NpcInstance
|
||||
showChatWindow(player);
|
||||
return;
|
||||
}
|
||||
else if (command.startsWith("open_doors"))
|
||||
if (command.startsWith("open_doors"))
|
||||
{
|
||||
if (isOwnerClan(player))
|
||||
{
|
||||
@@ -61,7 +61,7 @@ public class L2DoormenInstance extends L2NpcInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (command.startsWith("close_doors"))
|
||||
if (command.startsWith("close_doors"))
|
||||
{
|
||||
if (isOwnerClan(player))
|
||||
{
|
||||
@@ -76,7 +76,7 @@ public class L2DoormenInstance extends L2NpcInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (command.startsWith("tele"))
|
||||
if (command.startsWith("tele"))
|
||||
{
|
||||
if (isOwnerClan(player))
|
||||
{
|
||||
|
||||
@@ -46,18 +46,7 @@ public final class L2FishermanInstance extends L2MerchantInstance
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
|
||||
return "html/fisherman/" + pom + ".htm";
|
||||
return "html/fisherman/" + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -62,8 +62,7 @@ public class L2FlameTowerInstance extends L2Tower
|
||||
{
|
||||
if ((_zoneList != null) && (_upgradeLevel != 0))
|
||||
{
|
||||
final int maxIndex = _upgradeLevel * 2;
|
||||
for (int i = 0; i < maxIndex; i++)
|
||||
for (int i = 0; i < (_upgradeLevel * 2); i++)
|
||||
{
|
||||
final L2ZoneType zone = ZoneManager.getInstance().getZoneById(_zoneList.get(i));
|
||||
if (zone != null)
|
||||
|
||||
@@ -16,8 +16,6 @@
|
||||
*/
|
||||
package com.l2jmobius.gameserver.model.actor.instance;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.ThreadPoolManager;
|
||||
import com.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
@@ -60,10 +58,8 @@ public class L2FortCommanderInstance extends L2DefenderInstance
|
||||
return false;
|
||||
}
|
||||
|
||||
final boolean isFort = ((getFort() != null) && (getFort().getResidenceId() > 0) && getFort().getSiege().isInProgress() && !getFort().getSiege().checkIsDefender(((L2PcInstance) attacker).getClan()));
|
||||
|
||||
// Attackable during siege by all except defenders
|
||||
return (isFort);
|
||||
return ((getFort() != null) && (getFort().getResidenceId() > 0) && getFort().getSiege().isInProgress() && !getFort().getSiege().checkIsDefender(((L2PcInstance) attacker).getClan()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -102,19 +98,19 @@ public class L2FortCommanderInstance extends L2DefenderInstance
|
||||
@Override
|
||||
public void returnHome()
|
||||
{
|
||||
if (!isInsideRadius(getSpawn(), 200, false, false))
|
||||
if (isInsideRadius(getSpawn(), 200, false, false))
|
||||
{
|
||||
if (Config.DEBUG)
|
||||
{
|
||||
_log.info(getObjectId() + ": moving home");
|
||||
}
|
||||
setisReturningToSpawnPoint(true);
|
||||
clearAggroList();
|
||||
|
||||
if (hasAI())
|
||||
{
|
||||
getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, getSpawn().getLocation());
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (Config.DEBUG)
|
||||
{
|
||||
_log.info(getObjectId() + ": moving home");
|
||||
}
|
||||
setisReturningToSpawnPoint(true);
|
||||
clearAggroList();
|
||||
if (hasAI())
|
||||
{
|
||||
getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, getSpawn().getLocation());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,8 +120,7 @@ public class L2FortCommanderInstance extends L2DefenderInstance
|
||||
final L2Spawn spawn = getSpawn();
|
||||
if ((spawn != null) && canTalk())
|
||||
{
|
||||
final List<FortSiegeSpawn> commanders = FortSiegeManager.getInstance().getCommanderSpawnList(getFort().getResidenceId());
|
||||
for (FortSiegeSpawn spawn2 : commanders)
|
||||
for (FortSiegeSpawn spawn2 : FortSiegeManager.getInstance().getCommanderSpawnList(getFort().getResidenceId()))
|
||||
{
|
||||
if (spawn2.getId() == spawn.getId())
|
||||
{
|
||||
@@ -159,7 +154,6 @@ public class L2FortCommanderInstance extends L2DefenderInstance
|
||||
{
|
||||
ns.addStringParameter(attacker.getName());
|
||||
}
|
||||
|
||||
broadcastPacket(ns);
|
||||
setCanTalk(false);
|
||||
ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 10000);
|
||||
|
||||
@@ -86,14 +86,7 @@ public class L2FortDoormenInstance extends L2DoormenInstance
|
||||
@Override
|
||||
protected final boolean isOwnerClan(L2PcInstance player)
|
||||
{
|
||||
if ((player.getClan() != null) && (getFort() != null) && (getFort().getOwnerClan() != null))
|
||||
{
|
||||
if (player.getClanId() == getFort().getOwnerClan().getId())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return (player.getClan() != null) && (getFort() != null) && (getFort().getOwnerClan() != null) && (player.getClanId() == getFort().getOwnerClan().getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -189,47 +189,20 @@ public class L2FortLogisticsInstance extends L2MerchantInstance
|
||||
{
|
||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
|
||||
String filename;
|
||||
|
||||
if (val == 0)
|
||||
{
|
||||
filename = "html/fortress/logistics.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
filename = "html/fortress/logistics-" + val + ".htm";
|
||||
}
|
||||
final String filename = val == 0 ? "html/fortress/logistics.htm" : "html/fortress/logistics-" + val + ".htm";
|
||||
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), filename);
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
html.replace("%npcId%", String.valueOf(getId()));
|
||||
if (getFort().getOwnerClan() != null)
|
||||
{
|
||||
html.replace("%clanname%", getFort().getOwnerClan().getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
html.replace("%clanname%", "NPC");
|
||||
}
|
||||
html.replace("%clanname%", getFort().getOwnerClan() != null ? getFort().getOwnerClan().getName() : "NPC");
|
||||
player.sendPacket(html);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "logistics";
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = "logistics-" + val;
|
||||
}
|
||||
|
||||
return "html/fortress/" + pom + ".htm";
|
||||
return "html/fortress/" + (val == 0 ? "logistics" : "logistics-" + val) + ".htm";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -92,30 +92,16 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
final StringTokenizer st = new StringTokenizer(command, " ");
|
||||
final String actualCommand = st.nextToken(); // Get actual command
|
||||
|
||||
String val = "";
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
val = st.nextToken();
|
||||
}
|
||||
String val = st.countTokens() >= 1 ? st.nextToken() : "";
|
||||
if (actualCommand.equalsIgnoreCase("expel"))
|
||||
{
|
||||
if (player.hasClanPrivilege(ClanPrivilege.CS_DISMISS))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/foreman-expel.htm");
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
player.sendPacket(html);
|
||||
}
|
||||
else
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/foreman-noprivs.htm");
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
player.sendPacket(html);
|
||||
}
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), player.hasClanPrivilege(ClanPrivilege.CS_DISMISS) ? "html/fortress/foreman-expel.htm" : "html/fortress/foreman-noprivs.htm");
|
||||
player.sendPacket(html);
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("banish_foreigner"))
|
||||
if (actualCommand.equalsIgnoreCase("banish_foreigner"))
|
||||
{
|
||||
if (player.hasClanPrivilege(ClanPrivilege.CS_DISMISS))
|
||||
{
|
||||
@@ -134,7 +120,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("receive_report"))
|
||||
if (actualCommand.equalsIgnoreCase("receive_report"))
|
||||
{
|
||||
if (getFort().getFortState() < 2)
|
||||
{
|
||||
@@ -167,16 +153,14 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
hour = (int) Math.floor(getFort().getTimeTillRebelArmy() / 3600);
|
||||
minutes = (int) (Math.floor(getFort().getTimeTillRebelArmy() - (hour * 3600)) / 60);
|
||||
html.replace("%hr%", String.valueOf(hour));
|
||||
html.replace("%min%", String.valueOf(minutes));
|
||||
}
|
||||
else
|
||||
{
|
||||
hour = (int) Math.floor(getFort().getOwnedTime() / 3600);
|
||||
minutes = (int) (Math.floor(getFort().getOwnedTime() - (hour * 3600)) / 60);
|
||||
html.replace("%hr%", String.valueOf(hour));
|
||||
html.replace("%min%", String.valueOf(minutes));
|
||||
}
|
||||
html.replace("%min%", String.valueOf(minutes));
|
||||
html.replace("%hr%", String.valueOf(hour));
|
||||
hour = (int) Math.floor(getFort().getTimeTillNextFortUpdate() / 3600);
|
||||
minutes = (int) (Math.floor(getFort().getTimeTillNextFortUpdate() - (hour * 3600)) / 60);
|
||||
html.replace("%castle%", getFort().getContractedCastle().getName());
|
||||
@@ -186,8 +170,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("operate_door")) // door
|
||||
// control
|
||||
if (actualCommand.equalsIgnoreCase("operate_door"))
|
||||
{
|
||||
if (player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR))
|
||||
{
|
||||
@@ -198,20 +181,10 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
getFort().openCloseDoor(player, Integer.parseInt(st.nextToken()), open);
|
||||
}
|
||||
if (open)
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/foreman-opened.htm");
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
player.sendPacket(html);
|
||||
}
|
||||
else
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/foreman-closed.htm");
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
player.sendPacket(html);
|
||||
}
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), open ? "html/fortress/foreman-opened.htm" : "html/fortress/foreman-closed.htm");
|
||||
player.sendPacket(html);
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -231,7 +204,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("manage_vault"))
|
||||
if (actualCommand.equalsIgnoreCase("manage_vault"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
if (player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE))
|
||||
@@ -276,36 +249,25 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.startsWith("WithdrawSortedC"))
|
||||
if (actualCommand.startsWith("WithdrawSortedC"))
|
||||
{
|
||||
final String param[] = command.split("_");
|
||||
if (param.length > 2)
|
||||
{
|
||||
showVaultWindowWithdraw(player, WarehouseListType.valueOf(param[1]), SortedWareHouseWithdrawalList.getOrder(param[2]));
|
||||
}
|
||||
else if (param.length > 1)
|
||||
{
|
||||
showVaultWindowWithdraw(player, WarehouseListType.valueOf(param[1]), SortedWareHouseWithdrawalList.A2Z);
|
||||
}
|
||||
else
|
||||
{
|
||||
showVaultWindowWithdraw(player, WarehouseListType.ALL, SortedWareHouseWithdrawalList.A2Z);
|
||||
showVaultWindowWithdraw(player, param.length > 1 ? WarehouseListType.valueOf(param[1]) : WarehouseListType.ALL, SortedWareHouseWithdrawalList.A2Z);
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("functions"))
|
||||
if (actualCommand.equalsIgnoreCase("functions"))
|
||||
{
|
||||
if (val.equalsIgnoreCase("tele"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
if (getFort().getFunction(Fort.FUNC_TELEPORT) == null)
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/foreman-nac.htm");
|
||||
}
|
||||
else
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/" + getId() + "-t" + getFort().getFunction(Fort.FUNC_TELEPORT).getLvl() + ".htm");
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), getFort().getFunction(Fort.FUNC_TELEPORT) == null ? "html/fortress/foreman-nac.htm" : "html/fortress/" + getId() + "-t" + getFort().getFunction(Fort.FUNC_TELEPORT).getLvl() + ".htm");
|
||||
sendHtmlMessage(player, html);
|
||||
}
|
||||
else if (val.equalsIgnoreCase("support"))
|
||||
@@ -330,35 +292,14 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/foreman-functions.htm");
|
||||
if (getFort().getFunction(Fort.FUNC_RESTORE_EXP) != null)
|
||||
{
|
||||
html.replace("%xp_regen%", String.valueOf(getFort().getFunction(Fort.FUNC_RESTORE_EXP).getLvl()));
|
||||
}
|
||||
else
|
||||
{
|
||||
html.replace("%xp_regen%", "0");
|
||||
}
|
||||
if (getFort().getFunction(Fort.FUNC_RESTORE_HP) != null)
|
||||
{
|
||||
html.replace("%hp_regen%", String.valueOf(getFort().getFunction(Fort.FUNC_RESTORE_HP).getLvl()));
|
||||
}
|
||||
else
|
||||
{
|
||||
html.replace("%hp_regen%", "0");
|
||||
}
|
||||
if (getFort().getFunction(Fort.FUNC_RESTORE_MP) != null)
|
||||
{
|
||||
html.replace("%mp_regen%", String.valueOf(getFort().getFunction(Fort.FUNC_RESTORE_MP).getLvl()));
|
||||
}
|
||||
else
|
||||
{
|
||||
html.replace("%mp_regen%", "0");
|
||||
}
|
||||
html.replace("%xp_regen%", getFort().getFunction(Fort.FUNC_RESTORE_EXP) != null ? String.valueOf(getFort().getFunction(Fort.FUNC_RESTORE_EXP).getLvl()) : "0");
|
||||
html.replace("%hp_regen%", getFort().getFunction(Fort.FUNC_RESTORE_HP) != null ? String.valueOf(getFort().getFunction(Fort.FUNC_RESTORE_HP).getLvl()) : "0");
|
||||
html.replace("%mp_regen%", getFort().getFunction(Fort.FUNC_RESTORE_MP) != null ? String.valueOf(getFort().getFunction(Fort.FUNC_RESTORE_MP).getLvl()) : "0");
|
||||
sendHtmlMessage(player, html);
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("manage"))
|
||||
if (actualCommand.equalsIgnoreCase("manage"))
|
||||
{
|
||||
if (player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS))
|
||||
{
|
||||
@@ -380,7 +321,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("mp_cancel"))
|
||||
if (val.equalsIgnoreCase("mp_cancel"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-cancel.htm");
|
||||
@@ -388,7 +329,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("exp_cancel"))
|
||||
if (val.equalsIgnoreCase("exp_cancel"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-cancel.htm");
|
||||
@@ -396,7 +337,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_hp"))
|
||||
if (val.equalsIgnoreCase("edit_hp"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -417,14 +358,13 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
html.replace("%cost%", String.valueOf(cost) + "</font>Adena /" + String.valueOf(Config.FS_HPREG_FEE_RATIO / 1000 / 60 / 60 / 24) + " Day</font>)");
|
||||
html.replace("%use%", "Provides additional HP recovery for clan members in the fortress.<font color=\"00FFFF\">" + String.valueOf(percent) + "%</font>");
|
||||
html.replace("%apply%", "recovery hp " + String.valueOf(percent));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_mp"))
|
||||
if (val.equalsIgnoreCase("edit_mp"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -451,7 +391,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_exp"))
|
||||
if (val.equalsIgnoreCase("edit_exp"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -478,7 +418,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("hp"))
|
||||
if (val.equalsIgnoreCase("hp"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -490,15 +430,12 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-apply_confirmed.htm");
|
||||
if (getFort().getFunction(Fort.FUNC_RESTORE_HP) != null)
|
||||
if ((getFort().getFunction(Fort.FUNC_RESTORE_HP) != null) && (getFort().getFunction(Fort.FUNC_RESTORE_HP).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getFort().getFunction(Fort.FUNC_RESTORE_HP).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int percent = Integer.parseInt(val);
|
||||
switch (percent)
|
||||
@@ -529,7 +466,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("mp"))
|
||||
if (val.equalsIgnoreCase("mp"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -541,15 +478,12 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-apply_confirmed.htm");
|
||||
if (getFort().getFunction(Fort.FUNC_RESTORE_MP) != null)
|
||||
if ((getFort().getFunction(Fort.FUNC_RESTORE_MP) != null) && (getFort().getFunction(Fort.FUNC_RESTORE_MP).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getFort().getFunction(Fort.FUNC_RESTORE_MP).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int percent = Integer.parseInt(val);
|
||||
switch (percent)
|
||||
@@ -580,7 +514,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("exp"))
|
||||
if (val.equalsIgnoreCase("exp"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -592,15 +526,12 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-apply_confirmed.htm");
|
||||
if (getFort().getFunction(Fort.FUNC_RESTORE_EXP) != null)
|
||||
if ((getFort().getFunction(Fort.FUNC_RESTORE_EXP) != null) && (getFort().getFunction(Fort.FUNC_RESTORE_EXP).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getFort().getFunction(Fort.FUNC_RESTORE_EXP).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-used.htm");
|
||||
html.replace("%val%", String.valueOf(val) + "%");
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int percent = Integer.parseInt(val);
|
||||
switch (percent)
|
||||
@@ -693,7 +624,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("support_cancel"))
|
||||
if (val.equalsIgnoreCase("support_cancel"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-cancel.htm");
|
||||
@@ -701,7 +632,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_support"))
|
||||
if (val.equalsIgnoreCase("edit_support"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -728,7 +659,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("edit_tele"))
|
||||
if (val.equalsIgnoreCase("edit_tele"))
|
||||
{
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -755,7 +686,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("tele"))
|
||||
if (val.equalsIgnoreCase("tele"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -767,15 +698,12 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-apply_confirmed.htm");
|
||||
if (getFort().getFunction(Fort.FUNC_TELEPORT) != null)
|
||||
if ((getFort().getFunction(Fort.FUNC_TELEPORT) != null) && (getFort().getFunction(Fort.FUNC_TELEPORT).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getFort().getFunction(Fort.FUNC_TELEPORT).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int lvl = Integer.parseInt(val);
|
||||
switch (lvl)
|
||||
@@ -806,7 +734,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (val.equalsIgnoreCase("support"))
|
||||
if (val.equalsIgnoreCase("support"))
|
||||
{
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
@@ -818,15 +746,12 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
val = st.nextToken();
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-apply_confirmed.htm");
|
||||
if (getFort().getFunction(Fort.FUNC_SUPPORT) != null)
|
||||
if ((getFort().getFunction(Fort.FUNC_SUPPORT) != null) && (getFort().getFunction(Fort.FUNC_SUPPORT).getLvl() == Integer.parseInt(val)))
|
||||
{
|
||||
if (getFort().getFunction(Fort.FUNC_SUPPORT).getLvl() == Integer.parseInt(val))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/functions-used.htm");
|
||||
html.replace("%val%", "Stage " + String.valueOf(val));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
final int lvl = Integer.parseInt(val);
|
||||
switch (lvl)
|
||||
@@ -851,12 +776,8 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
if (!getFort().updateFunctions(player, Fort.FUNC_SUPPORT, lvl, fee, Config.FS_SUPPORT_FEE_RATIO, (getFort().getFunction(Fort.FUNC_SUPPORT) == null)))
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/low_adena.htm");
|
||||
sendHtmlMessage(player, html);
|
||||
}
|
||||
else
|
||||
{
|
||||
sendHtmlMessage(player, html);
|
||||
}
|
||||
sendHtmlMessage(player, html);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -910,7 +831,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("support"))
|
||||
if (actualCommand.equalsIgnoreCase("support"))
|
||||
{
|
||||
setTarget(player);
|
||||
Skill skill;
|
||||
@@ -918,26 +839,17 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
final int skill_id = Integer.parseInt(val);
|
||||
try
|
||||
{
|
||||
if (getFort().getFunction(Fort.FUNC_SUPPORT) == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (getFort().getFunction(Fort.FUNC_SUPPORT).getLvl() == 0)
|
||||
if ((getFort().getFunction(Fort.FUNC_SUPPORT) == null) || (getFort().getFunction(Fort.FUNC_SUPPORT).getLvl() == 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
int skill_lvl = 0;
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
skill_lvl = Integer.parseInt(st.nextToken());
|
||||
}
|
||||
final int skill_lvl = st.countTokens() >= 1 ? Integer.parseInt(st.nextToken()) : 0;
|
||||
skill = SkillData.getInstance().getSkill(skill_id, skill_lvl);
|
||||
if (skill.hasEffectType(L2EffectType.SUMMON))
|
||||
{
|
||||
@@ -945,17 +857,14 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!((skill.getMpConsume() + skill.getMpInitialConsume()) > getCurrentMp()))
|
||||
{
|
||||
this.doCast(skill);
|
||||
}
|
||||
else
|
||||
if ((skill.getMpConsume() + skill.getMpInitialConsume()) > getCurrentMp())
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/support-no_mana.htm");
|
||||
html.replace("%mp%", String.valueOf((int) getCurrentMp()));
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
this.doCast(skill);
|
||||
}
|
||||
html.setFile(player.getHtmlPrefix(), "html/fortress/support-done.htm");
|
||||
html.replace("%mp%", String.valueOf((int) getCurrentMp()));
|
||||
@@ -972,7 +881,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("support_back"))
|
||||
if (actualCommand.equalsIgnoreCase("support_back"))
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
if (getFort().getFunction(Fort.FUNC_SUPPORT).getLvl() == 0)
|
||||
@@ -984,7 +893,7 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
sendHtmlMessage(player, html);
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("goto"))
|
||||
if (actualCommand.equalsIgnoreCase("goto"))
|
||||
{
|
||||
final int whereTo = Integer.parseInt(val);
|
||||
doTeleport(player, whereTo);
|
||||
@@ -1047,18 +956,15 @@ public class L2FortManagerInstance extends L2MerchantInstance
|
||||
|
||||
protected int validateCondition(L2PcInstance player)
|
||||
{
|
||||
if ((getFort() != null) && (getFort().getResidenceId() > 0))
|
||||
if ((getFort() != null) && (getFort().getResidenceId() > 0) && (player.getClan() != null))
|
||||
{
|
||||
if (player.getClan() != null)
|
||||
if (getFort().getZone().isActive())
|
||||
{
|
||||
if (getFort().getZone().isActive())
|
||||
{
|
||||
return COND_BUSY_BECAUSE_OF_SIEGE; // Busy because of siege
|
||||
}
|
||||
else if ((getFort().getOwnerClan() != null) && (getFort().getOwnerClan().getId() == player.getClanId()))
|
||||
{
|
||||
return COND_OWNER; // Owner
|
||||
}
|
||||
return COND_BUSY_BECAUSE_OF_SIEGE; // Busy because of siege
|
||||
}
|
||||
if ((getFort().getOwnerClan() != null) && (getFort().getOwnerClan().getId() == player.getClanId()))
|
||||
{
|
||||
return COND_OWNER; // Owner
|
||||
}
|
||||
}
|
||||
return COND_ALL_FALSE;
|
||||
|
||||
@@ -106,16 +106,7 @@ public class L2GuardInstance extends L2Attackable
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
return "html/guard/" + pom + ".htm";
|
||||
return "html/guard/" + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -54,18 +54,7 @@ public class L2MerchantInstance extends L2NpcInstance
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
|
||||
return "html/merchant/" + pom + ".htm";
|
||||
return "html/merchant/" + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -172,14 +172,7 @@ public class L2PetInstance extends L2Summon
|
||||
stopFeed();
|
||||
return;
|
||||
}
|
||||
else if (getCurrentFed() > getFeedConsume())
|
||||
{
|
||||
setCurrentFed(getCurrentFed() - getFeedConsume());
|
||||
}
|
||||
else
|
||||
{
|
||||
setCurrentFed(0);
|
||||
}
|
||||
setCurrentFed(getCurrentFed() > getFeedConsume() ? getCurrentFed() - getFeedConsume() : 0);
|
||||
|
||||
broadcastStatusUpdate();
|
||||
|
||||
@@ -238,12 +231,7 @@ public class L2PetInstance extends L2Summon
|
||||
|
||||
private int getFeedConsume()
|
||||
{
|
||||
// if pet is attacking
|
||||
if (isAttackingNow())
|
||||
{
|
||||
return getPetLevelData().getPetFeedBattle();
|
||||
}
|
||||
return getPetLevelData().getPetFeedNormal();
|
||||
return isAttackingNow() ? getPetLevelData().getPetFeedBattle() : getPetLevelData().getPetFeedNormal();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,13 +334,7 @@ public class L2PetInstance extends L2Summon
|
||||
public L2Weapon getActiveWeaponItem()
|
||||
{
|
||||
final L2ItemInstance weapon = getActiveWeaponInstance();
|
||||
|
||||
if (weapon == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return (L2Weapon) weapon.getItem();
|
||||
return weapon == null ? null : (L2Weapon) weapon.getItem();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -406,19 +388,19 @@ public class L2PetInstance extends L2Summon
|
||||
|
||||
if (sendMessage)
|
||||
{
|
||||
final SystemMessage sm;
|
||||
if (count > 1)
|
||||
{
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_S_DISAPPEARED);
|
||||
sm = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_S_DISAPPEARED);
|
||||
sm.addItemName(item.getId());
|
||||
sm.addLong(count);
|
||||
sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
|
||||
sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
|
||||
sm.addItemName(item.getId());
|
||||
sendPacket(sm);
|
||||
}
|
||||
sendPacket(sm);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -453,19 +435,19 @@ public class L2PetInstance extends L2Summon
|
||||
|
||||
if (sendMessage)
|
||||
{
|
||||
final SystemMessage sm;
|
||||
if (count > 1)
|
||||
{
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_S_DISAPPEARED);
|
||||
sm = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_S_DISAPPEARED);
|
||||
sm.addItemName(item.getId());
|
||||
sm.addLong(count);
|
||||
sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
|
||||
sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
|
||||
sm.addItemName(item.getId());
|
||||
sendPacket(sm);
|
||||
}
|
||||
sendPacket(sm);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -501,7 +483,7 @@ public class L2PetInstance extends L2Summon
|
||||
sendPacket(smsg);
|
||||
return;
|
||||
}
|
||||
else if (FortSiegeManager.getInstance().isCombat(target.getId()))
|
||||
if (FortSiegeManager.getInstance().isCombat(target.getId()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -601,35 +583,30 @@ public class L2PetInstance extends L2Summon
|
||||
smsg.addItemName(target);
|
||||
sendPacket(smsg);
|
||||
}
|
||||
else if (target.getCount() > 1)
|
||||
{
|
||||
smsg = SystemMessage.getSystemMessage(SystemMessageId.YOUR_PET_PICKED_UP_S2_S1_S);
|
||||
smsg.addLong(target.getCount());
|
||||
smsg.addItemName(target);
|
||||
sendPacket(smsg);
|
||||
}
|
||||
else
|
||||
{
|
||||
smsg = SystemMessage.getSystemMessage(SystemMessageId.YOUR_PET_PICKED_UP_S1);
|
||||
smsg.addItemName(target);
|
||||
if (target.getCount() > 1)
|
||||
{
|
||||
smsg = SystemMessage.getSystemMessage(SystemMessageId.YOUR_PET_PICKED_UP_S2_S1_S);
|
||||
smsg.addLong(target.getCount());
|
||||
}
|
||||
else
|
||||
{
|
||||
smsg = SystemMessage.getSystemMessage(SystemMessageId.YOUR_PET_PICKED_UP_S1);
|
||||
}
|
||||
sendPacket(smsg);
|
||||
smsg.addItemName(target);
|
||||
}
|
||||
|
||||
// If owner is in party and it isnt finders keepers, distribute the item instead of stealing it -.-
|
||||
if (getOwner().isInParty() && (getOwner().getParty().getDistributionType() != PartyDistributionType.FINDERS_KEEPERS))
|
||||
{
|
||||
getOwner().getParty().distributeItem(getOwner(), target);
|
||||
}
|
||||
else
|
||||
{
|
||||
final L2ItemInstance item = getInventory().addItem("Pickup", target, getOwner(), this);
|
||||
// sendPacket(new PetItemList(getInventory().getItems()));
|
||||
sendPacket(new PetInventoryUpdate(item));
|
||||
sendPacket(new PetInventoryUpdate(getInventory().addItem("Pickup", target, getOwner(), this)));
|
||||
}
|
||||
}
|
||||
|
||||
getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||
|
||||
if (follow)
|
||||
{
|
||||
followOwner();
|
||||
@@ -824,15 +801,16 @@ public class L2PetInstance extends L2Summon
|
||||
{
|
||||
dropit = getInventory().dropItem("Drop", dropit.getObjectId(), dropit.getCount(), getOwner(), this);
|
||||
|
||||
if (dropit != null)
|
||||
if (dropit == null)
|
||||
{
|
||||
if (protect)
|
||||
{
|
||||
dropit.getDropProtection().protect(getOwner());
|
||||
}
|
||||
_logPet.finer("Item id to drop: " + dropit.getId() + " amount: " + dropit.getCount());
|
||||
dropit.dropMe(this, getX(), getY(), getZ() + 100);
|
||||
return;
|
||||
}
|
||||
if (protect)
|
||||
{
|
||||
dropit.getDropProtection().protect(getOwner());
|
||||
}
|
||||
_logPet.finer("Item id to drop: " + dropit.getId() + " amount: " + dropit.getCount());
|
||||
dropit.dropMe(this, getX(), getY(), getZ() + 100);
|
||||
}
|
||||
|
||||
public void dropItemHere(L2ItemInstance dropit)
|
||||
@@ -942,16 +920,7 @@ public class L2PetInstance extends L2Summon
|
||||
_restoreSummon = false;
|
||||
}
|
||||
|
||||
String req;
|
||||
if (!isRespawned())
|
||||
{
|
||||
req = "INSERT INTO pets (name,level,curHp,curMp,exp,sp,fed,ownerId,restore,item_obj_id) VALUES (?,?,?,?,?,?,?,?,?,?)";
|
||||
}
|
||||
else
|
||||
{
|
||||
req = "UPDATE pets SET name=?,level=?,curHp=?,curMp=?,exp=?,sp=?,fed=?,ownerId=?,restore=? WHERE item_obj_id = ?";
|
||||
}
|
||||
|
||||
final String req = !isRespawned() ? "INSERT INTO pets (name,level,curHp,curMp,exp,sp,fed,ownerId,restore,item_obj_id) VALUES (?,?,?,?,?,?,?,?,?,?)" : "UPDATE pets SET name=?,level=?,curHp=?,curMp=?,exp=?,sp=?,fed=?,ownerId=?,restore=? WHERE item_obj_id = ?";
|
||||
try (Connection con = DatabaseFactory.getInstance().getConnection();
|
||||
PreparedStatement ps = con.prepareStatement(req))
|
||||
{
|
||||
@@ -1025,24 +994,7 @@ public class L2PetInstance extends L2Summon
|
||||
}
|
||||
|
||||
final Skill skill = info.getSkill();
|
||||
// Do not save heals.
|
||||
if (skill.getAbnormalType() == AbnormalType.LIFE_FORCE_OTHERS)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (skill.isToggle())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Dances and songs are not kept in retail.
|
||||
if (skill.isDance() && !Config.ALT_STORE_DANCES)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (storedSkills.contains(skill.getReuseHashCode()))
|
||||
if ((skill.getAbnormalType() == AbnormalType.LIFE_FORCE_OTHERS) || skill.isToggle() || (skill.isDance() && !Config.ALT_STORE_DANCES) || storedSkills.contains(skill.getReuseHashCode()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1111,11 +1063,12 @@ public class L2PetInstance extends L2Summon
|
||||
|
||||
public synchronized void stopFeed()
|
||||
{
|
||||
if (_feedTask != null)
|
||||
if (_feedTask == null)
|
||||
{
|
||||
_feedTask.cancel(false);
|
||||
_feedTask = null;
|
||||
return;
|
||||
}
|
||||
_feedTask.cancel(false);
|
||||
_feedTask = null;
|
||||
}
|
||||
|
||||
public synchronized void startFeed()
|
||||
@@ -1318,32 +1271,20 @@ public class L2PetInstance extends L2Summon
|
||||
public final int getWeapon()
|
||||
{
|
||||
final L2ItemInstance weapon = getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
|
||||
if (weapon != null)
|
||||
{
|
||||
return weapon.getId();
|
||||
}
|
||||
return 0;
|
||||
return weapon != null ? weapon.getId() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int getArmor()
|
||||
{
|
||||
final L2ItemInstance weapon = getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST);
|
||||
if (weapon != null)
|
||||
{
|
||||
return weapon.getId();
|
||||
}
|
||||
return 0;
|
||||
return weapon != null ? weapon.getId() : 0;
|
||||
}
|
||||
|
||||
public final int getJewel()
|
||||
{
|
||||
final L2ItemInstance weapon = getInventory().getPaperdollItem(Inventory.PAPERDOLL_NECK);
|
||||
if (weapon != null)
|
||||
{
|
||||
return weapon.getId();
|
||||
}
|
||||
return 0;
|
||||
return weapon != null ? weapon.getId() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -37,29 +37,13 @@ public class L2PetManagerInstance extends L2MerchantInstance
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
|
||||
return "html/petmanager/" + pom + ".htm";
|
||||
return "html/petmanager/" + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showChatWindow(L2PcInstance player)
|
||||
{
|
||||
String filename = "html/petmanager/" + getId() + ".htm";
|
||||
if ((getId() == 36478) && player.hasSummon())
|
||||
{
|
||||
filename = "html/petmanager/restore-unsummonpet.htm";
|
||||
}
|
||||
|
||||
final String filename = (getId() == 36478) && player.hasSummon() ? "html/petmanager/restore-unsummonpet.htm" : "html/petmanager/" + getId() + ".htm";
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), filename);
|
||||
if (Config.ALLOW_RENTPET && Config.LIST_PET_RENT_NPC.contains(getId()))
|
||||
@@ -76,9 +60,7 @@ public class L2PetManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
if (command.startsWith("exchange"))
|
||||
{
|
||||
final String[] params = command.split(" ");
|
||||
final int val = Integer.parseInt(params[1]);
|
||||
switch (val)
|
||||
switch (Integer.parseInt(command.split(" ")[1]))
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
@@ -196,12 +178,11 @@ public class L2PetManagerInstance extends L2MerchantInstance
|
||||
{
|
||||
player.addItem("", itemIdgive, 1, this, true);
|
||||
html.setFile(player.getHtmlPrefix(), "html/petmanager/" + getId() + ".htm");
|
||||
player.sendPacket(html);
|
||||
}
|
||||
else
|
||||
{
|
||||
html.setFile(player.getHtmlPrefix(), "html/petmanager/exchange_no.htm");
|
||||
player.sendPacket(html);
|
||||
}
|
||||
player.sendPacket(html);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -548,5 +548,4 @@ public class L2RaceManagerInstance extends L2Npc
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -127,12 +127,9 @@ public class L2RaidBossInstance extends L2MonsterInstance
|
||||
final int spawnY = spawn.getY();
|
||||
final int spawnZ = spawn.getZ();
|
||||
|
||||
if (!isInCombat() && !isMovementDisabled())
|
||||
if (!isInCombat() && !isMovementDisabled() && !isInsideRadius(spawnX, spawnY, spawnZ, Math.max(Config.MAX_DRIFT_RANGE, 200), true, false))
|
||||
{
|
||||
if (!isInsideRadius(spawnX, spawnY, spawnZ, Math.max(Config.MAX_DRIFT_RANGE, 200), true, false))
|
||||
{
|
||||
teleToLocation(spawnX, spawnY, spawnZ, false);
|
||||
}
|
||||
teleToLocation(spawnX, spawnY, spawnZ, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -375,12 +375,7 @@ public class L2SepulcherMonsterInstance extends L2MonsterInstance
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (_activeChar.isDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_activeChar.isVisible())
|
||||
if (_activeChar.isDead() || !_activeChar.isVisible())
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -401,12 +396,7 @@ public class L2SepulcherMonsterInstance extends L2MonsterInstance
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (_activeChar.isDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_activeChar.isVisible())
|
||||
if (_activeChar.isDead() || !_activeChar.isVisible())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -261,17 +261,7 @@ public class L2SepulcherNpcInstance extends L2Npc
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
|
||||
return HTML_FILE_PATH + pom + ".htm";
|
||||
return HTML_FILE_PATH + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -212,12 +212,7 @@ public class L2ServitorInstance extends L2Summon implements Runnable
|
||||
@Override
|
||||
public void storeEffect(boolean storeEffects)
|
||||
{
|
||||
if (!Config.SUMMON_STORE_SKILL_COOLTIME)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((getOwner() == null) || getOwner().isInOlympiadMode())
|
||||
if (!Config.SUMMON_STORE_SKILL_COOLTIME || (getOwner() == null) || getOwner().isInOlympiadMode())
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -382,31 +377,19 @@ public class L2ServitorInstance extends L2Summon implements Runnable
|
||||
@Override
|
||||
public byte getAttackElement()
|
||||
{
|
||||
if (getOwner() != null)
|
||||
{
|
||||
return getOwner().getAttackElement();
|
||||
}
|
||||
return super.getAttackElement();
|
||||
return getOwner() != null ? getOwner().getAttackElement() : super.getAttackElement();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAttackElementValue(byte attackAttribute)
|
||||
{
|
||||
if (getOwner() != null)
|
||||
{
|
||||
return (getOwner().getAttackElementValue(attackAttribute));
|
||||
}
|
||||
return super.getAttackElementValue(attackAttribute);
|
||||
return getOwner() != null ? getOwner().getAttackElementValue(attackAttribute) : super.getAttackElementValue(attackAttribute);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDefenseElementValue(byte defenseAttribute)
|
||||
{
|
||||
if (getOwner() != null)
|
||||
{
|
||||
return (getOwner().getDefenseElementValue(defenseAttribute));
|
||||
}
|
||||
return super.getDefenseElementValue(defenseAttribute);
|
||||
return getOwner() != null ? getOwner().getDefenseElementValue(defenseAttribute) : super.getDefenseElementValue(defenseAttribute);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -166,19 +166,14 @@ public class L2SiegeFlagInstance extends L2Npc
|
||||
public void reduceCurrentHp(double damage, L2Character attacker, Skill skill)
|
||||
{
|
||||
super.reduceCurrentHp(damage, attacker, skill);
|
||||
if (canTalk())
|
||||
if (!canTalk() || (((getCastle() == null) || !getCastle().getSiege().isInProgress()) && ((getFort() == null) || !getFort().getSiege().isInProgress()) && ((getConquerableHall() == null) || !getConquerableHall().isInSiege())) || (_clan == null))
|
||||
{
|
||||
if (((getCastle() != null) && getCastle().getSiege().isInProgress()) || ((getFort() != null) && getFort().getSiege().isInProgress()) || ((getConquerableHall() != null) && getConquerableHall().isInSiege()))
|
||||
{
|
||||
if (_clan != null)
|
||||
{
|
||||
// send warning to owners of headquarters that theirs base is under attack
|
||||
_clan.broadcastToOnlineMembers(SystemMessage.getSystemMessage(SystemMessageId.YOUR_BASE_IS_BEING_ATTACKED));
|
||||
setCanTalk(false);
|
||||
ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 20000);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
_clan.broadcastToOnlineMembers(SystemMessage.getSystemMessage(SystemMessageId.YOUR_BASE_IS_BEING_ATTACKED));
|
||||
setCanTalk(false);
|
||||
ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 20000);
|
||||
}
|
||||
|
||||
private class ScheduleTalkTask implements Runnable
|
||||
|
||||
@@ -142,18 +142,20 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance
|
||||
|
||||
public void setFoodType(int foodItemId)
|
||||
{
|
||||
if (foodItemId > 0)
|
||||
if (foodItemId <= 0)
|
||||
{
|
||||
_foodSkillId = foodItemId;
|
||||
|
||||
// start the duration checks
|
||||
// start the buff tasks
|
||||
if (_durationCheckTask != null)
|
||||
{
|
||||
_durationCheckTask.cancel(true);
|
||||
}
|
||||
_durationCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL);
|
||||
return;
|
||||
}
|
||||
|
||||
_foodSkillId = foodItemId;
|
||||
|
||||
// start the duration checks
|
||||
// start the buff tasks
|
||||
if (_durationCheckTask != null)
|
||||
{
|
||||
_durationCheckTask.cancel(true);
|
||||
}
|
||||
_durationCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -370,17 +372,9 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance
|
||||
// for lower HP ranges, heal or recharge the owner with 1 skill use per attack.
|
||||
else if (HPRatio < 0.5)
|
||||
{
|
||||
int chance = 1;
|
||||
if (HPRatio < 0.25)
|
||||
{
|
||||
chance = 2;
|
||||
}
|
||||
|
||||
// if the owner has a lot of HP, then debuff the enemy with a random debuff among the available skills
|
||||
for (Skill skill : getTemplate().getSkills().values())
|
||||
{
|
||||
// if the skill is a buff, check if the owner has it already [ owner.getEffect(L2Skill skill) ]
|
||||
if ((Rnd.get(5) < chance) && skill.hasEffectType(L2EffectType.CPHEAL, L2EffectType.HEAL, L2EffectType.MANAHEAL_BY_LEVEL, L2EffectType.MANAHEAL_PERCENT))
|
||||
if ((Rnd.get(5) < (HPRatio < 0.25 ? 2 : 1)) && skill.hasEffectType(L2EffectType.CPHEAL, L2EffectType.HEAL, L2EffectType.MANAHEAL_BY_LEVEL, L2EffectType.MANAHEAL_PERCENT))
|
||||
{
|
||||
sitCastAndFollow(skill, _owner);
|
||||
}
|
||||
|
||||
@@ -74,8 +74,7 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
public void onBypassFeedback(L2PcInstance player, String command)
|
||||
{
|
||||
final StringTokenizer st = new StringTokenizer(command, " ");
|
||||
final String cmd = st.nextToken();
|
||||
switch (cmd)
|
||||
switch (st.nextToken())
|
||||
{
|
||||
case "showNoblesSelect":
|
||||
{
|
||||
@@ -290,7 +289,7 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
{
|
||||
return "<fstring>1000308</fstring>";
|
||||
}
|
||||
else if (itemId == Inventory.ANCIENT_ADENA_ID)
|
||||
if (itemId == Inventory.ANCIENT_ADENA_ID)
|
||||
{
|
||||
return "<fstring>1000309</fstring>";
|
||||
}
|
||||
@@ -343,7 +342,7 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
player.sendPacket(html);
|
||||
return;
|
||||
}
|
||||
else if (actualCommand.equalsIgnoreCase("goto"))
|
||||
if (actualCommand.equalsIgnoreCase("goto"))
|
||||
{
|
||||
final int npcId = getId();
|
||||
|
||||
@@ -372,14 +371,10 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
doTeleport(player, whereTo);
|
||||
return;
|
||||
}
|
||||
else if (condition == COND_OWNER)
|
||||
if (condition == COND_OWNER)
|
||||
{
|
||||
// TODO: Replace 0 with highest level when privilege level is implemented
|
||||
int minPrivilegeLevel = 0;
|
||||
if (st.countTokens() >= 1)
|
||||
{
|
||||
minPrivilegeLevel = Integer.parseInt(st.nextToken());
|
||||
}
|
||||
final int minPrivilegeLevel = st.countTokens() >= 1 ? Integer.parseInt(st.nextToken()) : 0;
|
||||
|
||||
// TODO: Replace 10 with privilege level of player
|
||||
if (10 >= minPrivilegeLevel)
|
||||
@@ -413,7 +408,7 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
showNewbieHtml(player);
|
||||
return;
|
||||
}
|
||||
else if ((val == 1) && (cal.get(Calendar.HOUR_OF_DAY) >= 20) && (cal.get(Calendar.HOUR_OF_DAY) <= 23) && ((cal.get(Calendar.DAY_OF_WEEK) == 1) || (cal.get(Calendar.DAY_OF_WEEK) == 7)))
|
||||
if ((val == 1) && (cal.get(Calendar.HOUR_OF_DAY) >= 20) && (cal.get(Calendar.HOUR_OF_DAY) <= 23) && ((cal.get(Calendar.DAY_OF_WEEK) == 1) || (cal.get(Calendar.DAY_OF_WEEK) == 7)))
|
||||
{
|
||||
showHalfPriceHtml(player);
|
||||
return;
|
||||
@@ -426,17 +421,7 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
|
||||
return "html/teleporter/" + pom + ".htm";
|
||||
return "html/teleporter/" + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
|
||||
private void showNewbieHtml(L2PcInstance player)
|
||||
@@ -469,12 +454,7 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
|
||||
String filename = "html/teleporter/half/" + getId() + ".htm";
|
||||
if (!HtmCache.getInstance().isLoadable(filename))
|
||||
{
|
||||
filename = "html/teleporter/" + getId() + "-1.htm";
|
||||
}
|
||||
|
||||
final String filename = !HtmCache.getInstance().isLoadable(("html/teleporter/half/" + getId() + ".htm")) ? "html/teleporter/" + getId() + "-1.htm" : "html/teleporter/half/" + getId() + ".htm";
|
||||
html.setFile(player.getHtmlPrefix(), filename);
|
||||
html.replace("%objectId%", String.valueOf(getObjectId()));
|
||||
html.replace("%npcname%", getName());
|
||||
@@ -492,7 +472,7 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
super.showChatWindow(player);
|
||||
return;
|
||||
}
|
||||
else if (condition > COND_ALL_FALSE)
|
||||
if (condition > COND_ALL_FALSE)
|
||||
{
|
||||
if (condition == COND_BUSY_BECAUSE_OF_SIEGE)
|
||||
{
|
||||
@@ -522,27 +502,27 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
player.sendPacket(SystemMessageId.YOU_CANNOT_TELEPORT_TO_A_VILLAGE_THAT_IS_IN_A_SIEGE);
|
||||
return;
|
||||
}
|
||||
else if (TownManager.townHasCastleInSiege(list.getLocX(), list.getLocY()) && isInsideZone(ZoneId.TOWN))
|
||||
if (TownManager.townHasCastleInSiege(list.getLocX(), list.getLocY()) && isInsideZone(ZoneId.TOWN))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.YOU_CANNOT_TELEPORT_TO_A_VILLAGE_THAT_IS_IN_A_SIEGE);
|
||||
return;
|
||||
}
|
||||
else if (!Config.ALT_GAME_KARMA_PLAYER_CAN_USE_GK && (player.getReputation() < 0))
|
||||
if (!Config.ALT_GAME_KARMA_PLAYER_CAN_USE_GK && (player.getReputation() < 0))
|
||||
{
|
||||
player.sendMessage("Go away, you're not welcome here.");
|
||||
return;
|
||||
}
|
||||
else if (!Config.ALT_GAME_FLAGGED_PLAYER_CAN_USE_GK && (player.getPvpFlag() > 0))
|
||||
if (!Config.ALT_GAME_FLAGGED_PLAYER_CAN_USE_GK && (player.getPvpFlag() > 0))
|
||||
{
|
||||
player.sendMessage("I don't speak with angry people.");
|
||||
return;
|
||||
}
|
||||
else if (player.isCombatFlagEquipped())
|
||||
if (player.isCombatFlagEquipped())
|
||||
{
|
||||
player.sendPacket(SystemMessageId.YOU_CANNOT_TELEPORT_WHILE_IN_POSSESSION_OF_A_WARD);
|
||||
return;
|
||||
}
|
||||
else if (list.getIsForNoble() && !player.isNoble())
|
||||
if (list.getIsForNoble() && !player.isNoble())
|
||||
{
|
||||
final String filename = "html/teleporter/nobles_not.htm";
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
||||
@@ -552,7 +532,7 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
player.sendPacket(html);
|
||||
return;
|
||||
}
|
||||
else if (player.isAlikeDead())
|
||||
if (player.isAlikeDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -598,17 +578,14 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
return COND_REGULAR; // Regular access
|
||||
}
|
||||
// Teleporter is on castle ground and siege is in progress
|
||||
else if (getCastle().getSiege().isInProgress())
|
||||
if (getCastle().getSiege().isInProgress())
|
||||
{
|
||||
return COND_BUSY_BECAUSE_OF_SIEGE; // Busy because of siege
|
||||
}
|
||||
// Teleporter is on castle ground and player is in a clan
|
||||
else if (player.getClan() != null)
|
||||
if ((player.getClan() != null) && (getCastle().getOwnerId() == player.getClanId()))
|
||||
{
|
||||
if (getCastle().getOwnerId() == player.getClanId())
|
||||
{
|
||||
return COND_OWNER; // Owner
|
||||
}
|
||||
return COND_OWNER;
|
||||
}
|
||||
|
||||
return COND_ALL_FALSE;
|
||||
|
||||
@@ -34,16 +34,6 @@ public class L2TrainerInstance extends L2NpcInstance
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
|
||||
return "html/trainer/" + pom + ".htm";
|
||||
return "html/trainer/" + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
}
|
||||
@@ -427,15 +427,17 @@ public final class L2TrapInstance extends L2Npc
|
||||
_owner = null;
|
||||
}
|
||||
|
||||
if (isVisible() && !isDead())
|
||||
if (!isVisible() || isDead())
|
||||
{
|
||||
if (getWorldRegion() != null)
|
||||
{
|
||||
getWorldRegion().removeFromZones(this);
|
||||
}
|
||||
|
||||
deleteMe();
|
||||
return;
|
||||
}
|
||||
|
||||
if (getWorldRegion() != null)
|
||||
{
|
||||
getWorldRegion().removeFromZones(this);
|
||||
}
|
||||
|
||||
deleteMe();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -34,11 +34,6 @@ public final class L2VillageMasterDElfInstance extends L2VillageMasterInstance
|
||||
@Override
|
||||
protected final boolean checkVillageMasterRace(PlayerClass pclass)
|
||||
{
|
||||
if (pclass == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return pclass.isOfRace(Race.DARK_ELF);
|
||||
return (pclass != null) && pclass.isOfRace(Race.DARK_ELF);
|
||||
}
|
||||
}
|
||||
@@ -34,11 +34,6 @@ public final class L2VillageMasterDwarfInstance extends L2VillageMasterInstance
|
||||
@Override
|
||||
protected final boolean checkVillageMasterRace(PlayerClass pclass)
|
||||
{
|
||||
if (pclass == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return pclass.isOfRace(Race.DWARF);
|
||||
return (pclass != null) && pclass.isOfRace(Race.DWARF);
|
||||
}
|
||||
}
|
||||
@@ -35,22 +35,12 @@ public final class L2VillageMasterFighterInstance extends L2VillageMasterInstanc
|
||||
@Override
|
||||
protected final boolean checkVillageMasterRace(PlayerClass pclass)
|
||||
{
|
||||
if (pclass == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return pclass.isOfRace(Race.HUMAN) || pclass.isOfRace(Race.ELF);
|
||||
return (pclass != null) && (pclass.isOfRace(Race.HUMAN) || pclass.isOfRace(Race.ELF));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final boolean checkVillageMasterTeachType(PlayerClass pclass)
|
||||
{
|
||||
if (pclass == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return pclass.isOfType(ClassType.Fighter);
|
||||
return (pclass != null) && pclass.isOfType(ClassType.Fighter);
|
||||
}
|
||||
}
|
||||
@@ -70,18 +70,7 @@ public class L2VillageMasterInstance extends L2NpcInstance
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
|
||||
return "html/villagemaster/" + pom + ".htm";
|
||||
return "html/villagemaster/" + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -34,11 +34,6 @@ public final class L2VillageMasterKamaelInstance extends L2VillageMasterInstance
|
||||
@Override
|
||||
protected final boolean checkVillageMasterRace(PlayerClass pclass)
|
||||
{
|
||||
if (pclass == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return pclass.isOfRace(Race.KAMAEL);
|
||||
return (pclass != null) && pclass.isOfRace(Race.KAMAEL);
|
||||
}
|
||||
}
|
||||
@@ -35,22 +35,12 @@ public final class L2VillageMasterMysticInstance extends L2VillageMasterInstance
|
||||
@Override
|
||||
protected final boolean checkVillageMasterRace(PlayerClass pclass)
|
||||
{
|
||||
if (pclass == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return pclass.isOfRace(Race.HUMAN) || pclass.isOfRace(Race.ELF);
|
||||
return (pclass != null) && (pclass.isOfRace(Race.HUMAN) || pclass.isOfRace(Race.ELF));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final boolean checkVillageMasterTeachType(PlayerClass pclass)
|
||||
{
|
||||
if (pclass == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return pclass.isOfType(ClassType.Mystic);
|
||||
return (pclass != null) && pclass.isOfType(ClassType.Mystic);
|
||||
}
|
||||
}
|
||||
@@ -34,11 +34,6 @@ public final class L2VillageMasterOrcInstance extends L2VillageMasterInstance
|
||||
@Override
|
||||
protected final boolean checkVillageMasterRace(PlayerClass pclass)
|
||||
{
|
||||
if (pclass == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return pclass.isOfRace(Race.ORC);
|
||||
return (pclass != null) && pclass.isOfRace(Race.ORC);
|
||||
}
|
||||
}
|
||||
@@ -35,22 +35,12 @@ public final class L2VillageMasterPriestInstance extends L2VillageMasterInstance
|
||||
@Override
|
||||
protected final boolean checkVillageMasterRace(PlayerClass pclass)
|
||||
{
|
||||
if (pclass == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return pclass.isOfRace(Race.HUMAN) || pclass.isOfRace(Race.ELF);
|
||||
return (pclass != null) && (pclass.isOfRace(Race.HUMAN) || pclass.isOfRace(Race.ELF));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final boolean checkVillageMasterTeachType(PlayerClass pclass)
|
||||
{
|
||||
if (pclass == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return pclass.isOfType(ClassType.Priest);
|
||||
return (pclass != null) && pclass.isOfType(ClassType.Priest);
|
||||
}
|
||||
}
|
||||
@@ -40,17 +40,6 @@ public class L2WarehouseInstance extends L2NpcInstance
|
||||
@Override
|
||||
public String getHtmlPath(int npcId, int val)
|
||||
{
|
||||
String pom = "";
|
||||
|
||||
if (val == 0)
|
||||
{
|
||||
pom = "" + npcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
pom = npcId + "-" + val;
|
||||
}
|
||||
|
||||
return "html/warehouse/" + pom + ".htm";
|
||||
return "html/warehouse/" + (val == 0 ? "" + npcId : npcId + "-" + val) + ".htm";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,8 +81,6 @@ public class AttackableKnownList extends NpcKnownList
|
||||
return object.getKnownList().getDistanceToWatchObject(getActiveObject());
|
||||
}
|
||||
|
||||
final int max = Math.max(300, Math.max(getActiveChar().getAggroRange(), getActiveChar().getTemplate().getClanHelpRange()));
|
||||
|
||||
return max;
|
||||
return Math.max(300, Math.max(getActiveChar().getAggroRange(), getActiveChar().getTemplate().getClanHelpRange()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -212,12 +212,9 @@ public class CharKnownList extends ObjectKnownList
|
||||
final List<L2Character> result = new LinkedList<>();
|
||||
for (L2Object obj : getKnownObjects().values())
|
||||
{
|
||||
if (obj instanceof L2Character)
|
||||
if ((obj instanceof L2Character) && Util.checkIfInRange((int) radius, getActiveChar(), obj, true))
|
||||
{
|
||||
if (Util.checkIfInRange((int) radius, getActiveChar(), obj, true))
|
||||
{
|
||||
result.add((L2Character) obj);
|
||||
}
|
||||
result.add((L2Character) obj);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
@@ -73,21 +73,17 @@ public class GuardKnownList extends AttackableKnownList
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ((Config.GUARD_ATTACK_AGGRO_MOB && getActiveChar().isInActiveRegion()) && object.isMonster())
|
||||
else if ((Config.GUARD_ATTACK_AGGRO_MOB && getActiveChar().isInActiveRegion()) && object.isMonster() && ((L2MonsterInstance) object).isAggressive())
|
||||
{
|
||||
// Check if the object added is an aggressive L2MonsterInstance
|
||||
if (((L2MonsterInstance) object).isAggressive())
|
||||
if (Config.DEBUG)
|
||||
{
|
||||
if (Config.DEBUG)
|
||||
{
|
||||
_log.fine(getActiveChar().getObjectId() + ": Aggressive mob " + object.getObjectId() + " entered scan range");
|
||||
}
|
||||
|
||||
// Set the L2GuardInstance Intention to AI_INTENTION_ACTIVE
|
||||
if (getActiveChar().getAI().getIntention() == CtrlIntention.AI_INTENTION_IDLE)
|
||||
{
|
||||
getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE, null);
|
||||
}
|
||||
_log.fine(getActiveChar().getObjectId() + ": Aggressive mob " + object.getObjectId() + " entered scan range");
|
||||
}
|
||||
|
||||
// Set the L2GuardInstance Intention to AI_INTENTION_ACTIVE
|
||||
if (getActiveChar().getAI().getIntention() == CtrlIntention.AI_INTENTION_IDLE)
|
||||
{
|
||||
getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,13 +99,9 @@ public class GuardKnownList extends AttackableKnownList
|
||||
}
|
||||
|
||||
// Check if the aggression list of this guard is empty.
|
||||
if (getActiveChar().getAggroList().isEmpty())
|
||||
if (getActiveChar().getAggroList().isEmpty() && getActiveChar().hasAI() && !getActiveChar().isWalker())
|
||||
{
|
||||
// Set the L2GuardInstance to AI_INTENTION_IDLE
|
||||
if (getActiveChar().hasAI() && !getActiveChar().isWalker())
|
||||
{
|
||||
getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null);
|
||||
}
|
||||
getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -102,11 +102,12 @@ public class NpcKnownList extends CharKnownList
|
||||
// Support for Walking monsters aggro
|
||||
public void stopTrackingTask()
|
||||
{
|
||||
if (_trackingTask != null)
|
||||
if (_trackingTask == null)
|
||||
{
|
||||
_trackingTask.cancel(true);
|
||||
_trackingTask = null;
|
||||
return;
|
||||
}
|
||||
_trackingTask.cancel(true);
|
||||
_trackingTask = null;
|
||||
}
|
||||
|
||||
// Support for Walking monsters aggro
|
||||
|
||||
@@ -83,14 +83,9 @@ public class PcKnownList extends PlayableKnownList
|
||||
{
|
||||
object.sendInfo(getActiveChar());
|
||||
|
||||
if (object instanceof L2Character)
|
||||
if ((object instanceof L2Character) && ((L2Character) object).hasAI())
|
||||
{
|
||||
// Update the state of the L2Character object client side by sending Server->Client packet MoveToPawn/CharMoveToLocation and AutoAttackStart to the L2PcInstance
|
||||
final L2Character obj = (L2Character) object;
|
||||
if (obj.hasAI())
|
||||
{
|
||||
obj.getAI().describeStateToPlayer(getActiveChar());
|
||||
}
|
||||
((L2Character) object).getAI().describeStateToPlayer(getActiveChar());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -667,12 +667,9 @@ public class CharStat
|
||||
}
|
||||
double mpConsume = skill.getMpConsume();
|
||||
final double nextDanceMpCost = Math.ceil(skill.getMpConsume() / 2.);
|
||||
if (skill.isDance())
|
||||
if (skill.isDance() && Config.DANCE_CONSUME_ADDITIONAL_MP && (_activeChar != null) && (_activeChar.getDanceCount() > 0))
|
||||
{
|
||||
if (Config.DANCE_CONSUME_ADDITIONAL_MP && (_activeChar != null) && (_activeChar.getDanceCount() > 0))
|
||||
{
|
||||
mpConsume += _activeChar.getDanceCount() * nextDanceMpCost;
|
||||
}
|
||||
mpConsume += _activeChar.getDanceCount() * nextDanceMpCost;
|
||||
}
|
||||
|
||||
mpConsume = calcStat(Stats.MP_CONSUME, mpConsume, null, skill);
|
||||
@@ -681,14 +678,11 @@ public class CharStat
|
||||
{
|
||||
return (int) calcStat(Stats.DANCE_MP_CONSUME_RATE, mpConsume);
|
||||
}
|
||||
else if (skill.isMagic())
|
||||
if (skill.isMagic())
|
||||
{
|
||||
return (int) calcStat(Stats.MAGICAL_MP_CONSUME_RATE, mpConsume);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (int) calcStat(Stats.PHYSICAL_MP_CONSUME_RATE, mpConsume);
|
||||
}
|
||||
return (int) calcStat(Stats.PHYSICAL_MP_CONSUME_RATE, mpConsume);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -697,12 +691,7 @@ public class CharStat
|
||||
*/
|
||||
public final int getMpInitialConsume(Skill skill)
|
||||
{
|
||||
if (skill == null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return (int) calcStat(Stats.MP_CONSUME, skill.getMpInitialConsume(), null, skill);
|
||||
return skill == null ? 1 : (int) calcStat(Stats.MP_CONSUME, skill.getMpInitialConsume(), null, skill);
|
||||
}
|
||||
|
||||
public byte getAttackElement()
|
||||
@@ -879,11 +868,7 @@ public class CharStat
|
||||
public int getMaxBuffCount()
|
||||
{
|
||||
final int extraSlots = _activeChar.getSkillLevel(DIVINE_INSPIRATION);
|
||||
if (extraSlots > -1)
|
||||
{
|
||||
return _maxBuffCount + extraSlots;
|
||||
}
|
||||
return _maxBuffCount;
|
||||
return extraSlots > -1 ? _maxBuffCount + extraSlots : _maxBuffCount;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -77,12 +77,7 @@ public class PcStat extends PlayableStat
|
||||
final L2PcInstance activeChar = getActiveChar();
|
||||
|
||||
// Allowed to gain exp?
|
||||
if (!getActiveChar().getAccessLevel().canGainExp())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!super.addExp(value))
|
||||
if (!getActiveChar().getAccessLevel().canGainExp() || !super.addExp(value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -191,23 +191,13 @@ public class PetStat extends SummonStat
|
||||
@Override
|
||||
public double getPAtkSpd()
|
||||
{
|
||||
double val = super.getPAtkSpd();
|
||||
if (getActiveChar().isHungry())
|
||||
{
|
||||
val = val / 2;
|
||||
}
|
||||
return val;
|
||||
return getActiveChar().isHungry() ? super.getPAtkSpd() / 2 : super.getPAtkSpd();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMAtkSpd()
|
||||
{
|
||||
int val = super.getMAtkSpd();
|
||||
if (getActiveChar().isHungry())
|
||||
{
|
||||
val = val / 2;
|
||||
}
|
||||
return val;
|
||||
return getActiveChar().isHungry() ? super.getMAtkSpd() / 2 : super.getMAtkSpd();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -312,9 +312,7 @@ public class CharStatus
|
||||
|
||||
public final void setCurrentHpMp(double newHp, double newMp)
|
||||
{
|
||||
boolean hpOrMpWasChanged = setCurrentHp(newHp, false);
|
||||
hpOrMpWasChanged |= setCurrentMp(newMp, false);
|
||||
if (hpOrMpWasChanged)
|
||||
if (setCurrentHp(newHp, false) | setCurrentMp(newMp, false))
|
||||
{
|
||||
getActiveChar().broadcastStatusUpdate();
|
||||
}
|
||||
|
||||
@@ -46,14 +46,7 @@ public class PcStatus extends PlayableStatus
|
||||
@Override
|
||||
public final void reduceCp(int value)
|
||||
{
|
||||
if (getCurrentCp() > value)
|
||||
{
|
||||
setCurrentCp(getCurrentCp() - value);
|
||||
}
|
||||
else
|
||||
{
|
||||
setCurrentCp(0);
|
||||
}
|
||||
setCurrentCp(getCurrentCp() > value ? getCurrentCp() - value : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -101,12 +94,9 @@ public class PcStatus extends PlayableStatus
|
||||
getActiveChar().standUp();
|
||||
}
|
||||
|
||||
if (!isDOT)
|
||||
if (!isDOT && getActiveChar().isStunned() && (Rnd.get(10) == 0))
|
||||
{
|
||||
if (getActiveChar().isStunned() && (Rnd.get(10) == 0))
|
||||
{
|
||||
getActiveChar().stopStunning(true);
|
||||
}
|
||||
getActiveChar().stopStunning(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,10 +175,8 @@ public class PcStatus extends PlayableStatus
|
||||
final L2PcInstance caster = getActiveChar().getTransferingDamageTo();
|
||||
if ((caster != null) && (getActiveChar().getParty() != null) && Util.checkIfInRange(1000, getActiveChar(), caster, true) && !caster.isDead() && (getActiveChar() != caster) && getActiveChar().getParty().getMembers().contains(caster))
|
||||
{
|
||||
int transferDmg = 0;
|
||||
int transferDmg = Math.min((int) caster.getCurrentHp() - 1, (((int) value * (int) getActiveChar().getStat().calcStat(Stats.TRANSFER_DAMAGE_TO_PLAYER, 0, null, null)) / 100));
|
||||
|
||||
transferDmg = ((int) value * (int) getActiveChar().getStat().calcStat(Stats.TRANSFER_DAMAGE_TO_PLAYER, 0, null, null)) / 100;
|
||||
transferDmg = Math.min((int) caster.getCurrentHp() - 1, transferDmg);
|
||||
if (transferDmg > 0)
|
||||
{
|
||||
int membersInRange = 0;
|
||||
@@ -294,39 +282,41 @@ public class PcStatus extends PlayableStatus
|
||||
setCurrentHp(value);
|
||||
}
|
||||
|
||||
if ((getActiveChar().getCurrentHp() < 0.5) && !isHPConsumption && getActiveChar().isMortal())
|
||||
if ((getActiveChar().getCurrentHp() >= 0.5) || isHPConsumption || !getActiveChar().isMortal())
|
||||
{
|
||||
getActiveChar().abortAttack();
|
||||
getActiveChar().abortCast();
|
||||
|
||||
if (getActiveChar().isInOlympiadMode())
|
||||
{
|
||||
stopHpMpRegeneration();
|
||||
getActiveChar().setIsDead(true);
|
||||
getActiveChar().setIsPendingRevive(true);
|
||||
final L2Summon pet = getActiveChar().getPet();
|
||||
if (pet != null)
|
||||
{
|
||||
pet.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null);
|
||||
}
|
||||
getActiveChar().getServitors().values().forEach(s -> s.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null));
|
||||
return;
|
||||
}
|
||||
|
||||
if ((attacker != null) && (attacker.isPlayer()))
|
||||
{
|
||||
final int hpRestore = (int) attacker.getStat().calcStat(Stats.HP_RESTORE_ON_KILL, 0, null, null);
|
||||
if (hpRestore > 0)
|
||||
{
|
||||
final double amount = Math.max(Math.min((attacker.getMaxHp() * hpRestore) / 100, attacker.getMaxRecoverableHp() - attacker.getCurrentHp()), 0);
|
||||
if (amount != 0)
|
||||
{
|
||||
attacker.setCurrentHp(amount + attacker.getCurrentHp());
|
||||
}
|
||||
}
|
||||
}
|
||||
getActiveChar().doDie(attacker);
|
||||
return;
|
||||
}
|
||||
|
||||
getActiveChar().abortAttack();
|
||||
getActiveChar().abortCast();
|
||||
|
||||
if (getActiveChar().isInOlympiadMode())
|
||||
{
|
||||
stopHpMpRegeneration();
|
||||
getActiveChar().setIsDead(true);
|
||||
getActiveChar().setIsPendingRevive(true);
|
||||
final L2Summon pet = getActiveChar().getPet();
|
||||
if (pet != null)
|
||||
{
|
||||
pet.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null);
|
||||
}
|
||||
getActiveChar().getServitors().values().forEach(s -> s.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null));
|
||||
return;
|
||||
}
|
||||
|
||||
if ((attacker != null) && (attacker.isPlayer()))
|
||||
{
|
||||
final int hpRestore = (int) attacker.getStat().calcStat(Stats.HP_RESTORE_ON_KILL, 0, null, null);
|
||||
if (hpRestore > 0)
|
||||
{
|
||||
final double amount = Math.max(Math.min((attacker.getMaxHp() * hpRestore) / 100, attacker.getMaxRecoverableHp() - attacker.getCurrentHp()), 0);
|
||||
if (amount != 0)
|
||||
{
|
||||
attacker.setCurrentHp(amount + attacker.getCurrentHp());
|
||||
}
|
||||
}
|
||||
}
|
||||
getActiveChar().doDie(attacker);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user