ScoreForIntentSummon = function (card, targetPosition, cardIntents) {
  let score = 0;
  const cardId = card.getBaseCardId();

  if (card instanceof SDK.Unit) {
    score += ScoreForUnitSummon(card, targetPosition);
    if (score < THRESHOLD.PLAY_CARD) {
      score += THRESHOLD.PLAY_CARD;
    }
  }

  const validIntents = cardIntents != null ? CardIntent.filterIntentsByIntentType(cardIntents, CardIntentType.Summon) : CardIntent.getIntentsByIntentType(cardId, CardIntentType.Summon);
  _.each(validIntents, (intent) => {
    score += getScoreForSummonFromCardWithIntent(card, intent, targetPosition);
  });
  // a 1/1 unit is only going to have a summon score of 3 or 5 points,
  // well below the "useThreshold" of 15, which is really only appropriate for spells.
  // here we set a floor of 15 for all summon intents. The only way this will dip below the "useThreshold" of 15
  // is if it is a combo spell with another component scored NEGATIVELY (not just lowly, but in the negatives!)
  // there is such a thing as bad summons, like summoning a heartseeker near enemies...but as-is we always summon.
  return score;
}
Returns the Summon score for a card at a target position.
@param {Card} card
@param {Vec2} targetPosition
@param {Array} [cardIntents=null] forced card intents (won't use card's own card intents)
@returns {Number}
@static
@public