public static void ConfirmDeclareWar(DialogueContext Context) { Context.ClearOptions(); Context.Say("You really want to declare war on us?"); Context.AddOption("Yes!", DeclareWar); Context.AddOption("No.", ConversationRoot); }
public static void DeclareWar(DialogueContext Context) { Context.Envoy.OwnerFaction.Race.Speech.Language.SayBoo(); if (!Context.Politics.HasEvent("you declared war on us")) { Context.Politics.RecentEvents.Add(new Diplomacy.PoliticalEvent() { Change = -2.0f, Description = "you declared war on us", Duration = new TimeSpan(4, 0, 0, 0), Time = Context.World.Time.CurrentDate }); Context.Politics.WasAtWar = true; } Context.Say(Datastructures.SelectRandom(Context.Envoy.OwnerFaction.Race.Speech.WarDeclarations)); Context.ClearOptions(); Context.AddOption("Goodbye.", (context) => { Diplomacy.RecallEnvoy(context.Envoy); GameState.Game.StateManager.PopState(); }); Context.World.GoalManager.OnGameEvent(new Goals.Events.DeclareWar { PlayerFaction = Context.PlayerFaction, OtherFaction = Context.Envoy.OwnerFaction }); }
public static void ConversationRoot(DialogueContext Context) { RootWithPrompt(String.Format("{0} I am {1} of {2}.", Datastructures.SelectRandom(Context.Envoy.OwnerFaction.Race.Speech.Greetings), Context.EnvoyName, Context.Envoy.OwnerFaction.Name))(Context); }
public static void ProcessTrade(DialogueContext Context) { if (Context.TradePanel.Result == NewGui.TradeDialogResult.Propose) { Context.TradePanel.Transaction.Apply(); } Context.Transition(ConversationRoot); }
public static void WaitForTradeToFinish(DialogueContext Context) { if (Context.TradePanel.Result == Gui.Widgets.TradeDialogResult.Pending) { Context.Transition(WaitForTradeToFinish); } else { Context.Transition(ProcessTrade); } }
public DialogueState( DwarfGame Game, GameStateManager StateManager, Faction.TradeEnvoy Envoy, Faction PlayerFaction) : base(Game, "GuiStateTemplate", StateManager) { DialogueContext = new DialogueContext { Envoy = Envoy, PlayerFaction = PlayerFaction }; }
public static void Trade(DialogueContext Context) { Context.TradePanel = Context.ChoicePanel.Root.ConstructWidget(new Gui.Widgets.TradePanel { Rect = Context.ChoicePanel.Root.RenderData.VirtualScreen, Envoy = new Trade.EnvoyTradeEntity(Context.Envoy), Player = new Trade.PlayerTradeEntity(Context.PlayerFaction) }) as Gui.Widgets.TradePanel; Context.TradePanel.Layout(); Context.ChoicePanel.Root.ShowDialog(Context.TradePanel); Context.Transition(WaitForTradeToFinish); }
public static void MakePeace(DialogueContext Context) { if (!Context.Politics.HasEvent("you made peace with us")) { Context.Politics.RecentEvents.Add(new Diplomacy.PoliticalEvent() { Change = 0.4f, Description = "you made peace with us", Duration = new TimeSpan(4, 0, 0, 0), Time = Context.World.Time.CurrentDate }); } ConversationRoot(Context); }
public DialogueState( DwarfGame Game, GameStateManager StateManager, TradeEnvoy Envoy, Faction PlayerFaction, WorldManager World) : base(Game, "GuiStateTemplate", StateManager) { this.World = World; DialogueContext = new DialogueContext { Envoy = Envoy, PlayerFaction = PlayerFaction, }; }
public static void ConversationRoot(DialogueContext Context) { Context.Say(String.Format("{0} I am {1} of {2}.", Datastructures.SelectRandom(Context.Envoy.OwnerFaction.Race.Speech.Greetings), Context.EnvoyName, Context.Envoy.OwnerFaction.Name)); Context.ClearOptions(); Context.AddOption("Trade", Trade); Context.AddOption("Leave", (context) => { Diplomacy.RecallEnvoy(context.Envoy); Context.Say(Datastructures.SelectRandom(context.Envoy.OwnerFaction.Race.Speech.Farewells)); Context.ClearOptions(); Context.AddOption("Goodbye.", (_) => { GameState.Game.StateManager.PopState(); }); }); }
public static void ProcessTrade(DialogueContext Context) { if (Context.TradePanel.Result == Gui.Widgets.TradeDialogResult.Propose) { var containsHatedItem = Context.TradePanel.Transaction.PlayerItems .Select(item => ResourceLibrary.GetResourceByName(item.ResourceType)) .SelectMany(item => item.Tags) .Any(tag => Context.Envoy.OwnerFaction.Race.HatedResources.Contains(tag)); var containsLikedItem = Context.TradePanel.Transaction.PlayerItems .Select(item => ResourceLibrary.GetResourceByName(item.ResourceType)) .SelectMany(item => item.Tags) .Any(tag => Context.Envoy.OwnerFaction.Race.LikedResources.Contains(tag)); if (containsHatedItem) { Context.Envoy.OwnerFaction.Race.Speech.Language.SayBoo(); Context.NumOffensiveTrades++; var phrase = Datastructures.SelectRandom(Context.Envoy.OwnerFaction.Race.Speech.OffensiveTrades); var action = Context.NumOffensiveTrades >= 3 ? GoodbyeWithPrompt(phrase) : RootWithPrompt(phrase); Context.Transition(action); if (!Context.Politics.HasEvent("you tried to give us something offensive")) { Context.Politics.RecentEvents.Add(new Diplomacy.PoliticalEvent() { Change = -0.25f, Description = "you tried to give us something offensive", Duration = new TimeSpan(4, 0, 0, 0), Time = Context.World.Time.CurrentDate }); } } else { if (containsLikedItem) { if (!Context.Politics.HasEvent("you gave us something we liked")) { Context.Politics.RecentEvents.Add(new Diplomacy.PoliticalEvent() { Change = 0.25f, Description = "you gave us something we liked", Duration = new TimeSpan(4, 0, 0, 0), Time = Context.World.Time.CurrentDate }); } } Context.TradePanel.Transaction.Apply(Context.World); Context.Transition(RootWithPrompt(Datastructures.SelectRandom(Context.Envoy.OwnerFaction.Race.Speech.GoodTrades))); Context.World.GoalManager.OnGameEvent(new Goals.Events.Trade { PlayerFaction = Context.PlayerFaction, PlayerGold = Context.TradePanel.Transaction.PlayerMoney, PlayerGoods = Context.TradePanel.Transaction.PlayerItems, OtherFaction = Context.Envoy.OwnerFaction, OtherGold = Context.TradePanel.Transaction.EnvoyMoney, OtherGoods = Context.TradePanel.Transaction.EnvoyItems }); if (!Context.Politics.HasEvent("we had profitable trade")) { Context.Politics.RecentEvents.Add(new Diplomacy.PoliticalEvent() { Change = 0.25f, Description = "we had profitable trade", Duration = new TimeSpan(2, 0, 0, 0), Time = Context.World.Time.CurrentDate }); } Context.Envoy.OwnerFaction.Race.Speech.Language.SayYay(); } } else if (Context.TradePanel.Result == Gui.Widgets.TradeDialogResult.RejectOffense || Context.TradePanel.Result == Gui.Widgets.TradeDialogResult.RejectProfit) { Context.Envoy.OwnerFaction.Race.Speech.Language.SayBoo(); Context.Transition(RootWithPrompt(Datastructures.SelectRandom(Context.Envoy.OwnerFaction.Race.Speech.BadTrades))); } else { Context.Transition(RootWithPrompt("Changed your mind?")); } }