Exemple #1
0
    public virtual void GiveThemBuff(Vector2 TargetPosition, Vector2 InitiatorPosition, int TargetLayer, int InitiatorLayer)
    {
        Debug.Log(TargetPosition + " Buffed up!!!");
        double dist = ActionHelper.CalculateTwoDiminsionalDistance(InitiatorPosition, TargetPosition);

        BuffEffect(3, GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer));
        WaittoBuff    = 3;
        HasInteracted = false;
        OnActionDeselect();
        GameManager.Instance.OnTurnBegin += BuffCountdown;
    }
Exemple #2
0
    public virtual void RipCrushThem(Vector2 TargetPosition, Vector2 InitiatorPosition, int TargetLayer, int InitiatorLayer)
    {
        Debug.Log(TargetPosition + " We're Crushed, man!!");
        double dist = ActionHelper.CalculateTwoDiminsionalDistance(InitiatorPosition, TargetPosition);

        RipEffect(3, GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer));
        WaittoRip     = 4;
        HasInteracted = false;
        OnActionDeselect();
        GameManager.Instance.OnTurnBegin += RipCrushCountdown;
    }
Exemple #3
0
    public virtual void GiveThemHealth(Vector2 TargetPosition, Vector2 InitiatorPosition, int TargetLayer, int InitiatorLayer)
    {
        Debug.Log(TargetPosition + " Were healded up!!!");
        double dist = ActionHelper.CalculateTwoDiminsionalDistance(InitiatorPosition, TargetPosition);

        if (dist > 1)
        {
            HealEffect(0.5f, GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer));
        }
        else
        {
            HealEffect(1.0f, GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer));
        }
        WaittoHeal = 2;
        GameManager.Instance.OnTurnBegin += this.HealCountdown;
        HasInteracted = false;
        OnActionDeselect();
    }
Exemple #4
0
 public virtual void SpellAttack(Vector2 TargetPosition, Vector2 InitiatorPosition, int TargetLayer, int InitiatorLayer)
 {
     Debug.Log(TargetPosition + " Big hit!!!");
     if (GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer) != null)
     {
         Unit TargetUnit = GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer);
         if (!TargetUnit.IsKing || (TargetUnit.IsKing && TargetUnit.UnitOwner.WallIsDestroyed))
         {
             int thisAttackDamage = 1;
             for (int rolls = 0; rolls < level; rolls++)
             {
                 System.Random random       = new System.Random();
                 int           randomNumber = random.Next(1, 7);
                 if (randomNumber >= SpellDamage)
                 {
                     thisAttackDamage += 1;
                     print("Attack dealt extra damage!");
                 }
                 else if (randomNumber <= TargetUnit.Defense)
                 {
                     thisAttackDamage -= 1;
                     print("Defender prevented 1 damage!");
                 }
             }
             if (thisAttackDamage > 0)
             {
                 TargetUnit.Health -= thisAttackDamage;
             }
             if (TargetUnit.OnHit != null)
             {
                 TargetUnit.OnHit(TargetPosition, InitiatorPosition, TargetLayer, InitiatorLayer);
             }
         }
         else
         {
             print("Deflected!");
         }
         if (TargetUnit.IsMobile)
         {
             double h   = ActionHelper.CalculateTwoDiminsionalDistance(InitiatorPosition, TargetPosition);
             int    a   = (int)(TargetPosition.x - InitiatorPosition.x);
             int    o   = (int)(TargetPosition.y - InitiatorPosition.y);
             double sin = o / h * 1f;
             double cos = a / h * 1f;
             h += 1;
             int nO = (int)Mathf.Round((float)(sin * h));
             Debug.Log(nO);
             int nA = (int)Mathf.Round((float)(cos * h));
             Debug.Log(nA);
             Vector2 nextPosition = new Vector2(nA + InitiatorPosition.x, nO + InitiatorPosition.y);
             Debug.Log(nextPosition);
             if (nextPosition.x < GridCS.GRIDSIZEX && nextPosition.x >= 0 && nextPosition.y < GridCS.GRIDSIZEZ && nextPosition.y >= 0 &&
                 GridCS.Instance.GetTile(nextPosition, TargetLayer) != null && GridCS.Instance.GetUnitFromGrid(TargetPosition, TargetLayer) != null)
             {
                 GridCS.Instance.PlaceUnitInGrid(TargetUnit, TargetPosition, TargetLayer, nextPosition, TargetLayer);
                 Move MoveToSpace = new Move(TargetPosition, nextPosition, TargetLayer, TargetLayer);
                 TargetUnit.Position = nextPosition;
                 MoveToSpace.Resolve();
             }
         }
     }
     HasInteracted = false;
     OnActionDeselect();
 }