Pre-release
AdventureJS Docs Downloads Devlog
Score: 0 Moves: 0
// onMoveThisFromThat.js
(function () {
  /* global AdventureJS A */
  var p = AdventureJS.Assets.Entity.prototype;
  /**
   * Called when this asset is removed from another asset.
   * Provides opportunities to override default behavior
   * through the use of
   * <a href="/doc/Verbs_ReactionHooks.html">verb reactions</a>
   * doMoveThisFromThat and doMoveThatFromThis.
   * @memberOf AdventureJS.Assets.Entity
   * @method AdventureJS.Assets.Entity#onMoveThisFromThat
   * @param {Object} asset
   * @returns {Boolean}
   */
  p.onMoveThisFromThat = p.moveFrom = function Entity_onMoveThisFromThat(
    asset,
    quantity = 1
  ) {
    if ("string" === typeof asset) asset = this.game.getAsset(asset);
    if (!asset) return;
    this.game.log(
      "L1485",
      "log",
      "high",
      `[onMoveThisFromThat.js] remove ${this.id} from ${asset.id}`,
      "Entity"
    );
    var results;
    let destroyed = this.is.destroyed;

    // this may also have an ovveride when removed from that
    results = this.doVerbAction({
      action: "doMoveThisFromThat",
      target: asset,
      type: "VerbReaction",
    });
    if ("undefined" !== typeof results) return results;

    if (!destroyed && this.is.destroyed) return;

    // asset may have an override when this is removed
    // check receiving asset for verb hook
    results = asset.onMoveThatFromThis(asset, quantity);
    if ("undefined" !== typeof results) return results;

    if (!destroyed && this.is.destroyed) return;

    // bedrock - perform the removal - no overrides or qualifiers
    this.moveThisFromThat(asset);
    this.setPlace();

    return;
  };
})(); // onMoveThisFromThat.js