public static void executeAttackCommand(Monster monster, MonsterCommand command, Quinoa quinoa) { Monster monsterToAttack = quinoa.getMonsterByID(command.getParameter("monsterID")); if(monsterToAttack != null) { if(quinoa.monsterIsAdjacent(monster.x, monster.y, monsterToAttack.ID)) { //Do a combat attack MonsterActionManager.combat(monster, monsterToAttack, quinoa); //Check for removal if not player //Also check for kill if(!monsterToAttack.ID.Equals(MonsterActionManager.PLAYER_ID) && !(monsterToAttack.stats.getCurrentHealth() > 1)) { monsterToAttack.RemoveObject(); monsterKilled(monster, monsterToAttack, quinoa); } } else { //Attack misses automatically if(monster.ID.Equals(MonsterActionManager.PLAYER_ID)) { quinoa.getMessageManager().addMessage("You miss the " + EnumUtil.EnumName<MonsterCode>(monsterToAttack.monsterCode) + "."); } } } else { //Monster cannot be found if(monster.ID.Equals(MonsterActionManager.PLAYER_ID)) { quinoa.getMessageManager().addMessage("You swing at nothing."); } } }
public static void followerAI(Monster monster, Quinoa quinoa) { int targetX = quinoa.getPlayer().x; int targetY = quinoa.getPlayer().y; if (monster.readyForCommand()) { //check if the player is adjacent, if so then attack if (quinoa.monsterIsAdjacent(monster.x, monster.y, MonsterActionManager.PLAYER_ID)) { MonsterActionManager.setAttackCommand(monster, MonsterActionManager.PLAYER_ID); } else { if (monster.getAIParameter("altmove") != null) { if (monster.getAIParameter("altmove").Equals("0")) { monster.setAIParameter("altmove", "1"); } else { monster.setAIParameter("altmove", "0"); } } else { monster.setAIParameter("altmove", "0"); } if (monster.getAIParameter("altmove").Equals("0")) { if (monster.x < targetX) { MonsterActionManager.setMoveCommand(monster, Direction.E); } else if (monster.x > targetX) { MonsterActionManager.setMoveCommand(monster, Direction.W); } else if (monster.y < targetY) { MonsterActionManager.setMoveCommand(monster, Direction.S); } else if (monster.y > targetY) { MonsterActionManager.setMoveCommand(monster, Direction.N); } } else { if (monster.y < targetY) { MonsterActionManager.setMoveCommand(monster, Direction.S); } else if (monster.y > targetY) { MonsterActionManager.setMoveCommand(monster, Direction.N); } else if (monster.x < targetX) { MonsterActionManager.setMoveCommand(monster, Direction.E); } else if (monster.x > targetX) { MonsterActionManager.setMoveCommand(monster, Direction.W); } } } } }