Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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;
        }
Ejemplo n.º 14
0
        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");
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 17
0
        /*
         * 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
                 */
            }
        }
Ejemplo n.º 18
0
        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;
        }
Ejemplo n.º 19
0
        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");
        }
Ejemplo n.º 20
0
        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");
        }
Ejemplo n.º 21
0
        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;
        }
Ejemplo n.º 22
0
        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;
        }
Ejemplo n.º 23
0
        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++;
            }
        }
Ejemplo n.º 24
0
        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;
        }
Ejemplo n.º 25
0
        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;
        }
Ejemplo n.º 27
0
        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");
        }
Ejemplo n.º 28
0
        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;
        }
Ejemplo n.º 30
0
        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));
        }