public override void Do(Mage caster, Spell origin_spell)
    {
        if (projectile_prefab.GetComponent<ControlledProjectile>() != null
            && !caster.ManaSlotAvailable())
            return;

        Projectile p = Instantiate<Projectile>(projectile_prefab);
        p.Initialize(caster, caster.cast_point.position);

        ControlledProjectile cp = p as ControlledProjectile;
        if (cp != null) caster.FillManaSlot(cp, origin_spell);

        p.GetRigidbody().AddForce(GeneralHelpers.RandomDirection2D(), ForceMode2D.Impulse);
    }