Removed BuffInfo from effect handlers.
This commit is contained in:
		| @@ -18,6 +18,11 @@ package events.HuntForSanta; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.actor.L2Npc; | ||||
| import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; | ||||
| import com.l2jmobius.gameserver.model.events.EventType; | ||||
| import com.l2jmobius.gameserver.model.events.ListenerRegisterType; | ||||
| import com.l2jmobius.gameserver.model.events.annotations.RegisterEvent; | ||||
| import com.l2jmobius.gameserver.model.events.annotations.RegisterType; | ||||
| import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLogin; | ||||
| import com.l2jmobius.gameserver.model.holders.SkillHolder; | ||||
| import com.l2jmobius.gameserver.model.quest.LongTimeEvent; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| @@ -39,7 +44,7 @@ public final class HuntForSanta extends LongTimeEvent | ||||
| 	private static final SkillHolder BUFF_TREE = new SkillHolder(16420, 1); | ||||
| 	private static final SkillHolder BUFF_SNOWMAN = new SkillHolder(16421, 1); | ||||
| 	// Item | ||||
| 	// private static final int SANTAS_MARK = 40313; | ||||
| 	private static final int SANTAS_MARK = 40313; | ||||
| 	 | ||||
| 	private HuntForSanta() | ||||
| 	{ | ||||
| @@ -63,21 +68,27 @@ public final class HuntForSanta extends LongTimeEvent | ||||
| 			case "receiveBuffStocking": | ||||
| 			{ | ||||
| 				htmltext = applyBuff(npc, player, BUFF_STOCKING.getSkill()); | ||||
| 				startQuestTimer("rewardBuffStocking" + player.getObjectId(), 7200000, null, player); | ||||
| 				break; | ||||
| 			} | ||||
| 			case "receiveBuffTree": | ||||
| 			{ | ||||
| 				htmltext = applyBuff(npc, player, BUFF_TREE.getSkill()); | ||||
| 				startQuestTimer("rewardBuffTree" + player.getObjectId(), 7200000, null, player); | ||||
| 				break; | ||||
| 			} | ||||
| 			case "receiveBuffSnowman": | ||||
| 			{ | ||||
| 				htmltext = applyBuff(npc, player, BUFF_SNOWMAN.getSkill()); | ||||
| 				startQuestTimer("rewardBuffSnowman" + player.getObjectId(), 7200000, null, player); | ||||
| 				break; | ||||
| 			} | ||||
| 			case "receiveBuffAll": | ||||
| 			{ | ||||
| 				htmltext = applyAllBuffs(npc, player); | ||||
| 				startQuestTimer("rewardBuffStocking" + player.getObjectId(), 7200000, null, player); | ||||
| 				startQuestTimer("rewardBuffTree" + player.getObjectId(), 7200000, null, player); | ||||
| 				startQuestTimer("rewardBuffSnowman" + player.getObjectId(), 7200000, null, player); | ||||
| 				break; | ||||
| 			} | ||||
| 			case "changeBuff": | ||||
| @@ -87,6 +98,17 @@ public final class HuntForSanta extends LongTimeEvent | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		if (event.startsWith("rewardBuffStocking") // | ||||
| 			|| event.startsWith("rewardBuffSnowman") // | ||||
| 			|| event.startsWith("rewardBuffTree")) | ||||
| 		{ | ||||
| 			if ((player != null) && (player.isOnlineInt() == 1)) | ||||
| 			{ | ||||
| 				giveItems(player, SANTAS_MARK, 1); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		return htmltext; | ||||
| 	} | ||||
| 	 | ||||
| @@ -128,20 +150,36 @@ public final class HuntForSanta extends LongTimeEvent | ||||
| 	 | ||||
| 	private void removeBuffs(L2PcInstance player) | ||||
| 	{ | ||||
| 		player.getEffectList().stopSkillEffects(true, BUFF_STOCKING.getSkill()); | ||||
| 		player.getEffectList().stopSkillEffects(true, BUFF_TREE.getSkill()); | ||||
| 		player.getEffectList().stopSkillEffects(true, BUFF_SNOWMAN.getSkill()); | ||||
| 		cancelQuestTimer("rewardBuffStocking" + player.getObjectId(), null, player); | ||||
| 		cancelQuestTimer("rewardBuffTree" + player.getObjectId(), null, player); | ||||
| 		cancelQuestTimer("rewardBuffSnowman" + player.getObjectId(), null, player); | ||||
| 	} | ||||
| 	 | ||||
| 	@RegisterEvent(EventType.ON_PLAYER_LOGIN) | ||||
| 	@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) | ||||
| 	public void OnPlayerLogin(OnPlayerLogin event) | ||||
| 	{ | ||||
| 		final L2PcInstance player = event.getActiveChar(); | ||||
| 		final BuffInfo buffStocking = player.getEffectList().getBuffInfoBySkillId(BUFF_STOCKING.getSkillId()); | ||||
| 		final BuffInfo buffTree = player.getEffectList().getBuffInfoBySkillId(BUFF_TREE.getSkillId()); | ||||
| 		final BuffInfo buffSnowman = player.getEffectList().getBuffInfoBySkillId(BUFF_SNOWMAN.getSkillId()); | ||||
| 		if (buffStocking != null) | ||||
| 		{ | ||||
| 			player.getEffectList().stopSkillEffects(true, buffStocking.getSkill()); | ||||
| 			cancelQuestTimer("rewardBuffStocking" + player.getObjectId(), null, player); | ||||
| 			startQuestTimer("rewardBuffStocking" + player.getObjectId(), buffStocking.getTime() * 1000, null, player); | ||||
| 		} | ||||
| 		if (buffTree != null) | ||||
| 		{ | ||||
| 			player.getEffectList().stopSkillEffects(true, buffTree.getSkill()); | ||||
| 			cancelQuestTimer("rewardBuffTree" + player.getObjectId(), null, player); | ||||
| 			startQuestTimer("rewardBuffTree" + player.getObjectId(), buffTree.getTime() * 1000, null, player); | ||||
| 		} | ||||
| 		if (buffSnowman != null) | ||||
| 		{ | ||||
| 			player.getEffectList().stopSkillEffects(true, buffSnowman.getSkill()); | ||||
| 			cancelQuestTimer("rewardBuffSnowman" + player.getObjectId(), null, player); | ||||
| 			startQuestTimer("rewardBuffSnowman" + player.getObjectId(), buffSnowman.getTime() * 1000, null, player); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
|   | ||||
| @@ -280,7 +280,6 @@ public final class EffectMasterHandler | ||||
| 		EffectHandler.getInstance().registerHandler("ResurrectionSpecial", ResurrectionSpecial::new); | ||||
| 		EffectHandler.getInstance().registerHandler("Reuse", Reuse::new); | ||||
| 		EffectHandler.getInstance().registerHandler("ReuseSkillById", ReuseSkillById::new); | ||||
| 		EffectHandler.getInstance().registerHandler("RewardItemOnExit", RewardItemOnExit::new); | ||||
| 		EffectHandler.getInstance().registerHandler("Root", Root::new); | ||||
| 		EffectHandler.getInstance().registerHandler("SacrificeSummon", SacrificeSummon::new); | ||||
| 		EffectHandler.getInstance().registerHandler("SafeFallHeight", SafeFallHeight::new); | ||||
|   | ||||
| @@ -17,10 +17,11 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * An effect that blocks a debuff. Acts like DOTA's Linken Sphere. | ||||
| @@ -36,9 +37,9 @@ public final class AbnormalShield extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().setAbnormalShieldBlocks(_times); | ||||
| 		effected.setAbnormalShieldBlocks(_times); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -48,9 +49,9 @@ public final class AbnormalShield extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().setAbnormalShieldBlocks(Integer.MIN_VALUE); | ||||
| 		effected.setAbnormalShieldBlocks(Integer.MIN_VALUE); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -20,12 +20,13 @@ import java.util.Map; | ||||
| import java.util.concurrent.ConcurrentHashMap; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.events.EventType; | ||||
| import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureDamageReceived; | ||||
| import com.l2jmobius.gameserver.model.events.listeners.FunctionEventListener; | ||||
| import com.l2jmobius.gameserver.model.events.returns.DamageReturn; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * @author Sdw | ||||
| @@ -60,16 +61,16 @@ public class AbsorbDamage extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this); | ||||
| 		_damageHolder.remove(info.getEffected().getObjectId()); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this); | ||||
| 		_damageHolder.remove(effected.getObjectId()); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		_damageHolder.put(info.getEffected().getObjectId(), _damage); | ||||
| 		info.getEffected().addListener(new FunctionEventListener(info.getEffected(), EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this)); | ||||
| 		_damageHolder.put(effected.getObjectId(), _damage); | ||||
| 		effected.addListener(new FunctionEventListener(effected, EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this)); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.holders.SkillHolder; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -52,8 +51,8 @@ public class AddSkillBySkill extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeSkill(_addedSkill.getSkill(), true); | ||||
| 		effected.removeSkill(_addedSkill.getSkill(), true); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -30,7 +30,6 @@ import com.l2jmobius.gameserver.model.base.ClassId; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.ExAlterSkillRequest; | ||||
|  | ||||
| @@ -101,11 +100,11 @@ public final class AirBind extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (!info.getEffected().isPlayer()) | ||||
| 		if (!effected.isPlayer()) | ||||
| 		{ | ||||
| 			info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_THINK); | ||||
| 			effected.getAI().notifyEvent(CtrlEvent.EVT_THINK); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
|   | ||||
| @@ -24,7 +24,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.stat.CharStat; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.TraitType; | ||||
|  | ||||
| @@ -51,9 +50,9 @@ public final class AttackTrait extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		final CharStat charStat = info.getEffected().getStat(); | ||||
| 		final CharStat charStat = effected.getStat(); | ||||
| 		synchronized (charStat.getAttackTraits()) | ||||
| 		{ | ||||
| 			for (Entry<TraitType, Float> trait : _attackTraits.entrySet()) | ||||
|   | ||||
| @@ -21,7 +21,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -35,9 +34,9 @@ public final class Betray extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return info.getEffector().isPlayer() && info.getEffected().isSummon(); | ||||
| 		return effector.isPlayer() && effected.isSummon(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -53,8 +52,8 @@ public final class Betray extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); | ||||
| 		effected.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -23,7 +23,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.FlyToLocation; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType; | ||||
| @@ -70,10 +69,10 @@ public final class Blink extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		// While affected by escape blocking effect you cannot use Blink or Scroll of Escape | ||||
| 		return !info.getEffected().cannotEscape(); | ||||
| 		return !effected.cannotEscape(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -24,7 +24,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.AbnormalType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -47,8 +46,8 @@ public final class BlockAbnormalSlot extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getEffectList().removeBlockedAbnormalTypes(_blockAbnormalSlots); | ||||
| 		effected.getEffectList().removeBlockedAbnormalTypes(_blockAbnormalSlots); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -27,7 +27,6 @@ import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.punishment.PunishmentAffect; | ||||
| import com.l2jmobius.gameserver.model.punishment.PunishmentTask; | ||||
| import com.l2jmobius.gameserver.model.punishment.PunishmentType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -48,9 +47,9 @@ public final class BlockAction extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffected() != null) && info.getEffected().isPlayer(); | ||||
| 		return (effected != null) && effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -74,15 +73,15 @@ public final class BlockAction extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (_blockedActions.contains(BotReportTable.PARTY_ACTION_BLOCK_ID)) | ||||
| 		{ | ||||
| 			PunishmentManager.getInstance().stopPunishment(info.getEffected().getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.PARTY_BAN); | ||||
| 			PunishmentManager.getInstance().stopPunishment(effected.getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.PARTY_BAN); | ||||
| 		} | ||||
| 		if (_blockedActions.contains(BotReportTable.CHAT_BLOCK_ID)) | ||||
| 		{ | ||||
| 			PunishmentManager.getInstance().stopPunishment(info.getEffected().getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN); | ||||
| 			PunishmentManager.getInstance().stopPunishment(effected.getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -26,7 +26,6 @@ import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -63,9 +62,8 @@ public final class BlockActions extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		final L2Character effected = info.getEffected(); | ||||
| 		_allowedSkills.stream().forEach(effected::removeBlockActionsAllowedSkill); | ||||
| 		if (!effected.isPlayer()) | ||||
| 		{ | ||||
|   | ||||
| @@ -24,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.punishment.PunishmentAffect; | ||||
| import com.l2jmobius.gameserver.model.punishment.PunishmentTask; | ||||
| import com.l2jmobius.gameserver.model.punishment.PunishmentType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -38,9 +37,9 @@ public final class BlockChat extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffected() != null) && info.getEffected().isPlayer(); | ||||
| 		return (effected != null) && effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -56,8 +55,8 @@ public final class BlockChat extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		PunishmentManager.getInstance().stopPunishment(info.getEffected().getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN); | ||||
| 		PunishmentManager.getInstance().stopPunishment(effected.getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -19,7 +19,6 @@ package handlers.effecthandlers; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -39,8 +38,8 @@ public final class BlockMove extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().setIsImmobilized(false); | ||||
| 		effected.setIsImmobilized(false); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -23,7 +23,6 @@ import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.punishment.PunishmentAffect; | ||||
| import com.l2jmobius.gameserver.model.punishment.PunishmentTask; | ||||
| import com.l2jmobius.gameserver.model.punishment.PunishmentType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -37,9 +36,9 @@ public final class BlockParty extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffected() != null) && info.getEffected().isPlayer(); | ||||
| 		return (effected != null) && effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -49,8 +48,8 @@ public final class BlockParty extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		PunishmentManager.getInstance().stopPunishment(info.getEffected().getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.PARTY_BAN); | ||||
| 		PunishmentManager.getInstance().stopPunishment(effected.getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.PARTY_BAN); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -18,12 +18,13 @@ package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.commons.util.CommonUtil; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.events.EventType; | ||||
| import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureSkillUse; | ||||
| import com.l2jmobius.gameserver.model.events.listeners.FunctionEventListener; | ||||
| import com.l2jmobius.gameserver.model.events.returns.TerminateReturn; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * Block Skills by isMagic type. | ||||
| @@ -49,20 +50,20 @@ public final class BlockSkill extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if ((_magicTypes == null) || (_magicTypes.length == 0)) | ||||
| 		{ | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffected().addListener(new FunctionEventListener(info.getEffected(), EventType.ON_CREATURE_SKILL_USE, (OnCreatureSkillUse event) -> onSkillUseEvent(event), this)); | ||||
| 		effected.addListener(new FunctionEventListener(effected, EventType.ON_CREATURE_SKILL_USE, (OnCreatureSkillUse event) -> onSkillUseEvent(event), this)); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_SKILL_USE, listener -> listener.getOwner() == this); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_SKILL_USE, listener -> listener.getOwner() == this); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
|   | ||||
| @@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.model.L2World; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -46,8 +45,8 @@ public class BlockTarget extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().setTargetable(true); | ||||
| 		effected.setTargetable(true); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.holders.SkillHolder; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.skills.SkillCaster; | ||||
|  | ||||
| @@ -40,40 +39,35 @@ public final class CallSkillOnActionTime extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return castSkill(info); | ||||
| 	} | ||||
| 	 | ||||
| 	private boolean castSkill(BuffInfo info) | ||||
| 	{ | ||||
| 		if (info.getEffector().isDead()) | ||||
| 		if (effector.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		final Skill skill = _skill.getSkill(); | ||||
| 		if (skill != null) | ||||
| 		final Skill triggerSkill = _skill.getSkill(); | ||||
| 		if (triggerSkill != null) | ||||
| 		{ | ||||
| 			if (skill.isSynergySkill()) | ||||
| 			if (triggerSkill.isSynergySkill()) | ||||
| 			{ | ||||
| 				skill.applyEffects(info.getEffector(), info.getEffector()); | ||||
| 				triggerSkill.applyEffects(effector, effector); | ||||
| 			} | ||||
| 			 | ||||
| 			L2World.getInstance().forEachVisibleObjectInRange(info.getEffector(), L2Character.class, _skill.getSkill().getAffectRange(), c -> | ||||
| 			L2World.getInstance().forEachVisibleObjectInRange(effector, L2Character.class, _skill.getSkill().getAffectRange(), c -> | ||||
| 			{ | ||||
| 				final L2Object target = skill.getTarget(info.getEffector(), c, false, false, false); | ||||
| 				final L2Object target = triggerSkill.getTarget(effector, c, false, false, false); | ||||
| 				 | ||||
| 				if ((target != null) && target.isCharacter()) | ||||
| 				{ | ||||
| 					SkillCaster.triggerCast(info.getEffector(), (L2Character) target, skill); | ||||
| 					SkillCaster.triggerCast(effector, (L2Character) target, triggerSkill); | ||||
| 				} | ||||
| 			}); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			_log.warning("Skill not found effect called from " + info.getSkill()); | ||||
| 			_log.warning("Skill not found effect called from " + skill); | ||||
| 		} | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
|  | ||||
| @@ -52,30 +51,30 @@ public final class ChameleonRest extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead()) | ||||
| 		if (effected.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		if (info.getEffected().isPlayer()) | ||||
| 		if (effected.isPlayer()) | ||||
| 		{ | ||||
| 			if (!info.getEffected().getActingPlayer().isSitting()) | ||||
| 			if (!effected.getActingPlayer().isSitting()) | ||||
| 			{ | ||||
| 				return false; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		final double manaDam = _power * getTicksMultiplier(); | ||||
| 		if (manaDam > info.getEffected().getCurrentMp()) | ||||
| 		if (manaDam > effected.getCurrentMp()) | ||||
| 		{ | ||||
| 			info.getEffected().sendPacket(SystemMessageId.YOUR_SKILL_WAS_DEACTIVATED_DUE_TO_LACK_OF_MP); | ||||
| 			effected.sendPacket(SystemMessageId.YOUR_SKILL_WAS_DEACTIVATED_DUE_TO_LACK_OF_MP); | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffected().reduceCurrentMp(manaDam); | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		effected.reduceCurrentMp(manaDam); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -24,7 +24,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.holders.TemplateChanceHolder; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -44,9 +43,9 @@ public final class ChangeBody extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return !info.getEffected().isDoor(); | ||||
| 		return !effected.isDoor(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -63,8 +62,8 @@ public final class ChangeBody extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().stopTransformation(false); | ||||
| 		effected.stopTransformation(false); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,8 +17,9 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * Cp Heal Over Time effect implementation. | ||||
| @@ -34,15 +35,15 @@ public final class CpHealOverTime extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead()) | ||||
| 		if (effected.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		double cp = info.getEffected().getCurrentCp(); | ||||
| 		final double maxcp = info.getEffected().getMaxRecoverableCp(); | ||||
| 		double cp = effected.getCurrentCp(); | ||||
| 		final double maxcp = effected.getMaxRecoverableCp(); | ||||
| 		 | ||||
| 		// Not needed to set the CP and send update packet if player is already at max CP | ||||
| 		if (cp >= maxcp) | ||||
| @@ -52,8 +53,8 @@ public final class CpHealOverTime extends AbstractEffect | ||||
| 		 | ||||
| 		cp += _power * getTicksMultiplier(); | ||||
| 		cp = Math.min(cp, maxcp); | ||||
| 		info.getEffected().setCurrentCp(cp, false); | ||||
| 		info.getEffected().broadcastStatusUpdate(info.getEffector()); | ||||
| 		effected.setCurrentCp(cp, false); | ||||
| 		effected.broadcastStatusUpdate(effector); | ||||
| 		return true; | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -19,8 +19,9 @@ package handlers.effecthandlers; | ||||
| import com.l2jmobius.commons.util.MathUtil; | ||||
| import com.l2jmobius.gameserver.enums.Position; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Stats; | ||||
|  | ||||
| /** | ||||
| @@ -38,14 +39,14 @@ public class CriticalDamagePosition extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().mergePositionTypeValue(Stats.CRITICAL_DAMAGE, _position, (_amount / 100) + 1, MathUtil::mul); | ||||
| 		effected.getStat().mergePositionTypeValue(Stats.CRITICAL_DAMAGE, _position, (_amount / 100) + 1, MathUtil::mul); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().mergePositionTypeValue(Stats.CRITICAL_DAMAGE, _position, (_amount / 100) + 1, MathUtil::div); | ||||
| 		effected.getStat().mergePositionTypeValue(Stats.CRITICAL_DAMAGE, _position, (_amount / 100) + 1, MathUtil::div); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -19,8 +19,9 @@ package handlers.effecthandlers; | ||||
| import com.l2jmobius.commons.util.MathUtil; | ||||
| import com.l2jmobius.gameserver.enums.Position; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Stats; | ||||
|  | ||||
| /** | ||||
| @@ -38,14 +39,14 @@ public class CriticalRatePositionBonus extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().mergePositionTypeValue(Stats.CRITICAL_RATE, _position, (_amount / 100) + 1, MathUtil::mul); | ||||
| 		effected.getStat().mergePositionTypeValue(Stats.CRITICAL_RATE, _position, (_amount / 100) + 1, MathUtil::mul); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().mergePositionTypeValue(Stats.CRITICAL_RATE, _position, (-_amount / 100) - 1, MathUtil::div); | ||||
| 		effected.getStat().mergePositionTypeValue(Stats.CRITICAL_RATE, _position, (-_amount / 100) - 1, MathUtil::div); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -37,9 +36,9 @@ public final class CrystalGradeModify extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return info.getEffected().isPlayer(); | ||||
| 		return effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -49,9 +48,9 @@ public final class CrystalGradeModify extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		final L2PcInstance player = info.getEffected().getActingPlayer(); | ||||
| 		final L2PcInstance player = effected.getActingPlayer(); | ||||
| 		if (player != null) | ||||
| 		{ | ||||
| 			player.setExpertisePenaltyBonus(0); | ||||
|   | ||||
| @@ -17,9 +17,10 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Formulas; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
|  | ||||
| @@ -39,22 +40,22 @@ public final class DamOverTime extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (!info.getSkill().isToggle() && info.getSkill().isMagic()) | ||||
| 		if (!skill.isToggle() && skill.isMagic()) | ||||
| 		{ | ||||
| 			// TODO: M.Crit can occur even if this skill is resisted. Only then m.crit damage is applied and not debuff | ||||
| 			final boolean mcrit = Formulas.calcCrit(info.getSkill().getMagicCriticalRate(), info.getEffector(), info.getEffected(), info.getSkill()); | ||||
| 			final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); | ||||
| 			if (mcrit) | ||||
| 			{ | ||||
| 				double damage = _power * 10; // Tests show that 10 times HP DOT is taken during magic critical. | ||||
| 				 | ||||
| 				if (!_canKill && (damage >= (info.getEffected().getCurrentHp() - 1))) | ||||
| 				if (!_canKill && (damage >= (effected.getCurrentHp() - 1))) | ||||
| 				{ | ||||
| 					damage = info.getEffected().getCurrentHp() - 1; | ||||
| 					damage = effected.getCurrentHp() - 1; | ||||
| 				} | ||||
| 				 | ||||
| 				info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, true, false); | ||||
| 				effected.reduceCurrentHp(damage, effector, skill, true, false, true, false); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| @@ -66,19 +67,19 @@ public final class DamOverTime extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead()) | ||||
| 		if (effected.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		double damage = _power * getTicksMultiplier(); | ||||
| 		if (damage >= (info.getEffected().getCurrentHp() - 1)) | ||||
| 		if (damage >= (effected.getCurrentHp() - 1)) | ||||
| 		{ | ||||
| 			if (info.getSkill().isToggle()) | ||||
| 			if (skill.isToggle()) | ||||
| 			{ | ||||
| 				info.getEffected().sendPacket(SystemMessageId.YOUR_SKILL_HAS_BEEN_CANCELED_DUE_TO_LACK_OF_HP); | ||||
| 				effected.sendPacket(SystemMessageId.YOUR_SKILL_HAS_BEEN_CANCELED_DUE_TO_LACK_OF_HP); | ||||
| 				return false; | ||||
| 			} | ||||
| 			 | ||||
| @@ -86,15 +87,15 @@ public final class DamOverTime extends AbstractEffect | ||||
| 			if (!_canKill) | ||||
| 			{ | ||||
| 				// Fix for players dying by DOTs if HP < 1 since reduceCurrentHP method will kill them | ||||
| 				if (info.getEffected().getCurrentHp() <= 1) | ||||
| 				if (effected.getCurrentHp() <= 1) | ||||
| 				{ | ||||
| 					return info.getSkill().isToggle(); | ||||
| 					return skill.isToggle(); | ||||
| 				} | ||||
| 				damage = info.getEffected().getCurrentHp() - 1; | ||||
| 				damage = effected.getCurrentHp() - 1; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		effector.doAttack(damage, effected, skill, true, false, false, false); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,9 +17,10 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
|  | ||||
| /** | ||||
| @@ -45,19 +46,19 @@ public final class DamOverTimePercent extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead()) | ||||
| 		if (effected.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		double damage = info.getEffected().getCurrentHp() * _power * getTicksMultiplier(); | ||||
| 		if (damage >= (info.getEffected().getCurrentHp() - 1)) | ||||
| 		double damage = effected.getCurrentHp() * _power * getTicksMultiplier(); | ||||
| 		if (damage >= (effected.getCurrentHp() - 1)) | ||||
| 		{ | ||||
| 			if (info.getSkill().isToggle()) | ||||
| 			if (skill.isToggle()) | ||||
| 			{ | ||||
| 				info.getEffected().sendPacket(SystemMessageId.YOUR_SKILL_HAS_BEEN_CANCELED_DUE_TO_LACK_OF_HP); | ||||
| 				effected.sendPacket(SystemMessageId.YOUR_SKILL_HAS_BEEN_CANCELED_DUE_TO_LACK_OF_HP); | ||||
| 				return false; | ||||
| 			} | ||||
| 			 | ||||
| @@ -65,17 +66,17 @@ public final class DamOverTimePercent extends AbstractEffect | ||||
| 			if (!_canKill) | ||||
| 			{ | ||||
| 				// Fix for players dying by DOTs if HP < 1 since reduceCurrentHP method will kill them | ||||
| 				if (info.getEffected().getCurrentHp() <= 1) | ||||
| 				if (effected.getCurrentHp() <= 1) | ||||
| 				{ | ||||
| 					return info.getSkill().isToggle(); | ||||
| 					return skill.isToggle(); | ||||
| 				} | ||||
| 				 | ||||
| 				damage = info.getEffected().getCurrentHp() - 1; | ||||
| 				damage = effected.getCurrentHp() - 1; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); | ||||
| 		effector.doAttack(damage, effected, skill, true, false, false, false); | ||||
| 		 | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -21,9 +21,10 @@ import java.util.Map; | ||||
| import java.util.Map.Entry; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.stat.CharStat; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.TraitType; | ||||
|  | ||||
| /** | ||||
| @@ -66,9 +67,9 @@ public final class DefenceTrait extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		final CharStat charStat = info.getEffected().getStat(); | ||||
| 		final CharStat charStat = effected.getStat(); | ||||
| 		synchronized (charStat.getDefenceTraits()) | ||||
| 		{ | ||||
| 			for (Entry<TraitType, Float> trait : _defenceTraits.entrySet()) | ||||
| @@ -87,9 +88,9 @@ public final class DefenceTrait extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		final CharStat charStat = info.getEffected().getStat(); | ||||
| 		final CharStat charStat = effected.getStat(); | ||||
| 		synchronized (charStat.getDefenceTraits()) | ||||
| 		{ | ||||
| 			for (Entry<TraitType, Float> trait : _defenceTraits.entrySet()) | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -36,9 +35,9 @@ public final class Disarm extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return info.getEffected().isPlayer(); | ||||
| 		return effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -26,7 +26,6 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.items.L2Item; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; | ||||
| @@ -54,9 +53,9 @@ public final class Disarmor extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (_slot != L2Item.SLOT_NONE) && info.getEffected().isPlayer(); | ||||
| 		return (_slot != L2Item.SLOT_NONE) && effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -98,18 +97,18 @@ public final class Disarmor extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (!info.getEffected().isPlayer()) | ||||
| 		if (!effected.isPlayer()) | ||||
| 		{ | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		final Integer disarmedObjId = _unequippedItems.remove(info.getEffected().getObjectId()); | ||||
| 		final Integer disarmedObjId = _unequippedItems.remove(effected.getObjectId()); | ||||
| 		if ((disarmedObjId != null) && (disarmedObjId > 0)) | ||||
| 		{ | ||||
| 			final L2PcInstance player = info.getEffected().getActingPlayer(); | ||||
| 			info.getEffected().getInventory().unblockItemSlot(_slot); | ||||
| 			final L2PcInstance player = effected.getActingPlayer(); | ||||
| 			player.getInventory().unblockItemSlot(_slot); | ||||
| 			 | ||||
| 			final L2ItemInstance item = player.getInventory().getItemByObjectId(disarmedObjId); | ||||
| 			if (item != null) | ||||
| @@ -137,6 +136,6 @@ public final class Disarmor extends AbstractEffect | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		super.onExit(info); | ||||
| 		super.onExit(effector, effected, skill); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -22,10 +22,10 @@ import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.holders.SkillHolder; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -56,34 +56,34 @@ public final class DoubleCast extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayer()) | ||||
| 		if (effected.isPlayer()) | ||||
| 		{ | ||||
| 			for (SkillHolder holder : TOGGLE_SKILLS) | ||||
| 			{ | ||||
| 				final Skill skill = holder.getSkill(); | ||||
| 				if ((skill != null) && !info.getEffected().isAffectedBySkill(holder)) | ||||
| 				final Skill s = holder.getSkill(); | ||||
| 				if ((s != null) && !effected.isAffectedBySkill(holder)) | ||||
| 				{ | ||||
| 					_addedToggles.computeIfAbsent(info.getEffected().getObjectId(), v -> new ArrayList<>()).add(holder); | ||||
| 					skill.applyEffects(info.getEffected(), info.getEffected()); | ||||
| 					_addedToggles.computeIfAbsent(effected.getObjectId(), v -> new ArrayList<>()).add(holder); | ||||
| 					s.applyEffects(effected, effected); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		super.onStart(info); | ||||
| 		super.onStart(effector, effected, skill); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayer()) | ||||
| 		if (effected.isPlayer()) | ||||
| 		{ | ||||
| 			_addedToggles.computeIfPresent(info.getEffected().getObjectId(), (k, v) -> | ||||
| 			_addedToggles.computeIfPresent(effected.getObjectId(), (k, v) -> | ||||
| 			{ | ||||
| 				v.forEach(h -> info.getEffected().stopSkillEffects(h.getSkill())); | ||||
| 				v.forEach(h -> effected.stopSkillEffects(h.getSkill())); | ||||
| 				return null; | ||||
| 			}); | ||||
| 		} | ||||
| 		super.onExit(info); | ||||
| 		super.onExit(effector, effected, skill); | ||||
| 	} | ||||
| } | ||||
| @@ -19,7 +19,6 @@ package handlers.effecthandlers; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -33,9 +32,9 @@ public final class EnableCloak extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffector() != null) && (info.getEffected() != null) && info.getEffected().isPlayer(); | ||||
| 		return (effector != null) && (effected != null) && effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -45,8 +44,8 @@ public final class EnableCloak extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getActingPlayer().getStat().setCloakSlotStatus(false); | ||||
| 		effected.getActingPlayer().getStat().setCloakSlotStatus(false); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -19,7 +19,6 @@ package handlers.effecthandlers; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -36,9 +35,9 @@ public final class EnlargeAbnormalSlot extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffector() != null) && (info.getEffected() != null) && info.getEffected().isPlayer(); | ||||
| 		return (effector != null) && (effected != null) && effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -48,8 +47,8 @@ public final class EnlargeAbnormalSlot extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().setMaxBuffCount(Math.max(0, info.getEffected().getStat().getMaxBuffCount() - _slots)); | ||||
| 		effected.getStat().setMaxBuffCount(Math.max(0, effected.getStat().getMaxBuffCount() - _slots)); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -51,10 +50,10 @@ public final class Escape extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		// While affected by escape blocking effect you cannot use Blink or Scroll of Escape | ||||
| 		return super.canStart(info) && !info.getEffected().cannotEscape(); | ||||
| 		return super.canStart(effector, effected, skill) && !effected.cannotEscape(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -17,9 +17,10 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * @author Sdw | ||||
| @@ -37,22 +38,22 @@ public class Faceoff extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return info.getEffected().isPlayer(); | ||||
| 		return effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffector().getActingPlayer().setAttackerObjId(info.getEffected().getObjectId()); | ||||
| 		info.getEffected().getActingPlayer().setAttackerObjId(info.getEffector().getObjectId()); | ||||
| 		effector.getActingPlayer().setAttackerObjId(effected.getObjectId()); | ||||
| 		effected.getActingPlayer().setAttackerObjId(effector.getObjectId()); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffector().getActingPlayer().setAttackerObjId(0); | ||||
| 		info.getEffected().getActingPlayer().setAttackerObjId(0); | ||||
| 		effector.getActingPlayer().setAttackerObjId(0); | ||||
| 		effected.getActingPlayer().setAttackerObjId(0); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,9 +17,10 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.ChangeWaitType; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.Revive; | ||||
| @@ -45,43 +46,43 @@ public final class FakeDeath extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead()) | ||||
| 		if (effected.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		final double manaDam = _power * getTicksMultiplier(); | ||||
| 		if (manaDam > info.getEffected().getCurrentMp()) | ||||
| 		if (manaDam > effected.getCurrentMp()) | ||||
| 		{ | ||||
| 			if (info.getSkill().isToggle()) | ||||
| 			if (skill.isToggle()) | ||||
| 			{ | ||||
| 				info.getEffected().sendPacket(SystemMessageId.YOUR_SKILL_WAS_DEACTIVATED_DUE_TO_LACK_OF_MP); | ||||
| 				effected.sendPacket(SystemMessageId.YOUR_SKILL_WAS_DEACTIVATED_DUE_TO_LACK_OF_MP); | ||||
| 				return false; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffected().reduceCurrentMp(manaDam); | ||||
| 		effected.reduceCurrentMp(manaDam); | ||||
| 		 | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayer()) | ||||
| 		if (effected.isPlayer()) | ||||
| 		{ | ||||
| 			info.getEffected().getActingPlayer().setRecentFakeDeath(true); | ||||
| 			effected.getActingPlayer().setRecentFakeDeath(true); | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffected().broadcastPacket(new ChangeWaitType(info.getEffected(), ChangeWaitType.WT_STOP_FAKEDEATH)); | ||||
| 		info.getEffected().broadcastPacket(new Revive(info.getEffected())); | ||||
| 		effected.broadcastPacket(new ChangeWaitType(effected, ChangeWaitType.WT_STOP_FAKEDEATH)); | ||||
| 		effected.broadcastPacket(new Revive(effected)); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().startFakeDeath(); | ||||
| 		effected.startFakeDeath(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -27,7 +27,6 @@ import com.l2jmobius.gameserver.model.actor.instance.L2DefenderInstance; | ||||
| import com.l2jmobius.gameserver.model.actor.instance.L2FortCommanderInstance; | ||||
| import com.l2jmobius.gameserver.model.actor.instance.L2SiegeFlagInstance; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.util.Util; | ||||
|  | ||||
| @@ -45,9 +44,9 @@ public final class Fear extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		final L2Character creature = info.getEffected(); | ||||
| 		final L2Character creature = effected; | ||||
| 		return creature.isPlayer() || creature.isSummon() || (creature.isAttackable() && // | ||||
| 			!((creature instanceof L2DefenderInstance) || (creature instanceof L2FortCommanderInstance) || // | ||||
| 				(creature instanceof L2SiegeFlagInstance) || (creature.getTemplate().getRace() == Race.SIEGE_WEAPON))); | ||||
| @@ -60,9 +59,9 @@ public final class Fear extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		fearAction(null, info.getEffected()); | ||||
| 		fearAction(null, effected); | ||||
| 		return false; | ||||
| 	} | ||||
| 	 | ||||
| @@ -74,11 +73,11 @@ public final class Fear extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (!info.getEffected().isPlayer()) | ||||
| 		if (!effected.isPlayer()) | ||||
| 		{ | ||||
| 			info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_THINK); | ||||
| 			effected.getAI().notifyEvent(CtrlEvent.EVT_THINK); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
|   | ||||
| @@ -19,7 +19,6 @@ package handlers.effecthandlers; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -33,9 +32,9 @@ public final class Flag extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffected() != null) && info.getEffected().isPlayer(); | ||||
| 		return (effected != null) && effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -45,8 +44,8 @@ public final class Flag extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getActingPlayer().updatePvPFlag(0); | ||||
| 		effected.getActingPlayer().updatePvPFlag(0); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,9 +17,10 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Stats; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.EtcStatusUpdate; | ||||
| @@ -44,11 +45,11 @@ public class GetMomentum extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayer()) | ||||
| 		if (effected.isPlayer()) | ||||
| 		{ | ||||
| 			final L2PcInstance player = info.getEffected().getActingPlayer(); | ||||
| 			final L2PcInstance player = effected.getActingPlayer(); | ||||
| 			final int maxCharge = (int) player.getStat().getValue(Stats.MAX_MOMENTUM, 0); | ||||
| 			final int newCharge = Math.min(player.getCharges() + 1, maxCharge); | ||||
| 			 | ||||
| @@ -68,6 +69,6 @@ public class GetMomentum extends AbstractEffect | ||||
| 			player.sendPacket(new EtcStatusUpdate(player)); | ||||
| 		} | ||||
| 		 | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Npc; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -44,11 +43,11 @@ public final class Grow extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isNpc()) | ||||
| 		if (effected.isNpc()) | ||||
| 		{ | ||||
| 			final L2Npc npc = (L2Npc) info.getEffected(); | ||||
| 			final L2Npc npc = (L2Npc) effected; | ||||
| 			npc.setCollisionHeight(npc.getTemplate().getCollisionHeight()); | ||||
| 			npc.setCollisionRadius(npc.getTemplate().getfCollisionRadius()); | ||||
| 		} | ||||
|   | ||||
| @@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.AbnormalType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.ExRegenMax; | ||||
|  | ||||
| @@ -38,15 +37,15 @@ public final class HealOverTime extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead() || info.getEffected().isDoor()) | ||||
| 		if (effected.isDead() || effected.isDoor()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		double hp = info.getEffected().getCurrentHp(); | ||||
| 		final double maxhp = info.getEffected().getMaxRecoverableHp(); | ||||
| 		double hp = effected.getCurrentHp(); | ||||
| 		final double maxhp = effected.getMaxRecoverableHp(); | ||||
| 		 | ||||
| 		// Not needed to set the HP and send update packet if player is already at max HP | ||||
| 		if (hp >= maxhp) | ||||
| @@ -56,19 +55,17 @@ public final class HealOverTime extends AbstractEffect | ||||
| 		 | ||||
| 		hp += _power * getTicksMultiplier(); | ||||
| 		hp = Math.min(hp, maxhp); | ||||
| 		info.getEffected().setCurrentHp(hp, false); | ||||
| 		info.getEffected().broadcastStatusUpdate(info.getEffector()); | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		effected.setCurrentHp(hp, false); | ||||
| 		effected.broadcastStatusUpdate(effector); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		final L2Character effected = info.getEffected(); | ||||
| 		final Skill skill = info.getSkill(); | ||||
| 		if (effected.isPlayer() && (getTicks() > 0) && (skill.getAbnormalType() == AbnormalType.HP_RECOVER)) | ||||
| 		{ | ||||
| 			effected.sendPacket(new ExRegenMax(info.getAbnormalTime(), getTicks(), _power)); | ||||
| 			effected.sendPacket(new ExRegenMax(skill.getAbnormalTime(), getTicks(), _power)); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -61,11 +60,11 @@ public final class Hide extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayer()) | ||||
| 		if (effected.isPlayer()) | ||||
| 		{ | ||||
| 			final L2PcInstance activeChar = info.getEffected().getActingPlayer(); | ||||
| 			final L2PcInstance activeChar = effected.getActingPlayer(); | ||||
| 			if (!activeChar.inObserverMode()) | ||||
| 			{ | ||||
| 				activeChar.setInvisible(false); | ||||
|   | ||||
| @@ -17,9 +17,10 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Formulas; | ||||
|  | ||||
| /** | ||||
| @@ -39,16 +40,16 @@ public final class HpToOwner extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (!info.getSkill().isToggle() && info.getSkill().isMagic()) | ||||
| 		if (!skill.isToggle() && skill.isMagic()) | ||||
| 		{ | ||||
| 			// TODO: M.Crit can occur even if this skill is resisted. Only then m.crit damage is applied and not debuff | ||||
| 			final boolean mcrit = Formulas.calcCrit(info.getSkill().getMagicCriticalRate(), info.getEffector(), info.getEffected(), info.getSkill()); | ||||
| 			final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); | ||||
| 			if (mcrit) | ||||
| 			{ | ||||
| 				final double damage = _power * 10; // Tests show that 10 times HP DOT is taken during magic critical. | ||||
| 				info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, true, false); | ||||
| 				effected.reduceCurrentHp(damage, effector, skill, true, false, true, false); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| @@ -60,22 +61,22 @@ public final class HpToOwner extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead()) | ||||
| 		if (effected.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		final double damage = _power * getTicksMultiplier(); | ||||
| 		 | ||||
| 		info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); | ||||
| 		effector.doAttack(damage, effected, skill, true, false, false, false); | ||||
| 		if (_stealAmount > 0) | ||||
| 		{ | ||||
| 			final double amount = (damage * _stealAmount) / 100; | ||||
| 			info.getEffector().setCurrentHp(info.getEffector().getCurrentHp() + amount); | ||||
| 			info.getEffector().setCurrentMp(info.getEffector().getCurrentMp() + amount); | ||||
| 			effector.setCurrentHp(effector.getCurrentHp() + amount); | ||||
| 			effector.setCurrentMp(effector.getCurrentMp() + amount); | ||||
| 		} | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
| @@ -17,9 +17,10 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Summon; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * Immobile Pet Buff effect implementation. | ||||
| @@ -32,17 +33,17 @@ public final class ImmobilePetBuff extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().setIsImmobilized(false); | ||||
| 		effected.setIsImmobilized(false); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isSummon() && info.getEffector().isPlayer() && (((L2Summon) info.getEffected()).getOwner() == info.getEffector())) | ||||
| 		if (effected.isSummon() && effector.isPlayer() && (((L2Summon) effected).getOwner() == effector)) | ||||
| 		{ | ||||
| 			info.getEffected().setIsImmobilized(true); | ||||
| 			effected.setIsImmobilized(true); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -33,7 +33,6 @@ import com.l2jmobius.gameserver.model.base.ClassId; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Formulas; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.ExAlterSkillRequest; | ||||
| @@ -141,11 +140,11 @@ public final class KnockBack extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (!info.getEffected().isPlayer()) | ||||
| 		if (!effected.isPlayer()) | ||||
| 		{ | ||||
| 			info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_THINK); | ||||
| 			effected.getAI().notifyEvent(CtrlEvent.EVT_THINK); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
|   | ||||
| @@ -17,8 +17,9 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * Lucky effect implementation. | ||||
| @@ -31,8 +32,8 @@ public final class Lucky extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffector() != null) && (info.getEffected() != null) && info.getEffected().isPlayer(); | ||||
| 		return (effector != null) && (effected != null) && effected.isPlayer(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -18,8 +18,9 @@ package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.commons.util.MathUtil; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * @author Sdw | ||||
| @@ -36,14 +37,14 @@ public class MagicMpCost extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().mergeMpConsumeTypeValue(_magicType, (_amount / 100) + 1, MathUtil::mul); | ||||
| 		effected.getStat().mergeMpConsumeTypeValue(_magicType, (_amount / 100) + 1, MathUtil::mul); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().mergeMpConsumeTypeValue(_magicType, (_amount / 100) + 1, MathUtil::div); | ||||
| 		effected.getStat().mergeMpConsumeTypeValue(_magicType, (_amount / 100) + 1, MathUtil::div); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -20,7 +20,7 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Formulas; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
|  | ||||
| @@ -47,22 +47,22 @@ public final class MagicalDamOverTime extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		final L2Character activeChar = info.getEffector(); | ||||
| 		final L2Character target = info.getEffected(); | ||||
| 		final L2Character activeChar = effector; | ||||
| 		final L2Character target = effected; | ||||
| 		 | ||||
| 		if (target.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		double damage = Formulas.calcMagicDam(activeChar, target, info.getSkill(), activeChar.getMAtk(), _power, target.getMDef(), false, false, false); // In retail spiritshots change nothing. | ||||
| 		double damage = Formulas.calcMagicDam(activeChar, target, skill, activeChar.getMAtk(), _power, target.getMDef(), false, false, false); // In retail spiritshots change nothing. | ||||
| 		damage *= getTicksMultiplier(); | ||||
| 		 | ||||
| 		if (damage >= (target.getCurrentHp() - 1)) | ||||
| 		{ | ||||
| 			if (info.getSkill().isToggle()) | ||||
| 			if (skill.isToggle()) | ||||
| 			{ | ||||
| 				target.sendPacket(SystemMessageId.YOUR_SKILL_HAS_BEEN_CANCELED_DUE_TO_LACK_OF_HP); | ||||
| 				return false; | ||||
| @@ -74,13 +74,13 @@ public final class MagicalDamOverTime extends AbstractEffect | ||||
| 				// Fix for players dying by DOTs if HP < 1 since reduceCurrentHP method will kill them | ||||
| 				if (target.getCurrentHp() <= 1) | ||||
| 				{ | ||||
| 					return info.getSkill().isToggle(); | ||||
| 					return skill.isToggle(); | ||||
| 				} | ||||
| 				damage = target.getCurrentHp() - 1; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		effector.doAttack(damage, effected, skill, true, false, false, false); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,8 +17,9 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
|  | ||||
| /** | ||||
| @@ -35,21 +36,21 @@ public final class ManaDamOverTime extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead()) | ||||
| 		if (effected.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		final double manaDam = _power * getTicksMultiplier(); | ||||
| 		if ((manaDam > info.getEffected().getCurrentMp()) && info.getSkill().isToggle()) | ||||
| 		if ((manaDam > effected.getCurrentMp()) && skill.isToggle()) | ||||
| 		{ | ||||
| 			info.getEffected().sendPacket(SystemMessageId.YOUR_SKILL_WAS_DEACTIVATED_DUE_TO_LACK_OF_MP); | ||||
| 			effected.sendPacket(SystemMessageId.YOUR_SKILL_WAS_DEACTIVATED_DUE_TO_LACK_OF_MP); | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffected().reduceCurrentMp(manaDam); | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		effected.reduceCurrentMp(manaDam); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,8 +17,9 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * Mana Heal Over Time effect implementation. | ||||
| @@ -34,15 +35,15 @@ public final class ManaHealOverTime extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead()) | ||||
| 		if (effected.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		double mp = info.getEffected().getCurrentMp(); | ||||
| 		final double maxmp = info.getEffected().getMaxRecoverableMp(); | ||||
| 		double mp = effected.getCurrentMp(); | ||||
| 		final double maxmp = effected.getMaxRecoverableMp(); | ||||
| 		 | ||||
| 		// Not needed to set the MP and send update packet if player is already at max MP | ||||
| 		if (mp >= maxmp) | ||||
| @@ -52,8 +53,8 @@ public final class ManaHealOverTime extends AbstractEffect | ||||
| 		 | ||||
| 		mp += _power * getTicksMultiplier(); | ||||
| 		mp = Math.min(mp, maxmp); | ||||
| 		info.getEffected().setCurrentMp(mp, false); | ||||
| 		info.getEffected().broadcastStatusUpdate(info.getEffector()); | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		effected.setCurrentMp(mp, false); | ||||
| 		effected.broadcastStatusUpdate(effector); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,8 +17,9 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
|  | ||||
| /** | ||||
| @@ -35,22 +36,22 @@ public final class MpConsumePerLevel extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead()) | ||||
| 		if (effected.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		final double base = _power * getTicksMultiplier(); | ||||
| 		final double consume = (info.getAbnormalTime() > 0) ? ((info.getEffected().getLevel() - 1) / 7.5) * base * info.getAbnormalTime() : base; | ||||
| 		if (consume > info.getEffected().getCurrentMp()) | ||||
| 		final double consume = (skill.getAbnormalTime() > 0) ? ((effected.getLevel() - 1) / 7.5) * base * skill.getAbnormalTime() : base; | ||||
| 		if (consume > effected.getCurrentMp()) | ||||
| 		{ | ||||
| 			info.getEffected().sendPacket(SystemMessageId.YOUR_SKILL_WAS_DEACTIVATED_DUE_TO_LACK_OF_MP); | ||||
| 			effected.sendPacket(SystemMessageId.YOUR_SKILL_WAS_DEACTIVATED_DUE_TO_LACK_OF_MP); | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffected().reduceCurrentMp(consume); | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		effected.reduceCurrentMp(consume); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,10 +17,11 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * Noblesse Blessing effect implementation. | ||||
| @@ -33,9 +34,9 @@ public final class NoblesseBless extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffector() != null) && (info.getEffected() != null) && info.getEffected().isPlayable(); | ||||
| 		return (effector != null) && (effected != null) && effected.isPlayable(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -19,7 +19,6 @@ package handlers.effecthandlers; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -33,9 +32,9 @@ public final class Passive extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return info.getEffected().isAttackable(); | ||||
| 		return effected.isAttackable(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -48,9 +47,9 @@ public final class Passive extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().enableAllSkills(); | ||||
| 		info.getEffected().setIsImmobilized(false); | ||||
| 		effected.enableAllSkills(); | ||||
| 		effected.setIsImmobilized(false); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -19,7 +19,6 @@ package handlers.effecthandlers; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Stats; | ||||
|  | ||||
| @@ -42,11 +41,11 @@ public class PolearmSingleTarget extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayer()) | ||||
| 		if (effected.isPlayer()) | ||||
| 		{ | ||||
| 			info.getEffected().getStat().removeFixedValue(Stats.PHYSICAL_POLEARM_TARGET_SINGLE); | ||||
| 			effected.getStat().removeFixedValue(Stats.PHYSICAL_POLEARM_TARGET_SINGLE); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,9 +17,10 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * Protection Blessing effect implementation. | ||||
| @@ -32,9 +33,9 @@ public final class ProtectionBlessing extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffector() != null) && (info.getEffected() != null) && info.getEffected().isPlayer(); | ||||
| 		return (effector != null) && (effected != null) && effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -17,9 +17,11 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.stat.PcStat; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.zone.ZoneId; | ||||
|  | ||||
| /** | ||||
| @@ -44,41 +46,44 @@ public final class RecoverVitalityInPeaceZone extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if ((info.getEffected() == null) // | ||||
| 			|| info.getEffected().isDead() // | ||||
| 			|| !info.getEffected().isPlayer() // | ||||
| 			|| !info.getEffected().isInsideZone(ZoneId.PEACE)) | ||||
| 		if ((effected == null) // | ||||
| 			|| effected.isDead() // | ||||
| 			|| !effected.isPlayer() // | ||||
| 			|| !effected.isInsideZone(ZoneId.PEACE)) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		long vitality = info.getEffected().getActingPlayer().getVitalityPoints(); | ||||
| 		long vitality = effected.getActingPlayer().getVitalityPoints(); | ||||
| 		vitality += _amount; | ||||
| 		if (vitality >= PcStat.MAX_VITALITY_POINTS) | ||||
| 		{ | ||||
| 			vitality = PcStat.MAX_VITALITY_POINTS; | ||||
| 		} | ||||
| 		info.getEffected().getActingPlayer().setVitalityPoints((int) vitality, true); | ||||
| 		effected.getActingPlayer().setVitalityPoints((int) vitality, true); | ||||
| 		 | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if ((info.getEffected() != null) // | ||||
| 			&& info.getEffected().isPlayer() // | ||||
| 			&& !info.isRemoved()) | ||||
| 		if ((effected != null) // | ||||
| 			&& effected.isPlayer()) | ||||
| 		{ | ||||
| 			long vitality = info.getEffected().getActingPlayer().getVitalityPoints(); | ||||
| 			vitality += _amount * 100; | ||||
| 			if (vitality >= PcStat.MAX_VITALITY_POINTS) | ||||
| 			final BuffInfo info = effected.getEffectList().getBuffInfoBySkillId(skill.getId()); | ||||
| 			if ((info != null) && !info.isRemoved()) | ||||
| 			{ | ||||
| 				vitality = PcStat.MAX_VITALITY_POINTS; | ||||
| 				long vitality = effected.getActingPlayer().getVitalityPoints(); | ||||
| 				vitality += _amount * 100; | ||||
| 				if (vitality >= PcStat.MAX_VITALITY_POINTS) | ||||
| 				{ | ||||
| 					vitality = PcStat.MAX_VITALITY_POINTS; | ||||
| 				} | ||||
| 				effected.getActingPlayer().setVitalityPoints((int) vitality, true); | ||||
| 			} | ||||
| 			info.getEffected().getActingPlayer().setVitalityPoints((int) vitality, true); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,12 +17,13 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.events.EventType; | ||||
| import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureDamageReceived; | ||||
| import com.l2jmobius.gameserver.model.events.listeners.FunctionEventListener; | ||||
| import com.l2jmobius.gameserver.model.events.returns.DamageReturn; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * @author Sdw | ||||
| @@ -50,14 +51,14 @@ public class ReduceDamage extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().addListener(new FunctionEventListener(info.getEffected(), EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this)); | ||||
| 		effected.addListener(new FunctionEventListener(effected, EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this)); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
|  | ||||
| @@ -65,42 +64,42 @@ public final class Relax extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isDead()) | ||||
| 		if (effected.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		if (info.getEffected().isPlayer()) | ||||
| 		if (effected.isPlayer()) | ||||
| 		{ | ||||
| 			if (!info.getEffected().getActingPlayer().isSitting()) | ||||
| 			if (!effected.getActingPlayer().isSitting()) | ||||
| 			{ | ||||
| 				return false; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		if ((info.getEffected().getCurrentHp() + 1) > info.getEffected().getMaxRecoverableHp()) | ||||
| 		if ((effected.getCurrentHp() + 1) > effected.getMaxRecoverableHp()) | ||||
| 		{ | ||||
| 			if (info.getSkill().isToggle()) | ||||
| 			if (skill.isToggle()) | ||||
| 			{ | ||||
| 				info.getEffected().sendPacket(SystemMessageId.THAT_SKILL_HAS_BEEN_DE_ACTIVATED_AS_HP_WAS_FULLY_RECOVERED); | ||||
| 				effected.sendPacket(SystemMessageId.THAT_SKILL_HAS_BEEN_DE_ACTIVATED_AS_HP_WAS_FULLY_RECOVERED); | ||||
| 				return false; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		final double manaDam = _power * getTicksMultiplier(); | ||||
| 		if (manaDam > info.getEffected().getCurrentMp()) | ||||
| 		if (manaDam > effected.getCurrentMp()) | ||||
| 		{ | ||||
| 			if (info.getSkill().isToggle()) | ||||
| 			if (skill.isToggle()) | ||||
| 			{ | ||||
| 				info.getEffected().sendPacket(SystemMessageId.YOUR_SKILL_WAS_DEACTIVATED_DUE_TO_LACK_OF_MP); | ||||
| 				effected.sendPacket(SystemMessageId.YOUR_SKILL_WAS_DEACTIVATED_DUE_TO_LACK_OF_MP); | ||||
| 				return false; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffected().reduceCurrentMp(manaDam); | ||||
| 		effected.reduceCurrentMp(manaDam); | ||||
| 		 | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -23,7 +23,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.holders.SkillHolder; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -63,11 +62,11 @@ public final class ResistSkill extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		for (SkillHolder holder : _skills) | ||||
| 		{ | ||||
| 			info.getEffected().removeIgnoreSkillEffects(holder); | ||||
| 			effected.removeIgnoreSkillEffects(holder); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -21,13 +21,13 @@ import java.util.HashSet; | ||||
| import java.util.Set; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; | ||||
| import com.l2jmobius.gameserver.model.actor.instance.L2PetInstance; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.instancezone.Instance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -71,30 +71,28 @@ public final class ResurrectionSpecial extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (!info.getEffected().isPlayer() && !info.getEffected().isPet()) | ||||
| 		if (!effected.isPlayer() && !effected.isPet()) | ||||
| 		{ | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		final L2PcInstance caster = info.getEffector().getActingPlayer(); | ||||
| 		final L2PcInstance caster = effector.getActingPlayer(); | ||||
| 		final Instance instance = caster.getInstanceWorld(); | ||||
| 		if (!_instanceId.isEmpty() && ((instance == null) || !_instanceId.contains(instance.getTemplateId()))) | ||||
| 		{ | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		final Skill skill = info.getSkill(); | ||||
| 		 | ||||
| 		if (info.getEffected().isPlayer()) | ||||
| 		if (effected.isPlayer()) | ||||
| 		{ | ||||
| 			info.getEffected().getActingPlayer().reviveRequest(caster, skill, false, _power); | ||||
| 			effected.getActingPlayer().reviveRequest(caster, skill, false, _power); | ||||
| 		} | ||||
| 		else if (info.getEffected().isPet()) | ||||
| 		else if (effected.isPet()) | ||||
| 		{ | ||||
| 			final L2PetInstance pet = (L2PetInstance) info.getEffected(); | ||||
| 			info.getEffected().getActingPlayer().reviveRequest(pet.getActingPlayer(), skill, true, _power); | ||||
| 			final L2PetInstance pet = (L2PetInstance) effected; | ||||
| 			effected.getActingPlayer().reviveRequest(pet.getActingPlayer(), skill, true, _power); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -18,8 +18,9 @@ package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.commons.util.MathUtil; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * @author Sdw | ||||
| @@ -36,14 +37,14 @@ public class Reuse extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().mergeReuseTypeValue(_magicType, (_amount / 100) + 1, MathUtil::mul); | ||||
| 		effected.getStat().mergeReuseTypeValue(_magicType, (_amount / 100) + 1, MathUtil::mul); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().mergeReuseTypeValue(_magicType, (_amount / 100) + 1, MathUtil::div); | ||||
| 		effected.getStat().mergeReuseTypeValue(_magicType, (_amount / 100) + 1, MathUtil::div); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -1,50 +0,0 @@ | ||||
| /* | ||||
|  * 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 handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.ThreadPoolManager; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
|  | ||||
| /** | ||||
|  * Reward Item on Exit effect implementation. | ||||
|  * @author Mobius | ||||
|  */ | ||||
| public final class RewardItemOnExit extends AbstractEffect | ||||
| { | ||||
| 	private final int _itemId; | ||||
| 	private final long _itemCount; | ||||
| 	 | ||||
| 	public RewardItemOnExit(StatsSet params) | ||||
| 	{ | ||||
| 		_itemId = params.getInt("itemId", 40313); // Default item is Santa's Mark. | ||||
| 		_itemCount = params.getLong("itemCount", 1); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	{ | ||||
| 		if (!info.isRemoved() && (info.getEffected() != null) && info.getEffected().isPlayer() && !info.getEffected().isDead()) | ||||
| 		{ | ||||
| 			ThreadPoolManager.execute(() -> // Make sure item is saved. | ||||
| 			{ | ||||
| 				info.getEffected().getActingPlayer().addItem("RewardItemOnExitEffect", _itemId, _itemCount, info.getEffected(), true); | ||||
| 			}); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -22,7 +22,6 @@ import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -48,11 +47,11 @@ public final class Root extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (!info.getEffected().isPlayer()) | ||||
| 		if (!effected.isPlayer()) | ||||
| 		{ | ||||
| 			info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_THINK); | ||||
| 			effected.getAI().notifyEvent(CtrlEvent.EVT_THINK); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
|   | ||||
| @@ -21,7 +21,6 @@ import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Summon; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
|  | ||||
| @@ -35,9 +34,9 @@ public final class SacrificeSummon extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return info.getEffected().isSummon(); | ||||
| 		return effected.isSummon(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -17,8 +17,9 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * Note: In retail this effect doesn't stack. It appears that the active value is taken from the last such effect. | ||||
| @@ -36,14 +37,14 @@ public class SkillEvasion extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().addSkillEvasionTypeValue(_magicType, _amount); | ||||
| 		effected.getStat().addSkillEvasionTypeValue(_magicType, _amount); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().removeSkillEvasionTypeValue(_magicType, _amount); | ||||
| 		effected.getStat().removeSkillEvasionTypeValue(_magicType, _amount); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -18,8 +18,9 @@ package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.commons.util.Rnd; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Formulas; | ||||
|  | ||||
| /** | ||||
| @@ -38,19 +39,19 @@ public final class SkillTurningOverTime extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if ((info.getEffected() == null) || (info.getEffected() == info.getEffector()) || info.getEffected().isRaid()) | ||||
| 		if ((effected == null) || (effected == effector) || effected.isRaid()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		final boolean skillSuccess = _staticChance ? Formulas.calcProbability(_chance, info.getEffector(), info.getEffected(), info.getSkill()) : ((_chance >= 100) || (Rnd.get(100) < _chance)); | ||||
| 		final boolean skillSuccess = _staticChance ? Formulas.calcProbability(_chance, effector, effected, skill) : ((_chance >= 100) || (Rnd.get(100) < _chance)); | ||||
| 		if (skillSuccess) | ||||
| 		{ | ||||
| 			info.getEffected().breakCast(); | ||||
| 			effected.breakCast(); | ||||
| 		} | ||||
| 		 | ||||
| 		return super.onActionTime(info); | ||||
| 		return super.onActionTime(effector, effected, skill); | ||||
| 	} | ||||
| } | ||||
| @@ -25,7 +25,6 @@ import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.events.EventType; | ||||
| import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayableExpChanged; | ||||
| import com.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Stats; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
| @@ -56,11 +55,11 @@ public final class SoulEating extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayer()) | ||||
| 		if (effected.isPlayer()) | ||||
| 		{ | ||||
| 			info.getEffected().removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this); | ||||
| 			effected.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
|   | ||||
| @@ -17,8 +17,9 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.MoveType; | ||||
| import com.l2jmobius.gameserver.model.stats.Stats; | ||||
|  | ||||
| @@ -40,20 +41,20 @@ public class StatByMoveType extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().mergeMoveTypeValue(_stat, _type, _value); | ||||
| 		effected.getStat().mergeMoveTypeValue(_stat, _type, _value); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getStat().mergeMoveTypeValue(_stat, _type, -_value); | ||||
| 		effected.getStat().mergeMoveTypeValue(_stat, _type, -_value); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return info.getSkill().isPassive() || info.getSkill().isToggle(); | ||||
| 		return skill.isPassive() || skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -26,7 +26,6 @@ import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.holders.SkillHolder; | ||||
| import com.l2jmobius.gameserver.model.skills.AbnormalType; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.skills.SkillCaster; | ||||
|  | ||||
| @@ -78,22 +77,22 @@ public final class Synergy extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean onActionTime(BuffInfo info) | ||||
| 	public boolean onActionTime(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffector().isDead()) | ||||
| 		if (effector.isDead()) | ||||
| 		{ | ||||
| 			return false; | ||||
| 		} | ||||
| 		 | ||||
| 		for (AbnormalType required : _requiredSlots) | ||||
| 		{ | ||||
| 			if (!info.getEffector().hasAbnormalType(required)) | ||||
| 			if (!effector.hasAbnormalType(required)) | ||||
| 			{ | ||||
| 				return info.getSkill().isToggle(); | ||||
| 				return skill.isToggle(); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		final int abnormalCount = (int) _optionalSlots.stream().filter(info.getEffector()::hasAbnormalType).count(); | ||||
| 		final int abnormalCount = (int) _optionalSlots.stream().filter(effector::hasAbnormalType).count(); | ||||
| 		 | ||||
| 		if (abnormalCount >= _minSlot) | ||||
| 		{ | ||||
| @@ -102,19 +101,19 @@ public final class Synergy extends AbstractEffect | ||||
| 			 | ||||
| 			if (partyBuffSkill != null) | ||||
| 			{ | ||||
| 				final L2Object target = partyBuffSkill.getTarget(info.getEffector(), info.getEffected(), false, false, false); | ||||
| 				final L2Object target = partyBuffSkill.getTarget(effector, effected, false, false, false); | ||||
| 				 | ||||
| 				if ((target != null) && target.isCharacter()) | ||||
| 				{ | ||||
| 					SkillCaster.triggerCast(info.getEffector(), (L2Character) target, partyBuffSkill); | ||||
| 					SkillCaster.triggerCast(effector, (L2Character) target, partyBuffSkill); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				_log.warning("Skill not found effect called from " + info.getSkill()); | ||||
| 				_log.warning("Skill not found effect called from " + skill); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		return info.getSkill().isToggle(); | ||||
| 		return skill.isToggle(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -19,7 +19,6 @@ package handlers.effecthandlers; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -36,9 +35,9 @@ public final class TalismanSlot extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffector() != null) && (info.getEffected() != null) && info.getEffected().isPlayer(); | ||||
| 		return (effector != null) && (effected != null) && effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -48,8 +47,8 @@ public final class TalismanSlot extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().getActingPlayer().getStat().addTalismanSlots(-_slots); | ||||
| 		effected.getActingPlayer().getStat().addTalismanSlots(-_slots); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -17,9 +17,10 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Playable; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * Target Me effect implementation. | ||||
| @@ -32,25 +33,25 @@ public final class TargetMe extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayable()) | ||||
| 		if (effected.isPlayable()) | ||||
| 		{ | ||||
| 			((L2Playable) info.getEffected()).setLockedTarget(null); | ||||
| 			((L2Playable) effected).setLockedTarget(null); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayable()) | ||||
| 		if (effected.isPlayable()) | ||||
| 		{ | ||||
| 			if (info.getEffected().getTarget() != info.getEffector()) | ||||
| 			if (effected.getTarget() != effector) | ||||
| 			{ | ||||
| 				info.getEffected().setTarget(info.getEffector()); | ||||
| 				effected.setTarget(effector); | ||||
| 			} | ||||
| 			 | ||||
| 			((L2Playable) info.getEffected()).setLockedTarget(info.getEffector()); | ||||
| 			((L2Playable) effected).setLockedTarget(effector); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -25,7 +25,6 @@ import com.l2jmobius.gameserver.model.actor.L2Summon; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.FlyToLocation; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType; | ||||
| @@ -58,9 +57,9 @@ public final class TeleportToSummon extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return info.getEffected().hasServitors(); | ||||
| 		return effected.hasServitors(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -17,8 +17,9 @@ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Playable; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Stats; | ||||
|  | ||||
| /** | ||||
| @@ -33,20 +34,20 @@ public final class TransferDamageToPlayer extends AbstractStatAddEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayable() && info.getEffector().isPlayer()) | ||||
| 		if (effected.isPlayable() && effector.isPlayer()) | ||||
| 		{ | ||||
| 			((L2Playable) info.getEffected()).setTransferDamageTo(null); | ||||
| 			((L2Playable) effected).setTransferDamageTo(null); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if (info.getEffected().isPlayable() && info.getEffector().isPlayer()) | ||||
| 		if (effected.isPlayable() && effector.isPlayer()) | ||||
| 		{ | ||||
| 			((L2Playable) info.getEffected()).setTransferDamageTo(info.getEffector().getActingPlayer()); | ||||
| 			((L2Playable) effected).setTransferDamageTo(effector.getActingPlayer()); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -22,7 +22,6 @@ import com.l2jmobius.gameserver.model.actor.L2Attackable; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Formulas; | ||||
| import com.l2jmobius.gameserver.util.Util; | ||||
| @@ -47,9 +46,9 @@ public final class TransferHate extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return Util.checkIfInRange(info.getSkill().getEffectRange(), info.getEffector(), info.getEffected(), true); | ||||
| 		return Util.checkIfInRange(skill.getEffectRange(), effector, effected, true); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -24,7 +24,6 @@ import com.l2jmobius.commons.util.Rnd; | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -53,9 +52,9 @@ public final class Transformation extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return !info.getEffected().isDoor(); | ||||
| 		return !effected.isDoor(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| @@ -68,8 +67,8 @@ public final class Transformation extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().stopTransformation(false); | ||||
| 		effected.stopTransformation(false); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -160,14 +160,14 @@ public final class TriggerSkillByAttack extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_DAMAGE_DEALT, listener -> listener.getOwner() == this); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_DAMAGE_DEALT, listener -> listener.getOwner() == this); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().addListener(new ConsumerEventListener(info.getEffected(), EventType.ON_CREATURE_DAMAGE_DEALT, (OnCreatureDamageDealt event) -> onAttackEvent(event), this)); | ||||
| 		effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_DAMAGE_DEALT, (OnCreatureDamageDealt event) -> onAttackEvent(event), this)); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -29,7 +29,6 @@ import com.l2jmobius.gameserver.model.events.EventType; | ||||
| import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureAttackAvoid; | ||||
| import com.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; | ||||
| import com.l2jmobius.gameserver.model.holders.SkillHolder; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.skills.SkillCaster; | ||||
| import com.l2jmobius.gameserver.model.skills.targets.TargetType; | ||||
| @@ -92,14 +91,14 @@ public final class TriggerSkillByAvoid extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_ATTACK_AVOID, listener -> listener.getOwner() == this); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_ATTACK_AVOID, listener -> listener.getOwner() == this); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().addListener(new ConsumerEventListener(info.getEffected(), EventType.ON_CREATURE_ATTACK_AVOID, (OnCreatureAttackAvoid event) -> onAvoidEvent(event), this)); | ||||
| 		effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_ATTACK_AVOID, (OnCreatureAttackAvoid event) -> onAvoidEvent(event), this)); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -29,7 +29,6 @@ import com.l2jmobius.gameserver.model.events.EventType; | ||||
| import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureDamageReceived; | ||||
| import com.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; | ||||
| import com.l2jmobius.gameserver.model.holders.SkillHolder; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.skills.SkillCaster; | ||||
| import com.l2jmobius.gameserver.model.skills.targets.TargetType; | ||||
| @@ -99,14 +98,14 @@ public final class TriggerSkillByDamage extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().addListener(new ConsumerEventListener(info.getEffected(), EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this)); | ||||
| 		effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this)); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -29,7 +29,6 @@ import com.l2jmobius.gameserver.model.events.EventType; | ||||
| import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureDamageReceived; | ||||
| import com.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; | ||||
| import com.l2jmobius.gameserver.model.holders.SkillHolder; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.skills.SkillCaster; | ||||
| import com.l2jmobius.gameserver.model.skills.targets.TargetType; | ||||
| @@ -102,14 +101,14 @@ public final class TriggerSkillByDeathBlow extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().addListener(new ConsumerEventListener(info.getEffected(), EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this)); | ||||
| 		effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this)); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -24,7 +24,6 @@ import com.l2jmobius.gameserver.model.events.EventType; | ||||
| import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureKilled; | ||||
| import com.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; | ||||
| import com.l2jmobius.gameserver.model.holders.SkillHolder; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.skills.SkillCaster; | ||||
|  | ||||
| @@ -64,14 +63,14 @@ public final class TriggerSkillByKill extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_KILLED, listener -> listener.getOwner() == this); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_KILLED, listener -> listener.getOwner() == this); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().addListener(new ConsumerEventListener(info.getEffected(), EventType.ON_CREATURE_KILLED, (OnCreatureKilled event) -> onCreatureKilled(event, info.getEffected()), this)); | ||||
| 		effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_KILLED, (OnCreatureKilled event) -> onCreatureKilled(event, effected), this)); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -112,20 +112,19 @@ public final class TriggerSkillByMagicType extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(BuffInfo info) | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) | ||||
| 		{ | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		info.getEffected().addListener(new ConsumerEventListener(info.getEffected(), EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); | ||||
| 		effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
|   | ||||
| @@ -62,9 +62,9 @@ public final class TriggerSkillBySkill extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); | ||||
| 	} | ||||
| 	 | ||||
| 	private void onSkillUseEvent(OnCreatureSkillFinishCast event) | ||||
|   | ||||
| @@ -72,9 +72,9 @@ public final class TriggerSkillBySkillAttack extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(BuffInfo info) | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		info.getEffected().removeListenerIf(EventType.ON_CREATURE_DAMAGE_DEALT, listener -> listener.getOwner() == this); | ||||
| 		effected.removeListenerIf(EventType.ON_CREATURE_DAMAGE_DEALT, listener -> listener.getOwner() == this); | ||||
| 	} | ||||
| 	 | ||||
| 	private void onAttackEvent(OnCreatureDamageDealt event) | ||||
|   | ||||
| @@ -23,7 +23,6 @@ import com.l2jmobius.gameserver.model.actor.L2Summon; | ||||
| import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.model.stats.Formulas; | ||||
| import com.l2jmobius.gameserver.network.SystemMessageId; | ||||
| @@ -63,9 +62,9 @@ public final class Unsummon extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return info.getEffected().isSummon(); | ||||
| 		return effected.isSummon(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -21,7 +21,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.EffectFlag; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
| @@ -35,9 +34,9 @@ public final class Untargetable extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return info.getEffected().isPlayer(); | ||||
| 		return effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.BuffInfo; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.UserInfo; | ||||
|  | ||||
| @@ -38,9 +37,9 @@ public final class VitalityPointUp extends AbstractEffect | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canStart(BuffInfo info) | ||||
| 	public boolean canStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		return (info.getEffected() != null) && info.getEffected().isPlayer(); | ||||
| 		return (effected != null) && effected.isPlayer(); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
|   | ||||
| @@ -203,10 +203,6 @@ | ||||
| 				<amount>7</amount> | ||||
| 				<mode>DIFF</mode> | ||||
| 			</effect> | ||||
| 			<effect name="RewardItemOnExit"> | ||||
| 				<itemId>40313</itemId> | ||||
| 				<itemCount>1</itemCount> | ||||
| 			</effect> | ||||
| 		</effects> | ||||
| 	</skill> | ||||
| 	<skill id="16420" toLevel="2" name="Tree Fairy's Blessing"> | ||||
| @@ -241,10 +237,6 @@ | ||||
| 				<amount>30</amount> | ||||
| 				<mode>DIFF</mode> | ||||
| 			</effect> | ||||
| 			<effect name="RewardItemOnExit"> | ||||
| 				<itemId>40313</itemId> | ||||
| 				<itemCount>1</itemCount> | ||||
| 			</effect> | ||||
| 		</effects> | ||||
| 	</skill> | ||||
| 	<skill id="16421" toLevel="2" name="Snowman Fairy's Blessing"> | ||||
| @@ -279,10 +271,6 @@ | ||||
| 				<amount>2013</amount> | ||||
| 				<mode>DIFF</mode> | ||||
| 			</effect> | ||||
| 			<effect name="RewardItemOnExit"> | ||||
| 				<itemId>40313</itemId> | ||||
| 				<itemCount>1</itemCount> | ||||
| 			</effect> | ||||
| 		</effects>	 | ||||
| 	</skill> | ||||
| 	<skill id="16422" toLevel="1" name="Winter Holiday Reward"> | ||||
|   | ||||
| @@ -248,7 +248,6 @@ Resurrection: Resurrects target Player or Summon. | ||||
| ResurrectionSpecial: Resurrects target Player or Summon only in specified instance IDs. | ||||
| Reuse: Decreases skill reuse time based on its magic type. | ||||
| ReuseSkillById: Resets reuse time for the skill with the specific id. (l2jmobius) | ||||
| RewardItemOnExit: Reward an item when effect ends. (l2jmobius) | ||||
| Root: Stops movement. | ||||
| SacrificeSummon: Sacrifices the players summon. (l2jmobius) | ||||
| SafeFallHeight: Minimum falling height for taking damage stat. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDev
					MobiusDev