- ### Cube.cpp
- //Search :
- this->gold = 0;
- //Add after :
- #ifdef ENABLE_CUBE_RENEWAL
- this->allowCopyAttr = false;
- #endif
- //Search:
- else TOKEN("gold")
- {
- cube_data->gold = value1;
- }
- //Add after :
- #ifdef ENABLE_CUBE_RENEWAL
- else TOKEN("allow_copy")
- {
- cube_data->allowCopyAttr = (value1 == 1 ? true : false);
- }
- #endif
- //Search in : bool Cube_make (LPCHARACTER ch)
- LPITEM new_item;
- Add after :
- #ifdef ENABLE_CUBE_RENEWAL
- DWORD copyAttr[ITEM_ATTRIBUTE_MAX_NUM][2];
- #endif
- //Search :
- CUBE_VALUE *reward_value = cube_proto->reward_value();
- //Add after:
- #ifdef ENABLE_CUBE_RENEWAL
- for (int i=0; i<CUBE_MAX_NUM; ++i)
- {
- if (NULL==items[i]) continue;
- if (items[i]->GetType() == ITEM_WEAPON || items[i]->GetType() == ITEM_ARMOR)
- {
- bool hasElement = false;
- for (int j = 0; j < cube_proto->item.size(); ++j)
- {
- if(cube_proto->item[j].vnum == items[i]->GetVnum())
- {
- hasElement = true;
- break;
- }
- }
- if(hasElement == false)
- continue;
- for (int a = 0; a < ITEM_ATTRIBUTE_MAX_NUM; a++)
- {
- copyAttr[a][0] = items[i]->GetAttributeType(a);
- copyAttr[a][1] = items[i]->GetAttributeValue(a);
- }
- break;
- }
- continue;
- }
- #endif
- //Search:
- new_item = ch->AutoGiveItem(reward_value->vnum, reward_value->count);
- //Add after:
- #ifdef ENABLE_CUBE_RENEWAL
- if (cube_proto->allowCopyAttr == true && copyAttr != NULL)
- {
- new_item->ClearAttribute();
- for (int a = 0; a < ITEM_ATTRIBUTE_MAX_NUM; a++)
- {
- new_item->SetForceAttribute(a, copyAttr[a][0], copyAttr[a][1]);
- }
- }
- #endif
- ###cube.h
- //Search in : struct CUBE_DATA
- int percent;
- unsigned int gold;
- //Add after :
- #ifdef ENABLE_CUBE_RENEWAL
- bool allowCopyAttr;
- #endif
- ###service.h
- /Add:
- #define ENABLE_CUBE_RENEWAL
- Example in cube.txt
- section
- npc 20378
- item 11299 1
- item 30509 10
- item 30516 10
- item 30514 10
- allow_copy 1
- reward 20000 1
- gold 100000
- percent 60
- end