@Override
	public StateBuffer executeInternal(StateBuffer sb, int minValue) {
		sb = new UnboundedSegment(new TextSegment(Move.A,false)).execute(sb); // player mon uses attack
		sb = new CheckMetricSegment(new CheckMoveDamage(isCrit, effectMiss, numEndTexts == 0, false, !player, ignoreDamage, thrashAdditionalTurns),GREATER_EQUAL,ignoreDamage ? 0 : minValue,player ? KillEnemyMonSegment.PLAYER_ATTRIBUTE : KillEnemyMonSegment.ENEMY_ATTRIBUTE).execute(sb);
		sb = new UnboundedSegment(new MoveSegment(new Wait(1), 0)).execute(sb); // skip last frame of text box

		for(int i=0;i<numEndTexts-1;i++) { // skip messages
			sb = new TextSegment().execute(sb); // critical hit! message
			sb = new MoveSegment(new PressButton(Move.B)).execute(sb); // close message
		}
		if(numEndTexts > 0) // skip last message if any
			sb = new TextSegment().execute(sb); // critical hit! or very/not effective message

		return sb;
	}