示例#1
0
        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);
        }
示例#2
0
            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);
                            }
                        }
                    }
                }
            }