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.");
                }
            }
        }
Exemplo n.º 2
0
        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);
                        }
                    }
                }
            }
        }