public void OnCheer(TwitchCheer cheer) { var player = gameManager.Players.GetPlayerByUserId(cheer.UserId); if (!player) { player = gameManager.Players.GetPlayerByName(cheer.UserName); } if (player) { var subscriberMultiplier = player.IsSubscriber ? 2f : 1f; var observeTime = Mathf.Min(MaxObserveTime, (cheer.Bits / (float)BitsForMultiplier) * MaxObserveTime * subscriberMultiplier); if (observeTime >= 1) { gameManager.Camera.ObservePlayer(player, observeTime); } player.Cheer(); player.AddBitCheer(cheer.Bits); } else { gameManager.RavenNest.Stream.SendPlayerLoyaltyData(cheer); } AddCheer(cheer, CurrentBoost.Active); }
private void AddCheer(TwitchCheer data) { CurrentBoost.LastCheerer = string.IsNullOrEmpty(data.UserName) ? CurrentBoost.LastCheerer : data.UserName; CurrentBoost.LastCheerAmount = data.Bits; CurrentBoost.CheerPot += data.Bits; var totalMultipliersAdded = 0; while (CurrentBoost.CheerPot >= BitsForMultiplier) { var multiplier = UnityEngine.Random.value <= 0.10 ? 10 : 1; totalMultipliersAdded += multiplier; CurrentBoost.Elapsed = 0f; CurrentBoost.Active = true; CurrentBoost.CheerPot -= BitsForMultiplier; CurrentBoost.Multiplier = Mathf.Min(CurrentBoost.Multiplier + multiplier, MaxMultiplier); } if (totalMultipliersAdded > 0) { gameManager.Server?.Client?.SendCommand(data.UserName, "message", $"You have increased the multiplier by x{totalMultipliersAdded} with your {data.Bits} cheer!! PogChamp We only need {BitsForMultiplier - CurrentBoost.CheerPot} more bits for another multiplier! <3"); } else { gameManager.Server?.Client?.SendCommand(data.UserName, "message", $"We only need {BitsForMultiplier - CurrentBoost.CheerPot} more bits for another multiplier! PogChamp"); } SaveState(); }
private void AddCheer(TwitchCheer data, bool increaseMultiplier = true) { if (increaseMultiplier) { CurrentBoost.LastCheerer = string.IsNullOrEmpty(data.UserName) ? CurrentBoost.LastCheerer : data.UserName; CurrentBoost.LastCheerAmount = data.Bits; CurrentBoost.CheerPot += data.Bits; var totalMultipliersAdded = 0; var maxed = false; var cheerPot = CurrentBoost.CheerPot; while (cheerPot >= BitsForMultiplier) { cheerPot -= BitsForMultiplier; totalMultipliersAdded += BitsMultiplierAdd; CurrentBoost.BoostTime = CurrentBoost.BoostTime.Add(TimeSpan.FromMinutes(BitsMultiplierAdd)); if (CurrentBoost.BoostTime > MaxBoostTime) { maxed = true; CurrentBoost.BoostTime = MaxBoostTime; } } CurrentBoost.CheerPot = cheerPot; if (maxed) { //gameManager.Server.Send(data.UserName, "The multiplier timer cannot be boosted any further. But thank you for the bitties <3"); } else if (totalMultipliersAdded > 0) { gameManager.RavenBot.Send(data.UserName, Localization.MSG_BIT_CHEER_INCREASE, (int)CurrentBoost.BoostTime.TotalMinutes, data.Bits, BitsForMultiplier - CurrentBoost.CheerPot); } else { gameManager.RavenBot.Send(data.UserName, Localization.MSG_BIT_CHEER_LEFT, BitsForMultiplier - CurrentBoost.CheerPot); } } SaveState(); }
public void SendPlayerLoyaltyData(TwitchCheer d) { if (client.Desynchronized) { return; } var data = new UserLoyaltyUpdate { IsModerator = d.IsModerator, IsSubscriber = d.IsSubscriber, NewCheeredBits = d.Bits, UserName = d.UserName, IsVip = d.IsVip, NewGiftedSubs = 0, UserId = d.UserId }; connection.SendNoAwait("update_user_loyalty", data); }
public void OnCheer(TwitchCheer cheer) { var player = gameManager.Players.GetPlayerByUserId(cheer.UserId); if (player) { var subscriberMultiplier = player.IsSubscriber ? 2f : 1f; var observeTime = Mathf.Min(MaxObserveTime, (cheer.Bits / (float)BitsForMultiplier) * MaxObserveTime * subscriberMultiplier); if (observeTime >= 1) { gameManager.Camera.ObservePlayer(player, observeTime); } player.Cheer(); } AddCheer(cheer); }
private async void OnUserCheer(TwitchCheer obj) => await SendAsync("twitch_cheer", obj);