Ensure task copied inventory is named correctly

This commit is contained in:
Casper Warden
2023-11-22 00:42:05 +00:00
parent c487df6d4f
commit d841bb86b6
4 changed files with 125 additions and 15 deletions

View File

@@ -845,7 +845,18 @@ export class RegionCommands extends CommandsBase
const item = buildMap.assetMap.clothing[invItem.assetID.toString()].item;
if (item !== null)
{
await object.dropInventoryIntoContents(item, invItem.name);
await object.dropInventoryIntoContents(item);
if (invItem.name !== item.name)
{
await object.updateInventory();
for (const taskItem of object.inventory)
{
if (taskItem.name === item.name)
{
await taskItem.renameInTask(object, invItem.name);
}
}
}
}
}
break;
@@ -857,7 +868,18 @@ export class RegionCommands extends CommandsBase
const item = buildMap.assetMap.settings[invItem.assetID.toString()].item;
if (item !== null)
{
await object.dropInventoryIntoContents(item, invItem.name);
await object.dropInventoryIntoContents(item);
if (invItem.name !== item.name)
{
await object.updateInventory();
for (const taskItem of object.inventory)
{
if (taskItem.name === item.name)
{
await taskItem.renameInTask(object, invItem.name);
}
}
}
}
}
break;
@@ -870,7 +892,18 @@ export class RegionCommands extends CommandsBase
const item = buildMap.assetMap.bodyparts[invItem.assetID.toString()].item;
if (item !== null)
{
await object.dropInventoryIntoContents(item, invItem.name);
await object.dropInventoryIntoContents(item);
if (invItem.name !== item.name)
{
await object.updateInventory();
for (const taskItem of object.inventory)
{
if (taskItem.name === item.name)
{
await taskItem.renameInTask(object, invItem.name);
}
}
}
}
}
break;
@@ -882,7 +915,18 @@ export class RegionCommands extends CommandsBase
const item = buildMap.assetMap.notecards[invItem.assetID.toString()].item;
if (item !== null)
{
await object.dropInventoryIntoContents(item, invItem.name);
await object.dropInventoryIntoContents(item);
if (invItem.name !== item.name)
{
await object.updateInventory();
for (const taskItem of object.inventory)
{
if (taskItem.name === item.name)
{
await taskItem.renameInTask(object, invItem.name);
}
}
}
}
}
break;
@@ -894,7 +938,18 @@ export class RegionCommands extends CommandsBase
const item = buildMap.assetMap.sounds[invItem.assetID.toString()].item;
if (item !== null)
{
await object.dropInventoryIntoContents(item, invItem.name);
await object.dropInventoryIntoContents(item);
if (invItem.name !== item.name)
{
await object.updateInventory();
for (const taskItem of object.inventory)
{
if (taskItem.name === item.name)
{
await taskItem.renameInTask(object, invItem.name);
}
}
}
}
}
break;
@@ -906,7 +961,18 @@ export class RegionCommands extends CommandsBase
const item = buildMap.assetMap.gestures[invItem.assetID.toString()].item;
if (item !== null)
{
await object.dropInventoryIntoContents(item, invItem.name);
await object.dropInventoryIntoContents(item);
if (invItem.name !== item.name)
{
await object.updateInventory();
for (const taskItem of object.inventory)
{
if (taskItem.name === item.name)
{
await taskItem.renameInTask(object, invItem.name);
}
}
}
}
}
break;
@@ -919,7 +985,18 @@ export class RegionCommands extends CommandsBase
const item = buildMap.assetMap.scripts[invItem.assetID.toString()].item;
if (item !== null)
{
await object.dropInventoryIntoContents(item, invItem.name);
await object.dropInventoryIntoContents(item);
if (invItem.name !== item.name)
{
await object.updateInventory();
for (const taskItem of object.inventory)
{
if (taskItem.name === item.name)
{
await taskItem.renameInTask(object, invItem.name);
}
}
}
}
}
break;
@@ -931,7 +1008,18 @@ export class RegionCommands extends CommandsBase
const item = buildMap.assetMap.animations[invItem.assetID.toString()].item;
if (item !== null)
{
await object.dropInventoryIntoContents(item, invItem.name);
await object.dropInventoryIntoContents(item);
if (invItem.name !== item.name)
{
await object.updateInventory();
for (const taskItem of object.inventory)
{
if (taskItem.name === item.name)
{
await taskItem.renameInTask(object, invItem.name);
}
}
}
}
}
break;
@@ -943,7 +1031,18 @@ export class RegionCommands extends CommandsBase
const inventoryItem = buildMap.assetMap.objects[invItem.itemID.toString()];
if (inventoryItem !== null)
{
await object.dropInventoryIntoContents(inventoryItem, invItem.name);
await object.dropInventoryIntoContents(inventoryItem);
if (invItem.name !== inventoryItem.name)
{
await object.updateInventory();
for (const taskItem of object.inventory)
{
if (taskItem.name === inventoryItem.name)
{
await taskItem.renameInTask(object, invItem.name);
}
}
}
}
else
{
@@ -960,7 +1059,18 @@ export class RegionCommands extends CommandsBase
const texItem = buildMap.assetMap.textures[invItem.assetID.toString()];
if (texItem.item !== null)
{
await object.dropInventoryIntoContents(texItem.item, invItem.name);
await object.dropInventoryIntoContents(texItem.item);
if (invItem.name !== texItem.item.name)
{
await object.updateInventory();
for (const taskItem of object.inventory)
{
if (taskItem.name === texItem.item.name)
{
await taskItem.renameInTask(object, invItem.name);
}
}
}
}
else
{

View File

@@ -2000,7 +2000,7 @@ export class GameObject implements IGameObjectData
return GameObject.takeManyToInventory(this.region, [this], folder);
}
async dropInventoryIntoContents(inventoryItem: InventoryItem | UUID, newName?: string): Promise<void>
async dropInventoryIntoContents(inventoryItem: InventoryItem | UUID): Promise<void>
{
const transactionID = UUID.zero();
@@ -2043,7 +2043,7 @@ export class GameObject implements IGameObjectData
Flags: inventoryItem.flags,
SaleType: inventoryItem.saleType,
SalePrice: inventoryItem.salePrice,
Name: Utils.StringToBuffer(newName ?? inventoryItem.name),
Name: Utils.StringToBuffer(inventoryItem.name),
Description: Utils.StringToBuffer(inventoryItem.description),
CreationDate: inventoryItem.created.getTime() / 1000,
CRC: inventoryItem.getCRC()

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@caspertech/node-metaverse",
"version": "0.7.7",
"version": "0.7.9",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@caspertech/node-metaverse",
"version": "0.7.7",
"version": "0.7.9",
"license": "MIT",
"dependencies": {
"@caspertech/llsd": "^1.0.5",

View File

@@ -1,6 +1,6 @@
{
"name": "@caspertech/node-metaverse",
"version": "0.7.7",
"version": "0.7.9",
"description": "A node.js interface for Second Life.",
"main": "dist/lib/index.js",
"types": "dist/lib/index.d.ts",