using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "ProjectileAbility", menuName = "RiftMayhem/AbilitySystem/Abilities/Projectile Ability", order = 0)] public class ProjectileAbility : BaseAbility { public GameObject projectilePrefab; public float projectileSpeed; public float lifeSpan; public bool canPierce; public bool canHitSelf; private GameObject instantiatedProjectile; private NetworkedProjectile networkedProjectile; public override void Execute(Taggable user) { base.Execute(user); //Debug.Log($"Player {user.name} casted {this.name} and spent {manaCost} mana."); instantiatedProjectile = Instantiate(projectilePrefab, user.GetComponentInChildren().transform.position, user.GetComponentInChildren().transform.rotation); networkedProjectile = instantiatedProjectile.GetComponent(); networkedProjectile.speed = projectileSpeed; networkedProjectile.ownerTag = user; networkedProjectile.ability = this; networkedProjectile.lifeSpan = lifeSpan; networkedProjectile.canPierce = canPierce; networkedProjectile.canHitSelf = canHitSelf; networkedProjectile.Init(); } public override void Execute(Taggable user, Vector3 point) { base.Execute(user, point); //Debug.Log($"Player {user.name} casted {this.name} and spent {manaCost} mana."); instantiatedProjectile = Instantiate(projectilePrefab, user.GetComponentInChildren().transform.position, user.GetComponentInChildren().transform.rotation); networkedProjectile = instantiatedProjectile.GetComponent(); networkedProjectile.speed = projectileSpeed; networkedProjectile.ownerTag = user; networkedProjectile.ability = this; networkedProjectile.lifeSpan = lifeSpan; networkedProjectile.canPierce = canPierce; networkedProjectile.canHitSelf = canHitSelf; networkedProjectile.Init(); } public override void Execute(Taggable user, Transform target) { base.Execute(user, target); //Debug.Log($"Player {user.name} casted {this.name} and spent {manaCost} mana."); instantiatedProjectile = Instantiate(projectilePrefab, user.GetComponentInChildren().transform.position, user.GetComponentInChildren().transform.rotation); networkedProjectile = instantiatedProjectile.GetComponent(); networkedProjectile.speed = projectileSpeed; networkedProjectile.ownerTag = user; networkedProjectile.ability = this; networkedProjectile.lifeSpan = lifeSpan; networkedProjectile.canPierce = canPierce; networkedProjectile.canHitSelf = canHitSelf; networkedProjectile.Init(); } }