showDurabilityChange(durabilityChange, showDelay, completionCallback) {
    let showDuration = 0.0;
    if (showDelay == null) { showDelay = 0.0; }

    if (durabilityChange !== 0 && !this.getIsEmpty()) {
      // set durability to current durability target
      // this ensures the visual display of durability is correct
      // even when this method is called again before the animations complete
      this.setDurability(this._durabilityTarget);

      const durability = this.getDurability();
      const durabilityTarget = durability + durabilityChange;
      if (durability > 0 && durabilityTarget > -1) {
        // store durability target
        this._durabilityTarget = durability + durabilityChange;

        // stop any running animations
        this.stopAnimations();

        // get animation data
        let animationAction;
        let animationDuration;
        if (durabilityChange < 0) {
          // get hit fx animation
          animationAction = UtilsEngine.getAnimationAction(RSX.fxArtifactHit.name);
          animationDuration = animationAction.getDuration() * 0.75;
        } else {
          // TODO: get repair fx animation
          animationDuration = 0.0;
        }

        // set show duration
        showDuration += animationDuration;

        if (durabilityChange < 0) {
          // show hit fx
          const fxAnimationAction = cc.sequence(
            cc.delayTime(showDelay),
            cc.show(),
            animationAction,
            cc.hide(),
          );
          this.addAnimationAction(fxAnimationAction);
          this._fxHitSprite.runAction(fxAnimationAction);
        } else {
          // TODO: show repair fx
        }

        // create change durability action
        const showDurabilityChangeAction = cc.sequence(
          cc.delayTime(showDelay + animationDuration),
          cc.callFunc(() => {
            this.setDurability(durabilityTarget);

            if (_.isFunction(completionCallback)) {
              completionCallback();
            }
          }),
        );

        // run change action
        this.addAnimationAction(showDurabilityChangeAction);
        this.runAction(showDurabilityChangeAction);
      }
    }

    return showDuration;
  }
Shows the animated damage of an artifact.
@param {Number} durabilityChange
@param {Number} [showDelay=0.0]
@param {Function} [completionCallback]
@returns {Number} duration of animation