Beispiel #1
0
    public override void UpdateSkillActivation(ItemSkill SourceItemSkill, float CurrentActivationTime, bool StillActivating, bool ActivationIntervallReached)
    {
        if (CurrentActivationTime < ActivationTime)
        {
            return;
        }

        if (!SourceItemSkill.GetEffectOnlyOnceBool(0))
        {
            SourceItemSkill.SetEffectOnlyOnceBool(0, true);

            for (int i = 0; i < EffectsStart.Length; i++)
            {
                EffectsStart[i].ApplyEffect(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
            }

            SourceItemSkill.GetCurrentOwner().StartAnimation(IdleAnimation, 1, SourceItemSkill.GetParentItemEquipmentSlot());
        }

        if (ActivationIntervallReached)
        {
            ApplyEffects(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
            var audioSource = SourceItemSkill.GetComponent <AudioSource>();

            if (ChanellingSound)
            {
                audioSource.clip = ChanellingSound;
                audioSource.loop = true;
                audioSource.Play();
            }
        }

        if (!StillActivating || (ActivationTimeMax > 0 && CurrentActivationTime >= ActivationTimeMax))
        {
            for (int i = 0; i < EffectsEnd.Length; i++)
            {
                EffectsEnd[i].ApplyEffect(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
            }

            SourceItemSkill.GetCurrentOwner().StartAnimation(ReleaseAnimation, 1, SourceItemSkill.GetParentItemEquipmentSlot());

            // Stop Skill Activation:
            if (Cooldown > 0)
            {
                SourceItemSkill.SetCurrentCooldown(Cooldown);

                if (ChanellingSound)
                {
                    SourceItemSkill.GetComponent <AudioSource>().Stop();
                }
            }
            RemoveActivationMovementRateModifier(SourceItemSkill, SourceItemSkill.GetCurrentOwner());
            SourceItemSkill.StoppedActivatingSkillWithHitObjects(this);
            SourceItemSkill.FinishedSkillActivation();
        }
    }
Beispiel #2
0
    public override void UpdateSkillActivation(ItemSkill SourceItemSkill, float CurrentActivationTime, bool StillActivating, bool ActivationIntervallReached)
    {
        if (CurrentActivationTime < ActivationTime)
        {
            return;
        }

        if (!SourceItemSkill.GetEffectOnlyOnceBool(0))
        {
            SourceItemSkill.SetEffectOnlyOnceBool(0, true);

            SourceItemSkill.StopAllCoroutines();
            if (ChanellingLoop)
            {
                var audioSource = SourceItemSkill.GetComponent <AudioSource>();
                audioSource.clip = ChanellingLoop;
                audioSource.loop = true;
                audioSource.Play();
            }

            SkillHitObject SpawnedHitObjectStart;

            for (int i = 0; i < EffectsStart.Length; i++)
            {
                EffectsStart[i].ApplyEffect(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
            }

            for (int i = 0; i < AtStartHitObjectPrefabs.Length; i++)
            {
                // Spawn and Initialize Projectile:
                SpawnedHitObjectStart = Instantiate(AtStartHitObjectPrefabs[i], SourceItemSkill.transform.position, SourceItemSkill.GetCurrentOwner().transform.rotation);
                SpawnedHitObjectStart.InitializeHitObject(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, this, UseSkillLevelAtActivationMoment);
            }

            SourceItemSkill.GetCurrentOwner().StartAnimation(IdleAnimation, 1, SourceItemSkill.GetParentItemEquipmentSlot());
        }

        if (ActivationIntervallReached)
        {
            ApplyEffects(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());

            SkillHitObject SpawnedHitObjectIntervall;

            for (int i = 0; i < IntervallHitObjectPrefabs.Length; i++)
            {
                // Spawn and Initialize Projectile:
                SpawnedHitObjectIntervall = Instantiate(IntervallHitObjectPrefabs[i], SourceItemSkill.transform.position, SourceItemSkill.GetCurrentOwner().transform.rotation);
                SpawnedHitObjectIntervall.InitializeHitObject(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, this, UseSkillLevelAtActivationMoment);
            }
        }

        if (!StillActivating || (ActivationTimeMax > 0 && CurrentActivationTime >= ActivationTimeMax))
        {
            for (int i = 0; i < EffectsEnd.Length; i++)
            {
                EffectsEnd[i].ApplyEffect(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
            }


            var audioSource = SourceItemSkill.GetComponent <AudioSource>();
            SourceItemSkill.StopAllCoroutines();
            if (ChanellingRelease)
            {
                audioSource.clip = ChanellingRelease;
                audioSource.loop = false;
                audioSource.Play();
            }
            else
            {
                SourceItemSkill.StartCoroutine(FadeSoundOutAndStop(audioSource, .3f));
            }

            SkillHitObject SpawnedHitObjectEnd;

            for (int i = 0; i < AtEndHitObjectPrefabs.Length; i++)
            {
                // Spawn and Initialize Projectile:
                SpawnedHitObjectEnd = Instantiate(AtEndHitObjectPrefabs[i], SourceItemSkill.transform.position, SourceItemSkill.GetCurrentOwner().transform.rotation);
                SpawnedHitObjectEnd.InitializeHitObject(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, this, UseSkillLevelAtActivationMoment);
            }

            SourceItemSkill.GetCurrentOwner().StartAnimation(ReleaseAnimation, 1, SourceItemSkill.GetParentItemEquipmentSlot());

            // Stop Skill Activation:
            if (Cooldown > 0)
            {
                SourceItemSkill.SetCurrentCooldown(Cooldown);
            }
            RemoveActivationMovementRateModifier(SourceItemSkill, SourceItemSkill.GetCurrentOwner());
            SourceItemSkill.StoppedActivatingSkillWithHitObjects(this);
            SourceItemSkill.FinishedSkillActivation();
        }
    }
Beispiel #3
0
    public override void UpdateSkillActivation(ItemSkill SourceItemSkill, float CurrentActivationTime, bool StillActivating, bool ActivationIntervallReached)
    {
        if (CurrentActivationTime < ActivationTime)
        {
            return;
        }

        if (!SourceItemSkill.GetEffectOnlyOnceBool(0))
        {
            SourceItemSkill.SetEffectOnlyOnceBool(0, true);
            for (int i = 0; i < EffectsSelfOnMinimumActivationTimeEnd.Length; i++)
            {
                EffectsSelfOnMinimumActivationTimeEnd[i].ApplyEffect(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
            }
        }

        if (!StillActivating || (ChargeUpTimeMax > 0 && CurrentActivationTime >= ChargeUpTimeMax))
        {
            if (!SourceItemSkill.GetEffectOnlyOnceBool(1))
            {
                float TimeAfterRelease = AfterReleaseActivationTime;

                if (ScaleAfterReleaseTimeWithChannelTime)
                {
                    float TimePerc = Mathf.Clamp01((CurrentActivationTime - MinTime) / (MaxTime - MinTime));
                    TimeAfterRelease = TimeAfterRelease * Mathf.Lerp(MinModifier, MaxModifier, TimePerc);
                }

                SourceItemSkill.SetEffectFloat(CurrentActivationTime + TimeAfterRelease);
                SourceItemSkill.GetCurrentOwner().StartAnimation(ReleaseAnimation, TimeAfterRelease, SourceItemSkill.GetParentItemEquipmentSlot());
                SourceItemSkill.StartSkillCurrentlyUsingItemHitBox(HitEachCharacterOnlyOnce);

                for (int i = 0; i < EffectsSelfOnRelease.Length; i++)
                {
                    EffectsSelfOnRelease[i].ApplyEffect(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
                }

                if (ChargeRelease)
                {
                    var weaponAudioSource = SourceItemSkill.GetComponent <AudioSource>();
                    weaponAudioSource.Stop();
                    weaponAudioSource.clip = ChargeRelease;
                    weaponAudioSource.Play();
                }
            }
            SourceItemSkill.SetEffectOnlyOnceBool(1, true);
        }

        if (SourceItemSkill.GetEffectOnlyOnceBool(1) && CurrentActivationTime >= SourceItemSkill.GetEffectFloat())
        {
            for (int i = 0; i < EffectsSelfOnEnd.Length; i++)
            {
                EffectsSelfOnEnd[i].ApplyEffect(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
            }

            // Stop Skill Activation:
            if (Cooldown > 0)
            {
                SourceItemSkill.SetCurrentCooldown(Cooldown);
            }
            SourceItemSkill.EndSkillCurrentlyUsingItemHitBox();
            RemoveActivationMovementRateModifier(SourceItemSkill, SourceItemSkill.GetCurrentOwner());
            SourceItemSkill.FinishedSkillActivation();
        }


        /*
         * if (!SourceItemSkill.GetEffectOnlyOnceBool())
         * {
         *  SourceItemSkill.SetEffectOnlyOnceBool(true);
         *
         *  for (int i = 0; i < EffectsStart.Length; i++)
         *  {
         *      EffectsStart[i].ApplyEffect(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
         *  }
         * }
         * // Maybe not:
         * if (ActivationIntervallReached)
         * {
         *  ApplyEffects(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
         * }
         *
         * if (!StillActivating || (ActivationTimeMax > 0 && CurrentActivationTime >= ActivationTimeMax))
         * {
         *  for (int i = 0; i < EffectsEnd.Length; i++)
         *  {
         *      EffectsEnd[i].ApplyEffect(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, SourceItemSkill.GetCurrentOwner());
         *  }
         *
         *  // Stop Skill Activation:
         *  SourceItemSkill.FinishedSkillActivation();
         * SourceItemSkill.EndSkillCurrentlyUsingItemHitBox();
         * }*/
    }