OnNpcSocialActionSee.
This commit is contained in:
parent
82318052e2
commit
cb4955bafa
@ -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.OnCreatureTeleported;
|
||||
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.returns.TerminateReturn;
|
||||
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)
|
||||
{
|
||||
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()
|
||||
|
@ -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.OnNpcSkillFinished;
|
||||
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.OnNpcTeleport;
|
||||
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.
|
||||
* @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.OnNpcSkillFinished;
|
||||
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.OnNpcTeleport;
|
||||
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_SKILL_FINISHED(OnNpcSkillFinished.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_TALK(null, 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* @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 caller
|
||||
@ -1206,6 +1226,17 @@ public class Quest extends AbstractScript implements IIdentifiable
|
||||
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.
|
||||
* @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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user