package ai; import com.aionemu.commons.utils.Rnd; import com.aionemu.gameserver.ai.AIName; import com.aionemu.gameserver.model.gameobjects.Npc; /** * @author Yeats */ @AIName("conquest_offering_aggressive") public class ConquestOfferingAggressiveAI extends AggressiveNpcAI { private Npc spawner; public ConquestOfferingAggressiveAI(Npc owner) { super(owner); } @Override public void handleSpawned() { super.handleSpawned(); findAndSetCreator(); } private void findAndSetCreator() { if (getCreatorId() != 0 && getPosition().getWorldMapInstance().getObject(getCreatorId()) instanceof Npc npc) spawner = npc; } @Override public void handleDied() { if (spawner != null && !spawner.isDead()) { spawner.getAi().onCustomEvent(1); // notify spawner that npc died spawnRandomNpc(); } super.handleDied(); } // spawn a shugo or a portal private void spawnRandomNpc() { int npcId = 0; if (Rnd.chance() < 55) { if (Rnd.chance() < 45) { // spawn a shugo npcId = 856175 + Rnd.get(0, 3); } else { // spawn a portal npcId = getOwner().getWorldId() == 210050000 ? 833018 : 833021; } } if (npcId != 0) spawn(npcId, getOwner().getX() + 0.3f, getOwner().getY() + 0.3f, getOwner().getZ() + 0.2f, getOwner().getHeading()); } }