Ejemplo n.º 1
0
 private void staff1(Projectile projectile)
 {
     for (int counter = 0; counter < UnityEngine.Random.Range(1f, 2f); counter++)
     {
         PlayerController playerController = this.gun.CurrentOwner as PlayerController;
         Projectile       projectile1      = ((Gun)ETGMod.Databases.Items[52]).DefaultModule.projectiles[0];
         GameObject       gameObject       = SpawnManager.SpawnProjectile(projectile.gameObject, projectile.sprite.WorldCenter, Quaternion.Euler(0f, 0f, UnityEngine.Random.Range(0, 359)));
         Projectile       component        = gameObject.GetComponent <Projectile>();
         bool             flag             = component != null;
         bool             flag2            = flag;
         if (flag2)
         {
             component.SpawnedFromOtherPlayerProjectile = true;
             component.Shooter                   = this.gun.CurrentOwner.specRigidbody;
             component.Owner                     = playerController;
             component.Shooter                   = playerController.specRigidbody;
             component.baseData.speed            = 30.5f;
             component.baseData.damage           = 2.1f;
             component.AdditionalScaleMultiplier = 1.25f;
             component.AdjustPlayerProjectileTint(Color.blue.WithAlpha(Color.blue.a / 50f), 50, 0f);
             BounceProjModifier bouncy = component.gameObject.AddComponent <BounceProjModifier>();
             bouncy.numberOfBounces = 3;
             component.SetOwnerSafe(this.gun.CurrentOwner, "Player");
             component.ignoreDamageCaps = true;
         }
     }
 }
Ejemplo n.º 2
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Riot Gun", "riotgun");

            Game.Items.Rename("outdated_gun_mods:riot_gun", "nn:riot_gun");
            gun.gameObject.AddComponent <RiotGun>();
            gun.SetShortDescription("Definitely Humane");
            gun.SetLongDescription("Fires elastic rubber bullets." + "\n\nWhile rubber bullets are generally considered non-lethal, a more accurate term would be 'less-lethal'." + "\nThese bullets can still cause damage.");

            gun.SetupSprite(null, "riotgun_idle_001", 8);

            gun.SetAnimationFPS(gun.shootAnimation, 12);
            gun.SetAnimationFPS(gun.reloadAnimation, 1);
            gun.gunSwitchGroup = (PickupObjectDatabase.GetById(150) as Gun).gunSwitchGroup;

            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false);

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.Automatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 1f;
            gun.DefaultModule.cooldownTime           = 0.5f;
            gun.DefaultModule.numberOfShotsInClip    = 5;
            gun.barrelOffset.transform.localPosition = new Vector3(2.06f, 0.75f, 0f);
            gun.SetBaseMaxAmmo(200);
            gun.gunClass = GunClass.RIFLE;
            //BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]);

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            gun.DefaultModule.projectiles[0] = projectile;
            projectile.baseData.damage       = 7f;
            projectile.baseData.force       *= 5f;
            projectile.baseData.speed       *= 1f;
            projectile.baseData.range       *= 1f;
            BounceProjModifier Bouncing = projectile.gameObject.GetOrAddComponent <BounceProjModifier>();

            Bouncing.numberOfBounces       = 1;
            projectile.AppliesStun         = true;
            projectile.StunApplyChance     = 0.2f;
            projectile.AppliedStunDuration = 2f;
            projectile.SetProjectileSpriteRight("riotgun_projectile", 12, 12, true, tk2dBaseSprite.Anchor.MiddleCenter, 10, 10);


            projectile.pierceMinorBreakables = true;
            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("RiotGun Bullets", "NevernamedsItems/Resources/CustomGunAmmoTypes/riotgun_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/riotgun_clipempty");

            gun.quality = PickupObject.ItemQuality.D;
            ETGMod.Databases.Items.Add(gun, null, "ANY");

            gun.AddToSubShop(ItemBuilder.ShopType.Trorc);

            RiotGunID = gun.PickupObjectId;
            gun.SetupUnlockOnCustomFlag(CustomDungeonFlags.PURCHASED_RIOTGUN, true);
            gun.AddItemToTrorcMetaShop(10);
        }
        private IEnumerator Bounce()
        {
            Projectile projectile = ((Gun)ETGMod.Databases.Items[35]).DefaultModule.projectiles[0];

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 12; j++)
                {
                    GameObject obj3  = SpawnManager.SpawnProjectile(projectile.gameObject, base.LastOwner.sprite.WorldCenter, Quaternion.Euler(0f, 0f, (base.LastOwner.CurrentGun == null) ? 0f : j * 30f), true);
                    Projectile proj3 = obj3.GetComponent <Projectile>();
                    if (proj3 != null)
                    {
                        proj3.Owner           = base.LastOwner;
                        proj3.Shooter         = base.LastOwner.specRigidbody;
                        proj3.baseData.speed *= 0.66f;
                        if (proj3.GetComponent <BounceProjModifier>() == null)
                        {
                            proj3.gameObject.AddComponent <BounceProjModifier>();
                        }
                        if (proj3.GetComponent <PierceProjModifier>() == null)
                        {
                            proj3.gameObject.AddComponent <PierceProjModifier>();
                        }
                        BounceProjModifier boing = proj3.GetComponent <BounceProjModifier>();
                        boing.chanceToDieOnBounce = 0;
                        boing.numberOfBounces     = 2;
                        PierceProjModifier poke = proj3.GetComponent <PierceProjModifier>();
                        poke.MaxBossImpacts = 3;
                        poke.penetration    = 6;
                        proj3.GetComponent <BounceProjModifier>().OnBounceContext += this.BounceTowardsPlayer;
                    }
                }
                yield return(new WaitForSeconds(0.5f));
            }
        }
Ejemplo n.º 4
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Billiard Bouncer", "billiard_bouncer");

            Game.Items.Rename("outdated_gun_mods:billiard_bouncer", "cel:billiard_bouncer");
            gun.gameObject.AddComponent <BilliardBouncer>();
            gun.SetShortDescription("Solids Or Stripes?");
            gun.SetLongDescription("Shoots bouncing billiard balls that collide with other player projectiles. \n\nInvented by a gambler who enjoyed the sound of clinking billiard balls a little too much.");
            gun.SetupSprite(null, "billiard_bouncer_idle_001", 13);
            gun.SetAnimationFPS(gun.shootAnimation, 12);
            for (int i = 0; i < 3; i++)
            {
                GunExt.AddProjectileModuleFrom(gun, "38_special", true, false);
            }
            foreach (ProjectileModule projectileModule in gun.Volley.projectiles)
            {
                projectileModule.shootStyle = ProjectileModule.ShootStyle.SemiAutomatic;
                Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(projectileModule.projectiles[0]);
                projectile.gameObject.SetActive(false);
                FakePrefab.MarkAsFakePrefab(projectile.gameObject);
                UnityEngine.Object.DontDestroyOnLoad(projectile);
                projectileModule.projectiles[0]      = projectile;
                projectileModule.angleVariance       = 10;
                projectile.transform.parent          = gun.barrelOffset;
                gun.DefaultModule.projectiles[0]     = projectile;
                projectile.baseData.damage          *= 1;
                projectile.baseData.speed           *= 1f;
                projectileModule.numberOfShotsInClip = 8;
                projectileModule.cooldownTime        = .6f;
                BounceProjModifier bounce = projectile.gameObject.AddComponent <BounceProjModifier>();
                projectile.gameObject.AddComponent <BilliardBounceAdder>();
                bounce.damageMultiplierOnBounce = 1;
                bounce.numberOfBounces          = 6;
                projectile.baseData.range      *= 10f;
                projectileModule.ammoType       = GameUIAmmoType.AmmoType.SHOTGUN;
                projectile.shouldRotate         = true;
                projectile.SetProjectileSpriteRight("billiard_1", 9, 9, null, null);
                bool flag = projectileModule == gun.DefaultModule;
                if (flag)
                {
                    projectileModule.ammoCost = 1;
                }
                else
                {
                    projectileModule.ammoCost = 0;
                }
            }
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 1.5f;
            gun.Volley.UsesShotgunStyleVelocityRandomizer = true;
            gun.Volley.DecreaseFinalSpeedPercentMin       = -10f;
            gun.Volley.IncreaseFinalSpeedPercentMax       = 10f;
            gun.SetBaseMaxAmmo(150);
            gun.gunClass = GunClass.SILLY;
            gun.muzzleFlashEffects.type = VFXPoolType.None;
            gun.quality = PickupObject.ItemQuality.A;
            gun.encounterTrackable.EncounterGuid = "Billiard Shotgun";
            gun.sprite.IsPerpendicular           = true;
            ETGMod.Databases.Items.Add(gun, null, "ANY");
        }
Ejemplo n.º 5
0
        private void FLAK1KILL(Projectile sourceProjectile, SpeculativeRigidbody hitRigidbody, bool fatal)
        {
            bool flag1 = fatal;

            if (flag1)
            {
                for (int counter = 0; counter < UnityEngine.Random.Range(3f, 5f); counter++)
                {
                    PlayerController playerController = this.gun.CurrentOwner as PlayerController;
                    Projectile       projectile1      = ((Gun)ETGMod.Databases.Items[38]).DefaultModule.projectiles[0];
                    GameObject       gameObject       = SpawnManager.SpawnProjectile(sourceProjectile.gameObject, sourceProjectile.sprite.WorldCenter, Quaternion.Euler(0f, 0f, UnityEngine.Random.Range(0, 359)));
                    Projectile       bigboy           = gameObject.GetComponent <Projectile>();
                    bool             flag             = bigboy != null;
                    bool             flag2            = flag;
                    if (flag2)
                    {
                        bigboy.SpawnedFromOtherPlayerProjectile = true;
                        bigboy.Shooter                   = this.gun.CurrentOwner.specRigidbody;
                        bigboy.Owner                     = playerController;
                        bigboy.Shooter                   = playerController.specRigidbody;
                        bigboy.baseData.speed            = 11.5f;
                        bigboy.baseData.damage           = 13f;
                        bigboy.AdditionalScaleMultiplier = 1.5f;
                        BounceProjModifier bouncy = bigboy.gameObject.AddComponent <BounceProjModifier>();
                        bouncy.numberOfBounces = 2;
                        bigboy.SetOwnerSafe(this.gun.CurrentOwner, "Player");
                        bigboy.ignoreDamageCaps = true;
                        bigboy.OnDestruction   += this.FlakTime2;
                    }
                }
            }
        }
Ejemplo n.º 6
0
        //This part handles the attaching of a new motion modual after the projectile has landed on the enemy but the start event can be altered
        //This is the important bit!!!!!!!!!!
        //please dont use orbit group 100 it may cause issues with clashing idk  : )
        public void OnHitEnemy(Projectile proj, SpeculativeRigidbody body, bool yes)
        {
            BounceProjModifier bouncer = proj.gameObject.GetOrAddComponent <BounceProjModifier>();

            bouncer.name = "cation";

            int orbitersInGroup = OrbitProjectileMotionModule.GetOrbitersInGroup(100);

            if (orbitersInGroup >= 20)
            {
                return;
            }
            bouncer.projectile.specRigidbody.CollideWithTileMap = false;
            bouncer.projectile.ResetDistance();

            bouncer.projectile.baseData.range      = Mathf.Max(bouncer.projectile.baseData.range, 500f);
            bouncer.projectile.collidesWithEnemies = false;
            bouncer.specRigidbody.AddCollisionLayerIgnoreOverride(CollisionMask.LayerToMask(CollisionLayer.EnemyBulletBlocker, CollisionLayer.EnemyHitBox, CollisionLayer.EnemyCollider, CollisionLayer.BulletBlocker, CollisionLayer.BulletBreakable));
            OrbitProjectileMotionModule orbitProjectileMotionModule = new OrbitProjectileMotionModule();

            orbitProjectileMotionModule.lifespan = 4000f;
            if (bouncer.projectile.OverrideMotionModule != null && bouncer.projectile.OverrideMotionModule is HelixProjectileMotionModule)
            {
                orbitProjectileMotionModule.StackHelix  = true;
                orbitProjectileMotionModule.ForceInvert = (bouncer.projectile.OverrideMotionModule as HelixProjectileMotionModule).ForceInvert;
            }
            orbitProjectileMotionModule.usesAlternateOrbitTarget = true;
            orbitProjectileMotionModule.alternateOrbitTarget     = body;
            orbitProjectileMotionModule.MinRadius = 1;
            orbitProjectileMotionModule.MaxRadius = 1;
            spincheck = orbitProjectileMotionModule;
            bouncer.projectile.OverrideMotionModule = spincheck;
        }
Ejemplo n.º 7
0
        public void Spin(Projectile proj)
        {
            BounceProjModifier bouncer = proj.gameObject.GetOrAddComponent <BounceProjModifier>();

            bouncer.name = "afterimage";

            int orbitersInGroup = OrbitProjectileMotionModule.GetOrbitersInGroup(101);

            if (orbitersInGroup >= 20)
            {
                return;
            }
            bouncer.projectile.specRigidbody.CollideWithTileMap = false;
            bouncer.projectile.ResetDistance();

            bouncer.projectile.baseData.range = Mathf.Max(bouncer.projectile.baseData.range, 17f);

            OrbitProjectileMotionModule orbitProjectileMotionModule = new OrbitProjectileMotionModule();

            orbitProjectileMotionModule.lifespan = 8f;


            if (bouncer.projectile.OverrideMotionModule != null && bouncer.projectile.OverrideMotionModule is HelixProjectileMotionModule)
            {
                orbitProjectileMotionModule.StackHelix  = true;
                orbitProjectileMotionModule.ForceInvert = (bouncer.projectile.OverrideMotionModule as HelixProjectileMotionModule).ForceInvert;
            }


            orbitProjectileMotionModule.MinRadius = 3.5f;
            orbitProjectileMotionModule.MaxRadius = 3.5f;

            bouncer.projectile.OverrideMotionModule = orbitProjectileMotionModule;
        }
 public void Interact(PlayerController interactor)
 {
     //This method is what runs when the player actually interacts with the interactable. I put an if statement around the code to ensure that the projectile still exists
     if (base.projectile)
     {
         //This float is equal to the direction the projectile is facing (not the direction it is going in). This will used later on to fire a projectile in that direction
         float rotation = base.projectile.transform.rotation.eulerAngles.z;
         //Getting the projectile of Serious Cannon via ID
         Projectile projectile = ((Gun)global::ETGMod.Databases.Items[37]).DefaultModule.chargeProjectiles[0].Projectile;
         //Spawning the projectile and setting a variable equal to it for future access
         GameObject obj = SpawnManager.SpawnProjectile(projectile.gameObject, base.projectile.sprite.WorldTopCenter, Quaternion.Euler(0, 0, rotation));
         //Retrieving the spawned projectile using GetComponent
         Projectile proj = obj.GetComponent <Projectile>();
         //Setting the projectile's owner and shooter to the player
         proj.Owner   = interactor;
         proj.Shooter = interactor.specRigidbody;
         //Scaling down the size of the projectile a little bit
         proj.AdditionalScaleMultiplier = 0.75f;
         //If the player does not have the Pirate Prowess synergy, set the number of bounces the projectile has to 0
         if (!interactor.PlayerHasActiveSynergy("Pirate Prowess"))
         {
             BounceProjModifier boing = proj.GetComponent <BounceProjModifier>();
             boing.numberOfBounces = 0;
         }
         //Deregister the interactable so that it cannot be further intereacted with
         this.m_room.DeregisterInteractable(this);
     }
 }
Ejemplo n.º 9
0
 private void ReleaseElectric(Projectile sourceprojectile)
 {
     for (int counter = 0; counter < 3f; counter++)
     {
         PlayerController playerController  = this.gun.CurrentOwner as PlayerController;
         Projectile       sourceprojectile1 = ((Gun)ETGMod.Databases.Items[13]).DefaultModule.projectiles[0];
         GameObject       gameObject        = SpawnManager.SpawnProjectile(sourceprojectile.gameObject, sourceprojectile.sprite.WorldCenter, Quaternion.Euler(0f, 0f, (this.gun == null) ? 0f : (UnityEngine.Random.Range(0f, 359f))), true);
         Projectile       component         = gameObject.GetComponent <Projectile>();
         bool             flag  = component != null;
         bool             flag2 = flag;
         if (flag2)
         {
             BounceProjModifier bouncy = component.gameObject.AddComponent <BounceProjModifier>();
             bouncy.numberOfBounces = 3;
             component.Shooter      = this.gun.CurrentOwner.specRigidbody;
             component.SpawnedFromOtherPlayerProjectile = true;
             component.Shooter                   = this.gun.CurrentOwner.specRigidbody;
             component.Owner                     = playerController;
             component.Shooter                   = playerController.specRigidbody;
             component.baseData.speed            = 10f;
             component.baseData.damage           = 2f;
             component.AdditionalScaleMultiplier = .5f;
             component.SetOwnerSafe(this.gun.CurrentOwner, "Player");
             component.ignoreDamageCaps = true;
             HomingModifier homing = component.gameObject.AddComponent <HomingModifier>();
             homing.HomingRadius      = 45;
             homing.AngularVelocity   = 90;
             component.baseData.range = 35f;
         }
     }
 }
Ejemplo n.º 10
0
        private IEnumerator cannonFire()
        {
            Projectile projectile = ((Gun)ETGMod.Databases.Items[37]).DefaultModule.projectiles[0];

            AkSoundEngine.PostEvent("Play_ENM_cannonball_eyes_01", base.gameObject);
            float angle = base.LastOwner.FacingDirection;

            for (int i = 0; i < 5; i++)
            {
                float      y     = Mathf.Lerp(-4.5f, 4.5f, (float)i / 4f);
                GameObject obj1  = SpawnManager.SpawnProjectile(projectile.gameObject, base.LastOwner.sprite.WorldCenter + new Vector2(1f, y), Quaternion.Euler(0f, 0f, (base.LastOwner.CurrentGun == null) ? 0f : angle), true);
                Projectile proj1 = obj1.GetComponent <Projectile>();
                proj1.Owner                            = base.LastOwner;
                proj1.Shooter                          = base.LastOwner.specRigidbody;
                proj1.baseData.speed                   = 0f;
                proj1.AdditionalScaleMultiplier        = 0.75f;
                proj1.specRigidbody.CollideWithTileMap = false;
                if (proj1.GetComponent <BounceProjModifier>() == null)
                {
                    proj1.gameObject.AddComponent <BounceProjModifier>();
                }
                BounceProjModifier boing = proj1.GetComponent <BounceProjModifier>();
                boing.numberOfBounces = 1;
                proj1.StartCoroutine(this.delayedShot(proj1));
                yield return(new WaitForSeconds(0.1f));
            }
        }
Ejemplo n.º 11
0
        private IEnumerator SpawnTargets(PlayerController player, Gun gun)
        {
            float num = (gun.reloadTime.RoundToNearest(1) - 1) * 2;

            for (int i = 0; i < (gun.reloadTime.RoundToNearest(1) - 1) * 2; i++)
            {
                Vector2 position = player.CurrentRoom.GetRandomVisibleClearSpot(1, 1).ToVector2();
                targetObjects.Add(UnityEngine.Object.Instantiate <GameObject>(PrizeRifle.targetPrefab, position, Quaternion.identity));
                tk2dBaseSprite targetSprite = targetObjects[i].GetComponent <tk2dBaseSprite>();
                SpriteOutlineManager.AddOutlineToSprite(targetSprite, Color.white);
                LootEngine.DoDefaultItemPoof(targetSprite.WorldCenter, false, false);
                SpeculativeRigidbody body = targetObjects[i].GetComponent <SpeculativeRigidbody>();
                body.OnRigidbodyCollision += this.HandleRigidbodyCollision;
            }
            for (int i = 0; i < (gun.reloadTime.RoundToNearest(1) - 1) * 2; i++)
            {
                yield return(new WaitForSeconds(0.5f));

                GameObject obj3  = SpawnManager.SpawnProjectile(gun.DefaultModule.projectiles[0].gameObject, (gun.CurrentOwner as PlayerController).sprite.WorldCenter, Quaternion.Euler(0f, 0f, gun.CurrentAngle));
                Projectile proj3 = obj3.GetComponent <Projectile>();
                proj3.Owner = gun.CurrentOwner;
                proj3.collidesWithEnemies = false;
                if (proj3.gameObject.GetComponent <BounceProjModifier>() != null)
                {
                    BounceProjModifier boing = proj3.GetComponent <BounceProjModifier>();
                    proj3.ChangeTintColorShader(0f, BraveUtility.GetRainbowColor(boing.numberOfBounces));
                    boing.OnBounceContext += this.OnBounce;
                }
            }
        }
Ejemplo n.º 12
0
 private void OnBounce(BounceProjModifier boing, SpeculativeRigidbody body)
 {
     if (boing.projectile)
     {
         boing.projectile.baseData.damage *= 1.25f;
     }
 }
Ejemplo n.º 13
0
        public static void Init()
        {
            string     itemName     = "Shatterblank";
            string     resourceName = "NevernamedsItems/Resources/shatterblank_icon";
            GameObject obj          = new GameObject(itemName);
            var        item         = obj.AddComponent <Shatterblank>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Fragmentation";
            string longDesc  = "Blanks release dangerous shrapnel." + "\n\nThis artefact was originally part of a brittle Ammolet, before the whole thing was shattered into a thousand tiny pieces.";

            ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn");


            item.quality = PickupObject.ItemQuality.D;
            ItemBuilder.AddPassiveStatModifier(item, PlayerStats.StatType.AdditionalBlanksPerFloor, 1f, StatModifier.ModifyMethod.ADDITIVE);
            item.AddToSubShop(ItemBuilder.ShopType.OldRed);
            ShatterblankID = item.PickupObjectId;

            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]);

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            projectile.baseData.damage = 6f;
            projectile.baseData.range *= 4f;
            BounceProjModifier bounce = projectile.gameObject.AddComponent <BounceProjModifier>();

            bounce.numberOfBounces += 3;
            shatterProj             = projectile;
        }
Ejemplo n.º 14
0
        public static void FlakTime(Projectile projectile, PlayerController playerController)
        {
            Projectile projectile2 = ((Gun)ETGMod.Databases.Items[38]).DefaultModule.projectiles[0];

            for (float f = 0; f < UnityEngine.Random.Range(2f, 12f); f++)
            {
                GameObject gameObject = SpawnManager.SpawnProjectile(projectile2.gameObject, projectile.sprite.WorldCenter, Quaternion.Euler(0f, 0f, (float)UnityEngine.Random.Range(0, 359)), true);
                Projectile component  = gameObject.GetComponent <Projectile>();
                if (component)
                {
                    component.SpawnedFromOtherPlayerProjectile = true;
                    component.Owner                     = playerController;
                    component.Shooter                   = playerController.specRigidbody;
                    component.baseData.speed            = 11.5f;
                    component.baseData.damage          *= 0.9f;
                    component.AdditionalScaleMultiplier = 0.8f;
                    component.baseData.range           *= 0.5f;
                    BounceProjModifier bounceProjModifier = component.gameObject.AddComponent <BounceProjModifier>();
                    bounceProjModifier.numberOfBounces = 2;
                }
            }
            for (float f = 0; f < UnityEngine.Random.Range(4f, 10f); f++)
            {
                GameObject gameObject2 = SpawnManager.SpawnProjectile(projectile2.gameObject, projectile.sprite.WorldCenter, Quaternion.Euler(0f, 0f, (float)UnityEngine.Random.Range(0, 359)), true);
                Projectile component   = gameObject2.GetComponent <Projectile>();
                if (component != null)
                {
                    component.SpawnedFromOtherPlayerProjectile = true;
                    component.Owner                     = playerController;
                    component.Shooter                   = playerController.specRigidbody;
                    component.baseData.speed            = 14.5f;
                    component.baseData.damage          *= 1.25f;
                    component.AdditionalScaleMultiplier = 1.1f;
                    component.baseData.range           *= 0.25f;
                    BounceProjModifier bounceProjModifier2 = component.gameObject.AddComponent <BounceProjModifier>();
                    bounceProjModifier2.numberOfBounces = 2;
                    PierceProjModifier pierceProjModifier = projectile.gameObject.AddComponent <PierceProjModifier>();
                    pierceProjModifier.penetration = 1;
                }
            }
            for (float f = 0; f < UnityEngine.Random.Range(6f, 8f); f++)
            {
                GameObject gameObject3 = SpawnManager.SpawnProjectile(projectile2.gameObject, projectile.sprite.WorldCenter, Quaternion.Euler(0f, 0f, (float)UnityEngine.Random.Range(0, 359)), true);
                Projectile component   = gameObject3.GetComponent <Projectile>();
                if (component)
                {
                    component.SpawnedFromOtherPlayerProjectile = true;
                    component.Owner                     = playerController;
                    component.Shooter                   = playerController.specRigidbody;
                    component.baseData.speed            = 17f;
                    component.baseData.damage          *= 1.6f;
                    component.AdditionalScaleMultiplier = 1.65f;
                    component.baseData.range           *= 0.25f;
                    BounceProjModifier bounceProjModifier3 = component.gameObject.AddComponent <BounceProjModifier>();
                    bounceProjModifier3.numberOfBounces = 2;
                    PierceProjModifier pierceProjModifier2 = projectile.gameObject.AddComponent <PierceProjModifier>();
                    pierceProjModifier2.penetration = 1;
                }
            }
        }
Ejemplo n.º 15
0
        public static void Init()
        {
            string     itemName     = "Honey Pot";
            string     resourceName = "NevernamedsItems/Resources/honeypot_icon";
            GameObject obj          = new GameObject(itemName);
            var        item         = obj.AddComponent <HoneyPot>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "A Little Something";
            string longDesc  = "A handy, throwable pot of sticky honey." + "\n\nSome Gundead tell whispers of buzzing coming from the Oubliette...";

            ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn");
            ItemBuilder.SetCooldownType(item, ItemBuilder.CooldownType.Damage, 250);

            item.consumable = false;
            item.quality    = ItemQuality.D;

            PotProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]);
            PotProjectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(PotProjectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(PotProjectile);
            PotProjectile.baseData.damage        *= 0f;
            PotProjectile.baseData.speed         *= 0.5f;
            PotProjectile.baseData.range         *= 0.5f;
            PotProjectile.collidesWithEnemies     = false;
            PotProjectile.collidesWithPlayer      = false;
            PotProjectile.collidesWithProjectiles = false;
            PotProjectile.pierceMinorBreakables   = true;
            PierceProjModifier keepComponent = PotProjectile.gameObject.GetOrAddComponent <PierceProjModifier>();

            keepComponent.penetratesBreakables = true;
            keepComponent.penetration         += 100;
            BounceProjModifier Bouncing = PotProjectile.gameObject.GetOrAddComponent <BounceProjModifier>();

            Bouncing.numberOfBounces += 100;

            PotProjectile.AnimateProjectile(new List <string> {
                "honeypotproj_1",
                "honeypotproj_2",
                "honeypotproj_3",
                "honeypotproj_4",
            }, 8, true, new List <IntVector2> {
                new IntVector2(19, 16), //1
                new IntVector2(16, 19), //2
                new IntVector2(19, 16), //3
                new IntVector2(16, 19), //4
            }, AnimateBullet.ConstructListOfSameValues(false, 4), AnimateBullet.ConstructListOfSameValues(tk2dBaseSprite.Anchor.MiddleCenter, 4),
                                            AnimateBullet.ConstructListOfSameValues(true, 4),
                                            AnimateBullet.ConstructListOfSameValues(false, 4),
                                            AnimateBullet.ConstructListOfSameValues <Vector3?>(null, 4),
                                            new List <IntVector2?> {
                new IntVector2(14, 14), //1
                new IntVector2(14, 14), //2
                new IntVector2(14, 14), //3
                new IntVector2(14, 14), //3
            },
                                            AnimateBullet.ConstructListOfSameValues <IntVector2?>(null, 4),
                                            AnimateBullet.ConstructListOfSameValues <Projectile>(null, 4));
        }
Ejemplo n.º 16
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Grenade Shotgun", "grenadeshotgun");

            Game.Items.Rename("outdated_gun_mods:grenade_shotgun", "nn:grenade_shotgun");
            gun.gameObject.AddComponent <GrenadeShotgun>();
            gun.SetShortDescription("Sit Down");
            gun.SetLongDescription("The product of combining two of the most entertaining classes of weaponry- Shotguns, and the ones that explode.");

            gun.SetupSprite(null, "grenadeshotgun_idle_001", 8);

            gun.SetAnimationFPS(gun.shootAnimation, 13);

            for (int i = 0; i < 4; i++)
            {
                gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(19) as Gun, true, false);
            }

            //GUN STATS
            foreach (ProjectileModule mod in gun.Volley.projectiles)
            {
                mod.ammoCost            = 1;
                mod.shootStyle          = ProjectileModule.ShootStyle.SemiAutomatic;
                mod.sequenceStyle       = ProjectileModule.ProjectileSequenceStyle.Random;
                mod.cooldownTime        = 1f;
                mod.angleVariance       = 15f;
                mod.numberOfShotsInClip = 1;
                Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(mod.projectiles[0]);
                mod.projectiles[0] = projectile;
                projectile.gameObject.SetActive(false);
                FakePrefab.MarkAsFakePrefab(projectile.gameObject);
                UnityEngine.Object.DontDestroyOnLoad(projectile);
                projectile.baseData.range = 7;
                BounceProjModifier Bouncing = projectile.gameObject.GetOrAddComponent <BounceProjModifier>();
                Bouncing.numberOfBounces = 1;
                if (mod != gun.DefaultModule)
                {
                    mod.ammoCost = 0;
                }
                projectile.transform.parent = gun.barrelOffset;
            }

            gun.reloadTime = 2f;
            gun.barrelOffset.transform.localPosition = new Vector3(2.18f, 0.68f, 0f);
            gun.SetBaseMaxAmmo(40);
            gun.gunClass           = GunClass.EXPLOSIVE;
            gun.gunSwitchGroup     = (PickupObjectDatabase.GetById(150) as Gun).gunSwitchGroup;
            gun.muzzleFlashEffects = (PickupObjectDatabase.GetById(37) as Gun).muzzleFlashEffects;

            gun.quality = PickupObject.ItemQuality.A;
            ETGMod.Databases.Items.Add(gun, null, "ANY");

            gun.Volley.UsesShotgunStyleVelocityRandomizer = true;
            gun.AddToSubShop(ItemBuilder.ShopType.Trorc);

            GrenadeShotgunID = gun.PickupObjectId;
            gun.SetupUnlockOnCustomFlag(CustomDungeonFlags.PURCHASED_GRENADESHOTGUN, true);
            gun.AddItemToTrorcMetaShop(40);
        }
        private void BounceTowardsPlayer(BounceProjModifier bouncer, SpeculativeRigidbody body)
        {
            Projectile proj = bouncer.GetComponent <Projectile>();

            proj.baseData.speed = 0f;
            proj.UpdateSpeed();
            bouncer.OnBounceContext -= this.BounceTowardsPlayer;
        }
 private void OnBounced(BounceProjModifier bouncer, SpeculativeRigidbody srb)
 {
     if (bouncer && bouncer.specRigidbody && bouncer.projectile && bouncer.projectile.Owner && bouncer.projectile.Owner.specRigidbody)
     {
         Vector2 directionToPlayer = bouncer.projectile.Owner.specRigidbody.UnitCenter - bouncer.specRigidbody.UnitCenter;
         bouncer.projectile.SendInDirection(directionToPlayer, false);
     }
 }
        private void Start()
        {
            self = base.GetComponent <Projectile>();
            BounceProjModifier bouncy = self.gameObject.GetOrAddComponent <BounceProjModifier>();

            bouncy.numberOfBounces += 5;
            bouncy.OnBounceContext += this.OnBounced;
        }
Ejemplo n.º 20
0
        private void staff2(Projectile sourceProjectile, SpeculativeRigidbody hitRigidbody, bool fatal)
        {
            bool flag1 = fatal;

            if (flag1)
            {
                PlayerController playerController1 = this.gun.CurrentOwner as PlayerController;
                for (int counter = 0; counter < UnityEngine.Random.Range(2f, 4f); counter++)
                {
                    PlayerController playerController = this.gun.CurrentOwner as PlayerController;
                    Projectile       projectile1      = ((Gun)ETGMod.Databases.Items[385]).DefaultModule.projectiles[0];
                    GameObject       gameObject       = SpawnManager.SpawnProjectile(sourceProjectile.gameObject, sourceProjectile.sprite.WorldCenter, Quaternion.Euler(0f, 0f, UnityEngine.Random.Range(0, 359)));
                    Projectile       component        = gameObject.GetComponent <Projectile>();
                    bool             flag             = component != null;
                    bool             flag2            = flag;
                    if (flag2)
                    {
                        component.SpawnedFromOtherPlayerProjectile = true;
                        component.Shooter                   = this.gun.CurrentOwner.specRigidbody;
                        component.Owner                     = playerController;
                        component.Shooter                   = playerController.specRigidbody;
                        component.baseData.speed            = 11.5f;
                        component.baseData.damage           = .7f;
                        component.AdditionalScaleMultiplier = 0.5f;
                        component.AdjustPlayerProjectileTint(Color.blue.WithAlpha(Color.blue.a / 50f), 50, 0f);
                        HomingModifier homing = sourceProjectile.gameObject.AddComponent <HomingModifier>();
                        homing.HomingRadius    = 60f;
                        homing.AngularVelocity = 300;
                        component.SetOwnerSafe(this.gun.CurrentOwner, "Player");
                        component.ignoreDamageCaps = true;
                    }
                }
                for (int counter = 0; counter < UnityEngine.Random.Range(1f, 3f); counter++)
                {
                    PlayerController playerController = this.gun.CurrentOwner as PlayerController;
                    Projectile       projectile1      = ((Gun)ETGMod.Databases.Items[377]).DefaultModule.projectiles[0];
                    GameObject       gameObject       = SpawnManager.SpawnProjectile(sourceProjectile.gameObject, sourceProjectile.sprite.WorldCenter, Quaternion.Euler(0f, 0f, UnityEngine.Random.Range(0, 359)));
                    Projectile       component        = gameObject.GetComponent <Projectile>();
                    bool             flag             = component != null;
                    bool             flag2            = flag;
                    if (flag2)
                    {
                        component.SpawnedFromOtherPlayerProjectile = true;
                        component.Shooter                   = this.gun.CurrentOwner.specRigidbody;
                        component.Owner                     = playerController;
                        component.Shooter                   = playerController.specRigidbody;
                        component.baseData.speed            = 40.5f;
                        component.baseData.damage           = 1.4f;
                        component.AdditionalScaleMultiplier = 1.1f;
                        component.AdjustPlayerProjectileTint(Color.blue.WithAlpha(Color.blue.a / 50f), 50, 0f);
                        BounceProjModifier bouncy = component.gameObject.AddComponent <BounceProjModifier>();
                        bouncy.numberOfBounces = 4;
                        component.SetOwnerSafe(this.gun.CurrentOwner, "Player");
                        component.ignoreDamageCaps = true;
                    }
                }
            }
        }
Ejemplo n.º 21
0
        // Token: 0x0600013F RID: 319 RVA: 0x0000D468 File Offset: 0x0000B668
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Cube Of Tungsten", "tungstencube");

            Game.Items.Rename("outdated_gun_mods:cube_of_tungsten", "bny:cube_of_tungsten");
            gun.gameObject.AddComponent <TungstenCube>();
            GunExt.SetShortDescription(gun, "THE CUBE");
            GunExt.SetLongDescription(gun, "A large cube of tungsten, perfect for chucking at your enemies!");
            GunExt.SetupSprite(gun, null, "tungstencube_idle_001", 8);
            GunExt.SetAnimationFPS(gun, gun.shootAnimation, 20);
            GunExt.SetAnimationFPS(gun, gun.reloadAnimation, 3);
            GunExt.SetAnimationFPS(gun, gun.chargeAnimation, 7);
            GunExt.AddProjectileModuleFrom(gun, PickupObjectDatabase.GetById(8) as Gun, true, false);
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.Charged;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 1.9f;
            gun.DefaultModule.cooldownTime              = 1f;
            gun.DefaultModule.numberOfShotsInClip       = 1;
            gun.DefaultModule.preventFiringDuringCharge = true;
            gun.SetBaseMaxAmmo(200);
            gun.quality = PickupObject.ItemQuality.C;
            gun.encounterTrackable.EncounterGuid = "THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE THE CUBE ";
            ProjectileModule.ChargeProjectile item = new ProjectileModule.ChargeProjectile();
            gun.DefaultModule.chargeProjectiles = new List <ProjectileModule.ChargeProjectile>
            {
                item
            };
            gun.DefaultModule.chargeProjectiles[0].ChargeTime     = 0.9f;
            gun.DefaultModule.chargeProjectiles[0].UsedProperties = ((Gun)ETGMod.Databases.Items[8]).DefaultModule.chargeProjectiles[0].UsedProperties;
            gun.DefaultModule.chargeProjectiles[0].VfxPool        = ((Gun)ETGMod.Databases.Items[8]).DefaultModule.chargeProjectiles[0].VfxPool;
            gun.DefaultModule.chargeProjectiles[0].VfxPool.type   = ((Gun)ETGMod.Databases.Items[8]).DefaultModule.chargeProjectiles[0].VfxPool.type;
            ProjectileModule.ChargeProjectile chargeProjectile = gun.DefaultModule.chargeProjectiles[0];
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(((Gun)ETGMod.Databases.Items[8]).DefaultModule.chargeProjectiles[0].Projectile);

            chargeProjectile.Projectile = projectile;
            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            gun.DefaultModule.projectiles[0] = projectile;
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.chargeAnimation).wrapMode  = tk2dSpriteAnimationClip.WrapMode.LoopSection;
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.chargeAnimation).loopStart = 3;
            projectile.transform.parent = gun.barrelOffset;
            projectile.baseData.damage  = 30f;
            projectile.baseData.range   = 50f;
            projectile.baseData.force   = 350f;
            projectile.shouldRotate     = true;
            BounceProjModifier bouncy = projectile.gameObject.AddComponent <BounceProjModifier>();

            bouncy.numberOfBounces = 0;
            PierceProjModifier spook = projectile.gameObject.AddComponent <PierceProjModifier>();

            spook.penetration = 1;
            projectile.SetProjectileSpriteRight("tungstencube_projectile_001", 17, 16, true, tk2dBaseSprite.Anchor.MiddleCenter, new int?(11), new int?(5), null, null, null);
            gun.AddToSubShop(ItemBuilder.ShopType.Trorc, 1f);
            gun.AddToSubShop(ItemBuilder.ShopType.Cursula, 1f);
            ETGMod.Databases.Items.Add(gun, null, "ANY");
        }
Ejemplo n.º 22
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Lantaka", "lantaka");

            Game.Items.Rename("outdated_gun_mods:lantaka", "nn:lantaka");
            gun.gameObject.AddComponent <Lantaka>();
            gun.SetShortDescription("Head on a Swivel");
            gun.SetLongDescription("Used once upon a time by ships to protect against pirates, this ancient gun sat in the back room of a museum for many years until a daring heist saw it make it's way to the Gungeon.");

            gun.SetupSprite(null, "lantaka_idle_001", 8);

            gun.SetAnimationFPS(gun.shootAnimation, 15);
            gun.gunSwitchGroup     = (PickupObjectDatabase.GetById(49) as Gun).gunSwitchGroup;
            gun.muzzleFlashEffects = (PickupObjectDatabase.GetById(9) as Gun).muzzleFlashEffects;

            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false);

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.SemiAutomatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 1f;
            gun.DefaultModule.cooldownTime           = 1f;
            gun.DefaultModule.numberOfShotsInClip    = 1;
            gun.barrelOffset.transform.localPosition = new Vector3(2.56f, 0.81f, 0f);
            gun.SetBaseMaxAmmo(150);
            gun.gunClass = GunClass.RIFLE;
            //BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]);

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            gun.DefaultModule.projectiles[0]         = projectile;
            projectile.transform.parent              = gun.barrelOffset;
            projectile.baseData.speed               *= 2f;
            projectile.baseData.range               *= 2f;
            projectile.baseData.damage              *= 4f;
            projectile.BossDamageMultiplier         *= 1.5f;
            projectile.BlackPhantomDamageMultiplier *= 2f;
            PierceProjModifier Piercing = projectile.gameObject.GetOrAddComponent <PierceProjModifier>();

            Piercing.penetratesBreakables = true;
            Piercing.penetration         += 10;
            BounceProjModifier Bouncing = projectile.gameObject.GetOrAddComponent <BounceProjModifier>();

            Bouncing.numberOfBounces = 2;
            projectile.SetProjectileSpriteRight("lantaka_projectile", 15, 15, false, tk2dBaseSprite.Anchor.MiddleCenter, 14, 14);

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("Lantaka Bullets", "NevernamedsItems/Resources/CustomGunAmmoTypes/lantaka_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/lantaka_clipempty");

            gun.quality = PickupObject.ItemQuality.C;
            gun.encounterTrackable.EncounterGuid = "this is the Lantaka";
            ETGMod.Databases.Items.Add(gun, null, "ANY");

            LantakaID = gun.PickupObjectId;
        }
Ejemplo n.º 23
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Hand Mortar", "handmortar");

            Game.Items.Rename("outdated_gun_mods:hand_mortar", "nn:hand_mortar");
            gun.gameObject.AddComponent <HandMortar>();
            gun.SetShortDescription("Kingdom Come");
            gun.SetLongDescription("The classy and classical predecessor to the modern grenade launchers, some old grenadiers still swear by their effectiveness.");

            gun.SetupSprite(null, "handmortar_idle_001", 8);

            gun.SetAnimationFPS(gun.shootAnimation, 15);

            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false);

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.SemiAutomatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 2f;
            gun.DefaultModule.angleVariance          = 10;
            gun.DefaultModule.cooldownTime           = 1f;
            gun.DefaultModule.numberOfShotsInClip    = 3;
            gun.barrelOffset.transform.localPosition = new Vector3(2.81f, 1.0f, 0f);
            gun.SetBaseMaxAmmo(70);
            gun.gunClass = GunClass.EXPLOSIVE;
            //BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]);

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            gun.DefaultModule.projectiles[0] = projectile;
            projectile.baseData.damage      *= 6f;

            BounceProjModifier Bouncing = projectile.gameObject.GetOrAddComponent <BounceProjModifier>();

            Bouncing.numberOfBounces = 2;
            ExplosiveModifier explosiveModifier = projectile.gameObject.AddComponent <ExplosiveModifier>();

            explosiveModifier.doExplosion   = true;
            explosiveModifier.explosionData = HandMortarExplosion;
            projectile.baseData.speed      *= 0.6f;

            projectile.baseData.range  *= 0.8f;
            projectile.transform.parent = gun.barrelOffset;
            projectile.SetProjectileSpriteRight("handmortar_projectile", 8, 8, false, tk2dBaseSprite.Anchor.MiddleCenter, 8, 8);

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("HandMortar Bullets", "NevernamedsItems/Resources/CustomGunAmmoTypes/handmortar_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/handmortar_clipempty");

            gun.quality = PickupObject.ItemQuality.A;
            gun.encounterTrackable.EncounterGuid = "this is the Hand Mortar";
            ETGMod.Databases.Items.Add(gun, null, "ANY");

            ID = gun.PickupObjectId;
        }
Ejemplo n.º 24
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Hand Cannon", "handcannon");

            Game.Items.Rename("outdated_gun_mods:hand_cannon", "nn:hand_cannon");
            gun.gameObject.AddComponent <HandCannon>();
            gun.SetShortDescription("Protogun");
            gun.SetLongDescription("The earliest recorded type of real firearm. Though it is little more than a small cannon on a stick, it can spit some damaging shrapnel.");

            gun.SetupSprite(null, "handcannon_idle_001", 8);

            gun.SetAnimationFPS(gun.shootAnimation, 15);

            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false);

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.SemiAutomatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 2.5f;
            gun.DefaultModule.cooldownTime           = 1f;
            gun.muzzleFlashEffects.type              = VFXPoolType.None;
            gun.DefaultModule.numberOfShotsInClip    = 1;
            gun.barrelOffset.transform.localPosition = new Vector3(2.87f, 0.5f, 0f);
            gun.SetBaseMaxAmmo(190);
            gun.gunClass = GunClass.SHITTY;
            //BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]);

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            gun.DefaultModule.projectiles[0] = projectile;
            projectile.baseData.damage      *= 7f;
            PierceProjModifier Piercing = projectile.gameObject.GetOrAddComponent <PierceProjModifier>();

            Piercing.penetratesBreakables = true;
            Piercing.penetration         += 10;
            BounceProjModifier Bouncing = projectile.gameObject.GetOrAddComponent <BounceProjModifier>();

            Bouncing.numberOfBounces    = 10;
            projectile.baseData.range  *= 0.5f;
            projectile.transform.parent = gun.barrelOffset;
            projectile.SetProjectileSpriteRight("handcannon_projectile", 17, 15, false, tk2dBaseSprite.Anchor.MiddleCenter, 15, 13);

            projectile.hitEffects.overrideMidairDeathVFX = (PickupObjectDatabase.GetById(37) as Gun).DefaultModule.chargeProjectiles[0].Projectile.hitEffects.overrideMidairDeathVFX;
            projectile.hitEffects.alwaysUseMidair        = true;

            gun.DefaultModule.ammoType       = GameUIAmmoType.AmmoType.CUSTOM;
            gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("HandCannon Bullets", "NevernamedsItems/Resources/CustomGunAmmoTypes/handcannon_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/handcannon_clipempty");
            gun.muzzleFlashEffects           = (PickupObjectDatabase.GetById(53) as Gun).muzzleFlashEffects;
            gun.quality = PickupObject.ItemQuality.D;
            gun.encounterTrackable.EncounterGuid = "this is the Hand Cannon";
            ETGMod.Databases.Items.Add(gun, null, "ANY");
            HandCannonID = gun.PickupObjectId;
        }
Ejemplo n.º 25
0
        public override void OnPostFired(PlayerController player, Gun gun)
        {
            AkSoundEngine.PostEvent("Stop_WPN_All", base.gameObject);
            gun.PreventNormalFireAudio = true;
            AkSoundEngine.PostEvent("Play_BOSS_agunim_move_01", base.gameObject);
            targetPoint = player.unadjustedAimPoint;
            if (shotcountcontroller == 1)
            {
                Projectile         projectile1 = ((Gun)ETGMod.Databases.Items[9]).DefaultModule.projectiles[0];
                GameObject         gameObject1 = SpawnManager.SpawnProjectile(projectile1.gameObject, player.sprite.WorldCenter, Quaternion.Euler(0f, 0f, (player.CurrentGun == null) ? 0f : player.CurrentGun.CurrentAngle), true);
                Projectile         component1  = gameObject1.GetComponent <Projectile>();
                BounceProjModifier bounce      = component1.GetComponent <BounceProjModifier>();
                bounce.chanceToDieOnBounce = 0;
                bounce.numberOfBounces     = 6;
                PierceProjModifier stab = component1.GetComponent <PierceProjModifier>();
                stab.MaxBossImpacts = 4;
                stab.penetration    = 6;


                bool flag = component1 != null;
                if (flag)
                {
                    component1.Owner                     = player;
                    component1.Shooter                   = player.specRigidbody;
                    component1.baseData.speed            = 10f;
                    component1.baseData.range           *= 1f;
                    component1.baseData.damage           = 12f;
                    component1.angularVelocity           = 1000f;
                    component1.projectileHitHealth       = 50;
                    component1.collidesWithProjectiles   = true;
                    component1.AdditionalScaleMultiplier = 1.2f;
                    component1.pierceMinorBreakables     = true;
                    component1.HasDefaultTint            = true;
                    component1.DefaultTintColor          = UnityEngine.Color.cyan;
                }
                current_ball        = component1;
                shotcountcontroller = 0;
                Material outline = SpriteOutlineManager.GetOutlineMaterial(gun.sprite);
                outline.SetColor("_OverrideColor", new Color(63f, 236f, 165f));
            }
            else
            {
                Vector2 vector = current_ball.sprite.WorldCenter;
                Vector2 Aim    = player.unadjustedAimPoint;
                current_ball.SendInDirection(Aim - vector, false, true);

                foreach (var projectile in GetBullets())
                {
                    projectile.baseData.speed  = projectile.baseData.speed + 5;
                    projectile.baseData.damage = projectile.baseData.damage * 1.75f;
                    projectile.angularVelocity = projectile.angularVelocity * -1;
                    projectile.Update();
                    projectile.UpdateSpeed();
                }
            }
        }
Ejemplo n.º 26
0
        private void OnProjBounced(BounceProjModifier projModifier, SpeculativeRigidbody other)
        {
            Projectile proj = projModifier.GetComponent <Projectile>();

            if (projModifier.numberOfBounces == 0)
            {
                DoProjectileMods(proj);
            }
            //code a thing that checks if the bounce is the last one the projectile has, and if yes, send the projectile back to the player, ignoring tile collisions and also peircing enemies on the way back.
        }
Ejemplo n.º 27
0
        public override void PostProcessProjectile(Projectile projectile)
        {
            base.PostProcessProjectile(projectile);
            BounceProjModifier bounce = projectile.gameObject.GetOrAddComponent <BounceProjModifier>();

            bounce.OnBounceContext += OnProjBounced;

            projectile.OnHitEnemy += OnHitEnemy;
            projectile.specRigidbody.OnRigidbodyCollision += OnRigidbodyCollision;
        }
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Starter Pistol", "starterpistol");

            Game.Items.Rename("outdated_gun_mods:starter_pistol", "nn:starter_pistol");
            gun.gameObject.AddComponent <StarterPistol>();
            gun.SetShortDescription("Ready... Set...");
            gun.SetLongDescription("Designed to signal the start of races, this flimsy plastic gun is cheap to fire and at least delivers a sonic payload.");

            gun.SetupSprite(null, "starterpistol_idle_001", 8);

            gun.SetAnimationFPS(gun.shootAnimation, 16);

            gun.gunSwitchGroup = (PickupObjectDatabase.GetById(51) as Gun).gunSwitchGroup;
            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(56) as Gun, true, false);

            //GUN STATS
            gun.DefaultModule.ammoCost      = 1;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.SemiAutomatic;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 0.4f;
            gun.DefaultModule.cooldownTime        = 0.1f;
            gun.DefaultModule.angleVariance       = 5;
            gun.DefaultModule.numberOfShotsInClip = 1;
            gun.muzzleFlashEffects = (PickupObjectDatabase.GetById(37) as Gun).muzzleFlashEffects;
            gun.barrelOffset.transform.localPosition = new Vector3(1.12f, 0.68f, 0f);
            gun.SetBaseMaxAmmo(200);
            gun.InfiniteAmmo = true;
            gun.ammo         = 200;
            gun.gunClass     = GunClass.PISTOL;
            //BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]);

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            projectile.SetProjectileSpriteRight("starterpistol_proj", 6, 17, true, tk2dBaseSprite.Anchor.MiddleCenter, 2, 13);
            projectile.hitEffects.alwaysUseMidair        = true;
            projectile.hitEffects.overrideMidairDeathVFX = EasyVFXDatabase.YellowLaserCircleVFX;
            projectile.baseData.damage = 5;
            projectile.baseData.force  = 100;
            projectile.baseData.range  = 100;
            projectile.baseData.speed  = 40;
            BounceProjModifier bounce = projectile.gameObject.GetOrAddComponent <BounceProjModifier>();

            bounce.damageMultiplierOnBounce = 2;
            bounce.numberOfBounces++;

            gun.DefaultModule.projectiles[0] = projectile;

            gun.quality = PickupObject.ItemQuality.D;
            ETGMod.Databases.Items.Add(gun, null, "ANY");

            StarterPistolID = gun.PickupObjectId;
        }
Ejemplo n.º 29
0
            // Token: 0x06000120 RID: 288 RVA: 0x0000AC74 File Offset: 0x00008E74
            private void Attack()
            {
                bool flag = this.Owner == null;

                if (flag)
                {
                    this.Owner = this.m_aiActor.GetComponent <PointZero.PointZeroBehaviour>().Owner;
                }
                float num = -1f;

                List <AIActor> activeEnemies = this.Owner.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All);
                bool           flag2         = activeEnemies == null | activeEnemies.Count <= 0;

                if (!flag2)
                {
                    AIActor nearestEnemy = this.GetNearestEnemy(activeEnemies, this.m_aiActor.sprite.WorldCenter, out num, null);
                    bool    flag3        = nearestEnemy && num < 10f;
                    if (flag3)
                    {
                        bool flag4 = this.IsInRange(nearestEnemy);
                        if (flag4)
                        {
                            bool flag5 = !nearestEnemy.IsHarmlessEnemy && nearestEnemy.IsNormalEnemy && !nearestEnemy.healthHaver.IsDead && nearestEnemy != this.m_aiActor;
                            if (flag5)
                            {
                                Vector2        unitCenter  = this.m_aiActor.specRigidbody.UnitCenter;
                                Vector2        unitCenter2 = nearestEnemy.specRigidbody.HitboxPixelCollider.UnitCenter;
                                float          z           = BraveMathCollege.Atan2Degrees((unitCenter2 - unitCenter).normalized);
                                Projectile     projectile  = ((Gun)ETGMod.Databases.Items[576]).DefaultModule.projectiles[0];
                                GameObject     gameObject  = SpawnManager.SpawnProjectile(projectile.gameObject, this.m_aiActor.sprite.WorldCenter, Quaternion.Euler(0f, 0f, z + UnityEngine.Random.Range(-60, 60)), true);
                                Projectile     component   = gameObject.GetComponent <Projectile>();
                                HomingModifier homing      = component.gameObject.AddComponent <HomingModifier>();
                                homing.HomingRadius    = 300;
                                homing.AngularVelocity = 300;
                                PierceProjModifier spook = component.gameObject.AddComponent <PierceProjModifier>();
                                spook.penetration = 10;
                                BounceProjModifier bouncy = component.gameObject.AddComponent <BounceProjModifier>();
                                bouncy.numberOfBounces = 10;
                                bool flag6 = component != null;
                                bool flag7 = flag6;
                                if (flag7)
                                {
                                    {
                                        component.baseData.damage = 4f;
                                    }

                                    component.baseData.force     = .5f;
                                    component.collidesWithPlayer = false;
                                }
                            }
                        }
                    }
                }
            }
Ejemplo n.º 30
0
 public override void PostProcessProjectile(Projectile projectile)
 {
     base.PostProcessProjectile(projectile);
     projectile.baseData.damage *= damageBoost;
     if (projectile.gameObject.GetComponent <BounceProjModifier>() != null)
     {
         BounceProjModifier boing = projectile.GetComponent <BounceProjModifier>();
         projectile.ChangeTintColorShader(0f, BraveUtility.GetRainbowColor(boing.numberOfBounces));
         boing.OnBounceContext += this.OnBounce;
     }
 }