public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Sick Worm", "sickworm"); Game.Items.Rename("outdated_gun_mods:sick_worm", "nn:sick_worm"); var behav = gun.gameObject.AddComponent <SickWorm>(); behav.preventNormalFireAudio = true; gun.SetShortDescription("Projectile Vomit"); gun.SetLongDescription("A rare example of Gungeon Gigantism, this worm has developed a remarkable evolutionary defence mechanism; regurgitating high-speed digestive juices at potential predators."); gun.SetupSprite(null, "sickworm_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 16); gun.isAudioLoop = true; gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); //GUN STATS gun.doesScreenShake = false; gun.DefaultModule.ammoCost = 10; gun.DefaultModule.angleVariance = 0; gun.DefaultModule.shootStyle = ProjectileModule.ShootStyle.Beam; gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; gun.reloadTime = 1f; gun.muzzleFlashEffects.type = VFXPoolType.None; gun.DefaultModule.cooldownTime = 0.001f; gun.DefaultModule.numberOfShotsInClip = 2000; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.BEAM; gun.barrelOffset.transform.localPosition = new Vector3(1.06f, 0.62f, 0f); gun.SetBaseMaxAmmo(2000); gun.ammo = 2000; gun.gunClass = GunClass.SILLY; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).wrapMode = tk2dSpriteAnimationClip.WrapMode.LoopSection; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).loopStart = 1; List <string> BeamAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/sickworm_mid_001", }; List <string> BeamEndPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/sickworm_end_001", }; //BULLET STATS Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController beamComp = projectile.GenerateBeamPrefab( "NevernamedsItems/Resources/BeamSprites/sickworm_mid_001", new Vector2(8, 8), new Vector2(0, 1), BeamAnimPaths, 9, //Impact null, -1, null, null, //End BeamEndPaths, 9, new Vector2(8, 8), new Vector2(0, 1), //Beginning null, -1, null, null ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 30f; projectile.baseData.force *= 1f; projectile.baseData.range = 7f; projectile.baseData.speed *= 0.7f; beamComp.penetration = 2; beamComp.boneType = BasicBeamController.BeamBoneType.Projectile; beamComp.interpolateStretchedBones = false; beamComp.endAudioEvent = "Stop_WPN_All"; beamComp.startAudioEvent = "Play_WPN_SeriousCannon_Scream_01"; Projectile spewProj = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); spewProj.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(spewProj.gameObject); UnityEngine.Object.DontDestroyOnLoad(spewProj); spewProj.SetProjectileSpriteRight("sickworm_projectile", 5, 5, false, tk2dBaseSprite.Anchor.MiddleCenter, 3, 3); spewProj.baseData.damage = 2; RandomProjectileStatsComponent randomStats = spewProj.gameObject.AddComponent <RandomProjectileStatsComponent>(); randomStats.randomScale = true; randomStats.randomSpeed = true; BeamProjSpewModifier spew = projectile.gameObject.AddComponent <BeamProjSpewModifier>(); spew.bulletToSpew = spewProj; spew.accuracyVariance = 5; gun.DefaultModule.projectiles[0] = projectile; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("SickWorm Clip", "NevernamedsItems/Resources/CustomGunAmmoTypes/sickworm_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/sickworm_clipempty"); gun.quality = PickupObject.ItemQuality.A; //D ETGMod.Databases.Items.Add(gun, null, "ANY"); }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Ember Cannon", "embercannon"); Game.Items.Rename("outdated_gun_mods:ember_cannon", "nn:ember_cannon"); var behav = gun.gameObject.AddComponent <EmberCannon>(); behav.preventNormalFireAudio = true; behav.preventNormalReloadAudio = true; behav.overrideNormalReloadAudio = "Play_ENM_flame_veil_01"; gun.SetShortDescription("Burns Eternal"); gun.SetLongDescription("This mighty furnace was created to warm a group of hopeless souls trapped in the freezing hollow." + "\n\nThough it no longer burns with it's ancient ferocity, it has not yet run cold in a thousand years."); gun.SetupSprite(null, "embercannon_idle_001", 8); gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).frames[0].eventAudio = "Play_WPN_seriouscannon_shot_01"; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).frames[0].triggerEvent = true; gun.muzzleFlashEffects = (PickupObjectDatabase.GetById(37) as Gun).muzzleFlashEffects; gun.barrelOffset.transform.localPosition = new Vector3(1.93f, 0.87f, 0f); gun.SetAnimationFPS(gun.shootAnimation, 10); gun.SetAnimationFPS(gun.chargeAnimation, 8); gun.gunClass = GunClass.CHARGE; for (int i = 0; i < 10; i++) { gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(83) as Gun, true, false); } //GUN STATS foreach (ProjectileModule mod in gun.Volley.projectiles) { mod.ammoCost = 1; mod.shootStyle = ProjectileModule.ShootStyle.Charged; mod.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; mod.cooldownTime = 0.70f; mod.angleVariance = 20f; mod.numberOfShotsInClip = 3; Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(mod.projectiles[0]); mod.projectiles[0] = projectile; projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); RandomProjectileStatsComponent stats = projectile.gameObject.AddComponent <RandomProjectileStatsComponent>(); stats.randomDamage = true; stats.randomSpeed = true; stats.randomRange = true; stats.randomKnockback = true; stats.scaleBasedOnDamage = true; if (mod != gun.DefaultModule) { mod.ammoCost = 0; } ProjectileModule.ChargeProjectile chargeProj = new ProjectileModule.ChargeProjectile { Projectile = projectile, ChargeTime = 0.5f, }; mod.chargeProjectiles = new List <ProjectileModule.ChargeProjectile> { chargeProj }; } gun.reloadTime = 1f; gun.SetBaseMaxAmmo(100); gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.chargeAnimation).wrapMode = tk2dSpriteAnimationClip.WrapMode.LoopSection; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.chargeAnimation).loopStart = 2; gun.quality = PickupObject.ItemQuality.B; ETGMod.Databases.Items.Add(gun, null, "ANY"); EmberCannonID = gun.PickupObjectId; }