Опыт

- Погляди какой толстый монстр
- Не-не, это просто кучка опыта

Опыт приобретается путем истребления монстров и прочих путников в лабиринтах/аренах/подвалах.
Чаще всего в различных играх - количество опыта необходимое для получения следующего уровня измеряется по логорифмической шкале.
Что дает игрокам быстро получить первые уровни, и запас времени на получение высших уровней.
А еще есть например такое, в Diablo II, за истребления монстров не своего уровня, количество опыта режется.

Но это все слишком заморочно, на текущий момент, поэтому я сделаю (пока) проще.
Для получения 2 уровня нужно 64 единиц опыта, а для 3 - 256, соотвественно для 4 - 1024.
Единицей измерения опыта будет тот же, многострадальный паук - он будет "весить" 10 единиц опыта.

Изменения - минимум. В creature.xml добавил тэг level и exp, в структурку TCreatureParams - int level,exp,price;
Price - сколько опыта базово "стоит" существо, есть задумка что опыт будет увеличиваться в зависимости от уровня, например простым умножением.

Ну и самая главное изменение, функция strikeCreature теперь имеет тип bool (ранее void), и возвращает true в случае гибели существа от удара, и соотвественно в функции makeAction из которой вызывается strikeCreature, блок if (true) c->params.exp+=target.params.price;

Дальше добавил функцию checkLevel

void checkLevel(TMazeCreature *c)
{
int level[]={0,64,256,1024,4096,16384,65536};

for(c->params.level<5)
 if (c->params.exp>level[c->params.level+1]) {c->params.level++;c->params.freep+=5;}

}

Собственно осталось лишь выводить это на экран :)