예제 #1
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Poison Dart Frog", "poisondartfrog");

            Game.Items.Rename("outdated_gun_mods:poison_dart_frog", "nn:poison_dart_frog");
            gun.gunSwitchGroup = (PickupObjectDatabase.GetById(599) as Gun).gunSwitchGroup;
            gun.SetShortDescription("Oh yeah, it's Frog Time");
            gun.SetLongDescription("An endangered frog species from inside the Gungeon. Spits poison darts to protect itself." + "\n\nHow do you 'fire' a frog? How do you RELOAD a frog??");
            gun.SetupSprite(null, "poisondartfrog_idle_001", 8);
            gun.SetAnimationFPS(gun.shootAnimation, 16);
            for (int i = 0; i < 3; i++)
            {
                gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(56) as Gun, true, false);
            }

            //GUN STATS
            foreach (ProjectileModule mod in gun.Volley.projectiles)
            {
                mod.ammoCost            = 1;
                mod.shootStyle          = ProjectileModule.ShootStyle.SemiAutomatic;
                mod.sequenceStyle       = ProjectileModule.ProjectileSequenceStyle.Random;
                mod.cooldownTime        = 0.2f;
                mod.angleVariance       = 10f;
                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);
                projectile.baseData.damage *= 1.4f;
                if (mod != gun.DefaultModule)
                {
                    mod.ammoCost = 0;
                }
                projectile.transform.parent = gun.barrelOffset;
                projectile.damageTypes     |= CoreDamageTypes.Poison;
                ExtremelySimplePoisonBulletBehaviour poisoning = projectile.gameObject.AddComponent <ExtremelySimplePoisonBulletBehaviour>();
                poisoning.procChance     = 1;
                poisoning.useSpecialTint = false;
                projectile.SetProjectileSpriteRight("blowgun_projectile", 16, 7, false, tk2dBaseSprite.Anchor.MiddleCenter, 15, 8);
            }

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = "Blowgun Darts";

            gun.reloadTime = 0.5f;
            gun.SetBaseMaxAmmo(200);
            gun.quality  = PickupObject.ItemQuality.C;
            gun.gunClass = GunClass.POISON;
            gun.encounterTrackable.EncounterGuid = "this is the Poison Dart Frog";
            ETGMod.Databases.Items.Add(gun, null, "ANY");
            gun.barrelOffset.transform.localPosition = new Vector3(1.37f, 0.37f, 0f);
            PoisonDartFrogID = gun.PickupObjectId;
        }
예제 #2
0
        public override void PostProcessProjectile(Projectile projectile)
        {
            PlayerController player = projectile.Owner as PlayerController;

            base.PostProcessProjectile(projectile);
            if (player.PlayerHasActiveSynergy("Old and New"))
            {
                projectile.damageTypes |= CoreDamageTypes.Poison;
                ExtremelySimplePoisonBulletBehaviour poisoning = projectile.gameObject.AddComponent <ExtremelySimplePoisonBulletBehaviour>();
                poisoning.procChance     = 1;
                poisoning.useSpecialTint = false;
            }
        }
예제 #3
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Master's Gun", "mastersgun");

            Game.Items.Rename("outdated_gun_mods:master's_gun", "nn:masters_gun");
            gun.gameObject.AddComponent <MastersGun>();
            gun.SetShortDescription("Firing On All Cylinders");
            gun.SetLongDescription("A humongous firearm, created by the Gungeon's Master to fire the legendary master rounds, though he never truly finished it." + "\n\nAfter it's recent rediscovery, the Blacksmith managed to finish the spectacular weapon, and even forged Master-Sized bullet replicas for ammo." + "\n\nNothing can beat the gun's original purpose though, so getting your grubby hands on some master rounds would be good.");

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

            gun.SetAnimationFPS(gun.shootAnimation, 11);

            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(56) as Gun, true, false);

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.SemiAutomatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime                           = 1f;
            gun.muzzleFlashEffects                   = (PickupObjectDatabase.GetById(37) as Gun).muzzleFlashEffects;
            gun.DefaultModule.cooldownTime           = 0.4f;
            gun.DefaultModule.numberOfShotsInClip    = 6;
            gun.barrelOffset.transform.localPosition = new Vector3(3.62f, 1.81f, 0f);
            gun.SetBaseMaxAmmo(50);
            gun.gunClass = GunClass.PISTOL;
            //DEFAULT BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]);

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            gun.DefaultModule.projectiles[0] = projectile;
            projectile.baseData.damage      *= 10f;
            projectile.ignoreDamageCaps      = true;
            projectile.baseData.speed       *= 1f;
            projectile.pierceMinorBreakables = true;
            PierceProjModifier orAddComponent = projectile.gameObject.GetOrAddComponent <PierceProjModifier>();

            orAddComponent.penetratesBreakables = true;
            orAddComponent.penetration++;
            projectile.SetProjectileSpriteRight("mastersgun_projectile", 27, 12, false, tk2dBaseSprite.Anchor.MiddleCenter, 27, 12);
            projectile.transform.parent = gun.barrelOffset;

            //KEEP BULLET STATS
            keepProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]);
            keepProjectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(keepProjectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(keepProjectile);
            keepProjectile.baseData.damage      *= 16f;
            keepProjectile.ignoreDamageCaps      = true;
            keepProjectile.baseData.speed       *= 1f;
            keepProjectile.pierceMinorBreakables = true;
            PierceProjModifier keepComponent = keepProjectile.gameObject.GetOrAddComponent <PierceProjModifier>();

            keepComponent.penetratesBreakables = true;
            keepComponent.penetration++;
            BounceProjModifier Bouncing = keepProjectile.gameObject.GetOrAddComponent <BounceProjModifier>();

            Bouncing.numberOfBounces = 5;
            keepProjectile.SetProjectileSpriteRight("mastersgun_keep_projectile", 27, 12, false, tk2dBaseSprite.Anchor.MiddleCenter, 27, 12);
            keepProjectile.transform.parent = gun.barrelOffset;
            gun.gunSwitchGroup = (PickupObjectDatabase.GetById(37) as Gun).gunSwitchGroup;

            //PROPER BULLET STATS
            properProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]);
            properProjectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(properProjectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(properProjectile);
            properProjectile.baseData.damage      *= 16f;
            properProjectile.ignoreDamageCaps      = true;
            properProjectile.baseData.speed       *= 1f;
            properProjectile.pierceMinorBreakables = true;
            PierceProjModifier properComponent = properProjectile.gameObject.GetOrAddComponent <PierceProjModifier>();

            properComponent.penetratesBreakables = true;
            properComponent.penetration++;
            ApplyLockdownBulletBehaviour properLockdown = properProjectile.gameObject.GetOrAddComponent <ApplyLockdownBulletBehaviour>();

            properLockdown.duration = 6;

            properProjectile.SetProjectileSpriteRight("mastersgun_proper_projectile", 27, 12, false, tk2dBaseSprite.Anchor.MiddleCenter, 27, 12);
            properProjectile.transform.parent = gun.barrelOffset;

            //MINES BULLET STATS
            minesProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]);
            minesProjectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(minesProjectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(minesProjectile);
            minesProjectile.baseData.damage      *= 16f;
            minesProjectile.ignoreDamageCaps      = true;
            minesProjectile.baseData.speed       *= 1f;
            minesProjectile.pierceMinorBreakables = true;
            PierceProjModifier minesComponent = minesProjectile.gameObject.GetOrAddComponent <PierceProjModifier>();

            minesComponent.penetratesBreakables = true;
            minesComponent.penetration++;
            ExtremelySimplePoisonBulletBehaviour minesPoisoning = minesProjectile.gameObject.GetOrAddComponent <ExtremelySimplePoisonBulletBehaviour>();

            minesPoisoning.procChance     = 1;
            minesPoisoning.useSpecialTint = false;
            minesProjectile.SetProjectileSpriteRight("mastersgun_mines_projectile", 27, 12, false, tk2dBaseSprite.Anchor.MiddleCenter, 27, 12);
            minesProjectile.transform.parent = gun.barrelOffset;

            //HOLLOW BULLET STATS
            hollowProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]);
            hollowProjectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(hollowProjectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(hollowProjectile);
            hollowProjectile.baseData.damage      *= 16f;
            hollowProjectile.ignoreDamageCaps      = true;
            hollowProjectile.baseData.speed       *= 1f;
            hollowProjectile.pierceMinorBreakables = true;
            PierceProjModifier hollowComponent = hollowProjectile.gameObject.GetOrAddComponent <PierceProjModifier>();

            hollowComponent.penetratesBreakables = true;
            hollowComponent.penetration++;
            SimpleFreezingBulletBehaviour freezing = hollowProjectile.gameObject.GetOrAddComponent <SimpleFreezingBulletBehaviour>();

            freezing.procChance            = 1;
            freezing.useSpecialTint        = false;
            freezing.freezeAmount          = 150;
            freezing.freezeAmountForBosses = 100;
            hollowProjectile.SetProjectileSpriteRight("mastersgun_hollow_projectile", 27, 12, false, tk2dBaseSprite.Anchor.MiddleCenter, 27, 12);
            hollowProjectile.transform.parent = gun.barrelOffset;

            //FORGE BULLET STATS
            forgeProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]);
            forgeProjectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(forgeProjectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(forgeProjectile);
            forgeProjectile.baseData.damage      *= 20f;
            forgeProjectile.ignoreDamageCaps      = true;
            forgeProjectile.baseData.speed       *= 1f;
            forgeProjectile.pierceMinorBreakables = true;
            PierceProjModifier forgeComponent = forgeProjectile.gameObject.GetOrAddComponent <PierceProjModifier>();

            forgeComponent.penetratesBreakables = true;
            forgeComponent.penetration++;
            ExtremelySimpleStatusEffectBulletBehaviour burning = forgeProjectile.gameObject.GetOrAddComponent <ExtremelySimpleStatusEffectBulletBehaviour>();

            burning.onFiredProcChance = 1;
            burning.usesFireEffect    = true;
            burning.fireEffect        = StaticStatusEffects.hotLeadEffect;
            burning.useSpecialTint    = false;
            forgeProjectile.SetProjectileSpriteRight("mastersgun_forge_projectile", 33, 18, false, tk2dBaseSprite.Anchor.MiddleLeft, 27, 12);
            forgeProjectile.transform.parent = gun.barrelOffset;

            gun.quality = PickupObject.ItemQuality.S; //S
            gun.encounterTrackable.EncounterGuid = "this is the Master's Gun";
            ETGMod.Databases.Items.Add(gun, null, "ANY");
        }
예제 #4
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Blowgun", "blowgun");

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

            behav.preventNormalReloadAudio = true;
            gun.SetShortDescription("Huff and Puff");
            gun.SetLongDescription("Relies on lung strength to propel poisonous darts." + "\n\nRobots may need to hold it up to a cooling vent or something.");

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

            gun.SetAnimationFPS(gun.shootAnimation, 15);

            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(56) as Gun, true, false);
            gun.gunSwitchGroup = (PickupObjectDatabase.GetById(150) as Gun).gunSwitchGroup;

            //GUN STATS
            gun.muzzleFlashEffects          = (PickupObjectDatabase.GetById(26) as Gun).muzzleFlashEffects;
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.SemiAutomatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 0.5f;
            gun.DefaultModule.cooldownTime           = 0.2f;
            gun.DefaultModule.numberOfShotsInClip    = 1;
            gun.barrelOffset.transform.localPosition = new Vector3(1.12f, 0.18f, 0f);
            gun.SetBaseMaxAmmo(200);
            gun.gunClass = GunClass.POISON;
            //BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]);

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            gun.DefaultModule.projectiles[0] = projectile;
            projectile.transform.parent      = gun.barrelOffset;
            projectile.baseData.speed       *= 2f;
            projectile.damageTypes          |= CoreDamageTypes.Poison;
            ExtremelySimplePoisonBulletBehaviour poisoning = projectile.gameObject.AddComponent <ExtremelySimplePoisonBulletBehaviour>();

            poisoning.procChance     = 1;
            poisoning.useSpecialTint = false;
            projectile.SetProjectileSpriteRight("blowgun_projectile", 16, 7, false, tk2dBaseSprite.Anchor.MiddleCenter, 15, 8);

            VFXPool HorizVFXOBj = VFXToolbox.CreateVFXPool("Blowgun Tilemap VFX Horiz",
                                                           new List <string>()
            {
                "NevernamedsItems/Resources/MiscVFX/GunVFX/PoisonDarts/poisondart_impacthoriz_001",
                "NevernamedsItems/Resources/MiscVFX/GunVFX/PoisonDarts/poisondart_impacthoriz_002",
                "NevernamedsItems/Resources/MiscVFX/GunVFX/PoisonDarts/poisondart_impacthoriz_003",
                "NevernamedsItems/Resources/MiscVFX/GunVFX/PoisonDarts/poisondart_impacthoriz_004",
            },
                                                           10,
                                                           new IntVector2(12, 11),
                                                           tk2dBaseSprite.Anchor.MiddleLeft,
                                                           false,
                                                           0,
                                                           true);

            projectile.hitEffects.deathTileMapHorizontal = HorizVFXOBj;
            projectile.hitEffects.tileMapHorizontal      = HorizVFXOBj;

            projectile.hitEffects.deathTileMapVertical = HorizVFXOBj;
            projectile.hitEffects.tileMapVertical      = HorizVFXOBj;

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("Blowgun Darts", "NevernamedsItems/Resources/CustomGunAmmoTypes/blowgun_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/blowgun_clipempty");

            gun.quality = PickupObject.ItemQuality.D;
            gun.encounterTrackable.EncounterGuid = "this is the Blowgun";
            ETGMod.Databases.Items.Add(gun, null, "ANY");

            foreach (tk2dSpriteAnimationClip clip in AdjustGunPosition.GetGunAnimationClips(gun))
            {
                foreach (tk2dSpriteAnimationFrame frame in clip.frames)
                {
                    frame.spriteCollection.spriteDefinitions[frame.spriteId].ApplyOffset(new Vector2(0, 0f));
                }
            }

            BlowgunID = gun.PickupObjectId;
        }