Ejemplo n.º 1
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Sick Worm", "sickworm");

            Game.Items.Rename("outdated_gun_mods:sick_worm", "nn:sick_worm");
            var behav = gun.gameObject.AddComponent <SickWorm>();

            behav.preventNormalFireAudio = true;
            gun.SetShortDescription("Projectile Vomit");
            gun.SetLongDescription("A rare example of Gungeon Gigantism, this worm has developed a remarkable evolutionary defence mechanism; regurgitating high-speed digestive juices at potential predators.");

            gun.SetupSprite(null, "sickworm_idle_001", 8);

            gun.SetAnimationFPS(gun.shootAnimation, 16);
            gun.isAudioLoop = true;
            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false);

            //GUN STATS
            gun.doesScreenShake             = false;
            gun.DefaultModule.ammoCost      = 10;
            gun.DefaultModule.angleVariance = 0;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.Beam;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 1f;
            gun.muzzleFlashEffects.type              = VFXPoolType.None;
            gun.DefaultModule.cooldownTime           = 0.001f;
            gun.DefaultModule.numberOfShotsInClip    = 2000;
            gun.DefaultModule.ammoType               = GameUIAmmoType.AmmoType.BEAM;
            gun.barrelOffset.transform.localPosition = new Vector3(1.06f, 0.62f, 0f);
            gun.SetBaseMaxAmmo(2000);
            gun.ammo     = 2000;
            gun.gunClass = GunClass.SILLY;
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).wrapMode  = tk2dSpriteAnimationClip.WrapMode.LoopSection;
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).loopStart = 1;

            List <string> BeamAnimPaths = new List <string>()
            {
                "NevernamedsItems/Resources/BeamSprites/sickworm_mid_001",
            };
            List <string> BeamEndPaths = new List <string>()
            {
                "NevernamedsItems/Resources/BeamSprites/sickworm_end_001",
            };

            //BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]);

            BasicBeamController beamComp = projectile.GenerateBeamPrefab(
                "NevernamedsItems/Resources/BeamSprites/sickworm_mid_001",
                new Vector2(8, 8),
                new Vector2(0, 1),
                BeamAnimPaths,
                9,
                //Impact
                null,
                -1,
                null,
                null,
                //End
                BeamEndPaths,
                9,
                new Vector2(8, 8),
                new Vector2(0, 1),
                //Beginning
                null,
                -1,
                null,
                null
                );

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            projectile.baseData.damage = 30f;
            projectile.baseData.force *= 1f;
            projectile.baseData.range  = 7f;
            projectile.baseData.speed *= 0.7f;

            beamComp.penetration = 2;
            beamComp.boneType    = BasicBeamController.BeamBoneType.Projectile;
            beamComp.interpolateStretchedBones = false;
            beamComp.endAudioEvent             = "Stop_WPN_All";
            beamComp.startAudioEvent           = "Play_WPN_SeriousCannon_Scream_01";


            Projectile spewProj = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]);

            spewProj.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(spewProj.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(spewProj);
            spewProj.SetProjectileSpriteRight("sickworm_projectile", 5, 5, false, tk2dBaseSprite.Anchor.MiddleCenter, 3, 3);
            spewProj.baseData.damage = 2;
            RandomProjectileStatsComponent randomStats = spewProj.gameObject.AddComponent <RandomProjectileStatsComponent>();

            randomStats.randomScale = true;
            randomStats.randomSpeed = true;

            BeamProjSpewModifier spew = projectile.gameObject.AddComponent <BeamProjSpewModifier>();

            spew.bulletToSpew     = spewProj;
            spew.accuracyVariance = 5;


            gun.DefaultModule.projectiles[0] = projectile;

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("SickWorm Clip", "NevernamedsItems/Resources/CustomGunAmmoTypes/sickworm_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/sickworm_clipempty");

            gun.quality = PickupObject.ItemQuality.A; //D
            ETGMod.Databases.Items.Add(gun, null, "ANY");
        }
Ejemplo n.º 2
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Ember Cannon", "embercannon");

            Game.Items.Rename("outdated_gun_mods:ember_cannon", "nn:ember_cannon");
            var behav = gun.gameObject.AddComponent <EmberCannon>();

            behav.preventNormalFireAudio    = true;
            behav.preventNormalReloadAudio  = true;
            behav.overrideNormalReloadAudio = "Play_ENM_flame_veil_01";
            gun.SetShortDescription("Burns Eternal");
            gun.SetLongDescription("This mighty furnace was created to warm a group of hopeless souls trapped in the freezing hollow." + "\n\nThough it no longer burns with it's ancient ferocity, it has not yet run cold in a thousand years.");
            gun.SetupSprite(null, "embercannon_idle_001", 8);


            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).frames[0].eventAudio   = "Play_WPN_seriouscannon_shot_01";
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).frames[0].triggerEvent = true;
            gun.muzzleFlashEffects = (PickupObjectDatabase.GetById(37) as Gun).muzzleFlashEffects;
            gun.barrelOffset.transform.localPosition = new Vector3(1.93f, 0.87f, 0f);
            gun.SetAnimationFPS(gun.shootAnimation, 10);
            gun.SetAnimationFPS(gun.chargeAnimation, 8);
            gun.gunClass = GunClass.CHARGE;
            for (int i = 0; i < 10; i++)
            {
                gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(83) as Gun, true, false);
            }

            //GUN STATS
            foreach (ProjectileModule mod in gun.Volley.projectiles)
            {
                mod.ammoCost            = 1;
                mod.shootStyle          = ProjectileModule.ShootStyle.Charged;
                mod.sequenceStyle       = ProjectileModule.ProjectileSequenceStyle.Random;
                mod.cooldownTime        = 0.70f;
                mod.angleVariance       = 20f;
                mod.numberOfShotsInClip = 3;
                Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(mod.projectiles[0]);
                mod.projectiles[0] = projectile;
                projectile.gameObject.SetActive(false);
                FakePrefab.MarkAsFakePrefab(projectile.gameObject);
                UnityEngine.Object.DontDestroyOnLoad(projectile);

                RandomProjectileStatsComponent stats = projectile.gameObject.AddComponent <RandomProjectileStatsComponent>();
                stats.randomDamage       = true;
                stats.randomSpeed        = true;
                stats.randomRange        = true;
                stats.randomKnockback    = true;
                stats.scaleBasedOnDamage = true;

                if (mod != gun.DefaultModule)
                {
                    mod.ammoCost = 0;
                }
                ProjectileModule.ChargeProjectile chargeProj = new ProjectileModule.ChargeProjectile
                {
                    Projectile = projectile,
                    ChargeTime = 0.5f,
                };
                mod.chargeProjectiles = new List <ProjectileModule.ChargeProjectile> {
                    chargeProj
                };
            }
            gun.reloadTime = 1f;
            gun.SetBaseMaxAmmo(100);

            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.chargeAnimation).wrapMode  = tk2dSpriteAnimationClip.WrapMode.LoopSection;
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.chargeAnimation).loopStart = 2;

            gun.quality = PickupObject.ItemQuality.B;
            ETGMod.Databases.Items.Add(gun, null, "ANY");
            EmberCannonID = gun.PickupObjectId;
        }