ZombireBot

Zombire IRC bot: a multiplayer mini-RPG battle game between zombies and vampires.

Prerequisites in IRC environment

ZombireBot works properly if run on Rizon IRC network. It would also work on other IRC networks that use Anope services.

How to Install

  1. You need Python3 and pip3 installed on your system, and an access to a MySQL database.

  2. Run: pip3 install -r requirements.txt

  3. Register the bot nick on the IRC network you want it to run on, and gives it the ability to change the channel access.

  4. Copy conf/config.example.yml to conf/config.yml and change the configuration parameters according to your needs.

  5. Create the mysql database and user, then run (substituting mysql_user and mysql_db by their values):

mysql -u mysql_user -D mysql_db -p < conf/create_tables.sql

Finally, run: python3 zombire.py and enjoy!

How to Play

Vampires and zombies are trying to annihilate and destroy each other. Every player joining the game will be either a vampire or a zombie at random. Vampires can attack zombies only, and vice versa. Furthermore, vampires can heal vampires only, and zombies can heal zombies only.

Each player has the following stats:

Each player upon registration will have an HP of 10, and an MP and Maximum MP of 5.

Each player can take 3 types of actions against other players:

Every one hour, the MP of all players will be regenerated and filled up to their respective Maximum MP.

About Maximum MP, if a player makes 5 successful attacks/ambushes in a row (with no ties in between), his/her Maximum MP will go up by 1 point. However, if he/she makes 5 failed attacks/ambushes in row, his/her Maximum MP will go down by 1 point.

Concerning bonus, every 3 hours, some players may find random items or get affected by random objects, leading to a temporary positive or negative effect on their attack/defense. The bonus effect will last for 1 hour only.

Scoring:

Player settings:

Items:

Players can search for items and use them. Searching for items using the !search command will consume 1 MP. The chance of finding an item is 25%. Be aware that the player inventory has a limited capacity of 3 items.

Some of the items are considered rare items. A player cannot have more than 1 unit of the same rare item in his/her inventory.

Here is a full list of the items that can be found:

Item Can be used on others? Rare? Description
Small apple no no +2 HP
Medium apple no no +5 HP
Large apple no no +10 HP
Small lemon no no +1 MP (MP will not go over Maximum MP)
Medium lemon no no +2 MP (MP will not go over Maximum MP)
Large lemon no no +3 MP (MP will not go over Maximum MP)
Transformic no yes tranforms the player to the opposite type without affecting his/her stats
Explodic yes yes suicidal attack (renders the HP of the user and the target to 1)
Neutralic yes yes removes any bonus effect of a particular player
Switchic yes yes switches the HP stats between player and target (consumes the full MP of the player)
Drainic yes yes sacrifices 1 MP to decrease the target's HP by 5
Revealic yes yes reveals the inventory contents of the target
Thievic yes yes steals a random item from the target (if the target has any)
Summonic no yes sacrifices 20 HP to summon the player's leader for 15 minutes
Maintainic no yes increases the lifespan of a sword or an armor by 20

The unused items will remain in the player inventory even after a round ends.

Chests and Equipment:

Every new player starts with a wooden sword and a wooden armor, both possessing a power of 0, and both upgradable.

Upon taking an action (attack, ambush or heal), there is a chance that the player will find a chest, which they can open or drop. The chest may contain one of the seven ores: Copper, Steel, Titanium, Quartz, Sapphire, Diamond and Bomb. The ores collected are stored in the player's forge, which has a maximum capacity of 4. Except for Bomb, which causes up to 5 HP damage to the player, the other ores can be used to upgrade one's sword or armor, using the !upgrade command, as follows:

Sword Ores in forge Upgraded form
Wooden sword 3 Copper Copper sword (power = 1)
Copper sword 3 Steel Steel sword (power = 2)
Steel sword 3 Titanium Titanium sword (power = 3)
Armor Ores in forge Upgraded form
Wooden armor 3 Quartz Quartz armor (power = 1)
Quartz armor 3 Sapphire Sapphire armor (power = 2)
Sapphire armor 3 Diamond Diamond armor (power = 3)

Furthermore, each sword/armor (except for wooden ones) has lifespan that is decreased by 1 after each use of the sword/armor. If the lifespan reaches 0, the sword or armor will be destroyed and the player will get a wooden sword or armor instead. After successful upgrading, the lifespan of a sword/armor is reset to 100. Item Maintainic can also be used to increase the lifespan of a sword or an armor by 20.

Swords and armors play an important role in battles (attacks and ambushes). After rolling dices, swords can help to increase the damage and armors to reduce it. The player with the more powerful equipment used will get the favor in damage increase/decrease.

The sword and armor, along with their lifespans, will remain in the player equipment even after a round ends.

Special apperarences:

The respective leaders of vampires and zombies, Count Dracula and General Zombilo, will join the battle once a day at random time, for 15 minutes each. When they are around, their soldiers will have a dramatical boost in attack and defense, temporarily removing any other negative effects. When the leader leaves, his soldiers bonus stats return as they were before his arrival.

Those leaders can be attacked when they appear using the !challenge command. Be aware that they use a 12-face dice though, when the player uses a 6-face dice. A successful attack will award the player 10 score points.

End of Round:

The game will end when all players become vampires, or all players become zombies. The highscorer player will have his/her name added to the highscore table, and the round will end removing all players from the game. To participate in a new round, the players will have to type the !register command again.

List of user commands

List of admin commands

All admin commands are in the following syntax:

/msg <botname> admin <admin_passwd> <command> ...

where <botname> is the registered nick used by the bot, and <admin_passwd> is the one configured in config.yml file.

The possible commands are: