public override double GetMinCost() { DrawEffectDescription desc = new DrawEffectDescription(); desc.amount = 1; return(desc.PowerLevel()); }
public override IEffectDescription Generate() { DrawEffectDescription desc = new DrawEffectDescription(); desc.drawModifier = ProceduralUtils.GetRandomValue <DrawModifier>(random, model); // Find the bounds of card amounts int max = ProceduralUtils.GetUpperBound(desc, ref desc.amount, MIN_CARDS, MAX_CARDS, maxAllocatedBudget); int min = ProceduralUtils.GetLowerBound(desc, ref desc.amount, MIN_CARDS, max, minAllocatedBudget); Assert.IsTrue(max >= min); desc.amount = random.Next(min, max); // Attempt to narrow down the qualifier pool SortedSet <QualifierType> allowableQualifiers = CardEnums.GetValidFlags <QualifierType>(EffectType.DRAW_CARDS); QualifierType qualifier = ProceduralUtils.GetRandomValue(random, model, allowableQualifiers); if (qualifier != QualifierType.NONE) { IProceduralQualifierGenerator qualifierGen = ProceduralUtils.GetProceduralGenerator(qualifier); qualifierGen.SetupParameters(random, model, minAllocatedBudget / desc.PowerLevel(), maxAllocatedBudget / desc.PowerLevel()); desc.cardQualifier = qualifierGen.Generate(); } return(desc); }