public override void OpenBossBag(Player player)
        {
            player.QuickSpawnItem(ItemType <SoulofContamination>(), Main.rand.Next(20, 25)); // 污染之魂
            player.TryGettingDevArmor();                                                     // 开发者盔甲
            player.QuickSpawnItem(ItemType <BottleofStorm>());                               // 专家饰品

            var dropChooser = new WeightedRandom <int>();

            dropChooser.Add(ItemType <ContaminatedLongbow>());
            dropChooser.Add(ItemType <ContaminatedCurrent>());
            dropChooser.Add(ItemType <WaterElementalStaff>());
            int choice = dropChooser;

            player.QuickSpawnItem(choice);
            dropChooser.Clear();

            if (Main.rand.NextFloat() < .666) // 2/3掉落
            {
                dropChooser.Add(ItemType <HelmetofContamination>());
                dropChooser.Add(ItemType <HeadgearofContamination>());
                dropChooser.Add(ItemType <CrownofContamination>());
                dropChooser.Add(ItemType <MaskofContamination>());
                choice = dropChooser;
                player.QuickSpawnItem(choice);
            }
            if (Main.rand.NextFloat() < .666) // 2/3掉落
            {
                player.QuickSpawnItem(ItemType <BreastplateofContamination>());
            }
            if (Main.rand.NextFloat() < .666) // 2/3掉落
            {
                player.QuickSpawnItem(ItemType <GreavesofContamination>());
            }
        }
Beispiel #2
0
 void prepare()
 {
     mGroupsHaveDepth = false;
     m_RepeatingGroups.MakePositive();
     m_RepeatingGroups.Clamp(0, GroupCount - 1);
     // Groups
     if (mGroupBag == null)
     {
         mGroupBag = new WeightedRandom <int>();
     }
     else
     {
         mGroupBag.Clear();
     }
     if (RepeatingOrder == CurvyRepeatingOrderEnum.Random)
     {
         for (int g = FirstRepeating; g <= LastRepeating; g++)
         {
             mGroupBag.Add(g, (int)(Groups[g].Weight * 10));
         }
     }
     // Prepare Groups & ItemBags
     for (int g = 0; g < Groups.Count; g++)
     {
         Groups[g].PrepareINTERNAL();
         mGroupsHaveDepth = mGroupsHaveDepth || (getMinGroupDepth(Groups[g]) > 0);
     }
 }
Beispiel #3
0
        public override void OpenBossBag(Player player)
        {
            player.TryGettingDevArmor();
            if (Main.rand.NextBool(7))
            {
                // Mask
                //player.QuickSpawnItem(mod.ItemType(" "));
            }

            int[] drops =
            {
                mod.ItemType("GoldenGun"),
                mod.ItemType("SunPowerSeed"),
                mod.ItemType("BeskarBar")
            };
            var dropChooser = new WeightedRandom <int>();

            for (int i = 0; i < drops.Length; ++i)
            {
                dropChooser.Add(drops[i], 1);
            }
            int choice = dropChooser;

            if (choice == mod.ItemType("BeskarBar"))
            {
                player.QuickSpawnItem(choice, Main.rand.Next(5, 10));
            }
            else
            {
                player.QuickSpawnItem(choice);
            }
            dropChooser.Clear();
            for (int i = 0; i < drops.Length; ++i)
            {
                if (drops[i] != choice)
                {
                    dropChooser.Add(drops[i], 1);
                }
            }
            int choice2 = dropChooser;

            player.QuickSpawnItem(choice2);

            // Guaranteed drops
            player.QuickSpawnItem(ItemID.GoldCoin, Main.rand.Next(30, 50));
            player.QuickSpawnItem(mod.ItemType("BeskarOre"), Main.rand.Next(15, 20));
            // Expert
            //player.QuickSpawnItem(mod.ItemType("SunPowerSeed"));
            //if (player.GetModPlayer<EGGPlayer>().serums < EGGPlayer.maxSerums) {
            player.QuickSpawnItem(mod.ItemType("SerumResearch"));
            //}
        }
Beispiel #4
0
        /*public override void FindFrame(int frameHeight)
         * {
         *  npc.frameCounter += 1;
         *  npc.frameCounter %= 20;
         *  int frame = (int)(npc.frameCounter / 2.0);
         *  if(frame >= Main.npcFrameCount[npc.type])
         *  {
         *      frame = 0;
         *  }
         *  npc.frame.Y = frame * frameHeight;
         * }*/

        public override void NPCLoot()
        {
            if (Main.expertMode)
            {
                npc.DropBossBags();
            }
            else
            {
                if (Main.rand.NextBool(7))
                {
                    // Mask
                    //player.QuickSpawnItem(mod.ItemType(" "));
                }

                int[] drops =
                {
                    mod.ItemType("GoldenGun"),
                    mod.ItemType("SunPowerSeed"),
                    mod.ItemType("BeskarBar")
                };
                var dropChooser = new WeightedRandom <int>();
                for (int i = 0; i < drops.Length; ++i)
                {
                    dropChooser.Add(drops[i], 1);
                }
                int choice = dropChooser;
                player.QuickSpawnItem(choice);
                dropChooser.Clear();
                for (int i = 0; i < drops.Length; ++i)
                {
                    if (drops[i] != choice)
                    {
                        dropChooser.Add(drops[i], 1);
                    }
                }
                int choice2 = dropChooser;
                player.QuickSpawnItem(choice2);
                player.QuickSpawnItem(ItemID.GoldCoin, Main.rand.Next(15, 20));
                player.QuickSpawnItem(mod.ItemType("BeskarOre"), Main.rand.Next(15, 20));
            }
            SpawnOre();
            if (!EGGWorld.downedSunGod)
            {
                EGGWorld.downedSunGod = true;
                if (Main.netMode == NetmodeID.Server)
                {
                    NetMessage.SendData(MessageID.WorldData); // Immediately inform clients of new world state.
                }
            }
        }
Beispiel #5
0
        public static void BuildWeightedBuffsFor(Item item)
        {
            WeightedBuffs.Clear();
            foreach (string name in VitriumBuffs.Keys)
            {
                VitriBuff buff = TranslateVitri(name);

                if (buff.IApplicableTo(item))
                {
                    WeightedBuffs.Add(buff, buff.Weight);
                    WeightedBuffs.Add(null, buff.Weight * 0.25d);
                }
            }
        }
Beispiel #6
0
        protected override void OnStart()
        {
            if (Main.netMode == NetmodeID.MultiplayerClient)
            {
                return;
            }

            rand.Clear();

            Part.Clear();

            Started = true;

            TwitchChat.Instance.Irc.ChannelMessage += Handle;

            TwitchChat.Send(StartString + " Quick write \"boss\" in chat!");
            TwitchChat.Post(StartString, Color.White);
        }
Beispiel #7
0
        public override void NPCLoot()
        {
            if (Main.expertMode)
            {
                npc.DropBossBags();
            }
            else
            {
                Item.NewItem(npc.getRect(), ItemType <SoulofContamination>(), Main.rand.Next(17, 22));

                var dropChooser = new WeightedRandom <int>();
                dropChooser.Add(ItemType <ContaminatedLongbow>());
                dropChooser.Add(ItemType <ContaminatedCurrent>());
                dropChooser.Add(ItemType <WaterElementalStaff>());
                int choice = dropChooser;
                Item.NewItem(npc.getRect(), choice);
                dropChooser.Clear();

                if (Main.rand.NextFloat() < .666) // 2/3掉落
                {
                    dropChooser.Add(ItemType <HelmetofContamination>());
                    dropChooser.Add(ItemType <HeadgearofContamination>());
                    dropChooser.Add(ItemType <CrownofContamination>());
                    dropChooser.Add(ItemType <MaskofContamination>());
                    choice = dropChooser;
                    Item.NewItem(npc.getRect(), choice);
                }
                if (Main.rand.NextFloat() < .666) // 2/3掉落
                {
                    Item.NewItem(npc.getRect(), ItemType <BreastplateofContamination>());
                }
                if (Main.rand.NextFloat() < .666) // 2/3掉落
                {
                    Item.NewItem(npc.getRect(), ItemType <GreavesofContamination>());
                }
            }
        }
Beispiel #8
0
 internal void PrepareINTERNAL()
 {
     m_RepeatingItems.MakePositive();
     m_RepeatingItems.Clamp(0, ItemCount - 1);
     if (mItemBag == null)
     {
         mItemBag = new WeightedRandom <int>();
     }
     else
     {
         mItemBag.Clear();
     }
     if (Items.Count == 0)
     {
         return;
     }
     if (RepeatingOrder == CurvyRepeatingOrderEnum.Random)
     {
         for (int i = FirstRepeating; i <= LastRepeating; i++)
         {
             mItemBag.Add(i, (int)(Items[i].Weight * 10));
         }
     }
 }
    {                                       //I'd like to burn this in a fire someday.
        public override bool PreOpenVanillaBag(string context, Player player, int arg)
        {
            switch (context)
            {
            case "present":
            {
                PresentOpenerConfig config = new PresentOpenerConfig();
                if (!config.presentmenu.DisablePresentConfig)
                {
                    WeightedRandom <int> presentrandom = new WeightedRandom <int>();                                   //This is a form of randomness made by Terraria, useful for avoiding long If/Else chains like I have previously done.

                    if (Main.hardMode)
                    {
                        presentrandom.Add(ItemID.SnowGlobe, 1f / 5f * config.presentmenu.SnowGlobeScale);                                         //And no, I can't just use a switch statement here, as much as I had liked to. Since these scale based on the configs, the values aren't static.
                    }
                    presentrandom.Add(ItemID.Coal, 1f / 30f * config.presentmenu.CoalScale);
                    presentrandom.Add(ItemID.DogWhistle, 1f / 419f * config.presentmenu.WhistleScale);
                    presentrandom.Add(ItemID.RedRyder, 1f / 156f * config.presentmenu.PresentRareItemScale);
                    presentrandom.Add(ItemID.CandyCaneSword, 1f / 156f * config.presentmenu.PresentRareItemScale);
                    presentrandom.Add(ItemID.CnadyCanePickaxe, 1f / 159f * config.presentmenu.PresentRareItemScale);
                    presentrandom.Add(ItemID.CandyCaneHook, 1f / 159f * config.presentmenu.PresentRareItemScale);
                    presentrandom.Add(ItemID.FruitcakeChakram, 1f / 160f * config.presentmenu.PresentRareItemScale);
                    presentrandom.Add(ItemID.HandWarmer, 1f / 161f * config.presentmenu.PresentRareItemScale);
                    presentrandom.Add(ItemID.Toolbox, 1f / 323f * config.presentmenu.ToolboxScale);
                    presentrandom.Add(ItemID.ReindeerAntlers, 1f / 43f * config.presentmenu.AntlersScale);
                    presentrandom.Add(ItemID.Holly, 1f / 11f * config.presentmenu.HollyScale);
                    presentrandom.Add(ItemID.MrsClauseHat, 1f / 92f * config.presentmenu.VanityScale);
                    presentrandom.Add(ItemID.ParkaHood, 1f / 92f * config.presentmenu.VanityScale);
                    presentrandom.Add(ItemID.TreeMask, 1f / 92f * config.presentmenu.VanityScale);
                    presentrandom.Add(ItemID.SnowHat, 1f / 92f * config.presentmenu.VanityScale);
                    presentrandom.Add(ItemID.UglySweater, 1f / 92f * config.presentmenu.VanityScale);
                    presentrandom.Add(ItemID.ChristmasPudding, 1f / 28f * config.presentmenu.FoodScale);
                    presentrandom.Add(ItemID.SugarCookie, 1f / 28f * config.presentmenu.FoodScale);
                    presentrandom.Add(ItemID.GingerbreadCookie, 1f / 28f * config.presentmenu.FoodScale);
                    presentrandom.Add(ItemID.Eggnog, 1f / 12f * config.presentmenu.EggnogScale);
                    presentrandom.Add(ItemID.StarAnise, 1f / 16f * config.presentmenu.StarAniseScale);
                    presentrandom.Add(ItemID.PineTreeBlock, 1f / 6f * config.presentmenu.BlockScale);
                    presentrandom.Add(ItemID.CandyCaneBlock, 1f / 6f * config.presentmenu.BlockScale);
                    presentrandom.Add(ItemID.GreenCandyCaneBlock, 1f / 6f * config.presentmenu.BlockScale);
                    Mod ThoriumMod = ModLoader.GetMod("ThoriumMod");
                    if (ThoriumMod != null && config.moddedmenu.DisableModdedConfigs == false)
                    {
                        presentrandom.Add(ThoriumMod.ItemType("Mistletoe"), 1f / 10f * config.moddedmenu.ThoriumMistleScale);
                    }

                    if (presentrandom != null)
                    {
                        switch (presentrandom)
                        {
                        case ItemID.RedRyder:
                            player.QuickSpawnItem(presentrandom);
                            player.QuickSpawnItem(ItemID.MusketBall, Main.rand.Next(30, 61));
                            break;

                        case ItemID.MrsClauseHat:
                            player.QuickSpawnItem(ItemID.MrsClauseHat);
                            player.QuickSpawnItem(ItemID.MrsClauseShirt);
                            player.QuickSpawnItem(ItemID.MrsClauseHeels);
                            break;

                        case ItemID.ParkaHood:
                            player.QuickSpawnItem(ItemID.ParkaHood);
                            player.QuickSpawnItem(ItemID.ParkaCoat);
                            player.QuickSpawnItem(ItemID.ParkaPants);
                            break;

                        case ItemID.TreeMask:
                            player.QuickSpawnItem(ItemID.TreeMask);
                            player.QuickSpawnItem(ItemID.TreeShirt);
                            player.QuickSpawnItem(ItemID.TreeTrunks);
                            break;

                        case ItemID.Eggnog:
                            player.QuickSpawnItem(ItemID.Eggnog, Main.rand.Next(1, 4));
                            break;

                        case ItemID.StarAnise:
                            player.QuickSpawnItem(ItemID.StarAnise, Main.rand.Next(20, 41));
                            break;

                        case ItemID.PineTreeBlock:
                            player.QuickSpawnItem(ItemID.PineTreeBlock, Main.rand.Next(20, 50));
                            break;

                        case ItemID.CandyCaneBlock:
                            player.QuickSpawnItem(ItemID.CandyCaneBlock, Main.rand.Next(20, 50));
                            break;

                        case ItemID.GreenCandyCaneBlock:
                            player.QuickSpawnItem(ItemID.GreenCandyCaneBlock, Main.rand.Next(20, 50));
                            break;

                        default:
                            player.QuickSpawnItem(presentrandom);
                            break;
                        }
                        presentrandom.Clear();
                    }
                    return(false);
                }
                else
                {
                    return(true);
                }
            }

            case "goodieBag":
            {
                PresentOpenerConfig config = new PresentOpenerConfig();

                if (!config.goodiemenu.DisableGoodieConfig)
                {
                    WeightedRandom <int> goodierandom = new WeightedRandom <int>();

                    goodierandom.Add(ItemID.UnluckyYarn, 19f / 150f * config.goodiemenu.GoodieRareItemScale);
                    goodierandom.Add(ItemID.BatHook, 19f / 150f * config.goodiemenu.GoodieRareItemScale);
                    goodierandom.Add(ItemID.MorbidCuriosity, 19f / 50f * config.goodiemenu.PaintingScale);
                    goodierandom.Add(ItemID.BitterHarvest, 19f / 50f * config.goodiemenu.PaintingScale);
                    goodierandom.Add(ItemID.BloodMoonCountess, 19f / 50f * config.goodiemenu.PaintingScale);
                    goodierandom.Add(ItemID.HallowsEve, 19f / 50f * config.goodiemenu.PaintingScale);
                    goodierandom.Add(ItemID.JackingSkeletron, 19f / 50f * config.goodiemenu.PaintingScale);
                    goodierandom.Add(ItemID.CatEars, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.CatMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.CreeperMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.PumpkinMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.SpaceCreatureMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.KarateTortoiseMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.FoxMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.WitchHat, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.VampireMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.LeprechaunHat, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.RobotMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.PrincessHat, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.TreasureHunterShirt, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.WolfMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.UnicornMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.ReaperHood, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.PixieShirt, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.BrideofFrankensteinMask, 1f * config.goodiemenu.CostumeScale);
                    goodierandom.Add(ItemID.GhostMask, 1f * config.goodiemenu.CostumeScale);

                    Mod SpiritMod = ModLoader.GetMod("SpiritMod");
                    if (SpiritMod != null && config.moddedmenu.DisableModdedConfigs == false)
                    {
                        WeightedRandom <int> MaskRandom = new WeightedRandom <int>();
                        MaskRandom.Add(SpiritMod.ItemType("MaskHulk"));
                        MaskRandom.Add(SpiritMod.ItemType("MaskIggy"));
                        MaskRandom.Add(SpiritMod.ItemType("MaskSvante"));
                        MaskRandom.Add(SpiritMod.ItemType("MaskLeemyy"));
                        MaskRandom.Add(SpiritMod.ItemType("MaskSchmo"));
                        MaskRandom.Add(SpiritMod.ItemType("MaskLordCake"));
                        MaskRandom.Add(SpiritMod.ItemType("MaskYuyutsu"));
                        MaskRandom.Add(SpiritMod.ItemType("MaskVladimier"));
                        MaskRandom.Add(SpiritMod.ItemType("MaskGraydee"));
                        MaskRandom.Add(SpiritMod.ItemType("MaskBlaze"));
                        MaskRandom.Add(SpiritMod.ItemType("MaskKachow"));
                        if (Main.rand.Next(25) <= 5f * config.moddedmenu.SpiritDevMaskScale)
                        {
                            player.QuickSpawnItem(MaskRandom);
                        }

                        WeightedRandom <int> candyrandom = new WeightedRandom <int>();
                        candyrandom.Add(SpiritMod.ItemType("Taffy"), 1f / 8f * config.moddedmenu.SpiritCandyScale);
                        candyrandom.Add(SpiritMod.ItemType("Candy"), 7f / 25f * config.moddedmenu.SpiritCandyScale);
                        candyrandom.Add(SpiritMod.ItemType("ChocolateBar"), 12f / 25f * config.moddedmenu.SpiritCandyScale);
                        candyrandom.Add(SpiritMod.ItemType("HealthCandy"), 29f / 50f * config.moddedmenu.SpiritCandyScale);
                        candyrandom.Add(SpiritMod.ItemType("ManaCandy"), 17f / 25f * config.moddedmenu.SpiritCandyScale);
                        candyrandom.Add(SpiritMod.ItemType("Lollipop"), 39f / 50f * config.moddedmenu.SpiritCandyScale);
                        candyrandom.Add(SpiritMod.ItemType("Apple"), 100f / 83f * config.moddedmenu.AppleScale);
                        candyrandom.Add(SpiritMod.ItemType("MysteryCandy"), 25f / 24f * config.moddedmenu.MysteryCandyScale);
                        candyrandom.Add(SpiritMod.ItemType("GoldCandy"), 3f / 100f);
                        player.QuickSpawnItem(candyrandom);
                    }

                    if (goodierandom != null)
                    {
                        switch (goodierandom)
                        {
                        case ItemID.RottenEgg:
                            player.QuickSpawnItem(goodierandom, Main.rand.Next(10, 41));
                            break;

                        case ItemID.CatMask:
                            player.QuickSpawnItem(ItemID.CatMask);
                            player.QuickSpawnItem(ItemID.CatShirt);
                            player.QuickSpawnItem(ItemID.CatPants);
                            break;

                        case ItemID.CreeperMask:
                            player.QuickSpawnItem(ItemID.CreeperMask);
                            player.QuickSpawnItem(ItemID.CreeperShirt);
                            player.QuickSpawnItem(ItemID.CreeperPants);
                            break;

                        case ItemID.PumpkinMask:
                            player.QuickSpawnItem(ItemID.PumpkinMask);
                            player.QuickSpawnItem(ItemID.PumpkinShirt);
                            player.QuickSpawnItem(ItemID.PumpkinPants);
                            break;

                        case ItemID.SpaceCreatureMask:
                            player.QuickSpawnItem(ItemID.SpaceCreatureMask);
                            player.QuickSpawnItem(ItemID.SpaceCreatureShirt);
                            player.QuickSpawnItem(ItemID.SpaceCreaturePants);
                            break;

                        case ItemID.KarateTortoiseMask:
                            player.QuickSpawnItem(ItemID.KarateTortoiseMask);
                            player.QuickSpawnItem(ItemID.KarateTortoiseShirt);
                            player.QuickSpawnItem(ItemID.KarateTortoisePants);
                            break;

                        case ItemID.FoxMask:
                            player.QuickSpawnItem(ItemID.FoxMask);
                            player.QuickSpawnItem(ItemID.FoxShirt);
                            player.QuickSpawnItem(ItemID.FoxPants);
                            break;

                        case ItemID.WitchHat:
                            player.QuickSpawnItem(ItemID.WitchHat);
                            player.QuickSpawnItem(ItemID.WitchDress);
                            player.QuickSpawnItem(ItemID.WitchBoots);
                            break;

                        case ItemID.VampireMask:
                            player.QuickSpawnItem(ItemID.VampireMask);
                            player.QuickSpawnItem(ItemID.VampireShirt);
                            player.QuickSpawnItem(ItemID.VampirePants);
                            break;

                        case ItemID.LeprechaunHat:
                            player.QuickSpawnItem(ItemID.LeprechaunHat);
                            player.QuickSpawnItem(ItemID.LeprechaunShirt);
                            player.QuickSpawnItem(ItemID.LeprechaunPants);
                            break;

                        case ItemID.RobotMask:
                            player.QuickSpawnItem(ItemID.RobotMask);
                            player.QuickSpawnItem(ItemID.RobotShirt);
                            player.QuickSpawnItem(ItemID.RobotPants);
                            break;

                        case ItemID.PrincessHat:
                            player.QuickSpawnItem(ItemID.PrincessHat);
                            player.QuickSpawnItem(ItemID.PrincessDressNew);
                            break;

                        case ItemID.TreasureHunterShirt:
                            player.QuickSpawnItem(ItemID.TreasureHunterShirt);
                            player.QuickSpawnItem(ItemID.TreasureHunterPants);
                            break;

                        case ItemID.WolfMask:
                            player.QuickSpawnItem(ItemID.WolfMask);
                            player.QuickSpawnItem(ItemID.WolfShirt);
                            player.QuickSpawnItem(ItemID.WolfPants);
                            break;

                        case ItemID.UnicornMask:
                            player.QuickSpawnItem(ItemID.UnicornMask);
                            player.QuickSpawnItem(ItemID.UnicornShirt);
                            player.QuickSpawnItem(ItemID.UnicornPants);
                            break;

                        case ItemID.ReaperHood:
                            player.QuickSpawnItem(ItemID.ReaperHood);
                            player.QuickSpawnItem(ItemID.ReaperRobe);
                            break;

                        case ItemID.PixieShirt:
                            player.QuickSpawnItem(ItemID.PixieShirt);
                            player.QuickSpawnItem(ItemID.PixiePants);
                            break;

                        case ItemID.BrideofFrankensteinMask:
                            player.QuickSpawnItem(ItemID.BrideofFrankensteinMask);
                            player.QuickSpawnItem(ItemID.BrideofFrankensteinDress);
                            break;

                        case ItemID.GhostMask:
                            player.QuickSpawnItem(ItemID.GhostMask);
                            player.QuickSpawnItem(ItemID.GhostShirt);
                            break;

                        default:
                            player.QuickSpawnItem(goodierandom);
                            break;
                        }
                        goodierandom.Clear();
                    }
                    return(false);
                }
                else
                {
                    return(true);
                }
            }

            default:
                return(true);
            }
        }
Beispiel #10
0
        public override void AI()
        {
            Player owner = Main.player[projectile.owner];

            projectile.extraUpdates = 0;

            if (owner != null && owner.active && owner.SGAPly().liquidGambling > 0)
            {
                projectile.extraUpdates = 3;
            }


            if (loots == null)
            {
                WeightedRandom <LootBoxContents> WR = new WeightedRandom <LootBoxContents>();
                loots = new List <LootBoxContents>();
                for (int i = 0; i < maxItems; i += 1)
                {
                    FillLootBox(WR);
                    ExtraItem(WR);
                    WR.Clear();
                    WR.needsRefresh = true;
                }
            }

            projectile.localAI[0] += Math.Max(0f, ((projectile.timeLeft - (slowDownRate)) / (float)slowDownRate) * speed);

            if (projectile.localAI[0] > loots.Count)
            {
                projectile.localAI[0] = 0f;
            }

            if (lastitem != (int)projectile.localAI[0])
            {
                lastitem = (int)projectile.localAI[0];
                TickEffect();
            }


            Player player = Main.player[projectile.owner];

            if (player != null && player.active)
            {
                projectile.scale = Math.Min(projectile.scale + (1f / 60f), Math.Min(1f, projectile.timeLeft / 60f));

                if (player.dead)
                {
                    projectile.Kill();
                }
                else
                {
                    if (projectile.timeLeft == 200 && Main.netMode != NetmodeID.Server)
                    {
                        LootBoxContents itemtype = loots[(int)projectile.localAI[0]];
                        player.QuickSpawnItem(itemtype.intid, itemtype.ammount);
                        AwardItem(itemtype.intid);
                    }

                    Vector2 mousePos = Main.MouseWorld;

                    if (projectile.owner == Main.myPlayer)
                    {
                        Vector2 diff = mousePos - player.Center;
                        diff.Normalize();
                        projectile.direction = Main.MouseWorld.X > player.position.X ? 1 : -1;
                        projectile.netUpdate = true;
                    }

                    projectile.velocity = default(Vector2);
                    projectile.Center   = (player.Center);
                }
            }
            else
            {
                projectile.Kill();
            }
        }