From a68b762f0abf9bf39b6795a7959caff1d486d3de Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Mon, 26 Jan 2026 18:08:53 +0100 Subject: [PATCH] nimbuses spawned by summons are supposed to be friendly --- Buffs/SummonerAmbitionBuff.cs | 3 +-- Changes/SummonerOnHitEffects.cs | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Buffs/SummonerAmbitionBuff.cs b/Buffs/SummonerAmbitionBuff.cs index 5d9d460..a8156f1 100644 --- a/Buffs/SummonerAmbitionBuff.cs +++ b/Buffs/SummonerAmbitionBuff.cs @@ -11,9 +11,8 @@ public class SummonerAmbitionBuff : ModBuff { } public override void ModifyBuffText(ref string buffName, ref string tip, ref int rare) { - YhtPlayer modPlayer = Main.LocalPlayer.TryGetModPlayer(out var mp) ? mp : null; + YhtPlayer modPlayer = Main.LocalPlayer.TryGetModPlayer(out YhtPlayer mp) ? mp : null; if (modPlayer == null) return; - tip = Language.GetTextValue("Mods.YHTMod.Buffs.SummonerAmbitionBuff.Description", modPlayer.SummonerAmbitions.Count); } diff --git a/Changes/SummonerOnHitEffects.cs b/Changes/SummonerOnHitEffects.cs index d1e55bc..407c2a5 100644 --- a/Changes/SummonerOnHitEffects.cs +++ b/Changes/SummonerOnHitEffects.cs @@ -1,4 +1,5 @@ using Terraria; +using Terraria.DataStructures; using Terraria.ID; using Terraria.ModLoader; using YHTMod.Buffs; @@ -7,6 +8,22 @@ using Vector2 = Microsoft.Xna.Framework.Vector2; namespace YHTMod.Changes; public class SummonerOnHitEffects : GlobalProjectile { + public override void OnSpawn(Projectile projectile, IEntitySource source) { + if (ModLoader.HasMod("CalamityMod") && projectile.type == ModContent.ProjectileType()) { + if (source is EntitySource_Parent { Entity: Projectile parentProj }) { + int shadeType = ModContent.ProjectileType(); + if (parentProj.type == shadeType && parentProj.friendly && !parentProj.hostile) { + projectile.friendly = true; + projectile.hostile = false; + projectile.DamageType = DamageClass.Summon; + projectile.damage = parentProj.damage; + } + } + } + + base.OnSpawn(projectile, source); + } + public override void OnHitNPC(Projectile projectile, NPC target, NPC.HitInfo hit, int damageDone) { Player player = Main.player[projectile.owner]; YhtPlayer modPlayer = player.GetModPlayer(); @@ -69,7 +86,7 @@ public class SummonerOnHitEffects : GlobalProjectile { if (!modPlayer.SummonerAmbitions.Contains("perforators")) return; if (modPlayer.SummonerAmbitionPerforatorsCooldown != 0) return; if (!Main.rand.NextBool(10)) return; - modPlayer.SummonerAmbitionPerforatorsCooldown = 3 * 60; + modPlayer.SummonerAmbitionPerforatorsCooldown = 20 * 60; Vector2 direction = new(Main.rand.NextFloat(-1f, 1f), Main.rand.NextFloat(-1f, 1f)); direction.Normalize(); direction *= Main.rand.NextFloat(4f, 5f); @@ -99,7 +116,7 @@ public class SummonerOnHitEffects : GlobalProjectile { int projectileId = Projectile.NewProjectile( modPlayer.Player.GetSource_OnHit(target), target.Center, - new Vector2(0, 1f), + new Vector2(0, -0.25f), projectileType, (int) (projectile.damage * 0.75f), 0f,