public override void ModifyHitNPCWithProj(Projectile proj, NPC target, ref int damage, ref float knockback, ref bool crit, ref int hitDirection) { if (Main.rand.Next(10) == 0 && effect && !target.immortal && !proj.GetGlobalProjectile <PenguinLimit>().realeasedPenguin) { if (!noSound) { Main.PlaySound(mod.GetLegacySoundSlot(SoundType.Custom, "Sounds/SoundEffects/PenguinCall").WithVolume(1f).WithPitchVariance(0), player.Center); } Projectile penguin = Main.projectile[Projectile.NewProjectile(player.Center, new Vector2(6, 0), mod.ProjectileType("SlidingPenguin"), damage, proj.knockBack, player.whoAmI)]; penguin.melee = proj.melee; penguin.ranged = proj.ranged; penguin.thrown = proj.thrown; penguin.minion = proj.minion; penguin.magic = proj.magic; penguin.GetGlobalProjectile <PenguinLimit>().realeasedPenguin = true; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(penguin); } penguin = Main.projectile[Projectile.NewProjectile(player.Center, new Vector2(-6, 0), mod.ProjectileType("SlidingPenguin"), damage, proj.knockBack, player.whoAmI)]; penguin.melee = proj.melee; penguin.ranged = proj.ranged; penguin.thrown = proj.thrown; penguin.minion = proj.minion; penguin.magic = proj.magic; penguin.GetGlobalProjectile <PenguinLimit>().realeasedPenguin = true; proj.GetGlobalProjectile <PenguinLimit>().realeasedPenguin = true; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(penguin); } } }
void Shoot() { Main.PlaySound(SoundID.Item38, projectile.Center); timer += 10; Player player = Main.player[projectile.owner]; int weaponDamage = projectile.damage; float weaponKnockback = projectile.knockBack; int bulletCount = 8 + (int)((((1 / player.meleeSpeed) - 1) * 100) / 10); //CombatText.NewText(player.getRect(), new Color(38, 126, 126), bulletCount, true, false); Item sItem = QwertyMethods.MakeItemFromID(ItemID.FlintlockPistol); sItem.damage = weaponDamage; player.PickAmmo(sItem, ref bullet, ref speedB, ref canShoot, ref weaponDamage, ref weaponKnockback, false); List <Projectile> bullets = QwertyMethods.ProjectileSpread(projectile.Center, bulletCount, BulVel, bullet, weaponDamage, weaponKnockback, projectile.owner); foreach (Projectile bul in bullets) { bul.melee = true; bul.ranged = false; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(bul); } } }
public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) { Main.PlaySound(SoundID.Item38, projectile.Center); Player player = Main.player[projectile.owner]; int weaponDamage = projectile.damage; float weaponKnockback = projectile.knockBack; int bulletCount = 8 + (int)((((1 / player.meleeSpeed) - 1) * 100) / 10); float bulletSpacing = 2 * (float)Math.PI / bulletCount; player.PickAmmo(QwertyMethods.MakeItemFromID(ItemID.FlintlockPistol), ref bullet, ref speedB, ref canShoot, ref weaponDamage, ref weaponKnockback, false); for (; bulletCount > 0; bulletCount--) { Projectile bul = Main.projectile[Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, (float)Math.Cos(dir) * BulVel, (float)Math.Sin(dir) * BulVel, bullet, weaponDamage, weaponKnockback, Main.myPlayer)]; bul.melee = true; bul.ranged = false; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(bul); } dir += bulletSpacing; } projectile.velocity.X = -projectile.velocity.X; projectile.velocity.Y = -projectile.velocity.Y; }
public override void AI() { Player player = Main.player[projectile.owner]; player.UpdateMaxTurrets(); timer++; if (QwertyMethods.ClosestNPC(ref target, maxDistance, projectile.Center, false, player.MinionAttackTargetNPC)) { projectile.rotation = (target.Center - projectile.Center).ToRotation(); if (timer % 60 == 0 && player.whoAmI == Main.myPlayer) { int numOfProj = 8 + Main.rand.Next(8); for (int p = 0; p < numOfProj; p++) { Projectile s = Main.projectile[Projectile.NewProjectile(projectile.Center, QwertyMethods.PolarVector(Main.rand.NextFloat(4, 16), projectile.rotation - (float)Math.PI / 8 + Main.rand.NextFloat((float)Math.PI / 4)), ProjectileID.SporeCloud, projectile.damage, projectile.knockBack, player.whoAmI)]; s.melee = false; s.minion = true; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(s); } } } } }
public override void AI() { Player player = Main.player[projectile.owner]; player.itemAnimation = 2; player.itemTime = 2; bool firing = player.channel && player.HasAmmo(QwertyMethods.MakeItemFromID(ItemID.FlintlockPistol), true) && !player.noItems && !player.CCed; int weaponDamage = player.GetWeaponDamage(player.inventory[player.selectedItem]); int Ammo = 14; float speed = 14f; float weaponKnockback = player.inventory[player.selectedItem].knockBack; if (runOnce) { angleInRing = (float)(projectile.ai[1] * Math.PI / 3f); runOnce = false; } trigTimer += (float)Math.PI / 10; radius = 125 + 25 * (float)Math.Sin(trigTimer); angleInRing += rotateSpeed; projectile.rotation = angleInRing + (float)Math.PI; projectile.Center = new Vector2(Main.MouseWorld.X + (float)Math.Cos(angleInRing) * radius, Main.MouseWorld.Y + (float)Math.Sin(angleInRing) * radius); if (player.channel) { reloadTimer++; projectile.timeLeft = 2; if (reloadTimer % 15 == 0) { player.PickAmmo(QwertyMethods.MakeItemFromID(ItemID.FlintlockPistol), ref Ammo, ref speed, ref firing, ref weaponDamage, ref weaponKnockback, Main.rand.Next(2) == 0); if (firing && player.CheckMana((int)((float)player.inventory[player.selectedItem].mana / 6f), !player.GetModPlayer <BloodMedalionEffect>().effect)) { if (player.GetModPlayer <BloodMedalionEffect>().effect) { player.statLife -= (int)(player.inventory[player.selectedItem].mana / 6f * player.manaCost); if (player.statLife <= 0) { player.KillMe(PlayerDeathReason.ByCustomReason(player.name + " madly drained " + (player.Male ? "his " : "her") + " lifeforce!"), (int)(player.inventory[player.selectedItem].mana * player.manaCost), 0); } } player.manaRegenDelay = (int)player.maxRegenDelay; Main.PlaySound(SoundID.Item11, player.position); Projectile bul = Main.projectile[Projectile.NewProjectile(projectile.Center, new Vector2((float)Math.Cos(projectile.rotation) * speed, (float)Math.Sin(projectile.rotation) * speed), Ammo, projectile.damage, projectile.knockBack, player.whoAmI)]; bul.magic = true; bul.ranged = false; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(bul); } } } } else { } }
public override void AI() { Player player = Main.player[projectile.owner]; QwertyPlayer modPlayer = player.GetModPlayer <QwertyPlayer>(); varTime++; if (varTime >= 60) { varTime = 0; if (Main.netMode != 2) { Yvar = Main.rand.Next(0, 80); Xvar = Main.rand.Next(-80, 80); } } Vector2 moveTo = new Vector2(player.Center.X + Xvar, player.Center.Y - Yvar) - projectile.Center; projectile.velocity = (moveTo) * .04f; if (modPlayer.LuneArcher) { projectile.timeLeft = 2; } timer++; if (QwertyMethods.ClosestNPC(ref target, 10000, player.Center, false, player.MinionAttackTargetNPC)) { projectile.rotation = (target.Center - projectile.Center).ToRotation(); if (timer > 90) { int weaponDamage = projectile.damage; float weaponKnockback = projectile.knockBack; player.PickAmmo(QwertyMethods.MakeItemFromID(39), ref arrow, ref speedB, ref canShoot, ref weaponDamage, ref weaponKnockback, Main.rand.Next(2) == 0); if (Main.netMode != 1) { Projectile bul = Main.projectile[Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, (float)Math.Cos(projectile.rotation) * BulVel, (float)Math.Sin(projectile.rotation) * BulVel, arrow, weaponDamage, weaponKnockback, Main.myPlayer)]; bul.ranged = false; bul.minion = true; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(bul); } } timer = 0; } projectile.rotation += (float)Math.PI / 2; } }
public override bool ExplosionEffect(int explosionSize) { Main.PlaySound(SoundID.Item62, projectile.position); for (int i = 0; i < 2; i++) { Projectile meteor = Main.projectile[Projectile.NewProjectile(projectile.Center + new Vector2(Main.rand.Next(-20, 20), -1000), QwertyMethods.PolarVector(10, (float)Math.PI / 2 + (float)Math.PI / 16 * Main.rand.NextFloat(-1, 1)), 424 + Main.rand.Next(2), (int)(projectile.damage), projectile.knockBack, projectile.owner, 0f, 0.5f + (float)Main.rand.NextDouble() * 0.3f)]; meteor.magic = false; meteor.thrown = true; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(meteor); } } return(true); }
void Shoot() { Player player = Main.player[projectile.owner]; Main.PlaySound(SoundID.Item11, projectile.position); int weaponDamage = projectile.damage; float weaponKnockback = projectile.knockBack; Item sItem = QwertyMethods.MakeItemFromID(ItemID.Handgun); sItem.damage = weaponDamage; player.PickAmmo(sItem, ref bullet, ref speedB, ref canShoot, ref weaponDamage, ref weaponKnockback, Main.rand.Next(2) == 0); Projectile bul = Main.projectile[Projectile.NewProjectile(projectile.Center + QwertyMethods.PolarVector(29, gunRotation), QwertyMethods.PolarVector(10, gunRotation), bullet, weaponDamage, weaponKnockback, Main.myPlayer)]; bul.ranged = false; bul.minion = true; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(bul); } shotCooldown = 0; }
public override bool OnTileCollide(Vector2 velocityChange) { Main.PlaySound(SoundID.Item38, projectile.Center); timer += 10; Player player = Main.player[projectile.owner]; int weaponDamage = projectile.damage; float weaponKnockback = projectile.knockBack; int bulletCount = 8 + (int)((((1 / player.meleeSpeed) - 1) * 100) / 10); float bulletSpacing = 2 * (float)Math.PI / bulletCount; //CombatText.NewText(player.getRect(), new Color(38, 126, 126), bulletCount, true, false); player.PickAmmo(QwertyMethods.MakeItemFromID(ItemID.FlintlockPistol), ref bullet, ref speedB, ref canShoot, ref weaponDamage, ref weaponKnockback, false); for (; bulletCount > 0; bulletCount--) { Projectile bul = Main.projectile[Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, (float)Math.Cos(dir) * BulVel, (float)Math.Sin(dir) * BulVel, bullet, weaponDamage, weaponKnockback, Main.myPlayer)]; bul.melee = true; bul.ranged = false; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(bul); } dir += bulletSpacing; } if (projectile.velocity.X != velocityChange.X) { projectile.velocity.X = -velocityChange.X; } if (projectile.velocity.Y != velocityChange.Y) { projectile.velocity.Y = -velocityChange.Y; } return(false); }
public override void Kill(int timeLeft) { Main.PlaySound(SoundID.Item14, projectile.position); projectile.position.X = projectile.position.X + (float)(projectile.width / 2); projectile.position.Y = projectile.position.Y + (float)(projectile.height / 2); projectile.width = 22; projectile.height = 22; projectile.position.X = projectile.position.X - (float)(projectile.width / 2); projectile.position.Y = projectile.position.Y - (float)(projectile.height / 2); for (int num761 = 0; num761 < 20; num761++) { int num762 = Dust.NewDust(new Vector2(projectile.position.X, projectile.position.Y), projectile.width, projectile.height, 31, 0f, 0f, 100, default(Color), 1.5f); Main.dust[num762].velocity *= 1.4f; } for (int num763 = 0; num763 < 10; num763++) { int num764 = Dust.NewDust(new Vector2(projectile.position.X, projectile.position.Y), projectile.width, projectile.height, 6, 0f, 0f, 100, default(Color), 2.5f); Main.dust[num764].noGravity = true; Main.dust[num764].velocity *= 5f; num764 = Dust.NewDust(new Vector2(projectile.position.X, projectile.position.Y), projectile.width, projectile.height, 6, 0f, 0f, 100, default(Color), 1.5f); Main.dust[num764].velocity *= 3f; } int num765 = Gore.NewGore(new Vector2(projectile.position.X, projectile.position.Y), default(Vector2), Main.rand.Next(61, 64), 1f); Main.gore[num765].velocity *= 0.4f; Gore expr_18B0E_cp_0 = Main.gore[num765]; expr_18B0E_cp_0.velocity.X = expr_18B0E_cp_0.velocity.X + 1f; Gore expr_18B2E_cp_0 = Main.gore[num765]; expr_18B2E_cp_0.velocity.Y = expr_18B2E_cp_0.velocity.Y + 1f; num765 = Gore.NewGore(new Vector2(projectile.position.X, projectile.position.Y), default(Vector2), Main.rand.Next(61, 64), 1f); Main.gore[num765].velocity *= 0.4f; Gore expr_18BB2_cp_0 = Main.gore[num765]; expr_18BB2_cp_0.velocity.X = expr_18BB2_cp_0.velocity.X - 1f; Gore expr_18BD2_cp_0 = Main.gore[num765]; expr_18BD2_cp_0.velocity.Y = expr_18BD2_cp_0.velocity.Y + 1f; num765 = Gore.NewGore(new Vector2(projectile.position.X, projectile.position.Y), default(Vector2), Main.rand.Next(61, 64), 1f); Main.gore[num765].velocity *= 0.4f; Gore expr_18C56_cp_0 = Main.gore[num765]; expr_18C56_cp_0.velocity.X = expr_18C56_cp_0.velocity.X + 1f; Gore expr_18C76_cp_0 = Main.gore[num765]; expr_18C76_cp_0.velocity.Y = expr_18C76_cp_0.velocity.Y - 1f; num765 = Gore.NewGore(new Vector2(projectile.position.X, projectile.position.Y), default(Vector2), Main.rand.Next(61, 64), 1f); Main.gore[num765].velocity *= 0.4f; Gore expr_18CFA_cp_0 = Main.gore[num765]; expr_18CFA_cp_0.velocity.X = expr_18CFA_cp_0.velocity.X - 1f; Gore expr_18D1A_cp_0 = Main.gore[num765]; expr_18D1A_cp_0.velocity.Y = expr_18D1A_cp_0.velocity.Y - 1f; Main.PlaySound(SoundID.Item62, projectile.position); for (int i = 0; i < 2; i++) { Projectile meteor = Main.projectile[Projectile.NewProjectile(projectile.Center + new Vector2(Main.rand.Next(-20, 20), -1000), QwertyMethods.PolarVector(10, (float)Math.PI / 2 + (float)Math.PI / 16 * Main.rand.NextFloat(-1, 1)), 424 + Main.rand.Next(2), (int)(projectile.damage), projectile.knockBack, projectile.owner, 0f, 0.5f + (float)Main.rand.NextDouble() * 0.3f)]; meteor.magic = false; meteor.thrown = true; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(meteor); } } }
public override void PostUpdateMiscEffects() { if (controlled) { player.noFallDmg = true; player.GetModPlayer <ShapeShifterPlayer>().noDraw = true; player.GetModPlayer <ShapeShifterPlayer>().hovercraft = true; Mount mount = player.mount; player.GetModPlayer <ShapeShifterPlayer>().morphed = true; player.GetModPlayer <ShapeShifterPlayer>().overrideWidth = 40; //player.height = 30; player.noItems = true; hoverDrift += (float)Math.PI / 60; player.statDefense = 14 + player.GetModPlayer <ShapeShifterPlayer>().morphDef; if ((player.controlUp || player.controlJump) && hoverHeight < maxHoverHeight) { hoverHeight++; } else if (player.controlDown && hoverHeight > minHoverHeight) { hoverHeight--; } for (; currentHeight < (maxHoverHeight + 10); currentHeight++) { if (!Collision.CanHit(player.Center, 0, 0, player.Center + new Vector2(0, currentHeight), 0, 0)) { break; } } hoverTo = hoverHeight + (float)Math.Sin(hoverDrift) * 16; //player.velocity.Y = ( currentHeight-hoverHeight) * .1f; if (Math.Abs(currentHeight - hoverTo) > hoverSpeed * 4) { if (currentHeight - hoverTo > 0) { player.velocity.Y = hoverSpeed; hoverSpeed = 6f; } if (currentHeight - hoverTo < 0) { player.velocity.Y = -hoverSpeed; hoverSpeed = 6f; } } else { player.velocity.Y = (currentHeight - hoverTo) * .1f; } Vector2 shootFrom = player.Top; shootFrom.Y += 8; float pointAt = (QwertysRandomContent.LocalCursor[player.whoAmI] - shootFrom).ToRotation(); player.GetModPlayer <ShapeShifterPlayer>(mod).tankCannonRotation = QwertyMethods.SlowRotation(player.GetModPlayer <ShapeShifterPlayer>(mod).tankCannonRotation, pointAt, 3); //Main.NewText(player.GetModPlayer<ShapeShifterPlayer>(mod).tankCannonRotation); if (shotCooldown > 0) { shotCooldown--; } if (player.whoAmI == Main.myPlayer && Main.mouseLeft && !player.HasBuff(mod.BuffType("MorphSickness")) && shotCooldown == 0) { shotCooldown = 12; Projectile p = Main.projectile[Projectile.NewProjectile(shootFrom + QwertyMethods.PolarVector(19, player.GetModPlayer <ShapeShifterPlayer>(mod).tankCannonRotation), QwertyMethods.PolarVector(12, player.GetModPlayer <ShapeShifterPlayer>(mod).tankCannonRotation), ProjectileID.GreenLaser, (int)(HovercraftShift.dmg * player.GetModPlayer <ShapeShifterPlayer>().morphDamage), HovercraftShift.kb, player.whoAmI)]; p.magic = false; p.GetGlobalProjectile <MorphProjectile>().morph = true; p.penetrate = 1; p.alpha = 0; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(p); } Main.PlaySound(SoundID.Item12); } currentHeight = 0; //reset hoverTo = 0; hoverSpeed = 3f; } }
public override void AI() { Player player = Main.player[projectile.owner]; QwertyPlayer modPlayer = player.GetModPlayer <QwertyPlayer>(); shotCounter++; if (modPlayer.SpaceFighter) { projectile.timeLeft = 2; } if (QwertyMethods.ClosestNPC(ref target, 1000, projectile.Center, false, player.MinionAttackTargetNPC) && (player.Center - projectile.Center).Length() < 1000) { projectile.rotation = QwertyMethods.SlowRotation(projectile.rotation, (target.Center - projectile.Center).ToRotation(), 6); if ((target.Center - projectile.Center).Length() < 300) { if (shotCounter >= 20) { shotCounter = 0; Projectile l = Main.projectile[Projectile.NewProjectile(projectile.Center, QwertyMethods.PolarVector(12f, projectile.rotation), ProjectileID.GreenLaser, projectile.damage, projectile.knockBack, projectile.owner)]; l.magic = false; l.minion = true; //l.scale = .5f; l.penetrate = 1; //l.alpha = 0; if (Main.netMode == 1) { QwertysRandomContent.UpdateProjectileClass(l); } Main.PlaySound(SoundID.Item12, projectile.position); } } else { Thrust(); } } else { projectile.rotation = QwertyMethods.SlowRotation(projectile.rotation, (player.Center - projectile.Center).ToRotation(), 6); if ((player.Center - projectile.Center).Length() < 300) { } else { Thrust(); } } for (int k = 0; k < 1000; k++) { if (Main.projectile[k].type == projectile.type && k != projectile.whoAmI) { if (Collision.CheckAABBvAABBCollision(projectile.position + new Vector2(projectile.width / 4, projectile.height / 4), new Vector2(projectile.width / 2, projectile.height / 2), Main.projectile[k].position + new Vector2(Main.projectile[k].width / 4, Main.projectile[k].height / 4), new Vector2(Main.projectile[k].width / 2, Main.projectile[k].height / 2))) { projectile.velocity += new Vector2((float)Math.Cos((projectile.Center - Main.projectile[k].Center).ToRotation()) * .1f, (float)Math.Sin((projectile.Center - Main.projectile[k].Center).ToRotation()) * .1f); } } } if (projectile.velocity.Length() > maxSpeed) { projectile.velocity = projectile.velocity.SafeNormalize(-Vector2.UnitY) * maxSpeed; } }