Addition of simplified quest onCreatureSee NPC id registration and method override.

This commit is contained in:
MobiusDevelopment
2021-06-24 00:03:21 +00:00
parent 1d6efc99e4
commit 00eb8fb2ce
614 changed files with 4014 additions and 3168 deletions

View File

@@ -34,7 +34,6 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.SkillCaster;
@@ -112,7 +111,7 @@ public class Baium extends AbstractNpcAI
addAttackId(BAIUM, ARCHANGEL);
addKillId(BAIUM);
addSpellFinishedId(BAIUM);
setCreatureSeeId(this::onCreatureSee, BAIUM);
addCreatureSeeId(BAIUM);
final StatSet info = GrandBossManager.getInstance().getStatSet(BAIUM);
@@ -561,12 +560,12 @@ public class Baium extends AbstractNpcAI
return super.onKill(npc, killer, isSummon);
}
public void onCreatureSee(OnCreatureSee event)
@Override
public String onCreatureSee(Npc npc, Creature creature)
{
final Creature creature = event.getSeen();
if (!zone.isInsideZone(creature) || (creature.isNpc() && (creature.getId() == BAIUM_STONE)))
{
return;
return super.onCreatureSee(npc, creature);
}
if (creature.isPlayer() && !creature.isDead() && (_standbyPlayer == null))
@@ -574,7 +573,6 @@ public class Baium extends AbstractNpcAI
_standbyPlayer = (PlayerInstance) creature;
}
final Npc npc = (Npc) event.getCreature();
if (creature.isInCategory(CategoryType.CLERIC_GROUP))
{
if (npc.getCurrentHp() < (npc.getMaxHp() * 0.25))
@@ -599,6 +597,8 @@ public class Baium extends AbstractNpcAI
refreshAiParams(creature, npc, 10000, 1000);
}
manageSkills(npc);
return super.onCreatureSee(npc, creature);
}
@Override

View File

@@ -30,7 +30,6 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.MerchantInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.ClanPrivilege;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.residences.ClanHall;
import org.l2jmobius.gameserver.model.residences.ResidenceFunction;
@@ -95,7 +94,7 @@ public class ClanHallManager extends AbstractNpcAI
addStartNpc(CLANHALL_MANAGERS);
addTalkId(CLANHALL_MANAGERS);
addFirstTalkId(CLANHALL_MANAGERS);
setCreatureSeeId(this::onCreatureSee, CLANHALL_MANAGERS);
addCreatureSeeId(CLANHALL_MANAGERS);
}
@Override
@@ -477,18 +476,18 @@ public class ClanHallManager extends AbstractNpcAI
return htmltext;
}
public void onCreatureSee(OnCreatureSee event)
@Override
public String onCreatureSee(Npc npc, Creature creature)
{
final Creature creature = event.getSeen();
if (creature.isPlayer())
{
final Npc npc = (Npc) event.getCreature();
final ClanHall clanHall = npc.getClanHall();
if (clanHall != null)
{
creature.getActingPlayer().sendPacket(new AgitDecoInfo(clanHall));
}
}
return super.onCreatureSee(npc, creature);
}
private void updateVisualEffects(ClanHall clanHall, Npc npc)

View File

@@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.model.actor.Attackable;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
@@ -54,7 +53,7 @@ public class Q00275_DarkWingedSpies extends Quest
addStartNpc(NERUGA_CHIEF_TANTUS);
addTalkId(NERUGA_CHIEF_TANTUS);
addKillId(DARKWING_BAT, VARANGKAS_TRACKER);
setCreatureSeeId(this::onCreatureSee, VARANGKAS_TRACKER);
addCreatureSeeId(VARANGKAS_TRACKER);
registerQuestItems(DARKWING_BAT_FANG, VARANGKAS_PARASITE);
}
@@ -110,16 +109,16 @@ public class Q00275_DarkWingedSpies extends Quest
return super.onKill(npc, killer, isSummon);
}
public void onCreatureSee(OnCreatureSee event)
@Override
public String onCreatureSee(Npc npc, Creature creature)
{
final Creature creature = event.getSeen();
if (creature.isPlayer())
{
final Npc npc = (Npc) event.getCreature();
npc.setRunning();
((Attackable) npc).addDamageHate(creature, 0, 1);
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, creature);
}
return super.onCreatureSee(npc, creature);
}
@Override

View File

@@ -816,6 +816,36 @@ public class Quest extends AbstractScript implements IIdentifiable
showResult(player, res);
}
/**
* @param npc the NPC that sees the creature
* @param creature the creature seen by the NPC
*/
public void notifyCreatureSee(Npc npc, Creature creature)
{
PlayerInstance player = null;
if (creature.isPlayer())
{
player = creature.getActingPlayer();
}
String res = null;
try
{
res = onCreatureSee(npc, creature);
}
catch (Exception e)
{
if (player != null)
{
showError(player, e);
}
return;
}
if (player != null)
{
showResult(player, res);
}
}
/**
* @param eventName - name of event
* @param sender - NPC, who sent event
@@ -1264,6 +1294,17 @@ public class Quest extends AbstractScript implements IIdentifiable
return null;
}
/**
* This function is called whenever an NPC "sees" a creature.
* @param npc the NPC who sees the creature
* @param creature the creature seen by the NPC
* @return
*/
public String onCreatureSee(Npc npc, Creature creature)
{
return null;
}
/**
* This function is called whenever a player enters the game.
* @param player this parameter contains a reference to the exact instance of the player who is entering to the world.
@@ -2031,6 +2072,22 @@ public class Quest extends AbstractScript implements IIdentifiable
setAttackableAggroRangeEnterId(event -> notifyAggroRangeEnter(event.getNpc(), event.getActiveChar(), event.isSummon()), npcIds);
}
/**
* @param npcIds the IDs of the NPCs to register
*/
public void addCreatureSeeId(int... npcIds)
{
setCreatureSeeId(event -> notifyCreatureSee((Npc) event.getCreature(), event.getSeen()), npcIds);
}
/**
* @param npcIds the IDs of the NPCs to register
*/
public void addCreatureSeeId(Collection<Integer> npcIds)
{
setCreatureSeeId(event -> notifyCreatureSee((Npc) event.getCreature(), event.getSeen()), npcIds);
}
/**
* Register onEnterZone trigger for zone
* @param zoneId the ID of the zone to register