Yeah, the vial dropper can be dropping soft boots if it tries to throw out the same pile many times. What will happen is it will throw the same pile out more than once, and when the pile goes away from the first throw, the second throw will throw whatever took its place - in this case, your soft boots. I have checks in the scripting engine to make sure I never throw out anything that a script doesn't tell me to: I check how many items are in the container they are throwing from as soon as they throw something, and the throw gets queued up and will be executed within 10-100 milliseconds (depending on what other actions the bot is trying to do). When I am finally able to throw, I only do so if the container has the same amount of items as it originally had. This means that it's impossible for the bot to throw softs unless the script tells it to throw softs.
This is best explained with code:
c++ code:
int XenoScript::luaContainerMoveToGround(lua_State *L)
{
int count = -1;
XenoScript* script = XenoScript::GetCurrentScript(L);
if (lua_gettop(L) == 6)
count = XenoScript::GetIntegerArg(L, 6);
else if (!XenoScript::VerifyArgs(L, script, "luaContainerMoveToGround", 5))
return 1;
int index = XenoScript::GetIntegerArg(L, 1);
int spot = XenoScript::GetIntegerArg(L, 2);
int x = XenoScript::GetIntegerArg(L, 3);
int y = XenoScript::GetIntegerArg(L, 4);
int z = XenoScript::GetIntegerArg(L, 5);
script->beginOperation();
if (!XenoScript::isContainerValid(index))
return XenoScript::PushActionResult(L, XB_INVALID_ACTION);
int beginningCount = tibiaClient::Containers->getContainer(index)->itemCount;
script->endOperation();
int loops = 0;
XENO_ACTION_RESULT ret = XB_ACTION_COOLDOWN;
while (true)
{
script->beginOperation();
if (XenoScript::isContainerValid(index))
{
if (beginningCount != tibiaClient::Containers->getContainer(index)->itemCount)
ret = XB_INVALID_ACTION;
else
ret = tibiaClient::Self->MoveItemFromContainerToGround(index, spot, x, y, z, count);
}
else
ret = XB_INVALID_ACTION;
script->endOperation();
if (XenoScript::CheckActionSuccess<10, 10>(ret, loops++)) break;
}
return XenoScript::PushActionResult(L, ret);
}