Addition of EffectZone removeEffectsOnExit parameter.

Thanks to CostyKiller and nasseka.
This commit is contained in:
MobiusDevelopment
2022-02-05 03:16:56 +00:00
parent ff1525bcc3
commit 987629ea69
57 changed files with 831 additions and 9 deletions

View File

@@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.InstanceType;
import org.l2jmobius.gameserver.enums.SkillFinishType;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.zone.ZoneId;
@@ -42,6 +43,7 @@ public class EffectZone extends ZoneType
private int _reuse;
protected boolean _bypassConditions;
private boolean _isShowDangerIcon;
private boolean _removeEffectsOnExit;
protected Map<Integer, Integer> _skills;
protected volatile Future<?> _task;
@@ -54,6 +56,7 @@ public class EffectZone extends ZoneType
setTargetType(InstanceType.Playable); // default only playable
_bypassConditions = false;
_isShowDangerIcon = true;
_removeEffectsOnExit = false;
}
@Override
@@ -119,6 +122,11 @@ public class EffectZone extends ZoneType
}
break;
}
case "removeEffectsOnExit":
{
_removeEffectsOnExit = Boolean.parseBoolean(value);
break;
}
default:
{
super.setParameter(name, value);
@@ -170,6 +178,17 @@ public class EffectZone extends ZoneType
creature.sendPacket(new EtcStatusUpdate(creature.getActingPlayer()));
}
}
if (_removeEffectsOnExit && (_skills != null))
{
for (Entry<Integer, Integer> e : _skills.entrySet())
{
final Skill skill = SkillData.getInstance().getSkill(e.getKey().intValue(), e.getValue().intValue());
if ((skill != null) && creature.isAffectedBySkill(skill.getId()))
{
creature.stopSkillEffects(SkillFinishType.REMOVED, skill.getId());
}
}
}
}
if (getCharactersInside().isEmpty() && (_task != null))