using Photon.Pun; using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "ChanneledAbility", menuName = "RiftMayhem/AbilitySystem/Abilities/Channeled Ability", order = 0)] public class ChanneledAbility : BaseAbility { public GameObject prefab; public float duration; public float radius; public bool canHitSelf; public bool followUser; public bool allowAiming; public float healthCostPerTick; public float percentHealthCostPerTick; public float manaCostPerTick; public float percentManaCostPerTick; protected GameObject instanciatedAbility; private NetworkedChanneling networkedChanneling; public virtual NetworkedChanneling ExecuteChannel(PhotonView user, Taggable userTag, ref Coroutine channelingCoroutine) { base.Execute(user, userTag); instanciatedAbility = PhotonNetwork.Instantiate("Abilities/" + prefab.name, user.GetComponentInChildren().transform.position, user.GetComponentInChildren().transform.rotation); networkedChanneling = instanciatedAbility.GetComponent(); networkedChanneling.owner = user; networkedChanneling.ownerTag = userTag; networkedChanneling.ability = this; networkedChanneling.duration = duration; networkedChanneling.radius = radius; networkedChanneling.canHitSelf = canHitSelf; networkedChanneling.followUser = followUser; networkedChanneling.allowAiming = allowAiming; networkedChanneling.healthCostPerTick = healthCostPerTick; networkedChanneling.percentHealthCostPerTick = percentHealthCostPerTick; networkedChanneling.manaCostPerTick = manaCostPerTick; networkedChanneling.percentManaCostPerTick = percentManaCostPerTick; networkedChanneling.ownerHealth = user.GetComponent(); networkedChanneling.ownerMana = user.GetComponent(); networkedChanneling.Init(ref channelingCoroutine); return networkedChanneling; } }