diff --git a/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/ai/areas/SelMahumTrainingGrounds/SelMahumDrill.java b/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/ai/areas/SelMahumTrainingGrounds/SelMahumDrill.java
deleted file mode 100644
index f579261403..0000000000
--- a/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/ai/areas/SelMahumTrainingGrounds/SelMahumDrill.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program 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.
- *
- * This program 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 .
- */
-package ai.areas.SelMahumTrainingGrounds;
-
-import org.l2jmobius.commons.util.CommonUtil;
-import org.l2jmobius.gameserver.ai.CtrlIntention;
-import org.l2jmobius.gameserver.data.SpawnTable;
-import org.l2jmobius.gameserver.enums.ChatType;
-import org.l2jmobius.gameserver.model.Location;
-import org.l2jmobius.gameserver.model.Spawn;
-import org.l2jmobius.gameserver.model.WorldObject;
-import org.l2jmobius.gameserver.model.actor.Attackable;
-import org.l2jmobius.gameserver.model.actor.Npc;
-import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
-import org.l2jmobius.gameserver.network.NpcStringId;
-
-import ai.AbstractNpcAI;
-
-/**
- * Sel Mahum Training Ground AI for drill groups.
- * @author GKR
- */
-public class SelMahumDrill extends AbstractNpcAI
-{
- private static final int[] MAHUM_CHIEFS =
- {
- 24493, // Sel Mahum Squad Leader
- };
- private static final int[] MAHUM_SOLDIERS =
- {
- 24492, // Sel Mahum Soldier
- // 24494, // Sel Mahum Warrior
- };
- private static final int[] CHIEF_SOCIAL_ACTIONS =
- {
- 1,
- 4,
- 5,
- 7
- };
- private static final Actions[] SOLDIER_SOCIAL_ACTIONS =
- {
- Actions.SCE_TRAINING_ACTION_A,
- Actions.SCE_TRAINING_ACTION_B,
- Actions.SCE_TRAINING_ACTION_C,
- Actions.SCE_TRAINING_ACTION_D
- };
- private static final NpcStringId[] CHIEF_FSTRINGS =
- {
- NpcStringId.HOW_DARE_YOU_ATTACK_MY_RECRUITS,
- NpcStringId.WHO_IS_DISRUPTING_THE_ORDER
- };
- private static final NpcStringId[] SOLDIER_FSTRINGS =
- {
- NpcStringId.THE_DRILLMASTER_IS_DEAD,
- NpcStringId.LINE_UP_THE_RANKS
- };
- // Chiefs event broadcast range
- private static final int TRAINING_RANGE = 1500;
-
- private enum Actions
- {
- SCE_TRAINING_ACTION_A(4, -1, 2, 2333),
- SCE_TRAINING_ACTION_B(1, -1, 2, 4333),
- SCE_TRAINING_ACTION_C(6, 5, 4, 1000),
- SCE_TRAINING_ACTION_D(7, -1, 2, 1000);
-
- private final int _socialActionId;
- private final int _altSocialActionId;
- private final int _repeatCount;
- private final int _repeatInterval;
-
- private Actions(int socialActionId, int altSocialActionId, int repeatCount, int repeatInterval)
- {
- _socialActionId = socialActionId;
- _altSocialActionId = altSocialActionId;
- _repeatCount = repeatCount;
- _repeatInterval = repeatInterval;
- }
-
- protected int getSocialActionId()
- {
- return _socialActionId;
- }
-
- protected int getAltSocialActionId()
- {
- return _altSocialActionId;
- }
-
- protected int getRepeatCount()
- {
- return _repeatCount;
- }
-
- protected int getRepeatInterval()
- {
- return _repeatInterval;
- }
- }
-
- private SelMahumDrill()
- {
- addAttackId(MAHUM_CHIEFS);
- addAttackId(MAHUM_SOLDIERS);
- addKillId(MAHUM_CHIEFS);
- addEventReceivedId(MAHUM_CHIEFS);
- addEventReceivedId(MAHUM_SOLDIERS);
- addSpawnId(MAHUM_CHIEFS);
- addSpawnId(MAHUM_SOLDIERS);
- // Start global return home timer
- startQuestTimer("return_home", 120000, null, null, true);
- }
-
- @Override
- public String onAdvEvent(String event, Npc npc, PlayerInstance player)
- {
- switch (event)
- {
- case "do_social_action":
- {
- if ((npc != null) && !npc.isDead())
- {
- if (CommonUtil.contains(MAHUM_CHIEFS, npc.getId()))
- {
- if ((npc.getVariables().getInt("BUSY_STATE") == 0) && (npc.getAI().getIntention() == CtrlIntention.AI_INTENTION_ACTIVE) && npc.staysInSpawnLoc())
- {
- final int idx = getRandom(6);
- if (idx <= (CHIEF_SOCIAL_ACTIONS.length - 1))
- {
- npc.broadcastSocialAction(CHIEF_SOCIAL_ACTIONS[idx]);
- npc.getVariables().set("SOCIAL_ACTION_NEXT_INDEX", idx); // Pass social action index to soldiers via script value
- npc.broadcastEvent("do_social_action", TRAINING_RANGE, null);
- }
- }
-
- startQuestTimer("do_social_action", 15000, npc, null);
- }
- else if (CommonUtil.contains(MAHUM_SOLDIERS, npc.getId()))
- {
- handleSocialAction(npc, SOLDIER_SOCIAL_ACTIONS[npc.getVariables().getInt("SOCIAL_ACTION_NEXT_INDEX")], false);
- }
- }
- break;
- }
- case "reset_busy_state":
- {
- if (npc != null)
- {
- npc.getVariables().remove("BUSY_STATE");
- npc.disableCoreAI(false);
- }
- break;
- }
- case "return_home":
- {
- for (int npcId : MAHUM_SOLDIERS)
- {
- for (Spawn npcSpawn : SpawnTable.getInstance().getSpawns(npcId))
- {
- final Npc soldier = npcSpawn.getLastSpawn();
- if ((soldier != null) && !soldier.isDead() && (npcSpawn.getName() != null) && npcSpawn.getName().startsWith("smtg_drill_group") && !soldier.staysInSpawnLoc() && ((soldier.getAI().getIntention() == CtrlIntention.AI_INTENTION_ACTIVE) || (soldier.getAI().getIntention() == CtrlIntention.AI_INTENTION_IDLE)))
- {
- soldier.setHeading(npcSpawn.getHeading());
- soldier.teleToLocation(npcSpawn.getLocation(), false);
- }
- }
- }
- break;
- }
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
- {
- if ((getRandom(10) < 1) && (CommonUtil.contains(MAHUM_SOLDIERS, npc.getId())))
- {
- npc.broadcastEvent("ATTACKED", 1000, null);
- }
- return super.onAttack(npc, attacker, damage, isSummon);
- }
-
- @Override
- public String onEventReceived(String eventName, Npc sender, Npc receiver, WorldObject reference)
- {
- if ((receiver != null) && !receiver.isDead() && receiver.isInMySpawnGroup(sender))
- {
- switch (eventName)
- {
- case "do_social_action":
- {
- if (CommonUtil.contains(MAHUM_SOLDIERS, receiver.getId()))
- {
- final int actionIndex = sender.getVariables().getInt("SOCIAL_ACTION_NEXT_INDEX");
- receiver.getVariables().set("SOCIAL_ACTION_NEXT_INDEX", actionIndex);
- handleSocialAction(receiver, SOLDIER_SOCIAL_ACTIONS[actionIndex], true);
- }
- break;
- }
- case "CHIEF_DIED":
- {
- if (!receiver.isAttackable())
- {
- return null;
- }
- if (CommonUtil.contains(MAHUM_SOLDIERS, receiver.getId()))
- {
- if (getRandom(4) < 1)
- {
- receiver.broadcastSay(ChatType.NPC_GENERAL, SOLDIER_FSTRINGS[getRandom(2)]);
- }
- if (receiver.canBeAttacked())
- {
- ((Attackable) receiver).clearAggroList();
- }
- receiver.disableCoreAI(true);
- receiver.getVariables().set("BUSY_STATE", 1);
- receiver.setRunning();
- receiver.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location((receiver.getX() + getRandom(-800, 800)), (receiver.getY() + getRandom(-800, 800)), receiver.getZ(), receiver.getHeading()));
- startQuestTimer("reset_busy_state", 5000, receiver, null);
- }
- break;
- }
- case "ATTACKED":
- {
- if (CommonUtil.contains(MAHUM_CHIEFS, receiver.getId()))
- {
- receiver.broadcastSay(ChatType.NPC_GENERAL, CHIEF_FSTRINGS[getRandom(2)]);
- }
- break;
- }
- }
- }
- return super.onEventReceived(eventName, sender, receiver, reference);
- }
-
- @Override
- public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
- {
- npc.broadcastEvent("CHIEF_DIED", TRAINING_RANGE, null);
- return null;
- }
-
- @Override
- public String onSpawn(Npc npc)
- {
- if (CommonUtil.contains(MAHUM_CHIEFS, npc.getId()))
- {
- cancelQuestTimer("do_social_action", npc, null);
- startQuestTimer("do_social_action", 15000, npc, null);
- }
-
- else if ((getRandom(18) < 1) && CommonUtil.contains(MAHUM_SOLDIERS, npc.getId()))
- {
- npc.getVariables().set("SOCIAL_ACTION_ALT_BEHAVIOR", 1);
- }
-
- // Restore AI handling by core
- npc.disableCoreAI(false);
- return super.onSpawn(npc);
- }
-
- private void handleSocialAction(Npc npc, Actions action, boolean firstCall)
- {
- if ((npc.getVariables().getInt("BUSY_STATE") != 0) || (npc.getAI().getIntention() != CtrlIntention.AI_INTENTION_ACTIVE) || !npc.staysInSpawnLoc())
- {
- return;
- }
-
- final int socialActionId = (npc.getVariables().getInt("SOCIAL_ACTION_ALT_BEHAVIOR") == 0) ? action.getSocialActionId() : action.getAltSocialActionId();
- if (socialActionId < 0)
- {
- return;
- }
-
- if (firstCall)
- {
- npc.getVariables().set("SOCIAL_ACTION_REMAINED_COUNT", action.getRepeatCount());
- }
-
- npc.broadcastSocialAction(socialActionId);
-
- final int remainedCount = npc.getVariables().getInt("SOCIAL_ACTION_REMAINED_COUNT");
- if (remainedCount > 0)
- {
- npc.getVariables().set("SOCIAL_ACTION_REMAINED_COUNT", (remainedCount - 1));
- startQuestTimer("do_social_action", action.getRepeatInterval(), npc, null);
- }
- }
-
- public static void main(String[] args)
- {
- new SelMahumDrill();
- }
-}
\ No newline at end of file
diff --git a/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/ai/areas/SelMahumTrainingGrounds/SelMahumSquad.java b/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/ai/areas/SelMahumTrainingGrounds/SelMahumSquad.java
deleted file mode 100644
index ec18ec968b..0000000000
--- a/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/ai/areas/SelMahumTrainingGrounds/SelMahumSquad.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program 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.
- *
- * This program 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 .
- */
-package ai.areas.SelMahumTrainingGrounds;
-
-import org.l2jmobius.commons.util.CommonUtil;
-import org.l2jmobius.gameserver.ai.CtrlIntention;
-import org.l2jmobius.gameserver.data.xml.SkillData;
-import org.l2jmobius.gameserver.enums.ChatType;
-import org.l2jmobius.gameserver.model.Location;
-import org.l2jmobius.gameserver.model.WorldObject;
-import org.l2jmobius.gameserver.model.actor.Npc;
-import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
-import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
-import org.l2jmobius.gameserver.model.skills.Skill;
-import org.l2jmobius.gameserver.network.NpcStringId;
-import org.l2jmobius.gameserver.taskmanager.GameTimeTaskManager;
-
-import ai.AbstractNpcAI;
-
-/**
- * Sel Mahum Training Ground AI for squads and chefs.
- * @author GKR
- */
-public class SelMahumSquad extends AbstractNpcAI
-{
- // NPCs
- private static final int CHEF = 18908;
- private static final int FIRE = 18927;
- private static final int STOVE = 18933;
-
- private static final int OHS_Weapon = 15280;
- private static final int THS_Weapon = 15281;
-
- // Sel Mahum Squad Leaders
- private static final int[] SQUAD_LEADERS =
- {
- 24493, // Sel Mahum Squad Leader
- };
-
- private static final NpcStringId[] CHEF_FSTRINGS =
- {
- NpcStringId.I_BROUGHT_THE_FOOD,
- NpcStringId.COME_AND_EAT
- };
-
- private static final int FIRE_EFFECT_BURN = 1;
- private static final int FIRE_EFFECT_NONE = 2;
-
- private static final int MAHUM_EFFECT_EAT = 1;
- private static final int MAHUM_EFFECT_SLEEP = 2;
- private static final int MAHUM_EFFECT_NONE = 3;
-
- private SelMahumSquad()
- {
- addAttackId(CHEF);
- addAttackId(SQUAD_LEADERS);
- addEventReceivedId(CHEF, FIRE, STOVE);
- addEventReceivedId(SQUAD_LEADERS);
- addFactionCallId(SQUAD_LEADERS);
- addKillId(CHEF);
- addMoveFinishedId(SQUAD_LEADERS);
- addNodeArrivedId(CHEF);
- addSkillSeeId(STOVE);
- addSpawnId(CHEF, FIRE);
- addSpawnId(SQUAD_LEADERS);
- addSpellFinishedId(CHEF);
- }
-
- @Override
- public String onAdvEvent(String event, Npc npc, PlayerInstance player)
- {
- switch (event)
- {
- case "chef_disable_reward":
- {
- npc.getVariables().set("REWARD_TIME_GONE", 1);
- break;
- }
- case "chef_heal_player":
- {
- healPlayer(npc, player);
- break;
- }
- case "chef_remove_invul":
- {
- if (npc.isMonster())
- {
- npc.setInvul(false);
- npc.getVariables().remove("INVUL_REMOVE_TIMER_STARTED");
- if ((player != null) && !player.isDead() && npc.isInSurroundingRegion(player))
- {
- addAttackPlayerDesire(npc, player);
- }
- }
- break;
- }
- case "chef_set_invul":
- {
- if (!npc.isDead())
- {
- npc.setInvul(true);
- }
- break;
- }
- case "fire":
- {
- startQuestTimer("fire", 30000 + getRandom(5000), npc, null);
- npc.setDisplayEffect(FIRE_EFFECT_NONE);
-
- if (getRandom(GameTimeTaskManager.getInstance().isNight() ? 2 : 4) < 1)
- {
- npc.setDisplayEffect(FIRE_EFFECT_BURN); // fire burns
- npc.broadcastEvent("SCE_CAMPFIRE_START", 600, null);
- }
- else
- {
- npc.setDisplayEffect(FIRE_EFFECT_NONE); // fire goes out
- npc.broadcastEvent("SCE_CAMPFIRE_END", 600, null);
- }
- break;
- }
- case "fire_arrived":
- {
- // myself.i_quest0 = 1;
- npc.setWalking();
- npc.setTarget(npc);
-
- if (!npc.isRandomWalkingEnabled())
- {
- final Skill skill = SkillData.getInstance().getSkill(6331, 1);
- if (!npc.isAffectedBySkill(skill.getId()))
- {
- npc.doCast(skill);
- }
- npc.setDisplayEffect(MAHUM_EFFECT_SLEEP);
- }
- if (npc.getVariables().getInt("BUSY_STATE") == 1) // Eating
- {
- final Skill skill = SkillData.getInstance().getSkill(6332, 1);
- if (!npc.isAffectedBySkill(skill.getId()))
- {
- npc.doCast(skill);
- }
- npc.setDisplayEffect(MAHUM_EFFECT_EAT);
- }
-
- startQuestTimer("remove_effects", 300000, npc, null);
- break;
- }
- case "notify_dinner":
- {
- npc.broadcastEvent("SCE_DINNER_EAT", 600, null);
- break;
- }
- case "remove_effects":
- {
- // myself.i_quest0 = 0;
- npc.setRunning();
- npc.setDisplayEffect(MAHUM_EFFECT_NONE);
- break;
- }
- case "reset_full_bottle_prize":
- {
- npc.getVariables().remove("FULL_BARREL_REWARDING_PLAYER");
- break;
- }
- case "return_from_fire":
- {
- if (npc.isMonster() && !npc.isDead())
- {
- ((MonsterInstance) npc).returnHome();
- }
- break;
- }
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill)
- {
- if ((npc.getId() == CHEF) && (npc.getVariables().getInt("BUSY_STATE") == 0))
- {
- if (npc.getVariables().getInt("INVUL_REMOVE_TIMER_STARTED") == 0)
- {
- startQuestTimer("chef_remove_invul", 180000, npc, attacker);
- startQuestTimer("chef_disable_reward", 60000, npc, null);
- npc.getVariables().set("INVUL_REMOVE_TIMER_STARTED", 1);
- }
- startQuestTimer("chef_heal_player", 1000, npc, attacker);
- startQuestTimer("chef_set_invul", 60000, npc, null);
- npc.getVariables().set("BUSY_STATE", 1);
- }
- else if (CommonUtil.contains(SQUAD_LEADERS, npc.getId()))
- {
- handlePreAttackMotion(npc);
- }
- return super.onAttack(npc, attacker, damage, isSummon, skill);
- }
-
- @Override
- public String onFactionCall(Npc npc, Npc caller, PlayerInstance attacker, boolean isSummon)
- {
- handlePreAttackMotion(npc);
- return super.onFactionCall(npc, caller, attacker, isSummon);
- }
-
- @Override
- public String onEventReceived(String eventName, Npc sender, Npc receiver, WorldObject reference)
- {
- switch (eventName)
- {
- case "SCE_DINNER_CHECK":
- {
- if (receiver.getId() == FIRE)
- {
- receiver.setDisplayEffect(FIRE_EFFECT_BURN);
- final Npc stove = addSpawn(STOVE, receiver.getX(), receiver.getY(), receiver.getZ() + 100, 0, false, 0);
- stove.setSummoner(receiver);
- startQuestTimer("notify_dinner", 2000, receiver, null); // @SCE_DINNER_EAT
- sender.broadcastSay(ChatType.NPC_GENERAL, CHEF_FSTRINGS[getRandom(2)], 1250);
- }
- break;
- }
- case "SCE_CAMPFIRE_START":
- {
- if (receiver.isRandomWalkingEnabled() && !receiver.isDead() && (receiver.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK) && CommonUtil.contains(SQUAD_LEADERS, receiver.getId()))
- {
- receiver.setRandomWalking(false); // Moving to fire - i_ai0 = 1
- receiver.setRunning();
- final Location loc = sender.getPointInRange(100, 200);
- loc.setHeading(receiver.getHeading());
- receiver.stopMove(null);
- receiver.getVariables().set("DESTINATION_X", loc.getX());
- receiver.getVariables().set("DESTINATION_Y", loc.getY());
- receiver.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, loc);
- }
- break;
- }
- case "SCE_CAMPFIRE_END":
- {
- if ((receiver.getId() == STOVE) && (receiver.getSummoner() == sender))
- {
- receiver.deleteMe();
- }
- else if ((receiver.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK) && CommonUtil.contains(SQUAD_LEADERS, receiver.getId()))
- {
- receiver.setRandomWalking(true);
- receiver.getVariables().remove("BUSY_STATE");
- receiver.setRHandId(THS_Weapon);
- startQuestTimer("return_from_fire", 3000, receiver, null);
- }
- break;
- }
- case "SCE_DINNER_EAT":
- {
- if (!receiver.isDead() && (receiver.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK) && (receiver.getVariables().getInt("BUSY_STATE", 0) == 0) && CommonUtil.contains(SQUAD_LEADERS, receiver.getId()))
- {
- if (!receiver.isRandomWalkingEnabled()) // i_ai0 == 1
- {
- receiver.setRHandId(THS_Weapon);
- }
- receiver.setRandomWalking(false); // Moving to fire - i_ai0 = 1
- receiver.getVariables().set("BUSY_STATE", 1); // Eating - i_ai3 = 1
- receiver.setRunning();
- receiver.broadcastSay(ChatType.NPC_GENERAL, (getRandom(3) < 1) ? NpcStringId.LOOKS_DELICIOUS : NpcStringId.LET_S_GO_EAT);
- final Location loc = sender.getPointInRange(100, 200);
- loc.setHeading(receiver.getHeading());
- receiver.stopMove(null);
- receiver.getVariables().set("DESTINATION_X", loc.getX());
- receiver.getVariables().set("DESTINATION_Y", loc.getY());
- receiver.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, loc);
- }
- break;
- }
- case "SCE_SOUP_FAILURE":
- {
- if (CommonUtil.contains(SQUAD_LEADERS, receiver.getId()))
- {
- receiver.getVariables().set("FULL_BARREL_REWARDING_PLAYER", reference.getObjectId()); // TODO: Use it in 289 quest
- startQuestTimer("reset_full_bottle_prize", 180000, receiver, null);
- }
- break;
- }
- }
- return super.onEventReceived(eventName, sender, receiver, reference);
- }
-
- @Override
- public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
- {
- if (npc.isMonster() && (npc.getVariables().getInt("REWARD_TIME_GONE") == 0))
- {
- npc.dropItem(killer, 15492, 1);
- }
- cancelQuestTimer("chef_remove_invul", npc, null);
- cancelQuestTimer("chef_disable_reward", npc, null);
- cancelQuestTimer("chef_heal_player", npc, null);
- cancelQuestTimer("chef_set_invul", npc, null);
- return super.onKill(npc, killer, isSummon);
- }
-
- @Override
- public void onMoveFinished(Npc npc)
- {
- // NPC moves to fire.
- if (!npc.isRandomWalkingEnabled() && (npc.getX() == npc.getVariables().getInt("DESTINATION_X")) && (npc.getY() == npc.getVariables().getInt("DESTINATION_Y")))
- {
- npc.setRHandId(OHS_Weapon);
- startQuestTimer("fire_arrived", 3000, npc, null);
- }
- }
-
- @Override
- public void onNodeArrived(Npc npc)
- {
- npc.broadcastEvent("SCE_DINNER_CHECK", 300, null);
- }
-
- @Override
- public String onSkillSee(Npc npc, PlayerInstance caster, Skill skill, WorldObject[] targets, boolean isSummon)
- {
- if ((npc.getId() == STOVE) && (skill.getId() == 9075) && CommonUtil.contains(targets, npc))
- {
- npc.doCast(SkillData.getInstance().getSkill(6688, 1));
- npc.broadcastEvent("SCE_SOUP_FAILURE", 600, caster);
- }
- return super.onSkillSee(npc, caster, skill, targets, isSummon);
- }
-
- @Override
- public String onSpawn(Npc npc)
- {
- if (npc.getId() == CHEF)
- {
- npc.setInvul(false);
- }
- else if (npc.getId() == FIRE)
- {
- cancelQuestTimer("fire", npc, null);
- startQuestTimer("fire", 1000, npc, null);
- }
- else if (CommonUtil.contains(SQUAD_LEADERS, npc.getId()))
- {
- npc.setDisplayEffect(3);
- npc.setRandomWalking(true);
- }
- return super.onSpawn(npc);
- }
-
- @Override
- public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill)
- {
- if ((skill != null) && (skill.getId() == 6330))
- {
- healPlayer(npc, player);
- }
- return super.onSpellFinished(npc, player, skill);
- }
-
- private void healPlayer(Npc npc, PlayerInstance player)
- {
- if ((player != null) && !player.isDead() && (npc.getVariables().getInt("INVUL_REMOVE_TIMER_STARTED") != 1) && ((npc.getAI().getIntention() == CtrlIntention.AI_INTENTION_ATTACK) || (npc.getAI().getIntention() == CtrlIntention.AI_INTENTION_CAST)))
- {
- npc.setTarget(player);
- npc.doCast(SkillData.getInstance().getSkill(6330, 1));
- }
- else
- {
- cancelQuestTimer("chef_set_invul", npc, null);
- npc.getVariables().remove("BUSY_STATE");
- npc.getVariables().remove("INVUL_REMOVE_TIMER_STARTED");
- npc.setWalking();
- }
- }
-
- private void handlePreAttackMotion(Npc attacked)
- {
- cancelQuestTimer("remove_effects", attacked, null);
- attacked.getVariables().remove("BUSY_STATE");
- attacked.setRandomWalking(true);
- attacked.setDisplayEffect(MAHUM_EFFECT_NONE);
- if (attacked.getRightHandItem() == OHS_Weapon)
- {
- attacked.setRHandId(THS_Weapon);
- }
- // TODO: Check about i_quest0
- }
-
- public static void main(String[] args)
- {
- new SelMahumSquad();
- }
-}