News:

Forum changes: Editing of posts has been turned off until further notice.

Main Menu

Look! Up in the sky! It's the CapesBOT!

Started by Kai_lord, August 22, 2006, 06:53:58 PM

Previous topic - Next topic

Kai_lord

Well, as Hans requested, I'm officially announcing my Capes IRC bot. It's designed to track turn order and conflicts in a IRC Capes game. As of right now, it doesn't have a save/load feature, but I'm looking to add that, as well as tracking characters, debt, and players.

Right now, it supports the following commands:


  • conflict: Sets a new conflict (either a goal or an event). Note: there is nothing to stop you starting your conflict however you want. However, starting with Goal:, or Event: is recommend, just as with a tabletop game of Capes.
    To use, type: !conflict <Conflict text.>

    Example: !conflict Goal: The Iron Brain kills an innocent.
  • Output: Goal: The Iron Brain kills an innocent. has been added.
  • goals: Gives a list of all the conflicts in play (goals or events).
    To use, type: !goals

    Example output:
    1) Goal: The Iron Brain kills an innocent. *Side A*: TheIronBrain; Side B: None
    2) Goal: Defeat all villains in combat Side A: None; Side B: None

    The stars around Side A mean that it is the controlling side. The list of characters are those allied with a side.
  • details: Gives a detailed view of a conflict.
    To use, type !details <conflict number>

    Example: !details 1
    Output:
    A: 3. Stakes: None. Allies: TheIronBrain.
    B: 1. Stakes: None. Allies: None.
  • roll: Rolls a die on a conflict.
    To use, type !roll <up or down> <character name> <conflict number> <side letter> <die number>
    Up or down is optional. If up is selected, only a roll higher than the current value will be accepted. If down, only a lower roll will be accepted.

    Example: !roll up TheIronBrain 1 A 1
    Output:
    The die roll was: 3
    Goal: The Iron Brain kills an innocent.
    A: 3. Stakes: None. Allies: TheIronBrain.
    B: 1. Stakes: None. Allies: None.
  • stake. Stakes debt on one side of a conflict.
    To use, type: !stake <character name> <debt amount> <debt type> <conflict number> <side letter>

    Example: !stake TheIronBrain 2 despair 1 A
    Output:
    Goal: The Iron Brain kills an innocent.
    A: 3. Stakes: TheIronBrain: 2 dispair. Allies: TheIronBrain.
    B: 1. Stakes: None. Allies: None.
  • split. Used to split the dice.
    To use, type: !split <character name> <conflict number> <side letter> <die number> <total debt to split to>

    Example: !split TheIronBrain 1 A 1 2
    Output:
    Goal: The Iron Brain kills an innocent.
    A: 1, 2. Stakes: TheIronBrain: 2 dispair 1, 2. Allies: TheIronBrain.
    B: 1. Stakes: None. Allies: None.
  • insp. Used to set a die using an inspiration.
    To use, type: !insp <character name> <conflict number> <side letter> <die number> <value to set the die>

    Example: !insp TheIronBrain 1 A 1 5
    Output:
    Goal: The Iron Brain kills an innocent.
    A: 5, 2. Stakes: TheIronBrain: 2 dispair 5, 2. Allies: TheIronBrain.
    B: 1. Stakes: None. Allies: None.
  • claim. Used to claim a side.
    To use, type: !claim <character name> <conflict number> <side letter>

    Example: !claim TheIronBrain 1 A
    Output:
    Goal: The Iron Brain kills an innocent.
    A: 5, 2. Claimed by TheIronBrain. Stakes: TheIronBrain: 2 dispair 5, 2. Allies: TheIronBrain.
    B: 1. Stakes: None. Allies: None.
  • schism. Used to split off a new side.
    To use, type: !schism <character name> <conflict number> <side letter> <# of dice to take with you>

    Example: !schism Tesla 1 A 3
    output:
    Goal: The Iron Brain kills an innocent.
    A: 1, 1. Claimed by TheIronBrain. Stakes: TheIronBrain: 2 despair 1, 1. Allies: TheIronBrain.
    B: 1. Stakes: None. Allies: None.
    C: 1, 2, 1. Stakes: Tesla: 3 pride 1, 2, 1. Allies: None.
  • check. Checks which conflicts will resolve at the end of the page.
    To use, type: !check

    Example output:
    The following conflicts will resolve at the end of the page.
    1) Goal: The Iron Brain kills an innocent. Side A: TheIronBrain; Side B: None; *Side C*: None
  • gloat: Allows players to gloat a goal. This will remove any claims, so that the conflict will not resolve the next page.
    To use, type: !gloat <character name> <conflict number> <side letter>

    Example: !gloat Tesla 1 C
    Output:
    Goal: The Iron Brain kills an innocent.
    A: 1, 1. Stakes: TheIronBrain: 2 despair 1, 1. Allies: TheIronBrain.
    B: 1. Stakes: None. Allies: None.
    C: 1, 2, 1. Stakes: Tesla: 3 pride 1, 2, 1. Allies: None.
    Tesla's player gets 3 story tokens.
  • endpage. Ends the page. Determines what conflicts resolve, clears all claims, and removes resolved conflicts. Reminds who the next page starter is, and if a new scene has started, who the new scene starter is as well.
    To use, type: !endpage

    Example output:
    1) Goal: The Iron Brain kills an innocent.'s controlling side was not claimed.
    2) Goal: Defeat all villains in combat is resolved by MajorVictory for side A. Dice: A: 3; B: 1. Debt returned: . Story tokens to award:
    New page starter: Kai_Lord. Note conflict numbers may have changed.

    Example output 2:
    1) Goal: The Iron Brain kills an innocent. is resolved by MajorVictory for side C. Dice: A: 1, 1; B: 1; C: 1, 2, 1. Debt returned: TheIronBrain 4 despair. . Story tokens to award: Tesla 3 story tokens.
    All conflicts for the page are resolved. Start new scene. Scene starter: Kai_Lord
    [li]player. Adds and removes players to the turn order.
    To use, type: !player <add, remove, or list> <player name>
Current Verson of Capes IRC Bot, CapesVTT:
Get it
here
.

Bret Gillan

Wowzers. I'm going to have to dust off mIRC.

Kai_lord

It's actually a Java program, so as long as you have the latest JRE, you should be able to run it. It's not quite ready for primetime yet, though. I still need to add the save/load feature, and there are still some rough spots  that need ironing out. For instance, there's no user interface to speak of, and it's hardcoded to connect to one channel on one server. Give me about a week, and then I'll put it up for download.
Current Verson of Capes IRC Bot, CapesVTT:
Get it
here
.

Andreas

Will the source code for the bot be available?

Kai_lord

Of course. However, I didn't code the IRC connection myself - I'm using PIRCbot framework (at http://www.jibble.org/pircbot.php) to handle that. My code is perfectly safe, but you might want to check them out if you're nervous.

Now, if anyone wants to test it, I'll be leaving up at: irc://linuxguy.magicstar.net/CapesBotTest
tonight until about 8 pm while I'm at work, and then I will be working on getting the save/load up and running. Have fun, and if anyone can break it, I'd be very happy. Bug hunting is always the most time consuming part of writing software.
Current Verson of Capes IRC Bot, CapesVTT:
Get it
here
.

Hans

Quote from: Kai_lord on August 22, 2006, 08:05:20 PM
Well, as Hans requested, I'm officially announcing my Capes IRC bot.

Thanks, Kai_Lord (Michael, right?).  This is great, great stuff.  I know nothing about IRC, but this is enough to make me want to learn.

Hans
* Want to know what your fair share of paying to feed the hungry is? http://www3.sympatico.ca/hans_messersmith/World_Hunger_Fair_Share_Number.htm
* Want to know what games I like? http://www.boardgamegeek.com/user/skalchemist

Kai_lord

Well, folks, we have a good news, bad news, good news situation.

First the good news - the public release of the Capes IRC Bot should be happening sometime on Thursday, assuming that no major bugs show up in the game Wednesday night. I'll be posting a link to the files once I get it online. Additional features in this verson:

  • A private option for most of the information commands (goals, details, and player list among them) which sends the information directly to you, instead of the channel.
  • A working player list, with the option of inserting a player anywhere in the list.
  • The ability to serve more that one game per bot instance. Each channel the bot is on gets it's own game.
  • A few minor bug fixes to bring the bot in compliance with the Capes rules.

Now, the bad news. Other than fixing bugs that are brought to my attention, I will not be working on the CapesBot any more.

However, this leads to my second bit of good news: I will be spending my spare time developing the Capes Virtual Tabletop, an application devoted to playing Capes online. It will fully implement the Capes ruleset.
Current Verson of Capes IRC Bot, CapesVTT:
Get it
here
.

arcane

I look forward to the CVTT.

--Look up in the sky, it's... A rabbid eggplant?

Bret Gillan

What are you using to develop this application, Kai?

AaronLehmann

Kai --

Are you planning to make the source available?  I'd like to try porting it to Python, and take over.  It'll get me current on Java, and give me something to poke on. 

Aaron Lehmann

Kai_lord

Bret - I'll be working in Java, just as with the Capes bot.

Aaron - As I said above, yes, I'll be releasing the source, I just want to make sure that there are no major bugs on Wednesday, and then I'll be posting both the .jar and the source online.
Current Verson of Capes IRC Bot, CapesVTT:
Get it
here
.

Kai_lord

Well for anyone who's interested, the very first verson of the CapesVTT is available for a look see. Warnings - this is prealpha software, and requires the JRE 5.0 to run. This is not completely functional, but it will let you chat with and send new characters to everyone connected to the same game. You can also double click to view the characters. Beware, though. Edits will change your local copy of the character, but will not yet update the server or other clients. It also more than likely has bugs - lots of them, and is majorly fugly. Still we've taken that first step on the 1000 mile journy.
Current Verson of Capes IRC Bot, CapesVTT:
Get it
here
.