Bläddra i källkod

fixes #1389

tags/v0.4.4^2
Big Bad Waffle 4 år sedan
förälder
incheckning
014df8d556
6 ändrade filer med 6 tillägg och 111 borttagningar
  1. Binär
     
  2. Binär
     
  3. +4
    -0
      src/server/components/inventory.js
  4. +2
    -0
      src/server/components/inventory/getItem.js
  5. +0
    -33
      src/server/mods/pets/effects/effectPet.js
  6. +0
    -78
      src/server/mods/pets/index.js

Binär
Visa fil


Binär
Visa fil


+ 4
- 0
src/server/components/inventory.js Visa fil

@@ -5,6 +5,7 @@ let classes = require('../config/spirits');
let mtx = require('../mtx/mtx');
let factions = require('../config/factions');
let itemEffects = require('../items/itemEffects');
const events = require('../misc/events');

const { isItemStackable } = require('./inventory/helpers');
const transactions = require('../security/transactions');
@@ -404,6 +405,7 @@ module.exports = {
}

this.obj.fireEvent('afterDestroyItem', item, amount);
events.emit('afterPlayerDestroyItem', this.obj, item, amount);

return item;
},
@@ -439,6 +441,8 @@ module.exports = {
this.obj.syncer.setArray(true, 'inventory', 'destroyItems', id);

this.createBag(dropCell.x, dropCell.y, [item]);

events.emit('afterPlayerDropItem', this.obj, item);
},

moveItem: function (msgs) {


+ 2
- 0
src/server/components/inventory/getItem.js Visa fil

@@ -1,3 +1,4 @@
const events = require('../../misc/events');
const { isItemStackable } = require('./helpers');

const getNextId = items => {
@@ -16,6 +17,7 @@ const getNextId = items => {
module.exports = (cpnInv, item, hideMessage, noStack, hideAlert) => {
const obj = cpnInv.obj;
obj.instance.eventEmitter.emit('onBeforeGetItem', item, obj);
events.emit('beforePlayerGetItem', obj, item);

//We need to know if a mob dropped it for quest purposes
let fromMob = item.fromMob;


+ 0
- 33
src/server/mods/pets/effects/effectPet.js Visa fil

@@ -1,33 +0,0 @@
module.exports = {
type: 'pet',

pet: null,

init: function () {
},

simplify: function () {
return {
type: 'pet',
ttl: this.ttl
};
},

destroy: function () {
this.pet.destroyed = true;

this.source.useText = 'summon';
this.obj.syncer.setArray(true, 'inventory', 'getItems', this.source);
},

events: {
beforeCastSpell: function (castEvent) {
this.destroyed = true;
},

beforeTakeDamage: function (dmgEvent) {
this.destroyed = true;
}
}
};

+ 0
- 78
src/server/mods/pets/index.js Visa fil

@@ -1,78 +0,0 @@
/*
Example of a pet:
{
name: 'Red Macaw\'s Cage',
type: 'pet',
quality: 2,
noDrop: true,
noSalvage: true,
cdMax: 10,
sprite: [11, 9],
spritesheet: 'images/questItems.png',
petCell: 42,
petSheet: 'mobs',
petName: 'Red Macaw',
useText: 'summon',
description: 'Vibrant, majestic and bitey.'
}
*/

module.exports = {
name: 'Feature: Pets',

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 !== 'pet')
return;

let syncer = obj.syncer;

let blueprint = {
x: obj.x + 1,
y: obj.y,
cell: item.petCell,
sheetName: item.petSheet,
name: item.petName,
properties: {
cpnFollower: {
maxDistance: 2
},
cpnMob: {
walkDistance: 1
},
cpnSyncer: {},
cpnStats: {}
},
extraProperties: {
follower: {
master: obj
}
}
};

//Spawn a mob
let pet = obj.instance.spawners.spawn({
amountLeft: 1,
blueprint: blueprint
});

let builtEffect = obj.effects.addEffect({
type: 'pet',
new: true
});
builtEffect.source = item;
builtEffect.pet = pet;

item.useText = 'dismiss';
syncer.setArray(true, 'inventory', 'getItems', item);
},

onBeforeGetEffect: function (result) {
if (result.type.toLowerCase() === 'pet')
result.url = `${this.relativeFolderName}/effects/effectPet.js`;
}
};

Laddar…
Avbryt
Spara