public static float combatStrength(Actor actor, Actor enemy) {
    float strength = 0 ;
    strength += (actor.gear.armourRating() + actor.gear.attackDamage()) / 20f ;
    strength *= (1 + (actor.health.maxHealth() / 10)) / 2f ;
    strength *= (1 - actor.health.injuryLevel()) ;
    strength *= 1 - actor.health.stressPenalty() ;
    //
    //  Scale by general ranks in relevant skills-
    if (strengthVerbose) I.sayAbout(actor, "Native strength: "+strength) ;
    strength *= (2 +
      actor.traits.useLevel(HAND_TO_HAND) +
      actor.traits.useLevel(MARKSMANSHIP)
    ) / 20 ;
    strength *= (2 +
      actor.traits.useLevel(HAND_TO_HAND) +
      actor.traits.useLevel(STEALTH_AND_COVER)
    ) / 20 ;
    if (strengthVerbose) I.sayAbout(actor, "With skills: "+strength) ;
    //
    //  And if you're measuring combat against a specific adversary, scale by
    //  chance of victory-
    if (enemy != null) {
      final Skill attack, defend ;
      if (actor.gear.meleeWeapon()) {
        attack = defend = HAND_TO_HAND ;
      }
      else {
        attack = MARKSMANSHIP ;
        defend = STEALTH_AND_COVER ;
      }
      final float chance = actor.traits.chance(attack, enemy, defend, 0) ;
      if (strengthVerbose && I.talkAbout == enemy) {
        I.say("Chance to injure "+enemy+" is: "+chance) ;
        I.say("Native strength: "+strength) ;
      }
      strength *= 2 * chance ;
    }
    return strength ;
  }