Browse Source

modding #1946: Added new events for beforeDropBag and beforeUseItem

tags/v0.12.0
Shaun 1 year ago
parent
commit
349eba8239
2 changed files with 27 additions and 8 deletions
  1. +17
    -7
      src/server/components/inventory/dropBag.js
  2. +10
    -1
      src/server/components/inventory/useItem.js

+ 17
- 7
src/server/components/inventory/dropBag.js View File

@@ -1,13 +1,15 @@
let generator = require('../../items/generator'); let generator = require('../../items/generator');


module.exports = (cpnInv, ownerName, killSource) => { module.exports = (cpnInv, ownerName, killSource) => {
if (!cpnInv.blueprint)
const { obj, blueprint } = cpnInv;

if (!blueprint)
return; return;


const obj = cpnInv.obj;
const { stats, instance: { objects, eventEmitter } } = obj;


//Only drop loot if this player is in the zone //Only drop loot if this player is in the zone
let playerObject = obj.instance.objects.find(o => o.player && o.name === ownerName);
let playerObject = objects.find(o => o.player && o.name === ownerName);
if (!playerObject) if (!playerObject)
return; return;


@@ -18,7 +20,6 @@ module.exports = (cpnInv, ownerName, killSource) => {
delete items[i].pos; delete items[i].pos;
} }


let blueprint = cpnInv.blueprint;
let magicFind = (blueprint.magicFind || 0); let magicFind = (blueprint.magicFind || 0);


let savedItems = extend([], cpnInv.items); let savedItems = extend([], cpnInv.items);
@@ -44,7 +45,7 @@ module.exports = (cpnInv, ownerName, killSource) => {
continue; continue;


let itemBlueprint = { let itemBlueprint = {
level: obj.stats.values.level,
level: stats.values.level,
magicFind: magicFind, magicFind: magicFind,
bonusMagicFind: bonusMagicFind, bonusMagicFind: bonusMagicFind,
noCurrency: i > 0 noCurrency: i > 0
@@ -64,7 +65,7 @@ module.exports = (cpnInv, ownerName, killSource) => {
else if ((drop.chance) && (~~(Math.random() * 100) >= drop.chance * dropEvent.chanceMultiplier)) else if ((drop.chance) && (~~(Math.random() * 100) >= drop.chance * dropEvent.chanceMultiplier))
continue; continue;


drop.level = drop.level || obj.stats.values.level;
drop.level = drop.level || stats.values.level;
drop.magicFind = magicFind; drop.magicFind = magicFind;


let item = drop; let item = drop;
@@ -80,8 +81,17 @@ module.exports = (cpnInv, ownerName, killSource) => {


playerObject.fireEvent('beforeTargetDeath', obj, cpnInv.items); playerObject.fireEvent('beforeTargetDeath', obj, cpnInv.items);


obj.instance.eventEmitter.emit('onBeforeDropBag', obj, cpnInv.items, killSource);
//Deprecated
eventEmitter.emit('onBeforeDropBag', obj, cpnInv.items, killSource);
obj.fireEvent('onBeforeDropBag', cpnInv.items, killSource); obj.fireEvent('onBeforeDropBag', cpnInv.items, killSource);
//New
const eventMsg = {
objDropper: obj,
objLooter: playerObject,
objKillSource: killSource,
items: cpnInv.items
};
eventEmitter.emit('beforeDropBag', eventMsg);


if (cpnInv.items.length > 0) if (cpnInv.items.length > 0)
cpnInv.createBag(obj.x, obj.y, cpnInv.items, ownerName); cpnInv.createBag(obj.x, obj.y, cpnInv.items, ownerName);


+ 10
- 1
src/server/components/inventory/useItem.js View File

@@ -56,10 +56,19 @@ module.exports = async (cpnInv, itemId) => {
success: true, success: true,
cdMax: item.cdMax cdMax: item.cdMax
}; };
//Deprecated
obj.instance.eventEmitter.emit('onBeforeUseItem', obj, item, result); obj.instance.eventEmitter.emit('onBeforeUseItem', obj, item, result);
obj.fireEvent('onBeforeUseItem', item, result); obj.fireEvent('onBeforeUseItem', item, result);
//New
const eventMsg = {
obj,
item,
cdMax: item.cdMax,
success: true
};
obj.instance.eventEmitter.emit('beforeUseItem', eventMsg);


if (!result.success)
if (!result.success || !eventMsg.success)
return; return;


placeItemOnCooldown(obj, cpnInv, item, result); placeItemOnCooldown(obj, cpnInv, item, result);


Loading…
Cancel
Save