public Projectile.Modifier GetProjectileModifier() { Projectile.Modifier result = default(Projectile.Modifier); result.damageOffset = ProjectileWeaponMod.Sum(this, (ProjectileWeaponMod x) => x.projectileDamage, (ProjectileWeaponMod.Modifier y) => y.offset, 0f); result.damageScale = ProjectileWeaponMod.Average(this, (ProjectileWeaponMod x) => x.projectileDamage, (ProjectileWeaponMod.Modifier y) => y.scalar, 1f) * GetDamageScale(); result.distanceOffset = ProjectileWeaponMod.Sum(this, (ProjectileWeaponMod x) => x.projectileDistance, (ProjectileWeaponMod.Modifier y) => y.offset, 0f); result.distanceScale = ProjectileWeaponMod.Average(this, (ProjectileWeaponMod x) => x.projectileDistance, (ProjectileWeaponMod.Modifier y) => y.scalar, 1f) * GetDistanceScale(); return(result); }
public Projectile.Modifier GetProjectileModifier() { Projectile.Modifier modifier = new Projectile.Modifier() { damageOffset = ProjectileWeaponMod.Sum(this, (ProjectileWeaponMod x) => x.projectileDamage, (ProjectileWeaponMod.Modifier y) => y.offset, 0f), damageScale = ProjectileWeaponMod.Average(this, (ProjectileWeaponMod x) => x.projectileDamage, (ProjectileWeaponMod.Modifier y) => y.scalar, 1f) * this.GetDamageScale(false), distanceOffset = ProjectileWeaponMod.Sum(this, (ProjectileWeaponMod x) => x.projectileDistance, (ProjectileWeaponMod.Modifier y) => y.offset, 0f), distanceScale = ProjectileWeaponMod.Average(this, (ProjectileWeaponMod x) => x.projectileDistance, (ProjectileWeaponMod.Modifier y) => y.scalar, 1f) * this.GetDistanceScale(false) }; return(modifier); }
static Modifier() { Projectile.Modifier modifier = new Projectile.Modifier() { damageScale = 1f, damageOffset = 0f, distanceScale = 1f, distanceOffset = 0f }; Projectile.Modifier.Default = modifier; }
public void CalculateDamage(HitInfo info, Projectile.Modifier mod, float scale) { float single = this.damageMultipliers.Lerp(mod.distanceOffset + mod.distanceScale * this.damageDistances.x, mod.distanceOffset + mod.distanceScale * this.damageDistances.y, info.ProjectileDistance); float single1 = scale * (mod.damageOffset + mod.damageScale * single); foreach (DamageTypeEntry damageType in this.damageTypes) { info.damageTypes.Add(damageType.type, damageType.amount * single1); } if (ConVar.Global.developer > 0) { Debug.Log(string.Concat(new object[] { " Projectile damage: ", info.damageTypes.Total(), " (scalar=", single1, ")" })); } }
public void CalculateDamage(HitInfo info, Projectile.Modifier mod, float scale) { float num1 = this.damageMultipliers.Lerp(mod.distanceOffset + mod.distanceScale * this.damageDistances.x, mod.distanceOffset + mod.distanceScale * this.damageDistances.y, info.ProjectileDistance); float num2 = scale * (mod.damageOffset + mod.damageScale * num1); foreach (DamageTypeEntry damageType in this.damageTypes) { info.damageTypes.Add(damageType.type, damageType.amount * num2); } if (Global.developer <= 0) { return; } Debug.Log((object)(" Projectile damage: " + (object)info.damageTypes.Total() + " (scalar=" + (object)num2 + ")")); }