/// <summary>
    /// Start this instance.
    /// </summary>
    void Start()
    {
        Debug.Assert(bulletPrefab, "Wrong initial settings");
        AttackRanged attack = tower.GetComponentInChildren <AttackRanged>();

        if (attack != null)
        {
            float radius = radiusCollider.radius * Mathf.Max(radiusCollider.transform.localScale.x, radiusCollider.transform.localScale.y);
            // Get all enemies in attack radius
            Collider2D[] enemies             = Physics2D.OverlapCircleAll(radiusCollider.transform.position, radius, 1 << LayerMask.NameToLayer("Enemy"));
            GameObject   defaultBulletPrefab = attack.arrowPrefab;
            attack.arrowPrefab = bulletPrefab;
            foreach (Collider2D enemy in enemies)
            {
                // Attack every enemy
                attack.Fire(enemy.gameObject.transform);
            }
            attack.arrowPrefab = defaultBulletPrefab;
        }
        else
        {
            Debug.Log("This tower can not use attack skills");
        }
        Destroy(gameObject);
    }
Exemple #2
0
 /// <summary>
 /// Awake this instance.
 /// </summary>
 void Awake()
 {
     aiBehavior   = GetComponent <AiBehavior>();
     meleeAttack  = GetComponentInChildren <AttackMelee>() as IAttack;
     rangedAttack = GetComponentInChildren <AttackRanged>();
     nav          = GetComponent <NavAgent>();
     Debug.Assert((aiBehavior != null) && ((meleeAttack != null) || (rangedAttack != null)), "Wrong initial parameters");
 }
Exemple #3
0
    //public float incSpeed = 2;
    // Use this for initialization
    void Start()
    {
        //at= GetComponentInParent<ArcherTower>();
        //at.GetClosestEnemy()
        AttackRanged at = from.GetComponent <AttackRanged>();

        enemy = at.GetClosestTarget();
        //speed = at.dmg + incSpeed;
    }
Exemple #4
0
        public static string SerializeAttackData(AttackBase ab, int indentLevel)
        {
            System.Text.StringBuilder attackString = new System.Text.StringBuilder();

            AddIndentedString(attackString, String.Format("Data for {0}", ab.name), indentLevel);
            AddIndentedString(attackString, $"Damage Data: {ab.DamageData.Minimum} - {ab.DamageData.Maximum} of type {ab.DamageData.Type.ToString()}", indentLevel);
            AddIndentedString(attackString, $"Accuracy Bonus: {ab.AccuracyBonus}", indentLevel);
            AddIndentedString(attackString, $"Range: {ab.AttackDistance}", indentLevel);
            AddIndentedString(attackString, $"DT Bypass: {ab.DTBypass}", indentLevel);
            AddIndentedString(attackString, $"Speed: {ab.AttackSpeedTime}", indentLevel);
            AddIndentedString(attackString, $"Push: {ab.PushDistance}", indentLevel);
            AddIndentedString(attackString, $"Defended By: {ab.DefendedBy.ToString()}", indentLevel);

            AddIndentedString(attackString, $"Status Effects Count: {ab.StatusEffects.Count}", indentLevel);
            foreach (StatusEffectParams effect in ab.StatusEffects)
            {
                AddIndentedString(attackString, String.Format("Status Effect: {0} for {1}, {2}", effect.AffectsStat, effect.Duration, effect.Value), indentLevel);
            }
            AddIndentedString(attackString, $"Afflictions Count: {ab.Afflictions.Count}", indentLevel);
            foreach (AfflictionParams affliction in ab.Afflictions)
            {
                AddIndentedString(attackString, $"Affliction: {affliction.AfflictionPrefab.name} for {affliction.Duration}", indentLevel);
            }
            if (ab is AttackRanged)
            {
                AttackRanged abRanged = ab as AttackRanged;

                //Anything to do here?
            }

            if (ab is AttackAOE)
            {
                AttackAOE abAOE = ab as AttackAOE;
                AddIndentedString(attackString, $"Blast Radius: {abAOE.BlastRadius}", indentLevel);
                AddIndentedString(attackString, $"Blast Angle: {abAOE.DamageAngleDegrees}", indentLevel);
            }


            if (ab.ExtraAOE != null)
            {
                AddIndentedString(attackString, "Extra AOE Data", indentLevel);
                attackString.Append(SerializeAttackData(ab.ExtraAOE, indentLevel + 1));
            }

            return(attackString.ToString());
        }
    /// <summary>
    /// Clicked this instance.
    /// </summary>
    protected override void Clicked()
    {
        base.Clicked();
        // Apply skill effect
        TowerSkillEffect towerSkillEffect = Instantiate(effectPrefab);

        towerSkillEffect.tower = tower;
        AttackRanged attackRanged = tower.GetComponentInChildren <AttackRanged>();

        if (attackRanged != null)
        {
            towerSkillEffect.radiusCollider = attackRanged.GetComponent <CircleCollider2D>();
        }
        else if (tower.range != null)
        {
            towerSkillEffect.radiusCollider = tower.range.GetComponent <CircleCollider2D>();
        }
    }
Exemple #6
0
    // Use this for initialization
    void Start()
    {
        AttackRanged at = from.GetComponent <AttackRanged>();

        enemy = at.GetClosestTarget();
        enemy.GetComponent <OrcScript>();
        int add = 0;

        if (enemy.transform.position.x < transform.position.x)
        {
            add = -xAdd;
        }
        else
        {
            add = xAdd;
        }
        lastPos = new Vector2(enemy.transform.position.x + add, enemy.transform.position.y - yAdd);
    }
Exemple #7
0
    //private GameObject[] enemies;

    // Use this for initialization
    void Start()
    {
        attack = GetComponent <AttackRanged>();
        Start2();
    }
Exemple #8
0
 // Use this for initialization
 void Start()
 {
     walkable = GetComponent <Walkable>();
     attack   = GetComponent <AttackRanged>();
     Start2();
 }