Exemple #1
0
        protected static bool LoadSocialData(BooterHelper.DocumentBootFile socialData)
        {
            if (!socialData.IsValid)
            {
                BooterLogger.AddError(socialData + ": Unknown SocialData File");
                return(false);
            }

            XmlElementLookup  lookup  = new XmlElementLookup(socialData.Document);
            List <XmlElement> actions = lookup["Action"];

            if ((actions == null) || (actions.Count == 0))
            {
                BooterLogger.AddError(socialData + ": No Action");
                return(false);
            }

            bool isEp5Installed = GameUtils.IsInstalled(ProductVersion.EP5);

            foreach (XmlElement element in actions)
            {
                XmlElementLookup table = new XmlElementLookup(element);

                CommodityTypes types;
                ParserFunctions.TryParseEnum <CommodityTypes>(element.GetAttribute("com"), out types, CommodityTypes.Undefined);

                ProductVersion version;
                ParserFunctions.TryParseEnum <ProductVersion>(element.GetAttribute("ver"), out version, ProductVersion.BaseGame);

                ActionData data = new ActionData(element.GetAttribute("key"), types, version, table, isEp5Installed);

                List <XmlElement> list = table["LHS"];
                if (list.Count > 0x0)
                {
                    SocialRuleLHS.sDictionary.Remove(data.Key);

                    foreach (XmlElement element3 in list)
                    {
                        SocialRuleLHS lhs = new SocialRuleLHS(data.Key, data.IntendedCommodityString, element3);
                        lhs.ProceduralPrecondition = FindMethod(element3.GetAttribute("ProcTest"));
                    }

                    SocialRuleLHS.Get(data.Key).Sort(new Comparison <SocialRuleLHS>(SocialRuleLHS.SortSocialRules));
                }

                ActionData.Add(data);

                BooterLogger.AddTrace(" " + data.Key + " Added");
            }

            return(true);
        }
Exemple #2
0
        public void OnPreLoad()
        {
            CommodityData amorous = CommodityData.Get(CommodityTypes.Amorous);

            CommodityData.Add(new CommodityData(
                                  sAmorous2,
                                  amorous.ChangeToneText,
                                  amorous.mIsPositive,
                                  false /*amorous.mIsSymmetric*/,
                                  amorous.mAppearsAsSubMenu,
                                  amorous.EndStanceX,
                                  amorous.EndStanceY,
                                  amorous.NumSocialsDecremented,
                                  amorous.NextCommodity1,
                                  amorous.NextCommodity2,
                                  amorous.X1,
                                  amorous.X2,
                                  amorous.Y1,
                                  amorous.Y2,
                                  amorous.Y3
                                  ));

            CommodityTable.sMap[sAmorous2] = new Dictionary <CommodityTypes, float>();

            CommodityTable.Add(sAmorous2, sAmorous2, 1);

            foreach (CommodityTypes type in Enum.GetValues(typeof(CommodityTypes)))
            {
                if (type == CommodityTypes.Undefined)
                {
                    continue;
                }

                CommodityTable.Add(sAmorous2, type, CommodityTable.Get(CommodityTypes.Amorous, type));

                CommodityTable.Add(type, sAmorous2, CommodityTable.Get(type, CommodityTypes.Amorous));
            }

            foreach (SocialRuleLHS oldRule in new List <SocialRuleLHS>(SocialRuleLHS.Get("GR")))
            {
                if (oldRule.GeneralCommodity != CommodityTypes.Amorous)
                {
                    continue;
                }

                SocialRuleLHS newRule = new SocialRuleLHS(
                    "GR",
                    sAmorous2,
                    oldRule.mSpeechAct,
                    oldRule.ThirdParty,
                    oldRule.STCommodityPositive,
                    new Pair <CommodityTypes, bool>(oldRule.STCommodity.First, oldRule.STCommodity.Second),
                    new Pair <ShortTermContextTypes, bool>(oldRule.STContext.First, oldRule.STContext.Second),
                    oldRule.TargetMood,
                    new Pair <LongTermRelationshipTypes, bool>(oldRule.LTRelationship.First, oldRule.LTRelationship.Second),
                    oldRule.LTRMin,
                    oldRule.LTRMax,
                    "",
                    "",
                    "",
                    oldRule.mSkillLevel,
                    oldRule.mSkillThresholdAbove,
                    "",
                    "",
                    "",
                    "",
                    "",
                    oldRule.Partner,
                    oldRule.WrongGenderPreference,
                    oldRule.Repetition,
                    oldRule.ActorAgeRestrictions,
                    oldRule.TargetAgeRestrictions,
                    oldRule.TargetBetrayed,
                    oldRule.SpecificityOverride,
                    oldRule.STEffectCommodity,
                    oldRule.LTROverride
                    );

                newRule.mActorTraits  = oldRule.mActorTraits;
                newRule.mTargetTraits = oldRule.mTargetTraits;
                newRule.mSkill        = oldRule.mSkill;
                newRule.mActorIncreasedEffectiveness  = oldRule.mActorIncreasedEffectiveness;
                newRule.mActorReducedEffectiveness    = oldRule.mActorReducedEffectiveness;
                newRule.mTargetIncreasedEffectiveness = oldRule.mTargetIncreasedEffectiveness;
                newRule.mTargetReducedEffectiveness   = oldRule.mTargetReducedEffectiveness;
                newRule.ProceduralPrecondition        = oldRule.ProceduralPrecondition;
            }

            SocialRuleLHS.Get("GR").Sort(new Comparison <SocialRuleLHS>(SocialRuleLHS.SortSocialRules));

            CloneSTCData(sFlirty2, sAmorous2, ShortTermContextTypes.Flirty);
            CloneSTCData(sSeductive2, sAmorous2, ShortTermContextTypes.Seductive);
            CloneSTCData(sHot2, sAmorous2, ShortTermContextTypes.Hot);

            STCData.SetNextSTC(sFlirty2, sSeductive2);
            STCData.SetNextSTC(sSeductive2, sHot2);
        }