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); }
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); }