Exemple #1
0
        private void PostProcessProjectile(Projectile sourceProjectile, float effectChanceScalar)
        {
            float procChance = 0.12f;

            //ETGModConsole.Log("Scaler: " + effectChanceScalar);
            procChance *= effectChanceScalar;
            bool DoFirstShotOverrideSynergy = (Owner.CurrentGun.LastShotIndex == 0) && Owner.PlayerHasActiveSynergy("Added Effect - Lockdown");
            bool DoLastShotOverrideSynergy  = (Owner.CurrentGun.LastShotIndex == Owner.CurrentGun.ClipCapacity - 1) && Owner.PlayerHasActiveSynergy("Moonstone Weapon");

            //ETGModConsole.Log("PostScaleChance: " + procChance);
            try
            {
                if (UnityEngine.Random.value <= procChance || DoFirstShotOverrideSynergy || DoLastShotOverrideSynergy)
                {
                    ApplyLockdownBulletBehaviour orAddComponent = sourceProjectile.gameObject.GetOrAddComponent <ApplyLockdownBulletBehaviour>();
                    orAddComponent.duration             = 4f;
                    orAddComponent.useSpecialBulletTint = true;
                    orAddComponent.bulletTintColour     = Color.grey;
                    orAddComponent.TintEnemy            = true;
                    orAddComponent.procChance           = 1;
                }
            }
            catch (Exception e)
            {
                ETGModConsole.Log(e.Message);
            }
        }
Exemple #2
0
 public override void PostProcessProjectile(Projectile projectile)
 {
     if (projectile.Owner is PlayerController)
     {
         PlayerController player = projectile.Owner as PlayerController;
         if (player.PlayerHasActiveSynergy("Heat Stress"))
         {
             ExtremelySimpleStatusEffectBulletBehaviour burning = projectile.gameObject.GetComponent <ExtremelySimpleStatusEffectBulletBehaviour>();
             if (burning != null)
             {
                 burning.onHitProcChance *= 3f;
             }
         }
         if (player.PlayerHasActiveSynergy("Stick In The Mud"))
         {
             ApplyLockdownBulletBehaviour lockingdown = projectile.gameObject.GetComponent <ApplyLockdownBulletBehaviour>();
             if (lockingdown != null)
             {
                 lockingdown.duration *= 2f;
             }
         }
     }
 }
Exemple #3
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Glue Gunner", "gluegunner");

            Game.Items.Rename("outdated_gun_mods:glue_gunner", "nn:hot_glue_gun+glue_gunner");
            gun.gameObject.AddComponent <GlueGunGlueGunnerSynergy>();
            gun.SetShortDescription("yes this is a btd reference");
            gun.SetLongDescription("im too tired to write a snarky description");

            gun.SetupSprite(null, "gluegunner_idle_001", 8);
            gun.gunSwitchGroup = (PickupObjectDatabase.GetById(199) as Gun).gunSwitchGroup;

            gun.SetAnimationFPS(gun.shootAnimation, 12);

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

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.Automatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 1f;
            gun.DefaultModule.cooldownTime           = 0.15f;
            gun.DefaultModule.numberOfShotsInClip    = 15;
            gun.barrelOffset.transform.localPosition = new Vector3(1.37f, 0.56f, 0f);
            gun.SetBaseMaxAmmo(340);
            gun.ammo = 340;

            //BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]);

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

            ApplyLockdownBulletBehaviour applylockdown = projectile.gameObject.AddComponent <ApplyLockdownBulletBehaviour>();

            applylockdown.useSpecialBulletTint = false;
            applylockdown.duration             = 6f;
            applylockdown.enemyTintColour      = ExtendedColours.paleYellow;
            applylockdown.TintEnemy            = true;
            applylockdown.TintCorpse           = true;
            applylockdown.corpseTintColour     = ExtendedColours.paleYellow;

            ExtremelySimpleStatusEffectBulletBehaviour burning = projectile.gameObject.AddComponent <ExtremelySimpleStatusEffectBulletBehaviour>();

            burning.onHitProcChance   = 0.14f;
            burning.onFiredProcChance = 1f;
            burning.usesFireEffect    = false;
            burning.usesPoisonEffect  = true;
            burning.poisonEffect      = StaticStatusEffects.irradiatedLeadEffect;
            projectile.SetProjectileSpriteRight("gluegunner_projectile", 19, 8, false, tk2dBaseSprite.Anchor.MiddleCenter, 18, 7);

            gun.DefaultModule.projectiles[0] = projectile;

            gun.quality = PickupObject.ItemQuality.EXCLUDED;
            ETGMod.Databases.Items.Add(gun, null, "ANY");
            GlueGunnerID = gun.PickupObjectId;
        }
Exemple #4
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");
        }
Exemple #5
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Hot Glue Gun", "hotgluegun");

            Game.Items.Rename("outdated_gun_mods:hot_glue_gun", "nn:hot_glue_gun");
            gun.gameObject.AddComponent <HotGlueGun>();
            gun.SetShortDescription("Ow!.. Heat was Hot!");
            gun.SetLongDescription("Glues your foes in place, and has a chance to set them ablaze." + "\n\nPioneered by amateur guncrafters, and generally considered one of the most painful methods of adhesive application.");

            gun.SetupSprite(null, "hotgluegun_idle_001", 8);
            gun.gunSwitchGroup = (PickupObjectDatabase.GetById(199) as Gun).gunSwitchGroup;

            gun.SetAnimationFPS(gun.shootAnimation, 12);

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

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.SemiAutomatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 0.7f;
            gun.DefaultModule.cooldownTime           = 0.4f;
            gun.DefaultModule.numberOfShotsInClip    = 5;
            gun.barrelOffset.transform.localPosition = new Vector3(0.75f, 0.31f, 0f);
            gun.SetBaseMaxAmmo(150);
            gun.ammo     = 150;
            gun.gunClass = GunClass.FIRE;
            //BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]);

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            projectile.baseData.damage *= 1.6f;
            projectile.baseData.speed  *= 0.5f;
            projectile.baseData.range  *= 0.5f;

            ApplyLockdownBulletBehaviour applylockdown = projectile.gameObject.AddComponent <ApplyLockdownBulletBehaviour>();

            applylockdown.useSpecialBulletTint = false;
            applylockdown.duration             = 5f;
            applylockdown.enemyTintColour      = ExtendedColours.paleYellow;
            applylockdown.TintEnemy            = true;
            applylockdown.TintCorpse           = true;
            applylockdown.corpseTintColour     = ExtendedColours.paleYellow;

            ExtremelySimpleStatusEffectBulletBehaviour burning = projectile.gameObject.AddComponent <ExtremelySimpleStatusEffectBulletBehaviour>();

            burning.onHitProcChance   = 0.07f;
            burning.onFiredProcChance = 1f;
            burning.usesFireEffect    = true;
            burning.fireEffect        = StaticStatusEffects.hotLeadEffect;

            projectile.AnimateProjectile(new List <string> {
                "gluegunproj_1",
                "gluegunproj_2",
                "gluegunproj_1",
                "gluegunproj_3",
            }, 8, true, new List <IntVector2> {
                new IntVector2(5, 5), //1
                new IntVector2(4, 6), //2
                new IntVector2(5, 5), //3
                new IntVector2(6, 4), //4
            }, AnimateBullet.ConstructListOfSameValues(false, 4), AnimateBullet.ConstructListOfSameValues(tk2dBaseSprite.Anchor.MiddleCenter, 4), AnimateBullet.ConstructListOfSameValues(true, 4), AnimateBullet.ConstructListOfSameValues(false, 4),
                                         AnimateBullet.ConstructListOfSameValues <Vector3?>(null, 4), AnimateBullet.ConstructListOfSameValues <IntVector2?>(null, 4), AnimateBullet.ConstructListOfSameValues <IntVector2?>(null, 4), AnimateBullet.ConstructListOfSameValues <Projectile>(null, 4));
            gun.DefaultModule.projectiles[0] = projectile;
            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("HotGlueGun Bullets", "NevernamedsItems/Resources/CustomGunAmmoTypes/hotgluegun_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/hotgluegun_clipempty");
            gun.quality = PickupObject.ItemQuality.B;
            ETGMod.Databases.Items.Add(gun, null, "ANY");
            HotGlueGunID = gun.PickupObjectId;
        }