示例#1
0
        public override void Action(CommandCaller caller, string input, string[] args)
        {
            RevolutionsPlayer rp = caller.Player.GetModPlayer <RevolutionsPlayer>();
            int a = 0;

            try
            {
                int.TryParse(args[0], out a);
            }
            catch (Exception e)
            {
                Helper.Print(e.Message);
            }
            rp.starFlare[0] += a;
            rp.maxStarFlare += rp.maxStarFlare - rp.starFlare[0] + 2 * a;
        }
示例#2
0
        public override void Update(Player player, ref int buffIndex)
        {
            RevolutionsPlayer modPlayer = player.GetModPlayer <RevolutionsPlayer>();

            if (player.ownedProjectileCounts[ModContent.ProjectileType <Projectiles.CoreWeapon.Evolutionaries>()] > 0)
            {
                modPlayer.evolutionary = true;
            }
            if (!modPlayer.evolutionary)
            {
                player.DelBuff(buffIndex);
                buffIndex--;
            }
            else
            {
                player.buffTime[buffIndex] = 9999;
            }
        }
示例#3
0
        public override void Action(CommandCaller caller, string input, string[] args)
        {
            RevolutionsPlayer z = caller.Player.GetModPlayer <RevolutionsPlayer>();

            z.starFlareStatus = true;
            if (args.Length == 1)
            {
                int a = 0;
                int.TryParse(args[0], out a);
                z.starFlareColorType = a;
            }
            if (args.Length == 3)
            {
                int r = 0;
                int.TryParse(args[0], out r);
                int g = 0;
                int.TryParse(args[0], out g);
                int b = 0;
                int.TryParse(args[0], out b);
                RevolutionsPlayer.customStarFlareColor = new Color(r, g, b);
            }
        }
示例#4
0
        public override void AI()
        {
            if (timer[0] > 0)
            {
                timer[0]--;
            }
            if (switches[0])
            {
                timer[1]++;
            }
            else
            {
                timer[1] = 0;
            }
            Player            player    = Main.player[projectile.owner];
            RevolutionsPlayer modPlayer = player.GetModPlayer <RevolutionsPlayer>();

            if (player.dead)
            {
                modPlayer.evolutionary = false;;
            }
            if (modPlayer.evolutionary)
            {
                projectile.timeLeft = 2;
            }
            NPC    target = null;
            float  dis2   = 1800f;
            Random rd     = new Random();

            foreach (NPC npc in Main.npc)
            {
                if (Vector2.Distance(player.Center, npc.Center) < dis2 &&
                    npc.type != NPCID.TargetDummy && npc.active &&
                    Vector2.Distance(player.Center, projectile.Center) < 800f &&
                    !npc.friendly &&
                    npc.CanBeChasedBy(projectile))
                {
                    dis2   = Vector2.Distance(npc.Center, player.Center);
                    target = npc;
                }
            }
            if (target == null)
            {
                projectile.rotation += 3.14f / 90;
                if (Vector2.Distance(player.Center, projectile.Center) > 300f)
                {
                    projectile.velocity = 0.3f * player.velocity + 0.5f * projectile.velocity + Helper.ToUnitVector(player.Center - projectile.Center) * Vector2.Distance(player.Center, projectile.Center) / 120f;
                    switches[0]         = false;
                }
                if (Vector2.Distance(player.Center, projectile.Center) > 250f && Vector2.Distance(player.Center, projectile.Center) < 300f)
                {
                    projectile.velocity = 0.2f * player.velocity + 0.5f * projectile.velocity + Helper.ToUnitVector(player.Center - projectile.Center) * Vector2.Distance(player.Center, projectile.Center) / 60f;
                    PositionSave[0].X   = (projectile.Center - player.Center).ToRotation();
                    switches[0]         = true;
                }
                if (Vector2.Distance(player.Center, projectile.Center) < 250f)
                {
                    projectile.velocity = 0.4f * player.velocity + 0.5f * projectile.velocity + 7 * Curve.DerivativeGetEllipse(PositionSave[0].X + (timer[1] / 7), 1, 1f, projectile.ai[0]) + Helper.ToUnitVector(player.Center - projectile.Center) * 3f;
                    switches[0]         = true;
                }
                //projectile.velocity.X += Helper.EntroptPool[projectile.whoAmI + rd.Next(1, 500)] * 0.005f;
                //projectile.velocity.Y += Helper.EntroptPool[projectile.whoAmI + rd.Next(501, 1000)] * 0.005f;
                //if(Vector2.Distance(player.Center, projectile.Center) > 500f) projectile.velocity += 2f * player.velocity;
            }
            else if (dis2 < 450f)
            {
                projectile.rotation   += 3.14f / 30;
                projectile.velocity    = 0.6f * projectile.oldVelocity + Helper.ToUnitVector(target.Center - projectile.Center) * Vector2.Distance(target.Center, projectile.Center) / 15f;
                projectile.velocity.X += Helper.EntroptPool[projectile.whoAmI + rd.Next(1, 500)] * 0.02f;
                projectile.velocity.Y += Helper.EntroptPool[projectile.whoAmI + rd.Next(501, 1000)] * 0.02f;
            }
            else
            {
                projectile.rotation += 3.14f / 60;
                if (Vector2.Distance(player.Center, projectile.Center) > 110f)
                {
                    projectile.velocity = 0.2f * player.velocity + 0.8f * projectile.oldVelocity + Helper.ToUnitVector(Helper.GetCloser(projectile.Center, player.Center, 1, 2 + rd.Next(0, 2)) - projectile.Center) * Vector2.Distance(player.Center, projectile.Center) / 600f;
                }
                Vector2 speed = 100 * Helper.ToUnitVector(target.Center - projectile.Center);
                projectile.velocity.X += Helper.EntroptPool[projectile.whoAmI + rd.Next(1, 500)] * 0.007f;
                projectile.velocity.Y += Helper.EntroptPool[projectile.whoAmI + rd.Next(501, 1000)] * 0.007f;
                if (timer[0] == 0)
                {
                    timer[0] += 12;
                    Main.PlaySound(SoundID.Item9);
                    Projectile.NewProjectile(projectile.Center + projectile.velocity, projectile.Center + projectile.velocity, ModContent.ProjectileType <FinalLightSummon>(), projectile.damage * 3 / 2, projectile.knockBack, projectile.owner, 0, target.whoAmI);
                }
            }
        }
        public override void AI(NPC npc)
        {
            if (Revolutions.Settings.extraAI)
            {
                if (myTalkCD[npc.whoAmI] > 0)
                {
                    myTalkCD[npc.whoAmI]--;
                }
                if (myTimer[npc.whoAmI] > 0)
                {
                    myTimer[npc.whoAmI]--;
                }
                if (myTimer2[npc.whoAmI] > 0)
                {
                    myTimer2[npc.whoAmI]--;
                }
                if (myTimer[npc.whoAmI] < 0)
                {
                    myTimer[npc.whoAmI]++;
                }
                if (myTimer2[npc.whoAmI] < 0)
                {
                    myTimer2[npc.whoAmI]++;
                }
                //一计时器两用,太酷了
                Player            target     = Main.player[npc.target];
                RevolutionsPlayer revtar     = target.GetModPlayer <RevolutionsPlayer>();
                Player            local      = Main.LocalPlayer;
                RevolutionsPlayer revlocal   = local.GetModPlayer <RevolutionsPlayer>();
                float             myDistance = Vector2.Distance(npc.Center, local.Center);
                switch (npc.type)
                {
                case NPCID.DukeFishron:
                    if (Main.rand.Next(1, 600) == 1 && myTalkCD[npc.whoAmI] == 0)
                    {
                        new Talk(npc.whoAmI, Language.GetTextValue("Mods.Revolutions.Talk.DkFsion0" + Main.rand.Next(1, 4).ToString()), 180, null);
                        myTalkCD[npc.whoAmI] = 360;
                    }
                    RevolutionsAI.DukeFishronAI(npc, target, revtar, ref myTimer[npc.whoAmI], ref myTimer2[npc.whoAmI], myOldLife[npc.whoAmI]);
                    break;

                case NPCID.Plantera:
                    if (Main.rand.Next(1, 600) == 1 && myTalkCD[npc.whoAmI] == 0)
                    {
                        new Talk(npc.whoAmI, Language.GetTextValue("Mods.Revolutions.Talk.Plantera0" + Main.rand.Next(1, 3).ToString()), 180, null);
                        myTalkCD[npc.whoAmI] = 360;
                    }
                    RevolutionsAI.PlanteraAI(npc, target, revtar, ref myTimer[npc.whoAmI], ref myTimer2[npc.whoAmI], myOldLife[npc.whoAmI]);
                    break;

                case NPCID.Guide:
                    if (myTalkCD[npc.whoAmI] == 0 && myDistance < 300f && npc.ai[0] != 4)
                    {
                        if (Main.rand.Next(1, 100) == 1 && Main.dayTime && !NPC.AnyDanger())
                        {
                            new Talk(npc.whoAmI, Language.GetTextValue("Mods.Revolutions.Talk.Guide1" + Main.rand.Next(1, 3).ToString()), 180, null);
                            myTalkCD[npc.whoAmI] = 600;
                        }
                        if (Main.rand.Next(1, 100) == 1 && !Main.dayTime && !NPC.AnyDanger())
                        {
                            if (npc.homeless)
                            {
                                new Talk(npc.whoAmI, Language.GetTextValue("Mods.Revolutions.Talk.Guide3" + Main.rand.Next(0, 2).ToString()), 180, null);
                            }
                            else
                            {
                                new Talk(npc.whoAmI, Language.GetTextValue("Mods.Revolutions.Talk.Guide3" + Main.rand.Next(1, 3).ToString()), 180, null);
                            }
                            myTalkCD[npc.whoAmI] = 600;
                        }
                        if (!Main.dayTime && NPC.AnyDanger() && Main.rand.Next(1, 50) == 1)
                        {
                            new Talk(npc.whoAmI, Language.GetTextValue("Mods.Revolutions.Talk.Guide61"), 180, null);
                            myTalkCD[npc.whoAmI] = 300;
                        }
                    }
                    else if (myTalkCD[npc.whoAmI] == 0 && myDistance > Vector2.Distance(npc.Center, revlocal.pastCenter[10]) && myDistance < RevolutionsPlayer.screenR / 2 && npc.ai[0] != 4)
                    {
                        if (local.HasItem(ItemID.GuideVoodooDoll))
                        {
                            new Talk(npc.whoAmI, Language.GetTextValue("Mods.Revolutions.Talk.Guide43"), 180, null);
                        }
                        else
                        {
                            new Talk(npc.whoAmI, Language.GetTextValue("Mods.Revolutions.Talk.Guide4" + Main.rand.Next(1, 3).ToString()), 180, null);
                        }
                        myTalkCD[npc.whoAmI] = 1800;
                    }
                    break;

                case NPCID.Nurse:
                    break;
                }
                if (RevolutionsPlayer.timer % 10 == 0 && RevolutionsPlayer.timer != 0)
                {
                    myOldLife[npc.whoAmI] = npc.life;
                }
            }
        }
示例#6
0
            public override void Action(CommandCaller caller, string input, string[] args)
            {
                RevolutionsPlayer z = caller.Player.GetModPlayer <RevolutionsPlayer>();

                z.noGravity = !z.noGravity;
            }