package ai;
import com.aionemu.gameserver.ai.AIName;
import com.aionemu.gameserver.model.Race;
import com.aionemu.gameserver.model.gameobjects.Npc;
import com.aionemu.gameserver.model.siege.SiegeRace;
import com.aionemu.gameserver.model.templates.npcshout.ShoutEventType;
import com.aionemu.gameserver.services.SiegeService;
/**
* @author Rolandas
*/
@AIName("speaker")
public class SpeakerAI extends GeneralNpcAI {
public SpeakerAI(Npc owner) {
super(owner);
}
@Override
public boolean onPatternShout(ShoutEventType event, String pattern, int skillNumber) {
if (getOwner().getWorldId() != 210050000 && getOwner().getWorldId() != 220070000)
return false;
if (event != ShoutEventType.IDLE || pattern == null)
return false;
final SiegeService srv = SiegeService.getInstance();
Race npcRace = getOwner().getRace();
if (npcRace == Race.ASMODIANS) {
if ("1".equals(pattern)) {
// TODO: find if Dredgion Ship is spawned
} else if ("2".equals(pattern)) {
return srv.isSiegeInProgress(1142) && srv.getSiegeLocation(1142).getRace() == SiegeRace.ASMODIANS
|| srv.isSiegeInProgress(1143) && srv.getSiegeLocation(1143).getRace() == SiegeRace.ASMODIANS
|| srv.isSiegeInProgress(1144) && srv.getSiegeLocation(1144).getRace() == SiegeRace.ASMODIANS
|| srv.isSiegeInProgress(1145) && srv.getSiegeLocation(1145).getRace() == SiegeRace.ASMODIANS;
} else if ("3".equals(pattern)) {
return srv.isSiegeInProgress(1132) && srv.getSiegeLocation(1132).getRace() == SiegeRace.ASMODIANS
|| srv.isSiegeInProgress(1251) && srv.getSiegeLocation(1251).getRace() == SiegeRace.ASMODIANS;
} else if ("4".equals(pattern)) {
return srv.isSiegeInProgress(1221) && srv.getSiegeLocation(1221).getRace() == SiegeRace.BALAUR;
} else if ("5".equals(pattern)) {
return srv.isSiegeInProgress(1131);
} else if ("6".equals(pattern)) {
return srv.getSiegeLocation(3011) != null && srv.getSiegeLocation(3011).getRace() == SiegeRace.ELYOS && srv.getSiegeLocation(3021) != null
&& srv.getSiegeLocation(3021).getRace() == SiegeRace.ELYOS;
}
} else if (npcRace == Race.ELYOS) {
if ("1".equals(pattern)) {
// TODO: find if Dredgion Ship is spawned
} else if ("2".equals(pattern)) {
return srv.isSiegeInProgress(1142) && srv.getSiegeLocation(1142).getRace() == SiegeRace.ELYOS
|| srv.isSiegeInProgress(1143) && srv.getSiegeLocation(1143).getRace() == SiegeRace.ELYOS
|| srv.isSiegeInProgress(1144) && srv.getSiegeLocation(1144).getRace() == SiegeRace.ELYOS
|| srv.isSiegeInProgress(1145) && srv.getSiegeLocation(1145).getRace() == SiegeRace.ELYOS;
} else if ("3".equals(pattern)) {
return srv.isSiegeInProgress(1141) && srv.getSiegeLocation(1141).getRace() == SiegeRace.ELYOS
|| srv.isSiegeInProgress(1211) && srv.getSiegeLocation(1211).getRace() == SiegeRace.ELYOS;
} else if ("4".equals(pattern)) {
return srv.isSiegeInProgress(1241) && srv.getSiegeLocation(1241).getRace() == SiegeRace.BALAUR;
} else if ("5".equals(pattern)) {
return srv.isSiegeInProgress(1141);
} else if ("6".equals(pattern)) {
return srv.getSiegeLocation(2011) != null && srv.getSiegeLocation(2011).getRace() == SiegeRace.ASMODIANS && srv.getSiegeLocation(2021) != null
&& srv.getSiegeLocation(2021).getRace() == SiegeRace.ASMODIANS;
}
}
return false;
}
}