protected static void OnPerform(Scenario paramScenario, ScenarioFrame frame) { LeveledScenario scenario = paramScenario as LeveledScenario; if (!scenario.Main.SecondCycle) { scenario.IncStat("First Cycle"); return; } sTracer.Initialize(scenario, scenario.Sim); sTracer.Perform(); if ((!sTracer.mIgnore) || (scenario.DebuggingLevel >= Common.DebugLevel.High)) { Common.DebugNotify("Skillup Allow" + Common.NewLine + scenario.Sim.FullName + Common.NewLine + scenario.Event.Guid, scenario.Sim.CreatedSim); Common.DebugWriteLog("Sim: " + scenario.Sim.FullName + Common.NewLine + "Skill: " + scenario.Event.Guid + Common.NewLine + sTracer.ToString()); } // In order to bypass a script error involving Skill:DisplayTextForLevel() we must delay resetting // until after the calling routine is complete new DelayedResetTask(scenario, sTracer.mAllow, sTracer.mManual); }
protected override void OnPerform() { bool allow = mTracerAllow; if (allow) { if (!mTracerManual) { if (!mScenario.GetValue <AllowSkillOption, bool>(mScenario.Sim)) { mScenario.IncStat("Allow Skill Denied"); allow = false; } else if ((mScenario.GetValue <AllowOnlyExistingSkillOption, bool>(mScenario.Sim)) && (mScenario.Sim.SkillManager != null) && (mScenario.Sim.SkillManager.GetSkillLevel(mScenario.Event.Guid) <= 1)) { mScenario.IncStat("Existing Skill Denied"); allow = false; } } } SkillLevelSimData data = mScenario.GetData <SkillLevelSimData>(mScenario.Sim); if (!allow) { mScenario.IncStat("Not Allowed"); data.Adjust(mScenario, mScenario.Event.Guid); } else { mScenario.IncStat("Allowed"); data.UpdateSkill(mScenario.Event.Guid); ManagerSim.TestInactiveLTWTask.Perform(mScenario, mScenario.Sim, mScenario.Event); if (mScenario.Sim.SkillManager != null) { Skill skill = mScenario.Sim.SkillManager.GetElement(mScenario.Event.Guid); if (skill != null) { if (skill.IsHiddenSkill()) { mScenario.IncStat("Hidden Skill"); } else { int celebrity = mScenario.GetValue <CelebrityBySkillOption, int>(); if (celebrity > 0) { mScenario.Friends.AccumulateCelebrity(mScenario.Sim, celebrity * mScenario.SkillLevel); } mScenario.Scenarios.Post(new LeveledScenario.StoryScenario(mScenario.Sim, mScenario.Event.Guid, mScenario.SkillLevel), mScenario.Skills, false); } } } } }