Addition of SkillFinishType enumeration.

This commit is contained in:
MobiusDevelopment
2021-08-18 16:39:21 +00:00
parent c2d8864dd7
commit 471b06e031
711 changed files with 3383 additions and 2072 deletions

View File

@@ -21,6 +21,7 @@ import java.util.concurrent.ConcurrentHashMap;
import org.l2jmobius.gameserver.data.xml.DoorData;
import org.l2jmobius.gameserver.enums.ClassId;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
@@ -104,7 +105,7 @@ public class BaseTower extends AbstractNpcAI
final PlayerInstance pl = BODY_DESTROYER_TARGET_LIST.get(npc.getObjectId());
if ((pl != null) && pl.isOnline() && !pl.isDead())
{
pl.stopSkillEffects(true, DEATH_WORD.getSkillId());
pl.stopSkillEffects(SkillFinishType.REMOVED, DEATH_WORD.getSkillId());
}
BODY_DESTROYER_TARGET_LIST.remove(npc.getObjectId());
}

View File

@@ -20,6 +20,7 @@ import java.util.concurrent.ScheduledFuture;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.enums.ChatType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Party;
@@ -190,7 +191,7 @@ public class UrbanArea extends AbstractInstance
cancelQuestTimer("rebuff", npc, null);
if (npc.isAffectedBySkill(STONE.getSkillId()))
{
npc.stopSkillEffects(false, STONE.getSkillId());
npc.stopSkillEffects(SkillFinishType.SILENT, STONE.getSkillId());
}
npc.broadcastSay(ChatType.NPC_GENERAL, NATIVES_NPCSTRING_ID[0]);

View File

@@ -24,6 +24,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.ChatType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Event;
@@ -358,9 +359,9 @@ public class Race extends Event
player.standUp();
}
player.getEffectList().stopSkillEffects(true, AbnormalType.SPEED_UP);
player.stopSkillEffects(true, 268);
player.stopSkillEffects(true, 298); // Rabbit Spirit Totem
player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, AbnormalType.SPEED_UP);
player.stopSkillEffects(SkillFinishType.REMOVED, 268);
player.stopSkillEffects(SkillFinishType.REMOVED, 298); // Rabbit Spirit Totem
SkillData.getInstance().getSkill(_skill, 1).applyEffects(player, player);
}

View File

@@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.ChatType;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
@@ -213,7 +214,7 @@ public class SavingSanta extends LongTimeEvent
// What a bunch of losers.
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[6 + getRandom(2)]));
pl.broadcastPacket(new MagicSkillUse(pl, pl, 23023, 1, 3000, 1));
pl.getEffectList().stopSkillEffects(true, 23022);
pl.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, 23022);
}
else if ((result == 1) || (result == -2))
{

View File

@@ -23,6 +23,7 @@ import java.util.StringTokenizer;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
@@ -362,7 +363,7 @@ public class AdminBuffs implements IAdminCommandHandler
{
if (target.isAffectedBySkill(skillId))
{
target.stopSkillEffects(true, skillId);
target.stopSkillEffects(SkillFinishType.REMOVED, skillId);
BuilderUtil.sendSysMessage(activeChar, "Removed skill ID: " + skillId + " effects from " + target.getName() + " (" + objId + ").");
}

View File

@@ -19,6 +19,7 @@ package handlers.admincommandhandlers;
import java.util.StringTokenizer;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
@@ -53,7 +54,7 @@ public class AdminSuperHaste implements IAdminCommandHandler
{
final int val = Integer.parseInt(st.nextToken());
final boolean sendMessage = player.isAffectedBySkill(SUPER_HASTE_ID);
player.stopSkillEffects((val == 0) && sendMessage, SUPER_HASTE_ID);
player.stopSkillEffects((val == 0) && sendMessage ? SkillFinishType.REMOVED : SkillFinishType.NORMAL, SUPER_HASTE_ID);
if ((val >= 1) && (val <= 4))
{
int time = 0;

View File

@@ -16,6 +16,7 @@
*/
package handlers.effecthandlers;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.conditions.Condition;
@@ -65,7 +66,7 @@ public class Detection extends AbstractEffect
return;
}
// Remove Hide.
target.getEffectList().stopSkillEffects(true, AbnormalType.HIDE);
target.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, AbnormalType.HIDE);
}
}
}

View File

@@ -18,6 +18,7 @@ package handlers.effecthandlers;
import java.util.List;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.conditions.Condition;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
@@ -67,7 +68,7 @@ public class DispelByCategory extends AbstractEffect
final List<BuffInfo> canceled = Formulas.calcCancelEffects(info.getEffector(), info.getEffected(), info.getSkill(), _slot, _rate, _max);
for (BuffInfo can : canceled)
{
info.getEffected().getEffectList().stopSkillEffects(true, can.getSkill());
info.getEffected().getEffectList().stopSkillEffects(SkillFinishType.REMOVED, can.getSkill());
}
}
}

View File

@@ -21,6 +21,7 @@ import java.util.EnumMap;
import java.util.Map;
import java.util.Map.Entry;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.EffectList;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
@@ -101,7 +102,7 @@ public class DispelBySlot extends AbstractEffect
if ((entry.getKey() == toDispel.getSkill().getAbnormalType()) && ((entry.getValue() < 0) || (entry.getValue() >= toDispel.getSkill().getAbnormalLevel())))
{
effectList.stopSkillEffects(true, entry.getKey());
effectList.stopSkillEffects(SkillFinishType.REMOVED, entry.getKey());
}
}
}

View File

@@ -22,6 +22,7 @@ import java.util.Map;
import java.util.Map.Entry;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.EffectList;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
@@ -105,7 +106,7 @@ public class DispelBySlotProbability extends AbstractEffect
if ((toDispel.getSkill().getAbnormalType() == entry.getKey()) && (entry.getValue() >= toDispel.getSkill().getAbnormalLevel()))
{
effectList.stopSkillEffects(true, entry.getKey());
effectList.stopSkillEffects(SkillFinishType.REMOVED, entry.getKey());
}
}
}

View File

@@ -18,6 +18,7 @@ package handlers.effecthandlers;
import java.util.List;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.conditions.Condition;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
@@ -70,7 +71,7 @@ public class StealAbnormal extends AbstractEffect
stolen.setAbnormalTime(infoToSteal.getTime()); // Copy the remaining time.
// To include all the effects, it's required to go through the template rather the buff info.
infoToSteal.getSkill().applyEffectScope(EffectScope.GENERAL, stolen, true, true);
info.getEffected().getEffectList().remove(true, infoToSteal);
info.getEffected().getEffectList().remove(SkillFinishType.REMOVED, infoToSteal);
info.getEffector().getEffectList().add(stolen);
}
}

View File

@@ -23,6 +23,7 @@ import java.util.logging.Logger;
import org.l2jmobius.Config;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.enums.InstanceReenterType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -229,7 +230,7 @@ public abstract class AbstractInstance extends AbstractNpcAI
{
if (!inst.getBuffExceptionList().contains(info.getSkill().getId()))
{
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
info.getEffected().getEffectList().stopSkillEffects(SkillFinishType.REMOVED, info.getSkill());
}
}
@@ -240,7 +241,7 @@ public abstract class AbstractInstance extends AbstractNpcAI
{
if (!inst.getBuffExceptionList().contains(info.getSkill().getId()))
{
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
info.getEffected().getEffectList().stopSkillEffects(SkillFinishType.REMOVED, info.getSkill());
}
}
}
@@ -252,7 +253,7 @@ public abstract class AbstractInstance extends AbstractNpcAI
{
if (inst.getBuffExceptionList().contains(info.getSkill().getId()))
{
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
info.getEffected().getEffectList().stopSkillEffects(SkillFinishType.REMOVED, info.getSkill());
}
}
@@ -263,7 +264,7 @@ public abstract class AbstractInstance extends AbstractNpcAI
{
if (inst.getBuffExceptionList().contains(info.getSkill().getId()))
{
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
info.getEffected().getEffectList().stopSkillEffects(SkillFinishType.REMOVED, info.getSkill());
}
}
}

View File

@@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.ChatType;
import org.l2jmobius.gameserver.enums.InstanceReenterType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.enums.TrapAction;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
import org.l2jmobius.gameserver.instancemanager.InstanceManager;
@@ -983,7 +984,7 @@ public class CrystalCaverns extends AbstractInstance
}
if (world._dragonClawNeed == 0)
{
npc.stopSkillEffects(false, 5225);
npc.stopSkillEffects(SkillFinishType.SILENT, 5225);
npc.broadcastPacket(new MagicSkillUse(npc, npc, 5480, 1, 4000, 0));
if (world._raidStatus == 3)
{
@@ -1127,7 +1128,7 @@ public class CrystalCaverns extends AbstractInstance
if (player.getInstanceId() == world.getInstanceId())
{
teleportPlayer(player, new Location(144653, 152606, -12126), world.getInstanceId());
player.stopSkillEffects(true, 5239);
player.stopSkillEffects(SkillFinishType.REMOVED, 5239);
SkillData.getInstance().getSkill(5239, 1).applyEffects(player, player);
startQuestTimer("Timer2", 300000, npc, player);
}
@@ -1323,7 +1324,7 @@ public class CrystalCaverns extends AbstractInstance
}
else if (event.equalsIgnoreCase("baylor_remove_invul"))
{
npc.stopSkillEffects(false, 5225);
npc.stopSkillEffects(SkillFinishType.SILENT, 5225);
}
else if (event.equalsIgnoreCase("Baylor"))
{
@@ -1671,7 +1672,7 @@ public class CrystalCaverns extends AbstractInstance
{
for (PlayerInstance partyMember : party.getMembers())
{
partyMember.stopSkillEffects(true, 5239);
partyMember.stopSkillEffects(SkillFinishType.REMOVED, 5239);
}
}
cancelQuestTimers("Timer5");
@@ -1817,7 +1818,7 @@ public class CrystalCaverns extends AbstractInstance
{
if (partyMember.getInstanceId() == world.getInstanceId())
{
partyMember.stopSkillEffects(true, 5239);
partyMember.stopSkillEffects(SkillFinishType.REMOVED, 5239);
SkillData.getInstance().getSkill(5239, 2).applyEffects(partyMember, partyMember);
startQuestTimer("Timer3", 600000, npc, partyMember);
}
@@ -1825,7 +1826,7 @@ public class CrystalCaverns extends AbstractInstance
}
else
{
player.stopSkillEffects(true, 5239);
player.stopSkillEffects(SkillFinishType.REMOVED, 5239);
SkillData.getInstance().getSkill(5239, 2).applyEffects(player, player);
startQuestTimer("Timer3", 600000, npc, player);
}
@@ -1847,7 +1848,7 @@ public class CrystalCaverns extends AbstractInstance
{
if (partyMember.getInstanceId() == world.getInstanceId())
{
partyMember.stopSkillEffects(true, 5239);
partyMember.stopSkillEffects(SkillFinishType.REMOVED, 5239);
SkillData.getInstance().getSkill(5239, 4).applyEffects(partyMember, partyMember);
startQuestTimer("Timer4", 1200000, npc, partyMember);
}
@@ -1855,7 +1856,7 @@ public class CrystalCaverns extends AbstractInstance
}
else
{
player.stopSkillEffects(true, 5239);
player.stopSkillEffects(SkillFinishType.REMOVED, 5239);
SkillData.getInstance().getSkill(5239, 4).applyEffects(player, player);
startQuestTimer("Timer4", 1200000, npc, player);
}
@@ -1877,7 +1878,7 @@ public class CrystalCaverns extends AbstractInstance
{
if (partyMember.getInstanceId() == world.getInstanceId())
{
partyMember.stopSkillEffects(true, 5239);
partyMember.stopSkillEffects(SkillFinishType.REMOVED, 5239);
SkillData.getInstance().getSkill(5239, 3).applyEffects(partyMember, partyMember);
startQuestTimer("Timer5", 900000, npc, partyMember);
}
@@ -1885,7 +1886,7 @@ public class CrystalCaverns extends AbstractInstance
}
else
{
player.stopSkillEffects(true, 5239);
player.stopSkillEffects(SkillFinishType.REMOVED, 5239);
SkillData.getInstance().getSkill(5239, 3).applyEffects(player, player);
startQuestTimer("Timer5", 900000, npc, player);
}

View File

@@ -27,6 +27,7 @@ import java.util.logging.Level;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Party;
@@ -520,7 +521,7 @@ public class Kamaloka extends AbstractInstance
{
if ((info != null) && !info.getSkill().isStayAfterDeath() && (Arrays.binarySearch(BUFFS_WHITELIST, info.getSkill().getId()) < 0))
{
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
info.getEffected().getEffectList().stopSkillEffects(SkillFinishType.REMOVED, info.getSkill());
return true;
}
return false;

View File

@@ -25,6 +25,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager;
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
import org.l2jmobius.gameserver.model.actor.Attackable;
@@ -380,7 +381,7 @@ public class Q00311_ExpulsionOfEvilSpirits extends Quest
{
if (info.getSkill().getId() == DEBUFF_SKILL_ID)
{
info.getEffected().getEffectList().stopSkillEffects(true, DEBUFF_SKILL_ID);
info.getEffected().getEffectList().stopSkillEffects(SkillFinishType.REMOVED, DEBUFF_SKILL_ID);
}
}
_altar.broadcastPacket(new MagicSkillUse(_altar, player, DEBUFF_SKILL_ID, DEBUFF_SKILL_LEVEL, 1000, 0));

View File

@@ -0,0 +1,27 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.l2jmobius.gameserver.enums;
/**
* @author Mobius
*/
public enum SkillFinishType
{
NORMAL,
REMOVED,
SILENT;
}

View File

@@ -26,6 +26,7 @@ import java.util.logging.Logger;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.enums.DuelResult;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.enums.Team;
import org.l2jmobius.gameserver.instancemanager.DuelManager;
import org.l2jmobius.gameserver.instancemanager.InstanceManager;
@@ -160,7 +161,7 @@ public class Duel
{
if (skill != null)
{
_player.stopSkillEffects(true, skill.getId());
_player.stopSkillEffects(SkillFinishType.REMOVED, skill.getId());
}
}
}

View File

@@ -33,6 +33,7 @@ import java.util.logging.Logger;
import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -507,7 +508,7 @@ public class EffectList
*/
protected void stopAndRemove(BuffInfo info)
{
stopAndRemove(true, true, info, getEffectList(info.getSkill()));
stopAndRemove(true, SkillFinishType.REMOVED, info, getEffectList(info.getSkill()));
}
/**
@@ -518,17 +519,17 @@ public class EffectList
*/
protected void stopAndRemove(boolean broadcast, BuffInfo info, Queue<BuffInfo> effects)
{
stopAndRemove(broadcast, true, info, effects);
stopAndRemove(broadcast, SkillFinishType.REMOVED, info, effects);
}
/**
* Auxiliary method to stop all effects from a buff info and remove it from an effect list and stacked effects.
* @param broadcast if {@code true} broadcast abnormal visual effects
* @param removed {@code true} if the effect is removed, {@code false} otherwise
* @param type determines the system message that will be sent.
* @param info the buff info
* @param buffs the buff list
*/
private void stopAndRemove(boolean broadcast, boolean removed, BuffInfo info, Queue<BuffInfo> buffs)
private void stopAndRemove(boolean broadcast, SkillFinishType type, BuffInfo info, Queue<BuffInfo> buffs)
{
if (info == null)
{
@@ -538,7 +539,7 @@ public class EffectList
// Removes the buff from the given effect list.
buffs.remove(info);
// Stop the buff effects.
info.stopAllEffects(broadcast, removed);
info.stopAllEffects(type, broadcast);
// If it's a hidden buff that ends, then decrease hidden buff count.
if (!info.isInUse())
{
@@ -569,7 +570,7 @@ public class EffectList
}
}
if (!removed)
if (type != SkillFinishType.REMOVED)
{
info.getSkill().applyEffectScope(EffectScope.END, info, true, false);
}
@@ -894,18 +895,15 @@ public class EffectList
* Removes the effects from the effect list.<br>
* Removes the stats from the creature.<br>
* Updates the effect flags and icons.<br>
* Presents two overloads:<br>
* {@link #stopSkillEffects(boolean, Skill)}<br>
* {@link #stopSkillEffects(boolean, AbnormalType)}
* @param removed {@code true} if the effect is removed, {@code false} otherwise
* @param type determines the system message that will be sent.
* @param skillId the skill ID
*/
public void stopSkillEffects(boolean removed, int skillId)
public void stopSkillEffects(SkillFinishType type, int skillId)
{
final BuffInfo info = getBuffInfoBySkillId(skillId);
if (info != null)
{
remove(removed, info);
remove(type, info);
}
}
@@ -914,36 +912,30 @@ public class EffectList
* Removes the effects from the effect list.<br>
* Removes the stats from the creature.<br>
* Updates the effect flags and icons.<br>
* Presents two overloads:<br>
* {@link #stopSkillEffects(boolean, int)}<br>
* {@link #stopSkillEffects(boolean, AbnormalType)}
* @param removed {@code true} if the effect is removed, {@code false} otherwise
* @param type determines the system message that will be sent.
* @param skill the skill
*/
public void stopSkillEffects(boolean removed, Skill skill)
public void stopSkillEffects(SkillFinishType type, Skill skill)
{
if (skill != null)
{
stopSkillEffects(removed, skill.getId());
stopSkillEffects(type, skill.getId());
}
}
/**
* Exits all effects created by a specific skill abnormal type.<br>
* It's O(1) for every effect in this effect list except passive effects.<br>
* Presents two overloads:<br>
* {@link #stopSkillEffects(boolean, int)}<br>
* {@link #stopSkillEffects(boolean, Skill)}
* @param removed {@code true} if the effect is removed, {@code false} otherwise
* @param type the skill abnormal type
* @param removeType determines the system message that will be sent.
* @param abnormalType the skill abnormal type
* @return {@code true} if there was a buff info with the given abnormal type
*/
public boolean stopSkillEffects(boolean removed, AbnormalType type)
public boolean stopSkillEffects(SkillFinishType removeType, AbnormalType abnormalType)
{
final BuffInfo old = _stackedEffects.remove(type);
final BuffInfo old = _stackedEffects.remove(abnormalType);
if (old != null)
{
stopSkillEffects(removed, old.getSkill());
stopSkillEffects(removeType, old.getSkill());
return true;
}
return false;
@@ -1196,10 +1188,10 @@ public class EffectList
/**
* Removes a set of effects from this effect list.
* @param removed {@code true} if the effect is removed, {@code false} otherwise
* @param type determines the system message that will be sent.
* @param info the effects to remove
*/
public void remove(boolean removed, BuffInfo info)
public void remove(SkillFinishType type, BuffInfo info)
{
if (info == null)
{
@@ -1207,7 +1199,7 @@ public class EffectList
}
// Remove the effect from creature effects.
stopAndRemove(true, removed, info, getEffectList(info.getSkill()));
stopAndRemove(true, type, info, getEffectList(info.getSkill()));
// Update effect flags and icons.
updateEffectList(true);
}
@@ -1275,7 +1267,7 @@ public class EffectList
// Where new buff should be placed
if (skill.getAbnormalType().isNone())
{
stopSkillEffects(false, skill);
stopSkillEffects(SkillFinishType.NORMAL, skill);
}
else // Verify stacked skills.
{
@@ -1295,7 +1287,7 @@ public class EffectList
{
if (stackedInfo.getSkill().isAbnormalInstant())
{
stopSkillEffects(false, skill.getAbnormalType());
stopSkillEffects(SkillFinishType.NORMAL, skill.getAbnormalType());
stackedInfo = _stackedEffects.get(skill.getAbnormalType());
}
@@ -1311,9 +1303,9 @@ public class EffectList
{
if (stackedInfo.getSkill().isAbnormalInstant())
{
stopSkillEffects(false, skill.getAbnormalType());
stopSkillEffects(SkillFinishType.NORMAL, skill.getAbnormalType());
}
stopSkillEffects(false, skill.getAbnormalType());
stopSkillEffects(SkillFinishType.NORMAL, skill.getAbnormalType());
}
}
else // If the new buff is a lesser buff, then don't add it.

View File

@@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.enums.InstanceType;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.ShotType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.enums.Team;
import org.l2jmobius.gameserver.enums.TeleportWhereType;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
@@ -3234,12 +3235,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
/**
* Stop and remove the effects corresponding to the skill ID.
* @param removed if {@code true} the effect will be set as removed, and a system message will be sent
* @param type determines the system message that will be sent.
* @param skillId the skill Id
*/
public void stopSkillEffects(boolean removed, int skillId)
public void stopSkillEffects(SkillFinishType type, int skillId)
{
_effectList.stopSkillEffects(removed, skillId);
_effectList.stopSkillEffects(type, skillId);
}
public void stopEffects(EffectType type)
@@ -3338,7 +3339,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
if (removeEffects)
{
_effectList.stopSkillEffects(false, AbnormalType.TRANSFORM);
_effectList.stopSkillEffects(SkillFinishType.NORMAL, AbnormalType.TRANSFORM);
}
// if this is a player instance, then untransform, also set the transform_id column equal to 0 if not cursed.
@@ -5182,7 +5183,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
if (oldSkill.isPassive())
{
stopSkillEffects(false, oldSkill.getId());
stopSkillEffects(SkillFinishType.NORMAL, oldSkill.getId());
}
}
// Add Func objects of newSkill to the calculator set of the Creature
@@ -5226,7 +5227,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
if (cancelEffect || oldSkill.isToggle() || oldSkill.isPassive())
{
removeStatsOwner(oldSkill);
stopSkillEffects(true, oldSkill.getId());
stopSkillEffects(SkillFinishType.REMOVED, oldSkill.getId());
}
}

View File

@@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.InstanceType;
import org.l2jmobius.gameserver.enums.ItemLocation;
import org.l2jmobius.gameserver.enums.PartyDistributionType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.handler.IItemHandler;
import org.l2jmobius.gameserver.handler.ItemHandler;
import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager;
@@ -893,9 +894,9 @@ public class PetInstance extends Summon
}
@Override
public void stopSkillEffects(boolean removed, int skillId)
public void stopSkillEffects(SkillFinishType type, int skillId)
{
super.stopSkillEffects(removed, skillId);
super.stopSkillEffects(type, skillId);
SummonEffectTable.getInstance().removePetEffects(getControlObjectId(), skillId);
}

View File

@@ -92,6 +92,7 @@ import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.Sex;
import org.l2jmobius.gameserver.enums.ShortcutType;
import org.l2jmobius.gameserver.enums.ShotType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.enums.Team;
import org.l2jmobius.gameserver.enums.TeleportWhereType;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
@@ -2700,7 +2701,7 @@ public class PlayerInstance extends Playable
// Fix when learning toggle skills.
if (sk.isToggle() && isAffectedBySkill(sk.getId()))
{
stopSkillEffects(true, sk.getId());
stopSkillEffects(SkillFinishType.REMOVED, sk.getId());
}
addSkill(sk, false);
@@ -4769,7 +4770,7 @@ public class PlayerInstance extends Playable
setQueuedSkill(null, false, false);
_transformation.onUntransform(this);
_transformation = null;
getEffectList().stopSkillEffects(false, AbnormalType.TRANSFORM);
getEffectList().stopSkillEffects(SkillFinishType.NORMAL, AbnormalType.TRANSFORM);
sendSkillList();
sendPacket(new SkillCoolTime(this));
broadcastUserInfo();
@@ -8650,7 +8651,7 @@ public class PlayerInstance extends Playable
// Check if the skill type is toggle.
if (skill.isToggle() && isAffectedBySkill(skill.getId()))
{
stopSkillEffects(true, skill.getId());
stopSkillEffects(SkillFinishType.REMOVED, skill.getId());
sendPacket(ActionFailed.STATIC_PACKET);
return false;
}
@@ -9494,7 +9495,7 @@ public class PlayerInstance extends Playable
setLastLocation();
// Remove Hide.
getEffectList().stopSkillEffects(true, AbnormalType.HIDE);
getEffectList().stopSkillEffects(SkillFinishType.REMOVED, AbnormalType.HIDE);
_observerMode = true;
setTarget(null);
setParalyzed(true);
@@ -9524,7 +9525,7 @@ public class PlayerInstance extends Playable
}
// Remove Hide.
getEffectList().stopSkillEffects(true, AbnormalType.HIDE);
getEffectList().stopSkillEffects(SkillFinishType.REMOVED, AbnormalType.HIDE);
if (!_cubics.isEmpty())
{
for (CubicInstance cubic : _cubics.values())

View File

@@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.data.sql.CharSummonTable;
import org.l2jmobius.gameserver.data.sql.SummonEffectTable;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.InstanceType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon;
@@ -187,9 +188,9 @@ public class ServitorInstance extends Summon implements Runnable
}
@Override
public void stopSkillEffects(boolean removed, int skillId)
public void stopSkillEffects(SkillFinishType type, int skillId)
{
super.stopSkillEffects(removed, skillId);
super.stopSkillEffects(type, skillId);
SummonEffectTable.getInstance().removeServitorEffects(getOwner(), getReferenceSkill(), skillId);
}

View File

@@ -21,6 +21,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.data.xml.NpcNameLocalisationData;
import org.l2jmobius.gameserver.enums.PrivateStoreType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.instancemanager.DuelManager;
import org.l2jmobius.gameserver.model.Duel;
import org.l2jmobius.gameserver.model.actor.Creature;
@@ -157,7 +158,7 @@ public class PlayerStatus extends PlayableStatus
if (mpDam > getActiveChar().getCurrentMp())
{
getActiveChar().sendPacket(SystemMessageId.MP_BECAME_0_AND_THE_ARCANE_SHIELD_IS_DISAPPEARING);
getActiveChar().stopSkillEffects(true, 1556);
getActiveChar().stopSkillEffects(SkillFinishType.REMOVED, 1556);
amount = mpDam - getActiveChar().getCurrentMp();
getActiveChar().setCurrentMp(0);
}

View File

@@ -21,6 +21,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.CubicInstance;
import org.l2jmobius.gameserver.model.effects.EffectType;
@@ -98,7 +99,7 @@ public class CubicAction implements Runnable
if (info.getSkill().canBeDispeled())
{
useCubicCure = true;
info.getEffected().getEffectList().stopSkillEffects(true, info.getSkill());
info.getEffected().getEffectList().stopSkillEffects(SkillFinishType.REMOVED, info.getSkill());
}
}
}

View File

@@ -23,6 +23,7 @@ import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.atomic.AtomicInteger;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.enums.SkillFinishType;
/**
* @author Mobius
@@ -37,7 +38,7 @@ public class BuffFinishTask
final BuffInfo info = entry.getKey();
if ((info.getEffected() != null) && (entry.getValue().incrementAndGet() > info.getAbnormalTime()))
{
info.getEffected().getEffectList().stopSkillEffects(false, info.getSkill().getId());
info.getEffected().getEffectList().stopSkillEffects(SkillFinishType.NORMAL, info.getSkill().getId());
}
}
}, 0, 1000);

View File

@@ -24,6 +24,7 @@ import java.util.concurrent.ScheduledFuture;
import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.EffectList;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon;
@@ -59,7 +60,7 @@ public class BuffInfo
private final int _periodStartTicks;
// Misc
/** If {@code true} then this effect has been cancelled. */
private boolean _isRemoved = false;
private volatile SkillFinishType _finishType = SkillFinishType.NORMAL;
/** If {@code true} then this effect is in use (or has been stop because an Herb took place). */
private boolean _isInUse = true;
@@ -167,16 +168,16 @@ public class BuffInfo
*/
public boolean isRemoved()
{
return _isRemoved;
return _finishType == SkillFinishType.REMOVED;
}
/**
* Set the buff info to removed.
* @param value the value to set
* @param type the SkillFinishType to set
*/
public void setRemoved(boolean value)
public void setFinishType(SkillFinishType type)
{
_isRemoved = value;
_finishType = type;
}
/**
@@ -219,13 +220,14 @@ public class BuffInfo
* Stops all the effects for this buff info.<br>
* Removes effects stats.<br>
* <b>It will not remove the buff info from the effect list</b>.<br>
* Instead call {@link EffectList#stopSkillEffects(boolean, Skill)}
* Instead call {@link EffectList#stopSkillEffects(SkillFinishType, Skill)}
* @param type determines the system message that will be sent.
* @param broadcast if {@code true} broadcast abnormal visual effects
* @param removed if {@code true} the skill will be handled as removed
*/
public void stopAllEffects(boolean broadcast, boolean removed)
public void stopAllEffects(SkillFinishType type, boolean broadcast)
{
setRemoved(removed);
setFinishType(type);
// Remove this buff info from BuffFinishTask.
_effected.removeBuffInfoTime(this);
finishEffects(broadcast);
@@ -315,7 +317,7 @@ public class BuffInfo
{
schedule.cancel(true); // Don't allow to finish current run.
}
_effected.getEffectList().stopSkillEffects(true, _skill); // Remove the buff from the effect list.
_effected.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, _skill); // Remove the buff from the effect list.
}
}
}
@@ -348,11 +350,15 @@ public class BuffInfo
if (!(_effected.isSummon() && !((Summon) _effected).getOwner().hasSummon()))
{
SystemMessageId smId = null;
if (_skill.isToggle())
if (_finishType == SkillFinishType.SILENT)
{
// smId is null.
}
else if (_skill.isToggle())
{
smId = SystemMessageId.S1_HAS_BEEN_ABORTED;
}
else if (_isRemoved)
else if (_finishType == SkillFinishType.REMOVED)
{
smId = SystemMessageId.THE_EFFECT_OF_S1_HAS_BEEN_REMOVED;
}
@@ -453,6 +459,6 @@ public class BuffInfo
@Override
public String toString()
{
return "BuffInfo [effector=" + _effector + ", effected=" + _effected + ", skill=" + _skill + ", effects=" + _effects + ", tasks=" + _tasks + ", abnormalTime=" + _abnormalTime + ", periodStartTicks=" + _periodStartTicks + ", isRemoved=" + _isRemoved + ", isInUse=" + _isInUse + "]";
return "BuffInfo [effector=" + _effector + ", effected=" + _effected + ", skill=" + _skill + ", effects=" + _effects + ", tasks=" + _tasks + ", abnormalTime=" + _abnormalTime + ", periodStartTicks=" + _periodStartTicks + ", isRemoved=" + isRemoved() + ", isInUse=" + _isInUse + "]";
}
}

View File

@@ -32,6 +32,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.enums.ShotType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.handler.TargetHandler;
@@ -1455,7 +1456,7 @@ public class Skill implements IIdentifiable
{
if (caster.isAffectedBySkill(_id))
{
caster.stopSkillEffects(true, _id);
caster.stopSkillEffects(SkillFinishType.REMOVED, _id);
}
applyEffects(caster, caster, true, false, true, 0);
}

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets;
import org.l2jmobius.Config;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.skills.AbnormalType;
import org.l2jmobius.gameserver.model.skills.Skill;
@@ -70,6 +71,6 @@ public class RequestDispel implements IClientIncomingPacket
return;
}
player.stopSkillEffects(true, _skillId);
player.stopSkillEffects(SkillFinishType.REMOVED, _skillId);
}
}