protected override ManagerStory.Story PrintFormattedStory(StoryProgressionObject manager, string text, string summaryKey, object[] parameters, string[] extended, ManagerStory.StoryLogging logging) { Writing skill = Sim.SkillManager.GetSkill <Writing>(SkillNames.Writing); WrittenBookData writing = skill.LastCompletedWriting; List <BookGeneralData> randomList = new List <BookGeneralData>(BookData.BookGeneralDataList.Values); BookGeneralData randomObjectFromList = RandomUtil.GetRandomObjectFromList(randomList); int genre = RandomUtil.GetInt(1, Writing.kDialogsPerGenre); int quality = RandomUtil.GetInt(1, Writing.kDialogsPerQuality); text = Writing.LocalizeString(Sim.IsFemale, "Finished" + writing.Genre.ToString() + genre, new object[] { Sim, writing.NumPages, writing.Title, randomObjectFromList.Title }); if (writing.Quality != Writing.WrittenBookQuality.Normal) { string str2 = Writing.LocalizeString(Sim.IsFemale, "Finished" + writing.Quality.ToString() + quality, new object[] { Sim, writing.NumPages, writing.Title }); text = text + " " + str2; } string str3 = Writing.LocalizeString(Sim.IsFemale, "RoyaltyDetails", new object[] { Sim, Writing.kRoyaltyLength, writing.Royalty, SimClockUtils.GetText(Writing.kRoyaltyPayHour) }); text = text + Common.NewLine + Common.NewLine + str3; if (extended == null) { extended = new string[] { writing.Title, EAText.GetNumberString(writing.Royalty) }; } return(base.PrintFormattedStory(manager, text, summaryKey, parameters, extended, logging)); }
public override bool Run() { string msg = null; try { mStart = SimClock.Add(SimClock.CurrentTime(), TimeUnit.Hours, 3); StandardEntry(); if (!Target.StartComputing(this, SurfaceHeight.Table, true)) { StandardExit(); return(false); } msg += "A"; mWritingSkill = Actor.SkillManager.AddElement(SkillNames.Writing) as Writing; Target.StartVideo(Computer.VideoType.WordProcessor); mStartWritingTime = SimClock.CurrentTime(); BeginCommodityUpdates(); bool playFilledEffect = false; try { if (mWritingSkill.CurrentWriting == null) { msg += "B"; BookData.BookGenres choice = mWritingSkill.mNovelistGenre; if (choice == BookData.BookGenres.None) { List <BookData.BookGenres> genres = new List <BookData.BookGenres>(); foreach (BookData.BookGenres genre in Enum.GetValues(typeof(BookData.BookGenres))) { if (genre == BookData.BookGenres.None) { continue; } if (genre == BookData.BookGenres.Biography) { continue; } if (genre == BookData.BookGenres.Autobiography) { continue; } if (!Writing.CanWriteGenre(Actor, genre)) { continue; } switch (genre) { case BookData.BookGenres.Horror: case BookData.BookGenres.Poetry: if (!GameUtils.IsInstalled(ProductVersion.EP7)) { continue; } break; } genres.Add(genre); } if (genres.Count == 0) { return(false); } msg += "C"; if ((SimTypes.IsSelectable(mWritingSkill.SkillOwner)) || (StoryProgression.Main.GetValue <PromptForGenreOption, bool>())) { List <GenreOption> choices = new List <GenreOption>(); foreach (BookData.BookGenres genre in genres) { int count = 0; if (mWritingSkill.WrittenBookGenreCount != null) { if (!mWritingSkill.WrittenBookGenreCount.TryGetValue(genre, out count)) { count = 0; } } choices.Add(new GenreOption(genre, count)); } GenreOption option = new CommonSelection <GenreOption>(Common.Localize("ChooseBookGenre:Header", mWritingSkill.SkillOwner.IsFemale), mWritingSkill.SkillOwner.FullName, choices).SelectSingle(); if (option != null) { choice = option.Value; } } msg += "D"; if (choice == BookData.BookGenres.None) { choice = RandomUtil.GetRandomObjectFromList(genres); } } msg += "E"; if (!StartNewWriting(Target, mWritingSkill, choice)) { AnimateSim("WorkTyping"); EndCommodityUpdates(false); Target.StopComputing(this, Computer.StopComputingAction.TurnOff, false); StandardExit(); return(false); } } msg += "F"; AnimateSim("WorkTyping"); ProgressMeter.ShowProgressMeter(Actor, 0f, ProgressMeter.GlowType.Weak); playFilledEffect = DoLoop(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached), LoopDel, null); ProgressMeter.HideProgressMeter(Actor, playFilledEffect); float points = SimClock.ElapsedTime(TimeUnit.Hours, mStartWritingTime) * Computer.kWritingNovelPointsPerHour; mWritingSkill.AddPoints(points); } finally { EndCommodityUpdates(playFilledEffect); } msg += "G"; Target.StopComputing(this, Computer.StopComputingAction.TurnOff, false); if (mWritingSkill.IsWritingComplete()) { WrittenBookData currentWriting = mWritingSkill.CurrentWriting; if (!BookData.BookWrittenDataList.ContainsKey(currentWriting.Title + mWritingSkill.SkillOwner.FullName)) { List <Lot> lots = new List <Lot>(); if ((!SimTypes.IsSelectable(Actor)) && (!StoryProgression.Main.GetValue <AddBooksToLibraryOption, bool>())) { foreach (Lot lot in LotManager.AllLots) { if (lot.GetMetaAutonomyType == Lot.MetaAutonomyType.Library) { lots.Add(lot); lot.mMetaAutonomyType = Lot.MetaAutonomyType.None; } } } try { msg += "H"; Target.FinalizeWriting(mWritingSkill); } finally { foreach (Lot lot in lots) { lot.mMetaAutonomyType = Lot.MetaAutonomyType.Library; } } } } msg += "I"; StandardExit(); return(playFilledEffect); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, msg, e); return(false); } }