public override IEffectDescription Generate()
    {
        AuraModifierEffectDescription desc = new AuraModifierEffectDescription(effectType, modifierType);

        double durationMod = PowerBudget.GetDurationTypeModifier(DurationType.AURA);

        modifierGenerator.SetupParameters(random, model, minAllocatedBudget / durationMod, maxAllocatedBudget / durationMod);
        desc.modifierDescription = modifierGenerator.Generate();

        return(desc);
    }
    public override IEffectDescription Generate()
    {
        GiveModifierEffectDescription desc = new GiveModifierEffectDescription(effectType, modifierType);

        desc.durationType = (random.NextDouble() > 0.5) ? DurationType.END_OF_TURN : DurationType.FOREVER;

        if (effectType == EffectType.GIVE_MANA_COST_TAX)
        {
            // Taxing effects for your turn only won't really work
            desc.durationType = DurationType.FOREVER;
        }

        double durationMod = PowerBudget.GetDurationTypeModifier(desc.durationType);

        modifierGenerator.SetupParameters(random, model, minAllocatedBudget / durationMod, maxAllocatedBudget / durationMod);
        desc.modifierDescription = modifierGenerator.Generate();

        return(desc);
    }
 public override double GetMinCost()
 {
     return(modifierGenerator.GetMinCost() * PowerBudget.GetDurationTypeModifier(DurationType.AURA));
 }