From 1f2241dd1d48e0a117eb49bb47a8045c9e246828 Mon Sep 17 00:00:00 2001 From: nathomp3 Date: Thu, 4 Nov 2021 14:12:18 -0400 Subject: [PATCH 1/7] Increased chlorophyte staff damage --- Items/ChlorophyteStaff.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Items/ChlorophyteStaff.cs b/Items/ChlorophyteStaff.cs index b700596..0d39c1f 100644 --- a/Items/ChlorophyteStaff.cs +++ b/Items/ChlorophyteStaff.cs @@ -18,7 +18,7 @@ public override void SetStaticDefaults() public override void SetDefaults() { - item.damage = 10; + item.damage = 30; item.width = 40; item.height = 40; item.useTime = 36; From 6f11d6c1ba658a3ae7520d2af99ac34c2de9a348 Mon Sep 17 00:00:00 2001 From: nathomp3 Date: Sat, 6 Nov 2021 18:48:24 -0400 Subject: [PATCH 2/7] Added shroomite minion AI --- Buffs/ChlorophyteBuff.cs | 8 +- Buffs/ShroomiteBuff.cs | 32 ++ Buffs/ShroomiteBuff.png | Bin 0 -> 737 bytes Items/ShroomiteStaff.cs | 54 +++ Projectiles/ShroomiteMinion.cs | 641 ++++++++++++++++++++++++++++++++ Projectiles/ShroomiteMinion.png | Bin 1967 -> 12740 bytes 6 files changed, 731 insertions(+), 4 deletions(-) create mode 100644 Buffs/ShroomiteBuff.cs create mode 100644 Buffs/ShroomiteBuff.png create mode 100644 Items/ShroomiteStaff.cs create mode 100644 Projectiles/ShroomiteMinion.cs diff --git a/Buffs/ChlorophyteBuff.cs b/Buffs/ChlorophyteBuff.cs index 0e8a9ce..8389dfd 100644 --- a/Buffs/ChlorophyteBuff.cs +++ b/Buffs/ChlorophyteBuff.cs @@ -6,19 +6,19 @@ namespace DubNation.Buffs { - public class ChlorophyteBuff : ModBuff + public class ShroomiteBuff : ModBuff { public override void SetDefaults() { - DisplayName.SetDefault("Chlorophyte Minion"); - Description.SetDefault("The chlorophyte minion will fight for you"); + DisplayName.SetDefault("Shroomite Minion"); + Description.SetDefault("The shroomite minion will fight for you"); Main.buffNoSave[Type] = true; Main.buffNoTimeDisplay[Type] = true; } public override void Update(Player player, ref int buffIndex) { - if (player.ownedProjectileCounts[ModContent.ProjectileType()] > 0) + if (player.ownedProjectileCounts[ModContent.ProjectileType()] > 0) { player.buffTime[buffIndex] = 18000; } diff --git a/Buffs/ShroomiteBuff.cs b/Buffs/ShroomiteBuff.cs new file mode 100644 index 0000000..0e8a9ce --- /dev/null +++ b/Buffs/ShroomiteBuff.cs @@ -0,0 +1,32 @@ +using Microsoft.Xna.Framework; +using System; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace DubNation.Buffs +{ + public class ChlorophyteBuff : ModBuff + { + public override void SetDefaults() + { + DisplayName.SetDefault("Chlorophyte Minion"); + Description.SetDefault("The chlorophyte minion will fight for you"); + Main.buffNoSave[Type] = true; + Main.buffNoTimeDisplay[Type] = true; + } + + public override void Update(Player player, ref int buffIndex) + { + if (player.ownedProjectileCounts[ModContent.ProjectileType()] > 0) + { + player.buffTime[buffIndex] = 18000; + } + else + { + player.DelBuff(buffIndex); + buffIndex--; + } + } + } +} diff --git a/Buffs/ShroomiteBuff.png b/Buffs/ShroomiteBuff.png new file mode 100644 index 0000000000000000000000000000000000000000..5e362d4e480c998abd16703dd3bca0d3c3941dc7 GIT binary patch literal 737 zcmeAS@N?(olHy`uVBq!ia0vp^azHG>!VDzk-2-}n6id3JuOkD)#(wTUiL5}rLb6AY zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=Ijcz0ZOO@_=LCuX(iDmI#Mq~ zBmeij`(Ly3KSR$K4&}t`tN&R=Et((x2ZBnEudjjX7)yfuf*Bm1-ADs*lDyqrxaF@O zIRNCamw5WRvOi@K;N{fuc1xHJ6e{*~aSV~TTzVmpm&K5SB|xXAb)$h;) z4z0A=bu#bL)4Y8ZDL)Rr;Y@JnW4>}gUcAl3^5fy%npb&FUhK)@^O;bTUSh4zJ^h00 z38!Vjf-!fK>WabzH|`4GpeL{^!C8<`)MX5lF!N|bKP}jgn*U&7)(Adhr(#pg{+rYrez(D+w)_)WYx%nxXX_dG& zr0t*N4Ah_ivY|LXt)x7$D3u|jq@?5!QZv&tN*IhxZuI0d0F{Vg zDhba_Dal|kHn0ng398jsWFMk>o;yJQ>n5b5emm*DuK}&@Tb`F{cO^ p4C&^^CWe+q=Eg=w#^&axrj`bVX7(>9JpdZO;OXk;vd$@?2>^Q~?F0Y- literal 0 HcmV?d00001 diff --git a/Items/ShroomiteStaff.cs b/Items/ShroomiteStaff.cs new file mode 100644 index 0000000..9e9f63a --- /dev/null +++ b/Items/ShroomiteStaff.cs @@ -0,0 +1,54 @@ +using Microsoft.Xna.Framework; +using System; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace DubNation.Items +{ + class ShroomiteStaff : ModItem + { + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Shroomite Staff"); + Tooltip.SetDefault("Summons a shroomite minion to fight for you."); + ItemID.Sets.GamepadWholeScreenUseRange[item.type] = true; + ItemID.Sets.LockOnIgnoresCollision[item.type] = true; + } + + public override void SetDefaults() + { + item.damage = 30; + item.width = 40; + item.height = 40; + item.useTime = 36; + item.useAnimation = 36; + item.useStyle = ItemUseStyleID.SwingThrow; + item.value = 10; + item.rare = ItemRarityID.Blue; + item.UseSound = SoundID.Item1; + item.mana = 10; + item.noMelee = true; + item.summon = true; + item.buffType = ModContent.BuffType(); + item.shoot = ModContent.ProjectileType(); + } + + public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) + { + player.AddBuff(item.buffType, 2); + position = Main.MouseWorld; + return true; + } + + public override void AddRecipes() + { + ModRecipe recipe = new ModRecipe(mod); + recipe.AddIngredient(ItemID.ChlorophyteBar, 9); + recipe.AddIngredient(ItemID.TurtleShell, 1); + recipe.AddTile(TileID.MythrilAnvil); + recipe.SetResult(this); + recipe.AddRecipe(); + } + } +} diff --git a/Projectiles/ShroomiteMinion.cs b/Projectiles/ShroomiteMinion.cs new file mode 100644 index 0000000..4569fbc --- /dev/null +++ b/Projectiles/ShroomiteMinion.cs @@ -0,0 +1,641 @@ +using Microsoft.Xna.Framework; +using System; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace DubNation.Projectiles +{ + public class ShroomiteMinion : ModProjectile + { + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Shroomite"); + // Sets the amount of frames this minion has on its spritesheet + Main.projFrames[projectile.type] = 1; + // This is necessary for right-click targeting + ProjectileID.Sets.MinionTargettingFeature[projectile.type] = true; + + // These below are needed for a minion + // Denotes that this projectile is a pet or minion + Main.projPet[projectile.type] = true; + // This is needed so your minion can properly spawn when summoned and replaced when other minions are summoned + ProjectileID.Sets.MinionSacrificable[projectile.type] = true; + // Don't mistake this with "if this is true, then it will automatically home". It is just for damage reduction for certain NPCs + ProjectileID.Sets.Homing[projectile.type] = true; + } + + public sealed override void SetDefaults() + { + projectile.width = 42; + projectile.height = 42; + // Makes the minion go through tiles freely + projectile.tileCollide = true; + + // These below are needed for a minion weapon + // Only controls if it deals damage to enemies on contact (more on that later) + projectile.friendly = true; + // Only determines the damage type + projectile.minion = true; + // Amount of slots this minion occupies from the total minion slots available to the player (more on that later) + projectile.minionSlots = 1f; + // Needed so the minion doesn't despawn on collision with enemies or tiles + projectile.penetrate = -1; + } + + // Here you can decide if your minion breaks things like grass or pots + public override bool? CanCutTiles() + { + return false; + } + + // This is mandatory if your minion deals contact damage (further related stuff in AI() in the Movement region) + public override bool MinionContactDamage() + { + return false; + } + int delay = 0; + int target = -1; + public override void AI() + { + projectile.tileCollide = true; + float projSpeed2 = 12f; + if (delay == 0) + { + if (target != -1) + { + delay = 30; + NPC targetNPC = Main.npc[target]; + Vector2 minionToProjectile = projectile.Center - targetNPC.Center; + minionToProjectile.Normalize(); + minionToProjectile *= projSpeed2; + Vector2 velocity = -minionToProjectile; + Projectile.NewProjectile(projectile.Center, velocity, ProjectileID.PygmySpear, 60, 8, projectile.owner); + } + } + else + { + delay--; + } + if (Main.player[projectile.owner].dead || !Main.player[projectile.owner].active) + { + Main.player[projectile.owner].ClearBuff(ModContent.BuffType()); + return; + } + if (Main.player[projectile.owner].HasBuff(ModContent.BuffType())) + { + projectile.timeLeft = 2; + } + bool flag = false; + bool flag2 = false; + bool flag3 = false; + bool flag4 = false; + if (projectile.lavaWet) + { + projectile.ai[0] = 1f; + projectile.ai[1] = 0f; + } + int num = 10; + int num2 = 40 * (projectile.minionPos + 1) * Main.player[projectile.owner].direction; + if (Main.player[projectile.owner].position.X + (float)(Main.player[projectile.owner].width / 2) < projectile.position.X + (float)(projectile.width / 2) - (float)num + (float)num2) + { + flag = true; + } + else if (Main.player[projectile.owner].position.X + (float)(Main.player[projectile.owner].width / 2) > projectile.position.X + (float)(projectile.width / 2) + (float)num + (float)num2) + { + flag2 = true; + } + + if (projectile.ai[1] == 0f) + { + int num73 = 500; + num73 += 40 * projectile.minionPos; + if (projectile.localAI[0] > 0f) + { + num73 += 500; + } + if (Main.player[projectile.owner].rocketDelay2 > 0) + { + projectile.ai[0] = 1f; + } + Vector2 vector7 = new Vector2(projectile.position.X + (float)projectile.width * 0.5f, projectile.position.Y + (float)projectile.height * 0.5f); + float num74 = Main.player[projectile.owner].position.X + (float)(Main.player[projectile.owner].width / 2) - vector7.X; + float num75 = Main.player[projectile.owner].position.Y + (float)(Main.player[projectile.owner].height / 2) - vector7.Y; + float num76 = (float)Math.Sqrt(num74 * num74 + num75 * num75); + if (num76 > 2000f) + { + projectile.position.X = Main.player[projectile.owner].position.X + (float)(Main.player[projectile.owner].width / 2) - (float)(projectile.width / 2); + projectile.position.Y = Main.player[projectile.owner].position.Y + (float)(Main.player[projectile.owner].height / 2) - (float)(projectile.height / 2); + } + else if (num76 > (float)num73 || (Math.Abs(num75) > 300f && !(projectile.localAI[0] > 0f))) + { + if (num75 > 0f && projectile.velocity.Y < 0f) + { + projectile.velocity.Y = 0f; + } + if (num75 < 0f && projectile.velocity.Y > 0f) + { + projectile.velocity.Y = 0f; + } + projectile.ai[0] = 1f; + } + } + if (projectile.ai[0] != 0f) + { + int num78 = 100; + projectile.tileCollide = false; + Vector2 vector8 = new Vector2(projectile.position.X + (float)projectile.width * 0.5f, projectile.position.Y + (float)projectile.height * 0.5f); + float num79 = Main.player[projectile.owner].position.X + (float)(Main.player[projectile.owner].width / 2) - vector8.X; + num79 -= (float)(40 * Main.player[projectile.owner].direction); + float num80 = 800f; + bool flag7 = false; + int num81 = -1; + for (int num82 = 0; num82 < 200; num82++) + { + if (!Main.npc[num82].CanBeChasedBy(projectile)) + { + continue; + } + float num83 = Main.npc[num82].position.X + (float)(Main.npc[num82].width / 2); + float num84 = Main.npc[num82].position.Y + (float)(Main.npc[num82].height / 2); + if (Math.Abs(Main.player[projectile.owner].position.X + (float)(Main.player[projectile.owner].width / 2) - num83) + Math.Abs(Main.player[projectile.owner].position.Y + (float)(Main.player[projectile.owner].height / 2) - num84) < num80) + { + if (Collision.CanHit(projectile.position, projectile.width, projectile.height, Main.npc[num82].position, Main.npc[num82].width, Main.npc[num82].height)) + { + num81 = num82; + } + flag7 = true; + break; + } + } + if (!flag7) + { + num79 -= (float)(40 * projectile.minionPos * Main.player[projectile.owner].direction); + } + if (flag7 && num81 >= 0) + { + projectile.ai[0] = 0f; + } + float num85 = Main.player[projectile.owner].position.Y + (float)(Main.player[projectile.owner].height / 2) - vector8.Y; + float num86 = (float)Math.Sqrt(num79 * num79 + num85 * num85); + float num77 = 0.4f; + float num88 = 12f; + if (num88 < Math.Abs(Main.player[projectile.owner].velocity.X) + Math.Abs(Main.player[projectile.owner].velocity.Y)) + { + num88 = Math.Abs(Main.player[projectile.owner].velocity.X) + Math.Abs(Main.player[projectile.owner].velocity.Y); + } + if (num86 < (float)num78 && Main.player[projectile.owner].velocity.Y == 0f && projectile.position.Y + (float)projectile.height <= Main.player[projectile.owner].position.Y + (float)Main.player[projectile.owner].height && !Collision.SolidCollision(projectile.position, projectile.width, projectile.height)) + { + projectile.ai[0] = 0f; + if (projectile.velocity.Y < -6f) + { + projectile.velocity.Y = -6f; + } + } + if (num86 < 60f) + { + num79 = projectile.velocity.X; + num85 = projectile.velocity.Y; + } + else + { + num86 = num88 / num86; + num79 *= num86; + num85 *= num86; + } + if (projectile.velocity.X < num79) + { + projectile.velocity.X += num77; + if (projectile.velocity.X < 0f) + { + projectile.velocity.X += num77 * 1.5f; + } + } + if (projectile.velocity.X > num79) + { + projectile.velocity.X -= num77; + if (projectile.velocity.X > 0f) + { + projectile.velocity.X -= num77 * 1.5f; + } + } + if (projectile.velocity.Y < num85) + { + projectile.velocity.Y += num77; + if (projectile.velocity.Y < 0f) + { + projectile.velocity.Y += num77 * 1.5f; + } + } + if (projectile.velocity.Y > num85) + { + projectile.velocity.Y -= num77; + if (projectile.velocity.Y > 0f) + { + projectile.velocity.Y -= num77 * 1.5f; + } + } + if (projectile.frame < 12) + { + projectile.frame = Main.rand.Next(12, 18); + projectile.frameCounter = 0; + } + if ((double)projectile.velocity.X > 0.5) + { + projectile.spriteDirection = -1; + } + else if ((double)projectile.velocity.X < -0.5) + { + projectile.spriteDirection = 1; + } + if (projectile.spriteDirection == -1) + { + projectile.rotation = (float)Math.Atan2(projectile.velocity.Y, projectile.velocity.X); + } + else + { + projectile.rotation = (float)Math.Atan2(projectile.velocity.Y, projectile.velocity.X) + 3.14f; + } + } + else + { + float num106 = 40 * projectile.minionPos; + int num107 = 30; + int num108 = 60; + projectile.localAI[0] -= 1f; + if (projectile.localAI[0] < 0f) + { + projectile.localAI[0] = 0f; + } + if (projectile.ai[1] > 0f) + { + projectile.ai[1] -= 1f; + } + else + { + float num109 = projectile.position.X; + float num110 = projectile.position.Y; + float num111 = 100000f; + float num112 = num111; + int num113 = -1; + NPC ownerMinionAttackTargetNPC = projectile.OwnerMinionAttackTargetNPC; + if (ownerMinionAttackTargetNPC != null && ownerMinionAttackTargetNPC.CanBeChasedBy(projectile)) + { + float num114 = ownerMinionAttackTargetNPC.position.X + (float)(ownerMinionAttackTargetNPC.width / 2); + float num115 = ownerMinionAttackTargetNPC.position.Y + (float)(ownerMinionAttackTargetNPC.height / 2); + float num116 = Math.Abs(projectile.position.X + (float)(projectile.width / 2) - num114) + Math.Abs(projectile.position.Y + (float)(projectile.height / 2) - num115); + if (num116 < num111) + { + if (num113 == -1 && num116 <= num112) + { + num112 = num116; + num109 = num114; + num110 = num115; + } + if (Collision.CanHit(projectile.position, projectile.width, projectile.height, ownerMinionAttackTargetNPC.position, ownerMinionAttackTargetNPC.width, ownerMinionAttackTargetNPC.height)) + { + num111 = num116; + num109 = num114; + num110 = num115; + num113 = ownerMinionAttackTargetNPC.whoAmI; + } + } + } + if (num113 == -1) + { + for (int num117 = 0; num117 < 200; num117++) + { + if (!Main.npc[num117].CanBeChasedBy(projectile)) + { + continue; + } + float num118 = Main.npc[num117].position.X + (float)(Main.npc[num117].width / 2); + float num119 = Main.npc[num117].position.Y + (float)(Main.npc[num117].height / 2); + float num120 = Math.Abs(projectile.position.X + (float)(projectile.width / 2) - num118) + Math.Abs(projectile.position.Y + (float)(projectile.height / 2) - num119); + if (num120 < num111) + { + if (num113 == -1 && num120 <= num112) + { + num112 = num120; + num109 = num118; + num110 = num119; + } + if (Collision.CanHit(projectile.position, projectile.width, projectile.height, Main.npc[num117].position, Main.npc[num117].width, Main.npc[num117].height)) + { + num111 = num120; + num109 = num118; + num110 = num119; + num113 = num117; + target = num117; + } + } + } + } + if (num113 == -1) + { + target = -1; + } + if (num113 == -1 && num112 < num111) + { + num111 = num112; + } + float num121 = 400f; + if ((double)projectile.position.Y > Main.worldSurface * 16.0) + { + num121 = 200f; + } + if (num111 < num121 + num106 && num113 == -1) + { + float num122 = num109 - (projectile.position.X + (float)(projectile.width / 2)); + if (num122 < -5f) + { + flag = true; + flag2 = false; + } + else if (num122 > 5f) + { + flag2 = true; + flag = false; + } + } + else if (num113 >= 0 && num111 < 800f + num106) + { + projectile.localAI[0] = num108; + float num123 = num109 - (projectile.position.X + (float)(projectile.width / 2)); + if (num123 > 450f || num123 < -450f) + { + if (num123 < -50f) + { + flag = true; + flag2 = false; + } + else if (num123 > 50f) + { + flag2 = true; + flag = false; + } + } + else if (projectile.owner == Main.myPlayer) + { + projectile.ai[1] = num107; + Vector2 vector11 = new Vector2(projectile.position.X + (float)projectile.width * 0.5f, projectile.position.Y + (float)(projectile.height / 2) - 8f); + float num124 = num109 - vector11.X + (float)Main.rand.Next(-20, 21); + float num125 = Math.Abs(num124) * 0.1f; + num125 = num125 * (float)Main.rand.Next(0, 100) * 0.001f; + float num126 = num110 - vector11.Y + (float)Main.rand.Next(-20, 21) - num125; + float num127 = (float)Math.Sqrt(num124 * num124 + num126 * num126); + num127 = 18f / num127; + num124 *= num127; + num126 *= num127; + int num128 = projectile.damage; + if (num124 < 0f) + { + projectile.direction = -1; + } + if (num124 > 0f) + { + projectile.direction = 1; + } + projectile.netUpdate = true; + } + } + } + Vector2 vector12 = Vector2.Zero; + bool flag9 = false; + if (projectile.ai[1] != 0f) + { + flag = false; + flag2 = false; + } + else if (projectile.localAI[0] == 0f) + { + projectile.direction = Main.player[projectile.owner].direction; + } + if (!flag9) + { + projectile.rotation = 0f; + } + float num154 = 0.08f; + float num155 = 6.5f; + if (flag) + { + if ((double)projectile.velocity.X > -3.5) + { + projectile.velocity.X -= num154; + } + else + { + projectile.velocity.X -= num154 * 0.25f; + } + } + else if (flag2) + { + if ((double)projectile.velocity.X < 3.5) + { + projectile.velocity.X += num154; + } + else + { + projectile.velocity.X += num154 * 0.25f; + } + } + else + { + projectile.velocity.X *= 0.9f; + if (projectile.velocity.X >= 0f - num154 && projectile.velocity.X <= num154) + { + projectile.velocity.X = 0f; + } + } + if (flag || flag2) + { + int num156 = (int)(projectile.position.X + (float)(projectile.width / 2)) / 16; + int j2 = (int)(projectile.position.Y + (float)(projectile.height / 2)) / 16; + if (flag) + { + num156--; + } + if (flag2) + { + num156++; + } + num156 += (int)projectile.velocity.X; + if (WorldGen.SolidTile(num156, j2)) + { + flag4 = true; + } + } + if (Main.player[projectile.owner].position.Y + (float)Main.player[projectile.owner].height - 8f > projectile.position.Y + (float)projectile.height) + { + flag3 = true; + } + Collision.StepUp(ref projectile.position, ref projectile.velocity, projectile.width, projectile.height, ref projectile.stepSpeed, ref projectile.gfxOffY); + if (projectile.velocity.Y == 0f) + { + if ((projectile.velocity.X < 0f || projectile.velocity.X > 0f)) + { + int num157 = (int)(projectile.position.X + (float)(projectile.width / 2)) / 16; + int j3 = (int)(projectile.position.Y + (float)(projectile.height / 2)) / 16 + 1; + if (flag) + { + num157--; + } + if (flag2) + { + num157++; + } + WorldGen.SolidTile(num157, j3); + } + if (flag4) + { + int num158 = (int)(projectile.position.X + (float)(projectile.width / 2)) / 16; + int num159 = (int)(projectile.position.Y + (float)projectile.height) / 16; + if (WorldGen.SolidTileAllowBottomSlope(num158, num159) || Main.tile[num158, num159].halfBrick() || Main.tile[num158, num159].slope() > 0) + { + try + { + num158 = (int)(projectile.position.X + (float)(projectile.width / 2)) / 16; + num159 = (int)(projectile.position.Y + (float)(projectile.height / 2)) / 16; + if (flag) + { + num158--; + } + if (flag2) + { + num158++; + } + num158 += (int)projectile.velocity.X; + if (!WorldGen.SolidTile(num158, num159 - 1) && !WorldGen.SolidTile(num158, num159 - 2)) + { + projectile.velocity.Y = -5.1f; + } + else if (!WorldGen.SolidTile(num158, num159 - 2)) + { + projectile.velocity.Y = -7.1f; + } + else if (WorldGen.SolidTile(num158, num159 - 5)) + { + projectile.velocity.Y = -11.1f; + } + else if (WorldGen.SolidTile(num158, num159 - 4)) + { + projectile.velocity.Y = -10.1f; + } + else + { + projectile.velocity.Y = -9.1f; + } + } + catch + { + projectile.velocity.Y = -9.1f; + } + } + } + } + if (projectile.velocity.X > num155) + { + projectile.velocity.X = num155; + } + if (projectile.velocity.X < 0f - num155) + { + projectile.velocity.X = 0f - num155; + } + if (projectile.velocity.X < 0f) + { + projectile.direction = -1; + } + if (projectile.velocity.X > 0f) + { + projectile.direction = 1; + } + if (projectile.velocity.X > num154 && flag2) + { + projectile.direction = 1; + } + if (projectile.velocity.X < 0f - num154 && flag) + { + projectile.direction = -1; + } + if (projectile.direction == -1) + { + projectile.spriteDirection = 1; + } + if (projectile.direction == 1) + { + projectile.spriteDirection = -1; + } + bool flag11 = projectile.position.X - projectile.oldPosition.X == 0f; + if (projectile.ai[1] > 0f) + { + if (projectile.localAI[1] == 0f) + { + projectile.localAI[1] = 1f; + projectile.frame = 1; + } + if (projectile.frame != 0) + { + projectile.frameCounter++; + if (projectile.frameCounter > 4) + { + projectile.frame++; + projectile.frameCounter = 0; + } + if (projectile.frame >= 4) + { + projectile.frame = 0; + } + } + } + else if (projectile.velocity.Y == 0f) + { + projectile.localAI[1] = 0f; + if (flag11) + { + projectile.frame = 0; + projectile.frameCounter = 0; + } + else if ((double)projectile.velocity.X < -0.8 || (double)projectile.velocity.X > 0.8) + { + projectile.frameCounter += (int)Math.Abs(projectile.velocity.X); + projectile.frameCounter++; + if (projectile.frameCounter > 6) + { + projectile.frame++; + projectile.frameCounter = 0; + } + if (projectile.frame < 5) + { + projectile.frame = 5; + } + if (projectile.frame >= 11) + { + projectile.frame = 5; + } + } + else + { + projectile.frame = 0; + projectile.frameCounter = 0; + } + } + else if (projectile.velocity.Y < 0f) + { + projectile.frameCounter = 0; + projectile.frame = 4; + } + else if (projectile.velocity.Y > 0f) + { + projectile.frameCounter = 0; + projectile.frame = 4; + } + projectile.velocity.Y += 0.4f; + if (projectile.velocity.Y > 10f) + { + projectile.velocity.Y = 10f; + } + _ = projectile.velocity; + } + } + } +} diff --git a/Projectiles/ShroomiteMinion.png b/Projectiles/ShroomiteMinion.png index 64198bdf1421b7d5d97d0f0038638e2cdc93f38b..4b0468a89b393b5c0e3dc6e3101859bd297cc3a7 100644 GIT binary patch literal 12740 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 KMNUMnLSTYSt}A^2 literal 1967 zcmb7Fdo5P#!BAzW(l4?+oY6N8n z3Gt|UwP-ym6itdMs#9(&B2~(?)#`0skNKIIf9_iMpL^CiYoC42+H38-&-ZUP+}`noqv{WOAwCJ98$hoT#eWZhXsIRKc3W z6$Tl!SJQ0mY^$zH2RlsclTvNrJ3GPpX$?X-xC%#Eo1{ter=!M~mX^eP_0!NI-#n(6 zsq{MRdEJxu>onUoS!LX#vVREnznChoJmZzPxxQYSc;UjOOBep**4@n;`)O4wjSasZ zkErA(Ys@^U`AtE$TCS_??gM7E$Xo^QAbu>D=NCouwm=vFEl*KR3m zcrs(QWb-LJ6A{Od>SR!kKAzRR54FuV{^EGK9p|z}-teP4hD^eJ?Y@`KGFod{9W_UF+!ewNXc}U2-;0ZjbF*q#Tjy){m z`75sp)aYLXl_in(=!~TMXEL#i$U|^`S{00aaNNLwOo5YT z8_{F2it1~&{~;dXpUS66W#C-MXuM&3l#JCgh1oORZGj*SKpw`B#m2td5SM0dthec+1ju3Zpg0 zhH&Vu7x3p+a9dj!#M|e_c%)Y2rke&|KOzqS6gb#ubQ&%5_dPl`t8s+@$;=hXHGh9D zQ5JUAxt7$&^CO6H4nc*fG4=C2H>>ghkO6%X9O0jz>)La}TSM;|7m@oOUA!3pWw zy4e_;?XB*eI~NVwQ{xPGgLX8T!@eP&(YPqaIq+eb5@9upm4N#Bi@Np^NRvokRtr8W zQ{e_E$qda;;K=~6@Bpw@Sv)9ixdI}#d2%`l~f?gL3fQC)H>Y5nvsKX=#!LQ$@Hx>(OZ^*cSN!R z-UW;=S%Wtnc3-W8s_~BJ_&i(ONA)pN+Cx_vyFnacfiiK`{F!`D=(pISH6G!+p5IpG zb2LG+b3Q>rZ<+ctQ7`snuiQA$0kkPRnMKxNm!5{^iWGtRA7-`Dq{43iYK=qy9q7zD zc{piR3zA)uFxlIgzl z66IzPB%lichvh4F9WP^B|1a8RPyIWi&Qk(Gs;-eNM!KypW1W=`CV{MA_|b`aa>G$J7sWk=n~h9L7hQYO<{oIQWd< Date: Sat, 6 Nov 2021 19:11:35 -0400 Subject: [PATCH 3/7] Updated minion UI --- Projectiles/ShroomiteMinion.cs | 6 +- Projectiles/ShroomiteMinion.png | Bin 12740 -> 7190 bytes Projectiles/ShroomiteProjectile.cs | 112 ++++++++++++++++++++++++++++ Projectiles/ShroomiteProjectile.png | Bin 0 -> 231 bytes 4 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 Projectiles/ShroomiteProjectile.cs create mode 100644 Projectiles/ShroomiteProjectile.png diff --git a/Projectiles/ShroomiteMinion.cs b/Projectiles/ShroomiteMinion.cs index 4569fbc..61eae99 100644 --- a/Projectiles/ShroomiteMinion.cs +++ b/Projectiles/ShroomiteMinion.cs @@ -12,7 +12,7 @@ public override void SetStaticDefaults() { DisplayName.SetDefault("Shroomite"); // Sets the amount of frames this minion has on its spritesheet - Main.projFrames[projectile.type] = 1; + Main.projFrames[projectile.type] = 18; // This is necessary for right-click targeting ProjectileID.Sets.MinionTargettingFeature[projectile.type] = true; @@ -27,8 +27,8 @@ public override void SetStaticDefaults() public sealed override void SetDefaults() { - projectile.width = 42; - projectile.height = 42; + projectile.width = 50; + projectile.height = 48; // Makes the minion go through tiles freely projectile.tileCollide = true; diff --git a/Projectiles/ShroomiteMinion.png b/Projectiles/ShroomiteMinion.png index 4b0468a89b393b5c0e3dc6e3101859bd297cc3a7..91b9b1cce3d79503c32732af9251c45efe7bd0e0 100644 GIT binary patch literal 7190 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 literal 12740 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 KMNUMnLSTYSt}A^2 diff --git a/Projectiles/ShroomiteProjectile.cs b/Projectiles/ShroomiteProjectile.cs new file mode 100644 index 0000000..3f55807 --- /dev/null +++ b/Projectiles/ShroomiteProjectile.cs @@ -0,0 +1,112 @@ +using System; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace DubNation.Projectiles +{ + class ShroomiteProjectile : ModProjectile + { + public override void SetStaticDefaults() + { + Main.projPet[projectile.type] = true; + ProjectileID.Sets.Homing[projectile.type] = true; + } + + public override void SetDefaults() + { + projectile.width = 18; + projectile.height = 26; + projectile.friendly = true; + projectile.minion = true; + projectile.penetrate = -1; + projectile.timeLeft = 240; + projectile.ignoreWater = true; + projectile.tileCollide = false; + } + + public override bool MinionContactDamage() + { + return true; + } + + public override void AI() + { + #region Find target + // Starting search distance + float distanceFromTarget = 700f; + Vector2 targetCenter = projectile.position; + bool foundTarget = false; + Player player = Main.player[projectile.owner]; + // This code is required if your minion weapon has the targeting feature + if (player.HasMinionAttackTargetNPC) + { + NPC npc = Main.npc[player.MinionAttackTargetNPC]; + float between = Vector2.Distance(npc.Center, projectile.Center); + // Reasonable distance away so it doesn't target across multiple screens + if (between < 2000f) + { + distanceFromTarget = between; + targetCenter = npc.Center; + projectile.hide = false; + foundTarget = true; + } + } + if (!foundTarget) + { + projectile.hide = true; + // This code is required either way, used for finding a target + for (int i = 0; i < Main.maxNPCs; i++) + { + NPC npc = Main.npc[i]; + if (npc.CanBeChasedBy()) + { + float between = Vector2.Distance(npc.Center, projectile.Center); + bool closest = Vector2.Distance(projectile.Center, targetCenter) > between; + bool inRange = between < distanceFromTarget; + if ((closest && inRange) || !foundTarget) + { + distanceFromTarget = between; + targetCenter = npc.Center; + projectile.hide = false; + foundTarget = true; + } + } + } + } + #endregion + + #region Movement + // Default movement parameters (here for attacking) + float speed = 15f * projectile.timeLeft / 240; + float inertia = 20f; + if (foundTarget) + { + // The immediate range around the target (so it doesn't latch onto it when close) + if (distanceFromTarget > 20) + { + Vector2 direction = targetCenter - projectile.Center; + direction.Normalize(); + direction *= speed; + projectile.velocity = (projectile.velocity * (inertia - 1) + direction) / inertia; + } + } + #endregion + + #region Animation and visuals + if (foundTarget) + { + projectile.rotation = projectile.DirectionTo(targetCenter).ToRotation() + 90; + } + else + { + projectile.rotation = projectile.velocity.ToRotation() + 90; + } + // Some visuals here + Lighting.AddLight(projectile.Center, Color.White.ToVector3() * 0.78f); + #endregion + + } + } +} diff --git a/Projectiles/ShroomiteProjectile.png b/Projectiles/ShroomiteProjectile.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd7deded90702f6ab6ab2e7f7da191a2b94753a GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs3<8<6apcd8pmF%}28J29*~C-V}>S>Wm77-Hd{ zoZ`Uj=H~X_(dqfQxydfmoE|o)usJB6ITb&D(E-2Y$I)!d67yPjPfTh31d_;N7LE~!2!C9>U!Z-G-p&7nC5RJU^Ie0duwQx`A1cET@1=Pg%Vw7+ak zX8v9Fd13sITH7@uYOaxuwbuDJ4gc(u3+>qMv9Rt#fc?y~v!<~2J>Ie>^T*>V29ZV6 e9aF9wGi<3A>-+k};{edD44$rjF6*2Univ4nkXz;e literal 0 HcmV?d00001 From c187b83aee7fc2bf9dda038ad5a387fe909369ec Mon Sep 17 00:00:00 2001 From: nathomp3 Date: Sat, 6 Nov 2021 19:18:57 -0400 Subject: [PATCH 4/7] Added shroomite projectile changes --- Projectiles/ShroomiteMinion.cs | 2 +- Projectiles/ShroomiteProjectile.cs | 90 +----------------------------- 2 files changed, 4 insertions(+), 88 deletions(-) diff --git a/Projectiles/ShroomiteMinion.cs b/Projectiles/ShroomiteMinion.cs index 61eae99..8f777e4 100644 --- a/Projectiles/ShroomiteMinion.cs +++ b/Projectiles/ShroomiteMinion.cs @@ -70,7 +70,7 @@ public override void AI() minionToProjectile.Normalize(); minionToProjectile *= projSpeed2; Vector2 velocity = -minionToProjectile; - Projectile.NewProjectile(projectile.Center, velocity, ProjectileID.PygmySpear, 60, 8, projectile.owner); + Projectile.NewProjectile(projectile.Center, velocity, ModContent.ProjectileType(), 60, 8, projectile.owner); } } else diff --git a/Projectiles/ShroomiteProjectile.cs b/Projectiles/ShroomiteProjectile.cs index 3f55807..1fe8a15 100644 --- a/Projectiles/ShroomiteProjectile.cs +++ b/Projectiles/ShroomiteProjectile.cs @@ -16,97 +16,13 @@ public override void SetStaticDefaults() public override void SetDefaults() { - projectile.width = 18; - projectile.height = 26; - projectile.friendly = true; - projectile.minion = true; - projectile.penetrate = -1; - projectile.timeLeft = 240; - projectile.ignoreWater = true; - projectile.tileCollide = false; + projectile.CloneDefaults(ProjectileID.PygmySpear); + aiType = ProjectileID.PygmySpear; } public override bool MinionContactDamage() { return true; } - - public override void AI() - { - #region Find target - // Starting search distance - float distanceFromTarget = 700f; - Vector2 targetCenter = projectile.position; - bool foundTarget = false; - Player player = Main.player[projectile.owner]; - // This code is required if your minion weapon has the targeting feature - if (player.HasMinionAttackTargetNPC) - { - NPC npc = Main.npc[player.MinionAttackTargetNPC]; - float between = Vector2.Distance(npc.Center, projectile.Center); - // Reasonable distance away so it doesn't target across multiple screens - if (between < 2000f) - { - distanceFromTarget = between; - targetCenter = npc.Center; - projectile.hide = false; - foundTarget = true; - } - } - if (!foundTarget) - { - projectile.hide = true; - // This code is required either way, used for finding a target - for (int i = 0; i < Main.maxNPCs; i++) - { - NPC npc = Main.npc[i]; - if (npc.CanBeChasedBy()) - { - float between = Vector2.Distance(npc.Center, projectile.Center); - bool closest = Vector2.Distance(projectile.Center, targetCenter) > between; - bool inRange = between < distanceFromTarget; - if ((closest && inRange) || !foundTarget) - { - distanceFromTarget = between; - targetCenter = npc.Center; - projectile.hide = false; - foundTarget = true; - } - } - } - } - #endregion - - #region Movement - // Default movement parameters (here for attacking) - float speed = 15f * projectile.timeLeft / 240; - float inertia = 20f; - if (foundTarget) - { - // The immediate range around the target (so it doesn't latch onto it when close) - if (distanceFromTarget > 20) - { - Vector2 direction = targetCenter - projectile.Center; - direction.Normalize(); - direction *= speed; - projectile.velocity = (projectile.velocity * (inertia - 1) + direction) / inertia; - } - } - #endregion - - #region Animation and visuals - if (foundTarget) - { - projectile.rotation = projectile.DirectionTo(targetCenter).ToRotation() + 90; - } - else - { - projectile.rotation = projectile.velocity.ToRotation() + 90; - } - // Some visuals here - Lighting.AddLight(projectile.Center, Color.White.ToVector3() * 0.78f); - #endregion - - } - } + } } From 9d36f9d510668f4f9ca94536335770e6192ba071 Mon Sep 17 00:00:00 2001 From: nathomp3 Date: Sat, 6 Nov 2021 19:24:43 -0400 Subject: [PATCH 5/7] Updated build.txt= --- build.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.txt b/build.txt index e7b58c4..9dffb77 100644 --- a/build.txt +++ b/build.txt @@ -1,4 +1,4 @@ displayName = DubNation author = Penguin -version = 0.2.11 +version = 0.3.0 homepage = https://github.com/Nick-NCSU/DubNationMod \ No newline at end of file From 7117efc42721528eb0d5fcdb48845cf41084481d Mon Sep 17 00:00:00 2001 From: ibby0034 <93641169+ibby0034@users.noreply.github.com> Date: Sat, 6 Nov 2021 19:37:42 -0400 Subject: [PATCH 6/7] Add files via upload --- Projectiles/ShroomiteMinion.png | Bin 1967 -> 6339 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Projectiles/ShroomiteMinion.png b/Projectiles/ShroomiteMinion.png index 64198bdf1421b7d5d97d0f0038638e2cdc93f38b..1d35c125a5ec19a77e3f0ed35e03e867f98b4f14 100644 GIT binary patch literal 6339 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 NW9=#}hbStl{{qyLGDQFY literal 1967 zcmb7Fdo5P#!BAzW(l4?+oY6N8n z3Gt|UwP-ym6itdMs#9(&B2~(?)#`0skNKIIf9_iMpL^CiYoC42+H38-&-ZUP+}`noqv{WOAwCJ98$hoT#eWZhXsIRKc3W z6$Tl!SJQ0mY^$zH2RlsclTvNrJ3GPpX$?X-xC%#Eo1{ter=!M~mX^eP_0!NI-#n(6 zsq{MRdEJxu>onUoS!LX#vVREnznChoJmZzPxxQYSc;UjOOBep**4@n;`)O4wjSasZ zkErA(Ys@^U`AtE$TCS_??gM7E$Xo^QAbu>D=NCouwm=vFEl*KR3m zcrs(QWb-LJ6A{Od>SR!kKAzRR54FuV{^EGK9p|z}-teP4hD^eJ?Y@`KGFod{9W_UF+!ewNXc}U2-;0ZjbF*q#Tjy){m z`75sp)aYLXl_in(=!~TMXEL#i$U|^`S{00aaNNLwOo5YT z8_{F2it1~&{~;dXpUS66W#C-MXuM&3l#JCgh1oORZGj*SKpw`B#m2td5SM0dthec+1ju3Zpg0 zhH&Vu7x3p+a9dj!#M|e_c%)Y2rke&|KOzqS6gb#ubQ&%5_dPl`t8s+@$;=hXHGh9D zQ5JUAxt7$&^CO6H4nc*fG4=C2H>>ghkO6%X9O0jz>)La}TSM;|7m@oOUA!3pWw zy4e_;?XB*eI~NVwQ{xPGgLX8T!@eP&(YPqaIq+eb5@9upm4N#Bi@Np^NRvokRtr8W zQ{e_E$qda;;K=~6@Bpw@Sv)9ixdI}#d2%`l~f?gL3fQC)H>Y5nvsKX=#!LQ$@Hx>(OZ^*cSN!R z-UW;=S%Wtnc3-W8s_~BJ_&i(ONA)pN+Cx_vyFnacfiiK`{F!`D=(pISH6G!+p5IpG zb2LG+b3Q>rZ<+ctQ7`snuiQA$0kkPRnMKxNm!5{^iWGtRA7-`Dq{43iYK=qy9q7zD zc{piR3zA)uFxlIgzl z66IzPB%lichvh4F9WP^B|1a8RPyIWi&Qk(Gs;-eNM!KypW1W=`CV{MA_|b`aa>G$J7sWk=n~h9L7hQYO<{oIQWd< Date: Sat, 6 Nov 2021 19:53:49 -0400 Subject: [PATCH 7/7] Fixed last frame --- Projectiles/ShroomiteMinion.png | Bin 6339 -> 6987 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Projectiles/ShroomiteMinion.png b/Projectiles/ShroomiteMinion.png index 1d35c125a5ec19a77e3f0ed35e03e867f98b4f14..b93e546663329d5175ee00abba6d48dd7cb2342a 100644 GIT binary patch literal 6987 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 literal 6339 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 NW9=#}hbStl{{qyLGDQFY