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(); - } -}