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);
    }
예제 #2
0
    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);
        }
예제 #5
0
    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);
    }
예제 #6
0
 private async void OnUserCheer(TwitchCheer obj) => await SendAsync("twitch_cheer", obj);