예제 #1
0
        private Projectile HandlePreFireProjectileModification(Gun sourceGun, Projectile sourceProjectile)
        {
            if (sourceGun.InfiniteAmmo || sourceGun.HasShootStyle(ProjectileModule.ShootStyle.Beam) || sourceGun.PickupObjectId == 504 || sourceGun.PickupObjectId == 251 || sourceGun.PickupObjectId == 695)
            {
                return(sourceProjectile);
            }
            if (Owner.HasPickupID(146))
            {
                ReplacementProjectile = ((Gun)ETGMod.Databases.Items[722]).DefaultModule.projectiles[0];
            }
            else
            {
                ReplacementProjectile = ((Gun)ETGMod.Databases.Items[336]).DefaultModule.projectiles[0];
            }

            ReplacementProjectile.Owner            = Owner;
            ReplacementProjectile.baseData.damage  = sourceProjectile.baseData.damage * 1.2f * Owner.stats.GetStatValue(PlayerStats.StatType.Damage);
            ReplacementProjectile.baseData.speed   = sourceProjectile.baseData.speed * Owner.stats.GetStatValue(PlayerStats.StatType.ProjectileSpeed);
            ReplacementProjectile.baseData.force   = sourceProjectile.baseData.force * Owner.stats.GetStatValue(PlayerStats.StatType.KnockbackMultiplier);
            ReplacementProjectile.damageTypes      = CoreDamageTypes.None;
            ReplacementProjectile.ignoreDamageCaps = sourceProjectile.ignoreDamageCaps;



            return(this.ReplacementProjectile);
        }
예제 #2
0
 private Projectile ReplacementProj(Gun sourceGun, Projectile sourceProj)
 {
     if (sourceGun.InfiniteAmmo || sourceGun.HasShootStyle(ProjectileModule.ShootStyle.Beam) || sourceGun.PickupObjectId == 504 || sourceGun.PickupObjectId == 251 || sourceGun.PickupObjectId == 695)
     {
         return(sourceProj);
     }
     else
     {
         float num = 1f / sourceGun.DefaultModule.cooldownTime;
         if (sourceGun.Volley != null)
         {
             float num2 = 0f;
             for (int i = 0; i < sourceGun.Volley.projectiles.Count; i++)
             {
                 ProjectileModule projectileModule = sourceGun.Volley.projectiles[i];
                 num2 += projectileModule.GetEstimatedShotsPerSecond(sourceGun.reloadTime);
             }
             if (num2 > 0f)
             {
                 num = num2;
             }
         }
         float chanceToProc = .5f;
         float num3         = Mathf.Clamp01(chanceToProc / num);
         num3 = Mathf.Max(0.0001f, num3);
         ETGModConsole.Log(num3.ToString());
         if (UnityEngine.Random.value > num3)
         {
             return(sourceProj);
         }
         Projectile newProj = SpearProj;
         newProj.baseData.range *= 10;
         StickyProjectile sticky = newProj.gameObject.AddComponent <StickyProjectile>();
         newProj.Owner           = Owner;
         newProj.Shooter         = Owner.specRigidbody;
         newProj.baseData.damage = sourceProj.baseData.damage * 2;
         newProj.baseData.speed  = sourceProj.baseData.speed * 1.5f;
         return(newProj);
     }
 }