projetile doesen't spawn from gun

FlamingFire

Official Terrarian
i'm making a custom flamethrower with a custom projetile, and when i scale it down, i realized that the spawn place of the projectile is not in the gun:
Screenshot 2024-07-19 143004.png

but, the hitbox of the projetile spawned on the right place. also, i used custom projetile.
how do i fix this?

gun code :
C#:
using Microsoft.Xna.Framework;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using Terraria.DataStructures;
using Terraria.GameContent.Creative;
using Vanniluxe.Content.Projectiles.OnFireFlamethrower
;
namespace Vanniluxe.Content.Items.Ranged.FossilFuel
{
    public class FossilFuel : ModItem
    {
        
        public override void SetDefaults()
        {
            // Combat prop
            Item.damage = 10; // Gun damage + bullet damage = final damage
            Item.DamageType = DamageClass.Ranged;
            Item.useTime = 2;
            Item.useAnimation = 30;
            Item.knockBack = 0.1f; // Gun knockback + bullet knockback = final knockback
            Item.autoReuse = true;
            Item.reuseDelay = 10;
            Item.consumeAmmoOnLastShotOnly = true;

            // Visual prop
            Item.width = 60;
            Item.height = 20;
            Item.scale = 1f;
            Item.useStyle = ItemUseStyleID.Shoot;
            Item.rare = ItemRarityID.Green;

            // Other prop
            Item.value = 51000;
            Item.UseSound = SoundID.Item34;

            // Gun prop
            Item.noMelee = true;
            Item.shoot = ModContent.ProjectileType<OnFireFlamethrower>();; // What kind of projectile the gun fires
            Item.shootSpeed = 8f;
            Item.useAmmo = AmmoID.Gel; // What ammo gun uses
        }

        public override bool CanUseItem(Player player)
        {
        return !player.wet;
        }

        public override void AddRecipes()
        {
            Recipe recipe1 = Recipe.Create(ModContent.ItemType<FossilFuel>());
            recipe1.AddIngredient(ItemID.FossilOre, 12);
            recipe1.AddIngredient(ItemID.Torch, 20);
            recipe1.AddRecipeGroup(RecipeGroupID.IronBar, 8);
            recipe1.AddTile(TileID.Anvils);
            recipe1.Register();
        }
         public override void SetStaticDefaults()
        {
            CreativeItemSacrificesCatalog.Instance.SacrificeCountNeededByItemId[Type] = 1; // How many items need for research in Journey Mode
        }
        public override bool CanConsumeAmmo(Item ammo, Player player) => Main.rand.Next(101) <= 20; // Chance in % to not consume ammo
        public override Vector2? HoldoutOffset() => new Vector2(-3f, 0f); // Offset editor in pixel

    }
}

projetile code :
C#:
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using Terraria.GameContent;

namespace Vanniluxe.Content.Projectiles.OnFireFlamethrower
{
    // This file shows an animated projectile
    // This file also shows advanced drawing to center the drawn projectile correctly
    public class OnFireFlamethrower : ModProjectile
    {
        public override void SetStaticDefaults() {
            Main.projFrames[Projectile.type] = 7;
        }

        public override void SetDefaults() {
            Projectile.width     = 80; // The width of projectile hitbox
            Projectile.height     = 80; // The height of projectile hitbox
            Projectile.scale     = 0.1f;

            Projectile.friendly     = true; // Can the projectile deal damage to enemies?
            Projectile.DamageType     = DamageClass.Ranged; // Is the projectile shoot by a ranged weapon?
            Projectile.ignoreWater     = true; // Does the projectile's speed be influenced by water?
            Projectile.tileCollide     = false; // Can the projectile collide with tiles?
            Projectile.penetrate     = 2;

            Projectile.alpha = 0; // How transparent to draw this projectile. 0 to 255. 255 is completely transparent.
        }

        public override Color? GetAlpha(Color lightColor) {
            return new Color(255, 69, 18, 15) * Projectile.Opacity;
        }

        public override void OnHitNPC(NPC target, NPC.HitInfo hit, int damageDone){
        target.AddBuff(BuffID.OnFire, time: 300);
        }

        public override void AI() {
            
            Projectile.ai[0] += 1f;

            if (Projectile.ai[0] >= 1){
                Projectile.rotation += 10;
            }

            if (Projectile.ai[0] >= 6){
                if (Projectile.scale <= 0.8f){
                    Projectile.scale += 0.03f;
                }
            }


            Projectile.velocity *= 1;

            if (++Projectile.frameCounter >=8) {
                Projectile.frameCounter = 0;
                if (++Projectile.frame >= Main.projFrames[Projectile.type])
                    Projectile.frame = 0;
            }

            if (Projectile.ai[0] >= 50f)
                Projectile.Kill();

            if (Main.netMode != NetmodeID.Server)
            {
                Dust dust = Dust.NewDustPerfect(
                    Position:     Projectile.Center,
                    Type:         DustID.Torch,
                    Velocity:     Vector2.Zero,
                    Alpha:         100,
                    newColor:     Color.Orange,
                    Scale:         0.6f
                    );
                dust.noGravity = true;
                dust.fadeIn = -1f;
            }

        }
    }
}
 
There's smt with hitboxes

Projectile from my mod that mimics flamethrower
C#:
public class Dragonfire : ModProjectile
    {
        public override string Texture => Arcturus.VanillaTexture + "Projectile_85";

        public override void SetStaticDefaults()
        {
            Main.projFrames[Type] = 4;
        }

        public override void SetDefaults()
        {
            Projectile.width = 16;
            Projectile.height = Projectile.width;

            Projectile.ignoreWater = true;
            Projectile.hostile = true;

            Projectile.penetrate = -1;
            Projectile.timeLeft = 120;

            Projectile.extraUpdates = 2;
        }

        public override bool? CanDamage()
            => Projectile.timeLeft > 90;

        public override bool OnTileCollide(Vector2 oldVelocity)
        {
            Projectile.velocity = Vector2.Zero;

            return false;
        }

        public override void AI()
        {
            Projectile.localAI[0] += 1f;
            int num = 90;
            int num2 = 12;
            int num3 = num + num2;
            if (Projectile.localAI[0] >= num3)
                Projectile.Kill();

            if (Projectile.localAI[0] >= num)
                Projectile.velocity *= 0.95f;

            int num4 = 80;
            int num5 = num4;

            if (Projectile.localAI[0] < num5 && Main.rand.NextFloat() < 0.15f)
            {
                short num6 = DustID.InfernoFork;
                Dust dust = Dust.NewDustDirect(Projectile.Center + Main.rand.NextVector2Circular(30f, 30f) * Utils.Remap(Projectile.localAI[0], 0f, 72f, 0.5f, 1f), 4, 4, num6, Projectile.velocity.X * 0.2f, Projectile.velocity.Y * 0.2f, 150);
                if (Main.rand.NextBool(4))
                {
                    dust.noGravity = true;
                    dust.scale *= 1.6f;
                    dust.velocity.X *= 2f;
                    dust.velocity.Y *= 2f;
                }
                else
                {
                    dust.scale *= 0.8f;
                }

                dust.scale *= 1.25f;
                dust.velocity *= 1.2f;
                dust.velocity += Projectile.velocity * 1f * Utils.Remap(Projectile.localAI[0], 0f, num * 0.75f, 1f, 0.1f) * Utils.Remap(Projectile.localAI[0], 0f, num * 0.1f, 0.1f, 1f);
                dust.customData = 1;
            }

            if (num4 > 0 && Projectile.localAI[0] >= num4 && Main.rand.NextFloat() < 0.25f)
            {
                Vector2 center = Main.player[Projectile.owner].Center;
                Vector2 vector = (Projectile.Center - center).SafeNormalize(Vector2.Zero).RotatedByRandom(0.19634954631328583) * 7f;
                short num7 = DustID.Smoke;
                Dust dust2 = Dust.NewDustDirect(Projectile.Center + Main.rand.NextVector2Circular(50f, 50f) - vector * 2f, 4, 4, num7, 0f, 0f, 150);
                dust2.noGravity = true;
                dust2.velocity = vector;
                dust2.scale *= 0.9f + Main.rand.NextFloat() * 0.2f;
                dust2.customData = -0.3f - 0.15f * Main.rand.NextFloat();
            }
        }

        public override void ModifyDamageHitbox(ref Rectangle hitbox)
        {
            int num = (int)Utils.Remap(Projectile.localAI[0], 0f, 60f, 10f, 40f);
            hitbox.Inflate(num, num);
        }

        public override bool? Colliding(Rectangle projHitbox, Rectangle targetHitbox)
        {
            if (!projHitbox.Intersects(targetHitbox))
                return false;

            return Collision.CanHit(Projectile.Center, 0, 0, targetHitbox.Center.ToVector2(), 0, 0);
        }

        public override bool PreDraw(ref Color lightColor)
        {
            DrawProj_Flamethrower(Projectile);
            return false;
        }

        private static void DrawProj_Flamethrower(Projectile proj)
        {
            bool flag = proj.ai[0] == 1f;
            float num = 60f;
            float num2 = 12f;
            float fromMax = num + num2;
            Texture2D value = TextureAssets.Projectile[proj.type].Value;
            Color transparent = Color.Transparent;
            Color val = new(255, 80, 20, 200);
            Color val2 = new(255, 255, 20, 70);
            Color val3 = Color.Lerp(new Color(255, 80, 20, 100), val2, 0.25f);
            Color val4 = new(80, 80, 80, 100);
            float num3 = 0.35f;
            float num4 = 0.7f;
            float num5 = 0.85f;
            float num6 = (proj.localAI[0] > num - 10f) ? 0.175f : 0.2f;
            if (flag)
            {
                val = new Color(95, 120, 255, 200);
                val2 = new Color(50, 180, 255, 70);
                val3 = new Color(95, 160, 255, 100);
                val4 = new Color(33, 125, 202, 100);
            }
            int verticalFrames = 7;
            float num9 = Utils.Remap(proj.localAI[0], num, fromMax, 1f, 0f);
            float num10 = Math.Min(proj.localAI[0], 20f);
            float num11 = Utils.Remap(proj.localAI[0], 0f, fromMax, 0f, 1f);
            float num12 = Utils.Remap(num11, 0.2f, 0.5f, 0.25f, 1f);
            Rectangle val5 = (!flag) ? value.Frame(1, verticalFrames, 0, 3) : value.Frame(1, verticalFrames, 0, (int)Utils.Remap(num11, 0.5f, 1f, 3f, 5f));
            if (!(num11 < 1f))
            {
                return;
            }
            for (int i = 0; i < 2; i++)
            {
                for (float num13 = 1f; num13 >= 0f; num13 -= num6)
                {
                    transparent = (num11 < 0.1f) ? Color.Lerp(Color.Transparent, val, Utils.GetLerpValue(0f, 0.1f, num11, clamped: true)) : ((num11 < 0.2f) ? Color.Lerp(val, val2, Utils.GetLerpValue(0.1f, 0.2f, num11, clamped: true)) : ((num11 < num3) ? val2 : ((num11 < num4) ? Color.Lerp(val2, val3, Utils.GetLerpValue(num3, num4, num11, clamped: true)) : ((num11 < num5) ? Color.Lerp(val3, val4, Utils.GetLerpValue(num4, num5, num11, clamped: true)) : ((!(num11 < 1f)) ? Color.Transparent : Color.Lerp(val4, Color.Transparent, Utils.GetLerpValue(num5, 1f, num11, clamped: true)))))));
                    float num14 = (1f - num13) * Utils.Remap(num11, 0f, 0.2f, 0f, 1f);
                    Vector2 val6 = proj.Center - Main.screenPosition + proj.velocity * (0f - num10) * num13;
                    Color val7 = transparent * num14;
                    Color val8 = val7;
                    if (!flag)
                    {
                        val8.G = (byte)(val8.G / 2);
                        val8.B = (byte)(val8.B / 2);
                        val8.A = (byte)Math.Min(val7.A + 80f * num14, 255f);
                        Utils.Remap(proj.localAI[0], 20f, fromMax, 0f, 1f);
                    }
                    float num15 = 1f / num6 * (num13 + 1f);
                    float num16 = proj.rotation + num13 * (MathHelper.Pi / 2f) + Main.GlobalTimeWrappedHourly * num15 * 2f;
                    float num17 = proj.rotation - num13 * (MathHelper.Pi / 2f) - Main.GlobalTimeWrappedHourly * num15 * 2f;
                    switch (i)
                    {
                        case 0:
                            Main.EntitySpriteDraw(value, val6 + proj.velocity * (0f - num10) * num6 * 0.5f, val5, val8 * num9 * 0.25f, num16 + MathHelper.Pi / 4f, val5.Size() / 2f, num12, 0);
                            Main.EntitySpriteDraw(value, val6, val5, val8 * num9, num17, val5.Size() / 2f, num12, 0);
                            break;
                        case 1:
                            if (!flag)
                            {
                                Main.EntitySpriteDraw(value, val6 + proj.velocity * (0f - num10) * num6 * 0.2f, val5, val7 * num9 * 0.25f, num16 + MathHelper.Pi / 2f, val5.Size() / 2f, num12 * 0.75f, 0);
                                Main.EntitySpriteDraw(value, val6, val5, val7 * num9, num17 + MathHelper.Pi / 2f, val5.Size() / 2f, num12 * 0.75f, 0);
                            }
                            break;
                    }
                }
            }
        }

        public override void OnHitPlayer(Player target, Player.HurtInfo info)
        {
            target.AddBuff(BuffID.OnFire3, 60 * 7);
        }

        public override void OnHitNPC(NPC target, NPC.HitInfo hit, int damageDone)
        {
            target.AddBuff(BuffID.OnFire3, 60 * 7);
        }
    }
 
if you have time, can you add comments, so i can customize it more?
also, can you add all of your using code?
 
Last edited:
Try to guess things yourself, that's not that hard
alright, but also, can you add all of your using ...; code? i think you used some that i didn't have, i got an error the name math. doesn't exist
 
alright, but also, can you add all of your using ...; code? i think you used some that i didn't have, i got an error the name math. doesn't exist
Your IDE should add them automatically, or give a variant in quick fix

Math is in System
 
when i copied your code i got 58 errors

full copied code:
C#:
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using Terraria.GameContent;

namespace TalesOfTheKingMod.Content.Projectiles.OnFireFlame
{
     public override string Texture => "TalesOfTheKingMod/Content/Projectiles/OnFireFlame/OnFireFlame";

        public override void SetStaticDefaults()
        {
            Main.projFrames[Type] = 4;
        }

        public override void SetDefaults()
        {
            Projectile.width = 16;
            Projectile.height = Projectile.width;

            Projectile.ignoreWater = true;
            Projectile.hostile = true;

            Projectile.penetrate = -1;
            Projectile.timeLeft = 120;

            Projectile.extraUpdates = 2;
        }

        public override bool? CanDamage()
            => Projectile.timeLeft > 90;

        public override bool OnTileCollide(Vector2 oldVelocity)
        {
            Projectile.velocity = Vector2.Zero;

            return false;
        }

        public override void AI()
        {
            Projectile.localAI[0] += 1f;
            int num = 90;
            int num2 = 12;
            int num3 = num + num2;
            if (Projectile.localAI[0] >= num3)
                Projectile.Kill();

            if (Projectile.localAI[0] >= num)
                Projectile.velocity *= 0.95f;

            int num4 = 80;
            int num5 = num4;

            if (Projectile.localAI[0] < num5 && Main.rand.NextFloat() < 0.15f)
            {
                short num6 = DustID.InfernoFork;
                Dust dust = Dust.NewDustDirect(Projectile.Center + Main.rand.NextVector2Circular(30f, 30f) * Utils.Remap(Projectile.localAI[0], 0f, 72f, 0.5f, 1f), 4, 4, num6, Projectile.velocity.X * 0.2f, Projectile.velocity.Y * 0.2f, 150);
                if (Main.rand.NextBool(4))
                {
                    dust.noGravity = true;
                    dust.scale *= 1.6f;
                    dust.velocity.X *= 2f;
                    dust.velocity.Y *= 2f;
                }
                else
                {
                    dust.scale *= 0.8f;
                }

                dust.scale *= 1.25f;
                dust.velocity *= 1.2f;
                dust.velocity += Projectile.velocity * 1f * Utils.Remap(Projectile.localAI[0], 0f, num * 0.75f, 1f, 0.1f) * Utils.Remap(Projectile.localAI[0], 0f, num * 0.1f, 0.1f, 1f);
                dust.customData = 1;
            }

            if (num4 > 0 && Projectile.localAI[0] >= num4 && Main.rand.NextFloat() < 0.25f)
            {
                Vector2 center = Main.player[Projectile.owner].Center;
                Vector2 vector = (Projectile.Center - center).SafeNormalize(Vector2.Zero).RotatedByRandom(0.19634954631328583) * 7f;
                short num7 = DustID.Smoke;
                Dust dust2 = Dust.NewDustDirect(Projectile.Center + Main.rand.NextVector2Circular(50f, 50f) - vector * 2f, 4, 4, num7, 0f, 0f, 150);
                dust2.noGravity = true;
                dust2.velocity = vector;
                dust2.scale *= 0.9f + Main.rand.NextFloat() * 0.2f;
                dust2.customData = -0.3f - 0.15f * Main.rand.NextFloat();
            }
        }

        public override void ModifyDamageHitbox(ref Rectangle hitbox)
        {
            int num = (int)Utils.Remap(Projectile.localAI[0], 0f, 60f, 10f, 40f);
            hitbox.Inflate(num, num);
        }

        public override bool? Colliding(Rectangle projHitbox, Rectangle targetHitbox)
        {
            if (!projHitbox.Intersects(targetHitbox))
                return false;

            return Collision.CanHit(Projectile.Center, 0, 0, targetHitbox.Center.ToVector2(), 0, 0);
        }

        public override bool PreDraw(ref Color lightColor)
        {
            DrawProj_Flamethrower(Projectile);
            return false;
        }

        private static void DrawProj_Flamethrower(Projectile proj)
        {
            bool flag = proj.ai[0] == 1f;
            float num = 60f;
            float num2 = 12f;
            float fromMax = num + num2;
            Texture2D value = TextureAssets.Projectile[proj.type].Value;
            Color transparent = Color.Transparent;
            Color val = new(255, 80, 20, 200);
            Color val2 = new(255, 255, 20, 70);
            Color val3 = Color.Lerp(new Color(255, 80, 20, 100), val2, 0.25f);
            Color val4 = new(80, 80, 80, 100);
            float num3 = 0.35f;
            float num4 = 0.7f;
            float num5 = 0.85f;
            float num6 = (proj.localAI[0] > num - 10f) ? 0.175f : 0.2f;
            if (flag)
            {
                val = new Color(95, 120, 255, 200);
                val2 = new Color(50, 180, 255, 70);
                val3 = new Color(95, 160, 255, 100);
                val4 = new Color(33, 125, 202, 100);
            }
            int verticalFrames = 7;
            float num9 = Utils.Remap(proj.localAI[0], num, fromMax, 1f, 0f);
            float num10 = Math.Min(proj.localAI[0], 20f);
            float num11 = Utils.Remap(proj.localAI[0], 0f, fromMax, 0f, 1f);
            float num12 = Utils.Remap(num11, 0.2f, 0.5f, 0.25f, 1f);
            Rectangle val5 = (!flag) ? value.Frame(1, verticalFrames, 0, 3) : value.Frame(1, verticalFrames, 0, (int)Utils.Remap(num11, 0.5f, 1f, 3f, 5f));
            if (!(num11 < 1f))
            {
                return;
            }
            for (int i = 0; i < 2; i++)
            {
                for (float num13 = 1f; num13 >= 0f; num13 -= num6)
                {
                    transparent = (num11 < 0.1f) ? Color.Lerp(Color.Transparent, val, Utils.GetLerpValue(0f, 0.1f, num11, clamped: true)) : ((num11 < 0.2f) ? Color.Lerp(val, val2, Utils.GetLerpValue(0.1f, 0.2f, num11, clamped: true)) : ((num11 < num3) ? val2 : ((num11 < num4) ? Color.Lerp(val2, val3, Utils.GetLerpValue(num3, num4, num11, clamped: true)) : ((num11 < num5) ? Color.Lerp(val3, val4, Utils.GetLerpValue(num4, num5, num11, clamped: true)) : ((!(num11 < 1f)) ? Color.Transparent : Color.Lerp(val4, Color.Transparent, Utils.GetLerpValue(num5, 1f, num11, clamped: true)))))));
                    float num14 = (1f - num13) * Utils.Remap(num11, 0f, 0.2f, 0f, 1f);
                    Vector2 val6 = proj.Center - Main.screenPosition + proj.velocity * (0f - num10) * num13;
                    Color val7 = transparent * num14;
                    Color val8 = val7;
                    if (!flag)
                    {
                        val8.G = (byte)(val8.G / 2);
                        val8.B = (byte)(val8.B / 2);
                        val8.A = (byte)Math.Min(val7.A + 80f * num14, 255f);
                        Utils.Remap(proj.localAI[0], 20f, fromMax, 0f, 1f);
                    }
                    float num15 = 1f / num6 * (num13 + 1f);
                    float num16 = proj.rotation + num13 * (MathHelper.Pi / 2f) + Main.GlobalTimeWrappedHourly * num15 * 2f;
                    float num17 = proj.rotation - num13 * (MathHelper.Pi / 2f) - Main.GlobalTimeWrappedHourly * num15 * 2f;
                    switch (i)
                    {
                        case 0:
                            Main.EntitySpriteDraw(value, val6 + proj.velocity * (0f - num10) * num6 * 0.5f, val5, val8 * num9 * 0.25f, num16 + MathHelper.Pi / 4f, val5.Size() / 2f, num12, 0);
                            Main.EntitySpriteDraw(value, val6, val5, val8 * num9, num17, val5.Size() / 2f, num12, 0);
                            break;
                        case 1:
                            if (!flag)
                            {
                                Main.EntitySpriteDraw(value, val6 + proj.velocity * (0f - num10) * num6 * 0.2f, val5, val7 * num9 * 0.25f, num16 + MathHelper.Pi / 2f, val5.Size() / 2f, num12 * 0.75f, 0);
                                Main.EntitySpriteDraw(value, val6, val5, val7 * num9, num17 + MathHelper.Pi / 2f, val5.Size() / 2f, num12 * 0.75f, 0);
                            }
                            break;
                    }
                }
            }
        }

        public override void OnHitPlayer(Player target, Player.HurtInfo info)
        {
            target.AddBuff(BuffID.OnFire3, 60 * 7);
        }

        public override void OnHitNPC(NPC target, NPC.HitInfo hit, int damageDone)
        {
            target.AddBuff(BuffID.OnFire3, 60 * 7);
    }  
}

ok, adding using System; reduces it to 56 errors
 

Attachments

  • Screenshot 2024-07-19 202947.png
    Screenshot 2024-07-19 202947.png
    169.6 KB · Views: 43
Last edited:
Your IDE should add them automatically, or give a variant in quick fix
i used visual studio code with a few plugins, but none add it automatically
 
You don't have an actual class in your code file above
 
Dy opened your mod .csproj file throught it?
i usually only opened the file i wnat to edit on, i'm pretty new at visual studio, i used to use sublime text with html
 
i usually only opened the file i wnat to edit on, i'm pretty new at visual studio, i used to use sublime text with html
Oh, open YourMod.csproj throught Visual Studio, you'll have debug then
 
alright, thank you!
 
Projectile from my mod that mimics flamethrower
so, i ran into a slight issue, how do i change the hitbox width without affecting the height? i need my flamethrower to have a shorter reach, but same hitbox height.
when i change any this value : int num = (int)Utils.Remap(Projectile.localAI[0], 0f, 60f, 10f, 40f);, it affects both height and width of the hitbox. how do i only change one of them?
 
Do not inflate hitbox with it??
 
Do not inflate hitbox with it??
i can modify the height like that, but not the width, since it will also extend the back of the hitbox to behind the player.
also, if i aim up/down, the hitbox got a little weird, i think its because the hitbox didn't face away from the player. do you have any solutions?
 
Last edited:
i can modify the height like that, but not the width, since it will also extend the back of the hitbox to behind the player.
Just make projectile unable to hurt for first ticks

also, if i aim up/down, the hitbox got a little weird, i think its because the hitbox didn't face away from the player. do you have any solutions?
Yeah because hitbox doesn't rotate. I'll give you the code to "rotate" hitbox later when I'll able to
 
Yeah because hitbox doesn't rotate. I'll give you the code to "rotate" hitbox later when I'll able to
thank you!

i found a way to increase the range without changing the hitbox size, but can you still share it? just in case i needed it sometime later.
 
Last edited:
Back
Top Bottom