|
- /*
- Example of a mount:
- {
- name: 'Brown Horse\'s Reins',
- type: 'mount',
- quality: 2,
- noDrop: true,
- noDestroy: true,
- noSalvage: true,
- cdMax: 10,
- sprite: [0, 9],
- spritesheet: 'images/questItems.png',
- useText: 'mount',
- description: 'Stout, dependable and at least faster than you',
- effects: [{
- type: 'mount',
- rolls: {
- speed: 150,
- cell: 5,
- sheetName: 'mobs'
- }
- }]
- }
- */
-
- module.exports = {
- name: 'Feature: Mounts',
-
- init: function () {
- this.events.on('onBeforeUseItem', this.onBeforeUseItem.bind(this));
- this.events.on('onBeforeGetEffect', this.onBeforeGetEffect.bind(this));
- },
-
- onBeforeUseItem: function (obj, item, result) {
- if (item.type !== 'mount')
- return;
-
- let syncer = obj.syncer;
-
- let currentEffect = obj.effects.removeEffectByName('mounted', true);
- if (currentEffect) {
- let currentItem = currentEffect.source;
- currentItem.useText = 'mount';
- currentItem.cdMax = 0;
-
- syncer.setArray(true, 'inventory', 'getItems', currentItem);
-
- if (currentItem === item)
- return;
- }
-
- let builtEffect = obj.effects.addEffect({
- type: 'mounted',
- ttl: -1
- });
- builtEffect.source = item;
-
- item.useText = 'unmount';
- syncer.setArray(true, 'inventory', 'getItems', item);
- },
-
- onBeforeGetEffect: function (result) {
- if (result.type.toLowerCase() === 'mounted')
- result.url = `${this.relativeFolderName}/effects/effectMounted.js`;
- }
- };
|