public void PostProcessBeamHook(Action <ComplexProjectileModifier, BeamController> orig, ComplexProjectileModifier self, BeamController beam) { orig(self, beam); if (self.AddsExplosino && self.ExplosionData != null) { BeamExplosiveModifier explodingBeam = beam.gameObject.AddComponent <BeamExplosiveModifier>(); explodingBeam.explosionData = self.ExplosionData; explodingBeam.canHarmOwner = false; explodingBeam.chancePerTick = self.ActivationChance; explodingBeam.tickDelay = 0.25f; } if (self.AddsChanceToBlank) { BeamBlankModifier blankingbeam = beam.gameObject.AddComponent <BeamBlankModifier>(); } }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Boom Beam", "boombeam"); Game.Items.Rename("outdated_gun_mods:boom_beam", "nn:boom_beam"); var behav = gun.gameObject.AddComponent <BoomBeam>(); behav.preventNormalFireAudio = true; gun.SetShortDescription("Explosive Transmission"); gun.SetLongDescription("A high-tech military laser packed with so much energy that it causes violent explosions when impeded." + "\n\nThe laser went through five stages of R&D until it's beam was glowy enough."); gun.SetupSprite(null, "boombeam_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 20); gun.isAudioLoop = true; gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); //GUN STATS gun.doesScreenShake = false; gun.DefaultModule.ammoCost = 5; 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 = 600; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.BEAM; gun.barrelOffset.transform.localPosition = new Vector3(2.62f, 0.53f, 0f); gun.SetBaseMaxAmmo(600); gun.ammo = 600; gun.gunClass = GunClass.EXPLOSIVE; 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/largeredbeam_mid_001", "NevernamedsItems/Resources/BeamSprites/largeredbeam_mid_002", "NevernamedsItems/Resources/BeamSprites/largeredbeam_mid_003", "NevernamedsItems/Resources/BeamSprites/largeredbeam_mid_004", }; List <string> BeamStartPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/largeredbeam_start_001", "NevernamedsItems/Resources/BeamSprites/largeredbeam_start_002", "NevernamedsItems/Resources/BeamSprites/largeredbeam_start_003", "NevernamedsItems/Resources/BeamSprites/largeredbeam_start_004", }; List <string> BeamImpactPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/largeredbeam_impact_001", "NevernamedsItems/Resources/BeamSprites/largeredbeam_impact_002", "NevernamedsItems/Resources/BeamSprites/largeredbeam_impact_003", "NevernamedsItems/Resources/BeamSprites/largeredbeam_impact_004", }; //BULLET STATS Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController beamComp = projectile.GenerateBeamPrefab( "NevernamedsItems/Resources/BeamSprites/largeredbeam_mid_001", new Vector2(16, 5), new Vector2(0, 6), BeamAnimPaths, 13, //Impact BeamImpactPaths, 13, new Vector2(6, 6), new Vector2(8, 8), //End null, -1, null, null, //Beginning BeamStartPaths, 13, new Vector2(16, 5), new Vector2(0, 6), //Other Variables 100 ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 30f; projectile.baseData.force *= 1f; projectile.baseData.range *= 200; projectile.baseData.speed *= 6; BeamExplosiveModifier booms = projectile.gameObject.AddComponent <BeamExplosiveModifier>(); booms.canHarmOwner = false; booms.chancePerTick = 1; booms.explosionData = GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultExplosionData; booms.ignoreQueues = true; booms.tickDelay = 0.5f; beamComp.boneType = BasicBeamController.BeamBoneType.Projectile; beamComp.startAudioEvent = "Play_WPN_radiationlaser_shot_01"; beamComp.endAudioEvent = "Stop_WPN_All"; //beamComp.interpolateStretchedBones = false; gun.DefaultModule.projectiles[0] = projectile; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("BoomBeam Laser", "NevernamedsItems/Resources/CustomGunAmmoTypes/boombeam_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/boombeam_clipempty"); gun.quality = PickupObject.ItemQuality.S; //S ETGMod.Databases.Items.Add(gun, null, "ANY"); ID = gun.PickupObjectId; }