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; }
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); }
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"); }