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; }
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; } }
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); } }
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; } } }
public override void Action(CommandCaller caller, string input, string[] args) { RevolutionsPlayer z = caller.Player.GetModPlayer <RevolutionsPlayer>(); z.noGravity = !z.noGravity; }