No description
logs | ||
oyoyo | ||
profiles | ||
smilies | ||
themes | ||
.gitignore | ||
ABOUT | ||
convo.py | ||
convo.pyc | ||
dataobjs.py | ||
dataobjs.pyc | ||
generic.py | ||
generic.pyc | ||
irc.py | ||
irc.pyc | ||
memos.py | ||
memos.pyc | ||
menus.py | ||
menus.pyc | ||
mispeller.py | ||
mispeller.pyc | ||
parsetools.py | ||
parsetools.pyc | ||
PCskins.png | ||
pesterchum-update.nsi | ||
pesterchum.cfg | ||
pesterchum.ico | ||
pesterchum.js | ||
pesterchum.nsi | ||
Pesterchum.png | ||
pesterchum.py | ||
readme.txt | ||
setup-py2exe.py | ||
setup.py | ||
TODO | ||
trayicon32.icns | ||
trayicon32.png |
Welcome to Pesterchum 3.14 alpha! This software is currently in alpha testing. That means there will probably be a lot of bugs!! Here's some tips to help you get started: - You can import your old Pesterchum contacts by going to CLIENT->IMPORT and opening your pesterchum.cfg file. This is usually in the 2.5 base directory or in Tinychum's data folder. - The Trollian theme can be confusing if you haven't used the program already! Some hints: moods are set by clicking the timelines, and you can add chums by clicking "Chumproll." Moods correspond to the troll that would most likely exhibit them. - Right-click is your friend! There are useful right clicks options on the chumroll, by clicking the chumhandle in a conversation, online userlist, or the list of memo browsers. Cool features: - Importing from old PC. It can already do your chumlist, soon it will import your quirks from 2.5 and TC as well! - Profile switching. Instantly switch profiles, loading your color and quirks with it. - Theme switching and creation. So far this comes with a few official themes! But you can also make your own: just make a new directory in the themes folder with the proper images and style.js file. The style.js file will be documented soon, but feel free to poke at it. - Memos. Memos that are a lot more like the ones in the comic and allow you to appear at multiple different times in one chat. - Quirks: Prefix, suffix, simple replace, regexp replace (like in 2.5), random replacement, and an auto-mispeller :P - Block/user list - Add/block chums directly from a conversation, the userlist, or memo userlist. - Logging. Logs are output in bbcode (for easy forum posting), html, and plain text. - Idling. You can set yourself idle manually, and the computer will set it for you after 10 minutes. - Improved /me. Any letters immediately following /me will be processed correctly. e.g. /me'd rather be fishing -> -- ghostDunk'd [GD'D] rather be fishing -- - Hyperlinks! Now if someone types http://whatever it will turn into a link you can just click and follow. No more copy/paste. - Memo links. Link your friends to your memos. - Smilies. We've added about 30-40 smilies from the forums. There is a list later on in this readme. MEMOS ----- One of the most interesting features to make was the memos, and make them as close to the comic as I could without actually inventing time travel. So here is the TIME TUTORIAL: Joining: When you go CLIENT->MEMOS, you'll see a list of memos pop up -- those are memos people already have open. To join one, just highlight one of them. If you want to make a new memo, just type it in the input. If you'd like to make it secret, so that it doesn't appear in the list, check "HIDDEN CHANNEL". Then, choose what timeframe you want to appear to be in. So if you wanted to be in the future, you could move the slider to the right. You can also enter the time manually. Then hit JOIN. Explaining time: Time in memos, unlike Homestuck, will not be relative to your position. That is, if you choose 4:13 in the future, you will not see someone who has set their time as "current" (or "0") in the past: you will see them as "current" and yourself as "future." This is because we do not have time travel! Memo time setting is basically an RP mechanic: you are pretending to be from the future! It will also help keep everyone straight: everyone will see the same thing! The time slider: The slider shows your current position in the time stream. If you want to change your time frame, simply move the slider (or type a time in) and hit GO. This will open a new time frame, and the next time you type a message, the memo will show that you've responded to it in that time frame. You can now switch between your time frames simply by clicking the arrows in the right hand corner. (THIS COMES IN HANDY IF YOU WANT TO ARGUE WITH YOURSELF.) You can have any number of open time frames, and the program will number them in the order in which you open them (like in the comic). You can have one of your time frames cease responding to the memo by hitting "CLOSE." If you open that time frame again, the program will remember the number it originally gave it. If you want to be mysteeeeeeeerious, you can type in "?" and you will appear as ???. The memo viewer list: To the right is a list of people currently browsing the memo. A shade icon next to their name means they are the "operator" of the memo: meaning they can kick ("ban") people from the memo and make other people operators as well. A "ban" is not permanent (like in the comic), and the program will ask if you want to reconnect to the memo. You kick and op people by right clicking their name in the window. You can also add them to your chumroll! Inviting people to your memo: You can link to a memo by simply typing "#nameofmemo" in any conversation or memo window. So you can say: CG: NOW YOU, ME, AND EGBERT NEED TO HAVE A CHAT. CG: CLICK IT. CG: #FRUITYRUMPUSASSHOLEFACTORY and it will appear as a link that you can click, which will open the memo chooser window. QUIRKS ------ There are six kinds of quirks! I'll teach you how to use them all! (In this section, I will use quotes ("") around things so it's clearer to see exactly what to type! Don't include these quotes when using these examples! Prefix/Suffix: This will put text before or after everything you say. So for example, we can use prefixes to emulate part of Nepeta or Equius' quirks: PREFIX: ":33 < " You type: "*ac twitches her friendly whiskers at ct*" Result: AC: :33 < *ac twitches her friendly whiskers at ct* PREFIX: "D --> " You type: "Hi" Result: CT: D --> Hi Suffixes work the same way, but at the end of the message: SUFFIX: "!!!" You type: hey there Result: GD: hey there!!! Remember that it doesn't automatically add a space! You'll need to add it in (see CT and AC examples again!) Simple Replace: This will simply take a set of characters and replace them with other characters. Let's add a quirk to our Nepeta: Replace: "ee" With: "33" You type: "*ac saunters from her dark cave a little bit sleepy from the recent kill*" Result: AC: :33 < *ac saunters from her dark cave a little bit sl33py from the recent kill* Let's add two to Equius: Replace: "loo" With: "100" Replace: "x" With "%" You type: "look" Result: CT: D --> 100k You type: "What are you expecting to accomplish with this" Result: CT: D --> What are you e%pecting to accomplish with this Aradia: Replace: "o" With: "0" You type: "and the reward would be within our reach" Result: AA: and the reward w0uld be within 0ur reach Notice that it is CASE SENSITIVE. So in the above case, if you typed "ABSCOND", it would not replace the "O". Sollux: Replace: "i" With: "ii" Replace: "s" With: "2" Eridan: Replace: "v" With: "vv" Replace: "w" With: "ww" Feferi: Replace: "h" with: ")(" Replace: "H" with: ")(" Replace: "E" with: "-E" Regexp Replace: This is a more complex kind of replacement. Regexp stands for "regular expression", a kind of programming language (yes, it is a language) used to find and replace text. PC 3.14 also includes a function to handle capitalization (upper()). If you want to learn it on your own, I suggest you start with the Python tutorial (http://docs.python.org/howto/regex.html) since PC 3.14 uses Python's regexps. Check out V2.5's tutorial too, as that is a pretty good start as well. Let's start with Karkat. Regexps are just like your every day find and replace: they search for a string that matches what you want to replace, and replaces it with... the replacement. Regexp: "(.)" Replace with: "upper(\1)" Three concepts here. Let's look at the regexp. "(.)" has two things going on. The first is that ".". In regexp speak, "." is the wildcard: it will match *any* character -- and just one. The parentheses tell the regexp to *save* what's inside them so you can put it back when you replace. That's what the "\1" is for -- it means, "put the match inside parentheses #1 here". You can have any number of parentheses. "upper()" is a function special to PC 3.14 -- it will uppercase anything inside the parentheses. So in this case, upper will uppercase "\1" -- which, as you recall is what we found inside the parentheses. Which was *every* character. So to sum up, it replaces every character with an uppercase version of that character. WHICH MAKES YOU TALK LIKE THIS. Let's look at Terezi next. Regexp: "[aA]" Replace with: "4" Regexp: "[iI]" Replace with: "1" Regexp: "[eE]" Replace with: "3" Regexp: "(.)" Replace with: "upper(\1)" We already know what the last line does. But what's up with those brackets? What's their deal? Basically, in regular expressions, brackets indicate a list of matching characters. So, basically any single character within the brackets will be matched. In this case, either "a" or "A" will be matched and replaced with "4," and likewise, "i" and "I" will be replaced with "1", and "e" and "E" will be replaced with "3." You should also know that "^" is a special character in brackets. If placed immediately after the opening bracket (like "[^"), then the brackets instead match every character *except* the ones in the brackets. So, for example, if you wanted to have a quirk where you capitalized all your letters *except* o, you'd do this: Regexp: "([^o])" Replace with: "upper(\1)" You type: "hello there" Result: GD: HELLo THERE You can also specify a *range* of characters inside the brackets, by using the "-" character. [a-z] will match any lowercase letter. You can combine them, too: [a-z0-9] will match any digit and lowercase letter. There are also different shortcuts for character types: \d matches any digit; same as [0-9] \D matches any non-digit; same as [^0-9] \s matches any spaces \S matches any non-space \w matches any alphanumeric character; same as [a-zA-Z0-9_] \W matches any non-alphanumeric character; same as [^a-zA-Z0-9_] You can include this inside brackets, too. There's also a special character, \b. What \b does is make sure that you are at the beginning or end of a word. So with that knowledge, let's try Kanaya: Regexp: \b(\w) Replace with: upper(\1) You type: "i suggest you come to terms with it" Result: GA: I Suggest You Come To Terms With It Another feature of regular expressions is the ability to match *repeated* characters. There are three repeat characters: the "*", the "+", "?", and "{m,n}". They work by playing them after the character, or character type you want to match. (So, you could say "\s+" or ".*") The "*" character matches ZERO or more of that character. So, for example, "f*" would match "f" and "ff" -- and any other character! That's right, every character counts as matching it zero times. Yeah, it's weird. I suggest you use... The "+" character matches ONE or more of that character. So, if we wanted to have a character that wanted to elongate their s's so that they used four 's's every time, like sssso, but didn't want to have eight s's when using words with double s's, like pass, we'd do this: Regexp: "s+" Replace with: "ssss" You type: "you shall not pass" Result: UU: you sssshall not passss As for the other two, I can't really think of any useful quirks to be made with them. But to let you know, "?" matches either 0 or 1 of that character, so "trolls?" would match "troll" and "trolls". "{m,n}" matches between m and n characters. (If you leave out 'n', any number of characters more than m will be matched.) So "s{2,4}" will match "ss", "sss", and "ssss" and that's it. Now with repeating expressions, we can do something like make EVERY other WORD capitalized: Regexp: "(\w+) (\w+)" Replace with: "upper(\1) \2" You type: "this is pretty annoying i bet" Result: GD: THIS is PRETTY annoying I bet The \1 matches the first word -- which has been matched because the word is alphanumeric characters, repeated once or more -- and \2 matches the second word. Another operator to use is the "|", which will match more than one set of characters. For example, "black|red" will match "black" or "red". If you want to match something in the middle of words, you have to use parentheses: "(black|red) romance" will match "black romance" and "red romance". Finally, there are the "^" and "$" characters. Yes, we already did the "^" character, but this is OUTSIDE of brackets, not INSIDE. "^" matches the beginning of a message, and "$" matches the end of it. You can use this to make more sophisticated prefix and suffix behaviors. For example, if we have a quirk that adds "..." to the end of all our messages, we can set it up so it doesn't do that if we put punctuation [?!.] at the end. So: Regexp: "([^?!.])$" Replace with: "\1..." This will match the end of any message as long as it doesn't have "?", "!", or "." at the end. Then it will replace it with whatever the last character of the sentence was (remember we're replacing it, so we have to put it back!) and add "..." at the end. Careful with the beginning and ending replaces -- if you use more than one, you may not get what you expect because they will ALL be applied, one after the other! This is a bug in my opinion, that I plan to fix! Random replace: SMILIES ------- Here's a list of smilies: :rancorous: :apple: :bathearst: :cathearst: :woeful: :pleasant: :blueghost: :slimer: :candycorn: :cheer: :duhjohn: :datrump: :facepalm: :bonk: :mspa: :gun: :cal: :amazedfirman: :amazed: :chummy: :cool: :smooth: :distraughtfirman :distraught: :insolent: :bemused: :3: :mystified: :pranky: :tense: :record: :squiddle: :tab: :beetip: :flipout: :befuddled: :pumpkin: :trollcool: