protected override void FireBulletAtEnemy(GameObject trackedObject)
    {
        //Gets a copy of the bullet from the object pooler
        GameObject bulletInstance = ObjectPooler.SharedInstance.GetPooledObject(bulletFired.tag);

        //Then, the bullet is repositioned to the firing indicator's position
        bulletInstance.transform.position = bulletHolder.transform.position;
        //Finally, the bullet's attributes are set up and the bullet is enabled and ready to go
        bulletInstance.GetComponent <BulletDispatcher>().SetupProjectile(damage, trackedObject, splashDamage: splashDamage, debuffDuration: debuffDuration, splashRange: splashRange, movementSpeedMultiplier: movementSpeedMultiplier);
        bulletInstance.SetActive(true);

        //Gets a copy of the bullet from the object pooler
        GameObject effectInstance = ObjectPooler.SharedInstance.GetPooledObject(nova.tag);

        //Then, the bullet is repositioned to the firing indicator's position
        effectInstance.transform.position = transform.position;
        //Setup the hitbox script of the splash effect
        HitboxScript splash     = effectInstance.GetComponent <HitboxScript>();
        Buff         splashBuff = new Buff(name: "Slow", duration: debuffDuration, speedMultiplier: movementSpeedMultiplier);

        splash.SetupHitboxScript(splashDamage, splashRange, new List <Buff>()
        {
            splashBuff
        });
        effectInstance.SetActive(true);
    }
    protected override void InstantiateHitEffect(GameObject effect, Vector3 position, Quaternion rotation)
    {
        if (effect != null)
        {
            //Gets a copy of the hit effect from the object pool
            GameObject effectInstance = ObjectPooler.SharedInstance.GetPooledObject(effect.tag);

            //Setup the hitbox script of the splash effect
            HitboxScript splash     = effectInstance.GetComponent <HitboxScript>();
            Buff         splashBuff = new Buff(name: debuffName, duration: debuffDuration, speedMultiplier: movementSpeedMultiplier);
            splash.SetupHitboxScript(splashDamage, splashRange, new List <Buff>()
            {
                splashBuff
            });
            //Moves the hit effect to a given position and rotation
            effectInstance.transform.position = position;
            effectInstance.transform.rotation = rotation;
            effectInstance.SetActive(true);

            //The particle effect will be killed in another script called KillParticles
        }
    }