(Sorvani, that almost sounds like when a player dies with an item in the cursor queue, past [0], the server knows
that it's there, but the loot routine is only grabbing [0] and sending it to the client and not sending queue slots...
I'll add it to the list... It might be fixable by doing a cursor iteration when sending the loot window packets, if that's
what is happening.)
Anyways, I've been distracted by r/l and am starting to get back into this.
I'm posting an ALPHA patch here for some minor issues. I didn't want to start a new thread in another forum with a portion
of this not tested. (#summonitem was modified to report lore conflict failures with augments properly (imo) and I haven't
looked up any augment item id's just yet to test it out.) The rest of the code is tested and should work as intended.
[CSD Patch 1]
Code:
Index: command.cpp
===================================================================
--- command.cpp (revision 2171)
+++ command.cpp (working copy)
@@ -456,7 +456,8 @@
command_add("sensetrap", "Analog for ldon sense trap for the newer clients since we still don't have it working.", 0, command_sensetrap) ||
command_add("picklock", "Analog for ldon pick lock for the newer clients since we still don't have it working.", 0, command_picklock) ||
command_add("mysql", "Mysql CLI, see 'help' for options.", 250, command_mysql) ||
- command_add("xtargets", "Show your targets Extended Targets and optionally set how many xtargets they can have.", 250, command_xtargets)
+ command_add("xtargets", "Show your targets Extended Targets and optionally set how many xtargets they can have.", 250, command_xtargets) ||
+ command_add("zopp", "Troubleshooting command - Sends a fake item packet to you. No server reference is created.", 250, command_zopp)
)
{
command_deinit();
@@ -3013,6 +3014,7 @@
c->Message(0, "Usage: (targted) #nukeitem itemnum - removes the item from the player's inventory");
}
+// 'CSD 1' - Made modifications to show charge count of items as well - other changes are noted where they occur
void command_peekinv(Client *c, const Seperator *sep)
{
// Displays what the server thinks the user has in inventory
@@ -3035,15 +3037,17 @@
item = (inst) ? inst->GetItem() : NULL;
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), "WornSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "WornSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
else
{
- c->Message((item==0), "WornSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "WornSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
}
}
@@ -3055,15 +3059,17 @@
item = (inst) ? inst->GetItem() : NULL;
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), "InvSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "InvSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
else
{
- c->Message((item==0), "InvSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "InvSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
if (inst && inst->IsType(ItemClassContainer)) {
@@ -3072,17 +3078,19 @@
item = (instbag) ? instbag->GetItem() : NULL;
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), " InvBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)",
+ c->Message((item==0), " InvBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i",
Inventory::CalcSlotId(i, j),
i, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:instbag->GetCharges()));
}
else
{
- c->Message((item==0), " InvBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X000000000000000000000000000000000000000%s%c)",
+ c->Message((item==0), " InvBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i",
Inventory::CalcSlotId(i, j),
i, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:instbag->GetCharges()));
}
}
}
@@ -3091,50 +3099,73 @@
{
const ItemInst* inst = client->GetInv().GetItem(9999);
item = (inst) ? inst->GetItem() : NULL;
- c->Message((item==0), "InvSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)", 9999,
+ c->Message((item==0), "InvSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i", 9999,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
}
+
+ // 'CSD 1' - Changed to show 'empty' cursors and not to show bag slots on 'queued' cursor slots (cursor bag slots 331 to 340 are not queued...)
+ // - was pointless to show bags on anything after slot 30[0], because they don't exist and only repeat the 30[0] bag items.
if (bAll || (strcasecmp(sep->arg[1], "cursor")==0)) {
// Personal inventory items
bFound = true;
iter_queue it;
int i=0;
- for(it=client->GetInv().cursor_begin();it!=client->GetInv().cursor_end();it++,i++) {
- const ItemInst* inst = *it;
- item = (inst) ? inst->GetItem() : NULL;
+
+ if(client->GetInv().CursorEmpty()) { // 'CSD 1' - Display 'front' cursor slot even if 'empty' (item(30[0]) == null)
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), "CursorSlot: %i, Depth: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)", SLOT_CURSOR,i,
- ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ c->Message((item==0), "CursorSlot: %i, Depth: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i", SLOT_CURSOR,i,
+ 0, 0x12, 0, "null", 0x12, 0);
}
else
{
- c->Message((item==0), "CursorSlot: %i, Depth: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c)", SLOT_CURSOR,i,
- ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ c->Message((item==0), "CursorSlot: %i, Depth: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i", SLOT_CURSOR,i,
+ 0, 0x12, 0, "null", 0x12, 0);
}
+ }
+ else {
+ for(it=client->GetInv().cursor_begin();it!=client->GetInv().cursor_end();it++,i++) {
+ const ItemInst* inst = *it;
+ item = (inst) ? inst->GetItem() : NULL; // 'CSD 1' - (item == null) will not include an 'empty' cursor (30[0])
+ if (c->GetClientVersion() >= EQClientSoF)
+ {
+ c->Message((item==0), "CursorSlot: %i, Depth: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i", SLOT_CURSOR,i,
+ ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
+ }
+ else
+ {
+ c->Message((item==0), "CursorSlot: %i, Depth: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i", SLOT_CURSOR,i,
+ ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
+ }
- if (inst && inst->IsType(ItemClassContainer)) {
- for (uint8 j=0; j<10; j++) {
- const ItemInst* instbag = client->GetInv().GetItem(SLOT_CURSOR, j);
- item = (instbag) ? instbag->GetItem() : NULL;
- if (c->GetClientVersion() >= EQClientSoF)
- {
- c->Message((item==0), " CursorBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)",
- Inventory::CalcSlotId(SLOT_CURSOR, j),
- SLOT_CURSOR, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ if (inst && inst->IsType(ItemClassContainer) && i==0) { // 'CSD 1' - only display contents of slot 30[0] container..higher ones don't exist
+ for (uint8 j=0; j<10; j++) {
+ const ItemInst* instbag = client->GetInv().GetItem(SLOT_CURSOR, j);
+ item = (instbag) ? instbag->GetItem() : NULL;
+ if (c->GetClientVersion() >= EQClientSoF)
+ {
+ c->Message((item==0), " CursorBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i",
+ Inventory::CalcSlotId(SLOT_CURSOR, j),
+ SLOT_CURSOR, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:instbag->GetCharges()));
+ }
+ else
+ {
+ c->Message((item==0), " CursorBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i",
+ Inventory::CalcSlotId(SLOT_CURSOR, j),
+ SLOT_CURSOR, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:instbag->GetCharges()));
+ }
}
- else
- {
- c->Message((item==0), " CursorBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X000000000000000000000000000000000000000%s%c)",
- Inventory::CalcSlotId(SLOT_CURSOR, j),
- SLOT_CURSOR, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
- }
}
}
}
@@ -3148,15 +3179,17 @@
item = (inst) ? inst->GetItem() : NULL;
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), "TributeSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "TributeSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
else
{
- c->Message((item==0), "TributeSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "TributeSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
}
}
@@ -3170,15 +3203,17 @@
item = (inst) ? inst->GetItem() : NULL;
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), "BankSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "BankSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
else
{
- c->Message((item==0), "BankSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "BankSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
if (inst && inst->IsType(ItemClassContainer)) {
@@ -3187,17 +3222,19 @@
item = (instbag) ? instbag->GetItem() : NULL;
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), " BankBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)",
+ c->Message((item==0), " BankBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i",
Inventory::CalcSlotId(i, j),
i, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
else
{
- c->Message((item==0), " BankBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X000000000000000000000000000000000000000%s%c)",
+ c->Message((item==0), " BankBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i",
Inventory::CalcSlotId(i, j),
i, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
}
}
@@ -3207,15 +3244,17 @@
item = (inst) ? inst->GetItem() : NULL;
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), "ShBankSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "ShBankSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
else
{
- c->Message((item==0), "ShBankSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "ShBankSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
if (inst && inst->IsType(ItemClassContainer)) {
@@ -3224,17 +3263,19 @@
item = (instbag) ? instbag->GetItem() : NULL;
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), " ShBankBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)",
+ c->Message((item==0), " ShBankBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i",
Inventory::CalcSlotId(i, j),
i, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
else
{
- c->Message((item==0), " ShBankBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X000000000000000000000000000000000000000%s%c)",
+ c->Message((item==0), " ShBankBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i",
Inventory::CalcSlotId(i, j),
i, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
}
}
@@ -3248,15 +3289,17 @@
item = (inst) ? inst->GetItem() : NULL;
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), "TradeSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "TradeSlot: %i, Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
else
{
- c->Message((item==0), "TradeSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c)", i,
+ c->Message((item==0), "TradeSlot: %i, Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i", i,
((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
if (inst && inst->IsType(ItemClassContainer)) {
@@ -3265,17 +3308,19 @@
item = (instbag) ? instbag->GetItem() : NULL;
if (c->GetClientVersion() >= EQClientSoF)
{
- c->Message((item==0), " TradeBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c)",
+ c->Message((item==0), " TradeBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X00000000000000000000000000000000000000000000%s%c), Charges: %i",
Inventory::CalcSlotId(i, j),
i, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
else
{
- c->Message((item==0), " TradeBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X000000000000000000000000000000000000000%s%c)",
+ c->Message((item==0), " TradeBagSlot: %i (Slot #%i, Bag #%i), Item: %i (%c%06X000000000000000000000000000000000000000%s%c), Charges: %i",
Inventory::CalcSlotId(i, j),
i, j, ((item==0)?0:item->ID),0x12, ((item==0)?0:item->ID),
- ((item==0)?"null":item->Name), 0x12);
+ ((item==0)?"null":item->Name), 0x12,
+ ((item==0)?0:inst->GetCharges()));
}
}
@@ -3286,7 +3331,7 @@
if (!bFound)
{
c->Message(0, "Usage: #peekinv [worn|cursor|inv|bank|trade|trib|all]");
- c->Message(0, " Displays a portion of the targetted user's inventory");
+ c->Message(0, " Displays a portion of the targeted user's inventory");
c->Message(0, " Caution: 'all' is a lot of information!");
}
}
@@ -11529,3 +11581,40 @@
else
t->ShowXTargets(c);
}
+
+// 'CSD 3' - Troubleshooting command used to send a fake item to the client..server item not created.
+// - Owner only command..non-targetable to eliminate malicious or mischievious activities.
+void command_zopp(Client *c, const Seperator *sep)
+{
+ if (sep->argnum < 2 || sep->argnum > 3)
+ c->Message(0, "Usage: #zopp [slot id] [item id] [*charges]");
+ else if (!sep->IsNumber(1) || !sep->IsNumber(2) || (sep->argnum == 3 && !sep->IsNumber(3)))
+ c->Message(0, "Usage: #zopp [slot id] [item id] [*charges]");
+ else {
+ sint16 slotid = atoi(sep->arg[1]);
+ int32 itemid = atoi(sep->arg[2]);
+ sint16 charges = sep->argnum == 3 ? atoi(sep->arg[3]) : 1; // defaults to 1 charge if not specified
+
+ const Item_Struct* FakeItem = database.GetItem(itemid);
+
+ if (!FakeItem) {
+ c->Message(13, "Error: Item [%u] is not a valid item id.", itemid);
+ return;
+ }
+
+ if (database.GetItemStatus(itemid) > c->Admin()) {
+ c->Message(13, "Error: Insufficient status to use this command.");
+ return;
+ }
+
+ if (charges < 0 || charges > FakeItem->StackSize) {
+ c->Message(13, "Warning: The specified charge count does not meet expected criteria!");
+ c->Message(0, "Processing request..results may be unpredictable or cause instability.");
+ }
+
+ ItemInst* FakeItemInst = database.CreateItem(FakeItem, charges);
+ c->SendItemPacket(slotid, FakeItemInst, ItemPacketTrade);
+ c->Message(0, "Sending zephyr op packet to client - %s (%u) with %i %s to slot %i.", FakeItem->Name, itemid, charges, abs(charges==1)?"charge":"charges", slotid);
+ safe_delete(FakeItemInst);
+ }
+}
\ No newline at end of file
Index: command.h
===================================================================
--- command.h (revision 2171)
+++ command.h (working copy)
@@ -320,6 +320,7 @@
void command_qtest(Client *c, const Seperator *sep);
void command_mysql(Client *c, const Seperator *sep);
void command_xtargets(Client *c, const Seperator *sep);
+void command_zopp(Client *c, const Seperator *sep);
#ifdef EMBPERL
void command_embperl_plugin(Client *c, const Seperator *sep);
Index: inventory.cpp
===================================================================
--- inventory.cpp (revision 2171)
+++ inventory.cpp (working copy)
@@ -222,6 +222,14 @@
inst->SetCharges(1);
if ((inst->GetCharges()>0))
inst->SetCharges(inst->GetCharges());
+
+ // 'CSD 7' - This reduces overcharged items to maximum stacksize
+ if ((inst->GetCharges()>inst->GetItem()->StackSize)) {
+ inst->SetCharges(inst->GetItem()->StackSize);
+ Message(0, "Your summoned item is charged beyond maximum allowable - adjusting to %i charges!", inst->GetCharges());
+ }
+
+ // 'CSD 7' - Corrected the augment references to reflect augment name/id instead of base item name/id
if (aug1) {
const Item_Struct* augitem1 = database.GetItem(aug1);
if (augitem1) {
@@ -229,7 +237,7 @@
inst->PutAugment(&database, 0, aug1);
}
else {
- Message(0, "You already have a %s (%i) in your inventory!", item->Name, item_id);
+ Message(0, "You already have a %s (%u) in your inventory - Augment not added!", augitem1->Name, aug1);
}
}
}
@@ -240,7 +248,7 @@
inst->PutAugment(&database, 1, aug2);
}
else {
- Message(0, "You already have a %s (%i) in your inventory!", item->Name, item_id);
+ Message(0, "You already have a %s (%u) in your inventory - Augment not added!", augitem2->Name, aug2);
}
}
}
@@ -251,7 +259,7 @@
inst->PutAugment(&database, 2, aug3);
}
else {
- Message(0, "You already have a %s (%i) in your inventory!", item->Name, item_id);
+ Message(0, "You already have a %s (%u) in your inventory - Augment not added!", augitem3->Name, aug3);
}
}
}
@@ -262,7 +270,7 @@
inst->PutAugment(&database, 3, aug4);
}
else {
- Message(0, "You already have a %s (%i) in your inventory!", item->Name, item_id);
+ Message(0, "You already have a %s (%u) in your inventory - Augment not added!", augitem4->Name, aug4);
}
}
}
@@ -273,7 +281,7 @@
inst->PutAugment(&database, 4, aug5);
}
else {
- Message(0, "You already have a %s (%i) in your inventory!", item->Name, item_id);
+ Message(0, "You already have a %s (%u) in your inventory - Augment not added!", augitem5->Name, aug5);
}
}
}
If this isn't committed, that's fine. I'll include it in a later patch.
I think I have a pretty good idea of what's happening now, but if anyone still has any suggestions... (constructive... I know how to do THAT already!)
__________________
Uleat of Bertoxxulous
Compilin' Dirty
|