public static ProjectileModule AddProjectileModuleToRawVolleyFrom(this Gun gun, Gun other, bool cloned = true, bool clonedProjectiles = true) { ProjectileModule defaultModule = other.DefaultModule; if (!cloned) { return(gun.AddProjectileModuleToRawVolley(defaultModule)); } ProjectileModule projectileModule = ProjectileModule.CreateClone(defaultModule, false, -1); projectileModule.projectiles = new List <Projectile>(defaultModule.projectiles.Capacity); for (int i = 0; i < defaultModule.projectiles.Count; i++) { projectileModule.projectiles.Add((!clonedProjectiles) ? defaultModule.projectiles[i] : defaultModule.projectiles[i].ClonedPrefab()); } return(gun.AddProjectileModuleToRawVolley(projectileModule)); }