private void Update() { if (projectile.baseData.range > distanceTilSplit) { originalRange = projectile.baseData.range; projectile.baseData.range = distanceTilSplit; } if ((basicBeamController.ApproximateDistance >= distanceTilSplit) && subBeams.Count < amtToSplitTo) { CreateNewSubBeams(); } if ((basicBeamController.ApproximateDistance < distanceTilSplit) && subBeams.Count > 0) { ClearExtantSubBeams(); } float currentAngle = basicBeamController.GetFinalBoneDirection(); float startAngle = currentAngle + (splitAngles * 0.5f); if (subBeams.Count > 0) { for (int i = 0; i < subBeams.Count; i++) { BasicBeamController particularSubBeam = subBeams.ElementAt(i).Key; LinkedList <BasicBeamController.BeamBone> bones; bones = OMITBReflectionHelpers.ReflectGetField <LinkedList <BasicBeamController.BeamBone> >(typeof(BasicBeamController), "m_bones", basicBeamController); LinkedListNode <BasicBeamController.BeamBone> linkedListNode = bones.Last; Vector2 bonePosition = basicBeamController.GetBonePosition(linkedListNode.Value); float angleOffset = subBeams.ElementAt(i).Value; particularSubBeam.Direction = (startAngle - angleOffset).DegreeToVector2(); particularSubBeam.Origin = bonePosition; particularSubBeam.LateUpdatePosition(bonePosition); } } }
public void Start() { Shader glowshader = ShaderCache.Acquire("Brave/LitTk2dCustomFalloffTiltedCutoutEmissive"); foreach (Transform transform in base.transform) { if (TransformList.Contains(transform.name)) { tk2dSprite sproot = transform.GetComponent <tk2dSprite>(); if (sproot != null) { sproot.usesOverrideMaterial = true; sproot.renderer.material.shader = glowshader; sproot.renderer.material.EnableKeyword("BRIGHTNESS_CLAMP_ON"); sproot.renderer.material.SetFloat("_EmissivePower", EmissivePower); sproot.renderer.material.SetFloat("_EmissiveColorPower", EmissiveColorPower); } } } this.beamcont = base.GetComponent <BasicBeamController>(); BasicBeamController beam = this.beamcont; beam.sprite.usesOverrideMaterial = true; BasicBeamController component = beam.gameObject.GetComponent <BasicBeamController>(); bool flag = component != null; bool flag2 = flag; if (flag2) { component.sprite.renderer.material.shader = glowshader; component.sprite.renderer.material.EnableKeyword("BRIGHTNESS_CLAMP_ON"); component.sprite.renderer.material.SetFloat("_EmissivePower", EmissivePower); component.sprite.renderer.material.SetFloat("_EmissiveColorPower", EmissiveColorPower); } }
public static bool PosIsNearAnyBoneOnBeam(this BasicBeamController beam, Vector2 positionToCheck, float distance) { LinkedList <BasicBeamController.BeamBone> bones; bones = OMITBReflectionHelpers.ReflectGetField <LinkedList <BasicBeamController.BeamBone> >(typeof(BasicBeamController), "m_bones", beam); //if (beam.UsesBones) //{ foreach (BasicBeamController.BeamBone bone in bones) { Vector2 bonepos = beam.GetBonePosition(bone); if (Vector2.Distance(positionToCheck, bonepos) < distance) { return(true); } } /* } * else * { * List<Vector2> posCheck = new List<Vector2>(); * for (int i = 1; i <= 100; i++) * { * posCheck.Add(beam.Origin + beam.Direction.normalized * (bones.Last.Value.Position - bones.First.Value.Position).magnitude * (i * 0.01f)); * } * foreach (Vector2 pos in posCheck) * { * if (Vector2.Distance(pos, positionToCheck) < distance) return true; * } * }*/ return(false); }
public static void Init() { string itemName = "Infrared Guon Stone"; //The name of the item string resourceName = "NevernamedsItems/Resources/GuonStones/infraredguonstone_icon"; //Refers to an embedded png in the project. Make sure to embed your resources! GameObject obj = new GameObject(); var item = obj.AddComponent <InfraredGuonStone>(); ItemBuilder.AddSpriteToObject(itemName, resourceName, obj); string shortDesc = "Under the Radar"; string longDesc = "Expels photonic exhaust away from the user." + "\n\nStand well back."; ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn"); item.quality = PickupObject.ItemQuality.C; BuildPrefab(); item.OrbitalPrefab = orbitalPrefab; BuildSynergyPrefab(); item.HasAdvancedUpgradeSynergy = true; item.AdvancedUpgradeSynergy = "Infraredder Guon Stone"; item.AdvancedUpgradeOrbitalPrefab = InfraredGuonStone.upgradeOrbitalPrefab.gameObject; List <string> BeamAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/redbeam_seg_001", "NevernamedsItems/Resources/BeamSprites/redbeam_seg_002", "NevernamedsItems/Resources/BeamSprites/redbeam_seg_003", "NevernamedsItems/Resources/BeamSprites/redbeam_seg_004" }; List <string> ImpactAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/redbeam_impact_001", "NevernamedsItems/Resources/BeamSprites/redbeam_impact_002", "NevernamedsItems/Resources/BeamSprites/redbeam_impact_003", "NevernamedsItems/Resources/BeamSprites/redbeam_impact_004", }; Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController beamComp = projectile.GenerateBeamPrefab( "NevernamedsItems/Resources/BeamSprites/redbeam_seg_001", new Vector2(18, 2), new Vector2(0, 8), BeamAnimPaths, 8, ImpactAnimPaths, 13, new Vector2(4, 4), new Vector2(7, 7)); projectile.gameObject.SetActive(false); projectile.baseData.damage = 50; projectile.baseData.range = 100; projectile.baseData.speed = 25; FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); beamComp.boneType = BasicBeamController.BeamBoneType.Straight; beamComp.interpolateStretchedBones = false; beamComp.endAudioEvent = "Stop_WPN_All"; beamComp.startAudioEvent = "Play_WPN_radiationlaser_shot_01"; InfraredBeam = projectile; }
private void PostProcessBeam(BeamController beam) { if (beam is BasicBeamController) { BasicBeamController basicBeamController = (beam as BasicBeamController); if (basicBeamController.Gun == this.gun) { basicBeamController.ProjectileScale = .8f; } } }
public static Vector2 GetBonePosition(this BasicBeamController beam, BasicBeamController.BeamBone bone) { if (!beam.UsesBones) { return(beam.Origin + BraveMathCollege.DegreesToVector(beam.Direction.ToAngle(), bone.PosX)); } if (beam.ProjectileAndBeamMotionModule != null) { return(bone.Position + beam.ProjectileAndBeamMotionModule.GetBoneOffset(bone, beam, beam.projectile.Inverted)); } return(bone.Position); }
void Start() { selfProjectile = base.GetComponent <Projectile>(); selfBeam = base.GetComponent <BeamController>(); selfBasicBeam = base.GetComponent <BasicBeamController>(); if (selfProjectile && selfProjectile.ProjectilePlayerOwner()) { selfOwner = selfProjectile.ProjectilePlayerOwner(); } InvokeRepeating("CreateNewTentacle", 0.05f, 0.05f); }
public static int GetBoneCount(this BasicBeamController beam) { if (!beam.UsesBones) { return(1); } else { LinkedList <BasicBeamController.BeamBone> bones; bones = OMITBReflectionHelpers.ReflectGetField <LinkedList <BasicBeamController.BeamBone> >(typeof(BasicBeamController), "m_bones", beam); return(bones.Count()); } }
public static float GetFinalBoneDirection(this BasicBeamController beam) { if (!beam.UsesBones) { return(beam.Direction.ToAngle()); } else { LinkedList <BasicBeamController.BeamBone> bones; bones = OMITBReflectionHelpers.ReflectGetField <LinkedList <BasicBeamController.BeamBone> >(typeof(BasicBeamController), "m_bones", beam); LinkedListNode <BasicBeamController.BeamBone> linkedListNode = bones.Last; return(linkedListNode.Value.RotationAngle); } }
public static BasicBeamController.BeamBone GetIndexedBone(this BasicBeamController beam, int boneIndex) { LinkedList <BasicBeamController.BeamBone> bones; bones = OMITBReflectionHelpers.ReflectGetField <LinkedList <BasicBeamController.BeamBone> >(typeof(BasicBeamController), "m_bones", beam); if (bones == null) { return(null); } if (bones.ElementAt(boneIndex) == null) { Debug.LogError("Attempted to fetch a beam bone at an invalid index"); return(null); } return(bones.ElementAt(boneIndex)); }
public static void Init() { string itemName = "Table Tech-Nology"; string resourceName = "NevernamedsItems/Resources/tabletechguon_icon"; GameObject obj = new GameObject(itemName); var item = obj.AddComponent <TableTechNology>(); ItemBuilder.AddSpriteToObject(itemName, resourceName, obj); string shortDesc = ""; string longDesc = ""; ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn"); item.quality = PickupObject.ItemQuality.EXCLUDED; List <string> BeamAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/redbeam_seg_001", "NevernamedsItems/Resources/BeamSprites/redbeam_seg_002", "NevernamedsItems/Resources/BeamSprites/redbeam_seg_003", "NevernamedsItems/Resources/BeamSprites/redbeam_seg_004" }; List <string> ImpactAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/redbeam_impact_001", "NevernamedsItems/Resources/BeamSprites/redbeam_impact_002", "NevernamedsItems/Resources/BeamSprites/redbeam_impact_003", "NevernamedsItems/Resources/BeamSprites/redbeam_impact_004", }; Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController beamComp = projectile.GenerateBeamPrefab( "NevernamedsItems/Resources/BeamSprites/redbeam_seg_001", new Vector2(18, 2), new Vector2(0, 8), BeamAnimPaths, 8, ImpactAnimPaths, 13, new Vector2(4, 4), new Vector2(7, 7)); projectile.gameObject.SetActive(false); projectile.baseData.damage = 20; projectile.baseData.range *= 2; projectile.baseData.speed *= 4; projectile.gameObject.AddComponent <NoCollideBehaviour>(); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); beamComp.boneType = BasicBeamController.BeamBoneType.Straight; beamComp.interpolateStretchedBones = false; beamComp.penetration++; beamComp.PenetratesCover = true; lasa = projectile; }
public static BasicBeamController GenerateBeamPrefab(this Projectile projectile, string spritePath) { projectile.gameObject.AddComponent <MeshRenderer>(); projectile.gameObject.AddComponent <MeshFilter>(); tk2dSprite sprite = projectile.GetComponent <tk2dSprite>(); int spriteID = SpriteBuilder.AddSpriteToCollection(spritePath, ETGMod.Databases.Items.ProjectileCollection); tk2dTiledSprite tiledSprite = projectile.gameObject.AddComponent <tk2dTiledSprite>(); tiledSprite.sprite.SetSprite(ETGMod.Databases.Items.ProjectileCollection, spriteID); UnityEngine.Object.Destroy(projectile.gameObject.GetComponent <tk2dSprite>()); projectile.gameObject.AddComponent <tk2dSpriteAnimator>(); BasicBeamController beamController = projectile.gameObject.AddComponent <BasicBeamController>(); return(beamController); }
public static void Init() { string itemName = "Laser Bullets"; string resourceName = "NevernamedsItems/Resources/laserbullets_icon"; GameObject obj = new GameObject(itemName); var item = obj.AddComponent <LaserBullets>(); ItemBuilder.AddSpriteToObject(itemName, resourceName, obj); string shortDesc = "Hybrid"; string longDesc = "A beam and bullet crossbreed that defies nature, these bullets make your bullets shoot... beams!"; ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn"); item.CanBeDropped = true; item.quality = PickupObject.ItemQuality.B; List <string> BeamAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/redbeam_seg_001", "NevernamedsItems/Resources/BeamSprites/redbeam_seg_002", "NevernamedsItems/Resources/BeamSprites/redbeam_seg_003", "NevernamedsItems/Resources/BeamSprites/redbeam_seg_004" }; List <string> ImpactAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/redbeam_impact_001", "NevernamedsItems/Resources/BeamSprites/redbeam_impact_002", "NevernamedsItems/Resources/BeamSprites/redbeam_impact_003", "NevernamedsItems/Resources/BeamSprites/redbeam_impact_004", }; Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController beamComp = projectile.GenerateBeamPrefab( "NevernamedsItems/Resources/BeamSprites/redbeam_seg_001", new Vector2(18, 2), new Vector2(0, 8), BeamAnimPaths, 8, ImpactAnimPaths, 13, new Vector2(4, 4), new Vector2(7, 7)); projectile.gameObject.SetActive(false); projectile.baseData.damage *= 4; projectile.baseData.range *= 2; projectile.baseData.speed *= 4; FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); beamComp.boneType = BasicBeamController.BeamBoneType.Straight; beamComp.interpolateStretchedBones = false; beamComp.ContinueBeamArtToWall = true; SimpleRedBeam = projectile; }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Pike Beam", "pike_beam"); Game.Items.Rename("outdated_gun_mods:pike_beam", "cel:pike_beam"); gun.gameObject.AddComponent <PikeBeam>(); gun.SetShortDescription("Not A Glaive"); gun.SetLongDescription("Can cut across entire rooms, as long as there are no walls in the way."); gun.SetupSprite(null, "pike_beam_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 4); gun.SetAnimationFPS(gun.reloadAnimation, 2); gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(121) as Gun, true, false); gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.ammoCost = 1; gun.DefaultModule.shootStyle = ProjectileModule.ShootStyle.Beam; gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; gun.reloadTime = 0f; gun.DefaultModule.customAmmoType = "poison_blob"; gun.DefaultModule.angleVariance = 0f; gun.DefaultModule.cooldownTime = .2f; gun.DefaultModule.numberOfShotsInClip = 1; Gun gun2 = PickupObjectDatabase.GetById(151) as Gun; gun.muzzleFlashEffects = gun2.muzzleFlashEffects; gun.SetBaseMaxAmmo(150); gun.barrelOffset.transform.localPosition = new Vector3(3.5f, 0f, 0f); gun.quality = PickupObject.ItemQuality.B; gun.encounterTrackable.EncounterGuid = "Hippity hoppity, your spinal cord is my property."; gun.sprite.IsPerpendicular = true; gun.gunClass = GunClass.BEAM; 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 <MeshRenderer>(); projectile.gameObject.AddComponent <MeshFilter>(); gun.DefaultModule.projectiles[0] = projectile; projectile.transform.parent = gun.barrelOffset; BasicBeamController BasicBitchBeam = F**K.GenerateBeamPrefab(gun.DefaultModule.projectiles[0], ""); projectile.baseData.speed = -1; ETGMod.Databases.Items.Add(gun, null, "ANY"); }
public void SpawnSubTendril(int boneIndex) { if (subTendrilPrefab != null) { BeamController controllerPrefab = subTendrilPrefab.GetComponent <BeamController>(); if (controllerPrefab == null) { Debug.LogError("CarrionMainTendril: ControllerPrefab was NULL!"); } if (controllerPrefab is BasicBeamController) { GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(controllerPrefab.gameObject); BasicBeamController newBasicSubBeam = gameObject.GetComponent <BasicBeamController>(); newBasicSubBeam.State = BasicBeamController.BeamState.Firing; newBasicSubBeam.HitsPlayers = false; newBasicSubBeam.HitsEnemies = true; newBasicSubBeam.Origin = basicBeamControllerSelf.GetIndexedBonePosition(boneIndex); newBasicSubBeam.Direction = basicBeamControllerSelf.GetFinalBoneDirection().DegreeToVector2(); newBasicSubBeam.usesChargeDelay = false; newBasicSubBeam.projectile.Owner = this.projectileSelf.Owner; newBasicSubBeam.Owner = this.basicBeamControllerSelf.Owner; newBasicSubBeam.Gun = this.basicBeamControllerSelf.Gun; newBasicSubBeam.projectile.baseData.damage *= forme; HelixProjectileMotionModule helixProjectileMotionModule = new HelixProjectileMotionModule(); if (UnityEngine.Random.value <= 0.5f) { helixProjectileMotionModule.ForceInvert = true; } newBasicSubBeam.projectile.OverrideMotionModule = helixProjectileMotionModule; CarrionSubTendrilController subTendril = gameObject.GetComponent <CarrionSubTendrilController>(); if (subTendril) { subTendril.parentBeam = basicBeamControllerSelf; subTendril.parentBoneIndex = boneIndex; subTendril.GetComponent <Projectile>().PossibleSourceGun = projectileSelf.PossibleSourceGun; } } } }
public static Vector2 GetIndexedBonePosition(this BasicBeamController beam, int boneIndex) { LinkedList <BasicBeamController.BeamBone> bones; bones = OMITBReflectionHelpers.ReflectGetField <LinkedList <BasicBeamController.BeamBone> >(typeof(BasicBeamController), "m_bones", beam); if (bones.ElementAt(boneIndex) == null) { Debug.LogError("Attempted to fetch the position of a beam bone at an invalid index"); return(Vector2.zero); } if (!beam.UsesBones) { return(beam.Origin + BraveMathCollege.DegreesToVector(beam.Direction.ToAngle(), bones.ElementAt(boneIndex).PosX)); } if (beam.ProjectileAndBeamMotionModule != null) { return(bones.ElementAt(boneIndex).Position + beam.ProjectileAndBeamMotionModule.GetBoneOffset(bones.ElementAt(boneIndex), beam, beam.projectile.Inverted)); } return(bones.ElementAt(boneIndex).Position); }
/* * protected override void Update() * { * PlayerController player = this.gun.CurrentOwner as PlayerController; * if (gun.CurrentOwner) * { * bool check = player.HasPickupID(Game.Items["bny:lacon_upgrade_scrap"].PickupObjectId); * if (check) * { * AkSoundEngine.PostEvent("Play_OBJ_spears_clank_01", base.gameObject); * Upgrades++; * player.RemovePassiveItem(Lacon1Scrap.Scrap1ID); * } * } * * } * private static int Upgrades = 0; */ private void PostProcessBeam(BeamController beam) { if (beam is BasicBeamController) { BasicBeamController basicBeamController = (beam as BasicBeamController); if (basicBeamController.Gun == this.gun) { beam.AdjustPlayerBeamTint(Color.magenta, 1); //works basicBeamController.ProjectileScale = 1.5f; basicBeamController.DamageModifier = 80f; } /* * basicBeamController.penetration += 10; //it works * * basicBeamController.ProjectileScale = 1.5f;//it works !!! * basicBeamController.PenetratesCover = true; //works to pass through tables * basicBeamController.projectile.PenetratesInternalWalls = true;//don't work */ } }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Rico", "rico"); Game.Items.Rename("outdated_gun_mods:rico", "nn:rico"); var behav = gun.gameObject.AddComponent <Rico>(); behav.preventNormalFireAudio = true; gun.SetShortDescription("Cosmic Ray Spallation"); gun.SetLongDescription("The lack of any radiation filtering on this homemade energy blaster causes it's playload to ricochet uncontrollably off of surfaces!"); gun.SetupSprite(null, "rico_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 9); gun.isAudioLoop = true; gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); gun.gunHandedness = GunHandedness.OneHanded; //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 = 1000; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("Rico Laser", "NevernamedsItems/Resources/CustomGunAmmoTypes/rico_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/genericbeam_clipempty"); gun.barrelOffset.transform.localPosition = new Vector3(1.31f, 0.49f, 0f); gun.SetBaseMaxAmmo(1000); gun.ammo = 1000; gun.gunClass = GunClass.BEAM; 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/limebeam_mid_001", "NevernamedsItems/Resources/BeamSprites/limebeam_mid_002", "NevernamedsItems/Resources/BeamSprites/limebeam_mid_003", "NevernamedsItems/Resources/BeamSprites/limebeam_mid_004", }; List <string> BeamImpactPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/limebeam_impact_001", "NevernamedsItems/Resources/BeamSprites/limebeam_impact_002", "NevernamedsItems/Resources/BeamSprites/limebeam_impact_003", "NevernamedsItems/Resources/BeamSprites/limebeam_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/limebeam_mid_001", new Vector2(6, 4), new Vector2(0, 1), BeamAnimPaths, 9, //Impact BeamImpactPaths, 13, new Vector2(4, 4), new Vector2(7, 7), //End null, -1, null, null, //Beginning null, -1, null, null ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 7f; projectile.baseData.force *= 1f; projectile.baseData.range *= 200; projectile.baseData.speed *= 10f; beamComp.boneType = BasicBeamController.BeamBoneType.Straight; beamComp.reflections = 7; beamComp.startAudioEvent = "Play_WPN_radiationlaser_shot_01"; beamComp.endAudioEvent = "Stop_WPN_All"; //beamComp.interpolateStretchedBones = false; gun.DefaultModule.projectiles[0] = projectile; gun.quality = PickupObject.ItemQuality.C; //D ETGMod.Databases.Items.Add(gun, null, "ANY"); RicoID = gun.PickupObjectId; }
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("Sliver Beam", "sliver_beam"); Game.Items.Rename("outdated_gun_mods:sliver_beam", "cel:sliver_beam"); var behav = gun.gameObject.AddComponent <SliverBeam>(); behav.overrideNormalFireAudio = "Play_ENM_shelleton_beam_01"; behav.preventNormalFireAudio = true; gun.SetShortDescription("Like A Pike Through Butter"); gun.SetLongDescription("Can cut across rooms, assuming there is no walls in the way."); gun.SetupSprite(null, "sliver_beam_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 8); gun.isAudioLoop = true; gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); 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 = 3000; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.BEAM; gun.barrelOffset.transform.localPosition = new Vector3(1.75f, 0.5f, 0f); gun.SetBaseMaxAmmo(3000); gun.ammo = 3000; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).wrapMode = tk2dSpriteAnimationClip.WrapMode.LoopSection; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).loopStart = 1; List <string> BeamAnimPaths = new List <string>() { "Items/Resources/Beams/sliver_beam_mid_001", }; List <string> BeamEndPaths = new List <string>() { "Items/Resources/Beams/sliver_beam_end_001", }; //BULLET STATS Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController beamComp = projectile.GenerateBeamPrefab( "Items/Resources/Beams/sliver_beam_mid_001", new Vector2(10, 4), new Vector2(0, 1), BeamAnimPaths, 9, //Impact null, -1, null, null, //End BeamEndPaths, 9, new Vector2(10, 3), new Vector2(0, 1), //Beginning null, -1, null, null ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 15f; projectile.baseData.force *= 0.1f; projectile.baseData.range = float.MaxValue; projectile.baseData.speed *= 5f; beamComp.penetration = 10000; beamComp.boneType = BasicBeamController.BeamBoneType.Straight; beamComp.interpolateStretchedBones = false; gun.DefaultModule.projectiles[0] = projectile; gun.encounterTrackable.EncounterGuid = "FWOZZOOOOOMMMMM"; gun.quality = PickupObject.ItemQuality.C; //D ETGMod.Databases.Items.Add(gun, null, "ANY"); }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("TV", "tv"); Game.Items.Rename("outdated_gun_mods:tv", "cak:tv"); var behav = gun.gameObject.AddComponent <Television>(); //behav.overrideNormalFireAudio = "Play_ENM_shelleton_beam_01"; gun.SetShortDescription("Television Head"); gun.SetLongDescription("A scratchy and old television that switches between multiple near-useless channels."); gun.SetupSprite(null, "tv_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 8); gun.SetAnimationFPS(gun.idleAnimation, 8); gun.SetAnimationFPS(gun.reloadAnimation, 8); gun.isAudioLoop = true; //int iterator = 0; ProjectileModule mod = gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); //if (iterator == 1) mod.angleFromAim = 30; //if (iterator == 2) mod.angleFromAim = -30; //iterator++; mod.ammoCost = 10; if (mod != gun.DefaultModule) { mod.ammoCost = 0; } mod.shootStyle = ProjectileModule.ShootStyle.Beam; mod.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; mod.cooldownTime = 0.001f; mod.numberOfShotsInClip = 400; mod.ammoType = GameUIAmmoType.AmmoType.BEAM; List <string> BeamAnimPaths = new List <string>() { "CakeMod/Resources/BeamStatic/static_middle_001", "CakeMod/Resources/BeamStatic/static_middle_002", }; List <string> StartAnimPaths = new List <string>() { "CakeMod/Resources/BeamStatic/static_start_001", "CakeMod/Resources/BeamStatic/static_start_002", }; List <string> ImpactAnimPaths = new List <string>() { "CakeMod/Resources/BeamStatic/static_impact_001", "CakeMod/Resources/BeamStatic/static_impact_002", "CakeMod/Resources/BeamStatic/static_impact_003", "CakeMod/Resources/BeamStatic/static_impact_004", }; List <string> End = new List <string>() { "CakeMod/Resources/BeamStatic/static_end_001", "CakeMod/Resources/BeamStatic/static_end_002", }; Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController beamComp = projectile.GenerateBeamPrefab( "CakeMod/Resources/BeamStatic/static_middle_001", new Vector2(10, 2), new Vector2(0, 4), BeamAnimPaths, 12, //Beam Impact ImpactAnimPaths, 12, new Vector2(4, 4), new Vector2(7, 7), //End of the Beam null, -1, null, null, //Start of the Beam StartAnimPaths, 12, new Vector2(10, 2), new Vector2(0, 4) ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 0.5f; projectile.baseData.force *= 1f; projectile.baseData.range *= 5; projectile.baseData.speed *= 5f; projectile.specRigidbody.CollideWithOthers = false; beamComp.boneType = BasicBeamController.BeamBoneType.Projectile; beamComp.startAudioEvent = "Play_ENM_deathray_shot_01"; beamComp.projectile.baseData.damage = 120; beamComp.endAudioEvent = "Stop_ENM_deathray_loop_01"; beamComp.penetration = 0; beamComp.reflections = 0; beamComp.IsReflectedBeam = false; //beamComp.specRigidbody.CollideWithOthers = false; //beamComp.ReflectedFromRigidbody = true; //beamComp.interpolateStretchedBones = false; //beamComp.HitsEnemies = true; //beamComp.HitsPlayers = false; mod.projectiles[0] = projectile; //GUN STATS gun.doesScreenShake = false; gun.reloadTime = 1.2f; gun.muzzleFlashEffects.type = VFXPoolType.None; gun.barrelOffset.transform.localPosition = new Vector3(0.5f, 0.35f, 0f); gun.SetBaseMaxAmmo(400); gun.ammo = 400; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).wrapMode = tk2dSpriteAnimationClip.WrapMode.LoopSection; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).loopStart = 0; gun.quality = PickupObject.ItemQuality.EXCLUDED; ETGMod.Databases.Items.Add(gun, null, "ANY"); Television.TelevisionID = gun.PickupObjectId; }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Q-Beam", "qbeam"); Game.Items.Rename("outdated_gun_mods:q-beam", "nn:q_beam"); var behav = gun.gameObject.AddComponent <QBeam>(); behav.preventNormalFireAudio = true; gun.SetShortDescription(""); gun.SetLongDescription(""); gun.SetupSprite(null, "qbeam_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 9); gun.isAudioLoop = true; gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); gun.gunHandedness = GunHandedness.TwoHanded; //GUN STATS gun.doesScreenShake = false; gun.DefaultModule.ammoCost = 10; 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.angleVariance = 0; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.customAmmoType = "Rico Laser"; gun.barrelOffset.transform.localPosition = new Vector3(38f / 16f, 6f / 16f, 0f); gun.SetBaseMaxAmmo(2000); gun.ammo = 2000; gun.gunClass = GunClass.BEAM; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).wrapMode = tk2dSpriteAnimationClip.WrapMode.LoopSection; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).loopStart = 0; List <string> BeamAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/limebeam_mid_001", "NevernamedsItems/Resources/BeamSprites/limebeam_mid_002", "NevernamedsItems/Resources/BeamSprites/limebeam_mid_003", "NevernamedsItems/Resources/BeamSprites/limebeam_mid_004", }; List <string> BeamImpactPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/limebeam_impact_001", "NevernamedsItems/Resources/BeamSprites/limebeam_impact_002", "NevernamedsItems/Resources/BeamSprites/limebeam_impact_003", "NevernamedsItems/Resources/BeamSprites/limebeam_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/limebeam_mid_001", new Vector2(6, 4), new Vector2(0, 1), BeamAnimPaths, 9, //Impact BeamImpactPaths, 13, new Vector2(4, 4), new Vector2(7, 7), //End null, -1, null, null, //Beginning null, -1, null, null ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 5f; projectile.baseData.force *= 1f; projectile.baseData.range *= 200; projectile.baseData.speed *= 10f; beamComp.boneType = BasicBeamController.BeamBoneType.Straight; beamComp.startAudioEvent = "Play_WPN_radiationlaser_shot_01"; beamComp.endAudioEvent = "Stop_WPN_All"; gun.DefaultModule.projectiles[0] = projectile; gun.quality = PickupObject.ItemQuality.EXCLUDED; //A ETGMod.Databases.Items.Add(gun, null, "ANY"); ID = gun.PickupObjectId; }
private void CreateNewSubBeams() { ClearExtantSubBeams(); float ProjectileInterval = splitAngles / ((float)amtToSplitTo - 1); float currentAngle = basicBeamController.GetFinalBoneDirection(); float startAngle = currentAngle + (splitAngles * 0.5f); int iteration = 0; for (int i = 0; i < amtToSplitTo; i++) { LinkedList <BasicBeamController.BeamBone> bones; bones = OMITBReflectionHelpers.ReflectGetField <LinkedList <BasicBeamController.BeamBone> >(typeof(BasicBeamController), "m_bones", basicBeamController); LinkedListNode <BasicBeamController.BeamBone> linkedListNode = null; if (bones != null) { linkedListNode = bones.Last; } else { Debug.LogError("Bones was NULL"); return; } Vector2 bonePosition = basicBeamController.GetBonePosition(linkedListNode.Value); float finalAngle = startAngle - (ProjectileInterval * iteration); GameObject newSubBeamPrefab = FakePrefab.Clone(projectile.gameObject); if (newSubBeamPrefab == null) { Debug.LogError("BeamSplitComp: Cloned Beam Prefab was NULL!"); } BeamController controllerPrefab = newSubBeamPrefab.GetComponent <BeamController>(); if (controllerPrefab == null) { Debug.LogError("BeamSplitComp: ControllerPrefab was NULL!"); } if (controllerPrefab is BasicBeamController) { GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(controllerPrefab.gameObject); BasicBeamController newBasicSubBeam = gameObject.GetComponent <BasicBeamController>(); newBasicSubBeam.State = BasicBeamController.BeamState.Firing; newBasicSubBeam.HitsPlayers = false; newBasicSubBeam.HitsEnemies = true; newBasicSubBeam.Origin = bonePosition; newBasicSubBeam.Direction = finalAngle.DegreeToVector2(); newBasicSubBeam.usesChargeDelay = false; newBasicSubBeam.muzzleAnimation = string.Empty; newBasicSubBeam.chargeAnimation = string.Empty; newBasicSubBeam.beamStartAnimation = string.Empty; newBasicSubBeam.projectile.Owner = this.projectile.Owner; newBasicSubBeam.Owner = this.basicBeamController.Owner; newBasicSubBeam.Gun = this.basicBeamController.Gun; if (originalRange > 0) { newBasicSubBeam.projectile.baseData.range = originalRange; } newBasicSubBeam.projectile.baseData.damage *= dmgMultOnSplit; if (newBasicSubBeam.GetComponent <BeamSplittingModifier>()) { Destroy(newBasicSubBeam.GetComponent <BeamSplittingModifier>()); } subBeams.Add(newBasicSubBeam, (ProjectileInterval * iteration)); } else { Debug.LogError("BeamSplitComp: Controller prefab was not beam????"); } iteration++; } }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("CARRION", "carrion2"); Game.Items.Rename("outdated_gun_mods:carrion", "nn:carrion"); var behav = gun.gameObject.AddComponent <Carrion>(); behav.preventNormalFireAudio = true; gun.SetShortDescription("Fresh Meat"); gun.SetLongDescription("A wormlike colony of bizarre organisms. Unknown origin." + "\n\nIt has three base desires. \nTo grow. \nTo Spread. \nTo Feed."); gun.SetupSprite(null, "carrion2_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 13); gun.SetAnimationFPS(gun.idleAnimation, 13); 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(0.75f, 0.56f, 0f); gun.SetBaseMaxAmmo(600); gun.ammo = 600; gun.gunClass = GunClass.SILLY; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).wrapMode = tk2dSpriteAnimationClip.WrapMode.LoopSection; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).loopStart = 0; //SUB TENTACLE #region subtentacle Projectile subTendrilProj = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController subTendrilComp = subTendrilProj.GenerateBeamPrefab( "NevernamedsItems/Resources/BeamSprites/carrionsubtendril_mid_001", new Vector2(4, 2), new Vector2(0, 1), new List <string>() { "NevernamedsItems/Resources/BeamSprites/carrionsubtendril_mid_001" }, 13, //Impact null, -1, null, null, //End new List <string>() { "NevernamedsItems/Resources/BeamSprites/carrionsubtendril_end_001" }, 13, new Vector2(6, 2), new Vector2(0, 1), //Beginning new List <string>() { "NevernamedsItems/Resources/BeamSprites/carrionsubtendril_start_001" }, 13, new Vector2(7, 2), new Vector2(0, 1), //Other Variables 0 ); subTendrilProj.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(subTendrilProj.gameObject); UnityEngine.Object.DontDestroyOnLoad(subTendrilProj); subTendrilProj.baseData.damage = 10f; subTendrilProj.baseData.force *= 1f; subTendrilProj.baseData.range = 3.5f; subTendrilComp.ProjectileAndBeamMotionModule = new HelixProjectileMotionModule(); subTendrilComp.boneType = BasicBeamController.BeamBoneType.Projectile; subTendrilComp.penetration = 1; subTendrilComp.homingRadius = 10; subTendrilComp.homingAngularVelocity = 1000; CarrionSubTendrilController subtendril = subTendrilProj.gameObject.AddComponent <CarrionSubTendrilController>(); #endregion //MAIN TENTACLE #region maintentacle List <string> BeamAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/carrion2_mid_001", "NevernamedsItems/Resources/BeamSprites/carrion2_mid_002", "NevernamedsItems/Resources/BeamSprites/carrion2_mid_003", "NevernamedsItems/Resources/BeamSprites/carrion2_mid_004", "NevernamedsItems/Resources/BeamSprites/carrion2_mid_005", }; List <string> BeamEndPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/carrion2_end_001", "NevernamedsItems/Resources/BeamSprites/carrion2_end_002", "NevernamedsItems/Resources/BeamSprites/carrion2_end_003", "NevernamedsItems/Resources/BeamSprites/carrion2_end_004", "NevernamedsItems/Resources/BeamSprites/carrion2_end_005", }; //BULLET STATS Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController beamComp = projectile.GenerateBeamPrefab( "NevernamedsItems/Resources/BeamSprites/carrion2_mid_001", new Vector2(16, 5), new Vector2(0, 6), BeamAnimPaths, 13, //Impact null, -1, null, null, //End BeamEndPaths, 13, new Vector2(10, 5), new Vector2(0, 6), //Beginning null, -1, null, null, //Other Variables 0 ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 30f; projectile.baseData.force *= 1f; projectile.baseData.range = 8; projectile.baseData.speed *= 3; beamComp.boneType = BasicBeamController.BeamBoneType.Projectile; beamComp.startAudioEvent = "Play_WPN_demonhead_shot_01"; beamComp.endAudioEvent = "Stop_WPN_All"; beamComp.penetration = 1; beamComp.homingRadius = 5; beamComp.homingAngularVelocity = 300; CarrionMainTendrilController mainTendril = projectile.gameObject.AddComponent <CarrionMainTendrilController>(); mainTendril.subTendrilPrefab = subTendrilProj.gameObject; gun.DefaultModule.projectiles[0] = projectile; #endregion //ESCAPING WIGGLER #region escapingwiggler Projectile wiggler = DataCloners.CopyFields <HelixProjectile>(Instantiate((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0])); wiggler.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(wiggler.gameObject); UnityEngine.Object.DontDestroyOnLoad(wiggler); wiggler.baseData.speed *= 1f; wiggler.baseData.damage = 20; wiggler.baseData.range *= 10f; HomingModifier homing = wiggler.gameObject.GetOrAddComponent <HomingModifier>(); homing.HomingRadius = 10; homing.AngularVelocity = 200; PierceProjModifier piercing = wiggler.gameObject.GetOrAddComponent <PierceProjModifier>(); piercing.penetratesBreakables = true; piercing.penetration++; wiggler.SetProjectileSpriteRight("carrion_wiggler", 5, 5, true, tk2dBaseSprite.Anchor.MiddleCenter, 5, 5); EasyTrailBullet trail = wiggler.gameObject.AddComponent <EasyTrailBullet>(); trail.TrailPos = projectile.transform.position; trail.StartWidth = 0.31f; trail.EndWidth = 0; trail.LifeTime = 0.3f; trail.BaseColor = ExtendedColours.carrionRed; trail.EndColor = ExtendedColours.carrionRed; EscapingWigglerProjectile = wiggler; #endregion gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.customAmmoType = "Carrion Clip"; gun.quality = PickupObject.ItemQuality.S; //S ETGMod.Databases.Items.Add(gun, null, "ANY"); CarrionForme1ID = gun.PickupObjectId; }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Converter", "converter"); Game.Items.Rename("outdated_gun_mods:converter", "nn:converter"); var behav = gun.gameObject.AddComponent <Converter>(); behav.preventNormalFireAudio = true; gun.SetShortDescription("My Bullets!"); gun.SetLongDescription("Converts enemy bullets to your side." + "\n\nPart of a dismantled mind control device. Not strong enough to convert the Gundead themselves, but enemy shots have far weaker wills."); gun.SetupSprite(null, "converter_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 9); gun.isAudioLoop = true; gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); //GUN STATS gun.doesScreenShake = false; gun.DefaultModule.ammoCost = 15; 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 = -1; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.customAmmoType = "Y-Beam Laser"; gun.barrelOffset.transform.localPosition = new Vector3(0.93f, 0.5f, 0f); gun.SetBaseMaxAmmo(3000); gun.ammo = 3000; gun.gunClass = GunClass.BEAM; 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/yellowbeam_mid_001", "NevernamedsItems/Resources/BeamSprites/yellowbeam_mid_002", "NevernamedsItems/Resources/BeamSprites/yellowbeam_mid_003", "NevernamedsItems/Resources/BeamSprites/yellowbeam_mid_004", }; List <string> BeamImpactPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/yellowbeam_impact_001", "NevernamedsItems/Resources/BeamSprites/yellowbeam_impact_002", "NevernamedsItems/Resources/BeamSprites/yellowbeam_impact_003", "NevernamedsItems/Resources/BeamSprites/yellowbeam_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/yellowbeam_mid_001", new Vector2(6, 4), new Vector2(0, 1), BeamAnimPaths, 9, //Impact BeamImpactPaths, 13, new Vector2(4, 4), new Vector2(7, 7), //End null, -1, null, null, //Beginning null, -1, null, null, 50 ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 7f; projectile.baseData.force *= 1f; projectile.baseData.range = 12; projectile.gameObject.AddComponent <EnemyBulletConverterBeam>(); projectile.baseData.speed *= 10f; beamComp.boneType = BasicBeamController.BeamBoneType.Straight; beamComp.startAudioEvent = "Play_WPN_radiationlaser_shot_01"; beamComp.endAudioEvent = "Stop_WPN_All"; beamComp.penetration = 1; //beamComp.interpolateStretchedBones = false; gun.DefaultModule.projectiles[0] = projectile; gun.quality = PickupObject.ItemQuality.A; ETGMod.Databases.Items.Add(gun, null, "ANY"); gun.SetupUnlockOnCustomFlag(CustomDungeonFlags.PURCHASED_CONVERTER, true); ConverterID = gun.PickupObjectId; }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("carrion_third_form", "carrionformthree"); Game.Items.Rename("outdated_gun_mods:carrion_third_form", "nn:carrion_third_form"); var behav = gun.gameObject.AddComponent <CarrionFormeThree>(); behav.preventNormalFireAudio = true; gun.SetShortDescription(""); gun.SetLongDescription(""); gun.SetupSprite(null, "carrionformthree_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 13); gun.SetAnimationFPS(gun.idleAnimation, 13); gun.isAudioLoop = true; gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); //GUN STATS gun.doesScreenShake = true; 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(0.75f, 0.56f, 0f); gun.SetBaseMaxAmmo(600); gun.ammo = 600; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).wrapMode = tk2dSpriteAnimationClip.WrapMode.LoopSection; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).loopStart = 0; //SUB TENTACLE #region subtentacle Projectile subTendrilProj = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController subTendrilComp = subTendrilProj.GenerateBeamPrefab( "NevernamedsItems/Resources/BeamSprites/carrionsubtendril_mid_001", new Vector2(4, 2), new Vector2(0, 1), new List <string>() { "NevernamedsItems/Resources/BeamSprites/carrionsubtendril_mid_001" }, 13, //Impact null, -1, null, null, //End new List <string>() { "NevernamedsItems/Resources/BeamSprites/carrionsubtendril_end_001" }, 13, new Vector2(6, 2), new Vector2(0, 1), //Beginning new List <string>() { "NevernamedsItems/Resources/BeamSprites/carrionsubtendril_start_001" }, 13, new Vector2(7, 2), new Vector2(0, 1), //Other Variables 0 ); subTendrilProj.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(subTendrilProj.gameObject); UnityEngine.Object.DontDestroyOnLoad(subTendrilProj); subTendrilProj.baseData.damage = 10f; subTendrilProj.baseData.force *= 1f; subTendrilProj.baseData.range = 5.5f; subTendrilComp.ProjectileAndBeamMotionModule = new HelixProjectileMotionModule(); subTendrilComp.boneType = BasicBeamController.BeamBoneType.Projectile; subTendrilComp.penetration = 1; subTendrilComp.homingRadius = 10; subTendrilComp.homingAngularVelocity = 1000; CarrionSubTendrilController subtendril = subTendrilProj.gameObject.AddComponent <CarrionSubTendrilController>(); #endregion //MAIN TENTACLE #region maintentacle List <string> BeamAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/carrionformthree_mid_001", "NevernamedsItems/Resources/BeamSprites/carrionformthree_mid_002", "NevernamedsItems/Resources/BeamSprites/carrionformthree_mid_003", "NevernamedsItems/Resources/BeamSprites/carrionformthree_mid_004", "NevernamedsItems/Resources/BeamSprites/carrionformthree_mid_005", }; List <string> BeamEndPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/carrionformthree_end_001", "NevernamedsItems/Resources/BeamSprites/carrionformthree_end_002", "NevernamedsItems/Resources/BeamSprites/carrionformthree_end_003", "NevernamedsItems/Resources/BeamSprites/carrionformthree_end_004", "NevernamedsItems/Resources/BeamSprites/carrionformthree_end_005", }; //BULLET STATS Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); BasicBeamController beamComp = projectile.GenerateBeamPrefab( "NevernamedsItems/Resources/BeamSprites/carrionformthree_mid_001", new Vector2(16, 5), new Vector2(0, 6), BeamAnimPaths, 13, //Impact null, -1, null, null, //End BeamEndPaths, 13, new Vector2(10, 5), new Vector2(0, 6), //Beginning null, -1, null, null, //Other Variables 0 ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 50f; projectile.baseData.force *= 1f; projectile.baseData.range = 16; projectile.baseData.speed *= 3; beamComp.boneType = BasicBeamController.BeamBoneType.Projectile; beamComp.startAudioEvent = "Play_WPN_demonhead_shot_01"; beamComp.endAudioEvent = "Stop_WPN_All"; beamComp.penetration = 5; beamComp.homingRadius = 10; beamComp.homingAngularVelocity = 500; beamComp.ProjectileScale *= 1.2f; CarrionMainTendrilController mainTendril = projectile.gameObject.AddComponent <CarrionMainTendrilController>(); mainTendril.subTendrilPrefab = subTendrilProj.gameObject; projectile.gameObject.AddComponent <CarrionMovementTentacles>(); gun.DefaultModule.projectiles[0] = projectile; #endregion gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.customAmmoType = "Carrion Clip"; gun.quality = PickupObject.ItemQuality.EXCLUDED; //S ETGMod.Databases.Items.Add(gun, null, "ANY"); Carrion.CarrionForme3ID = gun.PickupObjectId; }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Wall-Ray", "wallray"); Game.Items.Rename("outdated_gun_mods:wall-ray", "nn:wall_ray"); var behav = gun.gameObject.AddComponent <WallRay>(); behav.preventNormalFireAudio = true; gun.SetShortDescription("90 Degrees Are Best Degrees"); gun.SetLongDescription("Creates two beams at ninety degree angles from the direction aimed." + "\n\nInvented and used primarily for window washing."); gun.SetupSprite(null, "wallray_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 8); gun.isAudioLoop = true; gun.gunClass = GunClass.SHITTY; int iterator = 0; for (int i = 0; i < 2; i++) { gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); } foreach (ProjectileModule mod in gun.Volley.projectiles) { if (iterator == 0) { mod.angleFromAim = 90; mod.positionOffset = new Vector2(0, 0.56f); } if (iterator == 1) { mod.angleFromAim = -90; mod.positionOffset = new Vector2(0, -0.56f); } mod.ammoCost = 10; if (mod != gun.DefaultModule) { mod.ammoCost = 0; } mod.shootStyle = ProjectileModule.ShootStyle.Beam; mod.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; mod.cooldownTime = 0.001f; mod.numberOfShotsInClip = -1; mod.angleVariance = 0; mod.ammoType = GameUIAmmoType.AmmoType.BEAM; List <string> BeamAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/thickredbeam_mid_001", "NevernamedsItems/Resources/BeamSprites/thickredbeam_mid_002", "NevernamedsItems/Resources/BeamSprites/thickredbeam_mid_003", "NevernamedsItems/Resources/BeamSprites/thickredbeam_mid_004", "NevernamedsItems/Resources/BeamSprites/thickredbeam_mid_005", }; List <string> BeamStartPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/thickredbeam_start_001", "NevernamedsItems/Resources/BeamSprites/thickredbeam_start_002", "NevernamedsItems/Resources/BeamSprites/thickredbeam_start_003", "NevernamedsItems/Resources/BeamSprites/thickredbeam_start_004", "NevernamedsItems/Resources/BeamSprites/thickredbeam_start_005", }; List <string> BeamImpactPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/thickredbeam_impact_001", "NevernamedsItems/Resources/BeamSprites/thickredbeam_impact_002", "NevernamedsItems/Resources/BeamSprites/thickredbeam_impact_003", "NevernamedsItems/Resources/BeamSprites/thickredbeam_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/thickredbeam_mid_001", new Vector2(9, 9), new Vector2(0, 1), BeamAnimPaths, 13, //Impact BeamImpactPaths, 13, new Vector2(3, 3), new Vector2(5, 5), //End null, -1, null, null, //Beginning BeamStartPaths, 13, new Vector2(9, 9), new Vector2(0, 1), //Other Variables 100 ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 25f; projectile.baseData.force *= 2f; projectile.baseData.range *= 10; projectile.baseData.speed *= 10f; beamComp.boneType = BasicBeamController.BeamBoneType.Projectile; beamComp.interpolateStretchedBones = false; if (iterator == 0) { beamComp.endAudioEvent = "Stop_WPN_All"; beamComp.startAudioEvent = "Play_WPN_moonscraperLaser_shot_01"; } iterator++; mod.projectiles[0] = projectile; } //GUN STATS gun.doesScreenShake = false; gun.reloadTime = 1f; gun.muzzleFlashEffects.type = VFXPoolType.None; gun.barrelOffset.transform.localPosition = new Vector3(1.56f, 0.62f, 0f); gun.SetBaseMaxAmmo(2000); gun.ammo = 2000; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).wrapMode = tk2dSpriteAnimationClip.WrapMode.LoopSection; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).loopStart = 1; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("OMITB GenericRed Laser", "NevernamedsItems/Resources/CustomGunAmmoTypes/genericredbeam_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/genericbeam_clipempty"); gun.quality = PickupObject.ItemQuality.C; ETGMod.Databases.Items.Add(gun, null, "ANY"); }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Alpha Beam", "alphabeam"); Game.Items.Rename("outdated_gun_mods:alpha_beam", "nn:alpha_beam"); var behav = gun.gameObject.AddComponent <AlphaBeam>(); behav.preventNormalFireAudio = true; gun.SetShortDescription("Ancient Tech"); gun.SetLongDescription("A powerful ion-beam that stings like hell." + "\n\nEvidence suggests this may be the first energy beam to ever find it's way to the Gungeon."); gun.SetupSprite(null, "alphabeam_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 = -1; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.BEAM; gun.barrelOffset.transform.localPosition = new Vector3(2.75f, 0.43f, 0f); gun.SetBaseMaxAmmo(600); gun.ammo = 600; gun.gunClass = GunClass.BEAM; 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/alphabeam_mid_001", "NevernamedsItems/Resources/BeamSprites/alphabeam_mid_002", "NevernamedsItems/Resources/BeamSprites/alphabeam_mid_003", "NevernamedsItems/Resources/BeamSprites/alphabeam_mid_004", }; List <string> BeamStartPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/alphabeam_start_001", "NevernamedsItems/Resources/BeamSprites/alphabeam_start_002", "NevernamedsItems/Resources/BeamSprites/alphabeam_start_003", "NevernamedsItems/Resources/BeamSprites/alphabeam_start_004", }; List <string> BeamEndPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/alphabeam_end_001", "NevernamedsItems/Resources/BeamSprites/alphabeam_end_002", "NevernamedsItems/Resources/BeamSprites/alphabeam_end_003", "NevernamedsItems/Resources/BeamSprites/alphabeam_end_004", }; List <string> BeamImpactPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/alphabeam_impact_001", "NevernamedsItems/Resources/BeamSprites/alphabeam_impact_002", "NevernamedsItems/Resources/BeamSprites/alphabeam_impact_003", "NevernamedsItems/Resources/BeamSprites/alphabeam_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/alphabeam_mid_001", new Vector2(15, 7), new Vector2(0, 4), BeamAnimPaths, 13, //Impact BeamImpactPaths, 13, new Vector2(7, 7), new Vector2(4, 4), //End BeamEndPaths, 13, new Vector2(15, 7), new Vector2(0, 4), //Beginning BeamStartPaths, 13, new Vector2(15, 7), new Vector2(0, 4), //Other Variables 100 ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 70f; projectile.baseData.force *= 20f; projectile.baseData.range *= 200; projectile.baseData.speed *= 4; //projectile.gameObject.AddComponent<EnemyBulletConverterBeam>(); beamComp.boneType = BasicBeamController.BeamBoneType.Projectile; beamComp.startAudioEvent = "Play_WPN_radiationlaser_shot_01"; beamComp.endAudioEvent = "Stop_WPN_All"; //beamComp.interpolateStretchedBones = false; beamComp.penetration += 100; gun.DefaultModule.projectiles[0] = projectile; gun.quality = PickupObject.ItemQuality.A; ETGMod.Databases.Items.Add(gun, null, "ANY"); }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Lightning Rod", "lightningrod"); Game.Items.Rename("outdated_gun_mods:lightning_rod", "nn:lightning_rod"); var behav = gun.gameObject.AddComponent <LightningRod>(); behav.preventNormalFireAudio = true; gun.SetShortDescription("By Jove!"); gun.SetLongDescription("An ancient magical staff that harnesses the electric power of the sky." + "\n\nUsed for forestry, battery charging, and sometimes for dungeon crawling."); gun.SetupSprite(null, "lightningrod_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 9); gun.isAudioLoop = true; gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); //GUN STATS gun.doesScreenShake = false; gun.DefaultModule.ammoCost = 7; 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 = -1; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.customAmmoType = "Y-Beam Laser"; gun.barrelOffset.transform.localPosition = new Vector3(0.75f, 0.81f, 0f); gun.SetBaseMaxAmmo(1000); gun.ammo = 1000; gun.gunClass = GunClass.BEAM; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).wrapMode = tk2dSpriteAnimationClip.WrapMode.LoopSection; gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).loopStart = 1; List <string> StartAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/stormrodbeam_start_001", "NevernamedsItems/Resources/BeamSprites/stormrodbeam_start_002", "NevernamedsItems/Resources/BeamSprites/stormrodbeam_start_003", "NevernamedsItems/Resources/BeamSprites/stormrodbeam_start_004", }; List <string> BeamAnimPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/stormrodbeam_mid_001", "NevernamedsItems/Resources/BeamSprites/stormrodbeam_mid_002", "NevernamedsItems/Resources/BeamSprites/stormrodbeam_mid_003", "NevernamedsItems/Resources/BeamSprites/stormrodbeam_mid_004", }; List <string> BeamImpactPaths = new List <string>() { "NevernamedsItems/Resources/BeamSprites/stormrodbeam_impact_001", "NevernamedsItems/Resources/BeamSprites/stormrodbeam_impact_002", "NevernamedsItems/Resources/BeamSprites/stormrodbeam_impact_003", "NevernamedsItems/Resources/BeamSprites/stormrodbeam_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/stormrodbeam_mid_001", new Vector2(17, 7), new Vector2(0, 5), BeamAnimPaths, 10, //Impact BeamImpactPaths, 10, new Vector2(4, 4), new Vector2(7, 7), //End null, -1, null, null, //Beginning StartAnimPaths, 10, new Vector2(4, 4), new Vector2(7, 7), 10, 10f ); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage = 30f; projectile.baseData.force *= 1f; projectile.damageTypes |= CoreDamageTypes.Electric; projectile.baseData.range = 1000; projectile.baseData.speed *= 10f; beamComp.boneType = BasicBeamController.BeamBoneType.Straight; beamComp.startAudioEvent = "Play_ElectricSoundLoop"; beamComp.endAudioEvent = "Stop_ElectricSoundLoop"; gun.DefaultModule.projectiles[0] = projectile; gun.quality = PickupObject.ItemQuality.C; ETGMod.Databases.Items.Add(gun, null, "ANY"); LightningRodID = gun.PickupObjectId; }
private void HandleBeam(BeamController obj) { if (!obj || !obj.projectile) { return; } if (m_IsDisconnected) { return; } if (!m_MirrorGunToggle) { return; } if (m_AIActor.TargetRigidbody == null) { m_AIActor.PlayerTarget = m_Player; } Vector2 SpawnOrigin = m_AIActor.sprite.WorldCenter; if (m_AIActor.CurrentGun) { SpawnOrigin = m_AIActor.CurrentGun.sprite.WorldCenter; } GameObject gameObject = SpawnManager.SpawnProjectile(obj.projectile.gameObject, SpawnOrigin, Quaternion.identity, true); Projectile component = gameObject.GetComponent <Projectile>(); component.Owner = m_AIActor; component.SetOwnerSafe(m_AIActor, m_AIActor.ActorName); component.SetNewShooter(m_AIActor.specRigidbody); component.MakeLookLikeEnemyBullet(true); BeamController component2 = gameObject.GetComponent <BeamController>(); BasicBeamController basicBeamController = component2 as BasicBeamController; if (basicBeamController) { basicBeamController.SkipPostProcessing = true; } component2.Owner = m_AIActor; component2.HitsPlayers = true; component2.HitsEnemies = false; if (component2.IgnoreRigidbodes == null) { component2.IgnoreRigidbodes = new List <SpeculativeRigidbody>(); } if (!component2.IgnoreRigidbodes.Contains(m_AIActor.specRigidbody)) { component2.IgnoreRigidbodes.Add(m_AIActor.specRigidbody); } float angle = (m_AIActor.TargetRigidbody.GetUnitCenter(ColliderType.HitBox) - m_AIActor.specRigidbody.UnitCenter).ToAngle(); Vector3 v = BraveMathCollege.DegreesToVector(angle, 1f); if (m_AIActor.CurrentGun) { float angle2 = (m_AIActor.TargetRigidbody.GetUnitCenter(ColliderType.HitBox) - m_AIActor.CurrentGun.sprite.WorldCenter).ToAngle(); v = BraveMathCollege.DegreesToVector(angle2, 1f); } component2.Direction = v; if (m_AIActor.CurrentGun) { component2.Origin = m_AIActor.CurrentGun.sprite.WorldCenter; } else { component2.Origin = m_AIActor.specRigidbody.UnitCenter; } StartCoroutine(HandleFiringBeam(component2)); }