Exemplo n.º 1
0
        public ErraticStrategy(IAIEntity controlled, int shootCooldown) : base(controlled, shootCooldown)
        {
            turnCooldown = 5000;

            cdHandler = new CooldownHandler(Util.Rand(turnCooldown));
            cdHandler.StartCooldown();
        }
Exemplo n.º 2
0
        public Core()
        {
            Instance = this;
            Info     = new PluginInfo("BPEssentials", "bpe")
            {
                Description = "Basic commands for powerful moderation.",
                Website     = "https://bpessentials.github.io/Docs/"
            };
            CooldownHandler = new CooldownHandler();

            WarpHandler = new WarpHandler();

            KitHandler = new KitHandler();

            OnReloadRequestAsync();
            SetCustomData();

            EntityHandler = new EntityHandler();
            EntityHandler.LoadEntities();

            ModuleHandler = new ModuleHandler();
            ModuleHandler.Initialize();

            EventsHandler.Add("bpe:reload", new Action(OnReloadRequestAsync));
            EventsHandler.Add("bpe:version", new Action <string>(OnVersionRequest));
            new Commands.Save().StartSaveTimer();
            Logger.LogInfo($"BP Essentials {(IsDevelopmentBuild() ? "[DEVELOPMENT-BUILD] " : "")}v{Version} loaded in successfully!");
        }
Exemplo n.º 3
0
        public Core()
        {
            Instance = this;
            Info     = new PluginInfo("BPEssentials", "BPE", new List <PluginAuthor> {
                new PluginAuthor("UserR00T"), new PluginAuthor("PLASMA_chicken")
            })
            {
                Description = "Basic commands for powerful moderation.",
                Git         = "https://github.com/UserR00T/BP-Essentials/",
                Website     = "https://userr00t.github.io/BP-Essentials/"
            };

            OnReloadRequestAsync();
            SetCutsomData();

            CooldownHandler = new CooldownHandler();

            WarpHandler = new WarpHandler();
            WarpHandler.LoadAll();

            KitHandler = new KitHandler();
            KitHandler.LoadAll();

            EntityHandler = new EntityHandler();
            EntityHandler.LoadEntities();

            EventsHandler.Add("bpe:reload", new Action(OnReloadRequestAsync));
            EventsHandler.Add("bpe:version", new Action <string>(OnVersionRequest));
            Logger.LogInfo($"BP Essentials {(IsDevelopmentBuild() ? "[DEVELOPMENT-BUILD] " : "")}v{Version} loaded in successfully!");
        }
Exemplo n.º 4
0
 private void Start()
 {
     cooldownHandler = CooldownHandler.instance;
     image           = GetComponent <Image>();
     text            = GetComponentInChildren <Text>();
     cooldown        = initialCooldown;
     text.text       = cooldown.ToString();
 }
Exemplo n.º 5
0
 public NumberPopup(string id, int points, Point2D refPos, List <Color> colors, float vel,
                    Vector dir, float lifetime, BoundaryStrategy boundaryStrat, Team team, bool optimiseMe
                    ) : base(id, null, refPos, SwinGame.PointAt(0, 0), null, colors, 0, dir.Multiply(vel), dir, boundaryStrat, team, optimiseMe)
 {
     text      = $"+{points}";
     cdHandler = new CooldownHandler(lifetime * 1000);
     cdHandler.StartCooldown();
 }
Exemplo n.º 6
0
        /// <summary>
        /// initialise an ammo object
        /// </summary>
        /// <param name="pos">spawning position</param>
        /// <param name="dir">spawning direction</param>
        /// <param name="vel">spawning velocity</param>
        public virtual void Init(Point2D pos, Vector dir, Vector vel)
        {
            //set position and direction of ammo to that of the passed in parent entity
            TeleportTo(pos);
            theta = Dir.AngleTo(dir) * Math.PI / 180;

            MaxVel   += vel.Magnitude;
            cdHandler = new CooldownHandler(lifetime * 1000);
            cdHandler.StartCooldown();
        }
Exemplo n.º 7
0
        public AISpawner(Difficulty diff, Rectangle playArea, ShipFactory shipFactory, IHandlesEntities entHandler)
        {
            entityHandler = entHandler;
            shipFac       = shipFactory;
            difficulty    = diff;

            this.playArea = playArea;

            cdHandler = new CooldownHandler(diff.SpawnTimer * 1000);
            cdHandler.StartCooldown();
        }
Exemplo n.º 8
0
        public Debris(string id, string filePath, Point2D refPos, Point2D offsetPos, Shape shape,
                      List <Color> colors, BoundaryStrategy boundaryStrat, int health, Vector vel, Vector dir,
                      float friction, float turnRate, float lifetime, Team team
                      ) : base(id, filePath, refPos, offsetPos, shape, colors, health, vel, dir, boundaryStrat, team)
        {
            this.friction = friction;
            this.turnRate = turnRate;

            cdHandler = new CooldownHandler(lifetime * 1000);
            cdHandler.StartCooldown();
        }
Exemplo n.º 9
0
 public Emitter(
     string id, string filePath, Point2D refPos, Point2D offsetPos,
     Vector vel, Vector dir, BoundaryStrategy boundaryStrat, Team team,
     float cooldownRate, List <Component> children, IHandlesEntities entHandler
     ) : base(id, filePath, refPos, offsetPos, null, null, 1, vel, dir, boundaryStrat, team)
 {
     childComponents   = children;
     this.cooldownRate = cooldownRate;
     cdHandler         = new CooldownHandler(1000 / cooldownRate);
     this.entHandler   = entHandler;
 }
Exemplo n.º 10
0
        public EmittingAmmo(string id, string filePath, Point2D refPos, Point2D offsetPos, Shape shape, List <Color> colors,
                            int mass, int damage, float lifetime, float vel, float maxVel, float primingDelay, float turnRate,
                            List <Component> emitters, BoundaryStrategy boundaryStrat, IHandlesEntities entHandler, Team team
                            ) : base(id, filePath, refPos, offsetPos, shape, colors, mass, damage, lifetime, vel, maxVel, turnRate, boundaryStrat, team)
        {
            primingTimer = new CooldownHandler(primingDelay);
            primingTimer.StartCooldown();
            this.emitters = emitters;

            entityHandler = entHandler;
        }
Exemplo n.º 11
0
        public AIStrategy(IAIEntity controlled, int shootCd = 0)
        {
            this.controlled = controlled;
            targetDir       = Util.RandomUnitVector();

            commandHistory = new CommandHistory(200);
            CreateCommands();

            if (shootCd > 0)
            {
                shootCooldown = new CooldownHandler(shootCd * 1000);
            }
        }
Exemplo n.º 12
0
 public Tool(
     string id, string filePath, Point2D refPos, Point2D offsetPos, Shape shape,
     List <Color> colors, int health, Vector vel, Vector dir, float cooldown, BoundaryStrategy boundaryStrat,
     Team team, List <Component> children, int mass, IHandlesEntities entHandler
     ) : base(id, filePath, refPos, offsetPos, shape, colors, health, vel, dir, boundaryStrat, team)
 {
     this.cooldown   = cooldown;
     this.mass       = mass <= 0 ? 1 : mass;
     childComponents = children;
     this.entHandler = entHandler;
     cdHandler       = new CooldownHandler(cooldown * 1000);
     cdHandler.StartCooldown();
 }
Exemplo n.º 13
0
 private void Start()
 {
     destroyTime  = 1.2f;
     cooldownW    = false;
     cooldownQ    = false;
     cooldownE    = false;
     cooldownR    = false;
     cooldownBoom = 3.5f;
     barQ         = GameObject.Find("BarQ");
     cdQ          = barQ.GetComponent <CooldownHandler>();
     barW         = GameObject.Find("BarW");
     cdW          = barW.GetComponent <CooldownHandler>();
     barE         = GameObject.Find("BarE");
     cdE          = barE.GetComponent <CooldownHandler>();
 }
Exemplo n.º 14
0
        public async Task Collect()
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            using (var db = new CurrencyContext())
            {
                var account   = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                var cooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();
                if (account != null && cooldowns != null)
                {
                    if (account.Inventory.ContainsKey("bitcoin_miner"))
                    {
                        var collect         = cooldowns.Collect;
                        var cooldownHandler = new CooldownHandler();
                        var isCooledDown    = cooldownHandler.IsCooledDown(collect, "h", _collectCooldown);
                        if (isCooledDown)
                        {
                            var collected = _collectAmount * account.Inventory["bitcoin_miner"];
                            account.AddBalance(collected);
                            cooldowns.Collect = DateTime.Now;

                            db.Update(account);
                            db.Update(cooldowns);
                            await db.SaveChangesAsync();
                            await ReplyAsync($"You've collected {collected} Kredits!");
                        }
                        else
                        {
                            var cooldown = cooldownHandler.GetDifference(DateTime.Now, collect.AddHours(_collectCooldown));
                            await ReplyAsync($"You can only collect once every {_collectCooldown} hours!\n" +
                                             $"You still have to wait for {cooldown}!");
                        }
                    }
                    else
                    {
                        await ReplyAsync("You dont generate any passive income yet! Buy a device from the store does!");
                    }
                }
                else
                {
                    await ReplyAsync("You dont have an account yet, type $acc to create one!");
                }
            }
        }
Exemplo n.º 15
0
        /// <summary>
        /// Initialise the particle
        /// </summary>
        /// <param name="pos">spawning position</param>
        /// <param name="dir">spawning direction</param>
        public void Init(Point2D pos, Vector dir)
        {
            thrustForce = Util.RandomInRange(velRange);
            turnRate    = Util.RandomInRange(turnRateRange);
            lifetime    = Util.RandomInRange(lifetimeRange);
            cdHandler   = new CooldownHandler(lifetime * 1000);
            cdHandler.StartCooldown();

            TeleportTo(pos);
            double theta = Dir.AngleTo(dir) * Math.PI / 180;

            this.theta = theta;

            Vector deltaV = dir.Multiply(-thrustForce);

            Vel = (Vel.AddVector(deltaV)).LimitToMagnitude(thrustForce);
        }
Exemplo n.º 16
0
    void Start()
    {
        audioSource          = GetComponent <AudioSource>();
        cooldowns            = new float[3];
        player               = transform.parent.GetComponent <Player>();
        cooldownHandler      = player.cooldownHandler;
        bulletsTransform     = GameObject.Find("bullets").transform;
        ball                 = GameObject.Find("ball");
        doesAHumanPlay       = player.GetDoesAHumanPlay();
        canShootASuperBullet = false;
        buttonsValues        = player.GetButtonsValues();

        if (!doesAHumanPlay)
        {
            for (int i = 0; i < delays.Length; i++)
            {
                delays[i] *= 1.2f;
            }
        }
    }
Exemplo n.º 17
0
    private void Start()
    {
        _targetList = new List<PlayerObject>();
        _gameManager = _gameManagementObject.GetComponent<GameManager>();
        _myself =
            _currentTarget = _gameManager.GetPlayerObject(_gameManagementObject.GetComponent<LocalPlayer>()._networkPlayer);
        _targetRingInstance = Instantiate(_targetRingPrefab) as GameObject;

        _cooldownHandle = new CooldownHandler();
    }
Exemplo n.º 18
0
        public async Task Rob(IUser user)
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            if (user.Id != Context.Message.Author.Id)
            {
                using (var db = new CurrencyContext())
                {
                    var account         = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                    var cooldowns       = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();
                    var targetAccount   = db.UserAccounts.AsQueryable().Where(u => u.Id == user.Id).FirstOrDefault();
                    var targetCooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == user.Id).FirstOrDefault();
                    if (account != null && cooldowns != null)
                    {
                        if (account.Inventory.ContainsKey("beat_stick"))
                        {
                            if (targetAccount != null && targetCooldowns != null)
                            {
                                var rob                = cooldowns.Rob;
                                var robbed             = targetCooldowns.Robbed;
                                var cooldownHandler    = new CooldownHandler();
                                var isCooledDown       = cooldownHandler.IsCooledDown(rob, "m", _robCooldown);
                                var isCooledDownTarget = cooldownHandler.IsCooledDown(robbed, "m", _robCooldown);
                                if (isCooledDown)
                                {
                                    if (isCooledDownTarget)
                                    {
                                        var rng       = new Random();
                                        var robAmount = rng.Next(_minRob, _maxRob);

                                        if (rng.Next(0, 3) > 0)
                                        {
                                            robAmount = (targetAccount.Balance >= robAmount) ? robAmount : targetAccount.Balance;
                                            account.AddBalance(robAmount);
                                            targetAccount.SubtractBalance(robAmount);
                                            await ReplyAsync($"You stole: {robAmount} Kredits!");
                                        }
                                        else
                                        {
                                            robAmount = (account.Balance >= robAmount) ? robAmount : account.Balance;
                                            account.SubtractBalance(robAmount);
                                            targetAccount.AddBalance(robAmount);
                                            await ReplyAsync($"You were beaten up and lost: {robAmount} Kredits!");
                                        }
                                        cooldowns.Rob          = DateTime.Now;
                                        targetCooldowns.Robbed = DateTime.Now;

                                        db.Update(account);
                                        db.Update(cooldowns);
                                        db.Update(targetAccount);
                                        db.Update(targetCooldowns);
                                        await db.SaveChangesAsync();
                                    }
                                    else
                                    {
                                        var cooldown = cooldownHandler.GetDifference(DateTime.Now, robbed.AddMinutes(_robCooldown));
                                        await ReplyAsync($"Your target can only be robbed once every {_robCooldown} minutes! \n" +
                                                         $"You still have to wait for: {cooldown}!");
                                    }
                                }
                                else
                                {
                                    var cooldown = cooldownHandler.GetDifference(DateTime.Now, rob.AddMinutes(_robCooldown));
                                    await ReplyAsync($"You can only rob once every {_robCooldown} minutes! \n" +
                                                     $"You still have to wait for: {cooldown}!");
                                }
                            }
                            else
                            {
                                await ReplyAsync("Your target does not have an account yet!");
                            }
                        }
                        else
                        {
                            await ReplyAsync("You need a beat stick to rob people with!");
                        }
                    }
                    else
                    {
                        await ReplyAsync("You dont have an account yet, type $acc to create one!");
                    }
                }
            }
            else
            {
                await ReplyAsync("You can't rob yourself you idiota!");
            }
        }
Exemplo n.º 19
0
        public async Task StartTrivia()
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            if (!Running)
            {
                using (var db = new CurrencyContext())
                {
                    var account   = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                    var cooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();

                    if (account != null && cooldowns != null)
                    {
                        var lastTrivia      = cooldowns.Trivia;
                        var cooldownHandler = new CooldownHandler();

                        if (account.Inventory.ContainsKey("trivia_license"))
                        {
                            var isCooledDown = cooldownHandler.IsCooledDown(lastTrivia, "m", _triviaCooldown);

                            if (isCooledDown)
                            {
                                Running = true;

                                cooldowns.Trivia = DateTime.Now;
                                db.Update(cooldowns);
                                await db.SaveChangesAsync();

                                var response = await Client.GetAsync(TriviaUrl);

                                var responseString = await response.Content.ReadAsStringAsync();

                                var responseJson = JObject.Parse(responseString);
                                var score        = new Dictionary <ulong, int>();
                                var stopwatch    = new Stopwatch();

                                await ReplyAsync("A trivia session is starting in 30 seconds...");

                                await Task.Delay(10000);
                                await ReplyAsync("A trivia session is starting in 20 seconds...");

                                await Task.Delay(10000);
                                await ReplyAsync("A trivia session is starting in 10 seconds...");

                                await Task.Delay(7000);
                                await ReplyAsync("A trivia session is starting in 3 seconds...");

                                await Task.Delay(1000);
                                await ReplyAsync("A trivia session is starting in 2 seconds...");

                                await Task.Delay(1000);
                                await ReplyAsync("A trivia session is starting in 1 seconds...");

                                await Task.Delay(1000);
                                await ReplyAsync("Trivia is starting!");

                                foreach (var result in responseJson["results"])
                                {
                                    await Task.Delay(2000);
                                    await ReplyAsync(HttpUtility.HtmlDecode(result["question"].ToString()));

                                    this.result = result;

                                    await Task.Delay(2000);

                                    var answers = new List <string>();
                                    answers.Add(result["correct_answer"].ToString());
                                    foreach (var incorrectAnswer in result["incorrect_answers"])
                                    {
                                        answers.Add((string)incorrectAnswer);
                                    }

                                    answers = answers.OrderBy(a => Guid.NewGuid()).ToList();
                                    var answersMessage = string.Join(", ", answers.ToArray());
                                    await ReplyAsync("Answers: " + HttpUtility.HtmlDecode(answersMessage));

                                    Context.Client.MessageReceived += tryAnswer;

                                    stopwatch.Start();

                                    var timeout = false;

                                    while (winnerId == 0)
                                    {
                                        if (stopwatch.ElapsedMilliseconds > 15000)
                                        {
                                            timeout = true;
                                            break;
                                        }
                                    }

                                    stopwatch.Stop();
                                    stopwatch.Reset();

                                    Context.Client.MessageReceived -= tryAnswer;

                                    if (timeout)
                                    {
                                        var correctAnswer = HttpUtility.HtmlDecode((string)result["correct_answer"]);
                                        await ReplyAsync($"The answer was: {correctAnswer}!");
                                        await ReplyAsync("No answer was found, skipping to next question!");

                                        continue;
                                    }

                                    await ReplyAsync($"<@{winnerId}> has found the correct answer!");

                                    if (score.ContainsKey(winnerId))
                                    {
                                        score[winnerId]++;
                                    }
                                    else
                                    {
                                        score.Add(winnerId, 1);
                                    }

                                    winnerId = 0;

                                    if (score.ContainsValue(4) || result == responseJson["results"].Last)
                                    {
                                        break;
                                    }
                                }

                                var sortedScores = score.OrderBy(s => s.Value).ToList();

                                var winners = "";

                                foreach (var points in sortedScores)
                                {
                                    winners += $"<@{points.Key}> : {points.Value} points\n";
                                }

                                var embed = new EmbedBuilder();
                                embed.WithColor(new Color(0, 255, 0));
                                embed.WithTitle("Trivia score");
                                embed.WithDescription(winners);
                                await ReplyAsync("", false, embed.Build());

                                Running = false;
                            }
                            else
                            {
                                var cooldown = cooldownHandler.GetDifference(DateTime.Now, lastTrivia.AddMinutes(_triviaCooldown));
                                await ReplyAsync($"You can only start a trivia session once every {_triviaCooldown} minutes! \n" +
                                                 $"You still have to wait for: {cooldown}!");
                            }
                        }
                        else
                        {
                            await ReplyAsync("You can't start a trivia session without a license! Check the $shop.");
                        }
                    }
                    else
                    {
                        await ReplyAsync("You dont have an account yet, type $acc to create one!");
                    }
                }
            }
            else
            {
                await ReplyAsync("A trivia session is already running!");
            }
        }
Exemplo n.º 20
0
 // Start is called before the first frame update
 void Awake()
 {
     instance  = this;
     cooldowns = new Dictionary <int, float>();
 }
Exemplo n.º 21
0
        public async Task Work()
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            using (var db = new CurrencyContext())
            {
                var account   = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                var cooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();
                if (account != null && cooldowns != null)
                {
                    var pay = _workAmount;
                    if (account.Inventory.ContainsKey("working_tools"))
                    {
                        pay += (25 * account.Inventory["working_tools"]);
                    }
                    if (account.Inventory.ContainsKey("doctors_license"))
                    {
                        pay *= (1 + account.Inventory["doctors_license"]);
                    }

                    var work            = cooldowns.Work;
                    var cooldownHandler = new CooldownHandler();
                    var isCooledDown    = cooldownHandler.IsCooledDown(work, "m", _workCooldown);
                    if (isCooledDown)
                    {
                        var rng    = new Random();
                        var randNr = rng.Next(0, 3);

                        if (randNr == 0 && account.Inventory.ContainsKey("vaccine"))
                        {
                            randNr = 1;
                        }

                        if (randNr > 0)
                        {
                            account.AddBalance(pay);
                            cooldowns.Work = DateTime.Now;

                            db.Update(account);
                            db.Update(cooldowns);
                            await db.SaveChangesAsync();
                            await ReplyAsync($"You've earned {pay} Kredits!");
                        }
                        else
                        {
                            cooldowns.Work = DateTime.Now;

                            db.Update(cooldowns);
                            await db.SaveChangesAsync();
                            await ReplyAsync("You got covid and could not show up to work. Unlucky, I guess.");
                        }
                    }
                    else
                    {
                        var cooldown = cooldownHandler.GetDifference(DateTime.Now, work.AddMinutes(_workCooldown));
                        await ReplyAsync($"You can only work once every {_workCooldown} minutes!\n" +
                                         $"You still have to wait for {cooldown}!");
                    }
                }
                else
                {
                    await ReplyAsync("You dont have an account yet, type $acc to create one!");
                }
            }
        }
Exemplo n.º 22
0
        public async Task SpinRoulette(int bet)
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            using (var db = new CurrencyContext())
            {
                var account   = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                var cooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();
                if (bet >= _minWager && bet <= _maxWager)
                {
                    if (account != null && cooldowns != null)
                    {
                        if (bet <= account.Balance)
                        {
                            var lastRoulette    = cooldowns.Roulette;
                            var cooldownHandler = new CooldownHandler();
                            var isCooledDown    = cooldownHandler.IsCooledDown(lastRoulette, "s", _rouletteCooldown);
                            if (isCooledDown)
                            {
                                var rng = new Random();
                                if (rng.Next(0, 2) > 0)
                                {
                                    account.AddBalance(bet);
                                    await ReplyAsync($"You won: {bet} Kredits!");
                                }
                                else
                                {
                                    account.SubtractBalance(bet);
                                    await ReplyAsync($"You lost: {bet} Kredits!");
                                }
                                cooldowns.Roulette = DateTime.Now;
                                db.Update(account);
                                db.Update(cooldowns);
                                await db.SaveChangesAsync();
                            }
                            else
                            {
                                var cooldown = cooldownHandler.GetDifference(DateTime.Now, lastRoulette.AddSeconds(_rouletteCooldown));
                                await ReplyAsync($"You can only roulette once every {_rouletteCooldown} seconds! \n" +
                                                 $"You still have to wait for: {cooldown}!");
                            }
                        }
                        else
                        {
                            await ReplyAsync("You can't afford that bet!");
                        }
                    }
                    else
                    {
                        await ReplyAsync("You dont have an account yet, type $acc to create one!");
                    }
                }
                else
                {
                    await ReplyAsync($"Wager between {_minWager}-{_maxWager} Kredits!");
                }
            }
        }