public static void Postfix(ref string __result, Thing target) { var selectedThing = Find.Selector.SingleSelectedThing; if (__result.NullOrEmpty() && selectedThing != null) { // Create CE Tooltip StringBuilder stringBuilder = new StringBuilder(); Verb_LaunchProjectileCE verbCE = null; Pawn pawn = selectedThing as Pawn; if (pawn != null && pawn != target && pawn.equipment != null && pawn.equipment.Primary != null && pawn.equipment.PrimaryEq.PrimaryVerb is Verb_LaunchProjectileCE) { verbCE = pawn.equipment.PrimaryEq.PrimaryVerb as Verb_LaunchProjectileCE; } Building_TurretGunCE turret = selectedThing as Building_TurretGunCE; if (turret != null && turret != target) { verbCE = turret.AttackVerb as Verb_LaunchProjectileCE; } if (verbCE != null) { stringBuilder.AppendLine(); stringBuilder.Append("ShotBy".Translate(selectedThing.LabelShort, selectedThing) + ":\n"); string obstructReport; if (verbCE.CanHitTarget(target, out obstructReport)) { ShiftVecReport report = verbCE.ShiftVecReportFor(target); stringBuilder.Append(report.GetTextReadout()); } else { stringBuilder.Append("CannotHit".Translate()); if (!obstructReport.NullOrEmpty()) { stringBuilder.Append(" " + obstructReport + "."); } } Pawn pawn2 = target as Pawn; if (pawn2 != null && pawn2.Faction == null && !pawn2.InAggroMentalState) { float manhunterOnDamageChance; if (verbCE.IsMeleeAttack) { manhunterOnDamageChance = PawnUtility.GetManhunterOnDamageChance(pawn2, 0f, selectedThing); } else { manhunterOnDamageChance = PawnUtility.GetManhunterOnDamageChance(pawn2, selectedThing); } if (manhunterOnDamageChance > 0f) { stringBuilder.AppendLine(); stringBuilder.AppendLine(string.Format("{0}: {1}", "ManhunterPerHit".Translate(), manhunterOnDamageChance.ToStringPercent())); } } } __result = stringBuilder.ToString(); } }
public static void Postfix(ref string __result, Thing target) { if (__result.NullOrEmpty() && Find.Selector.SingleSelectedThing != null) { // Create CE Tooltip StringBuilder stringBuilder = new StringBuilder(); Verb_LaunchProjectileCE verbCE = null; Pawn pawn = Find.Selector.SingleSelectedThing as Pawn; if (pawn != null && pawn != target && pawn.equipment != null && pawn.equipment.Primary != null && pawn.equipment.PrimaryEq.PrimaryVerb is Verb_LaunchProjectileCE) { verbCE = pawn.equipment.PrimaryEq.PrimaryVerb as Verb_LaunchProjectileCE; } Building_TurretGunCE turret = Find.Selector.SingleSelectedThing as Building_TurretGunCE; if (turret != null && turret != target) { verbCE = turret.AttackVerb as Verb_LaunchProjectileCE; } if (verbCE != null) { stringBuilder.AppendLine(); stringBuilder.Append("ShotBy".Translate(new object[] { Find.Selector.SingleSelectedThing.LabelShort }) + ":\n"); string obstructReport; if (verbCE.CanHitTarget(target, out obstructReport)) { ShiftVecReport report = verbCE.ShiftVecReportFor(target); stringBuilder.Append(report.GetTextReadout()); } else { stringBuilder.Append("CannotHit".Translate()); if (!obstructReport.NullOrEmpty()) { stringBuilder.Append(" " + obstructReport + "."); } } } __result = stringBuilder.ToString(); } }
internal static string ShotCalculationTipString(Thing target) { StringBuilder stringBuilder = new StringBuilder(); if (Find.Selector.SingleSelectedThing != null) { Verb verb = null; Verb_LaunchProjectileCE verbCE = null; Pawn pawn = Find.Selector.SingleSelectedThing as Pawn; if (pawn != null && pawn != target && pawn.equipment != null && pawn.equipment.Primary != null && pawn.equipment.PrimaryEq.PrimaryVerb is Verb_LaunchProjectile) { verb = pawn.equipment.PrimaryEq.PrimaryVerb; } Building_TurretGun building_TurretGun = Find.Selector.SingleSelectedThing as Building_TurretGun; if (building_TurretGun != null && building_TurretGun != target) { verb = building_TurretGun.AttackVerb; } if (verb != null) { stringBuilder.AppendLine(); stringBuilder.Append("ShotBy".Translate(new object[] { Find.Selector.SingleSelectedThing.LabelShort }) + ": "); if (verb.CanHitTarget(target)) { stringBuilder.Append(ShotReport.HitReportFor(verb.caster, verb, target).GetTextReadout()); } else { stringBuilder.Append("CannotHit".Translate()); } } // Append CE tooltip else { if (pawn != null && pawn != target && pawn.equipment != null && pawn.equipment.Primary != null && pawn.equipment.PrimaryEq.PrimaryVerb is Verb_LaunchProjectileCE) { verbCE = pawn.equipment.PrimaryEq.PrimaryVerb as Verb_LaunchProjectileCE; } Building_TurretGun building_TurretGun2 = Find.Selector.SingleSelectedThing as Building_TurretGun; if (building_TurretGun != null && building_TurretGun != target) { verbCE = building_TurretGun.AttackVerb as Verb_LaunchProjectileCE; } if (verbCE != null) { stringBuilder.AppendLine(); stringBuilder.Append("ShotBy".Translate(new object[] { pawn.LabelShort }) + ":\n"); if (verbCE.CanHitTarget(target)) { ShiftVecReport report = verbCE.ShiftVecReportFor(target); stringBuilder.Append(report.GetTextReadout()); } else { stringBuilder.Append("CannotHit".Translate()); } } } } return(stringBuilder.ToString()); }