Implementation of OnCreatureDeath and OnCreatureKilled events.
This commit is contained in:
parent
fba8415b6d
commit
5bef49ba31
@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
|||||||
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
import org.l2jmobius.gameserver.util.Util;
|
import org.l2jmobius.gameserver.util.Util;
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ public class Servitors extends AbstractNpcAI
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@RegisterEvent(EventType.ON_CREATURE_KILL)
|
@RegisterEvent(EventType.ON_CREATURE_DEATH)
|
||||||
@RegisterType(ListenerRegisterType.NPC)
|
@RegisterType(ListenerRegisterType.NPC)
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
@Id({
|
@Id({
|
||||||
@ -103,7 +103,7 @@ public class Servitors extends AbstractNpcAI
|
|||||||
14527, 14528, 14529, 14530
|
14527, 14528, 14529, 14530
|
||||||
})
|
})
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
public void onCreatureKill(OnCreatureKill event)
|
public void onCreatureKill(OnCreatureDeath event)
|
||||||
{
|
{
|
||||||
if (event.getAttacker().isNpc() && event.getTarget().isServitor() //
|
if (event.getAttacker().isNpc() && event.getTarget().isServitor() //
|
||||||
&& Util.checkIfInRange(1500, event.getAttacker(), event.getTarget(), true))
|
&& Util.checkIfInRange(1500, event.getAttacker(), event.getTarget(), true))
|
||||||
|
@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.annotations.Id;
|
|||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;
|
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;
|
||||||
|
|
||||||
@ -82,10 +82,10 @@ public class SinEater extends AbstractNpcAI
|
|||||||
return super.onAdvEvent(event, npc, player);
|
return super.onAdvEvent(event, npc, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RegisterEvent(EventType.ON_CREATURE_KILL)
|
@RegisterEvent(EventType.ON_CREATURE_DEATH)
|
||||||
@RegisterType(ListenerRegisterType.NPC)
|
@RegisterType(ListenerRegisterType.NPC)
|
||||||
@Id(SIN_EATER)
|
@Id(SIN_EATER)
|
||||||
public void onCreatureKill(OnCreatureKill event)
|
public void onCreatureKill(OnCreatureDeath event)
|
||||||
{
|
{
|
||||||
final int random = getRandom(100);
|
final int random = getRandom(100);
|
||||||
final Summon summon = (Summon) event.getTarget();
|
final Summon summon = (Summon) event.getTarget();
|
||||||
|
@ -94,7 +94,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid
|
|||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKilled;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
||||||
@ -2281,12 +2282,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
*/
|
*/
|
||||||
public boolean doDie(Creature killer)
|
public boolean doDie(Creature killer)
|
||||||
{
|
{
|
||||||
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKill(killer, this), this, TerminateReturn.class);
|
|
||||||
if ((returnBack != null) && returnBack.terminate())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// killing is only possible one time
|
// killing is only possible one time
|
||||||
synchronized (this)
|
synchronized (this)
|
||||||
{
|
{
|
||||||
@ -2300,6 +2295,13 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
setDead(true);
|
setDead(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this);
|
||||||
|
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), this, TerminateReturn.class);
|
||||||
|
if ((returnBack != null) && returnBack.terminate())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate rewards for main damage dealer.
|
// Calculate rewards for main damage dealer.
|
||||||
final Creature mainDamageDealer = isMonster() ? ((Monster) this).getMainDamageDealer() : null;
|
final Creature mainDamageDealer = isMonster() ? ((Monster) this).getMainDamageDealer() : null;
|
||||||
calculateRewards(mainDamageDealer != null ? mainDamageDealer : killer);
|
calculateRewards(mainDamageDealer != null ? mainDamageDealer : killer);
|
||||||
|
@ -27,7 +27,7 @@ import org.l2jmobius.gameserver.model.actor.templates.CreatureTemplate;
|
|||||||
import org.l2jmobius.gameserver.model.effects.EffectFlag;
|
import org.l2jmobius.gameserver.model.effects.EffectFlag;
|
||||||
import org.l2jmobius.gameserver.model.effects.EffectType;
|
import org.l2jmobius.gameserver.model.effects.EffectType;
|
||||||
import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
|
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
|
||||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
@ -93,7 +93,7 @@ public abstract class Playable extends Creature
|
|||||||
@Override
|
@Override
|
||||||
public boolean doDie(Creature killer)
|
public boolean doDie(Creature killer)
|
||||||
{
|
{
|
||||||
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKill(killer, this), this, TerminateReturn.class);
|
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class);
|
||||||
if ((returnBack != null) && returnBack.terminate())
|
if ((returnBack != null) && returnBack.terminate())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -59,7 +59,7 @@ import org.l2jmobius.gameserver.model.events.annotations.Ranges;
|
|||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit;
|
||||||
@ -339,9 +339,9 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
* @param npcIds
|
* @param npcIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected final List<AbstractEventListener> addCreatureKillId(Function<OnCreatureKill, ? extends AbstractEventReturn> callback, int... npcIds)
|
protected final List<AbstractEventListener> addCreatureKillId(Function<OnCreatureDeath, ? extends AbstractEventReturn> callback, int... npcIds)
|
||||||
{
|
{
|
||||||
return registerFunction(callback, EventType.ON_CREATURE_KILL, ListenerRegisterType.NPC, npcIds);
|
return registerFunction(callback, EventType.ON_CREATURE_DEATH, ListenerRegisterType.NPC, npcIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -350,9 +350,9 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
* @param npcIds
|
* @param npcIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureKill> callback, int... npcIds)
|
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureDeath> callback, int... npcIds)
|
||||||
{
|
{
|
||||||
return registerConsumer(callback, EventType.ON_CREATURE_KILL, ListenerRegisterType.NPC, npcIds);
|
return registerConsumer(callback, EventType.ON_CREATURE_DEATH, ListenerRegisterType.NPC, npcIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -361,9 +361,9 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
* @param npcIds
|
* @param npcIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureKill> callback, Collection<Integer> npcIds)
|
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureDeath> callback, Collection<Integer> npcIds)
|
||||||
{
|
{
|
||||||
return registerConsumer(callback, EventType.ON_CREATURE_KILL, ListenerRegisterType.NPC, npcIds);
|
return registerConsumer(callback, EventType.ON_CREATURE_DEATH, ListenerRegisterType.NPC, npcIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -25,7 +25,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid
|
|||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKilled;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
||||||
@ -126,7 +127,8 @@ public enum EventType
|
|||||||
ON_CREATURE_ATTACKED(OnCreatureAttacked.class, void.class, TerminateReturn.class),
|
ON_CREATURE_ATTACKED(OnCreatureAttacked.class, void.class, TerminateReturn.class),
|
||||||
ON_CREATURE_DAMAGE_RECEIVED(OnCreatureDamageReceived.class, void.class),
|
ON_CREATURE_DAMAGE_RECEIVED(OnCreatureDamageReceived.class, void.class),
|
||||||
ON_CREATURE_DAMAGE_DEALT(OnCreatureDamageDealt.class, void.class),
|
ON_CREATURE_DAMAGE_DEALT(OnCreatureDamageDealt.class, void.class),
|
||||||
ON_CREATURE_KILL(OnCreatureKill.class, void.class, TerminateReturn.class),
|
ON_CREATURE_DEATH(OnCreatureDeath.class, void.class),
|
||||||
|
ON_CREATURE_KILLED(OnCreatureKilled.class, void.class, TerminateReturn.class),
|
||||||
ON_CREATURE_SEE(OnCreatureSee.class, void.class),
|
ON_CREATURE_SEE(OnCreatureSee.class, void.class),
|
||||||
ON_CREATURE_SKILL_USE(OnCreatureSkillUse.class, void.class, TerminateReturn.class),
|
ON_CREATURE_SKILL_USE(OnCreatureSkillUse.class, void.class, TerminateReturn.class),
|
||||||
ON_CREATURE_TELEPORTED(OnCreatureTeleported.class, void.class),
|
ON_CREATURE_TELEPORTED(OnCreatureTeleported.class, void.class),
|
||||||
|
@ -24,12 +24,12 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
|||||||
* An instantly executed event when Creature is killed by Creature.
|
* An instantly executed event when Creature is killed by Creature.
|
||||||
* @author UnAfraid
|
* @author UnAfraid
|
||||||
*/
|
*/
|
||||||
public class OnCreatureKill implements IBaseEvent
|
public class OnCreatureDeath implements IBaseEvent
|
||||||
{
|
{
|
||||||
private final Creature _attacker;
|
private final Creature _attacker;
|
||||||
private final Creature _target;
|
private final Creature _target;
|
||||||
|
|
||||||
public OnCreatureKill(Creature attacker, Creature target)
|
public OnCreatureDeath(Creature attacker, Creature target)
|
||||||
{
|
{
|
||||||
_attacker = attacker;
|
_attacker = attacker;
|
||||||
_target = target;
|
_target = target;
|
||||||
@ -48,6 +48,6 @@ public class OnCreatureKill implements IBaseEvent
|
|||||||
@Override
|
@Override
|
||||||
public EventType getType()
|
public EventType getType()
|
||||||
{
|
{
|
||||||
return EventType.ON_CREATURE_KILL;
|
return EventType.ON_CREATURE_DEATH;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the L2J Mobius project.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.l2jmobius.gameserver.model.events.impl.creature;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An instantly executed event when Creature kills Creature.
|
||||||
|
* @author UnAfraid
|
||||||
|
*/
|
||||||
|
public class OnCreatureKilled implements IBaseEvent
|
||||||
|
{
|
||||||
|
private final Creature _attacker;
|
||||||
|
private final Creature _target;
|
||||||
|
|
||||||
|
public OnCreatureKilled(Creature attacker, Creature target)
|
||||||
|
{
|
||||||
|
_attacker = attacker;
|
||||||
|
_target = target;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Creature getAttacker()
|
||||||
|
{
|
||||||
|
return _attacker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Creature getTarget()
|
||||||
|
{
|
||||||
|
return _target;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EventType getType()
|
||||||
|
{
|
||||||
|
return EventType.ON_CREATURE_KILLED;
|
||||||
|
}
|
||||||
|
}
|
@ -93,7 +93,7 @@ public class RequestRestartPoint implements IClientIncomingPacket
|
|||||||
// Custom event resurrection management.
|
// Custom event resurrection management.
|
||||||
if (player.isOnEvent())
|
if (player.isOnEvent())
|
||||||
{
|
{
|
||||||
for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_KILL))
|
for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH))
|
||||||
{
|
{
|
||||||
if (listener.getOwner() instanceof Event)
|
if (listener.getOwner() instanceof Event)
|
||||||
{
|
{
|
||||||
|
@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
|||||||
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
import org.l2jmobius.gameserver.util.Util;
|
import org.l2jmobius.gameserver.util.Util;
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ public class Servitors extends AbstractNpcAI
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@RegisterEvent(EventType.ON_CREATURE_KILL)
|
@RegisterEvent(EventType.ON_CREATURE_DEATH)
|
||||||
@RegisterType(ListenerRegisterType.NPC)
|
@RegisterType(ListenerRegisterType.NPC)
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
@Id({
|
@Id({
|
||||||
@ -103,7 +103,7 @@ public class Servitors extends AbstractNpcAI
|
|||||||
14527, 14528, 14529, 14530
|
14527, 14528, 14529, 14530
|
||||||
})
|
})
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
public void onCreatureKill(OnCreatureKill event)
|
public void onCreatureKill(OnCreatureDeath event)
|
||||||
{
|
{
|
||||||
if (event.getAttacker().isNpc() && event.getTarget().isServitor() //
|
if (event.getAttacker().isNpc() && event.getTarget().isServitor() //
|
||||||
&& Util.checkIfInRange(1500, event.getAttacker(), event.getTarget(), true))
|
&& Util.checkIfInRange(1500, event.getAttacker(), event.getTarget(), true))
|
||||||
|
@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.annotations.Id;
|
|||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;
|
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;
|
||||||
|
|
||||||
@ -82,10 +82,10 @@ public class SinEater extends AbstractNpcAI
|
|||||||
return super.onAdvEvent(event, npc, player);
|
return super.onAdvEvent(event, npc, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RegisterEvent(EventType.ON_CREATURE_KILL)
|
@RegisterEvent(EventType.ON_CREATURE_DEATH)
|
||||||
@RegisterType(ListenerRegisterType.NPC)
|
@RegisterType(ListenerRegisterType.NPC)
|
||||||
@Id(SIN_EATER)
|
@Id(SIN_EATER)
|
||||||
public void onCreatureKill(OnCreatureKill event)
|
public void onCreatureKill(OnCreatureDeath event)
|
||||||
{
|
{
|
||||||
final int random = getRandom(100);
|
final int random = getRandom(100);
|
||||||
final Summon summon = (Summon) event.getTarget();
|
final Summon summon = (Summon) event.getTarget();
|
||||||
|
@ -99,7 +99,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid
|
|||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKilled;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
||||||
@ -2435,12 +2436,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
*/
|
*/
|
||||||
public boolean doDie(Creature killer)
|
public boolean doDie(Creature killer)
|
||||||
{
|
{
|
||||||
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKill(killer, this), this, TerminateReturn.class);
|
|
||||||
if ((returnBack != null) && returnBack.terminate())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// killing is only possible one time
|
// killing is only possible one time
|
||||||
synchronized (this)
|
synchronized (this)
|
||||||
{
|
{
|
||||||
@ -2454,6 +2449,13 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
setDead(true);
|
setDead(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this);
|
||||||
|
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), this, TerminateReturn.class);
|
||||||
|
if ((returnBack != null) && returnBack.terminate())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate rewards for main damage dealer.
|
// Calculate rewards for main damage dealer.
|
||||||
final Creature mainDamageDealer = isMonster() ? ((Monster) this).getMainDamageDealer() : null;
|
final Creature mainDamageDealer = isMonster() ? ((Monster) this).getMainDamageDealer() : null;
|
||||||
calculateRewards(mainDamageDealer != null ? mainDamageDealer : killer);
|
calculateRewards(mainDamageDealer != null ? mainDamageDealer : killer);
|
||||||
|
@ -27,7 +27,7 @@ import org.l2jmobius.gameserver.model.actor.templates.CreatureTemplate;
|
|||||||
import org.l2jmobius.gameserver.model.effects.EffectFlag;
|
import org.l2jmobius.gameserver.model.effects.EffectFlag;
|
||||||
import org.l2jmobius.gameserver.model.effects.EffectType;
|
import org.l2jmobius.gameserver.model.effects.EffectType;
|
||||||
import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
|
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
|
||||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
@ -93,7 +93,7 @@ public abstract class Playable extends Creature
|
|||||||
@Override
|
@Override
|
||||||
public boolean doDie(Creature killer)
|
public boolean doDie(Creature killer)
|
||||||
{
|
{
|
||||||
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKill(killer, this), this, TerminateReturn.class);
|
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class);
|
||||||
if ((returnBack != null) && returnBack.terminate())
|
if ((returnBack != null) && returnBack.terminate())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -63,7 +63,7 @@ import org.l2jmobius.gameserver.model.events.annotations.Ranges;
|
|||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit;
|
||||||
@ -347,9 +347,9 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
* @param npcIds
|
* @param npcIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected final List<AbstractEventListener> addCreatureKillId(Function<OnCreatureKill, ? extends AbstractEventReturn> callback, int... npcIds)
|
protected final List<AbstractEventListener> addCreatureKillId(Function<OnCreatureDeath, ? extends AbstractEventReturn> callback, int... npcIds)
|
||||||
{
|
{
|
||||||
return registerFunction(callback, EventType.ON_CREATURE_KILL, ListenerRegisterType.NPC, npcIds);
|
return registerFunction(callback, EventType.ON_CREATURE_DEATH, ListenerRegisterType.NPC, npcIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -358,9 +358,9 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
* @param npcIds
|
* @param npcIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureKill> callback, int... npcIds)
|
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureDeath> callback, int... npcIds)
|
||||||
{
|
{
|
||||||
return registerConsumer(callback, EventType.ON_CREATURE_KILL, ListenerRegisterType.NPC, npcIds);
|
return registerConsumer(callback, EventType.ON_CREATURE_DEATH, ListenerRegisterType.NPC, npcIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -369,9 +369,9 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
* @param npcIds
|
* @param npcIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureKill> callback, Collection<Integer> npcIds)
|
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureDeath> callback, Collection<Integer> npcIds)
|
||||||
{
|
{
|
||||||
return registerConsumer(callback, EventType.ON_CREATURE_KILL, ListenerRegisterType.NPC, npcIds);
|
return registerConsumer(callback, EventType.ON_CREATURE_DEATH, ListenerRegisterType.NPC, npcIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -25,7 +25,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid
|
|||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKilled;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
||||||
@ -128,7 +129,8 @@ public enum EventType
|
|||||||
ON_CREATURE_ATTACKED(OnCreatureAttacked.class, void.class, TerminateReturn.class),
|
ON_CREATURE_ATTACKED(OnCreatureAttacked.class, void.class, TerminateReturn.class),
|
||||||
ON_CREATURE_DAMAGE_RECEIVED(OnCreatureDamageReceived.class, void.class),
|
ON_CREATURE_DAMAGE_RECEIVED(OnCreatureDamageReceived.class, void.class),
|
||||||
ON_CREATURE_DAMAGE_DEALT(OnCreatureDamageDealt.class, void.class),
|
ON_CREATURE_DAMAGE_DEALT(OnCreatureDamageDealt.class, void.class),
|
||||||
ON_CREATURE_KILL(OnCreatureKill.class, void.class, TerminateReturn.class),
|
ON_CREATURE_DEATH(OnCreatureDeath.class, void.class),
|
||||||
|
ON_CREATURE_KILLED(OnCreatureKilled.class, void.class, TerminateReturn.class),
|
||||||
ON_CREATURE_SEE(OnCreatureSee.class, void.class),
|
ON_CREATURE_SEE(OnCreatureSee.class, void.class),
|
||||||
ON_CREATURE_SKILL_USE(OnCreatureSkillUse.class, void.class, TerminateReturn.class),
|
ON_CREATURE_SKILL_USE(OnCreatureSkillUse.class, void.class, TerminateReturn.class),
|
||||||
ON_CREATURE_TELEPORTED(OnCreatureTeleported.class, void.class),
|
ON_CREATURE_TELEPORTED(OnCreatureTeleported.class, void.class),
|
||||||
|
@ -24,12 +24,12 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
|||||||
* An instantly executed event when Creature is killed by Creature.
|
* An instantly executed event when Creature is killed by Creature.
|
||||||
* @author UnAfraid
|
* @author UnAfraid
|
||||||
*/
|
*/
|
||||||
public class OnCreatureKill implements IBaseEvent
|
public class OnCreatureDeath implements IBaseEvent
|
||||||
{
|
{
|
||||||
private final Creature _attacker;
|
private final Creature _attacker;
|
||||||
private final Creature _target;
|
private final Creature _target;
|
||||||
|
|
||||||
public OnCreatureKill(Creature attacker, Creature target)
|
public OnCreatureDeath(Creature attacker, Creature target)
|
||||||
{
|
{
|
||||||
_attacker = attacker;
|
_attacker = attacker;
|
||||||
_target = target;
|
_target = target;
|
||||||
@ -48,6 +48,6 @@ public class OnCreatureKill implements IBaseEvent
|
|||||||
@Override
|
@Override
|
||||||
public EventType getType()
|
public EventType getType()
|
||||||
{
|
{
|
||||||
return EventType.ON_CREATURE_KILL;
|
return EventType.ON_CREATURE_DEATH;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the L2J Mobius project.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.l2jmobius.gameserver.model.events.impl.creature;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An instantly executed event when Creature kills Creature.
|
||||||
|
* @author UnAfraid
|
||||||
|
*/
|
||||||
|
public class OnCreatureKilled implements IBaseEvent
|
||||||
|
{
|
||||||
|
private final Creature _attacker;
|
||||||
|
private final Creature _target;
|
||||||
|
|
||||||
|
public OnCreatureKilled(Creature attacker, Creature target)
|
||||||
|
{
|
||||||
|
_attacker = attacker;
|
||||||
|
_target = target;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Creature getAttacker()
|
||||||
|
{
|
||||||
|
return _attacker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Creature getTarget()
|
||||||
|
{
|
||||||
|
return _target;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EventType getType()
|
||||||
|
{
|
||||||
|
return EventType.ON_CREATURE_KILLED;
|
||||||
|
}
|
||||||
|
}
|
@ -97,7 +97,7 @@ public class RequestRestartPoint implements IClientIncomingPacket
|
|||||||
// Custom event resurrection management.
|
// Custom event resurrection management.
|
||||||
if (player.isOnEvent())
|
if (player.isOnEvent())
|
||||||
{
|
{
|
||||||
for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_KILL))
|
for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH))
|
||||||
{
|
{
|
||||||
if (listener.getOwner() instanceof Event)
|
if (listener.getOwner() instanceof Event)
|
||||||
{
|
{
|
||||||
|
@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
|||||||
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
import org.l2jmobius.gameserver.util.Util;
|
import org.l2jmobius.gameserver.util.Util;
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ public class Servitors extends AbstractNpcAI
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@RegisterEvent(EventType.ON_CREATURE_KILL)
|
@RegisterEvent(EventType.ON_CREATURE_DEATH)
|
||||||
@RegisterType(ListenerRegisterType.NPC)
|
@RegisterType(ListenerRegisterType.NPC)
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
@Id({
|
@Id({
|
||||||
@ -103,7 +103,7 @@ public class Servitors extends AbstractNpcAI
|
|||||||
14527, 14528, 14529, 14530
|
14527, 14528, 14529, 14530
|
||||||
})
|
})
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
public void onCreatureKill(OnCreatureKill event)
|
public void onCreatureKill(OnCreatureDeath event)
|
||||||
{
|
{
|
||||||
if (event.getAttacker().isNpc() && event.getTarget().isServitor() //
|
if (event.getAttacker().isNpc() && event.getTarget().isServitor() //
|
||||||
&& Util.checkIfInRange(1500, event.getAttacker(), event.getTarget(), true))
|
&& Util.checkIfInRange(1500, event.getAttacker(), event.getTarget(), true))
|
||||||
|
@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.annotations.Id;
|
|||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;
|
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;
|
||||||
|
|
||||||
@ -82,10 +82,10 @@ public class SinEater extends AbstractNpcAI
|
|||||||
return super.onAdvEvent(event, npc, player);
|
return super.onAdvEvent(event, npc, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RegisterEvent(EventType.ON_CREATURE_KILL)
|
@RegisterEvent(EventType.ON_CREATURE_DEATH)
|
||||||
@RegisterType(ListenerRegisterType.NPC)
|
@RegisterType(ListenerRegisterType.NPC)
|
||||||
@Id(SIN_EATER)
|
@Id(SIN_EATER)
|
||||||
public void onCreatureKill(OnCreatureKill event)
|
public void onCreatureKill(OnCreatureDeath event)
|
||||||
{
|
{
|
||||||
final int random = getRandom(100);
|
final int random = getRandom(100);
|
||||||
final Summon summon = (Summon) event.getTarget();
|
final Summon summon = (Summon) event.getTarget();
|
||||||
|
@ -99,7 +99,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid
|
|||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKilled;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
||||||
@ -2437,12 +2438,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
*/
|
*/
|
||||||
public boolean doDie(Creature killer)
|
public boolean doDie(Creature killer)
|
||||||
{
|
{
|
||||||
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKill(killer, this), this, TerminateReturn.class);
|
|
||||||
if ((returnBack != null) && returnBack.terminate())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// killing is only possible one time
|
// killing is only possible one time
|
||||||
synchronized (this)
|
synchronized (this)
|
||||||
{
|
{
|
||||||
@ -2456,6 +2451,13 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
setDead(true);
|
setDead(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this);
|
||||||
|
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), this, TerminateReturn.class);
|
||||||
|
if ((returnBack != null) && returnBack.terminate())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate rewards for main damage dealer.
|
// Calculate rewards for main damage dealer.
|
||||||
final Creature mainDamageDealer = isMonster() ? ((Monster) this).getMainDamageDealer() : null;
|
final Creature mainDamageDealer = isMonster() ? ((Monster) this).getMainDamageDealer() : null;
|
||||||
calculateRewards(mainDamageDealer != null ? mainDamageDealer : killer);
|
calculateRewards(mainDamageDealer != null ? mainDamageDealer : killer);
|
||||||
|
@ -27,7 +27,7 @@ import org.l2jmobius.gameserver.model.actor.templates.CreatureTemplate;
|
|||||||
import org.l2jmobius.gameserver.model.effects.EffectFlag;
|
import org.l2jmobius.gameserver.model.effects.EffectFlag;
|
||||||
import org.l2jmobius.gameserver.model.effects.EffectType;
|
import org.l2jmobius.gameserver.model.effects.EffectType;
|
||||||
import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
|
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
|
||||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
@ -93,7 +93,7 @@ public abstract class Playable extends Creature
|
|||||||
@Override
|
@Override
|
||||||
public boolean doDie(Creature killer)
|
public boolean doDie(Creature killer)
|
||||||
{
|
{
|
||||||
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKill(killer, this), this, TerminateReturn.class);
|
final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class);
|
||||||
if ((returnBack != null) && returnBack.terminate())
|
if ((returnBack != null) && returnBack.terminate())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -63,7 +63,7 @@ import org.l2jmobius.gameserver.model.events.annotations.Ranges;
|
|||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit;
|
||||||
@ -347,9 +347,9 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
* @param npcIds
|
* @param npcIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected final List<AbstractEventListener> addCreatureKillId(Function<OnCreatureKill, ? extends AbstractEventReturn> callback, int... npcIds)
|
protected final List<AbstractEventListener> addCreatureKillId(Function<OnCreatureDeath, ? extends AbstractEventReturn> callback, int... npcIds)
|
||||||
{
|
{
|
||||||
return registerFunction(callback, EventType.ON_CREATURE_KILL, ListenerRegisterType.NPC, npcIds);
|
return registerFunction(callback, EventType.ON_CREATURE_DEATH, ListenerRegisterType.NPC, npcIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -358,9 +358,9 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
* @param npcIds
|
* @param npcIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureKill> callback, int... npcIds)
|
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureDeath> callback, int... npcIds)
|
||||||
{
|
{
|
||||||
return registerConsumer(callback, EventType.ON_CREATURE_KILL, ListenerRegisterType.NPC, npcIds);
|
return registerConsumer(callback, EventType.ON_CREATURE_DEATH, ListenerRegisterType.NPC, npcIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -369,9 +369,9 @@ public abstract class AbstractScript extends ManagedScript
|
|||||||
* @param npcIds
|
* @param npcIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureKill> callback, Collection<Integer> npcIds)
|
protected final List<AbstractEventListener> setCreatureKillId(Consumer<OnCreatureDeath> callback, Collection<Integer> npcIds)
|
||||||
{
|
{
|
||||||
return registerConsumer(callback, EventType.ON_CREATURE_KILL, ListenerRegisterType.NPC, npcIds);
|
return registerConsumer(callback, EventType.ON_CREATURE_DEATH, ListenerRegisterType.NPC, npcIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -25,7 +25,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid
|
|||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageDealt;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageReceived;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKill;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureKilled;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse;
|
||||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureTeleported;
|
||||||
@ -128,7 +129,8 @@ public enum EventType
|
|||||||
ON_CREATURE_ATTACKED(OnCreatureAttacked.class, void.class, TerminateReturn.class),
|
ON_CREATURE_ATTACKED(OnCreatureAttacked.class, void.class, TerminateReturn.class),
|
||||||
ON_CREATURE_DAMAGE_RECEIVED(OnCreatureDamageReceived.class, void.class),
|
ON_CREATURE_DAMAGE_RECEIVED(OnCreatureDamageReceived.class, void.class),
|
||||||
ON_CREATURE_DAMAGE_DEALT(OnCreatureDamageDealt.class, void.class),
|
ON_CREATURE_DAMAGE_DEALT(OnCreatureDamageDealt.class, void.class),
|
||||||
ON_CREATURE_KILL(OnCreatureKill.class, void.class, TerminateReturn.class),
|
ON_CREATURE_DEATH(OnCreatureDeath.class, void.class),
|
||||||
|
ON_CREATURE_KILLED(OnCreatureKilled.class, void.class, TerminateReturn.class),
|
||||||
ON_CREATURE_SEE(OnCreatureSee.class, void.class),
|
ON_CREATURE_SEE(OnCreatureSee.class, void.class),
|
||||||
ON_CREATURE_SKILL_USE(OnCreatureSkillUse.class, void.class, TerminateReturn.class),
|
ON_CREATURE_SKILL_USE(OnCreatureSkillUse.class, void.class, TerminateReturn.class),
|
||||||
ON_CREATURE_TELEPORTED(OnCreatureTeleported.class, void.class),
|
ON_CREATURE_TELEPORTED(OnCreatureTeleported.class, void.class),
|
||||||
|
@ -24,12 +24,12 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
|||||||
* An instantly executed event when Creature is killed by Creature.
|
* An instantly executed event when Creature is killed by Creature.
|
||||||
* @author UnAfraid
|
* @author UnAfraid
|
||||||
*/
|
*/
|
||||||
public class OnCreatureKill implements IBaseEvent
|
public class OnCreatureDeath implements IBaseEvent
|
||||||
{
|
{
|
||||||
private final Creature _attacker;
|
private final Creature _attacker;
|
||||||
private final Creature _target;
|
private final Creature _target;
|
||||||
|
|
||||||
public OnCreatureKill(Creature attacker, Creature target)
|
public OnCreatureDeath(Creature attacker, Creature target)
|
||||||
{
|
{
|
||||||
_attacker = attacker;
|
_attacker = attacker;
|
||||||
_target = target;
|
_target = target;
|
||||||
@ -48,6 +48,6 @@ public class OnCreatureKill implements IBaseEvent
|
|||||||
@Override
|
@Override
|
||||||
public EventType getType()
|
public EventType getType()
|
||||||
{
|
{
|
||||||
return EventType.ON_CREATURE_KILL;
|
return EventType.ON_CREATURE_DEATH;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the L2J Mobius project.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.l2jmobius.gameserver.model.events.impl.creature;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An instantly executed event when Creature kills Creature.
|
||||||
|
* @author UnAfraid
|
||||||
|
*/
|
||||||
|
public class OnCreatureKilled implements IBaseEvent
|
||||||
|
{
|
||||||
|
private final Creature _attacker;
|
||||||
|
private final Creature _target;
|
||||||
|
|
||||||
|
public OnCreatureKilled(Creature attacker, Creature target)
|
||||||
|
{
|
||||||
|
_attacker = attacker;
|
||||||
|
_target = target;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Creature getAttacker()
|
||||||
|
{
|
||||||
|
return _attacker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Creature getTarget()
|
||||||
|
{
|
||||||
|
return _target;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EventType getType()
|
||||||
|
{
|
||||||
|
return EventType.ON_CREATURE_KILLED;
|
||||||
|
}
|
||||||
|
}
|
@ -97,7 +97,7 @@ public class RequestRestartPoint implements IClientIncomingPacket
|
|||||||
// Custom event resurrection management.
|
// Custom event resurrection management.
|
||||||
if (player.isOnEvent())
|
if (player.isOnEvent())
|
||||||
{
|
{
|
||||||
for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_KILL))
|
for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH))
|
||||||
{
|
{
|
||||||
if (listener.getOwner() instanceof Event)
|
if (listener.getOwner() instanceof Event)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user