private static bool ResolvePurchaseSimplePrefix( [NotNull] Viewer viewer, ITwitchMessage twitchMessage, [NotNull] StoreIncidentSimple incident, string formattedMessage ) { if (!Purchase_Handler.CheckIfViewerHasEnoughCoins(viewer, incident.cost)) { return(false); } if (Purchase_Handler.CheckIfKarmaTypeIsMaxed(incident, viewer.username)) { return(false); } if (!TryMakeIncident(incident, viewer, formattedMessage, out IncidentHelper inc)) { TkUtils.Logger.Warn(@$ "The incident " "{incident.defName}" " does not define an incident helper"); return(false); } if (!inc.IsPossible()) { MessageHelper.ReplyToUser(viewer.username, "TwitchToolkitEventNotPossible".Localize()); return(false); } viewer.Charge(incident); Current.Game.GetComponent <Coordinator>()?.QueueIncident(new IncidentProxy { SimpleIncident = inc }); Current.Game.GetComponent <Store_Component>()?.LogIncident(incident); Store_Logger.LogPurchase(viewer.username, twitchMessage.Message); if (!ToolkitSettings.PurchaseConfirmations) { return(false); } TwitchWrapper.SendChatMessage( Helper.ReplacePlaceholder("TwitchToolkitEventPurchaseConfirm".Localize(), viewer: viewer.username, first: incident.label.CapitalizeFirst()) ); return(false); }
private static bool ResolvePurchaseVariablesPrefix( [NotNull] Viewer viewer, ITwitchMessage twitchMessage, [NotNull] StoreIncidentVariables incident, string formattedMessage ) { if (!Purchase_Handler.CheckIfViewerHasEnoughCoins(viewer, incident.cost) || IsOnCooldown(incident, viewer)) { return(false); } if (!TryMakeIncident(incident, viewer, formattedMessage, out IncidentHelperVariables inc)) { TkUtils.Logger.Warn(@$ "The incident " "{incident.defName}" " does not define an incident helper"); return(false); } Purchase_Handler.viewerNamesDoingVariableCommands.Add(viewer.username.ToLowerInvariant()); if (!inc.IsPossible(formattedMessage, viewer)) { Purchase_Handler.viewerNamesDoingVariableCommands.Remove(viewer.username.ToLowerInvariant()); return(false); } Store_Logger.LogPurchase(viewer.username, twitchMessage.Message); Current.Game.GetComponent <Coordinator>()?.QueueIncident(new IncidentProxy { VariablesIncident = inc }); Current.Game.GetComponent <Store_Component>()?.LogIncident(incident); return(false); }