Exemplo n.º 1
0
 public static void Write(AbstractCreatureAI abstractCreatureAI, ref BinaryWriter writer)
 {
     writer.Write(abstractCreatureAI.path.Count);
     for (int a = 0; a < abstractCreatureAI.path.Count; a++)
     {
         WorldCoordinateHandler.Write(abstractCreatureAI.path[a], ref writer);
     }
 }
Exemplo n.º 2
0
            public static AbstractCreatureAI Read(AbstractCreatureAI abstractCreatureAI, ref BinaryReader reader)
            {
                int numberOfNodes = reader.ReadInt32();

                abstractCreatureAI.path.Clear();
                for (int a = 0; a < numberOfNodes; a++)
                {
                    abstractCreatureAI.path.Add(WorldCoordinateHandler.Read(ref reader));
                }
                return(abstractCreatureAI);
            }
Exemplo n.º 3
0
 void Start()
 {
     healthPoints = new HealthPoint[] {
         new HealthPoint(50.0f),
         new HealthPoint(50.0f),
         new HealthPoint(50.0f),
         new HealthPoint(50.0f),
         new HealthPoint(50.0f)
     };
     agent = gameObject.GetComponent<NavMeshAgent> ();
     _transform = gameObject.GetComponent<Transform> ();
     creatureObject = gameObject;
     creatureAI = GetComponent<BasicCreatureAI> ();
     creatureAI.init ();
 }
    public void ctor(World world, patch_CreatureTemplate creatureTemplate, patch_Creature realizedCreature, WorldCoordinate pos, EntityID ID)
    {
        orig_ctor(world, creatureTemplate, realizedCreature, pos, ID);
        CreatureTemplate.Type type = creatureTemplate.TopAncestor().type;
        if (creatureTemplate.AI)
        {
            type = creatureTemplate.type;
            switch (type)
            {
            case CreatureTemplate.Type.Scavenger:
                abstractAI = new ScavengerAbstractAI(world, this);
                goto IL_2F4;

            case CreatureTemplate.Type.Overseer:
                abstractAI = new OverseerAbstractAI(world, this);
                goto IL_2F4;

            default:
                switch (type)
                {
                case CreatureTemplate.Type.Vulture:
                    break;

                default:
                    if (type != CreatureTemplate.Type.MirosBird)
                    {
                        abstractAI = new AbstractCreatureAI(world, this);
                        goto IL_2F4;
                    }
                    abstractAI = new MirosBirdAbstractAI(world, this);
                    goto IL_2F4;

                case CreatureTemplate.Type.CicadaA:
                case CreatureTemplate.Type.CicadaB:
                    abstractAI = new CicadaAbstractAI(world, this);
                    goto IL_2F4;

                case CreatureTemplate.Type.BigEel:
                    abstractAI = new BigEelAbstractAI(world, this);
                    goto IL_2F4;

                case CreatureTemplate.Type.Deer:
                    abstractAI = new DeerAbstractAI(world, this);
                    goto IL_2F4;

                case (CreatureTemplate.Type)patch_CreatureTemplate.Type.WalkerBeast:
                    abstractAI = new WalkerBeastAbstractAI(world, this);
                    goto IL_2F4;
                }
                break;

            case CreatureTemplate.Type.SmallNeedleWorm:
            case CreatureTemplate.Type.BigNeedleWorm:
                abstractAI = new NeedleWormAbstractAI(world, this);
                goto IL_2F4;

            case CreatureTemplate.Type.DropBug:
                abstractAI = new DropBugAbstractAI(world, this);
                goto IL_2F4;

            case CreatureTemplate.Type.KingVulture:
                break;
            }
            abstractAI = new VultureAbstractAI(world, this);
        }
IL_2F4:
        if (pos.abstractNode > -1 && pos.abstractNode < Room.nodes.Length && Room.nodes[pos.abstractNode].type == AbstractRoomNode.Type.Den && !pos.TileDefined)
        {
            if (Room.offScreenDen)
            {
                remainInDenCounter = 1;
            }
            else
            {
                remainInDenCounter = UnityEngine.Random.Range(100, 1000);
            }
            if (abstractAI != null)
            {
                abstractAI.denPosition = new WorldCoordinate?(pos);
            }
            spawnDen = pos;
        }
        if (creatureTemplate.type == CreatureTemplate.Type.TentaclePlant || creatureTemplate.type == CreatureTemplate.Type.PoleMimic)
        {
            remainInDenCounter = 0;
        }
    }