showDeactivatedModifier(modifier, action) {
    let showDuration = 0.0;

    if (modifier != null) {
      const notShowingForRemoval = action == null || action.getMatchingAncestorAction(SDK.RemoveAction, null, this.getSdkCard()) == null;

      // show changes as long as not for removal
      if (notShowingForRemoval && this.canShowModifier(modifier, action)) {
        showDuration += this.showModifierChanges(modifier, action, true);
      }

      // wait for resources to load
      Promise.all([
        this.loadModifierResources(modifier),
        this.whenResourcesReady(this.getCardResourceRequestId()),
      ]).spread((modifierIndex, cardResourceRequestId) => {
        // ensure that resources are valid
        // no need to check modifier resources because we're just removing
        if (!this.getAreResourcesValid(cardResourceRequestId)) return;

        // remove modifier cardFXResource from sdkCard
        const cardFXResource = modifier.getCardFXResource();
        if (cardFXResource) {
          this.sdkCard.removeFXResource(cardFXResource);
        }

        // remove continuous fx from modifier
        const stackType = modifier.getStackType();
        if (this.getSdkCard().getNumActiveModifiersOfStackType(stackType) === 0) {
          this.removeContinuousFX(modifier.getStackType(), CONFIG.FADE_MEDIUM_DURATION);
        }

        // remove continuous fx from artifact
        if (modifier.getIsFromArtifact()) {
          const artifactStackType = modifier.getArtifactStackType();
          if (this.getSdkCard().getNumActiveModifiersOfArtifactStackType(artifactStackType) === 0) {
            this.removeContinuousFX(artifactStackType, CONFIG.FADE_MEDIUM_DURATION);
          }
        }

        // only update animation resources if we can still change state and this is not a result of a removal action
        // otherwise, this entity is in the process of removing itself and will clean up afterwards
        if (notShowingForRemoval && this.canShowModifier(modifier, action)) {
          // update resources
          if (modifier.getAnimResource() != null) {
            this.updateAnimResource();
          }
          if (modifier.getSoundResource() != null) {
            this.updateSoundResource();
          }
        }
      });
    }

    return showDuration;
  }
Shows a modifier being deactivated.
@param {SDK.Modifier} modifier
@param {SDK.Action} action
@returns {Number} show duration