Свой собственный mmorpg мир ч.2

Привет всем!

Продолжаю работу над своей игрушкой в телеграме. На этот раз решил переработать весь код, потому как со старой версией было не очень удобно добавлять новые функции. А из новых функций это добавление умений и их применение в бою, в основном. В процессе реализации умений столкнулся с проблемой действия умения на протяжении нескольких раундов. Перед тем, как рассказать о реализации, несколько слов о том как реализована боевая система в целом. Есть сущность пользователь и противник (моб). Обе эти сущности сохраняются в бд и имеют такие характеристики как: hp, защита, id приемов, id противника с которым идет сражение и другие, которые относятся к сражению. Сначала сделал отдельные таблицы в базе для боев с мобом и живым игроком. Идея хорошая, потому как можно вести статистику и смотреть результаты боев, но у меня пока проблемы с взаимосвязями таблиц, так как надо сохранять в них те приемы, которые были использованы, а это значит, что в одном из столбцов таблиц надо хранить список с объектами "прием", а с этим пока есть сложность, поэтому на сегодня обошел ее созданием HashMap боев прямо в коде. В этом тоже есть плюсы, так как запросов к базе поменьше, а для статистики боев сделана отдельная таблица и есть логи, где можно посмотреть результаты, пока идет тестирование.

Вообще, для меня каждая задача по реализации каких то функций это вызов, над решением которого интересно думать и проверять что получилось. Казалось бы, всего одна строка кода не дописана, не учтена и это тянет ворох проблем. В общем, крайне интересное занятие.

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

Ну да ладно, отвлекся немного. Еще несколько слов об изменениях. Формат боя решил тоже переделать. Раньше было как, выбрал куда бьешь, выбрал что защищаешь, после видишь результат. Идею эту подсмотрел, если честно. Интересная, но псевдослучайная какая-то. Можно жать одну и ту же кнопку атаки и защиты и после пары боев понятно, что ты уже ничего не решаешь, поэтому вернулся к первоначальной модели: после выбора удара сразу результат раунда.

Еще добавил ману, куда же без нее. Мана тратится на использование умений. Их несколько, как говорил, в будущем увеличу количество умений, благо теперь можно спокойно добавлять их, так как это отдельный класс и при создании нового умения просто наследуешься от базового класса и добавляешь в расчете результата боя эффект, который имеет умение.

В общем продолжаю работу, изучение и буду рад, если кто-нибудь заглянет и посмотрит что получается: https://t.me/vzland_bot.