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); }
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); } }