Welcome to KoL CLI 0.98e! This manual is a rather makeshift attempt to introduce people to the basics of using the program. Contents: 1) System Requirements; Installing and Running KoL CLI 2) Basic Commands 3) Advanced Features and Macros 4) Questions and Answers DISCLAIMER: THIS PRODUCT IS PROVIDED "AS IS". NO WARRANTY, EXPRESS OR IMPLIED, IS GIVEN. USER ASSUMES RESPONSIBILITY FOR RISK OF ANY UNEXPECTED BEHAVIOR OF PRODUCT. ====================================================== 1. System Requirements; Installing and Running KoL CLI ====================================================== --- Mac OS X and Linux/Unix instructions --- In order to run KoL CLI, you must have perl (version 5) installed on your system, as well as curl. In OS X, these are installed by default, so KoL CLI should run without you having to do anything. In most modern distributions of Linux/Unix, these are also installed by default. If for whatever reason you don't have curl installed, you can grab an appropriate package from http://curl.haxx.se/. If you don't have Perl installed either, then I'm sure you can figure out how to get it. Download the .tar.gz file and extract it using tar -vxzf kolcli.tar.gz This will create a kolcli/ directory, containing two files: this manual and kol.pl, the main script. To run the script, merely go to the directory and type ./kol.pl You can also specify your username on the command line thusly: ./kol.pl mycharacter --- Windows instructions --- Installation on a Windows machine is also possible, albeit tricky. 1) First you'll need to install ActivePerl from here: http://www.activestate.com/Products/ActivePerl/?_x=1 (click the Download link at the very bottom of the page). If you use the installer package provided, make sure you choose to set your Path to include Perl and to associate Perl with Perl documents. 2) Then install the win32 generic binary version of curl from http://curl.haxx.se/download.html#Win32. (Note: If you install the version with SSL support, you'll need a copy of libeay32.dll, which is not included due to encryption restrictions. KOL does not, at this time, require SSL in any way, so downloading the non-SSL version should be fine. If Jick ever puts in any kind of encryption, this may change. Thanks to Squiffle for figuring this out!) 3) Put curl in your path. (If you installed Perl properly, it should have already been added to your path; if not, then you might need to add it too.) To edit your path (in Win XP; procedures may vary for other Windows flavors), go to Control Panel >> System, choose the "Advanced" tab, click the "Environment Variables" button, and edit "Path". Make sure that the directories where curl and Perl reside are in the path. Now, download and extract the .tar.gz file, using WinZip or equivalent. To run the script, open up a command prompt and type "kol.pl". You can also double-click on kol.pl itself, but this means you can't give any command-line arguments (also, unless you set otherwise, the window will close immediately on finishing, so you can't go back and read everything that happened). If kol.pl refuses to recognize any command-line arguments, make sure you're set up to invoke Perl on .pl documents as follows: "C:\Perl\bin\perl.exe" %1 %* (or whatever the path to perl.exe is on your system). --- Proxies --- If you use an HTTP proxy, you'll need to tell curl to use that. There are two ways to do this: 1) (Works on any system) Edit kol.pl and find this line (it should be the first line in start_new_user()): $options = "-L $ua $cookies --silent "; Change this to "-L $ua $cookies --silent --proxy proxyhost ", where proxyhost is the address of the desired HTTP proxy. You can use the host:port syntax if you need to specify a specific port other than the default of 1080. 2) (Works on Unix/Linux machines only) Set the environment variable http_proxy to the address of the proxy (again, using host:port syntax if necessary). --- Once you've started the script --- When you start the script, it will prompt you for your username (if not specified on the command line) and password, and then connect to the KoL server. It will then display the current status of your character, followed by a command prompt: > ==========WARNING========== Your password WILL be displayed on the screen, so don't type it in if anyone nefarious is lurking over your shoulder. ==========WARNING========== To figure out what to do next, read on. ================= 2. Basic Commands ================= Nearly all commands in KoL CLI have the form of . All commands are case-insensitive. For example, > adventure valley 20 # will adventure in the valley for 20 turns > buy gum 5 # will buy 5 wads of chewing gum > familiar mosquito # will take your mosquito along with you If no number is specified, KoL CLI will default to 1. (Some commands, like "familiar" above, don't take a number.): > drink saltydog # chugs one salty dog If you're stuck, you can always type "help" to get a list of verbs or "help " to get help on a particular verb. You can always abbreviate either verbs or objects, as long as the abbreviation is unambiguous. For instance, instead of typing > adventure valley 20 you can type > adv val 20 or even > a v 20 But if you type > c you'll get "Ambiguous command: campground, clan" since "c" could mean either of those. You need to type at least "ca" or "cl" respectively. In most cases, two letters is sufficient, with only a couple of exceptions ("rest" and "relax", for example). Note, in general, KoL CLI will stop whenever it can't do any more. So, if you want to spend all of your adventures in the valley, you can do > adventure valley 999 and it'll just stop when you run out of adventures. A # sign will begin a comment; anything after a # sign is ignored. This is useful if you want to build scripts with comments. Following is a list of commands, in alphabetical order. * adventure []: Adventure in location for turns. Type "help adventure" to see a list of all areas you can adventure in. In general, you can adventure in any area except for quest areas (e.g. the Cyrpt). If you choose to adventure in disguise, the appropriate outfit will be automatically equipped (assuming you have it). Note that automatically equipping accessories (such as the Talisman O' Nam) is not implemented yet, so you'll need to do it yourself. At the end of adventuring, the total list of items obtained is displayed. * buy []: Buy of from Market Square. Currently only "gum", "fermenting", "hairspray", and the various Doc Galaktik potions are supported. * buff []: Give turns of buff . This command allows you to buff other players. Players may be specified either by ID or by player name: > buff polka Ragnok 10 # cast Polka ten times on me > buff polka 49653 10 # same If you have a player with a multi-word name, then put it in quotes: > buff polka "Multiword Character Name" 10 If you're casting on a target which has all numbers as its name, you can also enclose that in quotes: > buff polka "49653" 10 # cast 10 polkas on a player named "49653" Note that you MUST provide a target. If you do something like "buff ode 5", you won't cast 5 turns of Ode on yourself, you'll cast one turn of Ode on player #5. (If you want to cast buffs on yourself, you can use "skill" -- "skill ode 5" will cast 5 turns of Ode on yourself.) * campground []: Perform in your campground times. The following actions are possible: rest, relax, evilfood, toast, noodles, and scrumptious. * clan []: Perform in your clan hall times. You can donate money to the clan stash using "clan donate". If you're the clan leader, you can also use this command to purchase benefits for your clan members. Use, e.g., "cmoxie" to buy a cheap moxie boost, or "ntmuscle" to buy a normal temporary muscle boost. * donate []: Donate meat to the shrine of . This allows you to donate to the shrines in the Hall of Legends of the Times of Old. You can specify either "boris", "jarlsberg", or "sneakypete", or just "muscle", "mysticality", or "moxie". * drink []: Drink of . This allows you to consume alcoholic beverages. Use "help drink" for a full list. * eat []: Eat of . This allows you to eat food. Use "help eat" for a full list. * execute []: Execute with argument . This allows you to execute macros. For more details, see "Macros" in Section 3. * familiar : Bring along familiar . This allows you to take a given familiar out of your terrarium and bring it along with you. * getbuff []: Use the buffbots to obtain buff times. There are two automated buffbots (Petal and Lawrence Welk) in the kingdom. Using "getbuff" will automatically send the appropriate amount of meat to request a given buff from them; you'll get the buff in 15-30 seconds (assuming they're online). You can request nearly any Turtle Tamer or Accordion Thief buff from them. NOTE: As of 1/12/05, the buffbots have been offline for several weeks and I don't know if or when they'll be back. For now, the code checks to see if they're offline and will not send meat if they are. If you want to override this check, set checkbuffbots to 0. But be warned that this may cause your meat to disappear into a black hole. * gym []: Work out in the clan gym doing times. You can specify activity either by the apparatus: "hoboflex", "bigbook", and "tanulots", or by what you gain: "muscle", "mysticality", or "moxie". * help []: Display help (for if specified). I hope this has already been explained. * hermit []: Obtain item from the hermit times. This will allow you to repeatedly trade worthless items to the hermit for useful items. * junk : Sell all junk items you obtained from area . This is a convenient feature for people who spend a large amount of time farming. Let's say you're farming in the Valley Beyond the Orc Chasm. At the end of the day, you can type "junk valley" and KoL CLI will automatically autosell all worthless items gathered from that location. Thanks to PumpkinEve, junk is now available for nearly every area supported by KoL CLI. Since one man's junk is perhaps another man's treasure, you might want to have a look at %junkobjs in the code to see exactly what it considers junk. If you want to remove an item from the list of items to be junked, just delete the number in the list. * logout: End your session. * mallbuy []: Buy of from the mall. This buys a selected item from the mall. Note that there is no mallbot functionality here nor will there ever be; rather, it only buys items from BoozerBear's and other stores which always have the item in stock and at a fixed price. Hence, you can only buy "bloodybeer", "esbm", "elixir", "salty", "lotion", "elixir", or "jug". * mix []: Mix of from ingredients. This will attempt to mix up the specified drink. Obviously you have to have the required ingredients. Note that "mix" does not deal well with your bartender-in-a-box exploding, so if this happens, you'll have to clean up the parts yourself. * outfit : Equip . This will equip the desired outfit. Note that KoL CLI doesn't allow you to change individual pieces of equipment (yet), only the outfit. * quit: End your session. * repeat: Repeats the previous command. Note that if you just executed a macro, repeat will just repeat the last command in the macro, not the whole thing. * send []: Send of to . Currently this only supports "meat" and "beer". These are more intended as examples for you to build your own send arguments to. If you put any arguments after the end of the "send" command, then these will be placed into the text of the message. If you want to just send a message, then use send with 0 meat: > send meat another_player 0 Hello there! * set : Set to . If no parameter is specified, displays the current value of all parameters. See "Parameters" in section 3 below. * shore []: Take a vacation to times. This will go down to the Shore and take a vacation. You can specify either the location: "ranch", "island", or "ski", or the stat to be gained: "muscle", "mysticality", or "moxie". * skill []: Use skill times. This will use a given skill on yourself. It can be used either for skills or buffs, but it can only be used for buffs on yourself (to buff other people, use the "buff" command). * status: Display your character's status. This will display some status about your character: your HP, MP, Meat, adventures remaining, drunkenness, any effects, and your current familiar. * switch : Log out your current character and log in with . This will switch your current character. If you don't have the new character in your config file, you'll be prompted again for a password. If you new character has spaces in the name, you'll need to enclose the name in quotes. * togglemode: Switch between compact and full mode. * trinket []: Obtain trinkets from The Sewer. This will repeatedly buy gum and adventure in the sewer until you have obtained the desired number of trinkets. * use []: Use times. This allows you to use individual items. If "use multiple" is available for this particular item, then KoL CLI will use them all at once; if it is not available (for example, scrolls of pasta summoning), it will use them one at a time. As usual, see "help use" for a full list of items. ==================== 3. Advanced Features ==================== 3.1 Automatic Reconnection If your connection should happen to time out or you get an invalid session ID (possibly from also connecting in a browser), KoL CLI will automatically reconnect. If KoL is down for nightly maintenance or for some other reason, then KoL CLI will not try to reconnect. There is a limit on the number of reconnections to prevent unnecessary server abuse should something go horribly wrong. 3.2 "Adventure Until" Suppose, instead of adventuring 10 adventures in the Valley, I want to adventure until I have 10 adventures left. You can write this as > adventure valley until 10 or just > a v u 10 You can also do this with the clan gym, or the shore (yes, it will divide by 3 correctly). You can even pull nifty stunts like this: > buy gum until 10 > adventure sewer until 10 This will buy exactly enough gum for the next step, adventuring in the sewer until you have 10 adventures left. 3.3 Quest Mode When using "adventure until", you can even go one step further, by providing an item to look for: > adventure palindome until papaya 5 This will keep adventuring in the palindome until you have acquired 5 papayas. If you want to set a maximum number of adventures (so that you'll adventure until you get 5 papayas or spend, say, 50 adventures, whichever comes first), then set the questmax variable to the desired maximum number of adventures to spend on your quest. (The default is 0, or no limit.) To specify a multiword item, enclose it in quotes: > adventure km3 until "bottle of gin" 3 Usually though, you only need to specify as much as necessary to uniquely identify the item, so > adventure km3 until gin 3 will work fine too. If you want, you can also do something like: > adventure km3 until bottle 3 which will keep adventuring until you've got three bottles of anything. In some cases you might need to use quotes to eliminate ambiguity: > adventure valley until "334" If you leave off the quotes, KoL CLI will instead try to adventure until you have 334 adventures left, which probably won't work very well. Beware! If you misspell an item, thenn KoL CLI will adventure futilely in search of that item until you hit the limit or run out of adventures: > adventure palindome until papya 5 will keep looking for a "papya", and will fail to find it. If you're a bad typist and worried about this happening, you can define @questobjs as follows in your extensions file (see "Expanding KoL CLI" below): @questobjs = ("bottle of gin", "334"); Anything not in this list will not be accepted as a possible quest object, so you can be sure that you'll only go looking for pre-approved items. 3.4 Using Percentages When using skills or buffs, you can, instead of just providing a number, provide a percentage: > skill elemental 50% This will spend 50% of your current MP on casting elemental saucespheres. This also works for adventures and shore trips: > adventure valley 50% will spend half of your remaining adventures in the valley. Caution! You may be tempted to do something like this: > adventure valley 50% > shore ranch 50% This won't work as you might expect, since it'll spend half of your adventures in the valley, and then half of whatever's left at the ranch, leaving you with the other quarter left over. If you want to spend half of your adventures at the valley and the rest at the shore, do this: > adventure valley 50% > shore ranch 100% 3.5 Two Ways To Get Trinkets As mentioned above, you can use the trinket command to get trinkets from the sewer. But suppose, instead of spending however many adventures it takes to get 10 trinkets, you just want to spend 10 adventures in the sewer and then use however many trinkets you have after that. Well, you can. After adventuring in the sewer, the special variable "n" is set to the number of trinkets you got. So you can do this: > buy gum 10 > adventure sewer 10 > hermit twig n This will spend 10 adventures in the sewer, and then trade in the trinkets thusly obtained for shiny, shiny golden twigs. 3.6 Setting Parameters There are a few configurable parameters that you can set to make KoL CLI behave a little more to your liking. To change a parameter, type "set ". (You can also type "set" without any arguments to display the current value of all parameters.) The current settable parameters are: - alwaysequip: If on (1), will always equip custom outfit before adventuring anywhere that doesn't require a different outfit. Is off by default. - checkbuffbots: sets whether to check if the buffbots are online before sending them meat for buffs. Warning! If you turn this off, then meat you send to the buffbots may disappear without you getting your buff. - cloverprotect: sets how carefully (0-3) to protect your clovers. See "CloverProtect" below. - debug: turns on (1)/off (0) debug mode (all HTML received from server is displayed) - fleewhen: If set to a nonzero value, your character will flee from combat if his/her HP drop below this value. - macrofail: how aggressively (0-3) to continue your macros if an error is reached. See "Macros" below. - maxdrunk: sets the maximum drunkenness (15 or 20) your character can tolerate. See "DrunkProtect" below. - noconnect: turns on (1)/off (0) noconnect mode (no connections are actually made to the server; useful for debugging) - questmax: the maximum number of adventures one will spend when questing for an item. Set to 0 for no limit. - quickhash: If on (1), then KoL CLI will calculate your password hash itself. If off (0), KoL CLI will get the password hash from the server. Calculating the hash directly is quicker, but it doesn't seem to work properly with all passwords; I'm not sure why. Thus, quickhash is currently off by default. - summary: turns on (1)/off (0) the adventure summary display. - verbose: turns on (1)/off (0) verbose mode (all text is displayed, instead of just the most important part) (not implemented yet) 3.7 Config Files Suppose you're sick and tired of typing in your username and password all of the time. Well, you can create a configuration file in your home directory, ~/.kolconfig, in which this information can be stored and automatically used. The configuration file should look like this: user user1 pass pass1 user user2 pass pass2 =============================================================== WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING =============================================================== The configuration file is plain text and there is no attempt to encrypt it at all. If anyone other than you has access to this file and you don't want them to get your KoL password, don't put it in the file. =============================================================== WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING =============================================================== If you don't use quickhash (see "Parameters" above), you can also save yourself the time necessary to look up the password hash by putting in a line for the password hash: user user3 pass pass3 pwdhash hash3 If you have multiple characters, you'll still have to specify the one you want to use, either on the command line or at the prompt. If only one character is specified in the config file, then the program will automatically assume you want to use that character if you don't specify one on the command line. You can also put in various "set" commands in the config file, if you wish to customize them. If you put a "set" command at the beginning, before any "user" lines, then this will apply to all users. If you put it after a "user" line, then it will apply to only that user. (And if you put it in a macro, it'll be in that macro.) set drunkprotect 1 # applies to all users user user1 pass pass1 pwdhash hash1 set maxdrunk 15 # applies only to this character (no Liver of Steel) (Note, however, that if you log in as user1, and then later use "switch" to select a different character, maxdrunk will stay at 15. If this matters to you, put a "set maxdrunk 20" in the other character's section.) As illustrated above, configuration files can also have comments in them. A # indicates the beginning of a comment; anything afterwards will be ignored. (The one exception is in a password line, since you might have a # in your password.) You can also put macros in the config file. What are macros? Well, let's see... 3.8 Macros To define a macro, you also put it in the configuration file. Macro definitions begin with "macro ", and end when you start defining another macro, or the file ends. So, for instance, to define a simple macro which buys 15 jugs of magicalness from the mall and uses them: macro jug mall jug 15 use jug 15 Now, to execute this macro at any time, just type "execute jug", and the macro will be executed. You can even give your macros arguments! Macros may have one argument, which is referred to as "arg". So, for instance, you can define this macro: macro fish buy gum arg adventure sewer arg So, if you type "execute fish 5", it'll buy 5 chewing-gums-on-strings and adventure 5 turns in the sewer, and so forth. If you have a macro which doesn't use "arg", and you specify an argument, it'll instead execute the whole macro that number of times. So, consider this macro: macro dirtymartini mix martini 1 mix skolive 1 mix dirtymartini 1 drink dirtymartini 1 Now, if you do "execute dirtymartini 4", you'll make and consume 4 dirty martinis, one at a time. Macros can even call other macros, although I have no idea what use could possibly be made of this. Nevertheless, there it is. By default, macros will stop executing if they encounter a syntax error in your macro, an unexpected response from the server, or a serious error (serious errors include a failure to equip a familiar or outfit, failure to visit the hermit, or being beaten up). For most common errors (running out of Adventures, for example), the macro will continue executing. To change this behavior, change the value of the macrofail parameter. The possible values are: 0 -- stop on any error 1 (default) -- stop on syntax error or serious error 2 -- stop only on syntax error or unexpected server response 3 -- never stop on any error Q: Can I define macros after starting KoL CLI? A: No, macros can only be defined in the configuration file. Q: Can I abbreviate the commands "user", "pass", "pwdhash", "macro", "set", or any of the "set" parameter names? A: No, you cannot. These must be spelled out in full. This is to avoid confusion with the commands inside your macro. 3.9 CloverProtect (tm) Ever headed out for an adventure in the Haiku Dungeon but forgot that you were carrying around a clover? Well, those days are at an end, thanks to the CloverProtect technology in KoL CLI. CloverProtect will prevent you from adventuring in areas when you're carrying a ten-leaf clover, preventing you from accumulating unwanted heaps of bling-bling, foons, or bowls of lucky charms. There are 4 levels of protection available: 0 (off): You can go anywhere with a 10-leaf clover, except the sewer (this requires additional programming which I haven't done yet). 1 (default): You can't go anywhere which has a special 10-leaf clover adventure if you have a 10-leaf clover in your inventory, EXCEPT for the Knob Kitchens and the Orcish Frat House (in disguise). I figure these are common locations that people would actually want to use their clovers in. 2: You can't go anywhere which has a special 10-leaf clover adventure at all if you have a 10-leaf clover in your inventory. 3 (most paranoid): You can't adventure at all if you have a 10-leaf clover in your inventory. 3.10 DrunkProtect KoL CLI will automatically keep track of your drunkenness to protect you against falling into a drunken stupor. Normally, KoL CLI will assume the maximum possible drunkenness is 20. If you have a character without Liver of Steel, set the "maxdrunk" value to 15 so that it will properly stop. If, for some reason, you *want* to go around in a drunken stupor, you can explicitly request such by using "adventure stupor". 3.11 Batch Mode and Scripting If you just quickly want to do one command, you can run KoL CLI in batch mode using the "-b" command line flag: ./kol.pl mycharacter -b outfit custom This will equip your custom outfit and then quit, without you having to do anything. Note that -b interprets everything after the flag as the desired command, so if you want to specify a character name, do it before the -b. You can only run one command this way; if you want to run more, put them in a macro and then use -b to run the macro. You can also run KoL CLI using scripts, using ordinary input redirection. For instance, here's a "preshore" script of mine, which I use to save the most adventures possible before shoring the next day: ca to 3 ca ev 1 ea de 5 ma es 7 dr fi 1 dr es 6 ad gi u 130 dr es 1 out cus quit If I saved this as, say, preshore.txt, then I could automatically run the whole thing using ./kol.pl mycharacter < preshore.txt. You could even script the whole thing using cron to automatically run a script every morning at 2am (or some other nice low-load time). (Note that you'll still have to periodically supply this character with more delicious noodles and fine wine.) 3.12 Expanding KoL CLI KoL CLI is written so that you can easily add new things to it. If you're not scared of some simple Perl editing, then you can extend KoL CLI's functionality to a lot of new things. If you'd just like to add in new objects to an existing verb (for example, new foods to eat), this is quite simple. Find the hash containing the list of objects (it's called something like %eatobjs). Find the item number of the item you want to add. Now, just add another line to the hash the same as the existing lines, with the name of the object and the item number changed appropriately. NEW: If you don't want to have to put your changes back in every time I release a new version of KoL CLI, then you can do this! You can store your extensions in a file called "extensions.kol" in the directory you run KoL CLI from, and KoL CLI will read them in. extensions.kol should have the form of ordinary Perl code. Be warned that you want to *add* items to existing hashes, not reinitialize them, so you should use syntax like this (this example buys an ice-cold Schlitz from Contricker's): $mallobjs{"schlitz"} = "pwd=PASSWORDHASH&whichstore=43579&buying=Yep.&whichitem=41000000050&quantity=QTY"; Ohayou has written this incredibly nifty scriptlet which will automatically make the desired code for a store item (bookmark this all as one line): javascript:if(typeof arm!='function') with(top.document){ (D=createElement(S='script')).setAttribute('src', 'http://www.lysator.liu.se/~jhs/KoL/cli.js'); (E=getElementsByTagName(S)).length? body.replaceChild(D,E[0]): body.appendChild(D)}else arm();void 0 To use it, create a bookmark, visit the store, click on the bookmark, and then click on the item you want to buy. The necessary code will automatically be displayed. You can even make up your own verbs (though this is something that requires directly editing kol.pl, and can't be put in extensions.kol). To do so, add the verb and the page that the form should be submitted to to the %verbs hash, create a hash with its list of objects (each entry should be of the form "object" => "form submission parameters for that object"), and edit &get_allowedobjects to include this object hash (it should be pretty straightforward). 3.13 Contributing to KoL CLI If you've come up with something that you think would be useful to other players, by all means feel free to send it to me and I'll be happy to integrate it into the main release. I welcome everything from new items to new routines. ======================== 4. Questions and Answers ======================== 1) What's missing in this release? This is version 0.98e. There's a lot of stuff left to be done before I reach 1.0. These are the most important: - Allow you to use other skills (e.g. moxious maneuver) in battle. - Finish adding skills for turtle tamers and pastamancers. - Add in more foods and drinks. 2) What else is on your to-do list? Next on the to-do list are features that aren't as critical, but I know the program is lacking them and I'd like to fix them at some point: - Adventure in the casino - Fix adventure titles in the Limerick Dungeon - Implement verbose mode - Keep track of HP and drunkenness on the client side. - Add in cocktail-crafting and food-cooking abilities - Auto-equip things like the Talisman o' Nam and the Continuum Transfunctioner. - Detect when you log in as a combat is still in progress. - Have ^C stop the current action rather than kill the whole script. - Fix the random adventure feature (not documented here because it still sucks). 3) What are the known bugs? There are two, and they're not my fault: - In the shore, if you gain a stat point, it's not always displayed. This is the fault of KoL -- it for some reason doesn't always display the gain. - If you're using compact mode, the status will display your familiar weight rather than its name. This is because only the weight is displayed. 4) Really? Two bugs? That's all? There are probably more, so if you encounter one, please let me know. 5) Wait, I was in the Palindome, and I had "Denim Axes Examined", and the adventure counter didn't go up! Isn't that a bug? No, when you get "Denim Axes Examined", it doesn't actually use up one of your adventures in KoL. Thus, you'll end up getting the right number of adventures this way. 6) What features will KoL CLI never have? There are some features which are either simply too difficult to integrate into a command-line interface, would take too much time, and/or are contrary to the spirit of the game, which I have no plans to implement in the foreseeable future: - Clan stash/colossal closet management: This would require me to put the entire item table in KoL CLI (or people to memorize item numbers), which is a pain and also makes the interface really hard to use. It might be less painful to allow you to deal with items which are already in the game (i.e., items you can eat, drink, or use), so I'll think about that. - The chat: I can't see a good way to make it happen in a command line environment. Besides, the point of KoL CLI is so you can fire it up and go off and do something else. If you want to chat, why not just play the game? - Mallbot-type activity: Not happening. I'm strongly against the use of any type of auto-purchasing mall bot. If you want some advanced mall functionality, Ohayou has an advanced mall purchasing script that you can buy for 20M meat. See here: http://www.lysator.liu.se/~jhs/KoL/effects/contract.rxml 7) Is KoL CLI bad for the servers? No, a thousand times no. Well, it could be if you used it, to, say, transform 9000 wads of dough into flat dough one at a time, and then back. But used normally, KoL CLI is much nicer to the servers than an ordinary web browser. It doesn't load images, doesn't need to refresh the character (or chat) pane except on demand, and eliminates the need to load all of the intermediate pages. Nor is it any faster than anyone playing the game normally. 8) Can I run more than one character with KoL CLI? Can I run a character using both a normal browser and KoL CLI? In order: Yes, you can run multiple incarnations of KoL CLI on different characters at the same time. They each use separate cookie files, so they can operate completely independently. (DO NOT try to run multiple incarnations of KoL CLI on the *same* character at the same time, however. They will just keep logging each other out until they reach the limit of this behavior.) Unfortunately, due to Jick's session-ID tracking, it is now impossible to use both KoL CLI and a browser session on the same character at the same time. You can, however, leave KoL CLI open while you do something else in a browser window and the automatic relogin feature will log you back in automatically when you come back to KoL CLI. 9) Can I see the source code? KoL CLI is written in Perl, so the program *is* the source code. Feel free to look around. I've tried to put in some comments, but the commenting is definitely spotty. 10) Can KoL CLI make me an UB3r 31337 HaX0R? No. In fact, it won't even make you a 1335 HaXx0r. You can *try* to (for example) use items that you don't have, get the Hermit to trade you Crimbo, or donate negative money to the clan stash, but if there were any bugs this obvious, they were all fixed long, long ago. As far as I know, there are no ways to use KoL CLI to do something that you can't do ordinarily in the game. 11) What are these weird ".kolcookies" files lying around? In order to keep your character logged in, KoL CLI has to keep a cookie for your current session. These are stored in files of the name ".kolcookies-CHARACTERNAME". KoL CLI will automatically delete these cookie files when you log out, but if for some reason it ends abnormally, the cookie file will stick around. You can remove it without any ill effects. 12) What does KoL CLI cost? Absolutely nothing. But if you'd like to donate something, donations of meat or items are always welcome. Send any donations to Ragnok (#49653). =================== Credits =================== Most programming by Ragnok Based on original code by Radiatore Debugging and feature help from: PumpkinEve, Ohayou, badfeet, greyselke, Squiffle, AmberDragon, Allessindra, eric9, Catchy User Name, phenyx, nithan, tyger, Stoop, Mustachio =============== Version History =============== Version 0.98e: - Fixed fighting plural objects. Thanks to Mustachio. - Exact matches now work. - Doesn't do anything if the number specified is 0. - Added code for multiple custom outfits. Thanks to tyger for the basic code. - New noodle/scrumptious reagent code - Arches and toast code updated. Note that the old code still works but I figure it's much more polite this way. - When your bartender blows up, it shows you what parts you got. - The password hash is now obtained from the Demon Market. Version 0.98d: - Password hash now included in sell. - Added in check for buff bots. I sure hope they come back! - Added character level and class to charpane parser (thanks, nithan!) - Added "togglemode" (thanks, nithan!) Version 0.98c: - The password hash is now variable across sessions. Thus, I removed pwdhash from .kolconfig and the quickhash variable entirely. - Fixed disassembled clover item # (thanks, Stoop!) Version 0.98b: - Improved familiar parsing in compact mode (thanks, nithan!) - Set quickhash off by default until I can figure out how it handles punctuation. - Added Talisman of Baio to moonpane parser. Version 0.98a: - Fixed a few battle parser glitches. - Keeps track of your HP and flees when necessary. - Familiar listing function added. Thanks, nithan! - Removed Boozer's cheap drinks *sob* - quick hash added using MD5. - Keeps track of your drunkenness and reacts appropriately. - Check for bartender explosion added. - maxdrunk added. - dreidl and baby yeti added. - Added Detective Skull output. - Added timestamps for batch mode. - phenyx's code for Meat and case-insensitive sorting added. - nithan's code for familiar weight and type added. - Can now put "set" parameters in .kolconfig. - Put in printing out of adventure summary even if you run out of adventures. Version 0.98: - Added mixing. - Adventure summary added. - Quest functionality added. - You can now attach messages when sending. - Character status now includes your stats - Can now use % in your quantities for adventuring or casting - Fixed issues with .kolconfig on Windows machines (I hope) - Pretty-printer for lists added. - If you give an argument to a macro which doesn't use "arg", it'll execute the whole macro that number of times. - Jick fixed the chat issues, so people using KoL CLI will properly show up as not being in chat - put in Squiffle's note about libeay32.dll - added more information to manual about proxies - added coffee pixie, cheshire bitten, and crimbo elfling - extra-strength strongness elixir, jug-o-magicalness, and suntan lotion now use multiple - moved rest of version history to manual Version 0.97: - extensions file added - fixed a lot of problems with the battle parser - added in "send" command - switch implemented - added in "repeat" command - added in "alwaysequip" feature - invoke curl in silent mode (more portable) - properly encodes weird characters in login - put Ohayou's scriptlet in the manual - added in most (possibly all) missing pastamancer skills - added in "junk evilfood", scroll of drastic healing - max number of fight rounds raised to 30 - autodeletes cookies on logout - equip_outfit failure when called from adventure no longer ends a macro Version 0.96: - added TT skills and buffs - "exit" added - Fixed problem where an error in a macro run in batch mode would prevent the program from quitting (thanks, PumpkinEve) - Added in a few more objects (spizza and tomato to eat, ramen, gin, and rum to buy) - Fixed problem with spaces in user names in the config file (thanks to badfeet) - Junk objects vastly expanded and commented (big thanks to PumpkinEve) - Fixed bug with metacharacters in familiar name (thanks, Ohayou) - Added in Misspelled Cemetary (thanks, PumpkinEve) - Multiple casting of buffs fixed (thanks to badfeet and greyselke) - Denim Axes Examined fixed (thanks, PumpkinEve!) Version 0.95: - PvP items added - Adventure parser revamped - buffs added, finally, including accordion thief skills - macro errors properly propagated - use multiple implemented Older versions are lost in the mists of time. --------------------------- That's all! Hope you enjoy!