public void HellionPortals(Player P, ref Vector2 PWhere, ref Vector2 DrakenWhere, ref Vector2 FlyTo, ref Vector2 FlySpeed, ref Vector2 FlyFriction) { for (int rotz = 0; rotz < 360; rotz += 360 / 3) { Vector2 where = npc.Center; Vector2 wheretogo2 = new Vector2(96f, rotz); Vector2 where2 = P.Center - npc.Center; where2.Normalize(); Vector2 wheretogoxxx = new Vector2(0.40f, 0f); Func <Vector2, Vector2, float, float, float> projectilefacing = delegate(Vector2 playerpos, Vector2 projpos, float time, float current) { Vector2 wheretogoxxx2 = new Vector2(wheretogoxxx.X, wheretogoxxx.Y); float val = current; val = current.AngleLerp((playerpos - projpos).ToRotation(), wheretogoxxx2.X); return(val); }; Func <Vector2, Vector2, float, Vector2, Vector2> projectilemoving = delegate(Vector2 playerpos, Vector2 projpos, float time, Vector2 current) { Vector2 wheretogo = new Vector2(wheretogo2.X, wheretogo2.Y); float angle = MathHelper.ToRadians(((wheretogo.Y + time * 2f))); Vector2 instore = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle)) * wheretogo.X; if (TrueDraken.GetDraken() != null) { Vector2 gothere = TrueDraken.GetDraken().npc.Center + instore; Vector2 slideover = gothere - projpos; current = slideover / 2f; } current /= 1.125f; Vector2 speedz = current; float spzzed = speedz.Length(); speedz.Normalize(); if (spzzed > 50f) { current = (speedz * spzzed); } return(current); }; Func <float, bool> projectilepattern = (time) => (time > 60 && time % 200 == 0); int ize2 = ParadoxMirror.SummonMirror(where, Vector2.Zero, 100, 1100, (npc.Center - where).ToRotation(), ProjectileID.EmeraldBolt, projectilepattern, 15f, 200); (Main.projectile[ize2].modProjectile as ParadoxMirror).projectilefacing = projectilefacing; (Main.projectile[ize2].modProjectile as ParadoxMirror).projectilemoving = projectilemoving; Main.PlaySound(SoundID.Item, (int)Main.projectile[ize2].position.X, (int)Main.projectile[ize2].position.Y, 33, 0.25f, 0.5f); Main.projectile[ize2].netUpdate = true; } }
public override void Explode() { chargeup += 1; if (projectile.timeLeft == timeleftfirerate && projectile.ai[0] > 0) { Player owner = Main.player[projectile.owner]; if (owner != null && !owner.dead && owner.channel) { everyother += 1; everyother %= 3; Vector2 gotohere = new Vector2(); gotohere = projectile.velocity; //Main.MouseScreen - projectile.Center; gotohere.Normalize(); float accuracy = Math.Max(0.005f, 1f - ((chargeup) / 500f)); Vector2 perturbedSpeed = new Vector2(gotohere.X, gotohere.Y).RotatedByRandom(MathHelper.ToRadians(0)) * projectile.velocity.Length(); for (int i = 2; i < 8; i += 1) { int proj = Projectile.NewProjectile(new Vector2(projectile.Center.X, projectile.Center.Y), (new Vector2(perturbedSpeed.X, perturbedSpeed.Y) * 2f).RotatedByRandom((MathHelper.ToRadians((i * 75))) * accuracy).RotatedByRandom(MathHelper.ToRadians(160f) * accuracy), mod.ProjectileType("RainbowBolt"), (int)((projectile.damage * 0.60f) * damagescale), projectile.knockBack / 10f, owner.whoAmI); Main.projectile[proj].magic = true; Main.projectile[proj].minion = false; IdgProjectile.Sync(proj); } if (everyother == 2) { Vector2 backthere = new Vector2(-100, 0).RotatedByRandom(MathHelper.ToRadians(80)); //int proj2 = Projectile.NewProjectile(backthere, gohere, mod.ProjectileType("ProjectilePortalRealityShaperHit"), (int)(projectile.damage * damagescale), projectile.knockBack / 10f, owner.whoAmI, mod.ProjectileType("HotRound")); Func <Vector2, Vector2, float, float, Projectile, float> projectilefacingmore = delegate(Vector2 playerpos, Vector2 projpos, float time, float current, Projectile proj) { float val = current; if (projectile.active) { if (time < 100) { val = current.AngleLerp(projectile.velocity.ToRotation() + proj.ai[1], 0.15f); } else { val = current.AngleLerp(projectile.velocity.ToRotation() + proj.ai[1], 0.05f); } } return(val); }; Func <Vector2, Vector2, float, Vector2, Projectile, Vector2> projectilemovingmore = delegate(Vector2 playerpos, Vector2 projpos, float time, Vector2 current, Projectile proj) { if (projectile.active) { Vector2 normspeed = projectile.velocity; normspeed.Normalize(); Vector2 gothere333 = (playerpos + backthere.RotatedBy(projectile.velocity.ToRotation())) - normspeed * 128f; Vector2 slideover = gothere333 - projpos; current = slideover / 2f; } current /= 1.125f; if (projectile.active) { Vector2 speedz = current; float spzzed = speedz.Length(); speedz.Normalize(); if (spzzed > 100f) { current = (speedz * spzzed); } } else { proj.timeLeft = Math.Min(proj.timeLeft, 20); } return(current); }; Func <float, bool> projectilepattern = (time) => (time == 20); int ize2 = ParadoxMirror.SummonMirror(owner.Center, Vector2.Zero, (int)((projectile.damage * 3) * damagescale), 200, projectile.velocity.ToRotation(), mod.ProjectileType("HellionBeam"), projectilepattern, 2.5f, 145, true); (Main.projectile[ize2].modProjectile as ParadoxMirror).projectilefacingmore = projectilefacingmore; (Main.projectile[ize2].modProjectile as ParadoxMirror).projectilemovingmore = projectilemovingmore; Main.PlaySound(SoundID.Item, (int)Main.projectile[ize2].position.X, (int)Main.projectile[ize2].position.Y, 33, 0.25f, 0.5f); Main.projectile[ize2].owner = projectile.owner; Main.projectile[ize2].aiStyle = -2; Main.projectile[ize2].ai[1] = Main.rand.NextFloat(-MathHelper.ToRadians(20), MathHelper.ToRadians(20)); Main.projectile[ize2].friendly = true; Main.projectile[ize2].hostile = false; Main.projectile[ize2].usesLocalNPCImmunity = true; Main.projectile[ize2].localNPCHitCooldown = 15; Main.projectile[ize2].netUpdate = true; IdgProjectile.Sync(ize2); } } } }
public override void HandlePacket(BinaryReader reader, int whoAmI) { Logger.Debug("--HandlePacket:--"); ushort atype = reader.ReadUInt16(); if (atype == (ushort)MessageType.UpdateLocalVars) { Logger.Debug("DEBUG server: update local vars for NPC"); int npc = reader.ReadInt32(); Vector2 ai1 = reader.ReadVector2(); Vector2 ai2 = reader.ReadVector2(); Main.npc[npc].localAI[0] = ai1.X; Main.npc[npc].localAI[1] = ai1.Y; Main.npc[npc].localAI[2] = ai2.X; Main.npc[npc].localAI[3] = ai2.Y; } if (atype == (ushort)MessageType.HellionCrap) { Logger.Debug("DEBUG client: Hellion Crap"); ParadoxMirror.NetMakeShot(reader, whoAmI); } //MessageType type = (MessageType)atype; if (atype == (ushort)MessageType.SummonCratrosity) { Logger.Debug("DEBUG server: Summon Cratrosity"); int crate = reader.ReadInt32(); int vec1 = reader.ReadInt32(); int vec2 = reader.ReadInt32(); Player ply = Main.player[reader.ReadInt32()]; NPC.SpawnOnPlayer(ply.whoAmI, crate); if (crate == NPCType("CratrosityPML")) { //SgaLib.Chat("Test1",255,255,255); /*ModPacket packet = GetPacket(); * packet.Write((int)499); * packet.Write(vec1); * packet.Write(vec2); * packet.Write(ply.whoAmI); * packet.Send();*/ } else { //hhh } return; } if (atype == (ushort)MessageType.SummonNPC) { Logger.Debug("DEBUG server: Summon NPC"); int wherex = reader.ReadInt32(); int wherey = reader.ReadInt32(); int npc = reader.ReadInt32(); int ai1 = reader.ReadInt32(); int ai2 = reader.ReadInt32(); int ai3 = reader.ReadInt32(); int ai4 = reader.ReadInt32(); //NPC.NewNPC(wherex, wherey, ModContent.NPCType<CaliburnGuardian>(), 0, ai1, ai2, ai3, ai4); NPC.NewNPC(wherex, wherey, npc, 0, ai1, ai2, ai3, ai4); Player ply = Main.player[reader.ReadInt32()]; return; } if (atype == (ushort)MessageType.CraftWarning) { Logger.Debug("DEBUG server: Craft Warning"); SGAWorld.CraftWarning(); return; } if (atype == (ushort)MessageType.Snapped) { Logger.Debug("DEBUG server: Snapped"); SGAWorld.SnapCooldown = reader.ReadInt32(); return; } if (atype == (ushort)MessageType.HellionStory) { Logger.Debug("DEBUG client: Hellion Story"); SGAWorld.questvars[10] = reader.ReadInt32(); SGAWorld.AdvanceHellionStory(); return; } if (atype == (ushort)MessageType.CaliburnPoints) { Logger.Debug("DEBUG client: Caliburn points"); SGAWorld.downedCaliburnGuardians = reader.ReadInt32(); SGAWorld.downedCaliburnGuardiansPoints = reader.ReadInt32(); return; } if (atype == (ushort)MessageType.GrantEntrophite) { Logger.Debug("DEBUG client: Grant Entrophite"); Main.player[Main.myPlayer].GetModPlayer <SGAPlayer>().AddEntropy(reader.ReadInt32()); return; } if (atype == (ushort)MessageType.GrantExpertise) { NPC npc = new NPC(); Logger.Debug("DEBUG client: Grant Expertise"); int raderz = reader.ReadInt32(); npc.SetDefaults(raderz); Main.player[Main.myPlayer].GetModPlayer <SGAPlayer>().DoExpertiseCheck(npc, true); return; } if (atype == (ushort)MessageType.GrantTf2EmblemXp) { Logger.Debug("DEBUG client: Grant TF2 emblem XP"); TF2Emblem.AwardXpToPlayer(Main.player[Main.myPlayer], reader.ReadInt32()); return; } /* ModPacket packet = SGAmod.Instance.GetPacket(); * packet.Write(500); * packet.Write(player.whoAmI); * packet.Write((short)ammoLeftInClip); * packet.Write(sufficate); * packet.Write(PrismalShots); * packet.Write(plasmaLeftInClip); * packet.Write((short)Redmanastar); * packet.Write(ExpertiseCollected); * packet.Write(ExpertiseCollectedTotal); * for (int i = 54; i < 58; i++) * { * packet.Write(ammoinboxes[i - 54]); * } * packet.Send();*/ if (atype == (ushort)MessageType.CloneClient) { Logger.Debug("DEBUG both: Clone Client"); int player = reader.ReadInt32(); int ammoLeftInClip = (int)reader.ReadByte(); int ammoLeftInClipMax = (int)reader.ReadByte(); int ammoLeftInClipMaxLastHeld = (int)reader.ReadByte(); int ammoLeftInClipMaxAddedAmmo = (int)reader.ReadByte(); int sufficate = reader.ReadInt32(); int PrismalShots = reader.ReadInt32(); int plasmaLeftInClip = reader.ReadInt32(); int Redmanastar = reader.ReadInt16(); int ExpertiseCollected = reader.ReadInt32(); int ExpertiseCollectedTotal = reader.ReadInt32(); int Entrophite = reader.ReadInt32(); int DefenseFrame = reader.ReadInt16(); int gunslingerLegendtarget = reader.ReadInt16(); int activestacks = reader.ReadInt16(); bool dragonFriend = reader.ReadBoolean(); bool armorToggleMode = reader.ReadBoolean(); int midasMoneyConsumed = reader.ReadInt32(); Logger.Debug("DEBUG both: Clone Client 10"); int[] ammos = { reader.ReadInt32(), reader.ReadInt32(), reader.ReadInt32(), reader.ReadInt32() }; if (player >= 0 && player < Main.maxPlayers) { SGAPlayer sgaplayer = Main.player[player].GetModPlayer(this, typeof(SGAPlayer).Name) as SGAPlayer; sgaplayer.ammoLeftInClip = ammoLeftInClip; sgaplayer.ammoLeftInClipMax = ammoLeftInClipMax; sgaplayer.ammoLeftInClipMaxLastHeld = ammoLeftInClipMaxLastHeld; sgaplayer.ammoLeftInClipMaxAddedAmmo = ammoLeftInClipMaxAddedAmmo; sgaplayer.sufficate = sufficate; sgaplayer.PrismalShots = PrismalShots; sgaplayer.plasmaLeftInClip = plasmaLeftInClip; sgaplayer.Redmanastar = Redmanastar; sgaplayer.ExpertiseCollected = ExpertiseCollected; sgaplayer.ExpertiseCollectedTotal = ExpertiseCollectedTotal; sgaplayer.entropyCollected = Entrophite; sgaplayer.DefenseFrame = DefenseFrame; sgaplayer.gunslingerLegendtarget = (int)gunslingerLegendtarget; sgaplayer.activestacks = (int)activestacks; sgaplayer.dragonFriend = dragonFriend; sgaplayer.armorToggleMode = armorToggleMode; sgaplayer.midasMoneyConsumed = midasMoneyConsumed; for (int i = 0; i < 4; i++) { sgaplayer.ammoinboxes[i] = ammos[i]; } Logger.Debug("DEBUG both: Clone Client End"); return; } Logger.Debug("DEBUG both: Clone Client Invalid Player"); return; } if (atype == (ushort)MessageType.LockPlayer) { Logger.Debug("DEBUG both: Lock Player"); //Main.NewText("Test2",255,255,255); Vector2 Vect = new Vector2(reader.ReadInt32(), reader.ReadInt32()); Player sender = Main.player[reader.ReadInt32()]; //Main.NewText("Testloc: "+Vect.X+" "+Vect.Y,255,255,255); SGAPlayer modplayer = sender.GetModPlayer <SGAPlayer>(); modplayer.Locked = Vect; //Main.NewText("Testloc: "+modplayer.Locked.X+" "+modplayer.Locked.Y,255,255,255); for (int num172 = 0; num172 < 100; num172 = num172 + 1) { Player ply = Main.player[num172]; modplayer = ply.GetModPlayer <SGAPlayer>(); modplayer.Locked = Vect; } return; } }