/// <summary> /// Imprints a ruleset template onto a new Active Ruleset, applying all rules as configured /// </summary> /// <param name="template"></param> /// <returns></returns> internal static AppliedRuleset MakeRerolledRuleset(RulesetTemplate template) { var result = new AppliedRuleset(template); result.CopyDicts(template); if (template.ParentRuleset != null) { result.ComposeFrom(template.ParentRuleset); } foreach (var job in template.Jobs.Where(x => x.Type == RealmRulesetLinkType.apply_after_inherit)) { result.ApplyJob(job); } // Composition needs to happen first before rerolling, // so that random properties that depend on other random // properties with a composition rule can be applied in sequence result.RerollAllRules(); return(result); }
public WorldRealm(Realm realmEntity, RulesetTemplate ruleset) { Realm = realmEntity; RulesetTemplate = ruleset; StandardRules = AppliedRuleset.MakeRerolledRuleset(RulesetTemplate); }