This is an alternative interface for Habitica based on the GUI from the classic EverQuest client circa ~1999. I'm working on this project because I really enjoy Habitica and use it daily but also have a lot of nostalgia for Everquest. The richness of spells/skills/items/tradeskills available in the EverQuest universe will provide a lot more incentive/reward/progress than base Habitica by itself, which runs out of most content after around three months.
This alternative interface is a stand-alone Django web application and doesn't integrate directly with Habitica aside from API calls.
Run docker "everbitica"
- there's a container for serving the web app and another for the database.
Running docker ps
in terminal can verify these are running.
docker-compose exec web python manage.py shell
to dabble with docker shell
Change "OFFLINE_MODE" to True in the .env (or index function of views.py) to make the page load much faster (useful for when editting HTML/CSS) while retaining presentation of cached data. Habitica API requests are notoriously slow and make page loads several seconds.
docker-compose exec web python manage.py project_setup
Alternatively, to seed all EQ tables used in EQEmulator, to research and investigate structure or whatever:
docker exec -it everbitica-db-1 /bin/bash -c "mysql -u user_name -puser_password database_name < /devassets/everquest_data.sql"
To see most recent foreign key constraint error:
docker exec -it everbitica-db-1 /bin/bash -c "mysql -u user_name -puser_password database_name -e 'SHOW ENGINE INNODB STATUS\\G'"
docker-compose exec web python manage.py test
Changes to requirements.txt to add libraries requires:
docker-compose build
docker-compose up
- Write a utility to go through all imported EQ data and try to create an object instance with it see if it causes an error - this would catch any issues that would have come up converting the EQ database information into Django models
- Make current user name not show in party members
- Have pending bosses have "Pending:" in front of target name, or maybe not display at all
- Add options window
- Add webhooks to auto update (probably wait for React implementation for this)
- Allow sending chat messages
- Install React and transition HTML/CSS/JS to that
- Fix targeting for stuff like aprils fools events (since it's an event and not a quest, it was confusing how this is accessed in content.json since it's seemingly not there at all)
- Add auto-action options
- Auto-heal
- Auto-buy healing potion
- Auto-nuke
- Auto quest accept
- Auto chat pending boss damage
- Auto-cron at cron time (to make player vs boss damage happen sooner than later)
- Multi-nuke option
- Test for bugs when not in a party
- Lots more
- Pull in habits and to-do items, be able to press them in UI - recreating this is a lot of work for not much return, easy enough to mark off on actual Habitica website. However with Habitica being open-source, maybe I can use their existing React code to make this faster.
- EQEmu post on "Default EverQuest Melee Combat Routines Analyzed and Modeled" - this is probably useful for programming combat logic in the future
- Similar one on NPC attack rates: https://www.eqemulator.org/forums/showthread.php?t=38734 EQMechanics repo on github: https://github.com/mackal/EQMechanics/wiki/Some-Vanilla
- This project uses MariaDB instead of the Postgres default because the original EQEmulator data dump is from a MySQL database (for which MariaDB is a drop-in replacement)
- NPC attack rate should be 3 seconds for everything under level 25. This is good enough for me for this project. It's maybe only Kunark where it even changes after level 25.
This project's use of EverQuest images and text falls under Fair Use because this project is both commentary and parody by contrasting the completely useless time-suck of EverQuest with the productive and life-enriching habits tracked and encouraged by Habitica. It will also never generate income of any sort and generally has zero impact on the value and operation of the EverQuest franchise by its current owners.