public override TaskStatus OnUpdate()
        {
            if (!Singleton <LevelManager> .Instance.levelActor.witchTimeLevelBuff.isActive)
            {
                List <BaseMonoMonster> allMonsters = Singleton <MonsterManager> .Instance.GetAllMonsters();

                for (int i = 0; i < allMonsters.Count; i++)
                {
                    BaseMonoMonster monster = allMonsters[i];
                    if (monster.isGoingToAttack(this.TimeBeforeAttack) && (Miscs.DistancForVec3IgnoreY(base._avatar.XZPosition, monster.XZPosition) < monster.config.AIArguments.AttackRange))
                    {
                        return(TaskStatus.Success);
                    }
                }
            }
            return(TaskStatus.Failure);
        }
Example #2
0
        public override TaskStatus OnUpdate()
        {
            BaseMonoEntity attackTarget = this._entity.GetAttackTarget();

            if ((attackTarget != null) && attackTarget.IsActive())
            {
                if (attackTarget is BaseMonoAvatar)
                {
                    BaseMonoAvatar avatar = (BaseMonoAvatar)attackTarget;
                    if (avatar.IsAnimatorInTag(AvatarData.AvatarTagGroup.AttackOrSkill) && !avatar.IsAnimatorInTag(AvatarData.AvatarTagGroup.AttackWithNoTarget))
                    {
                        return(TaskStatus.Success);
                    }
                    return(TaskStatus.Failure);
                }
                if (attackTarget is BaseMonoMonster)
                {
                    BaseMonoMonster monster = (BaseMonoMonster)attackTarget;
                    return(!monster.isGoingToAttack(0.5f) ? TaskStatus.Failure : TaskStatus.Success);
                }
            }
            return(TaskStatus.Failure);
        }