int makeAttackValue()
 {
     if (plateType == 0)
     {
         if (FunctionHelperScript.random0To100() > critChance)
         {
             return(attackValue);
         }
         else
         {
             Debug.Log("crit");
             return(attackValue * 2);
         }
     }
     else
     {
         if (plateType == 1)
         {
             if (FunctionHelperScript.random0To100() > critChance * 2.5)
             {
                 return(attackValue);
             }
             else
             {
                 Debug.Log("crit");
                 return(attackValue * 2);
             }
         }
         else
         {
             attackCounter--;
             return(attackValue);
         }
     }
 }
Beispiel #2
0
    void fillInRangeList()
    {
        enemyInRange.Clear();
        enemysPlateInRange.Clear();
        platesInRange.Clear();

        float range = attackRange();

        foreach (GameObject elem in enemyCounterList)
        {
            if (FunctionHelperScript.vectorLength(transform.position, elem.transform.position) <= range)
            {
                enemyInRange.Add(elem);
                enemysPlateInRange.Add(elem.GetComponent <CounterMovementScript>().getPlate());
            }
        }

        foreach (GameObject elem in platesList)
        {
            if (FunctionHelperScript.vectorLength(transform.position, elem.transform.position) <= range)
            {
                platesInRange.Add(elem);
            }
        }
    }
Beispiel #3
0
 void Start()
 {
     playerTurn      = true;
     allCounterList  = FunctionHelperScript.mergeList(playerSiteCounter, otherSiteCounter);
     activeCounter   = null;
     thisTurnCounter = new List <GameObject>();
     aiControler     = GameObject.Find("AIControler");
 }
Beispiel #4
0
 void setPlateToGo(GameObject plateToGo)
 {
     if (isUp)
     {
         isUp = false;
         transform.position = new Vector3(transform.position.x, 0.2f, transform.position.z);
     }
     movesCounter++;
     plate.SendMessage("freePlate");
     plate.SendMessage("makeNeighbourNotViableToGo");
     isGoing    = true;
     vectorToGo = FunctionHelperScript.makeVersor(new Vector3(transform.position.x, 0, transform.position.z), new Vector3(plateToGo.transform.position.x, 0, plateToGo.transform.position.z));
     plate      = null;
 }
    float fireArrow(GameObject plateToAttack)
    {
        Vector3 forceVersor = FunctionHelperScript.makeVersor(transform.position, plateToAttack.transform.position);

        forceVersor = new Vector3(forceVersor.x, forceVersor.y + 1, forceVersor.z);
        forceVersor = forceVersor / FunctionHelperScript.vectorLength(forceVersor);

        float forceToAdd;

        if (onBuilding)
        {
            float bHeight;
            if (plateType == 2)
            {
                bHeight = 0.8f;
            }
            else
            {
                bHeight = 0.53f;
            }
            float length = FunctionHelperScript.vectorLength(new Vector3(transform.position.x, 0, transform.position.z), plateToAttack.transform.position);
            forceToAdd = (9.81f * Mathf.Pow(length, 2)) / (length + bHeight);
            forceToAdd = Mathf.Sqrt(forceToAdd);
        }
        else
        {
            forceToAdd = 3.132f * Mathf.Sqrt(FunctionHelperScript.vectorLength(transform.position, plateToAttack.transform.position));
        }


        GameObject arrowCopy = Instantiate(arrow, transform.position, Quaternion.identity);
        Rigidbody  arrowRb   = arrowCopy.GetComponent <Rigidbody>();

        arrowRb.AddForce(forceVersor * forceToAdd * 10);
        float timeToDestroyArrow = (2 * forceToAdd) / 9.81f;

        Destroy(arrowCopy, timeToDestroyArrow - 0.1f);
        return(timeToDestroyArrow);
    }