Exemple #1
0
    public override void ShowAttackEffect(UnitBase _unitToAttack)
    {
        base.ShowAttackEffect(_unitToAttack);

        tilesInEnemyHover.Clear();
        CalculateAttackLogic(_unitToAttack, false);

        SetShadowRotation(this, this.myCurrentTile, _unitToAttack.myCurrentTile);

        if (!isMovingorRotating)
        {
            sombraHoverUnit.SetActive(true);
            sombraHoverUnit.transform.position = currentTileVectorToMove;
        }

        if (_unitToAttack.myCurrentTile.tileX == tilesInEnemyHover[0].tileX)
        {
            if (_unitToAttack.myCurrentTile.tileZ < tilesInEnemyHover[0].tileZ)
            {
                previousFacingDirection = FacingDirection.South;
                sombraHoverUnit.transform.DORotate(new Vector3(0, 180, 0), 0);
            }

            else
            {
                previousFacingDirection = FacingDirection.North;
                sombraHoverUnit.transform.DORotate(new Vector3(0, 0, 0), 0);
            }
        }

        else
        {
            if (_unitToAttack.myCurrentTile.tileX < tilesInEnemyHover[0].tileX)
            {
                previousFacingDirection = FacingDirection.West;
                sombraHoverUnit.transform.DORotate(new Vector3(0, -90, 0), 0);
            }

            else
            {
                previousFacingDirection = FacingDirection.East;
                sombraHoverUnit.transform.DORotate(new Vector3(0, 90, 0), 0);
            }
        }

        //Importante que el calculo de daño vaya después de estos cuatro ifs que calculan previousFacingDirection
        CalculateDamagePreviousAttack(_unitToAttack, this, tilesInEnemyHover[0], previousFacingDirection);
        _unitToAttack.ColorAvailableToBeAttackedAndNumberDamage(damageWithMultipliersApplied);

        if (smokeBomb)
        {
            if (_unitToAttack.currentHealth - damageWithMultipliersApplied <= 0)
            {
                if (smokeBomb2)
                {
                    TM.surroundingTiles.Clear();

                    TM.GetSurroundingTiles(tilesInEnemyHover[0], 1, true, false);

                    Vector3    spawnBombShadow     = new Vector3(sombraHoverUnit.transform.position.x, sombraHoverUnit.transform.position.y + 2, sombraHoverUnit.transform.position.z);
                    GameObject smokeBombShadowRef1 = Instantiate(smokeBombShadow, spawnBombShadow, sombraHoverUnit.transform.rotation);
                    bombsShadowSpawned.Add(smokeBombShadowRef1);

                    //Hago daño a las unidades adyacentes
                    for (int i = 0; i < TM.surroundingTiles.Count; ++i)
                    {
                        if (TM.surroundingTiles[i] != null)
                        {
                            Vector3 spawnBombShadow2 = new Vector3(TM.surroundingTiles[i].transform.position.x, TM.surroundingTiles[i].transform.position.y + 2, TM.surroundingTiles[i].transform.position.z);

                            if (TM.surroundingTiles[i].unitOnTile != null)
                            {
                                GameObject smokeBombShadowRef2 = Instantiate(smokeBombShadow, spawnBombShadow2, TM.surroundingTiles[i].transform.rotation);
                                bombsShadowSpawned.Add(smokeBombShadowRef2);
                            }

                            else
                            {
                                GameObject smokeBombShadowRef = Instantiate(smokeBombShadow, TM.surroundingTiles[i].transform.position, TM.surroundingTiles[i].transform.rotation);
                                bombsShadowSpawned.Add(smokeBombShadowRef);
                            }
                        }
                    }
                }

                else
                {
                    Vector3 spawnBombShadow = new Vector3(sombraHoverUnit.transform.position.x, sombraHoverUnit.transform.position.y + 2, sombraHoverUnit.transform.position.z);
                    //Enseñar sombra bomba de humo
                    GameObject smokeBombShadowRef = Instantiate(smokeBombShadow, spawnBombShadow, sombraHoverUnit.transform.rotation);
                    bombsShadowSpawned.Add(smokeBombShadowRef);
                }
            }
        }

        for (int i = 0; i < tilesInEnemyHover.Count; i++)
        {
            tilesInEnemyHover[i].ColorAttack();
        }
    }
Exemple #2
0
    public override void ShowAttackEffect(UnitBase _unitToAttack)
    {
        //Este no usa la base porque es el propio monje

        if (rotatorTime)
        {
            if (rotatorTime2)
            {
                if (_unitToAttack.isMarked)
                {
                    TM.surroundingTiles.Clear();

                    TM.GetSurroundingTiles(_unitToAttack.myCurrentTile, 1, true, false);

                    //Marco a las unidades adyacentes si no están marcadas
                    for (int i = 0; i < TM.surroundingTiles.Count; ++i)
                    {
                        if (TM.surroundingTiles[i].unitOnTile != null)
                        {
                            if (TM.surroundingTiles[i].unitOnTile.GetComponent <EnemyUnit>() &&
                                !TM.surroundingTiles[i].unitOnTile.GetComponent <EnemyUnit>().isMarked)
                            {
                                PutQuitMark(TM.surroundingTiles[i].unitOnTile, this, false, true);
                            }
                        }
                    }
                }
            }


            PutQuitMark(_unitToAttack, this, false, true);

            _unitToAttack.hoverRotateIcon.SetActive(true);
        }

        else if (suplex)
        {
            tilesInEnemyHover.Clear();
            //COMPROBAR
            SetShadowRotation(_unitToAttack, _unitToAttack.myCurrentTile, myCurrentTile);

            if (currentFacingDirection == FacingDirection.North)
            {
                if (myCurrentTile.tilesInLineDown[0].unitOnTile == null)
                {
                    currentTileVectorToMove = myCurrentTile.tilesInLineDown[0].transform.position;
                    tilesInEnemyHover.Add(myCurrentTile.tilesInLineDown[0]);

                    if (!isMovingorRotating)
                    {
                        _unitToAttack.sombraHoverUnit.SetActive(true);
                        _unitToAttack.sombraHoverUnit.transform.position = currentTileVectorToMove;
                    }
                }
            }

            else if (currentFacingDirection == FacingDirection.South)
            {
                if (myCurrentTile.tilesInLineUp[0].unitOnTile == null)
                {
                    currentTileVectorToMove = myCurrentTile.tilesInLineUp[0].transform.position;
                    tilesInEnemyHover.Add(myCurrentTile.tilesInLineUp[0]);

                    if (!isMovingorRotating)
                    {
                        _unitToAttack.sombraHoverUnit.SetActive(true);
                        _unitToAttack.sombraHoverUnit.transform.position = currentTileVectorToMove;
                    }
                }
            }

            else if (currentFacingDirection == FacingDirection.East)
            {
                if (myCurrentTile.tilesInLineLeft[0].unitOnTile == null)
                {
                    currentTileVectorToMove = myCurrentTile.tilesInLineLeft[0].transform.position;
                    tilesInEnemyHover.Add(myCurrentTile.tilesInLineLeft[0]);
                    if (!isMovingorRotating)
                    {
                        _unitToAttack.sombraHoverUnit.SetActive(true);
                        _unitToAttack.sombraHoverUnit.transform.position = currentTileVectorToMove;
                    }
                }
            }

            else if (currentFacingDirection == FacingDirection.West)
            {
                if (myCurrentTile.tilesInLineRight[0].unitOnTile == null)
                {
                    currentTileVectorToMove = myCurrentTile.tilesInLineRight[0].transform.position;
                    tilesInEnemyHover.Add(myCurrentTile.tilesInLineRight[0]);
                    if (!isMovingorRotating)
                    {
                        _unitToAttack.sombraHoverUnit.SetActive(true);
                        _unitToAttack.sombraHoverUnit.transform.position = currentTileVectorToMove;
                    }
                }
            }

            for (int i = 0; i < tilesInEnemyHover.Count; i++)
            {
                tilesInEnemyHover[i].ColorAttack();

                if (tilesInEnemyHover[i].unitOnTile != null)
                {
                    tilesInEnemyHover[i].unitOnTile.ColorAvailableToBeAttackedAndNumberDamage(-1);
                }
            }

            //MARCAS
            PutQuitMark(_unitToAttack, this, false, true);
        }

        else
        {
            PutQuitMark(_unitToAttack, this, false, true);
        }

        CalculateDamage(_unitToAttack);
        _unitToAttack.ColorAvailableToBeAttackedAndNumberDamage(damageWithMultipliersApplied);
    }
Exemple #3
0
    public override void ShowAttackEffect(UnitBase _unitToAttack)
    {
        base.ShowAttackEffect(_unitToAttack);

        if (areaHealer)
        {
            if (_unitToAttack.GetComponent <PlayerUnit>())
            {
                TM.surroundingTiles.Clear();

                TM.GetSurroundingTiles(_unitToAttack.myCurrentTile, 1, true, false);

                tilesInEnemyHover.Add(_unitToAttack.myCurrentTile);

                for (int i = 0; i < TM.surroundingTiles.Count; ++i)
                {
                    if (TM.surroundingTiles[i] != null)
                    {
                        tilesInEnemyHover.Add(TM.surroundingTiles[i]);
                    }
                }

                previsualizeAttackIcon.SetActive(true);
                canvasHover.SetActive(true);
                canvasHover.GetComponent <CanvasHover>().damageNumber.SetText("-1");

                for (int i = 0; i < tilesInEnemyHover.Count; i++)
                {
                    tilesInEnemyHover[i].ColorHeal();

                    if (tilesInEnemyHover[i].unitOnTile != null)
                    {
                        if (tileTransformer)
                        {
                            GameObject shadowTile = Instantiate(shadowHealerTilePref, tilesInEnemyHover[i].transform.position, tilesInEnemyHover[i].transform.rotation);
                            shadowTilesSpawned.Add(shadowTile);
                        }

                        tilesInEnemyHover[i].unitOnTile.canvasHover.GetComponent <CanvasHover>().damageNumber.SetText("+" + healedLife);
                        tilesInEnemyHover[i].unitOnTile.canvasHover.GetComponent <CanvasHover>().damageNumber.color = new Color32(0, 255, 50, 255);
                        tilesInEnemyHover[i].unitOnTile.ColorAvailableToBeHealed();
                        tilesInEnemyHover[i].unitOnTile.canvasHover.SetActive(true);
                        tilesInEnemyHover[i].unitOnTile.myCurrentTile.ColorHeal();
                    }
                }
            }

            else
            {
                int healNumeber;

                if (_unitToAttack.isMarked)
                {
                    if (_unitToAttack.numberOfMarks == 1)
                    {
                        healNumeber = (healedLife + pjMonkUnitReference.healerBonus);
                    }

                    else
                    {
                        healNumeber = (healedLife + pjMonkUnitReference.healWithUpgradedMark);
                    }
                }

                else
                {
                    healNumeber = healedLife;
                }

                canvasHover.SetActive(true);
                canvasHover.GetComponent <CanvasHover>().damageNumber.SetText("+" + healNumeber);
                canvasHover.GetComponent <CanvasHover>().damageNumber.color = new Color32(0, 255, 50, 255);
                ColorAvailableToBeHealed();
                myCurrentTile.ColorHeal();

                CalculateDamage(_unitToAttack);
                _unitToAttack.ColorAvailableToBeAttackedAndNumberDamage(damageWithMultipliersApplied);
                _unitToAttack.myCurrentTile.ColorAttack();
            }
        }

        else
        {
            if (_unitToAttack != null && _unitToAttack.GetComponent <PlayerUnit>())
            {
                if (tileTransformer)
                {
                    GameObject shadowTile = Instantiate(shadowHealerTilePref, _unitToAttack.transform.position, _unitToAttack.transform.rotation);
                    shadowTilesSpawned.Add(shadowTile);
                }

                if (individualHealer2)
                {
                    SetMovementIcon(movementUpgrade, _unitToAttack, true);
                }

                previsualizeAttackIcon.SetActive(true);
                canvasHover.SetActive(true);
                canvasHover.GetComponent <CanvasHover>().damageNumber.SetText("-1");
                _unitToAttack.canvasHover.SetActive(true);
                _unitToAttack.canvasHover.GetComponent <CanvasHover>().damageNumber.SetText("+" + healedLife);
                _unitToAttack.canvasHover.GetComponent <CanvasHover>().damageNumber.color = new Color32(0, 255, 50, 255);
                _unitToAttack.ColorAvailableToBeHealed();
                _unitToAttack.myCurrentTile.ColorHeal();
                tilesInEnemyHover.Add(_unitToAttack.myCurrentTile);
            }

            else if (_unitToAttack != null)
            {
                int healNumeber;

                if (_unitToAttack.isMarked)
                {
                    if (_unitToAttack.numberOfMarks == 1)
                    {
                        healNumeber = (healedLife + pjMonkUnitReference.healerBonus);
                    }

                    else
                    {
                        healNumeber = (healedLife + pjMonkUnitReference.healWithUpgradedMark);
                    }
                }

                else
                {
                    healNumeber = healedLife;
                }

                healthBar.SetActive(true);
                canvasHover.SetActive(true);
                canvasHover.GetComponent <CanvasHover>().damageNumber.SetText("+" + healNumeber);
                canvasHover.GetComponent <CanvasHover>().damageNumber.color = new Color32(0, 255, 50, 255);
                ColorAvailableToBeHealed();
                myCurrentTile.ColorHeal();

                CalculateDamage(_unitToAttack);
                _unitToAttack.ColorAvailableToBeAttackedAndNumberDamage(damageWithMultipliersApplied);
                _unitToAttack.myCurrentTile.ColorAttack();
            }
        }
    }