Beispiel #1
0
    /// <summary>
    /// Resets active cooldowns of nearby enemies
    /// </summary>
    protected override void Execute()
    {
        AudioManager.PlayClipByID("clip_disrupt", transform.position);
        for (int i = 0; i < AIData.entities.Count; i++)
        {
            if (AIData.entities[i] is Craft && !AIData.entities[i].GetIsDead() && !FactionManager.IsAllied(AIData.entities[i].faction, Core.faction) && !AIData.entities[i].IsInvisible)
            {
                float d = (Core.transform.position - AIData.entities[i].transform.position).sqrMagnitude;
                if (d < range * range)
                {
                    foreach (var ability in AIData.entities[i].GetAbilities())
                    {
                        if (ability != null)
                        {
                            ability.ResetCD();
                        }
                    }

                    foreach (var part in AIData.entities[i].GetComponentsInChildren <ShellPart>())
                    {
                        if (part.GetComponent <Ability>() && !(part.GetComponent <Ability>() as PassiveAbility))
                        {
                            //part.SetPartColor(Color.grey);
                            part.lerpColors();
                            var missileLinePrefab = new GameObject("Missile Line"); // create prefab and set to parent
                            missileLinePrefab.transform.SetParent(transform, false);

                            var missileColor = part && part.info.shiny ? FactionManager.GetFactionShinyColor(Core.faction) : new Color(0.8F, 1F, 1F, 0.9F);

                            // I use this prefab as one of the active lines on the missile
                            // because what's the point in not doing it this way

                            LineRenderer lineRenderer = missileLinePrefab.AddComponent <LineRenderer>();             // add line renderer
                            lineRenderer.material = ResourceManager.GetAsset <Material>("white_material");           // get material
                            MissileAnimationScript comp = missileLinePrefab.AddComponent <MissileAnimationScript>(); // add the animation script

                            var x = Instantiate(missileLinePrefab, part.transform);                                  // instantiate
                            x.GetComponent <MissileAnimationScript>().Initialize();                                  // initialize
                            x.GetComponent <MissileAnimationScript>().lineColor = missileColor;
                            Destroy(x, 0.5f);
                        }
                    }
                }
            }
        }

        base.Execute();
    }
Beispiel #2
0
    /// <summary>
    /// Immobilizes a nearby enemy
    /// </summary>
    protected override void Execute()
    {
        AudioManager.PlayClipByID("clip_activateability", transform.position);
        var   targeting = Core.GetTargetingSystem();
        float minDist   = rangeSquared;

        target = null;
        for (int i = 0; i < AIData.entities.Count; i++)
        {
            if (AIData.entities[i] is Craft && !AIData.entities[i].GetIsDead() && !FactionManager.IsAllied(AIData.entities[i].faction, Core.faction))
            {
                float d = (Core.transform.position - AIData.entities[i].transform.position).sqrMagnitude;
                if (d < minDist && !AIData.entities[i].IsInvisible)
                {
                    minDist = d;
                    target  = AIData.entities[i] as Craft;
                }
            }
        }

        if (target != null)
        {
            target.AddPin();


            var missileLinePrefab = new GameObject("Missile Line"); // create prefab and set to parent
            missileLinePrefab.transform.SetParent(transform, false);

            var missileColor = part && part.info.shiny ? FactionManager.GetFactionShinyColor(Core.faction) : new Color(0.8F, 1F, 1F, 0.9F);

            // I use this prefab as one of the active lines on the missile
            // because what's the point in not doing it this way

            LineRenderer lineRenderer = missileLinePrefab.AddComponent <LineRenderer>();             // add line renderer
            lineRenderer.material = ResourceManager.GetAsset <Material>("white_material");           // get material
            MissileAnimationScript comp = missileLinePrefab.AddComponent <MissileAnimationScript>(); // add the animation script
            foreach (var part in target.GetComponentsInChildren <ShellPart>())
            {
                var x = Instantiate(missileLinePrefab, part.transform); // instantiate
                x.GetComponent <MissileAnimationScript>().Initialize(); // initialize
                x.GetComponent <MissileAnimationScript>().lineColor = missileColor;
                Destroy(x, activeDuration);
            }
        }

        base.Execute();
    }
Beispiel #3
0
    // Use this for initialization
    void Start()
    {
        if (!missileLinePrefab)                                 // no missile line prefab? no problem
        {
            missileLinePrefab = new GameObject("Missile Line"); // create prefab and set to parent
            missileLinePrefab.transform.SetParent(transform, false);

            // I use this prefab as one of the active lines on the missile
            // because what's the point in not doing it this way

            LineRenderer lineRenderer = missileLinePrefab.AddComponent <LineRenderer>();             // add line renderer
            lineRenderer.material = ResourceManager.GetAsset <Material>("white_material");           // get material
            MissileAnimationScript comp = missileLinePrefab.AddComponent <MissileAnimationScript>(); // add the animation script
            comp.Initialize();                                                                       // initialize the script to make it update-safe
            for (int i = 0; i < 2; i++)                                                              // instantiate thrice for a total of four prefabs
            {
                var x = Instantiate(missileLinePrefab, transform);                                   // instantiate
                x.GetComponent <MissileAnimationScript>().Initialize();                              // initialize
                x.GetComponent <MissileAnimationScript>().lineColor = missileColor;
            }

            GetComponent <Rigidbody2D>().AddTorque(50); // add angular velocity
        }
        else
        {
            for (int i = 0; i < 3; i++)                                 // instantiate the prefabs
            {
                var x = Instantiate(missileLinePrefab, transform);      // instantiate
                x.GetComponent <MissileAnimationScript>().lineColor = missileColor;
                x.GetComponent <MissileAnimationScript>().Initialize(); // initialize
            }
        }

        if (!GetComponent <Collider2D>())                                // no collider? no problem
        {
            var collider = gameObject.AddComponent <CircleCollider2D>(); // add collider component
            collider.isTrigger = true;                                   // set trigger
        }

        GetComponent <SpriteRenderer>().color = missileColor;
    }