tModLoader Official tModLoader Help Thread

3ec7b7c30de6f4006f53e2eff91cead0.png


Aaaand where do you see that?
Not in mods list, go to the mod browser and there is will have an update button.
 
Help! My mod does this when i try to build it!
c:\Users\Pixel\Documents\My Games\Terraria\ModLoader\Mod Sources\WandEMod\Items\SplitScythe.cs(12,18) : error CS1061: 'Terraria.Item' does not contain a definition for 'name' and no extension method 'name' accepting a first argument of type 'Terraria.Item' could be found (are you missing a using directive or an assembly reference?)

c:\Users\Pixel\Documents\My Games\Terraria\ModLoader\Mod Sources\WandEMod\Items\SplitScythe.cs(17,18) : error CS1061: 'Terraria.Item' does not contain a definition for 'toolTip' and no extension method 'toolTip' accepting a first argument of type 'Terraria.Item' could be found (are you missing a using directive or an assembly reference?)

c:\Users\Pixel\Documents\My Games\Terraria\ModLoader\Mod Sources\WandEMod\Items\SplitScythe.cs(18,18) : error CS1061: 'Terraria.Item' does not contain a definition for 'toolTip2' and no extension method 'toolTip2' accepting a first argument of type 'Terraria.Item' could be found (are you missing a using directive or an assembly reference?)

c:\Users\Pixel\Documents\My Games\Terraria\ModLoader\Mod Sources\WandEMod\Projectiles\MysteriousProjectile.cs(14,24) : error CS1061: 'Terraria.Projectile' does not contain a definition for 'name' and no extension method 'name' accepting a first argument of type 'Terraria.Projectile' could be found (are you missing a using directive or an assembly reference?)

Here's the code for the files mentioned (SplitScythe.cs and MysteriousProjectile.cs)

SplitScythe.cs:

HTML:
using System;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace WandEMod.Items      //We need this to basically indicate the folder where it is to be read from, so you the texture will load correctly
{
    public class CustomSpinningWeapon : ModItem
    {
        public override void SetDefaults()
        {
            item.name = "Split Scythe";  
            item.damage = 102; 
            item.melee = true;  
            item.width = 80;  
            item.height = 80;  
            item.toolTip = "It radiates light and dark energy all at once.";
            item.toolTip2 = "It has a color pattern of Black, Blue, Purple, Yellow";
            item.useTime = 10; 
            item.useAnimation = 10;   
            item.channel = true;
            item.useStyle = 100;  
            item.knockBack = 8f; 
            item.value = Item.buyPrice(0, 10, 0, 0);
            item.rare = 11;                  
            item.shoot = mod.ProjectileType("MysteriousProjectile");
            item.noUseGraphic = true;
        }

        public override bool UseItemFrame(Player player)  
        {
            player.bodyFrame.Y = 3 * player.bodyFrame.Height;
            return true;
        }
    }
}

MysteriousProjectile.cs:

HTML:
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace WandEMod.Projectiles     //We need this to basically indicate the folder where it is to be read from, so you the texture will load correctly
{
    public class SpinningWeaponProj : ModProjectile
    {
        public override void SetDefaults()
        {
            projectile.name = "Unknown Magic";  //Name of the projectile, only shows this if you get killed by it
            projectile.width = 220;     //Set the hitbox width
            projectile.height = 220;       //Set the hitbox height
            projectile.friendly = true;    //Tells the game whether it is friendly to players/friendly npcs or not
            projectile.penetrate = -1;    //Tells the game how many enemies it can hit before being destroyed. -1 = never
            projectile.tileCollide = false; //Tells the game whether or not it can collide with a tile
            projectile.ignoreWater = true; //Tells the game whether or not projectile will be affected by water       
            projectile.melee = true;  //Tells the game whether it is a melee projectile or not

        }

        public override void AI()
        {
            //-------------------------------------------------------------Sound-------------------------------------------------------
            projectile.soundDelay--;
            if (projectile.soundDelay <= 0)//this is the proper sound delay for this type of weapon
            {
                Main.PlaySound(2, (int)projectile.Center.X, (int)projectile.Center.Y, 15);    //this is the sound when the weapon is used
                projectile.soundDelay = 45;    //this is the proper sound delay for this type of weapon
            }
            //-----------------------------------------------How the projectile works---------------------------------------------------------------------
            Player player = Main.player[projectile.owner];
            if (Main.myPlayer == projectile.owner)
            {
                if (!player.channel || player.noItems || player.CCed)
                {
                    projectile.Kill();
                }
            }
            Lighting.AddLight(projectile.Center, 1f, 0.6f, 0f);     //this is the projectile light color R, G, B (Red, Green, Blue)
            projectile.Center = player.MountedCenter;
            projectile.position.X += player.width / 2 * player.direction;  //this is the projectile width sptrite direction from the playr
            projectile.spriteDirection = player.direction;
            projectile.rotation += 0.3f * player.direction; //this is the projectile rotation/spinning speed
            if (projectile.rotation > MathHelper.TwoPi)
            {
                projectile.rotation -= MathHelper.TwoPi;
            }
            else if (projectile.rotation < 0)
            {
                projectile.rotation += MathHelper.TwoPi;
            }
            player.heldProj = projectile.whoAmI;
            player.itemTime = 2;
            player.itemAnimation = 2;
            player.itemRotation = projectile.rotation;
            int dust = Dust.NewDust(projectile.position, projectile.width, projectile.height, DustID.Fire);  //this is the dust that this projectile will spawn
            Main.dust[dust].velocity /= 1f;

        }

        public override bool PreDraw(SpriteBatch spriteBatch, Color lightColor)  //this make the projectile sprite rotate perfectaly around the player
        {
            Texture2D texture = Main.projectileTexture[projectile.type];
            spriteBatch.Draw(texture, projectile.Center - Main.screenPosition, null, Color.White, projectile.rotation, new Vector2(texture.Width / 2, texture.Height / 2), 1f, projectile.spriteDirection == 1 ? SpriteEffects.None : SpriteEffects.FlipHorizontally, 0f);
            return false;
        }
    }
}

Hope you can help!
Sorry I am so ignorant with coding :/
 
Last edited:
okay so I'm making a cloud in the bottle accessory and I have come to a problem, why isn't this changing velocity, it should by all current means be allowing me to constantly jump. it might be something with update accessory but in my testing it constantly updates so it should be able to allow this multijump

Code:
namespace TGilded.Items
{
    class BoomerangInABottle : ModItem
    {
        bool dJumpEffectBoomerang;
        bool BoomerangJump = true;
        public override void SetStaticDefaults()
        {
            DisplayName.SetDefault("Boomerang in a Bottle");
            Tooltip.SetDefault("How did you get it in there");
        }
        public override void SetDefaults()
        {
            item.accessory = true;
            item.rare = 3;
            item.damage = 13;
            item.width = 20;
            item.height = 26;
        }
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            if (player.controlJump && player.justJumped && BoomerangJump)
            {
                this.dJumpEffectBoomerang = true;
                player.velocity.Y = (float)(-5.01f * player.gravDir);
                player.jump = 45;
                player.releaseJump = true;
            }


        }

    }
}
 
Alright so I've been getting back into terraria recently but every time I try to run a multiplayer server I get the message "Invalid operations at this state"
Any way to fix it?
 
Help! My mod does this when i try to build it!
c:\Users\Pixel\Documents\My Games\Terraria\ModLoader\Mod Sources\WandEMod\Items\SplitScythe.cs(12,18) : error CS1061: 'Terraria.Item' does not contain a definition for 'name' and no extension method 'name' accepting a first argument of type 'Terraria.Item' could be found (are you missing a using directive or an assembly reference?)

c:\Users\Pixel\Documents\My Games\Terraria\ModLoader\Mod Sources\WandEMod\Items\SplitScythe.cs(17,18) : error CS1061: 'Terraria.Item' does not contain a definition for 'toolTip' and no extension method 'toolTip' accepting a first argument of type 'Terraria.Item' could be found (are you missing a using directive or an assembly reference?)

c:\Users\Pixel\Documents\My Games\Terraria\ModLoader\Mod Sources\WandEMod\Items\SplitScythe.cs(18,18) : error CS1061: 'Terraria.Item' does not contain a definition for 'toolTip2' and no extension method 'toolTip2' accepting a first argument of type 'Terraria.Item' could be found (are you missing a using directive or an assembly reference?)

c:\Users\Pixel\Documents\My Games\Terraria\ModLoader\Mod Sources\WandEMod\Projectiles\MysteriousProjectile.cs(14,24) : error CS1061: 'Terraria.Projectile' does not contain a definition for 'name' and no extension method 'name' accepting a first argument of type 'Terraria.Projectile' could be found (are you missing a using directive or an assembly reference?)

Here's the code for the files mentioned (SplitScythe.cs and MysteriousProjectile.cs)

SplitScythe.cs:

using System;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace WandEMod.Items //We need this to basically indicate the folder where it is to be read from, so you the texture will load correctly
{
public class CustomSpinningWeapon : ModItem
{
public override void SetDefaults()
{
item.name = "Split Scythe";
item.damage = 102;
item.melee = true;
item.width = 80;
item.height = 80;
item.toolTip = "It radiates light and dark energy all at once.";
item.toolTip2 = "It has a color pattern of Black, Blue, Purple, Yellow";
item.useTime = 10;
item.useAnimation = 10;
item.channel = true;
item.useStyle = 100;
item.knockBack = 8f;
item.value = Item.buyPrice(0, 10, 0, 0);
item.rare = 11;
item.shoot = mod.ProjectileType("MysteriousProjectile");
item.noUseGraphic = true;
}

public override bool UseItemFrame(Player player)
{
player.bodyFrame.Y = 3 * player.bodyFrame.Height;
return true;
}
}
}

MysteriousProjectile.cs:

using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace WandEMod.Projectiles //We need this to basically indicate the folder where it is to be read from, so you the texture will load correctly
{
public class SpinningWeaponProj : ModProjectile
{
public override void SetDefaults()
{
projectile.name = "Unknown Magic"; //Name of the projectile, only shows this if you get killed by it
projectile.width = 220; //Set the hitbox width
projectile.height = 220; //Set the hitbox height
projectile.friendly = true; //Tells the game whether it is friendly to players/friendly npcs or not
projectile.penetrate = -1; //Tells the game how many enemies it can hit before being destroyed. -1 = never
projectile.tileCollide = false; //Tells the game whether or not it can collide with a tile
projectile.ignoreWater = true; //Tells the game whether or not projectile will be affected by water
projectile.melee = true; //Tells the game whether it is a melee projectile or not

}

public override void AI()
{
//-------------------------------------------------------------Sound-------------------------------------------------------
projectile.soundDelay--;
if (projectile.soundDelay <= 0)//this is the proper sound delay for this type of weapon
{
Main.PlaySound(2, (int)projectile.Center.X, (int)projectile.Center.Y, 15); //this is the sound when the weapon is used
projectile.soundDelay = 45; //this is the proper sound delay for this type of weapon
}
//-----------------------------------------------How the projectile works---------------------------------------------------------------------
Player player = Main.player[projectile.owner];
if (Main.myPlayer == projectile.owner)
{
if (!player.channel || player.noItems || player.CCed)
{
projectile.Kill();
}
}
Lighting.AddLight(projectile.Center, 1f, 0.6f, 0f); //this is the projectile light color R, G, B (Red, Green, Blue)
projectile.Center = player.MountedCenter;
projectile.position.X += player.width / 2 * player.direction; //this is the projectile width sptrite direction from the playr
projectile.spriteDirection = player.direction;
projectile.rotation += 0.3f * player.direction; //this is the projectile rotation/spinning speed
if (projectile.rotation > MathHelper.TwoPi)
{
projectile.rotation -= MathHelper.TwoPi;
}
else if (projectile.rotation < 0)
{
projectile.rotation += MathHelper.TwoPi;
}
player.heldProj = projectile.whoAmI;
player.itemTime = 2;
player.itemAnimation = 2;
player.itemRotation = projectile.rotation;
int dust = Dust.NewDust(projectile.position, projectile.width, projectile.height, DustID.Fire); //this is the dust that this projectile will spawn
Main.dust[dust].velocity /= 1f;

}

public override bool PreDraw(SpriteBatch spriteBatch, Color lightColor) //this make the projectile sprite rotate perfectaly around the player
{
Texture2D texture = Main.projectileTexture[projectile.type];
spriteBatch.Draw(texture, projectile.Center - Main.screenPosition, null, Color.White, projectile.rotation, new Vector2(texture.Width / 2, texture.Height / 2), 1f, projectile.spriteDirection == 1 ? SpriteEffects.None : SpriteEffects.FlipHorizontally, 0f);
return false;
}
}
}

Hope you can help!
Sorry I am so ignorant with coding :/

First off can you use code in html when showing code, its just easier to read (find insert on toolbar then press code), second off if you have no intention of changing the tooltips and name use:
Code:
        public override void SetStaticDefaults()
        {
            DisplayName.SetDefault("Boomerang in a Bottle");
            Tooltip.SetDefault("How did you get it in there");
        }
[doublepost=1504441989,1504441686][/doublepost]
Yes, I've read this half a dozen times and checked just as many. I sort of know what I'm up against, which is why I'm confused and posted here.

Is there possibly any other cause for that error?
it is not finding the file for your projectile texture, in set defaults for your projectile define a width and height for your png size and name your original png after the cs file,
I also believe that all mod projectiles require this or an error will occur.
 
The process cannot access the file 'C:\Users\jacke\OneDrive\Documents\My Games\Terraria\ModLoader\Mod Sources\TGilded\.vs\TGilded\v15\sqlite3\storage.ide' because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.File.InternalReadAllBytes(String path, Boolean checkHost)
at Terraria.ModLoader.ModCompile.Build(BuildingMod mod, IBuildStatus status)
at Terraria.ModLoader.ModCompile.Build(String modFolder, IBuildStatus status)
at Terraria.ModLoader.ModLoader.<>c.<BuildMod>b__65_0(Object _)

i have tried restarting every process, but because of this my mod refuses to compile so i cant test solutions, anyone know a potential fix?
 
The process cannot access the file 'C:\Users\jacke\OneDrive\Documents\My Games\Terraria\ModLoader\Mod Sources\TGilded\.vs\TGilded\v15\sqlite3\storage.ide' because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.File.InternalReadAllBytes(String path, Boolean checkHost)
at Terraria.ModLoader.ModCompile.Build(BuildingMod mod, IBuildStatus status)
at Terraria.ModLoader.ModCompile.Build(String modFolder, IBuildStatus status)
at Terraria.ModLoader.ModLoader.<>c.<BuildMod>b__65_0(Object _)

i have tried restarting every process, but because of this my mod refuses to compile so i cant test solutions, anyone know a potential fix?
Are you trying to use sqlite? I don't think there is a completely managed sqlite dll, is there?

Anyway, it's complaining about that file being open somewhere. you should use build.txt's buildIgnore to ignore ".vs\*" among other folders like "bin\*" and "obj\*"
 
Are you trying to use sqlite? I don't think there is a completely managed sqlite dll, is there?

Anyway, it's complaining about that file being open somewhere. you should use build.txt's buildIgnore to ignore ".vs\*" among other folders like "bin\*" and "obj\*"
thanks for directing me towards the build.txt.

btw i also love your mods of wheres my items and cheat sheet, it has made my terraria mod playing and modding career really easy
 
Help! My mod does this when i try to build it!
It's because the formatting was changed a bit. Why, I do not know, but I got some code that might work for you give your item a name. As of right now, I don't know how to create a custom tool tip for an item.
Code:
using System;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace WandEMod.Items
{
    public class CustomSpinningWeapon : ModItem
    {
        public override void SetStaticDefaults()
        {
            DisplayName.SetDefault("Split Scythe");

            ///I don't know how to make a custom tool tip for an item, but I think it goes somewhere in this section.

        }
        public override void SetDefaults()
        {
            item.damage = 102;
            item.melee = true;
            item.width = 80;
            item.height = 80;
            item.useTime = 10;
            item.useAnimation = 10;
            item.channel = true;
            item.useStyle = 100;
            item.knockBack = 8f;
            item.value = Item.buyPrice(0, 10, 0, 0);
            item.rare = 11;             
            item.shoot = mod.ProjectileType("MysteriousProjectile");
            item.noUseGraphic = true;
        }

        public override bool UseItemFrame(Player player)
        {
            player.bodyFrame.Y = 3 * player.bodyFrame.Height;
            return true;
        }
    }
}

By the way, how does one go about making a custom tool tip for an item? And I am talking about a custom tool tip that uses multiple lines. Not just one. Not everything I need to say about an item can fit on one line.
 
Last edited:
It's because the formatting was changed a bit. Why, I do not know, but I got some code that might work for you give your item a name. As of right now, I don't know how to create a custom tool tip for an item.
Code:
using System;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace WandEMod.Items
{
    public class CustomSpinningWeapon : ModItem
    {
        public override void SetStaticDefaults()
        {
            DisplayName.SetDefault("Split Scythe");

            ///I don't know how to make a custom tool tip for an item, but I think it goes somewhere in this section.

        }
        public override void SetDefaults()
        {
            item.damage = 102;
            item.melee = true;
            item.width = 80;
            item.height = 80;
            item.useTime = 10;
            item.useAnimation = 10;
            item.channel = true;
            item.useStyle = 100;
            item.knockBack = 8f;
            item.value = Item.buyPrice(0, 10, 0, 0);
            item.rare = 11;            
            item.shoot = mod.ProjectileType("MysteriousProjectile");
            item.noUseGraphic = true;
        }

        public override bool UseItemFrame(Player player)
        {
            player.bodyFrame.Y = 3 * player.bodyFrame.Height;
            return true;
        }
    }
}

By the way, how does one go about making a custom tool tip for an item? And I am talking about a custom tool tip that uses multiple lines. Not just one. Not everything I need to say about an item can fit on one line.
You can put either /n or \n (I forget which) nto a string to create a new line.
 
Hey everyone, I've got a problem with cross-mod compatibility. The chests from my mod (Simple Auto Chests) are not being recognized by the item pipes from DRKV's MechTransfer. He says this is because my chests are not marked as TileID.Sets.BasicChest. However, it seems like this is done automatically by Mod.SetupContent, and that since my mod is after his alphabetically it's not working. Is there some way to fix this? Thanks for your help.

Thread: https://forums.terraria.org/index.p...nslocation-and-more.60571/page-2#post-1450516

Edit: Never mind, he found a fix on his end.
 
Hey, I finally decided to update my old 1.3 mod to the newest version of tmodloader, and i'm running in a few problems, first of all, seems like most of the code for my heart crystal like item is trash, does anyone know if Example Mod has an example of how to make one in the newest version ? Can't find documentation atm...
 
Hi i have a trouble with a custom projectile can you say whats wrong with my code?



using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;


namespace Projectile_1.Projectiles
{

public class Projectile_1 : ModProjectile
{

public override void SetDefaults()
{
projectile.name = "Projectile_1";
projectile.width = 20; //projectile width
projectile.height = 28; //projectile height
projectile.friendly = true; //make that the projectile will not damage you
projectile.melee = true; //
projectile.tileCollide = true; //make that the projectile will be destroed if it hits the terrain
projectile.penetrate = 2; //how many npc will penetrate
projectile.timeLeft = 200; //how many time this projectile has before disepire
projectile.light = 0.75f; // projectile light
projectile.extraUpdates = 1;
projectile.ignoreWater = true;
}
public override void AI() //this make that the projectile will face the corect way
{ // |
projectile.rotation = (float)Math.Atan2((double)projectile.velocity.Y, (double)projectile.velocity.X) + 1.57f;
}
}
}
 
Hi i have a trouble with a custom projectile can you say whats wrong with my code?



using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;


namespace Projectile_1.Projectiles
{

public class Projectile_1 : ModProjectile
{

public override void SetDefaults()
{
projectile.name = "Projectile_1";
projectile.width = 20; //projectile width
projectile.height = 28; //projectile height
projectile.friendly = true; //make that the projectile will not damage you
projectile.melee = true; //
projectile.tileCollide = true; //make that the projectile will be destroed if it hits the terrain
projectile.penetrate = 2; //how many npc will penetrate
projectile.timeLeft = 200; //how many time this projectile has before disepire
projectile.light = 0.75f; // projectile light
projectile.extraUpdates = 1;
projectile.ignoreWater = true;
}
public override void AI() //this make that the projectile will face the corect way
{ // |
projectile.rotation = (float)Math.Atan2((double)projectile.velocity.Y, (double)projectile.velocity.X) + 1.57f;
}
}
}
The namespace is wrong. It should be ModName.Projectiles.
[doublepost=1504919797,1504919701][/doublepost]I keep getting this error when trying to add armor to my mod.

Items/Armor/WhippiesHood_Head
at Terraria.ModLoader.Mod.GetTexture(String name)
at Terraria.ModLoader.ModLoader.GetTexture(String name)
at Terraria.ModLoader.Mod.AddEquipTexture(EquipTexture equipTexture, ModItem item, EquipType type, String name, String texture, String armTexture, String femaleTexture)
at Terraria.ModLoader.Mod.AddEquipTexture(ModItem item, EquipType type, String name, String texture, String armTexture, String femaleTexture)
at Terraria.ModLoader.Mod.AutoloadItem(Type type)
at Terraria.ModLoader.Mod.Autoload()
at Terraria.ModLoader.ModLoader.do_Load(Object threadContext)

I don't know why I keep getting it, the code is almost identical to the examplemod, so it should work fine. can anyone help with this?
 
Ok i did it and now it is saying something about name i heard about migrations but i dont get it how to make it with projectiles (For a projectile of a meele sword ofc.)

Code:



using System;

using Microsoft.Xna.Framework;

using Microsoft.Xna.Framework.Graphics;

using Terraria;

using Terraria.ID;

using Terraria.ModLoader;



namespace Projectile_1.Terror.Projectiles

{

publicclassProjectile_1 : ModProjectile

{

publicoverridevoid SetDefaults()

{

projectile.name = "Projectile_1";

projectile.width = 20; //projectile width

projectile.height = 28; //projectile height

projectile.friendly = true; //make that the projectile will not damage you

projectile.melee = true; //

projectile.tileCollide = true; //make that the projectile will be destroed if it hits the terrain

projectile.penetrate = 2; //how many npc will penetrate

projectile.timeLeft = 200; //how many time this projectile has before disepire

projectile.light = 0.75f; // projectile light

projectile.extraUpdates = 1;

projectile.ignoreWater = true;

}

publicoverridevoid AI() //this make that the projectile will face the corect way

{ // |

projectile.rotation = (float)Math.Atan2((double)projectile.velocity.Y, (double)projectile.velocity.X) + 1.57f;

}

}

}
 
Back
Top Bottom