URL: https://wiki.studiominus.nl/tutorials/tutorialCustomGun.html
Title: People Playground Modding - Creating a gun with a custom projectile
==================================================

Creating a gun with a custom projectile
by Talon
Creating a gun with a custom projectile
            ModAPI.Register(
            new Modification()
            {
                OriginalItem = ModAPI.FindSpawnable("Crossbow"), //Starting with the Crossbow sets up a nice template with everything we need.
                NameOverride = "gay gun",
                DescriptionOverride = "this gun is homosexual", //For more information, check https://en.wikipedia.org/wiki/Homosexuality for more documentation on the subject.
                CategoryOverride = ModAPI.FindCategory("Firearms"),
                ThumbnailOverride = ModAPI.LoadSprite("sprites/gay gun.png"),
                AfterSpawn = (Instance) =>
                {
                    var pLauncher = Instance.GetComponent<ProjectileLauncherBehaviour>();

                    pLauncher.projectileAsset = null;
                    var proj = new GameObject("Custom Projectile");
                    pLauncher.projectilePrefab = proj;

                    pLauncher.OnLaunch += (sender, projectile) =>
                    {
                        /*
                         * Within these brackets, 'projectile' is the GameObject that is created when the firearm is used, and can be treated like any other GameObject.
                         * For this example, we'll give it a sprite, collider, and behaviour.
                         * It's recommend that you cache the component on launch if you plan to assign values outside of the behaviour itself.
                         * (I don't know if there's any benefit to that, but it looks cleaner.)
                         */

                        var c = projectile.AddComponent<CircleCollider2D>();
                        var sr = projectile.AddComponent<SpriteRenderer>();
                        sr.sprite = ModAPI.LoadSprite("gay projectile.png");

                        var newProj = projectile.AddComponent<GayProjectileBehaviour>();
                    };

                }
            });