Project Evangeline

Update: Check out the changelog here!

As the intensity of my workload increases as I prepare to engage in more challenging courses, I find less time to commit myself to a game. However, as one probably knows, it is quite difficult to just get up and walk away with the friends one plays with so instead, I find myself hanging around IRC more to chat with them.

Of course, since many times the members tend to idle more in the channel than to actually chat, simply sitting in the chat room can be quite boring. The reason behind this idling is simple:

  1. User is playing a game or is preoccupied with something else. User decides to check what’s being discussed in IRC.
  2. User sees nobody talking in IRC. Instead of waiting for someone to talk, the user understandably goes back to what he was doing.
  3. Another user goes through the same routine as the first user in our example.

and so on. What essentially results is a cycle of idleness spawned from each user’s perception of lack of activity in the channel. To put it simply, nothing in the channel is their to catch the user’s interest because no one is talking. Of course from time to time someone talks. Given the Cycle of Idleness model is correct, the logical result is that a number of people begin to talk once someone has said something. This usually causes a fluctuated activity in a channel, punctuated with periods of idleness.

Such everyday problems like these pose interesting challenges for me, so naturally I decided to remedy this. Since the channel had been lacking, I had created a small irc bot named Kotoko` to manage user levels and provide commands such as !kick, !ban, and !mute. On a user’s request, I added a command called !pocky, which would cause Kotoko` to “give” the user a random flavor of Pocky with an action message. Drawing from a pool of 30+ flavors of pocky, users generally had fun with the command to discover the flavors, and even the Easter egg flavors I had hidden in the function.

As the successor to Kotoko`, one day I began to work on a new irc bot named Hyre. Hyre had the distinction of being the first bot I coded in java, rather than in the horribly limited Mirc-Script. Thus, Hyre eliminated the need for running mIRC altogether by instead running in a small, functional, console. All one would have to do is double click Hyre.jar and leave him to run off to the side. I added a number of improvements to Hyre which rendered him an effective boredom buster. A new command, !ask, would enable the user to ask Hyre a question to which he would provide a variety of amusing responses. Another favorite was !who, which would return a random member in the channel. For example, someone would ask “!who loves Hyre?” to which Hyre would respond, ” loves Hyre!”

Members would literally spend hours playing with just those two commands because of the amusing way Hyre would answer their questions. In fact, the commands, especially !who have caused Hyre to be generally hated because of his tendency to tell users what they do not wish to hear. In addition to answering questions, Hyre also tends to spend most of his time being thrashed and flamed by the channel inhabitants!

Hyre was really what the channel needed: a cause for activity. One day, I decided to step this up a notch by creating a new irc bot. I began to develop an irc bot that was a little different… something that would make the channel unique. Eventually, Evangeline` was born, and that was the end to all quiet in the channel.

Evangeline is a battle bot. She constantly keeps track of HP, MP, Levels, and more for every member in the channel. Users have the ability to attack, heal, and resurrect each other, plus a lot more. Often times, people will being to attack Hyre until his HP is down to 0 just because he said something idiotic. In addition to having HP and the like, users can also gain levels and become stronger. To make sure one’s hard work is not wasted, Evangeline also saves and loads user data as they leave and join the channel.

Evangeline + Hyre = A channel where no one can get any peace and quiet. Since the introduction of Evangeline, the number of users in the irc channel even doubled and have slowly been increasing. A number of jokes have even been made at the expense of the two bots and their different personalities, but its all in good fun.

The Project

Evangeline’s unique disposition attracted the attention of Yon, a good friend of mine who saw real potential in the bot. He remarked that Evangeline could become really addictive, especially based on the upgrades I was planning to add to her. As of current, Evangeline’s logic is as follows:

Upon performing routine irc connection behavior, instead of sitting idle, Evangeline instantiates an RPG object. The RPG object handles the different player-player interactions such as damaging each other, keeping track of members, etc. After it is instantiated, Evangeline proceeds to add each member currently in the channel to an array list in RPG. The users are added to the array list by instantiating a Player object for each user. The Player object keeps track of individual stats and HP. Data for each player is generated in a *.eva file which is named using the user’s host mask. This file is called whenever the user enters the channel as well, effectively keeping track of each user by IP address. The *.eva files contain HP, MP, and EXP values, as Max HP, Max MP, and Level are generated based on EXP from a static array in the Player class. To tie it all together, the bot listens for various onText commands to execute commands between the players, currently: !attack , !heal , and !info .

Upgrades I hope to add to Evangeline is a stat point system similar to Ragnarok Online, an inventory with equips, skill system, and random monster system. Seeing that this is starting to become a big, but fun, project, Yon decided to offer his help. Yon began to work on the “random monster system” where Evangeline would create a monster that would begin to attack a user at random to offer a chance of gaining exp and to alleviate boredom.

Unfortunately, I do not have the most time in the world to work on Evangeline, nor
do I have means to host her somehow. (I cannot run my computer 24/7). Nonetheless, she is turning out to be a fun and engaging project that I can work on with friends. I wouldn’t really mind if others could help out too…she’s practically becoming an MMO game on her own! (Hey if I can’t play ’em… make ’em?) I would also appreciate suggestions on what to add to Evangeline, or how to improve her… so please comment below!

…yes, Evangeline’s namesake is Evangeline A.K. McDowell from the Negima series. She is a evil little girl and thus an evil little irc bot.


  1. Nightmaren
    Student Council
    会長 | Class 4-B
    Seat no. 1
    Valid from: 02/18/2009 at 1:10 pm

    Nibelungen, that's a really good idea! I went ahead and made a changelog here: Changelog


  2. Fi
    Transfer Student
    Class 4-E
    Valid from: 02/15/2009 at 7:47 pm

    !kiss for Vampire bite!nom cause it's just awesome!inv to keep track of random drops after a kill


  3. Elvin
    Transfer Student
    Class 3-E

    Add equips like mah katana :DalsoAgi shortens the time for ap gain!?


  4. Nibelungen
    Transfer Student
    Class 3-A
    Valid from: 01/31/2009 at 8:58 pm

    Hmm, got a changelog site? Always curious to see what people are doing and what they are up to. Also looks like a fun system to play with.


  5. Musashiden
    Transfer Student
    Class 2-D
    Valid from: 01/28/2009 at 6:39 pm

    Wow, is there anything you can't do? coding an irc bot…you sure are talented! xDGood luck with it! =)


  6. Draco
    Transfer Student
    Class 2-D
    Valid from: 01/26/2009 at 1:11 pm

    Hmm you pretty much covered most of the stuff I was going to recommend in adding to Eva. And the random monster spawn seems to be interesting as well. Maybe we can also add status effects and such. Or a class system to specify what skills a user can have x3But yeah, baby steps. We don't need everything up and running ASAP. Just work on it at your own leasure. Part of the fun is getting a project up to speed on your own pace. I'll look forward to the stuff you'd be adding to Eva ^^


  7. Yon
    Transfer Student
    Class 2-D
    Valid from: 01/26/2009 at 7:38 am

    Well, I hope that everything will go fine for this project. It's really promising. Seriously, it's even possible for some people to get addicted by such an IRC bot, so let's make it better ! ^_^


Leave a Comment

Hi there! Are you the new transfer student? You should probably register at the faculty office first so you can get an ID. Maybe we'll be in the same class!