public static RulesetTemplate MakeTopLevelRuleset(Realm entity)
        {
            var ruleset = new RulesetTemplate();

            ruleset.Realm = entity;

            ruleset.PropertiesBool   = new Dictionary <RealmPropertyBool, AppliedRealmProperty <bool> >(entity.PropertiesBool);
            ruleset.PropertiesFloat  = new Dictionary <RealmPropertyFloat, AppliedRealmProperty <double> >(entity.PropertiesFloat);
            ruleset.PropertiesInt    = new Dictionary <RealmPropertyInt, AppliedRealmProperty <int> >(entity.PropertiesInt);
            ruleset.PropertiesInt64  = new Dictionary <RealmPropertyInt64, AppliedRealmProperty <long> >(entity.PropertiesInt64);
            ruleset.PropertiesString = new Dictionary <RealmPropertyString, AppliedRealmProperty <string> >(entity.PropertiesString);
            ruleset.Jobs             = entity.Jobs;

            ruleset.MakeRandomizationList();
            return(ruleset);
        }
        public static RulesetTemplate MakeRuleset(RulesetTemplate baseset, Realm subset)
        {
            if (baseset.Realm.Type == ACE.Entity.Enum.RealmType.Ruleset && subset.Type == ACE.Entity.Enum.RealmType.Realm)
            {
                throw new Exception("Realms may not inherit from rulesets at this time.");
            }
            var ruleset = new RulesetTemplate();

            ruleset.ParentRuleset = baseset;
            ruleset.Realm         = subset;

            ruleset.PropertiesBool   = new Dictionary <RealmPropertyBool, AppliedRealmProperty <bool> >(subset.PropertiesBool);
            ruleset.PropertiesFloat  = new Dictionary <RealmPropertyFloat, AppliedRealmProperty <double> >(subset.PropertiesFloat);
            ruleset.PropertiesInt    = new Dictionary <RealmPropertyInt, AppliedRealmProperty <int> >(subset.PropertiesInt);
            ruleset.PropertiesInt64  = new Dictionary <RealmPropertyInt64, AppliedRealmProperty <long> >(subset.PropertiesInt64);
            ruleset.PropertiesString = new Dictionary <RealmPropertyString, AppliedRealmProperty <string> >(subset.PropertiesString);
            ruleset.Jobs             = subset.Jobs;

            ruleset.MakeRandomizationList();
            return(ruleset);
        }