public override string GetExplanationUnfinalized(StatRequest req, ToStringNumberSense numberSense) { ThingDef thingDef = req.Def as ThingDef; if (thingDef == null) { return(null); } List <VerbProperties> verbProps; List <Tool> tools; this.GetVerbsAndTools(thingDef, out verbProps, out tools); Pawn currentWeaponUser = StatWorker_MeleeAverageDPS.GetCurrentWeaponUser(req.Thing); IEnumerable <VerbUtility.VerbPropertiesWithSource> enumerable = from x in VerbUtility.GetAllVerbProperties(verbProps, tools) where x.verbProps.IsMeleeAttack select x; StringBuilder stringBuilder = new StringBuilder(); foreach (VerbUtility.VerbPropertiesWithSource current in enumerable) { float num = current.verbProps.AdjustedMeleeDamageAmount(current.tool, currentWeaponUser, req.Thing, null); float num2 = current.verbProps.AdjustedCooldown(current.tool, currentWeaponUser, req.Thing); if (current.tool != null) { stringBuilder.AppendLine(string.Format(" {0}: {1} ({2})", "Tool".Translate(), current.tool.LabelCap, current.ToolCapacity.defName)); } else { stringBuilder.AppendLine(string.Format(" {0}:", "StatsReport_NonToolAttack".Translate())); } stringBuilder.AppendLine(string.Format(" {0} {1}", num.ToString("F1"), "DamageLower".Translate())); stringBuilder.AppendLine(string.Format(" {0} {1}", num2.ToString("F2"), "SecondsPerAttackLower".Translate())); stringBuilder.AppendLine(); } return(stringBuilder.ToString()); }