@Override
 public String receive(Combat c, int damage, Result modifier, Character target) {
   if (modifier == Result.miss) {
     return String.format(
         "%s tries to yank off %s %s, but %s %s to hang onto it.",
         getSelf().subject(),
         target.nameOrPossessivePronoun(),
         stripped.getName(),
         target.pronoun(),
         target.action("manage"));
   } else {
     String msg =
         String.format(
             "%s grabs a hold of %s %s and yanks it off before %s can stop %s.",
             getSelf().subject(),
             target.nameOrPossessivePronoun(),
             stripped.getName(),
             target.pronoun(),
             getSelf().directObject());
     if (modifier == Result.critical && extra != null) {
       msg +=
           String.format(
               " Before %s can react, %s also strips off %s %s!",
               target.subject(), getSelf().name, target.possessivePronoun(), extra.getName());
     }
     return msg;
   }
 }
 @Override
 public String deal(Combat c, int damage, Result modifier, Character target) {
   if (modifier == Result.miss) {
     return "You attempt to strip off "
         + target.name()
         + "'s "
         + stripped.getName()
         + ", but she shoves you away.";
   } else {
     String msg =
         "After a brief struggle, you manage to pull off "
             + target.name()
             + "'s "
             + stripped.getName()
             + ".";
     if (modifier == Result.critical && extra != null) {
       msg +=
           String.format(
               " Taking advantage of the situation, you also" + " manage to snag %s %s!",
               target.possessivePronoun(), extra.getName());
     }
     return msg;
   }
 }