Implemented Ctrl-Q drop stack
Also fixed an issue with TossItems not respecting count.
This commit is contained in:
parent
4974bf2832
commit
3c31f2d8d8
|
@ -629,6 +629,17 @@ void cClientHandle::HandleLeftClick(int a_BlockX, int a_BlockY, int a_BlockZ, ch
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case DIG_STATUS_DROP_STACK:
|
||||||
|
{
|
||||||
|
if (PlgMgr->CallHookPlayerTossingItem(*m_Player))
|
||||||
|
{
|
||||||
|
// A plugin doesn't agree with the tossing. The plugin itself is responsible for handling the consequences (possible inventory mismatch)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_Player->TossItem(false, 64); // Toss entire slot - if there aren't enough items, the maximum will be ejected
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
ASSERT(!"Unhandled DIG_STATUS");
|
ASSERT(!"Unhandled DIG_STATUS");
|
||||||
|
|
|
@ -85,6 +85,7 @@ enum
|
||||||
DIG_STATUS_STARTED = 0,
|
DIG_STATUS_STARTED = 0,
|
||||||
DIG_STATUS_CANCELLED = 1,
|
DIG_STATUS_CANCELLED = 1,
|
||||||
DIG_STATUS_FINISHED = 2,
|
DIG_STATUS_FINISHED = 2,
|
||||||
|
DIG_STATUS_DROP_STACK= 3,
|
||||||
DIG_STATUS_DROP_HELD = 4,
|
DIG_STATUS_DROP_HELD = 4,
|
||||||
DIG_STATUS_SHOOT_EAT = 5,
|
DIG_STATUS_SHOOT_EAT = 5,
|
||||||
} ;
|
} ;
|
||||||
|
|
|
@ -1382,11 +1382,16 @@ void cPlayer::TossItem(
|
||||||
cItem DroppedItem(GetInventory().GetEquippedItem());
|
cItem DroppedItem(GetInventory().GetEquippedItem());
|
||||||
if (!DroppedItem.IsEmpty())
|
if (!DroppedItem.IsEmpty())
|
||||||
{
|
{
|
||||||
if (GetInventory().RemoveOneEquippedItem())
|
char NewAmount = a_Amount;
|
||||||
|
if (NewAmount > GetInventory().GetEquippedItem().m_ItemCount)
|
||||||
{
|
{
|
||||||
DroppedItem.m_ItemCount = 1; // RemoveItem decreases the count, so set it to 1 again
|
NewAmount = GetInventory().GetEquippedItem().m_ItemCount; // Drop only what's there
|
||||||
Drops.push_back(DroppedItem);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GetInventory().GetHotbarGrid().ChangeSlotCount(GetInventory().GetEquippedSlotNum() /* Returns hotbar subslot, which HotbarGrid takes */, -a_Amount);
|
||||||
|
|
||||||
|
DroppedItem.m_ItemCount = NewAmount;
|
||||||
|
Drops.push_back(DroppedItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user