Sync with L2jServer HighFive Dec 21st 2015.
This commit is contained in:
@@ -53,6 +53,7 @@ import com.l2jserver.gameserver.data.xml.impl.CategoryData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
||||
import com.l2jserver.gameserver.datatables.ItemTable;
|
||||
import com.l2jserver.gameserver.enums.CategoryType;
|
||||
import com.l2jserver.gameserver.enums.ChatType;
|
||||
import com.l2jserver.gameserver.enums.InstanceType;
|
||||
import com.l2jserver.gameserver.enums.Race;
|
||||
import com.l2jserver.gameserver.enums.ShotType;
|
||||
@@ -134,6 +135,7 @@ import com.l2jserver.gameserver.model.stats.Formulas;
|
||||
import com.l2jserver.gameserver.model.stats.Stats;
|
||||
import com.l2jserver.gameserver.model.stats.functions.AbstractFunction;
|
||||
import com.l2jserver.gameserver.model.zone.ZoneId;
|
||||
import com.l2jserver.gameserver.network.NpcStringId;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
|
||||
import com.l2jserver.gameserver.network.serverpackets.Attack;
|
||||
@@ -149,6 +151,7 @@ import com.l2jserver.gameserver.network.serverpackets.MagicSkillLaunched;
|
||||
import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
|
||||
import com.l2jserver.gameserver.network.serverpackets.MoveToLocation;
|
||||
import com.l2jserver.gameserver.network.serverpackets.NpcInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.NpcSay;
|
||||
import com.l2jserver.gameserver.network.serverpackets.Revive;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ServerObjectInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.SetupGauge;
|
||||
@@ -1404,12 +1407,12 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
|
||||
for (L2Object obj : objs)
|
||||
{
|
||||
if (obj == target)
|
||||
if ((obj == target) || (obj == null))
|
||||
{
|
||||
continue; // do not hit twice
|
||||
}
|
||||
// Check if the L2Object is a L2Character
|
||||
if (obj instanceof L2Character)
|
||||
if (obj.isCharacter())
|
||||
{
|
||||
if (obj.isPet() && isPlayer() && (((L2PetInstance) obj).getOwner() == getActingPlayer()))
|
||||
{
|
||||
@@ -5386,7 +5389,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
if (cancelEffect || oldSkill.isToggle() || oldSkill.isPassive())
|
||||
{
|
||||
removeStatsOwner(oldSkill);
|
||||
stopSkillEffects(true, oldSkill.getId());
|
||||
stopSkillEffects(false, oldSkill.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7059,6 +7062,42 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a normal message to all L2PcInstance in the known list.<br>
|
||||
* @param msg String with message
|
||||
*/
|
||||
public void say(String msg)
|
||||
{
|
||||
broadcastPacket(new NpcSay(getObjectId(), ChatType.NPC_GENERAL, getId(), msg));
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a client message to all L2PcInstance in the known list.<br>
|
||||
* @param msg NpcString from client
|
||||
*/
|
||||
public void say(NpcStringId msg)
|
||||
{
|
||||
broadcastPacket(new NpcSay(getObjectId(), ChatType.NPC_GENERAL, getId(), msg));
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a shout message (orange chat) to all L2PcInstance in the known list.<br>
|
||||
* @param msg String with message
|
||||
*/
|
||||
public void shout(String msg)
|
||||
{
|
||||
broadcastPacket(new NpcSay(getObjectId(), ChatType.NPC_SHOUT, getId(), msg));
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a shout message (orange chat) to all L2PcInstance in the known list.<br>
|
||||
* @param msg NpcString from client
|
||||
*/
|
||||
public void shout(NpcStringId msg)
|
||||
{
|
||||
broadcastPacket(new NpcSay(getObjectId(), ChatType.NPC_SHOUT, getId(), msg));
|
||||
}
|
||||
|
||||
public int getMinShopDistance()
|
||||
{
|
||||
return 0;
|
||||
|
@@ -1471,17 +1471,21 @@ public final class L2PcInstance extends L2Playable
|
||||
}
|
||||
|
||||
/**
|
||||
* @return a table containing all Quest in progress from the table _quests.
|
||||
* Gets all the active quests.
|
||||
* @return a list of active quests
|
||||
*/
|
||||
|
||||
public List<Quest> getAllActiveQuests()
|
||||
{
|
||||
List<Quest> quests = new ArrayList<>();
|
||||
final List<Quest> quests = new LinkedList<>();
|
||||
for (QuestState qs : _quests.values())
|
||||
{
|
||||
if ((qs == null) || (qs.getQuest() == null) || (!qs.isStarted() && !Config.DEVELOPER))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Ignore other scripts.
|
||||
final int questId = qs.getQuest().getId();
|
||||
if ((questId > 19999) || (questId < 1))
|
||||
{
|
||||
@@ -1494,13 +1498,15 @@ public final class L2PcInstance extends L2Playable
|
||||
|
||||
public List<Quest> getAllCompletedQuests()
|
||||
{
|
||||
List<Quest> quests = new ArrayList<>();
|
||||
final List<Quest> quests = new LinkedList<>();
|
||||
for (QuestState qs : _quests.values())
|
||||
{
|
||||
if ((qs == null) || (qs.getQuest() == null) || (!qs.isCompleted()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Ignore other scripts.
|
||||
final int questId = qs.getQuest().getId();
|
||||
if ((questId > 19999) || (questId < 1))
|
||||
{
|
||||
|
@@ -510,6 +510,12 @@ public class L2ServitorInstance extends L2Summon implements Runnable
|
||||
return (int) (super.getMaxHp() + (getActingPlayer().getMaxHp() * (getActingPlayer().getServitorShareBonus(Stats.MAX_HP) - 1.0)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxMp()
|
||||
{
|
||||
return (int) (super.getMaxMp() + (getActingPlayer().getMaxMp() * (getActingPlayer().getServitorShareBonus(Stats.MAX_MP) - 1.0)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCriticalHit(L2Character target, Skill skill)
|
||||
{
|
||||
@@ -521,4 +527,16 @@ public class L2ServitorInstance extends L2Summon implements Runnable
|
||||
{
|
||||
return super.getPAtkSpd() + (getActingPlayer().getPAtkSpd() * (getActingPlayer().getServitorShareBonus(Stats.POWER_ATTACK_SPEED) - 1.0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxRecoverableHp()
|
||||
{
|
||||
return (int) calcStat(Stats.MAX_RECOVERABLE_HP, getMaxHp());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxRecoverableMp()
|
||||
{
|
||||
return (int) calcStat(Stats.MAX_RECOVERABLE_MP, getMaxMp());
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,6 @@ import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.actor.stat.CharStat;
|
||||
import com.l2jserver.gameserver.model.stats.Formulas;
|
||||
import com.l2jserver.util.Rnd;
|
||||
|
||||
@@ -270,7 +269,7 @@ public class CharStatus
|
||||
{
|
||||
// Get the Max HP of the L2Character
|
||||
int currentHp = (int) getCurrentHp();
|
||||
final double maxHp = getActiveChar().getStat().getMaxHp();
|
||||
final double maxHp = getActiveChar().getMaxHp();
|
||||
|
||||
synchronized (this)
|
||||
{
|
||||
@@ -343,7 +342,7 @@ public class CharStatus
|
||||
{
|
||||
// Get the Max MP of the L2Character
|
||||
int currentMp = (int) getCurrentMp();
|
||||
final int maxMp = getActiveChar().getStat().getMaxMp();
|
||||
final int maxMp = getActiveChar().getMaxMp();
|
||||
|
||||
synchronized (this)
|
||||
{
|
||||
@@ -388,32 +387,26 @@ public class CharStatus
|
||||
|
||||
protected void doRegeneration()
|
||||
{
|
||||
final CharStat charstat = getActiveChar().getStat();
|
||||
|
||||
// Modify the current HP of the L2Character and broadcast Server->Client packet StatusUpdate
|
||||
if (getCurrentHp() < charstat.getMaxRecoverableHp())
|
||||
if (getCurrentHp() < getActiveChar().getMaxRecoverableHp())
|
||||
{
|
||||
setCurrentHp(getCurrentHp() + Formulas.calcHpRegen(getActiveChar()), false);
|
||||
}
|
||||
|
||||
// Modify the current MP of the L2Character and broadcast Server->Client packet StatusUpdate
|
||||
if (getCurrentMp() < charstat.getMaxRecoverableMp())
|
||||
if (getCurrentMp() < getActiveChar().getMaxRecoverableMp())
|
||||
{
|
||||
setCurrentMp(getCurrentMp() + Formulas.calcMpRegen(getActiveChar()), false);
|
||||
}
|
||||
|
||||
if (!getActiveChar().isInActiveRegion())
|
||||
if ((getCurrentHp() >= getActiveChar().getMaxRecoverableHp()) && (getCurrentMp() >= getActiveChar().getMaxMp()))
|
||||
{
|
||||
// no broadcast necessary for characters that are in inactive regions.
|
||||
// stop regeneration for characters who are filled up and in an inactive region.
|
||||
if ((getCurrentHp() == charstat.getMaxRecoverableHp()) && (getCurrentMp() == charstat.getMaxMp()))
|
||||
{
|
||||
stopHpMpRegeneration();
|
||||
}
|
||||
stopHpMpRegeneration();
|
||||
}
|
||||
else
|
||||
|
||||
if (getActiveChar().isInActiveRegion())
|
||||
{
|
||||
getActiveChar().broadcastStatusUpdate(); // send the StatusUpdate packet
|
||||
getActiveChar().broadcastStatusUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user