Exemplo n.º 1
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);
                            }
                        }
                    }
                }
            }