using Photon.Pun; using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "AoEOverTimeAbility", menuName = "RiftMayhem/AbilitySystem/Abilities/Area of Effect Over Time Ability", order = 0)] public class AreaOfEffectOverTimeAbility : AreaOfEffectAbility { public float duration; public bool followUser; public bool followTarget; public bool damageFollowingTarget; private NetworkedAreaOfEffectOverTime networkedAreaOfEffectOverTime; public override void Execute(PhotonView user, Taggable userTag) { SpendResourcesNecessary(user, userTag); if (spawnUnderUser) { instantiatedArea = PhotonNetwork.Instantiate("Abilities/" + aoePrefab.name, user.transform.position, Quaternion.identity); //instantiatedArea.transform.parent = user.transform; networkedAreaOfEffectOverTime = instantiatedArea.GetComponent(); SetupValues(user, userTag); networkedAreaOfEffectOverTime.Init(); return; } rot = Quaternion.LookRotation(user.GetComponentInChildren().aoeRayHitLocationSnapshot.position - user.transform.position); instantiatedArea = PhotonNetwork.Instantiate("Abilities/" + aoePrefab.name, user.GetComponentInChildren().aoeRayHitLocationSnapshot.position, rotateOnSpawn ? rot : Quaternion.identity); networkedAreaOfEffectOverTime = instantiatedArea.GetComponent(); SetupValues(user, userTag); networkedAreaOfEffectOverTime.Init(); } public override void Execute(PhotonView user, Taggable userTag, Vector3 point) { SpendResourcesNecessary(user, userTag); instantiatedArea = PhotonNetwork.Instantiate("Abilities/" + aoePrefab.name, point, Quaternion.identity); networkedAreaOfEffectOverTime = instantiatedArea.GetComponent(); SetupValues(user, userTag); networkedAreaOfEffectOverTime.Init(); } public override void Execute(PhotonView user, Taggable userTag, Transform target) { SpendResourcesNecessary(user, userTag); instantiatedArea = PhotonNetwork.Instantiate("Abilities/" + aoePrefab.name, target.position, Quaternion.identity); networkedAreaOfEffectOverTime = instantiatedArea.GetComponent(); SetupValues(user, userTag); networkedAreaOfEffectOverTime.Init(target); } private void SetupValues(PhotonView user, Taggable userTag) { networkedAreaOfEffectOverTime.owner = user; networkedAreaOfEffectOverTime.ownerTag = userTag; networkedAreaOfEffectOverTime.ability = this; networkedAreaOfEffectOverTime.radius = radius; networkedAreaOfEffectOverTime.telegraphDelay = telegraphDelay; networkedAreaOfEffectOverTime.lifeSpan = lifeSpan; networkedAreaOfEffectOverTime.duration = duration; networkedAreaOfEffectOverTime.followUser = followUser; networkedAreaOfEffectOverTime.followTarget = followTarget; networkedAreaOfEffectOverTime.damageFollowingTarget = damageFollowingTarget; networkedAreaOfEffectOverTime.canHitSelf = canHitSelf; } }