@Override
	public void executeInternal(int minValue) {
		seqUnbounded(new EflTextSegment(Move.A)); // player mon uses attack
//    System.out.println("EflHitMetricSegment: size=" + sb.size());
		seq(new CheckMetricSegment(new EflCheckMoveDamage(isCrit, effectMiss, 0, minDamage, maxDamage, false),GREATER_EQUAL, minDamage, null));
		if (numEndTexts == 0 && !noCheckAdditionalTexts) // check for additional texts
		  seqMetric(new StateResettingMetric() {
        @Override
        public int getMetricInternal() {
          EflUtil.runFor(5, 0, 0);
          return new EflCheckAdditionalTexts().getMetricInternal();
        }
      });

    seq(new EflSkipTextsSegment(numEndTexts - 1)); // skip critical hit! messages
		if(numEndTexts > 0) // skip last message if any
			seq(new EflTextSegment()); // critical hit! or very/not effective message

		seq(new Segment() {
      @Override
      public StateBuffer execute(StateBuffer sb) {
        for(State s : sb.getStates())
          s.setAttributeInt(player ? KillEnemyMonSegment.PLAYER_ATTRIBUTE : KillEnemyMonSegment.ENEMY_ATTRIBUTE, 0); // set 0 damage
        return sb;
      }
    });
	}