public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Mantid Augment", "mantidaugment");

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

            behav.preventNormalFireAudio = true;

            gun.SetShortDescription("Flashy and Lethal");
            gun.SetLongDescription("A cybernetic augment concealed in the forearm, this cruel blade extends to slash at your enemies with inhuman speed.");

            gun.SetupSprite(null, "mantidaugment_idle_001", 8);
            gun.AddPassiveStatModifier(PlayerStats.StatType.Curse, 1f, StatModifier.ModifyMethod.ADDITIVE);
            gun.AddCurrentGunStatModifier(PlayerStats.StatType.MovementSpeed, 1f, StatModifier.ModifyMethod.ADDITIVE);
            gun.SetAnimationFPS(gun.shootAnimation, 20);
            gun.SetAnimationFPS(gun.reloadAnimation, 12);

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

            //GUN STATS
            gun.gunHandedness               = GunHandedness.HiddenOneHanded;
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.Automatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.DefaultModule.ammoType      = GameUIAmmoType.AmmoType.BEAM;
            gun.reloadTime = 1f;
            gun.muzzleFlashEffects.type              = VFXPoolType.None;
            gun.DefaultModule.cooldownTime           = 0.01f;
            gun.DefaultModule.numberOfShotsInClip    = 100;
            gun.barrelOffset.transform.localPosition = new Vector3(1.56f, 0.56f, 0f);
            gun.SetBaseMaxAmmo(2077);
            gun.ammo     = 2077;
            gun.gunClass = GunClass.FULLAUTO;
            //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        *= 2f;
            projectile.baseData.force         *= 0.5f;
            projectile.sprite.renderer.enabled = false;
            NoCollideBehaviour nocollide = projectile.gameObject.AddComponent <NoCollideBehaviour>();

            nocollide.worksOnEnemies     = true;
            nocollide.worksOnProjectiles = true;
            projectile.specRigidbody.CollideWithTileMap = false;
            ProjectileSlashingBehaviour slashing = projectile.gameObject.AddComponent <ProjectileSlashingBehaviour>();

            slashing.DestroyBaseAfterFirstSlash          = true;
            slashing.SlashDamageUsesBaseProjectileDamage = true;
            slashing.slashParameters        = new SlashData();
            slashing.slashParameters.hitVFX = (PickupObjectDatabase.GetById(369) as Gun).DefaultModule.chargeProjectiles[0].Projectile.hitEffects.tileMapVertical;

            gun.DefaultModule.projectiles[0] = projectile;

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = "red_beam";

            gun.quality = PickupObject.ItemQuality.A;
            ETGMod.Databases.Items.Add(gun, null, "ANY");
            MantidAugmentID = gun.PickupObjectId;
        }
Exemple #2
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Butchers Knife", "butchersknife");

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

            behav.preventNormalReloadAudio = true;
            behav.preventNormalFireAudio   = true;
            behav.overrideNormalFireAudio  = "Play_WPN_blasphemy_shot_01";
            gun.gunSwitchGroup             = (PickupObjectDatabase.GetById(417) as Gun).gunSwitchGroup;
            gun.SetShortDescription("Word of Kaliber");
            gun.SetLongDescription("Cuts enemies to bits." + "\n\nForged and sharpened by a Gun Cultist who believed she heard the voice of Kaliber speaking to her... asking her for a sacrifice... her son.");
            gun.SetupSprite(null, "butchersknife_idle_001", 8);
            gun.SetAnimationFPS(gun.shootAnimation, 16);
            gun.SetAnimationFPS(gun.chargeAnimation, 8);
            gun.SetAnimationFPS(gun.reloadAnimation, 1);
            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(56) as Gun, true, false);
            gun.AddPassiveStatModifier(PlayerStats.StatType.Curse, 2f, StatModifier.ModifyMethod.ADDITIVE);
            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.Charged;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.DefaultModule.cooldownTime  = 1f;
            gun.gunClass = GunClass.CHARGE;
            gun.DefaultModule.angleVariance       = 1f;
            gun.DefaultModule.numberOfShotsInClip = 1;
            Projectile projectile = DataCloners.CopyFields <SuperPierceProjectile>(Instantiate(gun.DefaultModule.projectiles[0]));

            gun.DefaultModule.projectiles[0] = projectile;
            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            projectile.baseData.damage           *= 0.2f;
            projectile.baseData.speed            *= 0.7f;
            projectile.pierceMinorBreakables      = true;
            projectile.AdditionalScaleMultiplier *= 1f;
            projectile.baseData.range            *= 1000f;
            projectile.SetProjectileSpriteRight("butchersknife_projectile", 29, 7, false, tk2dBaseSprite.Anchor.MiddleCenter, 35, 14);
            projectile.specRigidbody.CollideWithTileMap = false;

            NoCollideBehaviour nocollide = projectile.gameObject.GetOrAddComponent <NoCollideBehaviour>();

            nocollide.worksOnEnemies     = false;
            nocollide.worksOnProjectiles = true;

            PierceProjModifier pierce = projectile.gameObject.GetOrAddComponent <PierceProjModifier>();

            pierce.penetration = 1000;

            TickDamageBehaviour tickdmg = projectile.gameObject.GetOrAddComponent <TickDamageBehaviour>();

            tickdmg.damageSource  = "Butchers Knife";
            tickdmg.starterDamage = 3f;

            ProjectileModule.ChargeProjectile chargeProj = new ProjectileModule.ChargeProjectile
            {
                Projectile = projectile,
                ChargeTime = 0f,
            };
            gun.DefaultModule.chargeProjectiles = new List <ProjectileModule.ChargeProjectile> {
                chargeProj
            };

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("ButchersKnife Clip", "NevernamedsItems/Resources/CustomGunAmmoTypes/butchersknife_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/butchersknife_clipempty");

            gun.reloadTime = 5f;
            gun.SetBaseMaxAmmo(35);
            gun.quality = PickupObject.ItemQuality.S;

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

            ETGMod.Databases.Items.Add(gun, null, "ANY");
            gun.barrelOffset.transform.localPosition = new Vector3(0.87f, 0.25f, 0f);
            ButchersKnifeID = gun.PickupObjectId;
        }
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Dimensionaliser", "dimensionaliser");

            Game.Items.Rename("outdated_gun_mods:dimensionaliser", "nn:dimensionaliser");
            gun.gameObject.AddComponent <Dimensionaliser>();
            gun.SetShortDescription("The Multiverse!");
            gun.SetLongDescription("Opens portals to random segments of the multiverse, letting kaliber-knows-what through." + "\n\n");

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

            gun.SetAnimationFPS(gun.shootAnimation, 14);

            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.DefaultModule.cooldownTime           = 2f;
            gun.DefaultModule.angleVariance          = 7;
            gun.muzzleFlashEffects                   = (PickupObjectDatabase.GetById(89) as Gun).muzzleFlashEffects;
            gun.DefaultModule.numberOfShotsInClip    = 2;
            gun.barrelOffset.transform.localPosition = new Vector3(0.81f, 0.43f, 0f);
            gun.SetBaseMaxAmmo(100);
            gun.ammo     = 100;
            gun.gunClass = GunClass.SILLY;
            Projectile portalSubProj = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]);

            portalSubProj.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(portalSubProj.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(portalSubProj);
            portalSubProj.baseData.damage = 5f;
            portalSubProj.baseData.speed *= 1f;
            portalSubProj.hitEffects.overrideMidairDeathVFX = EasyVFXDatabase.GreenLaserCircleVFX;
            portalSubProj.hitEffects.alwaysUseMidair        = true;
            portalSubProj.SetProjectileSpriteRight("dimensionaliser_projectile", 12, 7, true, tk2dBaseSprite.Anchor.MiddleCenter, 10, 5);

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

            portal.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(portal.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(portal);
            portal.baseData.damage = 0f;
            portal.baseData.speed  = 0f;
            portal.specRigidbody.CollideWithTileMap = false;
            portal.pierceMinorBreakables            = true;
            DimensionaliserPortal portalComp = portal.gameObject.GetOrAddComponent <DimensionaliserPortal>();

            portalComp.subProj = portalSubProj;
            NoCollideBehaviour noCollide = portal.gameObject.GetOrAddComponent <NoCollideBehaviour>();

            noCollide.worksOnEnemies                 = true;
            noCollide.worksOnProjectiles             = true;
            portal.hitEffects.overrideMidairDeathVFX = EasyVFXDatabase.GreenLaserCircleVFX;
            portal.hitEffects.alwaysUseMidair        = true;
            portal.AnimateProjectile(new List <string> {
                "dimensionaliser_portal_001",
                "dimensionaliser_portal_002",
                "dimensionaliser_portal_003",
                "dimensionaliser_portal_004",
                "dimensionaliser_portal_005",
                "dimensionaliser_portal_006",
                "dimensionaliser_portal_007",
                "dimensionaliser_portal_008",
                "dimensionaliser_portal_009",
                "dimensionaliser_portal_010", //TEN
                "dimensionaliser_portal_011",
                "dimensionaliser_portal_012",
                "dimensionaliser_portal_013",
                "dimensionaliser_portal_014",
                "dimensionaliser_portal_015",
                "dimensionaliser_portal_016",
                "dimensionaliser_portal_017",
                "dimensionaliser_portal_018",
                "dimensionaliser_portal_019",
                "dimensionaliser_portal_020", //TEN
                "dimensionaliser_portal_021",
                "dimensionaliser_portal_022",
                "dimensionaliser_portal_023",
                "dimensionaliser_portal_024",
                "dimensionaliser_portal_025",
                "dimensionaliser_portal_026",
                "dimensionaliser_portal_027",
                "dimensionaliser_portal_028",
                "dimensionaliser_portal_029",
                "dimensionaliser_portal_030", //TEN
                "dimensionaliser_portal_031",
                "dimensionaliser_portal_032",
                "dimensionaliser_portal_033",
                "dimensionaliser_portal_034",
                "dimensionaliser_portal_035",
                "dimensionaliser_portal_036",
                "dimensionaliser_portal_037",
                "dimensionaliser_portal_038",
                "dimensionaliser_portal_039",
                "dimensionaliser_portal_040", //TEN
                "dimensionaliser_portal_041",
                "dimensionaliser_portal_042",
                "dimensionaliser_portal_043",
                "dimensionaliser_portal_044",
                "dimensionaliser_portal_045",
                "dimensionaliser_portal_046",
                "dimensionaliser_portal_047",
                "dimensionaliser_portal_048",
                "dimensionaliser_portal_049",
                "dimensionaliser_portal_050", //TEN
                "dimensionaliser_portal_051",
                "dimensionaliser_portal_052",
                "dimensionaliser_portal_053",
                "dimensionaliser_portal_054",
                "dimensionaliser_portal_055",
                "dimensionaliser_portal_056",
                "dimensionaliser_portal_057",
                "dimensionaliser_portal_058",
                "dimensionaliser_portal_059",
                "dimensionaliser_portal_060", //TEN
                "dimensionaliser_portal_061",
                "dimensionaliser_portal_062",
                "dimensionaliser_portal_063",
                "dimensionaliser_portal_064",
                "dimensionaliser_portal_065",
                "dimensionaliser_portal_066",
                "dimensionaliser_portal_067",
                "dimensionaliser_portal_068",
                "dimensionaliser_portal_069",
                "dimensionaliser_portal_070", //TEN
                "dimensionaliser_portal_071",
                "dimensionaliser_portal_072",
                "dimensionaliser_portal_073",
                "dimensionaliser_portal_074",
                "dimensionaliser_portal_075",
                "dimensionaliser_portal_076",
                "dimensionaliser_portal_077",
                "dimensionaliser_portal_078",
                "dimensionaliser_portal_079",
                "dimensionaliser_portal_080", //TEN
                "dimensionaliser_portal_081",
                "dimensionaliser_portal_082",
                "dimensionaliser_portal_083",
                "dimensionaliser_portal_084",
                "dimensionaliser_portal_085",
                "dimensionaliser_portal_086",
                "dimensionaliser_portal_087",
                "dimensionaliser_portal_088",
                "dimensionaliser_portal_089",
                "dimensionaliser_portal_090",                                                                           //TEN
            },
                                     40,                                                                                //FPS
                                     true,                                                                              //Loops
                                     AnimateBullet.ConstructListOfSameValues(new IntVector2(55, 55), 90),               //Sprite Sizes
                                     AnimateBullet.ConstructListOfSameValues(true, 90),                                 //Lightened
                                     AnimateBullet.ConstructListOfSameValues(tk2dBaseSprite.Anchor.MiddleCenter, 90),   //Anchors
                                     AnimateBullet.ConstructListOfSameValues(true, 90),                                 //Anchors Change Colliders
                                     AnimateBullet.ConstructListOfSameValues(false, 90),                                //Fixes Scales
                                     AnimateBullet.ConstructListOfSameValues <Vector3?>(null, 90),                      //Manual Offsets
                                     AnimateBullet.ConstructListOfSameValues <IntVector2?>(new IntVector2(30, 30), 90), //Collider Pixel Sizes
                                     AnimateBullet.ConstructListOfSameValues <IntVector2?>(null, 90),                   //Override Collider Offsets
                                     AnimateBullet.ConstructListOfSameValues <Projectile>(null, 90));


            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 *= 3f;
            projectile.hitEffects.overrideMidairDeathVFX = EasyVFXDatabase.GreenLaserCircleVFX;
            projectile.hitEffects.alwaysUseMidair        = true;
            DimensionaliserProjectile dimensionaliserProj = projectile.gameObject.GetOrAddComponent <DimensionaliserProjectile>();

            dimensionaliserProj.portalPrefab = portal.gameObject;
            projectile.SetProjectileSpriteRight("dimensionaliser_projectile", 12, 7, true, tk2dBaseSprite.Anchor.MiddleCenter, 10, 5);
            gun.DefaultModule.projectiles[0] = projectile;

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("Dimensionaliser Bullets", "NevernamedsItems/Resources/CustomGunAmmoTypes/dimensionaliser_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/dimensionaliser_clipempty");

            gun.quality = PickupObject.ItemQuality.S;
            ETGMod.Databases.Items.Add(gun, null, "ANY");
            DimensionaliserID = gun.PickupObjectId;
        }
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Gunjurer's Staff", "gunjurerswand");

            Game.Items.Rename("outdated_gun_mods:gunjurer's_staff", "nn:gunjurers_staff");
            var behav = gun.gameObject.AddComponent <GunjurersStaff>();

            behav.preventNormalFireAudio    = true;
            behav.preventNormalReloadAudio  = true;
            behav.overrideNormalReloadAudio = "Play_ENM_wizardred_chant_01";
            gun.SetShortDescription("Do you believe in magic?");
            gun.SetLongDescription("The lost wand of an Apprentice Gunjurer, cruelly slain by a Gungeoneer while out of his mentor's sight for but a moment...");

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

            gun.SetAnimationFPS(gun.shootAnimation, 10);
            gun.SetAnimationFPS(gun.chargeAnimation, 4);

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

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

            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).frames[0].eventAudio   = "Play_ENM_wizardred_shoot_01";
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).frames[0].triggerEvent = true;

            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.chargeAnimation).frames[0].eventAudio   = "Play_ENM_wizard_charge_01";
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.chargeAnimation).frames[0].triggerEvent = true;

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.Charged;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Ordered;
            gun.muzzleFlashEffects.type     = VFXPoolType.None;
            gun.reloadTime = 1.5f;
            gun.DefaultModule.cooldownTime           = 0.5f;
            gun.DefaultModule.numberOfShotsInClip    = 3;
            gun.barrelOffset.transform.localPosition = new Vector3(1.31f, 0.5f, 0f);
            gun.SetBaseMaxAmmo(45);
            gun.ammo     = 45;
            gun.gunClass = GunClass.CHARGE;
            //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 = 0f;
            projectile.baseData.force  = 0f;
            projectile.baseData.speed  = 0.001f;
            NoCollideBehaviour nocollide = projectile.gameObject.AddComponent <NoCollideBehaviour>();

            nocollide.worksOnEnemies           = true;
            nocollide.worksOnProjectiles       = true;
            projectile.sprite.renderer.enabled = false;
            BulletLifeTimer timer = projectile.gameObject.AddComponent <BulletLifeTimer>();

            timer.eraseInsteadOfDie = true;
            timer.secondsTillDeath  = 1.5f;
            projectile.specRigidbody.CollideWithTileMap = false;

            SpawnGunjurerBulletScriptOnSpawn script = projectile.gameObject.AddComponent <SpawnGunjurerBulletScriptOnSpawn>();

            ProjectileModule.ChargeProjectile chargeProj = new ProjectileModule.ChargeProjectile
            {
                Projectile = projectile,
                ChargeTime = 0.8f,
            };
            gun.DefaultModule.chargeProjectiles = new List <ProjectileModule.ChargeProjectile> {
                chargeProj
            };

            gun.quality = PickupObject.ItemQuality.A; //B
            ETGMod.Databases.Items.Add(gun, null, "ANY");
            GunjurersStaffID = gun.PickupObjectId;
        }
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Ferrobolt", "ferrobolt");

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

            behav.preventNormalFireAudio = true;
            gun.SetShortDescription("Law of Attraction");
            gun.SetLongDescription("Fires alternating monopolar electromagnetic blasts." + "\n\nUpon the discovery of the first monopole, the tech was immediately weaponised.");

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

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

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.doesScreenShake             = true;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.Charged;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Ordered;
            gun.reloadTime = 0.5f;
            gun.DefaultModule.cooldownTime  = 0.2f;
            gun.DefaultModule.angleVariance = 0;
            gun.muzzleFlashEffects          = (PickupObjectDatabase.GetById(23) as Gun).muzzleFlashEffects;

            gun.DefaultModule.numberOfShotsInClip    = 8;
            gun.barrelOffset.transform.localPosition = new Vector3(35f / 16f, 7f / 16f, 0f);
            gun.SetBaseMaxAmmo(100);
            gun.ammo     = 100;
            gun.gunClass = GunClass.CHARGE;
            gun.SetAnimationFPS(gun.chargeAnimation, 8);
            gun.SetAnimationFPS(gun.reloadAnimation, 10);
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.chargeAnimation).wrapMode  = tk2dSpriteAnimationClip.WrapMode.LoopSection;
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.chargeAnimation).loopStart = 2;

            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).frames[0].eventAudio   = "Play_wpn_chargelaser_shot_01";
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).frames[0].triggerEvent = true;

            //BULLET STATS
            Projectile projectile = gun.DefaultModule.projectiles[0].gameObject.InstantiateAndFakeprefab().GetComponent <Projectile>();

            projectile.baseData.damage = 0f;
            projectile.baseData.force  = 0f;

            NoCollideBehaviour nocollide = projectile.gameObject.AddComponent <NoCollideBehaviour>();

            nocollide.worksOnEnemies     = true;
            nocollide.worksOnProjectiles = true;

            BounceProjModifier bounce = projectile.gameObject.AddComponent <BounceProjModifier>();

            bounce.numberOfBounces = 100;

            FerroboltOrbController orb = projectile.gameObject.AddComponent <FerroboltOrbController>();

            SlowDownOverTimeModifier slowDown = projectile.gameObject.AddComponent <SlowDownOverTimeModifier>();

            slowDown.timeToSlowOver                = 0.5f;
            slowDown.killAfterCompleteStop         = true;
            slowDown.timeTillKillAfterCompleteStop = 12f;

            projectile.hitEffects.overrideMidairDeathVFX = (PickupObjectDatabase.GetById(57) as Gun).DefaultModule.projectiles[0].hitEffects.overrideMidairDeathVFX;
            projectile.hitEffects.alwaysUseMidair        = true;
            projectile.AnimateProjectile(new List <string> {
                "ferrobolt_orb_001",
                "ferrobolt_orb_002",
                "ferrobolt_orb_003",
                "ferrobolt_orb_004",
            }, 10, true, new List <IntVector2> {
                new IntVector2(14, 14),  //1
                new IntVector2(14, 14),  //1
                new IntVector2(14, 14),  //1
                new IntVector2(14, 14),  //1
            },
                                         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?>(new IntVector2(8, 8), 4),
                                         AnimateBullet.ConstructListOfSameValues <IntVector2?>(null, 4),
                                         AnimateBullet.ConstructListOfSameValues <Projectile>(null, 4));

            projectile.SetProjectileSpriteRight("ferrobolt_orb_001", 14, 14, true, tk2dBaseSprite.Anchor.MiddleCenter, 8, 8);

            ProjectileModule.ChargeProjectile chargeProj = new ProjectileModule.ChargeProjectile
            {
                Projectile = projectile,
                ChargeTime = 0.5f,
            };
            gun.DefaultModule.chargeProjectiles = new List <ProjectileModule.ChargeProjectile> {
                chargeProj
            };

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("Ferrobolt Bullets", "NevernamedsItems/Resources/CustomGunAmmoTypes/ferrobolt_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/ferrobolt_clipempty");

            gun.quality = PickupObject.ItemQuality.C;
            ETGMod.Databases.Items.Add(gun, null, "ANY");
            ID = gun.PickupObjectId;


            Projectile bolt = (PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0].gameObject.InstantiateAndFakeprefab().GetComponent <Projectile>();

            bolt.baseData.damage = 30f;
            bolt.baseData.speed *= 2f;
            bolt.baseData.force *= 2f;
            PierceProjModifier piercing = bolt.gameObject.AddComponent <PierceProjModifier>();

            piercing.penetration       = 100;
            bolt.pierceMinorBreakables = true;
            bolt.SetProjectileSpriteRight("ferrobolt_bolt_001", 19, 8, true, tk2dBaseSprite.Anchor.MiddleCenter, 16, 6);
            bolt.hitEffects.overrideMidairDeathVFX = (PickupObjectDatabase.GetById(57) as Gun).DefaultModule.chargeProjectiles[0].Projectile.hitEffects.overrideMidairDeathVFX;
            bolt.hitEffects.alwaysUseMidair        = true;
            bolt.gameObject.AddComponent <FerroboltBoltController>();
            launchProj = bolt;
        }
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Bola Gun", "bolagun");

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

            gun.SetShortDescription("Deathly Strands");
            gun.SetLongDescription("Fires swinging bolas connected by frazzling energy beams." + "\n\nThe wide swing of the bolas renders the weapon ineffective in narrow corridors.");

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

            gun.SetAnimationFPS(gun.shootAnimation, 12);

            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(56) as Gun, true, false);
            gun.gunSwitchGroup = (PickupObjectDatabase.GetById(150) as Gun).gunSwitchGroup;
            gun.gunClass       = GunClass.RIFLE;
            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.SemiAutomatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 1.2f;
            gun.DefaultModule.cooldownTime = 0.3f;
            //gun.muzzleFlashEffects.type = VFXPoolType.None;
            gun.DefaultModule.numberOfShotsInClip    = 7;
            gun.barrelOffset.transform.localPosition = new Vector3(2.56f, 0.81f, 0f);
            gun.SetBaseMaxAmmo(210);
            gun.carryPixelOffset = new IntVector2(10, -3);
            //Bola Stats
            Projectile projectile2 = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]);

            projectile2.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile2.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile2);
            projectile2.baseData.speed  *= 1f;
            projectile2.baseData.range  *= 1f;
            projectile2.baseData.damage *= 2f;
            projectile2.SetProjectileSpriteRight("bolagun_projectile", 9, 9, true, tk2dBaseSprite.Anchor.MiddleCenter, 7, 7);

            //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       = 7f;
            projectile.baseData.speed       *= 0.5f;
            projectile.baseData.range       *= 10f;

            BolaControlla controlla = projectile.gameObject.AddComponent <BolaControlla>();

            controlla.bolaPrefab = projectile2.gameObject;
            projectile.sprite.renderer.enabled = false;
            NoCollideBehaviour noCollide = projectile.gameObject.AddComponent <NoCollideBehaviour>();

            noCollide.worksOnEnemies     = true;
            noCollide.worksOnProjectiles = true;

            projectile.transform.parent = gun.barrelOffset;

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("Bola Gun Bullets", "NevernamedsItems/Resources/CustomGunAmmoTypes/bolagun_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/bolagun_clipempty");

            gun.quality = PickupObject.ItemQuality.A;
            ETGMod.Databases.Items.Add(gun, null, "ANY");

            BolaGunID = gun.PickupObjectId;

            LinkVFX = FakePrefab.Clone(Game.Items["shock_rounds"].GetComponent <ComplexProjectileModifier>().ChainLightningVFX);
        }
Exemple #7
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Snaker", "snaker");

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

            behav.overrideNormalReloadAudio = "Play_OBJ_mine_beep_01";
            behav.overrideNormalFireAudio   = "Play_OBJ_mine_beep_01";
            behav.preventNormalFireAudio    = true;
            behav.preventNormalReloadAudio  = true;
            gun.SetShortDescription("Tail As Old As Time");
            gun.SetLongDescription("Firing creates red 'apples' around the room. Shooting through these 'apples' buffs shots." + "\n\nA very hungry snake... or maybe it's a worm? It's hard to tell with so few pixels.");

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

            gun.SetAnimationFPS(gun.shootAnimation, 12);
            gun.SetAnimationFPS(gun.idleAnimation, 8);
            gun.SetAnimationFPS(gun.reloadAnimation, 24);
            gun.gunSwitchGroup = (PickupObjectDatabase.GetById(328) as Gun).gunSwitchGroup;

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

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.Automatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime         = 1.1f;
            gun.muzzleFlashEffects = (PickupObjectDatabase.GetById(334) as Gun).muzzleFlashEffects;

            gun.DefaultModule.cooldownTime        = 0.45f;
            gun.DefaultModule.numberOfShotsInClip = 10;

            gun.barrelOffset.transform.localPosition = new Vector3(2.06f, 0.68f, 0f);
            gun.SetBaseMaxAmmo(200);
            gun.ammo     = 200;
            gun.gunClass = GunClass.SILLY;
            //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.gameObject.AddComponent <SnakerBulletController>();
            projectile.baseData.range      *= 2f;
            projectile.BossDamageMultiplier = 5;
            projectile.baseData.damage     *= 2;
            projectile.SetProjectileSpriteRight("snaker_projectile", 6, 6, true, tk2dBaseSprite.Anchor.MiddleCenter, 4, 4);


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

            apple.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(apple.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(apple);
            apple.baseData.damage = 0;

            apple.baseData.speed = 0;
            NoCollideBehaviour nocollide = apple.gameObject.GetOrAddComponent <NoCollideBehaviour>();

            apple.gameObject.AddComponent <SnakerAppleController>();
            nocollide.worksOnEnemies               = true;
            nocollide.worksOnProjectiles           = false;
            apple.specRigidbody.CollideWithTileMap = false;
            apple.SetProjectileSpriteRight("snakerapple_projectile", 12, 12, true, tk2dBaseSprite.Anchor.MiddleCenter, 12, 12);
            AppleBullet = apple;

            gun.DefaultModule.projectiles[0] = projectile;

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