package ai;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicBoolean;
import com.aionemu.commons.utils.Rnd;
import com.aionemu.gameserver.ai.AIName;
import com.aionemu.gameserver.model.gameobjects.Npc;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.skillengine.SkillEngine;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.utils.ThreadPoolManager;
/**
* @author Yeats
*/
@AIName("conquest_offering_buff_npc")
public class ConquestOfferingBuffNpcAI extends ActionItemNpcAI {
private AtomicBoolean used = new AtomicBoolean(false);
private Future<?> despawnTask;
public ConquestOfferingBuffNpcAI(Npc owner) {
super(owner);
}
@Override
public void handleSpawned() {
super.handleSpawned();
sendWakeUpMsg();
despawnTask = ThreadPoolManager.getInstance().schedule(() -> getOwner().getController().delete(), 65000);
}
@Override
protected void handleUseItemFinish(Player player) {
if (used.compareAndSet(false, true)) {
sendTalkedMsg();
int skillId = 21924 + Rnd.get(0, 3);
SkillEngine.getInstance().getSkill(getOwner(), skillId, 1, player).useSkill();
getOwner().getController().delete();
}
}
@Override
public void handleDied() {
super.handleDied();
cancelTask();
}
@Override
protected void handleDespawned() {
cancelTask();
super.handleDespawned();
}
private void cancelTask() {
if (despawnTask != null && !despawnTask.isDone())
despawnTask.cancel(true);
}
private void sendWakeUpMsg() {
int msg = (1501279 + (Rnd.get(0, 2) * 2));
PacketSendUtility.broadcastMessage(getOwner(), msg, 1500);
}
private void sendTalkedMsg() {
int msg = (1501280 + (Rnd.get(0, 2) * 2));
PacketSendUtility.broadcastMessage(getOwner(), msg);
}
}