- ACMD(do_add_new_attribute)
- {
- std::vector<std::string> vecArgs;
- split_argument(argument,vecArgs);
- if (vecArgs.size() < 7)
- {
- ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_UNKNOWN_ARGUMENT"));
- return;
- }
- int sourceItemPos, targetItemPos, attrtype0, attrtype1, attrtype2, attrtype3, attrtype4;
- str_to_number(sourceItemPos, vecArgs[1].c_str());
- str_to_number(targetItemPos, vecArgs[2].c_str());
- str_to_number(attrtype0, vecArgs[3].c_str());
- str_to_number(attrtype1, vecArgs[4].c_str());
- str_to_number(attrtype2, vecArgs[5].c_str());
- str_to_number(attrtype3, vecArgs[6].c_str());
- str_to_number(attrtype4, vecArgs[7].c_str());
- LPITEM item = ch->GetInventoryItem(targetItemPos);
- if (!item)
- {
- ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_CANNOT_FIND_ITEM"));
- return;
- }
- if (item->GetType() != ITEM_WEAPON && item->GetType() != ITEM_ARMOR)
- {
- ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_COSTUME"));
- return;
- }
- if (item->IsEquipped())
- {
- ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_EQUIPPED"));
- return;
- }
- if (item->IsExchanging())
- {
- ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_EXCHANGING"));
- return;
- }
- if (ch->CountSpecifyItem(71051) < 1)
- {
- ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_ENOUGH_NEW_ATTRIBUTE"));
- return;
- }
- if (ch->GetAttributeCount > 0)
- {
- ch->ChatPacket(CHAT_TYPE_INFO, "Kadim efsun nesnesini kullanabilmen için efsun olmamalıdır.")
- return;
- }
- TItemTable const * pProto = item->GetProto();
- bool addontype = false;
- if (pProto && pProto->sAddonType)
- addontype = true;
- int attrtype0prob = number(1,5), attrtype1prob = number(1,5), attrtype2prob = number(1,5), attrtype3prob = number(1,5), attrtype4prob = number(1,5);
- bool error = false;
- if (addontype == false)
- {
- if (attrtype0 == attrtype1 || attrtype0 == attrtype2 || attrtype0 == attrtype3 || attrtype0 == attrtype4 || attrtype0 == item->GetAttributeType(5))
- error = true;
- if (attrtype1 == attrtype0 || attrtype1 == attrtype2 || attrtype1 == attrtype3 || attrtype1 == attrtype4 || attrtype1 == item->GetAttributeType(5))
- error = true;
- if (attrtype2 == attrtype0 || attrtype2 == attrtype1 || attrtype2 == attrtype3 || attrtype2 == attrtype4 || attrtype2 == item->GetAttributeType(5))
- error = true;
- if (attrtype3 == attrtype0 || attrtype3 == attrtype1 || attrtype3 == attrtype2 || attrtype3 == attrtype4 || attrtype3 == item->GetAttributeType(5))
- error = true;
- if (item->GetAttributeType(5) == attrtype0 || item->GetAttributeType(5) == attrtype1 || item->GetAttributeType(5) == attrtype2 || item->GetAttributeType(5) == attrtype3 || item->GetAttributeType(5) == attrtype4)
- error = true;
- }
- for (int i=0; i < 5; ++i)
- {
- if (addontype == false)
- {
- if (item->GetAttributeType(i) == attrtype0 && i != 0)
- error = true;
- if (item->GetAttributeType(i) == attrtype1 && i != 1)
- error = true;
- if (item->GetAttributeType(i) == attrtype2 && i != 2)
- error = true;
- if (item->GetAttributeType(i) == attrtype3 && i != 3)
- error = true;
- if (item->GetAttributeType(i) == attrtype3 && i != 4)
- error = true;
- }
- }
- if (error)
- {
- ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_ERROR"));
- return;
- }
- if (addontype == false)
- {
- item->AddNewAttr(0, attrtype0, attrtype0prob);
- item->AddNewAttr(1, attrtype1, attrtype1prob);
- item->AddNewAttr(2, attrtype2, attrtype2prob);
- item->AddNewAttr(3, attrtype3, attrtype3prob);
- item->AddNewAttr(4, attrtype4, attrtype4prob);
- }
- ch->RemoveSpecifyItem(71051, 1);
- ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_SUCCESS_ATTR"));
- }