示例#1
0
            internal void SetState(BaseNpc.Behaviour state)
            {
                if (state != BaseNpc.Behaviour.Sleep && entity.IsSleeping)
                {
                    entity.SetAiFlag(BaseNpc.AiFlags.Sleeping, false);
                }

                if (entity.CurrentBehaviour != state)
                {
                    entity.CurrentBehaviour = state;
                }
            }
示例#2
0
 private void Awake()
 {
     entity = GetComponent <BaseEntity>();
     npc    = entity.GetComponent <BaseNpc>();
     npc.CancelInvoke(npc.TickAi);
     npc.SetAiFlag(BaseNpc.AiFlags.Sleeping, false);
     animalConfig              = GetAnimalSpeed(npc);
     npc._maxHealth            = animalConfig.health;
     npc.health                = animalConfig.health;
     instance.animalAI[entity] = this;
     type         = animalConfig.agressive ? AType.Aggressive : AType.Passive;
     originalType = type;
     state        = AIState.Walking;
     lastPosition = entity.transform.position;
     InvokeHandler.InvokeRepeating(this, UpdateAI, 0, updateRate);
     if (IsStucked())
     {
         DestroyAndKill();
     }
     if (config.SleepAtNight)
     {
         InvokeHandler.InvokeRepeating(this, CheckTime, updateRate, 10 + updateRate);
     }
 }