Wormbot IRC Reporter

Release 2

Content

If you need help with the Wormbot – be it configuration troubles, INT file customization or creating custom handler classes – feel free to post your problems, suggestions and bug reports in Wormbo's Area on UnrealAdmin.org.


Introduction

The Wormbot IRC Reporter (or just Wormbot for short) is a mutator for Unreal Tournament 2004, which combines a reporter bot and a chat relay bot. The reporter bot sends ingame events (kills, captures and so on) to a channel in an IRC network, while the chat relay bot sends ingame Say messages to the channel (TeamSay messages are not sent to IRC) and can also send IRC chat back to the UT2004 server. Depending on the configuration, the two bots can either share a single connection or use two individual connections to the IRC network.

Please remember that many IRC networks only allow a certain number of connections from a single host. For example on Quakenet you are allowed to have five of these so-called clones. Exceeding this number can result in a so-called G-line (a ban from the IRC network) for the entire host. Also some networks may not allow you to use any bots, so check the network's MOTD first.

Some other features worth mentioning:


New In This Version

New Features:

Modified Features:

Bugfixes:

There might be other changes I can't remember anymore, but you'll find them out anyway.


Installation

The Wormbot comes in a simple ZIP archive containing the following files:

WormbotReporter.u
The main mutator package.
WormbotReporter.ucl
The Wormbot's Unreal Cache Library. This file will be created by the server if it's missing.
WormbotReporter.int
The main localization file. Here you can change just about any message the Wormbot will send to IRC.
WormbotReporter.htm
This file.
WormbotHandlerAntiTCC.u & .int
The handler package for any version of Anti TCC and its localization file.
WormbotHandlerAssault.u & .int
The handler package for Assault and its localization file.
WormbotHandlerBonuspack.u & .int
The handler package for Mutant and Last Man Standing and its localization file.
WormbotHandlerInvasion.u & .int
The handler package for Invasion and its localization file.
WormbotHandlerJailbreak.u & .int
The handler package for Jailbreak and its localization file.
WormbotHandlerOLTeamGames.u & .int
The handler package for TDM4 and CTF4 and its localization file.
WormbotHandlerUTComp.u & .int
The handler package for any version of the UTComp mutator and its localization file.

Just extract the .U, .UCL and .INT files to your server's UT2004\System directory. You should restart your server afterwards so the Wormbot mutator is added to the list of available mutators.
Before you can use the Wormbot, you need to configure it. Go to the CurrentMutators page, select the Wormbot mutator and click Set Selected Mutators but do not restart the map or switch to a different map yet. Now go to the DefaultsWormbot v1 page and configure the mutator the way you want.
To enable the Wormbot as soon as the server starts you have two options:

The Wormbot doesn't have to be added to the ServerPackages list and won't be sent to clients anyway. In fact, I recommend not adding it in case a client for some reason has a different version.


Configuration

The Wormbot is almost fully configurable from UT2004's webadmin interface.
The entire configuration is stored in your server's INI file. Most of the options can be found in the section [WormbotReporter.MutWormbot], exceptions will be mentioned separately.


Reporter Bot

This section describes settings specifically applying to the reporter bot. However, these values apply to the chat relay bot as well if it is configured to reuse the reporter bot's IRC connection.

Enable IRC Reporter Bot
bEnableReporterBot
Enables the IRC reporter bot.
IRC server address
ReportServerName
IP address or DNS name of the IRC server the reporter bot should connect to.
IRC server port
ReportServerPort
Port number the reporter bot should use to connect to that server.
IRC server password
ReportServerPassword
Password required to connect to that server.
Note: This is not the channel password. You will most likely never need this, but I've added it just in case.
Nick
ReportUserNick
Nick name the reporter bot should use. It will try to append backticks (`) if the nick is already in use until it finds a nick name that is still available. Try to stay a few characters below the IRC network's nick name limit (15 characters on Quakenet) so this mechanism can do its work, otherwise the bot might not be able to connect to the IRC network in some cases.
Ident
ReportUserIdent
Ident the reporter bot should use.
This identification will usually be prefixed with a tilde (˜) by the IRC server because the Wormbot itself does not run an Identd server. Typically this user identification is 10 characters long (including the tilde character), but you shouldn't have to worry about it too much if you're not sure what it does.
IRC channel
ReportChannel
Channel the reporter bot will join and send ingame events to after connecting.
IRC channel key
ReportChannelKey
Password required to join that channel.
Set report channel topic
bSetReportChannelTopic
The reporter bot should set the topic of the IRC channel it reports to.
Channel topic template
ReportChannelTopicTemplate
This is the template used to construct the channel topic. The bot will try to match an existing topic against this one and inserts the existing user topic at the location of the %%userpart%% placeholder. The bot's own message will be added at the location of the %%botpart%% placeholder.
Be a little gentle to the bot when designing your channel topic, please. The algorithm for finding the user part of the existing topic has its limitations.
When the existing topic can't be matched against the topic template (or the template used the previous time the bot modified the topic) it will simply adopt the whole topic as the new user part of the topic. This has the advantage that a channel operator can replace the whole topic with what's supposed to go into the user part and the reporter bot will sort it out on its own.
Channel topic (reporting)
ReportChannelTopicBotPart
This is the template for the bot's part of the channel topic. Currently only the placeholders %%game%% and %%map%% are supported and will be replaced with the name of the gametype and the map respectively.
Channel topic (idle)
ReportChannelTopicBotIdle
This message will be inserted into the bot's part of the topic if there's no match in progress, for example when the bot joines the channel for the first time and the server is empty or right before the bot disconnects from the IRC server because of a map change.
Channel topic (no user topic)
ReportChannelTopicUserPart
This message is inserted to the %%userpart%% placeholder in the topic template if the channel topic is empty when the bot when the bot wants to update it.
Max. Level Change Delay
MaxLevelChangeDelay
Maximum number of seconds the reporter bot is allowed to delay a map change. This feature prevents the reporter bot from delaying the map change for too long even if the message buffer is allowed to be very long and there are still quite a lot of messages in it.
Item names
Items
This is a list of item classes and their corresponding names and mIRC-compatible color codes to report them in. Color codes can range from 0 to 15, with the following meanings:
0 = white, 1 = black, 2 = dark blue, 3 = green, 4 = red, 5 = dark red, 6 = purple, 7 = orange, 8 = yellow, 9 = neon green, 10 = dark cyan, 11 = light cyan, 12 = blue, 13 = pink, 14 = dark gray, 15 = light gray
Please remember that some people use dark backgrounds, where codes 1, 2 and 5 are hardly readable, while others are using bright backgroungs, where codes 0, 8, 9, 11 and 15 should be avoided for the same reason.
Due to limitations of the UT2004 webadmin interface this option will not show up there. However, it will be accessible if you add the Wormbot mutator to the list of active mutators in the UT2004 ingame GUI and click the Configure Mutators button.

Chat Relay Bot

The chat relay bot's configuration options are similar to those of the reporter bot, except that it will not touch the channel topic.

Enable IRC Chat Bot
bEnableChatBot
Enables the IRC chat relay bot.
Enable two-way chat
bEnableTwoWayChat
As described in the Introduction section already, the Wormbot's chat relay feature can not only send ingame chat to an IRC channel, but also user messages from the IRC channel back to the ingame console if this option is enabled.
Chat through reporter bot
bChatThroughReporter
When this option is enabled, all following options for the chat relay bot are ignored and chat is relayed through the reporter bot connection. You should consider enabling this option if there is lots of chat going on in your game, slowing down reporting of ingame events, and the number of IRC connections from your host is not an issue.
IRC server address
ChatServerName
IP address or DNS name of the IRC server the chat relay bot should connect to.
IRC server port
ChatServerPort
Port number the bot should use to connect to that server.
IRC server password
ChatServerPassword
Password required to connect to that server.
Note: This is not the channel password. You will most likely never need this, but I've added it just in case.
Nick
ChatUserNick
Nick name the chat relay bot should use. It will try to append backticks (`) if the nick is already in use until it finds a nick name that is still available. Try to stay a few characters below the IRC network's nick name limit (15 characters on Quakenet) so this mechanism can do its work, otherwise the bot might not be able to connect to the IRC network in some cases.
Ident
ChatUserIdent
Ident the chat relay bot should use.
This identification will usually be prefixed with a tilde (˜) by the IRC server because the Wormbot itself does not run an Identd server. Typically this user identification is 10 characters long (including the tilde character), but you shouldn't have to worry about it too much if you're not sure what it does.
IRC channel
ChatChannel
Channel the chat relay bot will join and send chat to after connecting. In two-way chat mode other users' messages in this channel will be sent to the ingame console.
IRC channel key
ChatChannelKey
Key required to join that channel.
IRC trigger string
ChatTrigger
Trigger string required if an IRC text message should be seen in the game, e.g. !say. Users on IRC will have to prefix their messages with this trigger if they want to chat with the players on the server.
Receive only text
bChatReceiveOnlyText
Whether the Chat Replay Bot should only send text to the game. when enabled, no nick changes or users entering/leaving the channel will be seen in the game.

Connection Options

The Wormbot tries to mimic an IRC server's flood protection features with the first five of the following options. Basically an IRC server has a counter for each user which is increased by a certain amount for every message the user sends. The counter is decreased by 1 every second but will never go below zero. If the counter exceeds a certain amount, usually 10, additional messages are queued in a fixed-sized buffer until the counter drops below the allowed maximum value. Should a user send more or longer messages than there is space available in the buffer the user is kicked for Excess Flood.

Flood protect command penalty
FloodProtectCommandPenalty
How much each command increases the delay counter. This value is specified in milliseconds to allow more precise fine-tuning.
Flood protect message penalty
FloodProtectMessagePenalty
How much each text message increases the delay counter. This value is specified in milliseconds to allow more precise fine-tuning.
Flood protect max. penalty
FloodProtectMaxPenalty
This is the upper bound which may not be exceeded if messages are to be processed immediately ba the server.
Flood protect bytes
FloodProtectBytes
This option specifies, how many bytes the IRC server's message buffer probably handles. The bot will never send more bytes to the IRC server in a single command than this amount. Also it will try to prevent the IRC server's message buffer from containing more than this number of bytes.
Note: No matter how much your IRC server allows the bot to flood, keep this value above 0 because otherwise the bot's messages will get truncated.
Flood protect bytes duration
FloodProtectBytesDuration
How long is the time interval for the byte count flood check.
Max. message queue length
MaxLenMessageQueue
How many messages may be in the message queue before the whole queue is dropped to catch up with gameplay.
Auto-reconnect
bAutoReconnect
Automatically reconnect after connection failure.
Auto-rejoin
bAutoRejoin
Automatically rejoin channel after getting kicked. Otherwise wait for invite.
Connect timeout
ConnectTimeout
Wait this long before considering a connection attempt to have timed out.

Quakenet Auth

Auth on Quakenet
bAuth
The bots will try to auth when connecting to Quakenet.
Use Challenge Auth
bChallengeAuth
The bots will use Challenge Auth so the password will never be sent in plain text.
Hide real host
bHideRealHost
The bots will set user mode +x and only join the report/chat channel(s) after they have authed.
Nick
AuthNick
The user name the bots should auth with.
Password
AuthPassword
The password associated with the auth nick.

Debugging Options

Log file name
DebugLogFileName
Name of the log file the raw IRC traffic is written to. Setting this to a non-empty value will dump the entire IRC traffic to the specified file in the UserLogs directory.
Note: This will also log any passwords sent in plain text!
Auto-start match
bDebugStartMatch
Force-start the match once the reporter bot has joined the channel.

Gametype-specific Options

These options are stored separately for each game handler, not actually for each gametype.

Report Kills
ReportKills
Whether the bot should report all (INI value: 2), only important (INI value: 1) or no (INI value: 0) death messages.
Report Multi Kills
bReportMultiKills
Report Multi Kills. If the death message causing the multi kill is reported, the multi kill message will be appended to it, otherwise a separate message is generated.
Report Killing Sprees
bReportKillingSprees
Report First Blood and Killing Sprees.
Report Locations
bReportLocations
Report location names for kills, pickups and other events.
Report Weapons
bReportWeapons
Report the weapon name in kill messages.
Report Pickups
ReportPickups
Report when super items or super weapons are picked up. If this is set to Important (INI value: 1), only items marked as important in the Items list are reported.
Report Special Events
bReportSpecialEvents
Report special events like 'Flak Monkey' as well as headshots, combos or special vehicle kill messages.
Score report delay
ScoreReportDelay
The reporter bot will send each team's scores and a player scoreboard to the IRC channel once in a while. This value tells the bot, how long it should wait after an update on (team) scores before it should send the scoreboard again. Leader changes in Team Deathmatch and team scoring in non-deathmatch gametypes are not affected by this, but those events count as score update against this interval. The scoreboard will not be sent again if scores didn't change in the mean time.

The Onslaught game handler has some additional options:

Report node locations
bReportNodeLocations
Add the location relative to the center of the map to each powernode's and powercore's name.
Report nodes in scores
bReportNodesInScores
Report the status of all powernodes right after reporting the scoreboard.
Core health report interval
CoreHealthReportInterval
Minimum time before reporting powercore health again.
Core attack report interval
CoreAttackReportInterval
Minimum time before repeating, that a specific powercore is under attack.

Game Handlers

The game handlers are configured in the [WormbotReporter.WIR_GameHandler] section, along with the gametype-specific options for unknown gametypes.
Each game handler is specified on its own line, like this:

GameHandler=(Game="xDeathMatch",Handler="WIR_GameHandler_DM")

Due to limitations of the default webadmin interface the game handler configuration is not available there, but it will show up in the mutator configuration if you add the Wormbot to the mutators list for a stand-alone game.

Game
Either just the name (e.g. xDeathMatch) or the full class name (e.g. xGame.xDeathMatch) of the gametype class.
Handler
The name (e.g. WIR_GameHandler_DM) or the full class name (e.g. WormbotReporter.WIR_GameHandler_DM) of the handler class for this gametype. If the package name is omitted, WormbotReporter is asumed.

Currently the Wormbot supports all stock gametypes as well as TDM4, CTF4 and Jailbreak. Really basic support for Chaos UT is there as well, but don't expect too much yet. Other gametypes might be supported by default as well or if you configure the correct handler class for them. You can also reuse the same game handler for multiple gametypes, if the handler supports them. These gametypes will share the handler's gametype-specific configuration, though.


Mod Handlers

The mod handlers are configured in the [WormbotReporter.WIR_ModHandler] section.
Each mod handler is specified on its own line, like this:

ModHandler=(ActorClass="MutAntiTCCFinal",Handler="WormbotHandlerAntiTCC.WIR_ModHandler_AntiTCC")

Due to limitations of the default webadmin interface the mod handler configuration is not available there, but it will show up in the mutator configuration if you add the Wormbot to the mutators list for a stand-alone game.

ActorClass
Either just the name (e.g. MutAntiTCCFinal) or the full class name (e.g. AntiTCC118c.MutAntiTCCFinal) of a class specific to this mod. Usually the mod's mutator class is the best choice here. If the mod doesn't have a mutator you can try its ServerActor class, though the author must have coded it as a subclass of Engine.Info, otherwise the Wormbot won't find it.
Handler
The full class name (e.g. WormbotHandlerAntiTCC.WIR_ModHandler_AntiTCC) of the handler class for this mod.

You can reuse the same mod handler for multiple mods, if the handler supports them. For example the Anti TCC handler is configured for MutAntiTCC and MutAntiTCCFinal.


Default Configuration

This section lists the Wormbot's default INI configuration. This is only for reference, you do not have to actually copy it to your INI file.

[WormbotHandlerAntiTCC.WIR_ModHandler_AntiTCC]
bReportKickReason=True

[WormbotReporter.WIR_ModHandler]
ModHandler=(ActorClass="MutAntiTCC",Handler="WormbotHandlerAntiTCC.WIR_ModHandler_AntiTCC")
ModHandler=(ActorClass="MutAntiTCCFinal",Handler="WormbotHandlerAntiTCC.WIR_ModHandler_AntiTCC")
ModHandler=(ActorClass="MutUTComp",Handler="WormbotHandlerUTComp.WIR_ModHandler_UTComp")

[WormbotReporter.WIR_GameHandler]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120
GameHandler=(Game="xDeathMatch",Handler="WIR_GameHandler_DM")
GameHandler=(Game="xTeamGame",Handler="WIR_GameHandler_TDM")
GameHandler=(Game="xDoubleDom",Handler="WIR_GameHandler_DoubleDom")
GameHandler=(Game="xCTFGame",Handler="WIR_GameHandler_CTF")
GameHandler=(Game="InstaGibCTF",Handler="WIR_GameHandler_ICTF")
GameHandler=(Game="xBombingRun",Handler="WIR_GameHandler_BombingRun")
GameHandler=(Game="ONSOnslaughtGame",Handler="WIR_GameHandler_Onslaught")
GameHandler=(Game="xVehicleCTFGame",Handler="WIR_GameHandler_VCTF")
GameHandler=(Game="xMutantGame",Handler="WormbotHandlerBonuspack.WIR_GameHandler_Mutant")
GameHandler=(Game="xLastManStandingGame",Handler="WormbotHandlerBonuspack.WIR_GameHandler_LMS")
GameHandler=(Game="Invasion",Handler="WormbotHandlerInvasion.WIR_GameHandler_Invasion")
GameHandler=(Game="OLTeamDeathmatch",Handler="WormbotHandlerOLTeamGames.WIR_GameHandler_OLTDM")
GameHandler=(Game="OLCTFGame",Handler="WormbotHandlerOLTeamGames.WIR_GameHandler_OLCTF")
GameHandler=(Game="ASGameInfo",Handler="WormbotHandlerAssault.WIR_GameHandler_Assault")
GameHandler=(Game="Jailbreak",Handler="WormbotHandlerJailbreak.WIR_GameHandler_Jailbreak")
GameHandler=(Game="ChaosxDeathMatch",Handler="WIR_GameHandler_DM")
GameHandler=(Game="ChaosxTeamDeathMatch",Handler="WIR_GameHandler_TDM")
GameHandler=(Game="ChaosxDoubleDom",Handler="WIR_GameHandler_DoubleDom")
GameHandler=(Game="ChaosCTF",Handler="WIR_GameHandler_CTF")

[WormbotHandlerAssault.WIR_GameHandler_Assault]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=1
bReportSpecial=True
ScoreReportDelay=120

[WormbotHandlerBonuspack.WIR_GameHandler_LMS]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotHandlerBonuspack.WIR_GameHandler_Mutant]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotHandlerInvasion.WIR_GameHandler_Invasion]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=90

[WormbotHandlerJailbreak.WIR_GameHandler_Jailbreak]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotHandlerOLTeamGames.WIR_GameHandler_OLTDM]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotHandlerOLTeamGames.WIR_GameHandler_OLCTF]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotReporter.WIR_GameHandler_ICTF]
ReportKills=1
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotReporter.WIR_GameHandler_TDM]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotReporter.WIR_GameHandler_VCTF]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotReporter.WIR_GameHandler_DM]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotReporter.WIR_GameHandler_DoubleDom]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotReporter.WIR_GameHandler_CTF]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotReporter.WIR_GameHandler_BombingRun]
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=2
bReportSpecial=True
ScoreReportDelay=120

[WormbotReporter.WIR_IRCConnection]
LastTopicTemplate=

[WormbotReporter.WIR_GameHandler_Onslaught]
bReportNodeLocations=True
bReportNodesInScores=True
CoreHealthReportInterval=15
CoreAttackReportInterval=10
ReportKills=2
bReportMultiKills=True
bReportKillingSprees=True
bReportLocations=True
bReportWeapons=True
ReportPickups=1
bReportSpecial=True
ScoreReportDelay=120

[WormbotReporter.MutWormbot]
bEnableReporter=False
ReportServerName=irc.quakenet.org
ReportServerPort=6667
ReportServerPassword=
ReportUserNick=
ReportUserIdent=wormbot
ReportChannel=
ReportChannelKey=
bSetReportChannelTopic=False
ReportChannelTopicTemplate=%%userpart%% | Reporting: %%botpart%%
ReportChannelTopicBotPart=%%game%% on %%map%%
ReportChannelTopicBotIdle=No match in progress.
ReportChannelTopicUserPart=No user topic set.
MaxLevelChangeDelay=60
bEnableChatbot=False
bEnableTwoWayChat=False
bChatThroughReporter=True
ChatServerName=irc.quakenet.org
ChatServerPort=6667
ChatServerPassword=
ChatUserNick=
ChatUserIdent=wormbot
ChatChannel=
ChatChannelKey=
ChatTrigger=
bChatReceiveOnlyText=True
bAuth=False
bChallengeAuth=True
bHideRealHost=True
AuthNick=
AuthPassword=
FloodProtectCommandPenalty=2000
FloodProtectMessagePenalty=2750
FloodProtectMaxPenalty=10
FloodProtectBytes=512
FloodProtectBytesDuration=10
MaxLenMessageQueue=30
bAutoReconnect=True
ReconnectDelay=10
bAutoRejoin=True
ConnectTimeout=60
items=(ItemClass="UDamagePack",ItemName="Double Damage",Important=True,IRCColor=13)
items=(ItemClass="ShieldPack",ItemName="Shield Pack",Important=False,IRCColor=7)
items=(ItemClass="SuperShieldPack",ItemName="Super Shield Pack",Important=True,IRCColor=7)
items=(ItemClass="SuperHealthPack",ItemName="Big Keg O' Health",Important=True,IRCColor=12)
items=(ItemClass="RedeemerPickup",ItemName="Redeemer",Important=True,IRCColor=10)
items=(ItemClass="PainterPickup",ItemName="Ion Painter",Important=True,IRCColor=10)
items=(ItemClass="GravBeltPickup",ItemName="Grav Belt",Important=True,IRCColor=14)
items=(ItemClass="JumpbootsPickup",ItemName="Jump Boots",Important=True,IRCColor=12)
items=(ItemClass="VortexPickup",ItemName="Gravity Vortex",Important=True,IRCColor=10)
items=(ItemClass="ChaosRelicPickup_Armor",ItemName="Chaos Relic of Protection",Important=True,IRCColor=7)
items=(ItemClass="ChaosRelicPickup_Damage",ItemName="Chaos Relic of Strength",Important=True,IRCColor=4)
items=(ItemClass="ChaosRelicPickup_Regen",ItemName="Chaos Relic of Regeneration",Important=True,IRCColor=3)
items=(ItemClass="ChaosRelicPickup_Speed",ItemName="Chaos Relic of Speed",Important=True,IRCColor=12)
items=(ItemClass="ChaosRelicPickup_Vampire",ItemName="Chaos Relic of Vampirism",Important=True,IRCColor=6)
items=(ItemClass="ChaosRelicPickup_Vengeance",ItemName="Chaos Relic of Vengeance",Important=True,IRCColor=7)
DebugLogFileName=
bDebugStartMatch=False

Customizing Reported Text

Almost everything the Wormbot will send to IRC is stored in .INT files, which can be edited with a plain text editor. Some strings are taken from the UT2004 INT files, so if you can't find something in the Wormbot INT files, try looking there.
If you feel that the INT files don't provide the modification options you were looking for and you know at least a little UnrealScript (or are willing to learn it) you can try to write new game or mod handler classes. Please don't modify any existing packages, though. Always create subclasses in your own package(s)!