Beispiel #1
0
 /// <summary>
 /// Dig a block.
 /// </summary>
 void Dig()
 {
     if (Surrounding[1, 2, 1] as ContainerBlock == null && y > 1)
     {
         transform.Translate(Vector3.down);
         Winstance.SetBlock(x, --y, z, new AirBlock());
     }
 }
Beispiel #2
0
    void LayNestBlock()
    {
        // if health high enough, spend 1/3rd of health to lay a nest block
        int x = (int)transform.position.x;
        int y = (int)(transform.position.y - 0.5f);
        int z = (int)transform.position.z;

        AbstractBlock nestBlock = new Antymology.Terrain.NestBlock();

        if (health > maxHealth / 2)
        {
            transform.position = new Vector3(transform.position.x, transform.position.y + 1, transform.position.z);
            wm.surfaceBlocks[x, z]++;
            wm.SetBlock(x, y + 1, z, nestBlock);


            health = health / 3;
            wm.nestBlocks++;
        }
    }
Beispiel #3
0
 void ConsumeMulch()
 {
     // consumes a mulch block if health below a certain amount and the only occupant of that mulch
     if (health < 250)
     {
         int  x            = (int)transform.position.x;
         int  y            = (int)(transform.position.y - 0.5f);
         int  z            = (int)transform.position.z;
         bool soloOccupied = true;
         if (wm.GetBlock(x, y, z) is Antymology.Terrain.MulchBlock && x > 2 && y > 2 && z > 2 &&
             x < ConfigurationManager.Instance.World_Diameter * ConfigurationManager.Instance.Chunk_Diameter - 2 &&
             y < ConfigurationManager.Instance.World_Height * ConfigurationManager.Instance.Chunk_Diameter - 2 &&
             z < ConfigurationManager.Instance.World_Diameter * ConfigurationManager.Instance.Chunk_Diameter - 2)
         {
             foreach (GameObject ant in wm.Ants)
             {
                 if (transform.position == ant.transform.position && !GameObject.ReferenceEquals(gameObject, ant))
                 {
                     soloOccupied = false;
                 }
             }
             if (transform.position == wm.queen.GetComponent <QueenBehaviour>().transform.position)
             {
                 soloOccupied = false;
             }
             if (soloOccupied)
             {
                 AbstractBlock newBlock = new Antymology.Terrain.AirBlock();
                 wm.SetBlock(x, y, z, newBlock);
                 transform.position = new Vector3(transform.position.x, transform.position.y - 1, transform.position.z);
                 wm.surfaceBlocks[x, z]--;
                 health = 1000;
             }
         }
     }
     moveToQueen = true;
 }