Pre-release
AdventureJS Docs Downloads Devlog
Score: 0 Moves: 0
//modifyClass.js
(function () {
  /* global AdventureJS A */

  var p = AdventureJS.Game.prototype;

  /**
   * A method to modify a built-in asset class.
   * @memberOf AdventureJS.Game
   * @method AdventureJS.Game#modifyClass
   * @kind function
   * @param {Object} data A generic object with properties to copy into a new class definition.
   * @param {String} data.extends The name of a parent class to subclass.
   * @param {String} data.class The name of the new subclass.
   * @returns {Object}
   */
  p.modifyClass = function Game_modifyClass(data = {}) {
    const ModifyClass =
      AdventureJS[data.class] ||
      AdventureJS.Assets[data.class] ||
      AdventureJS.Helpers[data.class] ||
      AdventureJS.Traits[data.class];
    if (!ModifyClass) {
      return null;
    }
    delete data.class;

    A.FX.deepSet.call(this.game, data, ModifyClass);
  };
})();