From 979b6adde2483d17df794133b2626730590cb1e5 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sat, 3 Dec 2022 10:00:04 +0100 Subject: [PATCH 01/11] code style improvements --- Items/KatanaRedo.cs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Items/KatanaRedo.cs b/Items/KatanaRedo.cs index 71f6367..545558b 100644 --- a/Items/KatanaRedo.cs +++ b/Items/KatanaRedo.cs @@ -10,19 +10,16 @@ public class KatanaRedo : GlobalItem { public override void ModifyTooltips(Item item, List tooltips) { - if (item.type == ItemID.Katana) { - tooltips.Insert(5, new TooltipLine(YHTMod.GetInstance(), "flavor" , "Nothing personel kid.")); - tooltips.Insert(6, new TooltipLine(YHTMod.GetInstance(), "usage" , "Right click to teleport behind them.")); - } - + if (item.type != ItemID.Katana) return; + tooltips.Insert(5, new TooltipLine(YHTMod.GetInstance(), "flavor" , "Nothing personel kid.")); + tooltips.Insert(6, new TooltipLine(YHTMod.GetInstance(), "usage" , "Right click to teleport behind them.")); } public override bool AltFunctionUse(Item item, Player player) { - if (item.type == ItemID.Katana) { - return true; + if (item.type != ItemID.Katana) { + return base.AltFunctionUse(item, player); } - - return base.AltFunctionUse(item, player); + return true; } public override bool? UseItem(Item item, Player player) { From faedafac3d7a21984551f6d2c0c80cdf4eb3934a Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sat, 3 Dec 2022 14:53:59 +0100 Subject: [PATCH 02/11] toclafane --- Buffs/ToclafaneMinionBuff.cs | 24 +++ Buffs/ToclafaneMinionBuff.png | Bin 0 -> 483 bytes Items/ToclafaneStaff.cs | 44 +++++ Items/ToclafaneStaff.png | Bin 0 -> 338 bytes Projectiles/Weapons/ToclafaneMinion.cs | 220 ++++++++++++++++++++++++ Projectiles/Weapons/ToclafaneMinion.png | Bin 0 -> 483 bytes 6 files changed, 288 insertions(+) create mode 100644 Buffs/ToclafaneMinionBuff.cs create mode 100644 Buffs/ToclafaneMinionBuff.png create mode 100644 Items/ToclafaneStaff.cs create mode 100644 Items/ToclafaneStaff.png create mode 100644 Projectiles/Weapons/ToclafaneMinion.cs create mode 100644 Projectiles/Weapons/ToclafaneMinion.png diff --git a/Buffs/ToclafaneMinionBuff.cs b/Buffs/ToclafaneMinionBuff.cs new file mode 100644 index 0000000..2433d33 --- /dev/null +++ b/Buffs/ToclafaneMinionBuff.cs @@ -0,0 +1,24 @@ +using Terraria; +using Terraria.ModLoader; +using YHTMod.Projectiles.Weapons; + +namespace YHTMod.Buffs; + +public class ToclafaneMinionBuff : ModBuff { + + public override void SetStaticDefaults() { + DisplayName.SetDefault("Summon Toclafane"); + Description.SetDefault("It came from a parallel world to fight for its Master."); + 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--; + } + } +} \ No newline at end of file diff --git a/Buffs/ToclafaneMinionBuff.png b/Buffs/ToclafaneMinionBuff.png new file mode 100644 index 0000000000000000000000000000000000000000..0f32619c286a07aa809bcdf681c895a50b9cd2b9 GIT binary patch literal 483 zcmV<90UZ8`P)Px$ok>JNR9J=WRy%IPFbt)Ojy^;>3UJO6FAfZ7$YlbgL$9HwS<~ z!P2BYc837%1A;_9z88K(0sM7TYYy$3W&!~Cyx-wvx0~k&?~Cm{m25tC-Gtk^)GHgQs841^GX&jA305a#_k9!YutjY*^w(pru;q5`Oa5CRxul0rCQAxjG2L?MJ( z2nPy7k<$4h0o3*MI|p23%nLVyivoD5(abJIDi=fnTKRF2F~Ko=Ndfd=iLo_M@9Nn7kH2|0=;H}z7&@u6)O zHmtSP4*?qLx-NQPaE#*^<;Z$MNuiJujj!iCNRlri=iG$u0sz$;RMh+Rn*BD6Rskc2 z!Taje_ly1j@E!A0-^1X2CFN5wG$U{4vud2KZ4$ADe65H@2)Ns~z*_q|;n<3Y5b=+P Z#TT8J61Y|&t#<$b002ovPDHLkV1mX9(z*Zu literal 0 HcmV?d00001 diff --git a/Items/ToclafaneStaff.cs b/Items/ToclafaneStaff.cs new file mode 100644 index 0000000..963dbc0 --- /dev/null +++ b/Items/ToclafaneStaff.cs @@ -0,0 +1,44 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; +using YHTMod.Buffs; +using YHTMod.Projectiles.Weapons; + +namespace YHTMod.Items; + +public class ToclafaneStaff : ModItem { + + public override void SetStaticDefaults() { + DisplayName.SetDefault("Toclafane Staff"); + Tooltip.SetDefault("Summons a toclafane to remove population for you"); + ItemID.Sets.GamepadWholeScreenUseRange[Item.type] = true; // This lets the player target anywhere on the whole screen while using a controller. + ItemID.Sets.LockOnIgnoresCollision[Item.type] = true; + } + + public override void SetDefaults() { + Item.damage = 30; + Item.knockBack = 3f; + Item.mana = 10; + Item.width = 32; + Item.height = 32; + Item.useTime = 36; + Item.useAnimation = 36; + Item.useStyle = ItemUseStyleID.Swing; + Item.value = Item.buyPrice(0, 30, 0, 0); + Item.rare = ItemRarityID.Cyan; + Item.UseSound = SoundID.Item44; + Item.noMelee = true; + Item.DamageType = DamageClass.Summon; + Item.buffType = ModContent.BuffType(); + Item.shoot = ModContent.ProjectileType(); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) { + player.AddBuff(Item.buffType, 2); + position = Main.MouseWorld; + return base.Shoot(player, source, position, velocity, type, damage, knockback); + } + +} \ No newline at end of file diff --git a/Items/ToclafaneStaff.png b/Items/ToclafaneStaff.png new file mode 100644 index 0000000000000000000000000000000000000000..989695b60c940a7dedd6d0b6d510f57e2f10596b GIT binary patch literal 338 zcmV-Y0j>UtP)Px$3`s;mR9J<@);|h@U>t|>=WTcF2A-hR!85cp2+P&V)|T-NVrCh_=u0N`|b01yP8 z5?`Q=14P?B07(+d22^-a0aAFc07?9BfHeLyzy#hIU<&^lU=sfbFpa+j*ud)m kTR4ESi9_S3)CLal0(FO?10x9^asU7T07*qoM6N<$f?_3&tN;K2 literal 0 HcmV?d00001 diff --git a/Projectiles/Weapons/ToclafaneMinion.cs b/Projectiles/Weapons/ToclafaneMinion.cs new file mode 100644 index 0000000..9488b7f --- /dev/null +++ b/Projectiles/Weapons/ToclafaneMinion.cs @@ -0,0 +1,220 @@ +using System; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; +using YHTMod.Buffs; + +namespace YHTMod.Projectiles.Weapons; + +public class ToclafaneMinion : ModProjectile { + + private int shootCooldown = 0; + + public override void SetStaticDefaults() { + DisplayName.SetDefault("Toclafane Minion"); + // 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; + + Main.projPet[Projectile.type] = true; + ProjectileID.Sets.MinionSacrificable[Projectile.type] = true; + } + + public sealed override void SetDefaults() { + Projectile.width = 32; + Projectile.height = 32; + + Projectile.tileCollide = false; + + Projectile.friendly = true; + Projectile.minion = true; + Projectile.minionSlots = 1f; + Projectile.penetrate = -1; + } + + public override bool? CanCutTiles() { + return false; + } + + public override bool MinionContactDamage() { + return true; + } + + public override void AI() { + Player player = Main.player[Projectile.owner]; + + #region Active check + + if (player.dead || !player.active) { + player.ClearBuff(ModContent.BuffType()); + } + + if (player.HasBuff(ModContent.BuffType())) { + Projectile.timeLeft = 2; + } + + #endregion + + #region General behavior + + if (shootCooldown > 0) { + shootCooldown = shootCooldown - 1; + } + + Vector2 idlePosition = player.Center; + idlePosition.Y -= 48f; + + float minionPositionOffsetX = (10 + Projectile.minionPos * 40) * -player.direction; + idlePosition.X += minionPositionOffsetX; + + // All of this code below this line is adapted from Spazmamini code (ID 388, aiStyle 66) + + // Teleport to player if distance is too big + Vector2 vectorToIdlePosition = idlePosition - Projectile.Center; + float distanceToIdlePosition = vectorToIdlePosition.Length(); + if (Main.myPlayer == player.whoAmI && distanceToIdlePosition > 2000f) { + // Whenever you deal with non-regular events that change the behavior or position drastically, make sure to only run the code on the owner of the projectile, + // and then set netUpdate to true + Projectile.position = idlePosition; + Projectile.velocity *= 0.1f; + Projectile.netUpdate = true; + } + + // If your minion is flying, you want to do this independently of any conditions + float overlapVelocity = 0.04f; + for (int i = 0; i < Main.maxProjectiles; i++) { + // Fix overlap with other minions + Projectile other = Main.projectile[i]; + if (i != Projectile.whoAmI && other.active && other.owner == Projectile.owner && + Math.Abs(Projectile.position.X - other.position.X) + + Math.Abs(Projectile.position.Y - other.position.Y) < Projectile.width) { + if (Projectile.position.X < other.position.X) Projectile.velocity.X -= overlapVelocity; + else Projectile.velocity.X += overlapVelocity; + + if (Projectile.position.Y < other.position.Y) Projectile.velocity.Y -= overlapVelocity; + else Projectile.velocity.Y += overlapVelocity; + } + } + + #endregion + + #region Find target + + // Starting search distance + float distanceFromTarget = 700f; + Vector2 targetCenter = Projectile.position; + bool foundTarget = false; + + // 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; + foundTarget = true; + } + } + + if (!foundTarget) { + 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; + bool lineOfSight = Collision.CanHitLine(Projectile.position, Projectile.width, + Projectile.height, npc.position, npc.width, npc.height); + // Additional check for this specific minion behavior, otherwise it will stop attacking once it dashed through an enemy while flying though tiles afterwards + // The number depends on various parameters seen in the movement code below. Test different ones out until it works alright + bool closeThroughWall = between < 100f; + if (((closest && inRange) || !foundTarget) && (lineOfSight || closeThroughWall)) { + distanceFromTarget = between; + targetCenter = npc.Center; + foundTarget = true; + } + } + } + } + + Projectile.friendly = foundTarget; + + #endregion + + #region Movement + + // Default movement parameters (here for attacking) + float speed = 8f; + float inertia = 20f; + + if (foundTarget) { + Vector2 direction = targetCenter - Projectile.Center; + direction.Normalize(); + if (distanceFromTarget > 40f) { + // The immediate range around the target (so it doesn't latch onto it when close) + direction *= speed; + Projectile.velocity = (Projectile.velocity * (inertia - 1) + direction) / inertia; + } + + if (distanceFromTarget > 80f && shootCooldown == 0) { + shootCooldown = 60; // 1 second between shots + Projectile laser = Projectile.NewProjectileDirect(player.GetSource_FromThis(), Projectile.position, direction, ProjectileID.DeathLaser, 30, Projectile.knockBack, Projectile.owner); + laser.friendly = true; + laser.penetrate = 5; + } + } + else { + // Minion doesn't have a target: return to player and idle + if (distanceToIdlePosition > 600f) { + // Speed up the minion if it's away from the player + speed = 12f; + inertia = 60f; + } + else { + // Slow down the minion if closer to the player + speed = 4f; + inertia = 80f; + } + + if (distanceToIdlePosition > 20f) { + // The immediate range around the player (when it passively floats about) + + // This is a simple movement formula using the two parameters and its desired direction to create a "homing" movement + vectorToIdlePosition.Normalize(); + vectorToIdlePosition *= speed; + Projectile.velocity = (Projectile.velocity * (inertia - 1) + vectorToIdlePosition) / inertia; + } + else if (Projectile.velocity == Vector2.Zero) { + // If there is a case where it's not moving at all, give it a little "poke" + Projectile.velocity.X = -0.15f; + Projectile.velocity.Y = -0.05f; + } + } + + #endregion + + #region Animation and visuals + + // So it will lean slightly towards the direction it's moving + Projectile.rotation = Projectile.velocity.X * 0.05f; + + // This is a simple "loop through all frames from top to bottom" animation + int frameSpeed = 5; + Projectile.frameCounter++; + if (Projectile.frameCounter >= frameSpeed) { + Projectile.frameCounter = 0; + Projectile.frame++; + if (Projectile.frame >= Main.projFrames[Projectile.type]) { + Projectile.frame = 0; + } + } + + // Some visuals here + Lighting.AddLight(Projectile.Center, Color.White.ToVector3() * 0.78f); + + #endregion + } +} \ No newline at end of file diff --git a/Projectiles/Weapons/ToclafaneMinion.png b/Projectiles/Weapons/ToclafaneMinion.png new file mode 100644 index 0000000000000000000000000000000000000000..0f32619c286a07aa809bcdf681c895a50b9cd2b9 GIT binary patch literal 483 zcmV<90UZ8`P)Px$ok>JNR9J=WRy%IPFbt)Ojy^;>3UJO6FAfZ7$YlbgL$9HwS<~ z!P2BYc837%1A;_9z88K(0sM7TYYy$3W&!~Cyx-wvx0~k&?~Cm{m25tC-Gtk^)GHgQs841^GX&jA305a#_k9!YutjY*^w(pru;q5`Oa5CRxul0rCQAxjG2L?MJ( z2nPy7k<$4h0o3*MI|p23%nLVyivoD5(abJIDi=fnTKRF2F~Ko=Ndfd=iLo_M@9Nn7kH2|0=;H}z7&@u6)O zHmtSP4*?qLx-NQPaE#*^<;Z$MNuiJujj!iCNRlri=iG$u0sz$;RMh+Rn*BD6Rskc2 z!Taje_ly1j@E!A0-^1X2CFN5wG$U{4vud2KZ4$ADe65H@2)Ns~z*_q|;n<3Y5b=+P Z#TT8J61Y|&t#<$b002ovPDHLkV1mX9(z*Zu literal 0 HcmV?d00001 From e2f9131c0114fd883d7be3f604355d813def81b9 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sat, 3 Dec 2022 21:55:34 +0100 Subject: [PATCH 03/11] you are my vodoo child --- Items/ToclafaneStaff.cs | 40 ++++++++++- Projectiles/Weapons/ToclafaneMinion.cs | 87 ++++++++++++++++++++---- Projectiles/Weapons/ToclafaneMinion.png | Bin 483 -> 5667 bytes 3 files changed, 112 insertions(+), 15 deletions(-) diff --git a/Items/ToclafaneStaff.cs b/Items/ToclafaneStaff.cs index 963dbc0..82a8427 100644 --- a/Items/ToclafaneStaff.cs +++ b/Items/ToclafaneStaff.cs @@ -40,5 +40,43 @@ public class ToclafaneStaff : ModItem { position = Main.MouseWorld; return base.Shoot(player, source, position, velocity, type, damage, knockback); } - + + public override void AddRecipes() { + CreateRecipe() + .AddIngredient(ItemID.GuideVoodooDoll, 1) + .AddIngredient(ItemID.HallowedBar, 15) + .AddIngredient(ItemID.CopperWatch) + .AddTile(TileID.MythrilAnvil) + .Register(); + CreateRecipe() + .AddIngredient(ItemID.GuideVoodooDoll, 1) + .AddIngredient(ItemID.HallowedBar, 15) + .AddIngredient(ItemID.TinWatch) + .AddTile(TileID.MythrilAnvil) + .Register(); + CreateRecipe() + .AddIngredient(ItemID.GuideVoodooDoll, 1) + .AddIngredient(ItemID.HallowedBar, 15) + .AddIngredient(ItemID.SilverWatch) + .AddTile(TileID.MythrilAnvil) + .Register(); + CreateRecipe() + .AddIngredient(ItemID.GuideVoodooDoll, 1) + .AddIngredient(ItemID.HallowedBar, 15) + .AddIngredient(ItemID.TungstenWatch) + .AddTile(TileID.MythrilAnvil) + .Register(); + CreateRecipe() + .AddIngredient(ItemID.GuideVoodooDoll, 1) + .AddIngredient(ItemID.HallowedBar, 15) + .AddTile(TileID.MythrilAnvil) + .AddIngredient(ItemID.GoldWatch) + .Register(); + CreateRecipe() + .AddIngredient(ItemID.GuideVoodooDoll, 1) + .AddIngredient(ItemID.HallowedBar, 15) + .AddIngredient(ItemID.PlatinumWatch) + .AddTile(TileID.MythrilAnvil) + .Register(); + } } \ No newline at end of file diff --git a/Projectiles/Weapons/ToclafaneMinion.cs b/Projectiles/Weapons/ToclafaneMinion.cs index 9488b7f..f3532f4 100644 --- a/Projectiles/Weapons/ToclafaneMinion.cs +++ b/Projectiles/Weapons/ToclafaneMinion.cs @@ -10,11 +10,12 @@ namespace YHTMod.Projectiles.Weapons; public class ToclafaneMinion : ModProjectile { private int shootCooldown = 0; + private AttackMode attackMode = AttackMode.RANGED; public override void SetStaticDefaults() { DisplayName.SetDefault("Toclafane Minion"); // Sets the amount of frames this minion has on its spritesheet - Main.projFrames[Projectile.type] = 1; + Main.projFrames[Projectile.type] = 8; // This is necessary for right-click targeting ProjectileID.Sets.MinionTargettingFeature[Projectile.type] = true; @@ -25,6 +26,7 @@ public class ToclafaneMinion : ModProjectile { public sealed override void SetDefaults() { Projectile.width = 32; Projectile.height = 32; + Projectile.scale = 0.65f; Projectile.tileCollide = false; @@ -63,6 +65,8 @@ public class ToclafaneMinion : ModProjectile { shootCooldown = shootCooldown - 1; } + attackMode = AttackMode.RANGED; + Vector2 idlePosition = player.Center; idlePosition.Y -= 48f; @@ -92,7 +96,6 @@ public class ToclafaneMinion : ModProjectile { Math.Abs(Projectile.position.Y - other.position.Y) < Projectile.width) { if (Projectile.position.X < other.position.X) Projectile.velocity.X -= overlapVelocity; else Projectile.velocity.X += overlapVelocity; - if (Projectile.position.Y < other.position.Y) Projectile.velocity.Y -= overlapVelocity; else Projectile.velocity.Y += overlapVelocity; } @@ -159,11 +162,15 @@ public class ToclafaneMinion : ModProjectile { Projectile.velocity = (Projectile.velocity * (inertia - 1) + direction) / inertia; } - if (distanceFromTarget > 80f && shootCooldown == 0) { + if (distanceFromTarget <= 120f) { + attackMode = AttackMode.MELEE; + } + if (distanceFromTarget > 120f && shootCooldown == 0) { shootCooldown = 60; // 1 second between shots - Projectile laser = Projectile.NewProjectileDirect(player.GetSource_FromThis(), Projectile.position, direction, ProjectileID.DeathLaser, 30, Projectile.knockBack, Projectile.owner); + Projectile laser = Projectile.NewProjectileDirect(player.GetSource_FromThis(), Projectile.Center, direction, ProjectileID.DeathLaser, 30, Projectile.knockBack, Projectile.owner); laser.friendly = true; laser.penetrate = 5; + attackMode = AttackMode.RANGED; } } else { @@ -186,8 +193,7 @@ public class ToclafaneMinion : ModProjectile { vectorToIdlePosition.Normalize(); vectorToIdlePosition *= speed; Projectile.velocity = (Projectile.velocity * (inertia - 1) + vectorToIdlePosition) / inertia; - } - else if (Projectile.velocity == Vector2.Zero) { + } else if (Projectile.velocity == Vector2.Zero) { // If there is a case where it's not moving at all, give it a little "poke" Projectile.velocity.X = -0.15f; Projectile.velocity.Y = -0.05f; @@ -200,21 +206,74 @@ public class ToclafaneMinion : ModProjectile { // So it will lean slightly towards the direction it's moving Projectile.rotation = Projectile.velocity.X * 0.05f; - - // This is a simple "loop through all frames from top to bottom" animation - int frameSpeed = 5; + + int frameSpeed = 8; Projectile.frameCounter++; if (Projectile.frameCounter >= frameSpeed) { Projectile.frameCounter = 0; - Projectile.frame++; - if (Projectile.frame >= Main.projFrames[Projectile.type]) { - Projectile.frame = 0; + if (attackMode == AttackMode.MELEE) { + switch (Projectile.frame) { + case 0: + Projectile.frame++; + break; + case 1: + Projectile.frame++; + break; + case 2: + Projectile.frame++; + break; + case 3: + Projectile.frame = 0; + break; + case 4: + Projectile.frame = 1; + break; + case 5: + Projectile.frame = 2; + break; + case 6: + Projectile.frame = 3; + break; + case 7: + Projectile.frame = 4; + break; + } + } + if (attackMode == AttackMode.RANGED) { + switch (Projectile.frame) { + case 0: + Projectile.frame = 5; + break; + case 1: + Projectile.frame = 6; + break; + case 2: + Projectile.frame = 7; + break; + case 3: + Projectile.frame = 4; + break; + case 4: + Projectile.frame++; + break; + case 5: + Projectile.frame++; + break; + case 6: + Projectile.frame++; + break; + case 7: + Projectile.frame = 4; + break; + } } } - - // Some visuals here Lighting.AddLight(Projectile.Center, Color.White.ToVector3() * 0.78f); #endregion } + + enum AttackMode { + MELEE, RANGED + } } \ No newline at end of file diff --git a/Projectiles/Weapons/ToclafaneMinion.png b/Projectiles/Weapons/ToclafaneMinion.png index 0f32619c286a07aa809bcdf681c895a50b9cd2b9..70541be1d62bcee46c4da8023d75ba83052b1327 100644 GIT binary patch literal 5667 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 literal 483 zcmV<90UZ8`P)Px$ok>JNR9J=WRy%IPFbt)Ojy^;>3UJO6FAfZ7$YlbgL$9HwS<~ z!P2BYc837%1A;_9z88K(0sM7TYYy$3W&!~Cyx-wvx0~k&?~Cm{m25tC-Gtk^)GHgQs841^GX&jA305a#_k9!YutjY*^w(pru;q5`Oa5CRxul0rCQAxjG2L?MJ( z2nPy7k<$4h0o3*MI|p23%nLVyivoD5(abJIDi=fnTKRF2F~Ko=Ndfd=iLo_M@9Nn7kH2|0=;H}z7&@u6)O zHmtSP4*?qLx-NQPaE#*^<;Z$MNuiJujj!iCNRlri=iG$u0sz$;RMh+Rn*BD6Rskc2 z!Taje_ly1j@E!A0-^1X2CFN5wG$U{4vud2KZ4$ADe65H@2)Ns~z*_q|;n<3Y5b=+P Z#TT8J61Y|&t#<$b002ovPDHLkV1mX9(z*Zu From 50c07dd04cdbdbb73170baa3da3d35d9f23ee1b7 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sun, 4 Dec 2022 12:31:41 +0100 Subject: [PATCH 04/11] toclafane minion buff icon --- Buffs/ToclafaneMinionBuff.png | Bin 483 -> 3266 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Buffs/ToclafaneMinionBuff.png b/Buffs/ToclafaneMinionBuff.png index 0f32619c286a07aa809bcdf681c895a50b9cd2b9..3677becad61d5f9fc73a57a12771e267009ef1a5 100644 GIT binary patch delta 3263 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 delta 458 zcmV;*0X6=@8RG+xBYyw^b5ch_0Itp)=>Px$ok>JNR9J=WRy%IPFbt)Ojy^;>3UJO6 zFAfZ7$YlbgL$9HwS<~!P2BYc837%1A;_9z88K(0sM7TYYy$3W&!~C zyx-wvx0~k&?~Cm{m25tC-Gtk^)GHgQs841^GX&wl{`gb?QaIUY%R0F6nc z6w+FbH=+Wlfe->1W0FERVj)Wk;6x#WSqKLTLy^+?A_3I(^g9P!WXuaiRiF{jIsDg} zr?Ld>n`V*-v@vx#KZhaF5;ExlBw7;+JddAZ0hBCNf?DFG1d9TAsnN_XMJg9W0b2QS zkukwBdr1NGV1J3RHBj&B*!_>cc{k+yD73zitb$nlI5~h^o-stb6>mg5(cmy37^g&f)zK5jSlQo`|}Z5KAIwbc&+8tS?(dSGyj;~3@0dO}H|kP?lr z=R8P~FCypMgzf?W)f-gQ`}LarHjGvQBZtBJ>eTm({zCxp9rIJ)!{B`- Date: Sun, 4 Dec 2022 12:33:16 +0100 Subject: [PATCH 05/11] newline at end of file --- Buffs/ToclafaneMinionBuff.cs | 2 +- Items/ToclafaneStaff.cs | 2 +- Projectiles/Weapons/ToclafaneMinion.cs | 18 ++++++++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Buffs/ToclafaneMinionBuff.cs b/Buffs/ToclafaneMinionBuff.cs index 2433d33..08703ee 100644 --- a/Buffs/ToclafaneMinionBuff.cs +++ b/Buffs/ToclafaneMinionBuff.cs @@ -21,4 +21,4 @@ public class ToclafaneMinionBuff : ModBuff { buffIndex--; } } -} \ No newline at end of file +} diff --git a/Items/ToclafaneStaff.cs b/Items/ToclafaneStaff.cs index 82a8427..bae006e 100644 --- a/Items/ToclafaneStaff.cs +++ b/Items/ToclafaneStaff.cs @@ -79,4 +79,4 @@ public class ToclafaneStaff : ModItem { .AddTile(TileID.MythrilAnvil) .Register(); } -} \ No newline at end of file +} diff --git a/Projectiles/Weapons/ToclafaneMinion.cs b/Projectiles/Weapons/ToclafaneMinion.cs index f3532f4..fece0a3 100644 --- a/Projectiles/Weapons/ToclafaneMinion.cs +++ b/Projectiles/Weapons/ToclafaneMinion.cs @@ -11,7 +11,7 @@ public class ToclafaneMinion : ModProjectile { private int shootCooldown = 0; private AttackMode attackMode = AttackMode.RANGED; - + public override void SetStaticDefaults() { DisplayName.SetDefault("Toclafane Minion"); // Sets the amount of frames this minion has on its spritesheet @@ -165,9 +165,11 @@ public class ToclafaneMinion : ModProjectile { if (distanceFromTarget <= 120f) { attackMode = AttackMode.MELEE; } + if (distanceFromTarget > 120f && shootCooldown == 0) { shootCooldown = 60; // 1 second between shots - Projectile laser = Projectile.NewProjectileDirect(player.GetSource_FromThis(), Projectile.Center, direction, ProjectileID.DeathLaser, 30, Projectile.knockBack, Projectile.owner); + Projectile laser = Projectile.NewProjectileDirect(player.GetSource_FromThis(), Projectile.Center, + direction, ProjectileID.DeathLaser, 30, Projectile.knockBack, Projectile.owner); laser.friendly = true; laser.penetrate = 5; attackMode = AttackMode.RANGED; @@ -193,7 +195,8 @@ public class ToclafaneMinion : ModProjectile { vectorToIdlePosition.Normalize(); vectorToIdlePosition *= speed; Projectile.velocity = (Projectile.velocity * (inertia - 1) + vectorToIdlePosition) / inertia; - } else if (Projectile.velocity == Vector2.Zero) { + } + else if (Projectile.velocity == Vector2.Zero) { // If there is a case where it's not moving at all, give it a little "poke" Projectile.velocity.X = -0.15f; Projectile.velocity.Y = -0.05f; @@ -206,7 +209,7 @@ public class ToclafaneMinion : ModProjectile { // So it will lean slightly towards the direction it's moving Projectile.rotation = Projectile.velocity.X * 0.05f; - + int frameSpeed = 8; Projectile.frameCounter++; if (Projectile.frameCounter >= frameSpeed) { @@ -239,6 +242,7 @@ public class ToclafaneMinion : ModProjectile { break; } } + if (attackMode == AttackMode.RANGED) { switch (Projectile.frame) { case 0: @@ -268,12 +272,14 @@ public class ToclafaneMinion : ModProjectile { } } } + Lighting.AddLight(Projectile.Center, Color.White.ToVector3() * 0.78f); #endregion } enum AttackMode { - MELEE, RANGED + MELEE, + RANGED } -} \ No newline at end of file +} From 6383b3938ba81b3cd381927b3c60dc9cb04c49d2 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sun, 4 Dec 2022 12:34:29 +0100 Subject: [PATCH 06/11] newlines --- Changes/NPCLoot.cs | 2 +- Items/CopperSwordOnAStick.cs | 2 +- Items/KatanaRedo.cs | 2 +- Items/MithrilPebbleOfPigSmiting.cs | 2 +- Projectiles/Weapons/CopperSwordOnAStickProjectile.cs | 2 +- Projectiles/Weapons/MithrilPebbleOfPigSmitingProjectile.cs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Changes/NPCLoot.cs b/Changes/NPCLoot.cs index c2c0a66..422d790 100644 --- a/Changes/NPCLoot.cs +++ b/Changes/NPCLoot.cs @@ -16,4 +16,4 @@ public class NpcLoot : GlobalNPC npcLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 400, 1, 1)); } } -} \ No newline at end of file +} diff --git a/Items/CopperSwordOnAStick.cs b/Items/CopperSwordOnAStick.cs index 3376e81..3eceb92 100644 --- a/Items/CopperSwordOnAStick.cs +++ b/Items/CopperSwordOnAStick.cs @@ -39,4 +39,4 @@ public class CopperSwordOnAStick : ModItem { .AddIngredient(ItemID.CopperShortsword) .Register(); } -} \ No newline at end of file +} diff --git a/Items/KatanaRedo.cs b/Items/KatanaRedo.cs index 545558b..4998ba0 100644 --- a/Items/KatanaRedo.cs +++ b/Items/KatanaRedo.cs @@ -49,4 +49,4 @@ public class KatanaRedo : GlobalItem { return null; } -} \ No newline at end of file +} diff --git a/Items/MithrilPebbleOfPigSmiting.cs b/Items/MithrilPebbleOfPigSmiting.cs index 859a7fa..37b365e 100644 --- a/Items/MithrilPebbleOfPigSmiting.cs +++ b/Items/MithrilPebbleOfPigSmiting.cs @@ -44,4 +44,4 @@ public class MithrilPebbleOfPigSmiting : ModItem { Item.shootSpeed = 20f; Item.shoot = ModContent.ProjectileType(); } -} \ No newline at end of file +} diff --git a/Projectiles/Weapons/CopperSwordOnAStickProjectile.cs b/Projectiles/Weapons/CopperSwordOnAStickProjectile.cs index f1c4b06..56c9d6c 100644 --- a/Projectiles/Weapons/CopperSwordOnAStickProjectile.cs +++ b/Projectiles/Weapons/CopperSwordOnAStickProjectile.cs @@ -29,4 +29,4 @@ class CopperSwordOnAStickProjectile : ModProjectile { DrawOriginOffsetX = 0; DrawOffsetX = 0; } -} \ No newline at end of file +} diff --git a/Projectiles/Weapons/MithrilPebbleOfPigSmitingProjectile.cs b/Projectiles/Weapons/MithrilPebbleOfPigSmitingProjectile.cs index 61a292d..44f163e 100644 --- a/Projectiles/Weapons/MithrilPebbleOfPigSmitingProjectile.cs +++ b/Projectiles/Weapons/MithrilPebbleOfPigSmitingProjectile.cs @@ -28,4 +28,4 @@ class MithrilPebbleOfPigSmitingProjectile : ModProjectile { Main.dust[dust].noGravity = true; Main.dust[dust].velocity *= 0.3f; } -} \ No newline at end of file +} From 26d93ae23024f91e992d52d071a5ddd6d0e4bc9a Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sun, 4 Dec 2022 12:51:29 +0100 Subject: [PATCH 07/11] branding and description --- build.txt | 2 +- description.txt | 7 ++++++- icon.png | Bin 3210 -> 30637 bytes 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/build.txt b/build.txt index c933a4f..68e1d3e 100644 --- a/build.txt +++ b/build.txt @@ -1,3 +1,3 @@ displayName = YHT Mod author = YouHaveTrouble -version = 0.1 \ No newline at end of file +version = 1.0 \ No newline at end of file diff --git a/description.txt b/description.txt index 44b3632..1d3568a 100644 --- a/description.txt +++ b/description.txt @@ -1 +1,6 @@ -Bunch of random additions ranging from QoL to random references \ No newline at end of file +Bunch of random additions ranging from QoL to random references + +Source: https://github.com/YouHaveTrouble/YHTMod + +Code: YouHaveTrouble +Sprites: YouHaveTrouble, Patrxon \ No newline at end of file diff --git a/icon.png b/icon.png index 707e83545d1815eee17ac0f636d82fae3c9b7710..41d1cd483f3a649da3c8297d01ea89bf5dc4fb4d 100644 GIT binary patch literal 30637 zcmV(!K;^%QP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3^wwj4*Ur2qRW-V%HsmgD0&y@OtUe}=e}DAm;O zbxTzud6}6J;SLzg-~iIy|NXz7`>+4{uTWBmE|=EpsMYgN9(lycZ@T~f`F;&P+kfq! z^7B{x`7b|rfBZ${M~Pq4_s4pFUO)MH`ST4e|NMOY_2;hbpU>$(9~A!hVEZTO%KH8J zxyhdoO7Z)7`1!LNKW~`zx5xSUf9`)ghW+yoe{L+sDSTdvF5VQ9xBvF-XO2@7?d|X0DFqsy`3)>rw1?yl}Cc$=+7^xAFhN@07>qXY<4bbU;en4VAmbG9vACe`2=1W10NP_XMg+G{rw03(|`Z+LGQ`TL-75Nwc@^_ zOqScw&gs9riVX?xXHAQ(Z*bo){_p>2V-q`AY?(U`IQ{xQVwLcxZ6(|1DOEP7M_rruv|z7| zC4N5!Uf76|YHDoFNR!RVx#Wt!bxdfwl1eV6)Y3{Xqs*FWuBF!6s&Hzy)N(7Ww$^$Z zZT8f2FTM8Gdmnv{I1(^c+^D0CKE{}ni_SdxtjX&qKUi_4l~-AHwbj>Hb7MX`@3QM| zyYI2*i61UjI!^Mweq0f84i!vTJ7=+$P%~ zc_C{GLMGhr^5T7P+f>HMH7<~&w|&wOEiP7^C^p@}`dJraHvZN0%DlJoakb2r zOTDub&rXObolr2GckbkerQJMU#0N*fl()k}R=H!YaWmKTb3a|5d(57D-GisJJ6 z2j0z2p91W~v9OWTcOPrLlVL0k^JQ;w%oBUP_{B-N2G$r_aGQhXl+WzVumHc(*2vsv z?|5W`ieNkt5v-!|W4(5RRQ78rX}1o@zUuC%-=c+?e)-Xa^YFpttpyf9m5f;F@9N-w z9v0jl?nZDu?XEDtM*YD{QcabmhuqG!o$Y# z-BUBs=ya#i}E-~Z+IpWC)i?;NaeH-AcpfGi}dzVv$Tz+l- zz&5v{e2-^kq1qn!ZX84hF@S&Z%L4}v?C3a8+)Mjj`pffdg5?hO5NWYzm>z*Kg9ABYB_3;= zt?nEM!mxlnN4ZW9MEJt~{A>ND{9uxo?Z@L*+^y9tc(~8(zhXRu)ysRimwLC1giU?T zm9k$l8~J4ixWn&ufE8r>DHqzPR~)h7CVnSynVbGG6^D!RrX4Fm%YO7c{?49gFY$#L z^xz#lm;ythd6${<7g!N-bYH-P+jQ&!Ml$a{kp-@}DKWZWEg;{1IR<^l0*0e2x zE$WLP!W%HZ{DaxNgIDVrCH`y$JeO^sJ5?=X`-KODqhf3GbII?5{MjxT4DkQyJ#rJ% z|8WbYxCcLiznvZ-69=q+aEc!?k=gT)13{ivO>9>D?z8P*yH$vy37`@`+A@Bw+X&wT zRNjU!-Xt=^jw0)@eBv@>MV>^EgX!`k%)hj7cw*w&!;atqHRA~TD&mwl;WeRN?7oeH zJNc`-^Q)eb^4bcOJhV9Pw{~S`Hrrtg2PB>QY*-&b^6GDR_%``4;s`7@fh+xXtOCA? z2@tl=!-pcqw0nj-HppmO)d*U{>1GLwpMz%NYTyEZfl>u|_^SrCg*xC*krE~d}2BncEgvWb6~7j9hrzzqbzvTaDsyZ7N81r`|>tOIjrR~(zv@m1WJ zhcgpf{2cxWRAVD+V9}Xd!QL@+0w#1a!0B-*;wZProAqJvY*rOon?r`BL%E>+BJa>f z^ubIEY$F6OTw`DwK|qOUr2}CheD{3fsSkf@&g3@W}<)ZV*3*su{(78 zftl<(J6O5#!lMO523&O^DcB6+S_DNe8{&x)@VN%(;2DW7XYltk{vLAmZncJi4l+`MOp)%gE-l5IyQo(o>O}b=OkJ{W+Ng7#!@2+fj8dG zMzA@o1@3priVKgq8`R;xuOt~^iHiZkf#m`qiN%di$N#_=3=ZFZ=({47F?@4TnhgJgjkJTb zxpbWWzm>;Af0TuJX7T7Kqm00liCjV9~@6 zASdY(vCalnF-aIHnj`~zj_Bu6jJJngw zq-q`qlo^44DCHqdYS7n_1;8qi4vSU7Q`79QW{5KCyDeR6;d)^i7p_z;V`FLer{$t zo;#f^g$SBwEB@7@` z8N?zjh2n@}zTkr_E9!<7xJMy!Dk&G=NEjAj1s(62`q9f-@}a9CpGw0GEATf;DCqD=S_%C`1d(6GC3fJBz)c>GhtN4$-JRPYSoV$QARCBEUAY7xlQn2cpn_E_zO05P zdKKSNuyH+2CBPo9YsyCOTv*&^M}`WQMTd#ULF_9^9ua5=y+n}KUjBJyX0i3=yV-^- z`NI}W3mI3rJDz=jJD4L(i2Dp(%QIugHA^2}zl)=LD3~icMC3o;ui{5L_ti0Sd?wpH@ zK_Q?&5TbNK0Lyp@QU*-3;_wMfKO_7wl9+;0lp*AWi2)ddmWnhy(akG^$&0J$Fb|mm zV@PXnnEq6f9~f!6(7W>nb9Yc=ls*s$#Kzk!ybyA2U7Ns3 zmsGfKN;|&juXOx^+}|vvMfj+W&l$>i@Ha=Q1(`BoWyq&5zn7+A=w#v14=6bVk6j2& zS@Nf*khjyZC=0GhM8js05JV<09Tm6Qe^7Bcnt)h!Fe{Ag7SLTg@kP%iJi{i5Wy%jq zFF_M^WMKCTZnFeLki$mv2`E8)Bc#;XMa$LzjI)K+2`GJ8o{D(DJ@Ui_ZPdn5>}UNY z9+e}&i4V6=6zVw#UXZHu@vsk9Xecp}WHcx6f(Y%Bo+^Z$Bc6gO0|Ri7vqW)lALyD6 zbR`L!%gxeQJK&<)>!59g{;^#67|5J4U-Te00;ghYw$KS&L^jo0rIZQEmKnV{;Z3j{ z7;S9e1{m`q2!agI5kA@$Xk_ymu8Kvm`3Mc{(@Pw6!l&Z11KgUj6$I!c!C&D49pPFK zoQHMhk%9Clcawi*Xa?>Jnbv_0dr9*d%4XK z`hZt%lhuLh;N2bHgOCK&OV5XJtsGgn$O`1~EdbCYU?6pn3)l`!lW2KhY+KQ6;+?=L z5kbe}s|odZr_VRA*GSoluxLaD(7wTybf_jKH;aD()v&}>6#fucm62Hm9cx4TpzGa^>qO4D3x_Lk(@^gP$@hrQi&VcEj4>MZATF5A0<{z$ za2eaYZmf?zW2J_WySnmPh$>475GfsCdY$z^Z~>#kEwg{4XXPC?+`CrD9L^lL4KxFe z!%LQOB@QHD!+nvU&%AlV&y~46Uakd_9%ynV#BN-y4Ha6TFOHaE~=EzfkGewp;RbWaha$jwPzKf6nUqMMznBS0^UEdXJyUq6%KbhdXeD5 zjrf04YexekS@h`2=qf?LRUHC`)hBF%xC@-de`~tLuTH#$=VV(hD4F@V zTs*Lb>@VO<3?=I7@WZ@+#4ccaXQ|RdECVh*S%-)V*9)EZ@G>@_EunT3jO_AsJgB2A zxlPfzh@m|n8Q}_CW&leMFoTN&mj$I2?I`8h^@@s0ES1R>K|-K6U|4=N2g%ZrJ^<)D zW(2_UAHY?PLabhPUV^sib_+<-0oJ3F6mOu0Q#tB+SAf<8r~+gsG#Gl>Ku!xtbQl@P zbCvv2YJ{tgr+A*Hv4H+h zMR^k}8~L$S2n9*$I*NJ@00eCSyo{dPUJ5pf_guj~6i*w51^_OTLgDmlYSYelBDiJ+ zixI6GnT7PsRoPDVAfvSNh7L6ygaFI|sdm1M4n)7yFP$F&4A2{TBUP&a<=uQgsau_- zUjFJr698l#ba!tBH;_RXus0)=zBU7qK*af*1dOC6YZOk?x!|4tKrUv0BVpvMH&@-* z>sC0d!&mc?q#}n=rm1=btB4ZBvK&6^hF~_|Dz$g{=lc2|a@N--=uwR(RNPs`~0gpqh zDEmSv;!3#?$ErdhZ-(bW4!JM9&J(BzRSGLvC3*jvXaD_ILKBNRwSQf-qxJ>rwF0Wc zIIAB}6qS5<)~I4OfCAeO8G~#|a7MF-k}KOk9H#q}4;38=VR5ZF4RfJlMa2OI`FU`V(mbbnW3+EP@0 zLx=rWVFfaYPbn?BkQk=~3?8C&l~4FL;I)emc_Fn(Z=<5mukZ9o2j};F?{xp|x9XT2 z@1IqS#~A3)fvwZIC9CX->^EeQ8Av|dw=12|hYtUZzQbN_NBS%sQYp_5fseowTp!#S zMdcnF4ui?4ybWmB5t;Ad66n?l#$$~DZ~|iS!$52kXN5)hfeW$j$mZxD+i!9h90Wl1 zAC^l>1|>Xop-D*Nk(5^N%CG_waCklp>ufw))p;$~Q0#vm>H&gYov3=AMYSwK!0mNZ zh;V1~jxtUy?~;8K4-B1G;~X$2UcFfCrUR~wzNw%$mqOJAtJVN!AP1@qnu8Z9i3Fmv z1VqY6$XZnuCT&!Be%(ljiVh4}XM$7b`$q|?sgk7xw4k`e!{8YO4GwOuOrT<2jxlAz zi9{j1tvjQlsD!JE)(K~!!5?_VKC~ffg z#!KktCPaNjMPY3Nw1Vt4cyuFz@CKsj(}5RU@lG9LxQpn9XNXj)EFpQo^uZ#aPuxg( z(JJ5&M%*k)m$vT5<4B>25#%Ee|@L>zj~{k#(UA` zVIcHDkTT_PHG*h4=zi{&V1A)k1!AMpmk2GpUb#RJ3Q55JA$Qp5(9tWh1)UD&fPz%O z4cIZj2F^y@3-*O&T5Yn)-Zi3hE-#j|Ny@9L0_W=2PK=QfZ-3|V=_8{!I5)mGe^*rR zw%1ogR9nXAM$3@e0a{=_R!!*zV?KL$+f2wYJeRmxg9BH9D5H=zW(`dK(l|&KS-;i%#u_m4OiYQ6*etpgp}R zpTO*1bZ!k~;mnUspI=x~bUI-^6>RdTqh0{3!I~Fl+jQF3tD?b@(c=}@MV^%nrz3 z{M3ni`gQ#t0ZA4Kq%+jjzxti}I)44CLSNWYQM6L^p_1jQC$&^lM@h8+R5evT;rRqP zk6@2P^v)V#f=x%H+4DCm!&9zRX50e69~~k}h7hiY4mXka ztjk_1bLy&f4!tN4IdKr&2{Fq`D2b|r3l$!u=Iv17C|y$Fkshyx6kG_!Q$f{jB1x(s zWwELQZNA!MMczBCfXWD@2$l%sZ}d^p_#X+R&P;HTba<}}`pa^vy6UG?k-HhcOJsy$b5{AlkK%tbHRhpA<*=ADOJVCc2NKZsS zeyVtWs){~CR^3XO-}6v+swh0(i&*AE!-76S17Wow8xS{Dh16JEtW9UOh!uX-Ru>(U zIT%;CD(cTgNli%_G+x({(GE!e*|+NPvDXA0V3Bo*q+`2-5yP00PVT}&_-Ui&;hw!X zDvyl+LQWctAX~L71kq=C{j%KYQ~3v|Tydj-YVIDg)Q^N8kwHI33^(nWSUu~3V8(3l zOfbc2I0?a+vI5gFD&8PG`it@4c3UMeT}3pKiZyr@kM9i?gVKN(h*QPn5*Hp2;A>-B z#ViU=zOQQ1NGN6bTv7p^k_=6iTM1!+fJiC_(GFylld*|O(U}$JZZPtT;bov?D&^8| z3=LE;V+F z>jd3dA~>+h|BJVZpPCeDVIxVW^%;S;vQ|+#%8}-x!FPK=hHyB&-$DZV`5DfmQBKQbvVM zMTa1}`k~S{_>9U^s*aeUV?na=p-|#u*CRCSC;$ReCu~(3VcSkU4M`@6V3hY05K@8h z%v*Ihq-+GrT$_bZQW5{n#^{vrJrGZrDwGg1D)i{8`{%af(Sb^kuL_a2QrxPrGO z84);&AQ@enRKc57FUs;I#G_OCR$Y^D5zI+utW~~(1gNh*ctjMVom;j1<@?$HWtk(4 z1J!iZ_TxaYs5YOpl+`;b217%qDsH7Rbf^NXK-F4a^@YF_*n0V&x+5~wKS>_nc7okh1q=(rME&Y4 zT32(5XAOwQxFny=L&A<#eh3T8W68g`SoKp0@7UZ?P3hI~jjVg%TB<2l-5?JMtyC!} z*6BBNq#~F=w*{uOkyZAg#QarGxi}1?F7SG)bY_MxbqNyf-F1qNfg)T`3?6&LCIb2^X{Z|gI)ap!gy5BN zc_q($L3#0b9#iY;*#eh5oB#tvZWvqfN?EjH1=~kuQ8%Fb@u#Lo!Tcb z+A@*GBO=^^nFokQhefM07FCq+Zk8OCUu(jeT2yyP0he|BgO^8f#1Wc`UCvjV{a}fz zsn?OuC`GkQI_LI8Fro{r3Sy#TlJIjFUH>zabN`CU{Wq8#W|^M*lghD16FLB`d8)xy zCjqNyMfpb}nGIs&6~g&D|K%rfi?8jgJMpZv{wHtMJA3_=0(5_q-^z}tCoO{;7zwxi zbgtf>iegn0`gAzRquW|R`EN+pIpqL!Ua$tC?5Z40hW>!}Gtej-hehGwo=LrF_U5kA z`yxI9d=Yhy+Sg8Y6Jen4<$ej0;QN)&5dOK_A`kWIebs5~{vIq#r`4#g!Y(Ftcf%d! z{eUrHz=}4Z#)!CZQ^kan&P8*#9x|Q%sQaUV_9&}_$*rN&*euCgRA2)hz5IC)mlI=J zL=>f4h#wt>6xGRzzk}dgaztl_1IWKc*+wy?pd3tfn|Pu|D>a|rwV{|I108n2$8UzD4#D^K?mS7B_CxUyGr+$00B=2xDju7 ztIAfn0t6@tyAy#B9j-#}$C|?1(UnsjP~7T`XGY`{1RDi;B||{Gq<)>MTG*|w#(j0x z61+;OA{_Eq$}sRzHKfqqw*E+680Vy79_1bhJL)_K%r^MP()nJ3R zJUjoLYDiJ{(uE9V9?_47r8X-Cz=SICjHl44TXW@l733UjgqWH|dqo@Xix^5)wqGr0 zN}dz%RHv?zYa)x%g6I?b_;kBlZ!~1kgu~ z4J8TU#?%d|7~ULMs>a1)986eGd#3r$Z_zp$_%^ zt2`h=(rTG2Y~<;54-X$Tse;_+0|(M=!2}kh2Xo=h*TwxEuFbZoaBi^`s!!)->VZ%R zHi7^~i>BBW1;)B}(SO(qQJAHcSRxRkiNGWNF!F$N>9h_Ic_M1Kl^R;0I8DVRV4aR? z`yhxnocZY}h=2yM$A{pBwFfr_GD_!vkS9H*LXAqQrp~1Tp+a3-dz7o?QiYvbqgD6@ zCaF;9%cgkLk=n{2oIn{DQLi%LOkAnqojxEWJ7iZ}+~@E7w5gmB5iAX^Q)Agi3NCAE zfLD9QBWMB;n6wc!`BhOxN-b|e#6*TzkD+XVg1_aR@D6krd^5YDO7`5Z6_&OO=OUa2;bk$ScbRVMa@YG5VDk*h!;%OCxpcf19f1z>!m2{3s(>wxdlJ29LtTT)`(V6i@>g_zEzxo;DTPYI{@KWaRZU_) z8{PKlIjxL>!giXqdE3FSth(o4A3rFxd`p{Wok4C|Zs;(SF7 zFygRB9SJ%!M%7jQ3+2Y1P(%B=1%ibW>;F8L^${TVf5m`A(|^ll@t@!Lk1jGHqvA2f zV!Zz+JmzCDABXv2Ki?bw{yz6_-uNf^`OEpI*pE^}Y%8i;gK9F|$Jw8<8k0a9%X-VP zJi=2`3XX1YYbXyVunle$8&cX^ zV=f&C*qO*uzf5StHK;ah?5LsASNNgzKG)^vM)fs$g*a>P;virhHV(!r1*e0fvz25T z+<-cTRBYez1xLh%-!)>gDjo?U@FH_ASgTh=8?kmtQ`|oe9**@bP>!ObyM@Q8(eKsl zROnn{=nA!{k8E4c?O=Bm>eY1&sMPDhy7aIp7Ev6{-B4vg%TR$3{B%28(hu#R8wt3A zvcO!qsbCMgENXcL;dz3{KdL6xD`Cb&;Uea#eqTa%f_13Zx5B0gLF}cU?MFjbt_u?A zXd2zoGi+rN0}g)@}$npmj z!&Ox&qCC6}{6N2zUfQI7@?YCg2>@bBNl`nN1AD)BzuTM zt#nv0qZiP)A^IyI>pVW|62&2eiqemOjrXRqBsd34}rXu?%R4nlj>GN#J4 zgOCFd?T8Ap>n)Y9T4r7ss*@_Ica^oL0NgL|Nai0*$Dq3P_m76Dc!0 zRE_nTEQpUzysEE})mIoCIu~P8yFgXJ3V6-EgLMd!Bm$Y#oGIjiaaUrilJl`^zC-D1 z2~fF?Akg9ZDJxq`n1o1|qi*k+b@m_FKAU-_tPLBh_D8Li<_7$91pw$O9%Q*4#;<-| zOW3HvkLBIBYLXezI&0>J*wpxsi5K@*-XZC){*$HxSuXffsj6uY={vsv$|Zia30Rjv zPEp0D>8D_eFkb+epIV9cew8~|t%H?V{8{brms$r+?^5?_&`A@z8%>5$s+!5G(ziZq zU9f{Sq_=g2GzgiJUK`w2!3T^`4UJ1Kr=->b*RCMAqml~5sR#Rgkcc)}!){rw$2q(kM$0vaM=e z)*b``>YLK-)KBbZaB(gVwj&-SZ*qV5t)0!NeVSDnV=Q$g0ahUCmhfvn zbyqaq1&iHk8j-dsnBrcN#7fjwHQz)`NQY7iPk8%`7mH3B8mA+5WO$t29U(matBTb^ zB+?*3{K6^(KkTihN>KR>%mfre@MHc%Jq?2>LO2C4QHqY}t07y8 zMW6`nW`;xE9P0IgLtG@4w?p${b0;XZ0N`1riC}_d?~*l2Mu>`Z&ax3YB?hyHI+?y7Es51+h0II&9ItxRn@zi2RBYkKfQJ(%rY#JIHBdQIzV*b z{ZxmOwyTRaWB*Ee@aRp~+j7ZjG7OB=NPr?C3LnwrGTa#<6;1aerV~q4s)}5{Q8!=E zQVTKc{$0hDpE#D#;1=7u3AIfWQ_g(X?w&kVeUUt4lS}lUPBjUkuX-*CwJm|KlCrEC zgq8kYq3r&1iE^(WTK4S4G`|rR5ChNxe4hxd5rQ!#rSdt2ePWW=_#X3RS z$jaL4N;)p&N>f)_)#lZNsMb8zFj@N@!X-@AB_E9@06d6sW%Z}#^@=WykoBr@6Ov|0 zO@>oFDFn=T+*eYJ>_NhRCB@w8*cwHv{*|H@0n3s==8x)w>L%iA)m4p;eFGgtyXq1k zO{n+tOhv(^c!!-NKVsBy4h(8Y1x}45L@V}TG7Kgmp%S16OVf+CQ{{m=xmHt|#mttj ze2SV$(|tX9OjnK6cD&9pUQDVk4*KFhm!I3KYQ5oSUIhP;IVn)B4k!r9Y1v zMNj3%u4M?C7hPq6E`SWX@%culUUiTfQb!=$WiC|YpHVpyA`t1<_bq`^a)6oi2X9vS#)Drs0M<4zje zq)Y|eIS^Dgw?Ct^Dv<AM(DG`ahWMxi~=nL1!gQ4?M^Mm_19dpHriLp*?iz)?IE&dXb zQz4Jec(0m#y4rHo+YM@}TO8XH<5e{Z?CtpqX(f8B@Q5Pgs3QYtFN&k@YsiJdE3sVy z`#(!jQzr37xe%4Eik0d*N}B%2FjtU=Feqe<(NPHgx!_Dia9FxdKpp8hrczoXnJ{aQ`uxNeurznR&i!CJysgymWsB%zwa3jok2dx+-kd74lbW zr`mGDA=E&pulcLbR$lmFAa>o*EMj!%Q`By+WfKy3l?HG;-IeOtiHh@SsO8T(xhhVl zfj0z1&A*vy$qe9|I(r1UO~ppH=!etLSHGyjUg>1R00dtSPW^aAz1})rxE9$|g{5Z7 z5y)ghfSNdl{;RH{_~%O1doI^|u|aV-iXDoLP5(%w@75i|@ftCvWpp}SnK zym~oR+(m8MBkj0_3s2NOCMQ*)wm3*Fk3$$+G7{p^U7_iOSa&gCcmxpT31OHXjxFI2F zdaJ6TJGUm7C_qCLMz3upWU)9{xklV5m5qHX^}DTbUgKwV{MVBvti+{bHVqxUnjbN- zfDXCcPHjeTg|2QgwYh5?PE`SURA!Ut0!>zlUbc$3rePqkl`e{}#Xg!;64YB% zF^~v5R-y(^L)~AEA5iLc?ybtPWtnaHkH$J))hrYZ>cW_Z&gLXFR4J|A7tNT?RtK@G zCSVha)rs27j5cmGRF{F{H>WI$iox(XglB|7V6In9x7DC9W5Alt94oP;2LW_ek(ME} zo%(62j7IVP12R`U{QKeW7>@m#==csWE{GnWJL^ zC0X#V=f!>8UACcy>|xiBY`_CE)VidEjSU1|>T*B!wkab1iYi@rH9N)nx~z-q&}nL9 z)X$+)R8eWj{7(`le2D!6y5+w8lGVR)r2gmmE!vsp75hOwH8NY+z`Y zSEE@uHcM9x1dDAQ0`o7`pmAb4I{c=k0E7G4bRd|yz9#^Yw|rBh zn)6z=-Y-=YNeDGbv7qtXI34Py5BsAAWe`R590TgQ2uogNV>~MyChnq&e*U^40Ug>!5_y^0>Ns%HeQBBFvi12n#r-hKR#H zG&F3fyE!GNv06L6tL$FFeO1hwrKFc-YC}Q_s2@WEfb|T>E>Z5NNms&Oz!G|slhd&E z{L}r?G?DN_oXQ7j7Ij6S<3yv?4_JmEYuHG zsfxZuWKp_)FG~tSBES;0Nl#_AhME=MdKT#7Az~PF(TSQ zpfV`$t#sWXf?iYuj!ejoTgT@bKnVR@Hk6{KujhFl$;+}eZ*tnmIP?~4{Edv$*jgJI zM~n{J*)*}AVZ55GFI88*j*+F*(G$6;b#yqB*U)N>b&=>$z(q@eK#2G|-LcFn{0nqc z$%tjvZGQRCOx(9M(L-~Pi-u#3tO3@#dzE-wWc#_Gst*Cd{_%H_NGRm;$y#(?+~+6& zbUiDJZyy|f`(PVnytFRv=c9jpaQf@V{`EsO*3B#B4$gSZ9Zuglm!{3R*S~=M#|7<4 z2!r1xr$+x0VzF_sDypU2h8hD$V79826%|8V?i_)DX6EmH$%Hy+*W+;g-62;p@sAO?6g_`{AiN^#yuL^ctMpm8}3Yi@rLf*sLxh z&j!@)R?EkmZmTm6+m1DgGwiD}bx5bidcjsB_%SrCB4}QR$}iEnuq~y#Gq+inI&pA$ zm%9xpf>A=H)U?U_WHln=0HOpkHx{GxnaUdVO&(XmQB{h{<}@9D^yM1HoOF__?X6#PlXq_iAs;|Ic`FXTH1^```T25fVHoUf}dn$`WYb=F^ zQmLLqrGAQO;4^LDWY0Fh9+x@NENEH|){ zL7hN^VPX>Ip2t*|PfwcV(>6f*hK=zG)-*CYsPkETOu#SV1v5l= z0SEeQ9TE}g|NP`%;A;cc8wM$)V`F|H-BY*x-kLiVb?^>Z8>(*6M^5OeT3a2A^-r|_HOjjzVvkPhzER$)v{f0kCV4w;yp8hK*amgp5~Q(v zsGnDfc~jE)$=lTe+Sit@jyxMM3EO~JN!jBBPA48y!>OL1nxcF(i=)M(@fAp4q_MvK zLMO+?W|OO1P~)?_zM|n94`rRDZvIu+y__|6^Qg#+#ahp*?o|_w!`k_j=5;@Qu#--= z%a{L}s3W4e)_tozK9+!@kS0_GY#g8(*E>4U)R%OmtjxWN)QTPbSNZpM0{?w^!Z$Sj z>%X$G@mG;s|tD|uK%DWGMn55(n~EwOR6ZD z-?s_a{i`2Ic@$y9)rddn4bdrR?jJ4!UK0VY@~+>k{SkHEYqR#*0=!?d_I1w9J3B<9 zN6iX>{gz;3Ka|oiqNTGoNGmbzyB#cc=A(R!|MPaZnQVRZysF*}`zr!)D`dEu(&h9q z`xQ+U&@tWxn)IC)F`Ot4&wpZVq7M4LgINq;i)9+WT8W)M?%?zdbi=mLz6j-MZo#i6 zfNPQ)%>MNiII5)p=zqR2q1!hiz^(hoA#eY_ri6XA@4$iG9u)@J=((*CTIhL6(tmqb zw*CJ3}zD!P7VY$+k}k+Gi}^BTGGq3U;Q8aBn} zDJ=n&(d?bMYW~R{zwad|R8>5oQfK;ZPleMM%3Kfz`)&;tzl%ev3{hY1V&95pd#RBG zL`==fRWfMWTrq?PcgT83uS+U?!=*=j-`5l+`$`OK4tIOU7iERY_q7~VBV(0>&_RO4 zi~3D27PrQ=FZ22Rg6_{N8r4lrDH#pCwFlH!lKinw?OP{r4JH~)^R1GZQFr6pzu)io z=Wg|OZda`g>cF!v(8=N9d+=$E82!s--CwV3&l%P*g)2cE2BhgV+oh=S-x>sI z%}!fim2tz?_et@as&BJ+s-`t3ibrkj{ae3>64AG$6h69RknNnqb0*9esN+m*+qP|6 z6FZYPwrywL*tVUC?TKyMw(k5EcX3zuANZ=Pd(pc-RekC?U8f(*=Uk@Lcg?Fd6_jUD z7!C;(H;n}rC7YR~a678MfM4hbOD*^LxOqEgQkl?RBjd7{B-RF#ynl;4o3XEIo9=QU zL7(YhKaPp>mWZ<3Eb&9zgN!BL5Q73g1U-2*zWLwp=#!x=`bk1ib3-0R_&FFO-D6f; z+BN=ieKA%vPic+JiKKQ<(6pMeNgdZ-{yfBhmoJiKw>W`=sO@GtQlxGct>g94Xf3V1 z$r3#Au{Y*a+@1ze)4?zRN|a?mofA8K5mktb=E3dO#)E*s@>+_CDJxspyVyHh*gFu* zh>87QnZZAWK~{E(ySn-^X83fMyI1}sGdhjfbr%A07gzb5xN#be5j8j>8+$!T0T_ye zI0S}B5Ghnl7->CeRA_)vA7LDE-k=e>ii#&&!%vsP!>-iSZ6biLb#B+Q0N~npsU0M) z^RunfMGH27Jtu%@?@$&P6IEjR4hnw*0zLs^)WFIHCMqxxAT3B}_aGmS_Coq2fXjW5 z4umVVGx)^i=36EsxeqI14kB_TXmZRfvQ>God^HHZ-dA#P;RT&#fSToA0vf%(GYt)E z^`>!}lrK6xd)PEu%jXE*4Oe$UfOIQ^;vfS17RyluGc}Q6PnUE_9;3uj;^QZN=CH9j zSO96{B^V-|%wP#A)2SvrlvTLoV14bg1+*7A{=Iu96cio-0oNOK)JG|j_))e%>xCM2BTF5p%n%{0V6X)vBfYcx&xbh=P7-j|3 zE!avK4p$h>0+dP^nj3*JV0?$S71S;m+6W>h_}B=l6Z9S#!kC0rJP@5&LmG}XV1fkd z;D@L1m+}vE$RUwPWF%D4*BQz(2-@(9eBLscH$q-W{eT+L;28l6^o$_C@U4L#@$`9_t}mSYU_#*llmKKD+=4J{68J#` z81aI5h!9|vSX8`h5uv3>dz`@mC2Np8*|jn@I;4aYPX2|;R@osnrWJ=3K?S--EN_sN z)MK7qfusssnUV#o4vcNUpMQTP$Yvu?Y+O*Y%isZHQAMF^rs{ z!tJ8&lI&u{ORH0@p$13l?LnDf+;ZQ-IwrmRCKsEdYKu3K7M*jOGoJID6PTl8O|MdL zqm)X7Jh(idypy;yz0-w>3aJkPLg<=wiN}g}48{$@$#fQ_6h$Atu1(-0W2gfbS{QixmtZ%-JkKEjW5D2=q?gj zBC})T!r)@yZsM|KRAhi=yk<;hJU8Fyz*m!33+Qy|IIr=pp{(gP@ikGo9=Q6r+__}9 z5}qZvX1i#fFP(4A4VrlT{aUbLw~}Xj;$mdJV)ipGutc?Om@isBNGwmbtgs9|1!u!yGi(HFWNh4?e4Nxi z;y7xdAH~eUJZIo#Fwnu(a-v7l+G;M)g4D9DKl}4$VQV_sVppHjFxwQ_xC&sK$YTw{ zE{>u5W1*|L{`jZVc6(KO9p*xD<3tk@Ls3{gIuHylN(-85@o zWCVqZgQ`TWYaR`N0Qlovcpnm-BiAs_l8RMRQscACxy-}G*V1fvyout@^lb9%hlB$> zBwQo}3M>ks31kWYI;%RDJhGo9z27~r9|)gRo{V4FUngGHUTPjMZ^>Rm-!$F@ZkL~r z-`yd5LAyaazz7-Vb%u49P=0{SfaY;_s+-TK% z4|&9B$g50bC-c%d|1{7qZl!fyOxGIIGQSw(cF_~xm~BOx5H=TZ=G>z4GyH%bk8KWr z%(|SYF;a5G=RVAega{A03mFp+AJmUjlTnmOmYLV%vg3IE)!^=Ad#5LB^mjKYbRlA4 ziCs@eZ;d7go+)%Wu_hrWQ83LoP9=$@Va@LGYLU%H$j_8Asg1Q!O&H@-{t?DCG&8hN z`?ofSwteG3qtcP|@r~1))1!0Cq2ht(k#7f7b69f;pCN<4>DP%)YP0Kkp6l&-`?7Tv zlb%p_pY=d|Y)C8(o#ISbzPbL1tz&dDM%@ea+l+NS=KzO4}Mx5rD<+Gz$`1K{rz>J(;nU6$)^NLN2a#S(r$;4KYw35wb}?P50F&W`>#2bI(C**UN;gd>tC6e%6~A4UF0k^fQTe-!y2MgB*T|54V5VLiy>6Gg<@?oykH5`qO;f@zF<4Kh&j|g?-)?{{ z&uN}(p5v|PR)1RDZ<2wMGv-k*_>6m^FMT4HH=^Qi^c!4$$v=Dw@NYif3)hQ~xq3av zXdnyKnlJH_8TR(B5ngtL9M9@Zxf*3=oI@4h`RUbhIKVKxt2(rE0)B6TQXWcxS4MP} zy;Be}bz~r5Qbrem6;%Po>^h_h`xllvQ&0RWgubDHjX48erN{I$u~s$1FlgYisJU%F z_pdO@L*TL?I|uC^QI-JL8&M9a<8`ok$)qy(y*d`Jr;DbJ2Ecrvl9JJ&Ee>YsVD`Gb zWY@v7u8rRXY31~)MQwX)GXIS-q)1hVlA7sBC9XOyX$Q3Tbnf=NnKEUHC)6)9+ie7( z=h?TD3N_Pf_z8@zLE3R{$PL^c&3GTeUg4rfvF2o(vD_{0`Q!A4ij~rO@>N>Z+t&uL z;{TkZT%ymMUVuplVR!emxPBy-1Cv3;b^+^BG@8MaZcH1MQ!>386h&@4Icu3+Se?$v zp6q<{V)G1zI+|9MmRCmpVFE9C0Fj;zonLCG)G+iu{TNutV*kjGAOoEMAsSEwt{t}V zBzr`jHAX?Fxc8~Q_;GYAXftk~@4i;PqE__-Mx0n42DBemhUZ=D``zBe-7}4kCHF!d zyrN`w;}DSO+mx6D>Bs`rpvFc$Jua!jztH4zceP!4dP_+xPA2*z#!Fxo=XGQMizaxU z>A~Oqg(u)!2#lQNK@ZtO=z{~LiT(Rt*Y2UGj+<^Sm5>8g&IyEn3@MBJ)t_Ca|M1pi z;hfudio8b96c!G+p>(BBfiC2Zpv|{UTEEW>1*CJ?^LHKot;4C2 zY*2+a%?VbTJ!yQkxOi~L+v>~5BuZ&zXB2!io65QbG|pc_5eu=w4TN>ftiFBZNsAGO z2A4+8)QTyE1!5uIso-EIdo~aWqkt$Re8MN0-H?;duL}hzsl-!6RwY49>9Yr8H2&q8 zd*ac+$XtCs)?qgmoiq%pHNup2!mLmPvKn*h3U%iCbtK+nPLp#@MhsNX0q}AmR5VU- zZf4m)pnOpc4VxnR0v_a|qN(N=LhSdwpr*QE8AcO!;mJTu;$lNU35?7l`oK^XfiY8L zp!ie#`sDZGAo4UfKE$(8T&^UO`kx2IR4Ut7l#>NiBuj%a1vcjBznrJW*iLXx#HHiCT^+aLd9f*(L5}f`1z6h?0A$!QTGXby4X|z~x{Xi(MG6 zjRvUOpK_kjug82ff}9%;k7OB&&qz{?nT;4T5>J50fD)9*Zz~M#4rCleA{xl_`)8gc z+3CN98-k?;_6zd}+w<(agO$)1JAMJEM8#E=wklgftlwbp6B5{4gA(8(Hn36XH{QK_yK5KOu zp;DzxiJ+n~Y!c$~Z5WpS6`$TA#&83_(p@T`q?D>-L>I;`Maoh+(p>8R|HHrnk@W)v zXTLeIylAepTe~jI;)Q=|Qh#={2E=D5k zC`OHBF%j`6v8*|Lxuf=Lw(YfnzpITi?2*%W1o=jeon(FViP)w8R?`_73k!TJH)Cf> zzZwH7=2HqAM#wIDX~mh@*>j0curE>6poUH#)wlN**LCgIsVw#&W;b}UfF3LvVc8%;iO{KTCccq-q|1`B(UBp@8ZXlE~M zC}6W%qeixCVsB~y$ESW$^OS>`+2i6rlc8?-D?`}i4XOx5@w$b%UASePlge=ZkdW}s31IXexmO0zh1Nm^}88SooR68r%zfW zxY$hU(LFs?9l$r5lGXAKOS`2xYBh=!JA>N;{Svvt%xHO;2Z3fvu(5!lMW-# z^ta^CqQnSwH{~$(?xW>PKP#Lz>c6N+%dv;ZyWVf%TAgJwXRWT_kU25g2`h*U@b>0h;f&A`M!MPdhs zC}OHFt&xGyPjSYhm%^p5eZ3KKYFrE%Me$gPzq=>$s8OPuSlH~$JYvnfA*4^R|8gN% zncW)j74lE2;e?4^6}Q#pQfxt!s}hy%jH37{LFIk(lEv=sN(PPUIKqsu0=Q>6QRZH_ zFf+^!zI;b=oEpMX5wyk4cw0QniwanviJiY+$TdAVlf%gltSG3vn2g z7UlgwEF18uQiZ=YPtRoJoxEO=I!M`y>%p&EKRvPAZTfY8dU;-2|9PVcE8H?7rfZLc zP>q0|957}va5;Md9}P_cQmt*N)i}qj@eZmB@I}loAFV)=u^@)XAdjzi6@arMe8}uH zwdq-0S)JO`s2rV;rXXWT#=Y*Vg>Z-^AW&Z>>OXA|xpG-JzcMv>Otz_xd%4_y)bo}& zoBbtUM_u+8Y9XL3$=6OEkEqy2M3NZiIkcIFLtJaBu#7gg8bQzTvgM@{0wc*f?TK&B6Wm`E9^># z&l6{wE$cOIVHPWr6 zk{?-RIV0n<*6-4n&(*{{}P1wdAt^T~`*!sRSKd~6)wQl}UycVyZxq$is=_xKf9``n# ziYZM(Oith8O|ohCq4o5NXj8MIB5Lv#nCV+gYs75jApn-GIB?|9SZa=iRdbt=bAjV8 zzg5ph&u1iGfMdo^yVdj~C9=bV8kL z;Wv!~-@BKiC;vAxh^rUEzhEp|uVfRt5v@gDPEk>hITPxNV8FOUg+FLskHXtgkG_l(6c-rJ?qT-u3M#A;D5^}`4S`?<0tJIdZ^aOA9%^tV> zOARk(+l=^u=5MJ24^Rl<W zPO?9Cq5EuDCAj^8%hB}b1&S)V?GBuTlVWo2%Vo1jdF{q7ai%entn;j|4oZ-|fBKj< zk$Ck5pB65PuSeW>bQ*kYim@(-eiMQ(QTYuXgkiOMyyBa{ds*q|ac|NRw)F0!NH>Jx z8X5V-q%Tb^DgP|UCy|-Gj-?>^U0K_f@W}yPm|eIxp(0yIw|Rkd_<^BDnF% z(p+6#805UkgoPPbp#X0dAXuV@I* z&}(w1^VmR*qDAgU%Gta;kk-Ys_3h%$3VuLDd{Gcy+I{r8iDlJwne9xU&~J|r2p5zh zz*K(VB^Z;zN!v$T)oe_C+R8aGryQ53OOGkByr^9rr+R;8-EqM8Za;dQ1GLOf8g^1?;!_0pA6X`x(6^!Sp^7_Nl zEmax)9h*Pp5Ye#4s3<9b>YX2+N8|Avi%jx=K%M@&(A#>sLHl#1VD9Bes7-^(s)o?I ziON|TGXlri61x_tNT~A-%hT3oks)bgMVY;6%kKWmNI_Qehln=-DKh2dBy{|R+s|1NN_pK=&m?xzmr7!0O~0;P$(q`0uoLUS`}X6CTK@|LKgx!2%vc9$0n zhb!RbT!>#>K@o8)3*X2EEk)D(1}?yJyC-X91zVl~$a*avilw+AU7aCw7;iu;PLe#ygiV=h)g+bZn;jQA%rPzHm_ z{0KodBd3_3+xYwEGS~5~f`Z=QPedZ-#BgQei^uy2eudEBZV4|gA8(nxHKn~1443{h zK|;S>&2(vqtkzg0%tVG(ZwHb?}L6MWICRURVQz4tOlghDj#5O-5xix;o)ZPYW$*!|44%QUvH~2I zUZv9Y&?f>R^G*?{WlpIxq9!km-u5)KP|?cQJF>?adBI5_8puyhuXfJ?xuLt?eq+u` zLQ0Q0*$W(hl+$tr++a5I0FzuPY~Dv^Uk`hkojsOpkUSFP+H)&6!`>e+XVEC4%IqZJ z1u#55&XcD$Yd`y<&$sg`o`g@F^}S z2pB(y+w`19(#tZ2pM2jvF4{EPj_&TYn7wg<-8Y<5ZO*{za`bpOXst4GUB^~}6BpjU zCGy~lBM{blWg*Fl=~Ld`LeM*(mx~@7j3IF^<9wOg^=5?TjWC5GKyq?=7{?PA)&z2i zq+VDjw%1c2)A1-z<;uq{p!0UF(#Gdr;bNS9i7D5^u9wfo$rP>iZdt z&)tq}$R(sdsNR0<2< zIQQ)L=h05i?2Szf&Q?%bOM&lK?*d30K2i`Kef18*@CUuIlT&}3R`vy-ybOtuYtF46ex_su~8f>JwA1zi}L&;7g_`a22%qI6%j^NaE|`A0h_ML?2@x-4I;#+5Q4eDwIet5 zuH6+-_$fFPbgOWKv?@&#RB+jC!ng*UMz|S|gEJVJsavGoSsb)WCpd7_mM%b1S z_gQF3DW&87)JR;EiD4RRElb!55#|u?q{vU^0)%aTo2zfpLAD$kRwbYqw;Ie)D$?du?DX+Tk z@CiG<4KncXX4nxFG%T&{_R^&Y_a;ZKc1yVoB;;cpH$bjd4HbUsctsGiSn}>w`91w4 zu-o}%k3ThMg1mOi#{2=@%W{vNM3=i$EOk{}-%W^mFJdog5%d6qmdUl)7LkTW51U+VCc zwA(UkbrXbXLQL_DuzatJ_d8VEd-`&{;gddl zq_Cn-7AvI>ujGyUdIJZxQ?%zx;CtKWl{a&VQo&spP^;@m^ubG@zrRkLe#-c$>CUtw>)=qU?J$havf}|CH*-DyS7fJ+wR${$7eU_a z!kWloAMTu5V(a;DB9q^-W;ROOAnqSmJc2z}Q2eJffwB{hAlN#H7~LuIxL|X-eqb1z z)*df`&@a1>%Z)v&!%-S=!jFM`4W;q%DHGW(`eKW_Q0?At+PA^ZG;~u^tfc{hP*A$R zVWh3SV3!_}Od0iM5{Q}jf;%r_%C4^~dHcKkeWEkY?FaRBVlZF0x z{rCC>;w<&B}HBNK?zp$Ykqc1GKB(b=)AD89-(VY*vTCC zF*%%hFil!op~y&81v`S4jWRXlF;Sz!>TJb3FN|Q_okeSTA|{K~Oh$B`opue;aT&ZN zKIcqnu|e)WvT-o}j|Jvx@v95_pLiaU%+^5<^IDyVy;vKXCif?Y=eK8vjb~k-6bNJ; ztx0XTcdn2?qS1Y0qol)pvZaNne5g(x!QkL`x-^zzc8kgS4}9}&#O7XAGfcXj_Mo*mUU*s_)`Mc@bK;VYE4%%MWyz{5Js{;b*P0Y zb=9QMDO`+gTzNM)o=0;}I(Gpt^q4}*8AQY=XTD{Da0E~%woCpYGZICVtj*+{HGg6BbR7DjA|b`)M+3}X z(HXfN{UAIEqQRr0g??Av#7ul%aaiCT8H~dG%R8X zZNh^)ubESzt$AtzHGkKa!j~#P^!r>f2{${+fgU;=rqziG!pndubX@!q9!XVUXDK6Z z_O{SHDFGski`bMdV8&F2K>tE#xhvC(5Kl6)|&kkGxgG5KIH#4-5z*30wb zby+Ky1?D}&`6G~&zaLfz4%{J>Fg!?RM{0is6yH`XY^PHsGQNb~WWP@T)|pVJ15?wd zZzXynEEaB>CzcT|sYJK1d)u^yCC-ZY*NRW(tfb*LvHRx}jsbnz(9Y{|J}e7F+z&8J z>A4VI(!7u~8f-&T0V`T81_yX9V-)Q#z@E#W)Y_d}A^vbKLH`Yq5_0X<*CV1^$wR>2Rh8w#0->eGHwBJz z`j@CIt|BnJ1?hssQiO%AG&%P5c~juC^Ck7!bI5McZ#vjxex58y#9=a%w%l(V9wIjX zP%jXKG%QG(nwO|H2E{m@F$s<>AvXSqv2S(zXcM@-KRSJNFtY5MTR<+%^JY^~juzee z*`4{~@NVa}KuAdn(c5hF$@1~p&P=?I`c!Ow_lBiH9w@1s5{!33efO&Kx0NR6hi~|(THiH z-R#qsHuB;F8*YWS+FBj7T*>EXct@~-r5A0*`lg@+Uu>k~Ashk16yqV1h#4|;wCi*P z=W<9|7fo6g9!vv1BBB^~BC#m8j*8X(P2R5a<(>b14a(};7h+@_uTI|s^l7zGIpz%{`o~F| zu{j7D@^2Q5HtkY6^hHqp?#}D;zR%m zaSCABGGOd(7i&ts)u|I7dv&+;%xq@-6VLo<;jak>{dm^L`LT z9f+ZbX=Lvl6ck?RK@?tSp@fF^#dZd9a4<}Ghm?x%S}rL2l_x0cOL$3w1_y@^ykWtH z{%RXM7Ju@<%UIL;{@a1iYersbams95y^C!lwY>#}7EMC_OA-u+Bj5*z(NmtZflxqy zw9?D(soos}5D{Ih=z_FrbO9;CwW48v*?eNmctVu;254<_pJxU6%$7N2=77Gmhjj9|^j$DMLiX&> zFYfQ_sG?0X{2-&cs2JjZW!K5DIeBo3@y81Tx9s8ejK0-fa@pBEf8$lI> zg2{2iH3y8nt(Ha+!zCB8IdC^b#CHfHZfi#UC>Krhk5=7A0IPak?D8DApIBWM)pG(R zxXd0LE+rfDn(B0dWSFdea3he^fNTA%VK{koB)(|k^8L&4{F#+a> zpvHnd;lYoHn&9L()IK^fVe&jYJ;q?bDp{%^aqBsAs!#-&9()|9s!zo<8K1;YVCbWj z7gm1<55vk;{-7TWr~Tax9EhOl?(;2b;a48>ACW$SG?j3Os(mnw=w88|O@_Nl#NViP z8~nXB!X0+~aDUC~2K@vNch))cNJxkf{>^$LheJYy{n3N=;f}xlGQy@D@ofR}O|)&( X#L7AwwEV9V1VlzcQM^XfDCqwHbTURm delta 3185 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 Date: Sun, 4 Dec 2022 12:51:45 +0100 Subject: [PATCH 08/11] toclafane laser cannot hurt player anymore --- Projectiles/Weapons/ToclafaneMinion.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Projectiles/Weapons/ToclafaneMinion.cs b/Projectiles/Weapons/ToclafaneMinion.cs index fece0a3..c04c310 100644 --- a/Projectiles/Weapons/ToclafaneMinion.cs +++ b/Projectiles/Weapons/ToclafaneMinion.cs @@ -171,6 +171,7 @@ public class ToclafaneMinion : ModProjectile { Projectile laser = Projectile.NewProjectileDirect(player.GetSource_FromThis(), Projectile.Center, direction, ProjectileID.DeathLaser, 30, Projectile.knockBack, Projectile.owner); laser.friendly = true; + laser.hostile = false; laser.penetrate = 5; attackMode = AttackMode.RANGED; } From c21d31f2a0d81b7515a3ad90477531bcdfc8a2e7 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sun, 4 Dec 2022 12:59:25 +0100 Subject: [PATCH 09/11] bump version to hotfix --- build.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.txt b/build.txt index 68e1d3e..768a618 100644 --- a/build.txt +++ b/build.txt @@ -1,3 +1,3 @@ displayName = YHT Mod author = YouHaveTrouble -version = 1.0 \ No newline at end of file +version = 1.0.1 \ No newline at end of file From 25a76fd92190ec5604fdd7368d8ad669b0f0e96f Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Mon, 5 Dec 2022 19:22:26 +0100 Subject: [PATCH 10/11] Toclafane staff is now researchable in journey mode --- Items/ToclafaneStaff.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Items/ToclafaneStaff.cs b/Items/ToclafaneStaff.cs index bae006e..b2e1ae2 100644 --- a/Items/ToclafaneStaff.cs +++ b/Items/ToclafaneStaff.cs @@ -1,6 +1,7 @@ using Microsoft.Xna.Framework; using Terraria; using Terraria.DataStructures; +using Terraria.GameContent.Creative; using Terraria.ID; using Terraria.ModLoader; using YHTMod.Buffs; @@ -15,6 +16,7 @@ public class ToclafaneStaff : ModItem { Tooltip.SetDefault("Summons a toclafane to remove population for you"); ItemID.Sets.GamepadWholeScreenUseRange[Item.type] = true; // This lets the player target anywhere on the whole screen while using a controller. ItemID.Sets.LockOnIgnoresCollision[Item.type] = true; + CreativeItemSacrificesCatalog.Instance.SacrificeCountNeededByItemId[Type] = 1; } public override void SetDefaults() { From eb73f74f1df2e920da091a6d1a4df57a6a95a9a5 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Mon, 5 Dec 2022 19:33:56 +0100 Subject: [PATCH 11/11] update description and add readme --- description.txt | 1 + readme.md | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 readme.md diff --git a/description.txt b/description.txt index 1d3568a..3568e6c 100644 --- a/description.txt +++ b/description.txt @@ -1,5 +1,6 @@ Bunch of random additions ranging from QoL to random references +Wiki: https://github.com/YouHaveTrouble/YHTMod/wiki Source: https://github.com/YouHaveTrouble/YHTMod Code: YouHaveTrouble diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..ff66a72 --- /dev/null +++ b/readme.md @@ -0,0 +1,7 @@ +A bunch of random additions ranging from QoL to random references + +Mod wiki: https://github.com/YouHaveTrouble/YHTMod/wiki + +Code: YouHaveTrouble + +Sprites: YouHaveTrouble, Patrxon \ No newline at end of file