@WsAction(
     id = "rand_attack",
     name = "무작위 하수인 피해(치료)",
     params = {"횟수", "값"},
     targetOption = TargetOption.All)
 public VitalAction(String targetResolve, String repeat, String damage) {
   this.targetResolve = TargetResolve.valueOf(targetResolve);
   this.repeat = new FixedValue(Integer.parseInt(repeat));
   this.amount = new FixedValue(Integer.parseInt(damage));
 }
 @WsAction(
     id = "rand_amount_attack",
     name = "무작위 하수인 피해(치료)",
     params = {"최소 횟수", "최대 횟수", "최소 값", "최대 값"},
     targetOption = TargetOption.All)
 public VitalAction(
     String targetResolve,
     String minRepeat,
     String maxRepeat,
     String minDamage,
     String maxDamage) {
   this.targetResolve = TargetResolve.valueOf(targetResolve);
   this.repeat = new RangeValue(Integer.parseInt(minRepeat), Integer.parseInt(maxRepeat));
   this.amount = new RangeValue(Integer.parseInt(minDamage), Integer.parseInt(maxDamage));
 }
 @Override
 public void act(Player player) {
   for (int i = 0; i < repeat.getValue(); i++) randAction(targetResolve.resolve(player));
 }
 @Override
 public boolean able(Player player) {
   return targetResolve.resolve(player).size() != 0;
 }