Прочность предметов

После публикации статьи про предметы и размышления о их прочности, действительно задумался, а как и куда вообще эту прочность записывать.
Единственным вариантом для текущей схемы - это для предметов создавать свою стрктуру - а значит усложнять инвентарь и весь относящий к нему код.

А потому было решено, что старый принцип кодирование предметов/артефактов не является правильным и разумным.

Во-первых в старой версии место куда можно одеть предмет определялось битами, и тогда мне это казалось оригинально и здорово - а сейчас просто глупо.
Ну разве можно сапоги одеть на голову? Расположение предмета теперь будет определенным числом и так как сейчас максимальное количество мест всего 6 (голова, шея, туловище, правая рука, левая рука, ноги), то думаю 16 перечислений должно хватить. А для этого хватит и 4 битов (или полбайта).

Далее собственно ради чего начиналось все - прочность. Подумал и решил, что максимальная прочность будет 255 - это мне кажется более чем нужно. Вот кстати, не помню в Diablo и подобных сколько там была максимальная прочность?
Но думаю 255 хватит и соответственно это байт. Для текущей прочности - тоже байт. Предмет с 0/0 - сломанный, 255/0 - с бесконечной прочностью

До двойного слова (DWORD) у нас в запасе еще 12 бит или 4096 вариантов предметов. Думаю этого тоже достаточно, тем более что есть запас ;)

В целом как-то так:
0x[001][5][0F][0E] - означает что данная штуковина (нож) имеет прочность 14 из 15, одевается на слот правой руки (5) и его порядковый ИД = 1.

Простейший код:

int knife=1380110; //00150F0E
int id = knife;

int cur_pr = id % 256;
int max_pr = (id / 256) % 256;
int type_place = (id >> 16) % 16;
int art_num = id >> 20;

printf("durability: %d/%d\n",cur_pr,max_pr);
printf("type_place = %d\n",type_place);
printf("art_num = %d\n",art_num);

Какие тут плюсы? Ну кроме того, что в структуре уже присутствует прочность, но еще и старение предмета это просто knife--

Установление произвольной прочности (например 10) - id=(id/256)*256 + 10

Комментарии

Прочность предметов

В Диабло, как я помню, все простые предметы имели прочность 25-40 (на PS). И урон прочности наносился за кол-во ударов.