protected RunScenario(RunScenario scenario) : base (scenario) { mFirst = scenario.mFirst; mPersonality = scenario.mPersonality; mScenarios = scenario.mScenarios; // intentionally reference the list }
public override bool Parse(XmlDbRow row, SimPersonality personality, ref string error) { if (!base.Parse(row, personality, ref error)) { return(false); } if (!row.Exists("Name")) { error = "Name missing"; return(false); } else if (!row.Exists("Default")) { error = "Default missing"; return(false); } mName = row.GetString("Name"); SetValue(row.GetInt("Default")); mResetOnLeaderChange = row.GetBool("ResetOnLeaderChange"); return(true); }
protected override void Perform(BooterHelper.BootFile file, XmlDbRow row) { BooterHelper.DataBootFile dataFile = file as BooterHelper.DataBootFile; if (dataFile == null) { return; } mIndex++; string personalityName = row.GetString("Name"); if (string.IsNullOrEmpty(personalityName)) { BooterLogger.AddError(file + " : Method " + mIndex + " Unnamed"); return; } BooterLogger.AddTrace("Found " + personalityName); if (GetPersonality(personalityName) != null) { BooterLogger.AddError(personalityName + " Name already in use"); return; } Type classType = row.GetClassType("FullClassName"); if (classType == null) { BooterLogger.AddError(personalityName + " No Class"); return; } SimPersonality personality = null; try { personality = classType.GetConstructor(new Type[0]).Invoke(new object[0]) as SimPersonality; } catch { } if (personality == null) { BooterLogger.AddError(personalityName + ": Constructor Fail " + row.GetString("FullClassName")); } else { XmlDbTable optionTable = dataFile.GetTable(personalityName); if (personality.Parse(row, optionTable)) { sLookup.Add(personalityName.ToLower(), personality); } else { BooterLogger.AddError(personalityName + ": Parsing Fail"); } } }
protected RunScenario(RunScenario scenario) : base(scenario) { mFirst = scenario.mFirst; mPersonality = scenario.mPersonality; mScenarios = scenario.mScenarios; // intentionally reference the list }
protected override bool PrivateUpdate(ScenarioFrame frame) { if (!mSuccess.TestBeforehand(Manager, Sim, Target)) { IncStat("Success TestBeforehand Fail"); return(false); } if (!base.PrivateUpdate(frame)) { return(false); } SimPersonality manager = Manager as SimPersonality; if (manager == null) { return(false); } manager.SetLeader(null, false); mSuccess.Perform(this, frame, "Success", Sim, Target); return(true); }
public List <SimPersonality> GetClanMembership(SimDescription sim, bool includeLeadership) { List <SimPersonality> personalities = new List <SimPersonality>(); if (sim != null) { if (includeLeadership) { personalities.AddRange(GetClanLeadership(sim)); } SimData simData = GetData(sim); List <string> clans = new List <string>(simData.Clans); foreach (string clan in clans) { SimPersonality personality = GetPersonality(clan); if (personality == null) { simData.RemoveClan(clan); } else { personalities.Add(personality); } } } return(personalities); }
protected override bool TargetAllow(SimDescription sim) { SimPersonality clan = Manager as SimPersonality; if (sim.ToddlerOrBelow) { IncStat("Too Young"); return(false); } else if (GetData(sim).IsClan(clan)) { IncStat("Already Clan"); return(false); } else if (!clan.CanAdd(this, sim, mAllowSteal)) { IncStat("Opposing"); return(false); } else if (!clan.TestMemberRetention(sim)) { IncStat("Retention Fail"); return(false); } return(base.TargetAllow(sim)); }
public override bool Parse(XmlDbRow row, SimPersonality personality, ref string error) { if (!base.Parse(row, personality, ref error)) { return(false); } if (!row.Exists("Name")) { error = "Name missing"; return(false); } else if (!row.Exists("Default")) { error = "Default missing"; return(false); } else { CASAgeGenderFlags ageGender; if (!ParserFunctions.TryParseEnum <CASAgeGenderFlags>(row.GetString("AgeGender"), out ageGender, CASAgeGenderFlags.None)) { error = "Unknown AgeGender " + row.GetString("AgeGender"); return(false); } mAge = ageGender & CASAgeGenderFlags.AgeMask; if (mAge == CASAgeGenderFlags.None) { mAge = CASAgeGenderFlags.AgeMask; } mGender = ageGender & CASAgeGenderFlags.GenderMask; if (mGender == CASAgeGenderFlags.None) { mGender = CASAgeGenderFlags.GenderMask; } StringToSpeciesList converter = new StringToSpeciesList(); mSpecies = converter.Convert(row.GetString("Species")); if (mSpecies == null) { error = converter.mError; return(false); } if (mSpecies.Count == 0) { mSpecies.Add(CASAgeGenderFlags.Human); } } mName = row.GetString("Name"); SetValue(row.GetBool("Default")); return(true); }
public override bool Parse(XmlDbRow row, SimPersonality personality, ref string error) { if (!base.Parse(row, personality, ref error)) return false; if (!row.Exists("Name")) { error = "Name missing"; return false; } else if (!row.Exists("Default")) { error = "Default missing"; return false; } else { CASAgeGenderFlags ageGender; if (!ParserFunctions.TryParseEnum<CASAgeGenderFlags>(row.GetString("AgeGender"), out ageGender, CASAgeGenderFlags.None)) { error = "Unknown AgeGender " + row.GetString("AgeGender"); return false; } mAge = ageGender & CASAgeGenderFlags.AgeMask; if (mAge == CASAgeGenderFlags.None) { mAge = CASAgeGenderFlags.AgeMask; } mGender = ageGender & CASAgeGenderFlags.GenderMask; if (mGender == CASAgeGenderFlags.None) { mGender = CASAgeGenderFlags.GenderMask; } StringToSpeciesList converter = new StringToSpeciesList(); mSpecies = converter.Convert(row.GetString("Species")); if (mSpecies == null) { error = converter.mError; return false; } if (mSpecies.Count == 0) { mSpecies.Add(CASAgeGenderFlags.Human); } } mName = row.GetString("Name"); SetValue (row.GetBool("Default")); return true; }
public bool IsClan(SimPersonality clan) { if (clan == null) { return(false); } return(mClans.Contains(clan.UnlocalizedName.ToLower())); }
public override bool IsHit(SimScoringParameters parameters) { SimPersonality clan = StoryProgression.Main.Personalities.GetPersonality(Clan); if (clan == null) { return(false); } return(clan.IsMember(parameters.Actor)); }
public SimDescription GetClanLeader(StoryProgressionObject manager) { SimPersonality clan = manager as SimPersonality; if (clan == null) { return(null); } return(clan.Me); }
public override bool Install(SimPersonality main, bool initial) { if (!base.Install(main, initial)) return false; if (mScenario != null) { mScenario.Manager = Manager; } return true; }
public void AddClan(SimPersonality clan) { string name = clan.UnlocalizedName.ToLower(); if (mClans.Contains(name)) { return; } ScoringLookup.UnloadCaches <IClanScoring>(); mClans.Add(name); }
protected override bool PrivateUpdate(ScenarioFrame frame) { if (!mSuccess.TestBeforehand(Manager, Sim, Target)) { IncStat("Success TestBeforehand Fail"); return(false); } if (!mFailure.TestBeforehand(Manager, Sim, Target)) { IncStat("Failure TestBeforehand Fail"); return(false); } if (!RandomUtil.RandomChance(mChance)) { IncStat("Chance Fail"); return(false); } SimPersonality clan = Personalities.GetPersonality(TargetFilter.Clan); if (clan == null) { clan = Manager as SimPersonality; } if (clan == null) { IncStat("Clan Missing"); return(false); } mFail = ((!string.IsNullOrEmpty(mAcceptanceScoring)) && (AddScoring("Acceptance", ScoringLookup.GetScore(mAcceptanceScoring, Target, Sim)) <= 0)); if (!mFail) { if (!clan.RemoveFromClan(Target)) { return(false); } mSuccess.Perform(this, frame, "Success", Sim, Target); } else { mFailure.Perform(this, frame, "Failure", Sim, Target); } return(true); }
public override bool Install(SimPersonality main, bool initial) { if (!base.Install(main, initial)) { return(false); } if (mScenario != null) { mScenario.Manager = Manager; } return(true); }
protected override bool PrivateAllow(IScoringGenerator stats, SimDescription sim, SimData settings, AllowCheck check) { if (sim.LotHome == null) { stats.IncStat("Allow: Homeless"); return(false); } if (!settings.GetValue <AllowPersonalityOption, bool>()) { stats.IncStat("Allow: User Denied"); return(false); } SimPersonality personality = stats as SimPersonality; if (personality == null) { IHasPersonality hasPersonality = stats as IHasPersonality; if (hasPersonality != null) { personality = hasPersonality.Personality; } else { Scenario scenario = stats as Scenario; if (scenario != null) { personality = scenario.Manager as SimPersonality; } } } if (personality == null) { Common.DebugStackLog(stats.GetType().ToString()); //stats.IncStat("Allow: Incorrect Manager"); //return false; } else if (settings.HasValue <DisallowPersonalityOption, SimPersonality>(personality)) { stats.IncStat("Allow: Personality Denied"); return(false); } return(true); }
protected override bool Allow(SimDescription sim) { SimPersonality manager = Manager as SimPersonality; if (manager == null) { IncStat("No Manager"); return(false); } else if (manager.Me != sim) { IncStat("No Leader"); return(false); } return(base.Allow(sim)); }
public void Perform(Scenario scenario, SimDescription actor, SimDescription target) { ICollection <SimDescription> recruits = mTargetRecruit.Filter(new SimScenarioFilter.Parameters(scenario, mActorRecruit.Enabled), "TargetRecruit", target); recruits = mActorRecruit.Filter(new SimScenarioFilter.Parameters(scenario, false), "ActorRecruit", actor, recruits); if (recruits == null) { return; } SimPersonality clan = scenario.Manager as SimPersonality; foreach (SimDescription recruit in recruits) { clan.AddToClan(scenario, recruit, mAllowSteal); } }
protected override ManagerStory.Story PrintStory(StoryProgressionObject manager, string name, object[] parameters, string[] extended, ManagerStory.StoryLogging logging) { if (mNemesis) { SimPersonality clan = Manager as SimPersonality; if (clan != null) { if (clan.Me != Sim) { return(null); } } name = "Nemesis"; } return(base.PrintStory(manager, name, parameters, extended, logging)); }
protected override ManagerStory.Story PrintStory(StoryProgressionObject manager, string name, object[] parameters, string[] extended, ManagerStory.StoryLogging logging) { if (manager == null) { manager = Friends; } if (!Sim.IsHuman) { if (string.IsNullOrEmpty(name)) { return(null); } name += "Pet"; } else if (mNemesis) { SimPersonality clan = Manager as SimPersonality; if (clan != null) { if (clan.Me != Sim) { return(null); } } name = "Nemesis"; } else if (Sim.Partner == Target) { if (string.IsNullOrEmpty(name)) { return(null); } name += "Partner"; } return(base.PrintStory(manager, name, parameters, extended, logging)); }
public SimPersonality GetPersonality(string name) { if (string.IsNullOrEmpty(name)) { return(null); } SimPersonality personality = PersonalityLookup.GetPersonality(name); if (personality == null) { return(null); } if (!personality.IsInstalled) { return(null); } return(personality); }
public override bool Parse(XmlDbRow row, SimPersonality personality, ref string error) { if (!base.Parse(row, personality, ref error)) return false; if (!row.Exists("Name")) { error = "Name missing"; return false; } else if (!row.Exists("Default")) { error = "Default missing"; return false; } mName = row.GetString("Name"); SetValue (row.GetBool("Default")); return true; }
protected override bool PrivateUpdate(ScenarioFrame frame) { SimPersonality clan = Manager as SimPersonality; foreach (SimDescription sim in clan.GetClanMembers(false)) { clan.CheckRetention(sim); } if ((mScenarios == null) || (mScenarios.Count == 0)) { IncStat("No Choices"); return(false); } WeightOption scenario = RandomUtil.GetWeightedRandomObjectFromList(mScenarios.ToArray()) as WeightOption; if (scenario == null) { IncStat("Bad Choice"); return(false); } if (!mFirst) { if (scenario is SimPersonality.IMustBeFirstChoiceOption) { IncStat("Must Be First"); return(false); } } mFirst = false; mScenarios.Remove(scenario); Add(frame, scenario.GetScenario(), ScenarioResult.Start); Add(frame, new ResetChanceScenario(mPersonality), ScenarioResult.Success); return(true); }
protected override bool PrivateUpdate(ScenarioFrame frame) { if (!mSuccess.TestBeforehand(Manager, Sim, Target)) { IncStat("Success TestBeforehand Fail"); return(false); } if (!mFailure.TestBeforehand(Manager, Sim, Target)) { IncStat("Failure TestBeforehand Fail"); return(false); } if (!base.PrivateUpdate(frame)) { return(false); } SimPersonality clan = Manager as SimPersonality; if (clan == null) { IncStat("No Clan"); return(false); } mFail = !clan.AddToClan(this, Target, mAllowSteal); if (mFail) { mFailure.Perform(this, frame, "Failure", Sim, Target); return(false); } else { mSuccess.Perform(this, frame, "Success", Sim, Target); return(true); } }
public void Perform(Scenario scenario, ScenarioFrame frame, string name, SimDescription sim, SimDescription target) { scenario.IncStat(name); foreach (KeyValuePair <BuffNames, Origin> value in mActorBuffs) { HandleBuff(sim.CreatedSim, value.Key, value.Value); } foreach (KeyValuePair <BuffNames, Origin> value in mTargetBuffs) { HandleBuff(target.CreatedSim, value.Key, value.Value); } mRecruit.Perform(scenario, sim, target); mPropagate.Perform(scenario, frame, sim, target); int minCelebrity = scenario.GetValue <ManagerPersonality.MinCelebrityOption, int>(); if (minCelebrity > 0) { SimPersonality personality = scenario.Manager as SimPersonality; int actorCelebrity = mActorCelebrity; if (actorCelebrity < minCelebrity) { actorCelebrity = minCelebrity; } if (actorCelebrity > 0) { scenario.Friends.AccumulateCelebrity(sim, actorCelebrity); } if ((personality != null) && (personality.Me != sim)) { scenario.Friends.AccumulateCelebrity(personality.Me, actorCelebrity); } int targetCelebrity = mTargetCelebrity; if (targetCelebrity < minCelebrity) { targetCelebrity = minCelebrity; } if (targetCelebrity > 0) { scenario.Friends.AccumulateCelebrity(target, targetCelebrity); } } if (mAccumulatorOptions != null) { foreach (SimPersonality.IAccumulatorValue value in mAccumulatorOptions) { value.ApplyAccumulator(); } } Scenario newScenario = GetNewScenario(scenario.Manager, sim, target); if (newScenario != null) { scenario.IncStat(newScenario.UnlocalizedName); scenario.Add(frame, newScenario, ScenarioResult.Start); } SimPersonality clan = scenario.Manager as SimPersonality; if ((sim != clan.Me) && (clan != null) && (clan.IsFriendlyLeadership)) { int delta = mDelta.Score(new DualSimScoringParameters(sim, clan.Me)); if (delta < 0) { scenario.IncStat("ExistingEnemy"); scenario.Add(frame, new ExistingEnemyManualScenario(sim, clan.Me, delta, 0), ScenarioResult.Start); } else if (delta > 0) { scenario.IncStat("ExistingFriend"); scenario.Add(frame, new ExistingFriendManualScenario(sim, clan.Me, delta, 0), ScenarioResult.Start); } } scenario.Add(frame, new SuccessScenario(), ScenarioResult.Start); }
public RunScenario(SimPersonality personality) { mPersonality = personality; mScenarios = personality.GetScenarios(); }
public ResetChanceScenario(ResetChanceScenario scenario) : base(scenario) { mPersonality = scenario.mPersonality; }
public ResetChanceScenario(SimPersonality personality) { mPersonality = personality; }
public bool RemoveClan(SimPersonality clan) { return(RemoveClan(clan.UnlocalizedName)); }
protected PropagateClanDelightScenario(PropagateClanDelightScenario scenario) : base (scenario) { mClan = scenario.mClan; }
public static void OnAcceptGigolo(SimPersonality personality, SimDescription sim) { sActivateProfessional.Invoke<bool>(new object[] { sim }); sActivateRendezvous.Invoke<bool>(new object[] { sim }); }
public override bool Parse(XmlDbRow row, SimPersonality personality, ref string error) { ProductVersion productVersion; if (!ParserFunctions.TryParseEnum <ProductVersion>(row.GetString("ProductVersion"), out productVersion, ProductVersion.BaseGame)) { error = "ProductVersion missing"; return(false); } if (!GameUtils.IsInstalled(productVersion)) { return(true); } string module = row.GetString("Module"); if ((!string.IsNullOrEmpty(module)) && (!Common.AssemblyCheck.IsInstalled(module))) { return(true); } // Must be after the product version checks, but before everything else if (!base.Parse(row, personality, ref error)) { return(false); } if (!row.Exists("Scenario")) { error = "Scenario missing"; return(false); } else if (!row.Exists("Weight")) { error = "Weight missing"; return(false); } else if (!row.Exists("Name")) { error = "Name missing"; return(false); } mName = new NameOption(row); Type classType = row.GetClassType("Scenario"); if (classType == null) { error = "Scenario class not found"; return(false); } int weight = row.GetInt("Weight"); if (weight > 0) { mVisible = true; } else { weight = 1; if (!row.Exists("ShouldPush")) { error = "ShouldPush missing"; return(false); } } SetValue(weight); try { mScenario = classType.GetConstructor(new Type[0]).Invoke(new object[0]) as Scenario; } catch {} if (mScenario == null) { error = "Scenario constructor fail"; return(false); } mScenario.Manager = personality; if (!mScenario.Parse(row, ref error)) { return(false); } if (!mScenario.PostParse(ref error)) { return(false); } IViolentScenario violentScenario = mScenario as IViolentScenario; if ((violentScenario != null) && (violentScenario.IsViolent)) { PushDeathChanceOption.Installed = true; } return(true); }
public static void OnAcceptGigolo(SimPersonality personality, SimDescription sim) { sActivateProfessional.Invoke <bool>(new object[] { sim }); sActivateRendezvous.Invoke <bool>(new object[] { sim }); }
public PropagateClanDelightScenario(SimDescription center, StoryProgressionObject clan, Origin origin) : base(center, BuffNames.Delighted, origin) { mClan = clan as SimPersonality; }
public override bool Parse(XmlDbRow row, SimPersonality personality, ref string error) { ProductVersion productVersion; if (!ParserFunctions.TryParseEnum<ProductVersion>(row.GetString("ProductVersion"), out productVersion, ProductVersion.BaseGame)) { error = "ProductVersion missing"; return false; } if (!GameUtils.IsInstalled(productVersion)) { return true; } string module = row.GetString("Module"); if ((!string.IsNullOrEmpty(module)) && (!Common.AssemblyCheck.IsInstalled(module))) { return true; } // Must be after the product version checks, but before everything else if (!base.Parse(row, personality, ref error)) return false; if (!row.Exists("Scenario")) { error = "Scenario missing"; return false; } else if (!row.Exists("Weight")) { error = "Weight missing"; return false; } else if (!row.Exists("Name")) { error = "Name missing"; return false; } mName = new NameOption(row); Type classType = row.GetClassType("Scenario"); if (classType == null) { error = "Scenario class not found"; return false; } int weight = row.GetInt("Weight"); if (weight > 0) { mVisible = true; } else { weight = 1; if (!row.Exists("ShouldPush")) { error = "ShouldPush missing"; return false; } } SetValue (weight); try { mScenario = classType.GetConstructor(new Type[0]).Invoke(new object[0]) as Scenario; } catch {} if (mScenario == null) { error = "Scenario constructor fail"; return false; } mScenario.Manager = personality; if (!mScenario.Parse(row, ref error)) { return false; } if (!mScenario.PostParse(ref error)) { return false; } IViolentScenario violentScenario = mScenario as IViolentScenario; if ((violentScenario != null) && (violentScenario.IsViolent)) { PushDeathChanceOption.Installed = true; } return true; }
protected PropagateClanDelightScenario(PropagateClanDelightScenario scenario) : base(scenario) { mClan = scenario.mClan; }