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(); } }