OnNpcSocialActionSee.
This commit is contained in:
@@ -102,6 +102,7 @@ import com.l2jserver.gameserver.model.events.impl.character.OnCreatureKill;
|
|||||||
import com.l2jserver.gameserver.model.events.impl.character.OnCreatureSkillUse;
|
import com.l2jserver.gameserver.model.events.impl.character.OnCreatureSkillUse;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.OnCreatureTeleported;
|
import com.l2jserver.gameserver.model.events.impl.character.OnCreatureTeleported;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSkillSee;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSkillSee;
|
||||||
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSocialActionSee;
|
||||||
import com.l2jserver.gameserver.model.events.listeners.AbstractEventListener;
|
import com.l2jserver.gameserver.model.events.listeners.AbstractEventListener;
|
||||||
import com.l2jserver.gameserver.model.events.returns.TerminateReturn;
|
import com.l2jserver.gameserver.model.events.returns.TerminateReturn;
|
||||||
import com.l2jserver.gameserver.model.holders.InvulSkillHolder;
|
import com.l2jserver.gameserver.model.holders.InvulSkillHolder;
|
||||||
@@ -6653,6 +6654,22 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
|||||||
public void broadcastSocialAction(int id)
|
public void broadcastSocialAction(int id)
|
||||||
{
|
{
|
||||||
broadcastPacket(new SocialAction(getObjectId(), id));
|
broadcastPacket(new SocialAction(getObjectId(), id));
|
||||||
|
if (!isPlayer())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Collection<L2Object> objs = getKnownList().getKnownObjects().values();
|
||||||
|
for (L2Object npc : objs)
|
||||||
|
{
|
||||||
|
if ((npc != null) && npc.isNpc())
|
||||||
|
{
|
||||||
|
final L2Npc npcMob = (L2Npc) npc;
|
||||||
|
if ((npcMob.isInsideRadius(this, 150, true, true))) // 150 radius?
|
||||||
|
{
|
||||||
|
EventDispatcher.getInstance().notifyEventAsync(new OnNpcSocialActionSee(npcMob, getActingPlayer(), id), npcMob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Team getTeam()
|
public Team getTeam()
|
||||||
|
@@ -91,6 +91,7 @@ import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcMoveNodeArr
|
|||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcMoveRouteFinished;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcMoveRouteFinished;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSkillFinished;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSkillFinished;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSkillSee;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSkillSee;
|
||||||
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSocialActionSee;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSpawn;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSpawn;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcTeleport;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcTeleport;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.attackable.OnAttackableAggroRangeEnter;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.attackable.OnAttackableAggroRangeEnter;
|
||||||
@@ -530,6 +531,19 @@ public abstract class AbstractScript implements INamable
|
|||||||
|
|
||||||
// ---------------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides instant callback operation when L2Npc sees skill from a player.
|
||||||
|
* @param callback
|
||||||
|
* @param npcIds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected final List<AbstractEventListener> setNpcSocialActionSeeId(Consumer<OnNpcSocialActionSee> callback, int... npcIds)
|
||||||
|
{
|
||||||
|
return registerConsumer(callback, EventType.ON_NPC_SOCIAL_ACTION_SEE, ListenerRegisterType.NPC, npcIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides instant callback operation when L2Npc casts skill on a player.
|
* Provides instant callback operation when L2Npc casts skill on a player.
|
||||||
* @param callback
|
* @param callback
|
||||||
|
@@ -40,6 +40,7 @@ import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcMoveNodeArr
|
|||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcMoveRouteFinished;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcMoveRouteFinished;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSkillFinished;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSkillFinished;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSkillSee;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSkillSee;
|
||||||
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSocialActionSee;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSpawn;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcSpawn;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcTeleport;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcTeleport;
|
||||||
import com.l2jserver.gameserver.model.events.impl.character.npc.attackable.OnAttackableAggroRangeEnter;
|
import com.l2jserver.gameserver.model.events.impl.character.npc.attackable.OnAttackableAggroRangeEnter;
|
||||||
@@ -167,6 +168,7 @@ public enum EventType
|
|||||||
ON_NPC_QUEST_START(null, void.class),
|
ON_NPC_QUEST_START(null, void.class),
|
||||||
ON_NPC_SKILL_FINISHED(OnNpcSkillFinished.class, void.class),
|
ON_NPC_SKILL_FINISHED(OnNpcSkillFinished.class, void.class),
|
||||||
ON_NPC_SKILL_SEE(OnNpcSkillSee.class, void.class),
|
ON_NPC_SKILL_SEE(OnNpcSkillSee.class, void.class),
|
||||||
|
ON_NPC_SOCIAL_ACTION_SEE(OnNpcSocialActionSee.class, void.class),
|
||||||
ON_NPC_SPAWN(OnNpcSpawn.class, void.class),
|
ON_NPC_SPAWN(OnNpcSpawn.class, void.class),
|
||||||
ON_NPC_TALK(null, void.class),
|
ON_NPC_TALK(null, void.class),
|
||||||
ON_NPC_TELEPORT(OnNpcTeleport.class, void.class),
|
ON_NPC_TELEPORT(OnNpcTeleport.class, void.class),
|
||||||
|
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2004-2015 L2J Server
|
||||||
|
*
|
||||||
|
* This file is part of L2J Server.
|
||||||
|
*
|
||||||
|
* L2J Server 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.
|
||||||
|
*
|
||||||
|
* L2J Server 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 com.l2jserver.gameserver.model.events.impl.character.npc;
|
||||||
|
|
||||||
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jserver.gameserver.model.events.EventType;
|
||||||
|
import com.l2jserver.gameserver.model.events.impl.IBaseEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class OnNpcSocialActionSee implements IBaseEvent
|
||||||
|
{
|
||||||
|
private final L2Npc _npc;
|
||||||
|
private final L2PcInstance _caster;
|
||||||
|
private final int _actionId;
|
||||||
|
|
||||||
|
public OnNpcSocialActionSee(L2Npc npc, L2PcInstance caster, int actionId)
|
||||||
|
{
|
||||||
|
_npc = npc;
|
||||||
|
_caster = caster;
|
||||||
|
_actionId = actionId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public L2Npc getTarget()
|
||||||
|
{
|
||||||
|
return _npc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public L2PcInstance getCaster()
|
||||||
|
{
|
||||||
|
return _caster;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getActionId()
|
||||||
|
{
|
||||||
|
return _actionId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EventType getType()
|
||||||
|
{
|
||||||
|
return EventType.ON_NPC_SOCIAL_ACTION_SEE;
|
||||||
|
}
|
||||||
|
}
|
@@ -760,6 +760,26 @@ public class Quest extends AbstractScript implements IIdentifiable
|
|||||||
showResult(caster, res);
|
showResult(caster, res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param npc
|
||||||
|
* @param caster
|
||||||
|
* @param actionId
|
||||||
|
*/
|
||||||
|
public final void notifySocialActionSee(L2Npc npc, L2PcInstance caster, int actionId)
|
||||||
|
{
|
||||||
|
String res = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
res = onSocialActionSee(npc, caster, actionId);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
showError(caster, e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
showResult(caster, res);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param npc
|
* @param npc
|
||||||
* @param caller
|
* @param caller
|
||||||
@@ -1206,6 +1226,17 @@ public class Quest extends AbstractScript implements IIdentifiable
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param npc the NPC that saw the social action
|
||||||
|
* @param caster the player who used the social action
|
||||||
|
* @param actionId the actual action id that was used
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String onSocialActionSee(L2Npc npc, L2PcInstance caster, int actionId)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function is called whenever an NPC finishes casting a skill.
|
* This function is called whenever an NPC finishes casting a skill.
|
||||||
* @param npc the NPC that casted the skill.
|
* @param npc the NPC that casted the skill.
|
||||||
@@ -2022,6 +2053,15 @@ public class Quest extends AbstractScript implements IIdentifiable
|
|||||||
setNpcSkillSeeId(event -> notifySkillSee(event.getTarget(), event.getCaster(), event.getSkill(), event.getTargets(), event.isSummon()), npcIds);
|
setNpcSkillSeeId(event -> notifySkillSee(event.getTarget(), event.getCaster(), event.getSkill(), event.getTargets(), event.isSummon()), npcIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add this quest to the list of quests that the passed npc will respond to for social action see events.
|
||||||
|
* @param npcIds the IDs of the NPCs to register
|
||||||
|
*/
|
||||||
|
public void addSocialActionSeeId(int... npcIds)
|
||||||
|
{
|
||||||
|
setNpcSocialActionSeeId(event -> notifySocialActionSee(event.getTarget(), event.getCaster(), event.getActionId()), npcIds);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param npcIds the IDs of the NPCs to register
|
* @param npcIds the IDs of the NPCs to register
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user