IEnumerator LightningStrikeAttack()
    {
        readyForFire.text = "Firing!";
            float normalMovespeed = moveSpeed;
        Debug.Log("Lightning");
        canAttack = false;
        GameObject LightningStrikeClone = Instantiate(lightningStrikePrefab, transform);
        LightningProjectile lightningScript = LightningStrikeClone.GetComponent<LightningProjectile>();
        Light2D telegraph = lightningScript.telegraph.GetComponent<Light2D>();
        GameObject Lightning = lightningScript.Lightning;
        lightningScript.godNumber = GetGodNumber();

        // telegraph attack
        moveSpeed = moveSpeed / 2;

        float timer = 0f;

        while (timer < chargeTime && chargeTime != 0)
        {
            spriteRenderer.sprite = godInfo.whenCharging;
            telegraph.intensity = Map(timer, 0, chargeTime, minIntensity, maxIntensity);
            // Debug.Log(timer + " intensity: " + telegraph.intensity);
            timer += Time.deltaTime;
            yield return null;
        }

        // actual attack
        telegraph.gameObject.SetActive(false);
        spriteRenderer.sprite = godInfo.whenShooting;
        Lightning.SetActive(true);
        entranceEffects.StartChromaticAberration(0.5f, 1f);
        cameraShake.StartShake(cameraShake.shakePropertyOnMinionEnter);
        GameObject go = Instantiate(lightningImpactParticles, transformToInstantiateParticlesAt.position, Quaternion.identity);
        Destroy(go, 4f);
        projectileAudio.clip = lightningThrash;
        projectileAudio.time = 0.2f;
        projectileAudio.Play();

        moveSpeed = 0;
        Light2D[] lights = transform.GetComponentsInChildren<Light2D>();
        Debug.Log("Lights: " + lights);
        foreach (Light2D light in lights)
        {
            StartCoroutine(RampDownLight(light, 0.5f));
        }
        readyForFire.text = "Cooling off!";
        yield return new WaitForSeconds(0.5f);
        Destroy(LightningStrikeClone);
        spriteRenderer.sprite = godInfo.topBarIcon;
        yield return new WaitForSeconds(4.5f);
        readyForFire.text = "Ready to fire!";
        canAttack = true;
        
        moveSpeed = normalMovespeed;
    }
Ejemplo n.º 2
0
    private void CreateConductor(Vector2 v, Vector2 p)
    {
        var newProj = new LightningProjectile(5)
        {
            direction = v,
            start     = p,
            damage    = damage / 3
        };

        node.runtime.World.CreateProjectile(newProj, node.caster);
    }
Ejemplo n.º 3
0
    public void Cast(Wizard caster)
    {
        var target            = caster.runtime.RightTarget;
        var targetPos         = target?.GetTargetPosition() ?? caster.spritePosition + new Vector2(1, 1);
        var projectileDetails = new LightningProjectile(20)
        {
            direction = caster.Position.GetDirectionTo(target.GetTargetPosition()),
            start     = caster.spritePosition,
            damage    = 100
        };

        caster.CreateProjectile(projectileDetails);
    }
Ejemplo n.º 4
0
    protected override void DoWeaponActions()
    {
        //Get Projectile
        GameObject hookObject = ObjectPool.Instance.GetObject(PoolObjectType.LightningProjectile);

        if (hookObject)
        {
            //Initialize
            LightningProjectile  currentHook   = hookObject.GetComponent <LightningProjectile>();
            ProjectileProperties newProperties = new ProjectileProperties(projectileProperties);
            currentHook.Init(projectileProperties, muzzleTransform);
            currentHook.CheckForTargets();
            animator.SetTrigger("Shoot");
        }
    }
Ejemplo n.º 5
0
    private void SpawnNextProjectile()
    {
        LightningGun.ProjectileProperties newProperties = new LightningGun.ProjectileProperties(projectileProperties);
        newProperties.maxDistance = projectileProperties.maxDistancePerSubChain;
        //Spawn next hook
        GameObject nextHookObject = ObjectPool.Instance.GetObject(PoolObjectType.LightningProjectile);

        if (nextHookObject)
        {
            //Initialize
            LightningProjectile nextProjectile = nextHookObject.GetComponent <LightningProjectile>();
            nextProjectile.Init(newProperties, transform, enemyCount, ignoreTargets);

            if (!nextProjectile.CheckForTargets())
            {
                nextProjectile.ResetToDefaults();
            }
        }
    }