protected virtual void OfferQuest_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { // Show accept message, add quest sender.CloseWindow(); ShowQuestPopupMessage(offeredQuest, (int)QuestMachine.QuestMessages.AcceptQuest); QuestMachine.Instance.InstantiateQuest(offeredQuest); } else { // inform TalkManager so that it can remove the quest topics that have been added // (note by Nystul: I know it is a bit ugly that it is added in the first place at all, but didn't find a good way to do it differently - // may revisit this later) GameManager.Instance.TalkManager.RemoveQuestInfoTopicsForSpecificQuest(offeredQuest.UID); // remove quest rumors (rumor mill command) for this quest from talk manager GameManager.Instance.TalkManager.RemoveQuestRumorsFromRumorMill(offeredQuest.UID); // remove quest progress rumors for this quest from talk manager GameManager.Instance.TalkManager.RemoveQuestProgressRumorsFromRumorMill(offeredQuest.UID); // Show refuse message sender.CloseWindow(); ShowQuestPopupMessage(offeredQuest, (int)QuestMachine.QuestMessages.RefuseQuest, false); } }
protected virtual void OfferQuest_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { // Show accept message, add quest sender.CloseWindow(); ShowQuestPopupMessage(offeredQuest, (int)QuestMachine.QuestMessages.AcceptQuest); QuestMachine.Instance.StartQuest(offeredQuest); // Assign QuestResourceBehaviour to questor NPC - this will be last NPC clicked // This will ensure quests actions like "hide npc" will operate on questor at quest startup if (QuestMachine.Instance.LastNPCClicked != null) { QuestMachine.Instance.LastNPCClicked.AssignQuestResourceBehaviour(); } } else { // inform TalkManager so that it can remove the quest topics that have been added // (note by Nystul: I know it is a bit ugly that it is added in the first place at all, but didn't find a good way to do it differently - // may revisit this later) GameManager.Instance.TalkManager.RemoveQuestInfoTopicsForSpecificQuest(offeredQuest.UID); // remove quest rumors (rumor mill command) for this quest from talk manager GameManager.Instance.TalkManager.RemoveQuestRumorsFromRumorMill(offeredQuest.UID); // remove quest progress rumors for this quest from talk manager GameManager.Instance.TalkManager.RemoveQuestProgressRumorsFromRumorMill(offeredQuest.UID); // Show refuse message sender.CloseWindow(); ShowQuestPopupMessage(offeredQuest, (int)QuestMachine.QuestMessages.RefuseQuest, false); } }
private void OfferQuest_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { // Show accept message, add quest sender.CloseWindow(); ShowQuestPopupMessage(offeredQuest, (int)QuestMachine.QuestMessages.AcceptQuest); QuestMachine.Instance.InstantiateQuest(offeredQuest); } else { // Show refuse message sender.CloseWindow(); ShowQuestPopupMessage(offeredQuest, (int)QuestMachine.QuestMessages.RefuseQuest, false); } }
protected virtual void MoveEntry_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { if (messageBoxButton != DaggerfallMessageBox.MessageBoxButtons.Yes) { selectedEntry = NULLINT; } sender.CloseWindow(); }
private void ConfirmIllegalRestUntilHealed_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { DoRestUntilHealed(true); } }
private void ConfirmInterruptRepairBox_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { TakeItemFromRepair(itemBeingRepaired); } }
private void ConfirmExitBox_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { DaggerfallUI.PostMessage(DaggerfallUIMessages.dfuiExitGame); CancelWindow(); } }
private void ConfirmDialog_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.No) { classIndex = noClassIndex; } sender.CloseWindow(); CloseWindow(); }
private void ConfirmDefaultsBox_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { SetDefaults(); InputManager.Instance.SaveKeyBinds(); } }
protected virtual void FindPlace_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { Debug.Log("Find " + findPlaceName + findPlaceRegion); this.CloseWindow(); DaggerfallUI.Instance.DfTravelMapWindow.GotoLocation(findPlaceName, findPlaceRegion); DaggerfallUI.PostMessage(DaggerfallUIMessages.dfuiOpenTravelMapWindow); } }
private void GuiltyNotGuilty_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Guilty) { if (punishmentType != 0) { if (punishmentType == 1) { state = 5; } else { fine >>= 1; daysInPrison >>= 1; playerEntity.DeductGoldAmount(fine); // Classic gives a legal reputation raise here, probably a bug since it means you get a separate raise // for paying the fine and for serving prison time. if (daysInPrison > 0) { state = 3; } else { // Give the reputation raise here if no prison time will be served. playerEntity.RaiseReputationForDoingSentence(); repositionPlayer = true; // Oversight in classic: Does not refill vital signs when releasing in this case, so player is left with 1 health. playerEntity.FillVitalSigns(); ReleaseFromPrison(); } } } else { state = 4; } } else // Pleading not guilty { DaggerfallMessageBox messageBox = new DaggerfallMessageBox(uiManager, this, false, 127); messageBox.SetTextTokens(DaggerfallUnity.Instance.TextProvider.GetRSCTokens(courtTextHowConvince)); messageBox.ScreenDimColor = new Color32(0, 0, 0, 0); messageBox.AddButton(DaggerfallMessageBox.MessageBoxButtons.Debate); messageBox.AddButton(DaggerfallMessageBox.MessageBoxButtons.Lie); messageBox.OnButtonClick += DebateLie_OnButtonClick; messageBox.ParentPanel.VerticalAlignment = VerticalAlignment.Bottom; messageBox.AllowCancel = false; uiManager.PushWindow(messageBox); } Update(); }
void ConfirmClassPopup_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { sender.CloseWindow(); CloseWindow(); } else if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.No) { selectedClass = null; sender.CancelWindow(); } }
public void ConfirmJoinGuild_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { guildManager.AddMembership(guildGroup, guild); DaggerfallMessageBox messageBox = new DaggerfallMessageBox(uiManager, uiManager.TopWindow); messageBox.SetTextTokens(guild.TokensWelcome(), guild); messageBox.ClickAnywhereToClose = true; messageBox.Show(); } }
/// <summary> /// Button handler for travel-with-incubating-disease confirmation pop up. /// </summary> void ConfirmTravelPopupDiseasedButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { CallFastTravelGoldCheck(); } else { return; } }
private void OfferQuest_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { // TODO: Show accept message, add quest } else { // TODO: Show refuse message } sender.CloseWindow(); }
protected virtual void ConfirmJoinGuild_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { DaggerfallUI.Instance.PlayOneShot(SoundClips.ButtonClick); sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { guildManager.AddMembership(guildGroup, guild); DaggerfallMessageBox messageBox = new DaggerfallMessageBox(uiManager, uiManager.TopWindow); messageBox.SetTextTokens(guild.TokensWelcome(), guild); messageBox.ClickAnywhereToClose = true; messageBox.Show(); } }
void RemoveEntry_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { RemoveEntry(selectedEntry); if (currentMessageIndex == selectedEntry) { currentMessageIndex = 0; } lastMessageIndex = NULLINT; } selectedEntry = NULLINT; sender.CloseWindow(); }
/// <summary> /// Button handler for travel-with-incubating-disease confirmation pop up. /// </summary> void ConfirmTravelPopupDiseasedButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { DaggerfallUI.Instance.PlayOneShot(SoundClips.ButtonClick); sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { CallFastTravelGoldCheck(); } else { return; } }
protected virtual void RemoveEntry_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { RemoveEntry(selectedEntry); if (currentMessageIndex == selectedEntry) { currentMessageIndex = 0; } lastMessageIndex = NULLINT; DaggerfallUI.Instance.PlayOneShot(editNotebook); } selectedEntry = NULLINT; sender.CloseWindow(); }
private void SaveOptionsAndContinue() { DaggerfallUnity.Settings.ShowOptionsAtStart = alwayShowOptions.IsChecked; DaggerfallUnity.Settings.VSync = vsync.IsChecked; DaggerfallUnity.Settings.SwapHealthAndFatigueColors = swapHealthAndFatigue.IsChecked; DaggerfallUnity.Settings.InvertMouseVertical = invertMouseVertical.IsChecked; DaggerfallUnity.Settings.MouseLookSmoothing = mouseSmoothing.IsChecked; DaggerfallUnity.Settings.Handedness = GetHandedness(leftHandWeapons.IsChecked); DaggerfallUnity.Settings.PlayerNudity = playerNudity.IsChecked; DaggerfallUnity.Settings.ClickToAttack = clickToAttack.IsChecked; DaggerfallUnity.Settings.EnableController = enableController.IsChecked; DaggerfallUnity.Settings.SaveSettings(); if (ModManager.Instance) { foreach (Mod mod in ModManager.Instance.Mods.Where(x => x.Enabled)) { bool?isGameVersionSatisfied = mod.IsGameVersionSatisfied(); if (isGameVersionSatisfied == false) { var messageBox = new DaggerfallMessageBox(uiManager, this, true); messageBox.SetText(GetText("incompatibleMods")); messageBox.AddButton(DaggerfallMessageBox.MessageBoxButtons.Yes); messageBox.AddButton(DaggerfallMessageBox.MessageBoxButtons.No, true); messageBox.OnButtonClick += (_, messageBoxButton) => { moveNextStage = messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes; messageBox.CloseWindow(); }; uiManager.PushWindow(messageBox); return; } else if (isGameVersionSatisfied == null) { Debug.LogWarningFormat("Unknown format for property \"DFUnity_Version\" of mod {0}. Please use x.y.z version of minimum compatible game build.", mod.Title); } } } moveNextStage = true; }
private void ConfirmSummon_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) { PlayerEntity playerEntity = GameManager.Instance.PlayerEntity; int summonCost = FormulaHelper.CalculateDaedraSummoningCost(summonerFactionData.rep); if (playerEntity.GetGoldAmount() >= summonCost) { playerEntity.DeductGoldAmount(summonCost); WeatherManager weatherManager = GameManager.Instance.WeatherManager; // Sheogorath has a 5% (15% if stormy) chance to replace selected daedra. int sheoChance = (weatherManager.IsStorming) ? 15 : 5; if (Dice100.Roll() <= sheoChance) { daedraToSummon = daedraData[8]; } // Default 30% bonus is only applicable to some Daedra in specific weather conditions. int bonus = 0; if (daedraToSummon.bonusCond == Weather.WeatherType.Rain && weatherManager.IsRaining || daedraToSummon.bonusCond == Weather.WeatherType.Thunder && weatherManager.IsStorming || daedraToSummon.bonusCond == Weather.WeatherType.None) { bonus = 30; } // Get summoning chance for selected daedra and roll. int chance = FormulaHelper.CalculateDaedraSummoningChance(playerEntity.FactionData.GetReputation(daedraToSummon.factionId), bonus); int roll = Dice100.Roll(); Debug.LogFormat("Summoning {0} with chance = {1}%, Sheogorath chance = {2}%, roll = {3}, summoner rep = {4}, cost: {5}", daedraToSummon.vidFile.Substring(0, daedraToSummon.vidFile.Length - 4), chance, sheoChance, roll, summonerFactionData.rep, summonCost); if (roll > chance) { // Daedra stood you up! DaggerfallUI.MessageBox(SummonFailed, this); // Spawn daedric foes if failed at a witches coven. if (summonerFactionData.ggroup == (int)FactionFile.GuildGroups.Witches) { GameObjectHelper.CreateFoeSpawner(true, daedricFoes[Random.Range(0, 5)], Random.Range(1, 4), 4, 64); } return; } // Has this Daedra already been summoned by the player? if (playerEntity.FactionData.GetFlag(daedraToSummon.factionId, FactionFile.Flags.Summoned)) { // Close menu and push DaggerfallDaedraSummoningWindow here for video and dismissal.. CloseWindow(); uiManager.PushWindow(UIWindowFactory.GetInstanceWithArgs(UIWindowType.DaedraSummoned, new object[] { uiManager, daedraToSummon, SummonBefore, this })); } else { // Record the summoning. playerEntity.FactionData.SetFlag(daedraToSummon.factionId, FactionFile.Flags.Summoned); // Offer the quest to player. offeredQuest = GameManager.Instance.QuestListsManager.GetQuest(daedraToSummon.quest, summonerFactionData.id); if (offeredQuest != null) { // Close menu and push DaggerfallDaedraSummoningWindow here for video and custom quest offer.. CloseWindow(); uiManager.PushWindow(UIWindowFactory.GetInstanceWithArgs(UIWindowType.DaedraSummoned, new object[] { uiManager, daedraToSummon, offeredQuest })); } } } else { // Display customised not enough gold message so players don't need to guess the cost. TextFile.Token[] notEnoughGold = DaggerfallUnity.Instance.TextProvider.GetRSCTokens(DaggerfallTradeWindow.NotEnoughGoldId); TextFile.Token[] msg = new TextFile.Token[] { new TextFile.Token() { formatting = TextFile.Formatting.Text, text = TextManager.Instance.GetLocalizedText("serviceSummonCost1") }, new TextFile.Token() { formatting = TextFile.Formatting.JustifyCenter }, new TextFile.Token() { formatting = TextFile.Formatting.Text, text = TextManager.Instance.GetLocalizedText("serviceSummonCost2") + summonCost + TextManager.Instance.GetLocalizedText("serviceSummonCost3") }, new TextFile.Token() { formatting = TextFile.Formatting.JustifyCenter }, new TextFile.Token() { formatting = TextFile.Formatting.NewLine }, notEnoughGold[0], new TextFile.Token() { formatting = TextFile.Formatting.JustifyCenter }, }; DaggerfallMessageBox messageBox = new DaggerfallMessageBox(uiManager, uiManager.TopWindow); messageBox.SetTextTokens(msg, this); messageBox.ClickAnywhereToClose = false; messageBox.Show(); } } }
private void EditOrDeleteSpell_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); }
private void DebateLie_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); int playerSkill = 0; if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Debate) { playerSkill = playerEntity.Skills.GetLiveSkillValue(DFCareer.Skills.Etiquette); playerEntity.TallySkill(DFCareer.Skills.Etiquette, 1); } else { playerSkill = playerEntity.Skills.GetLiveSkillValue(DFCareer.Skills.Streetwise); playerEntity.TallySkill(DFCareer.Skills.Streetwise, 1); } int chanceToGoFree = playerEntity.RegionData[regionIndex].LegalRep + (playerSkill + playerEntity.Stats.GetLiveStatValue(DFCareer.Stats.Personality)) / 2; if (chanceToGoFree > 95) { chanceToGoFree = 95; } else if (chanceToGoFree < 5) { chanceToGoFree = 5; } if (UnityEngine.Random.Range(1, 101) > chanceToGoFree) { // Banishment if (punishmentType == 0) { state = 4; } // Execution else if (punishmentType == 1) { state = 5; } // Prison/Fine else { int roll = playerEntity.RegionData[regionIndex].LegalRep + UnityEngine.Random.Range(1, 101); if (roll < 25) { fine *= 2; } else if (roll > 75) { fine >>= 1; } state = 2; } } else { DaggerfallMessageBox messageBox = new DaggerfallMessageBox(uiManager, this, false, 149); messageBox.SetTextTokens(DaggerfallUnity.Instance.TextProvider.GetRSCTokens(courtTextFreeToGo)); messageBox.ScreenDimColor = new Color32(0, 0, 0, 0); messageBox.ParentPanel.VerticalAlignment = VerticalAlignment.Bottom; messageBox.ClickAnywhereToClose = true; uiManager.PushWindow(messageBox); // Oversight in classic: Does not refill vital signs when releasing in this case, so player is left with 1 health. // Also does not repair reputation. playerEntity.FillVitalSigns(); playerEntity.RaiseReputationForDoingSentence(); state = 6; } Update(); }
/// <summary> /// Button handler for travel confirmation pop up. This is a temporary solution until implementing the final pop-up. /// </summary> void ConfirmTravelPopupButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton) { sender.CloseWindow(); if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes) CreatePopUpWindow(); else StopRegionIdentify(); }