Many markdown fixes. Someone needs to RTFM.

This commit is contained in:
Félix Saparelli 2012-05-27 23:27:26 +12:00
parent 6220e5a6b8
commit 95fd257fb7

View file

@ -56,8 +56,8 @@ and plain text.
- Idling. You can set yourself idle manually, and the computer will - Idling. You can set yourself idle manually, and the computer will
set it for you after a configurable amount of time. set it for you after a configurable amount of time.
- Improved /me. Any letters immediately following /me will be - Improved /me. Any letters immediately following /me will be
processed correctly. e.g. /me'd rather be fishing -> -- ghostDunk'd processed correctly. e.g. /me'd rather be fishing -> `-- ghostDunk'd
[GD'D] rather be fishing -- [GD'D] rather be fishing --`
- Hyperlinks! Now if someone types http://whatever it will turn into a - Hyperlinks! Now if someone types http://whatever it will turn into a
link you can just click and follow. No more copy/paste. link you can just click and follow. No more copy/paste.
- Memo links. Link your friends to your memos. - Memo links. Link your friends to your memos.
@ -67,8 +67,8 @@ list later on in this readme.
FA% FA%
--- ---
<b>Q:</b> Norton says it has a virus and then deletes it!<br> __Q:__ Norton says it has a virus and then deletes it!
<b>A:</b> Read this helpful Norton FAQ: __A:__ Read this helpful Norton FAQ:
Alright, here's a guide to by-passing Norton: Alright, here's a guide to by-passing Norton:
@ -98,52 +98,54 @@ Alright, here's a guide to by-passing Norton:
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------
<b>Q:</b> I can't connect because my school/university/network/stolen wifi is blocking my connection! OR I can't seem to connect to the server at all and I'm not running any firewalls!<br> __Q:__ I can't connect because my school/university/network/stolen wifi is blocking my connection! OR I can't seem to connect to the server at all and I'm not running any firewalls!
<b>A:</b> Edit your pesterchum.js file. Open it up in notepad or something, and then edit the beginning so it looks like this: __A:__ Edit your pesterchum.js file. Open it up in notepad or something, and then edit the beginning so it looks like this:
```
{"port": "1413", .... {"port": "1413", ....
```
where the .... is the rest of the gobbledygook there. where the .... is the rest of the gobbledygook there.
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------
<b>Q:</b> The mood buttons on Pesterchum 6.0 don't match up to what it sets your mood to! What gives?<br> __Q:__ The mood buttons on Pesterchum 6.0 don't match up to what it sets your mood to! What gives?
<b>A:</b> The mood names are just there to look canon. It is intentional. __A:__ The mood names are just there to look canon. It is intentional.
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------
<b>Q:</b> I'm appearing as offline to 2.5 users/other users appear the wrong __Q:__ I'm appearing as offline to 2.5 users/other users appear the wrong
mood? What's happeninggggg<br> mood? What's happeninggggg
<b>A:</b> The 2.5 people decided to change the mood protocol. When I made __A:__ The 2.5 people decided to change the mood protocol. When I made
this program, I decided to go with Tinychat's original protocol (and this program, I decided to go with Tinychat's original protocol (and
extend it). So some moods will appear wrong between 2.5 extend it). So some moods will appear wrong between 2.5
users. (*COUGH*tell them to switch to 3.14*COUGH*) users. (\*COUGH\*tell them to switch to 3.14\*COUGH\*)
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------
<b>Q:</b> Pesterchum 2.5 users don't get my /me messages correctly!<br> __Q:__ Pesterchum 2.5 users don't get my /me messages correctly!
<b>A:</b> That's because they implemented the /me command differently. __A:__ That's because they implemented the /me command differently.
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------
<b>Q:</b> Can we resize the main window?<br> __Q:__ Can we resize the main window?
<b>A:</b> No. This is done so we can offer more flexible UI creation. It's a __A:__ No. This is done so we can offer more flexible UI creation. It's a
lot easier to make themes that look canon this way. lot easier to make themes that look canon this way.
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------
<b>Q:</b> Can we have different chum rolls for different users?<br> __Q:__ Can we have different chum rolls for different users?
<b>A:</b> No. Instead what we now have crum groups to organize people. __A:__ No. Instead what we now have crum groups to organize people.
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------
<b>Q:</b> Can we delete profiles?<br> __Q:__ Can we delete profiles?
<b>A:</b> Yes. Go to the profile switcher, choose a profile and press DELETE. __A:__ Yes. Go to the profile switcher, choose a profile and press DELETE.
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------
<b>Q:</b> You should make it so you can ban specific time frames in memos.<br> __Q:__ You should make it so you can ban specific time frames in memos.
<b>A:</b> This was too complicated to implement, and I don't have the UI __A:__ This was too complicated to implement, and I don't have the UI
quite figured out. This will probably go in a future update. quite figured out. This will probably go in a future update.
@ -160,6 +162,7 @@ this your default profile.
BASIC PESTERING BASIC PESTERING
--------------- ---------------
To begin pestering, first click the "ADD CHUM" button and type in To begin pestering, first click the "ADD CHUM" button and type in
their pester handle. The handle must be all lower case except for one their pester handle. The handle must be all lower case except for one
capital letter. Once you've added that person, they will appear on capital letter. Once you've added that person, they will appear on
@ -179,29 +182,40 @@ pestered by someone you don't have on your list yet!)
While pestering your chum, here are some useful features: While pestering your chum, here are some useful features:
* Type /me to create a system message. "/me facepalms." will generate: * Type /me to create a system message. "/me facepalms." will generate:
```
-- ghostDunk [GD] facepalms. -- -- ghostDunk [GD] facepalms. --
```
You can also append 's after /me like so: "/me's computer exploded." You can also append 's after /me like so: "/me's computer exploded."
```
-- ghostDunk's [GD'S] computer exploded. -- -- ghostDunk's [GD'S] computer exploded. --
```
In fact, any characters you type after a /me before the space will In fact, any characters you type after a /me before the space will
be added: "/meing is the Ghost Nation's official pastime." be added: "/meing is the Ghost Nation's official pastime."
```
-- ghostDunking [GDING] is the Ghost Nation's official pastime. -- -- ghostDunking [GDING] is the Ghost Nation's official pastime. --
```
* Color tags! If you feel the need to talk about The Green Sun or add * Color tags! If you feel the need to talk about The Green Sun or add
some appleberry blast to your conversation, just use color some appleberry blast to your conversation, just use color
tags. These work like in TC 1.5: <c=(color)>colored text</c>. But in tags. These work like in TC 1.5: `<c=(color)>colored text</c>`. But in
PC 3.14, you can use type your color in a lot of different ways: PC 3.14, you can type your color in a lot of different ways:
- You can use the familiar r,g,b method: - You can use the familiar r,g,b method:
"<c=0,255,0>The Green Sun</c>" `<c=0,255,0>The Green Sun</c>`
- You can use HTML tags: - You can use HTML tags:
"<c=#7f7f7f>DURR I'M KARKAT AND I'M A HUGE IDIOT</c>" `<c=#7f7f7f>DURR I'M KARKAT AND I'M A HUGE IDIOT</c>`
- You can even use plain color names: - You can even use [plain color names](http://en.wikipedia.org/wiki/Web_colors):
"<c=red>D4V3 TH1S 1S SO D3C4D3NT</c>" `<c=red>D4V3 TH1S 1S SO D3C4D3NT</c>`
(list: http://www.w3schools.com/css/css_colornames.asp) - You don't even have to add the `</c>` if you are lazy. Just use a
- You don't even have to add the </c> if you are lazy. Just use a
new color tag whenever you want to change colors and PC 3.14 will new color tag whenever you want to change colors and PC 3.14 will
add the extra tags for you. add the extra tags for you.
* URLS (anything with http:// in front of it) will automatically be * URLs (anything with `http://` or `www.` in front of it) will automatically be
detected and made into a link you can CLICK. detected and made into a link you can CLICK.
* You can also link people to memos by typing "#" and the name of the * You can also link people to memos by typing "#" and the name of the
@ -222,13 +236,15 @@ While pestering your chum, here are some useful features:
database by simply highlighting the good part of the conversation, database by simply highlighting the good part of the conversation,
right clicking it and choosing "Submit to Pesterchum QDB!" right clicking it and choosing "Submit to Pesterchum QDB!"
MEMOS MEMOS
----- -----
One of the most interesting features to make was the memos, and make 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 them as close to the comic as I could without actually inventing time
travel. So here is the TIME TUTORIAL: travel. So here is the TIME TUTORIAL:
* <b>Joining:</b> When you go CLIENT->MEMOS, you'll see a list of memos pop up * __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 -- 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 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 the input. If you'd like to make it secret, so that it doesn't appear
@ -237,7 +253,7 @@ 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 could move the slider to the right. You can also enter the time
manually. Then hit JOIN. manually. Then hit JOIN.
* <b>Explaining time:</b> Time in memos, unlike Homestuck, will not be relative * __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 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 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 past: you will see them as "current" and yourself as "future." This is
@ -245,7 +261,7 @@ 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 RP mechanic: you are pretending to be from the future! It will also
help keep everyone straight: everyone will see the same thing! help keep everyone straight: everyone will see the same thing!
* <b>The time slider:</b> The slider shows your current position in the time * __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 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 (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 the next time you type a message, the memo will show that you've
@ -259,7 +275,7 @@ have one of your time frames cease responding to the memo by hitting
the number it originally gave it. If you want to be mysteeeeeeeerious, the number it originally gave it. If you want to be mysteeeeeeeerious,
you can type in "?" and you will appear as ???. you can type in "?" and you will appear as ???.
* <b>The memo viewer list:</b> To the right is a list of people currently * __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 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 "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 memo and make other people operators as well. A "ban" is not permanent
@ -267,12 +283,14 @@ memo and make other people operators as well. A "ban" is not permanent
to the memo. You kick and op people by right clicking their name in to the memo. You kick and op people by right clicking their name in
the window. You can also add them to your chumroll! the window. You can also add them to your chumroll!
* <b>Inviting people to your memo:</b> You can link to a memo by simply typing * __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: "#nameofmemo" in any conversation or memo window. So you can say:
```
CG: NOW YOU, ME, AND EGBERT NEED TO HAVE A CHAT. CG: NOW YOU, ME, AND EGBERT NEED TO HAVE A CHAT.
CG: CLICK IT. CG: CLICK IT.
CG: #FRUITYRUMPUSASSHOLEFACTORY CG: #FRUITYRUMPUSASSHOLEFACTORY
```
and it will appear as a link that you can click, which will open the and it will appear as a link that you can click, which will open the
memo chooser window. memo chooser window.
@ -280,139 +298,161 @@ the window. You can also add them to your chumroll!
CLIENT MENU CLIENT MENU
----------- -----------
###OPTIONS: ### OPTIONS: ###
* <b>Chum List</b>
* <b>Hide Offline Chums:</b> Turning this option on will hide all offline chums * __Chum List__
* __Hide Offline Chums:__ Turning this option on will hide all offline chums
off your chumroll. off your chumroll.
* <b>Show Empty Groups:</b> Turning this option on will show empty groups. * __Show Empty Groups:__ Turning this option on will show empty groups.
* <b>Show Number of Online Chums:</b> Show number of online chums in each group. * __Show Number of Online Chums:__ Show number of online chums in each group.
* <b>Sort Chums:</b> How would you like your chums sorted? * __Sort Chums:__ How would you like your chums sorted?
* <b>Conversations</b> * __Conversations__
* <b>Time Stamps:</b> Turning this on will show timestamps in your chats. * __Time Stamps:__ Turning this on will show timestamps in your chats.
* <b>12/24 hour:</b> Formatting for timestamps. Whether you want them in 12 or * __12/24 hour:__ Formatting for timestamps. Whether you want them in 12 or
24 hour time. 24 hour time.
* <b>Show Seconds:</b> Turning this on will show the seconds in your timestamps. * __Show Seconds:__ Turning this on will show the seconds in your timestamps.
* <b>Show OP and Voice Messages in Memos:</b> Whether or not you would like * __Show OP and Voice Messages in Memos:__ Whether or not you would like
to see messages when people gain/lose OP or Voice. to see messages when people gain/lose OP or Voice.
* <b>Use animated smilies:</b> To animate or not to animate. * __Use animated smilies:__ To animate or not to animate.
* <b>Interface</b> * __Interface__
* <b>Tabbed Conversations:</b> Turns tabbed conversations on and off. Don't * __Tabbed Conversations:__ Turns tabbed conversations on and off. Don't
worry if you do this in the middle of a conversation, PC will save worry if you do this in the middle of a conversation, PC will save
them for you. them for you.
* <b>Minimize:</b> What do you want the minimize button to do? * __Minimize:__ What do you want the minimize button to do?
* <b>Close:</b> What do you want the close button to do? * __Close:__ What do you want the close button to do?
* <b>Sound</b> * __Sound__
* <b>Sounds On:</b> Uncheck to shut it the fuck up. * __Sounds On:__ Uncheck to shut it the fuck up.
* <b>Pester Sounds:</b> Uncheck to only turn off Pester sounds. * __Pester Sounds:__ Uncheck to only turn off Pester sounds.
* <b>Memo Sounds:</b> Uncheck to only turn off Memo sounds. * __Memo Sounds:__ Uncheck to only turn off Memo sounds.
* <b>Memo Mentions:</b> Check to have a separate noise when your initials * __Memo Mentions:__ Check to have a separate noise when your initials
get mentioned in a memo. get mentioned in a memo.
* <b>Logging</b> * __Logging__
* <b>Log all Pesters:</b> Log one-on-one chats. * __Log all Pesters:__ Log one-on-one chats.
* <b>Log all Memos:</b> Log everything said in memos. * __Log all Memos:__ Log everything said in memos.
* <b>Log Time Stamps for Pesters</b> * __Log Time Stamps for Pesters__
* <b>Log Time Stamps for Memos</b> * __Log Time Stamps for Memos__
* <b>Idle/Updates</b> * __Idle/Updates__
* <b>Minutes before Idle:</b> How long before you should be considered idle. * __Minutes before Idle:__ How long before you should be considered idle.
* <b>Check for Pesterchum Updates:</b> How often to check for updates * __Check for Pesterchum Updates:__ How often to check for updates
to Pesterchum. to Pesterchum.
* <b>Check for MSPA Updates:</b> Check the MSPA site for updates to comics. * __Check for MSPA Updates:__ Check the MSPA site for updates to comics.
* <b>Theme</b> * __Theme__
* <b>Pick a Theme</b> * __Pick a Theme__
### MEMOS: ###
###MEMOS:
Opens the Memo list as above. Opens the Memo list as above.
###USERLIST: ### USERLIST: ###
Shows a list of all the users that are currently logged onto Shows a list of all the users that are currently logged onto
Pesterchum. Right-click their names and select "ADD CHUM" to add them Pesterchum. Right-click their names and select "ADD CHUM" to add them
to your chum roll! to your chum roll!
###IDLE: ### IDLE: ###
Make yourself an idle chum. You will appear as idle until you Make yourself an idle chum. You will appear as idle until you
uncheck this box, or if you *actually* go idle (stop using the uncheck this box, or if you *actually* go idle (stop using the
computer) for 10 minutes and then come back. computer) for 10 minutes and then come back.
###IMPORT: ### IMPORT: ###
Imports your old Pesterchum 2.0, 2.5 and Tinychum chum Imports your old Pesterchum 2.0, 2.5 and Tinychum chum
rolls. This will also import your old quirks from Pesterchum 2.5. rolls. This will also import your old quirks from Pesterchum 2.5.
###RECONNECT: ### RECONNECT: ###
Forces PC to reconnect to the server. Forces PC to reconnect to the server.
###EXIT: ### EXIT: ###
noooooooooooooooooooooooo noooooooooooooooooooooooo
PROFILE MENU PROFILE MENU
------------ ------------
###QUIRKS: ### QUIRKS: ###
Opens the quirks menu. More on that below! Opens the quirks menu. More on that below!
###TROLLSLUM: ### TROLLSLUM: ###
Opens up the window where you can view people you've Opens up the window where you can view people you've
blocked. You can add and remove people to the list from here as well. blocked. You can add and remove people to the list from here as well.
###COLOR: ### COLOR: ####
Change your text color here! Change your text color here!
###SWITCH: ### SWITCH: ###
Switch your profile! You can have any number of profiles, and Switch your profile! You can have any number of profiles, and
PC will save your color, quirks, and theme for that profile. Chumrolls PC will save your color, quirks, and theme for that profile. Chumrolls
and block lists are the same for all profiles. Feel free to have and block lists are the same for all profiles. Feel free to have
multiple instances of PC running on two or more handles! multiple instances of PC running on two or more handles!
HELP MENU HELP MENU
--------- ---------
###HELP: ### HELP: ###
Get taken to a handy dandy tutorial for Pesterchum! Get taken to a handy dandy tutorial for Pesterchum!
###CALSPRITE: ### CALSPRITE: ###
Open a chat with calSprite (learn more about calSprite below). Open a chat with calSprite (learn more about calSprite below).
###NICKSERV: ### NICKSERV: ###
Open a chat with NickServ. If you don't know what NickServ is, you don't need to. Open a chat with NickServ. If you don't know what NickServ is, you don't need to.
###ABOUT: ### ABOUT: ###
See which version of Pesterchum you have. Learn about all the awesome people See which version of Pesterchum you have. Learn about all the awesome people
that helped bring Pesterchum 3.14 to you! that helped bring Pesterchum 3.14 to you!
###REPORT BUG: ### REPORT BUG: ###
Report any bugs you come across so we can fix them and make Pesterchum Report any bugs you come across so we can fix them and make Pesterchum
even better! even better!
CALSPRITE CALSPRITE
--------- ---------
calSprite is the bot that helps moderate canon handle usage! Simply pester calSprite is the bot that helps moderate canon handle usage! Simply pester
calSprite with the world "HELP" (turn your quirks off!) and you calSprite with the world "HELP" (turn your quirks off!) and you
will get instructions on how to use calSprite! will get instructions on how to use calSprite!
QUIRKS QUIRKS
------ ------
There are six kinds of quirks! I'll teach you how to use them all! 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 (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 to see exactly what to type! Don't include these quotes when using
@ -421,106 +461,117 @@ these examples!
Also, note that your quirks will not work until you save them by Also, note that your quirks will not work until you save them by
hitting "OK" on the Quirk window. hitting "OK" on the Quirk window.
* <b>Prefix/Suffix:</b> * __Prefix/Suffix:__
This will put text before or after everything you This will put text before or after everything you
say. So for example, we can use prefixes to emulate part of Nepeta or say. So for example, we can use prefixes to emulate part of Nepeta or
Equius' quirks: Equius' quirks:
<pre>
PREFIX: ":33 &lt; " ```
PREFIX: ":33 < "
You type: "*ac twitches her friendly whiskers at ct*" You type: "*ac twitches her friendly whiskers at ct*"
Result: Result:
AC: :33 &lt; *ac twitches her friendly whiskers at ct* AC: :33 < *ac twitches her friendly whiskers at ct*
</pre> ```
<pre> ```
PREFIX: "D --&gt; " PREFIX: "D --> "
You type: "Hi" You type: "Hi"
Result: Result:
CT: D --&gt; Hi CT: D --> Hi
</pre> ```
Suffixes work the same way, but at the end of the message: Suffixes work the same way, but at the end of the message:
<pre> ```
SUFFIX: "!!!" SUFFIX: "!!!"
You type: hey there You type: hey there
Result: Result:
GD: hey there!!! GD: hey there!!!
</pre> ```
Remember that it doesn't automatically add a space! You'll need to add Remember that it doesn't automatically add a space! You'll need to add
it in (see CT and AC examples again!) it in (see CT and AC examples again!)
* <b>Simple Replace:</b> * __Simple Replace:__
This will simply take a set of characters and replace them with other This will simply take a set of characters and replace them with other
characters. characters.
* Let's add a quirk to our Nepeta: * Let's add a quirk to our Nepeta:
<pre>
```
Replace: "ee" With: "33" Replace: "ee" With: "33"
You type: "*ac saunters from her dark cave a little bit sleepy from You type: "*ac saunters from her dark cave a little bit sleepy from
the recent kill*" the recent kill*"
Result: Result:
AC: :33 &lt; *ac saunters from her dark cave a little bit sl33py from the AC: :33 < *ac saunters from her dark cave a little bit sl33py from the
recent kill* recent kill*
</pre> ```
* Let's add two to Equius: * Let's add two to Equius:
<pre>
```
Replace: "loo" With: "100" Replace: "loo" With: "100"
Replace: "x" With "%" Replace: "x" With "%"
You type: "look" You type: "look"
Result: Result:
CT: D --&gt; 100k CT: D --> 100k
```
```
You type: "What are you expecting to accomplish with this" You type: "What are you expecting to accomplish with this"
Result: Result:
CT: D --&gt; What are you e%pecting to accomplish with this CT: D --> What are you e%pecting to accomplish with this
</pre> ```
* Aradia: * Aradia:
<pre>
```
Replace: "o" With: "0" Replace: "o" With: "0"
You type: "and the reward would be within our reach" You type: "and the reward would be within our reach"
Result: Result:
AA: and the reward w0uld be within 0ur reach AA: and the reward w0uld be within 0ur reach
</pre> ```
Notice that it is CASE SENSITIVE. So in the above case, if you typed Notice that it is CASE SENSITIVE. So in the above case, if you typed
"ABSCOND", it would not replace the "O". "ABSCOND", it would not replace the "O".
* Sollux: * Sollux:
<pre>
```
Replace: "i" With: "ii" Replace: "i" With: "ii"
Replace: "s" With: "2" Replace: "s" With: "2"
</pre> ```
* Eridan: * Eridan:
<pre>
```
Replace: "v" With: "vv" Replace: "v" With: "vv"
Replace: "w" With: "ww" Replace: "w" With: "ww"
</pre> ```
* Feferi: * Feferi:
<pre>
```
Replace: "h" with: ")(" Replace: "h" with: ")("
Replace: "H" with: ")(" Replace: "H" with: ")("
Replace: "E" with: "-E" Replace: "E" with: "-E"
</pre> ```
* <b>Regexp Replace:</b> * __Regexp Replace:__
This is a more complex kind of replacement. Regexp stands for "regular This is a more complex kind of replacement. [Regexp](http://en.wikipedia.org/wiki/Regexp)
expression", a kind of programming language (yes, it is a language) 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 used to find and replace text. PC 3.14 also includes a few functions (`upper()`,
handle capitalization (upper()). If you want to learn it on your own, `lower()`, `scramble()`). If you want to learn it on your own,
I suggest you start with the Python tutorial I suggest you start with the [Python tutorial](http://docs.python.org/howto/regex.html)
(http://docs.python.org/howto/regex.html) since PC 3.14 uses Python's since PC 3.14 uses Python's regexps. Check out V2.5's tutorial too, as that is a pretty
regexps. Check out V2.5's tutorial too, as that is a pretty good start good start as well.
as well.
* Let's start with Karkat. Regexps are just like your every day find and * 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: they search for a string that matches what you want to
replace, and replaces it with... the replacement. replace, and replaces it with... the replacement.
<pre>Regexp: "(.)" Replace with: "upper(\1)"</pre>
```
Regexp: "(.)" Replace with: "upper(\1)"
```
Three concepts here. Let's look at the regexp. "(.)" has two things Three concepts here. Let's look at the regexp. "(.)" has two things
going on. The first is that ".". In regexp speak, "." is the wildcard: going on. The first is that ".". In regexp speak, "." is the wildcard:
@ -531,7 +582,7 @@ as well.
means, "put the match inside parentheses #1 here". You can have any means, "put the match inside parentheses #1 here". You can have any
number of parentheses. number of parentheses.
* <b>"upper()"</b> is a function special to PC 3.14 -- it will uppercase * __"upper()"__ is a function special to PC 3.14 -- it will uppercase
anything inside the parentheses. So in this case, upper will uppercase anything inside the parentheses. So in this case, upper will uppercase
"\1" -- which, as you recall is what we found inside the "\1" -- which, as you recall is what we found inside the
parentheses. Which was *every* character. So to sum up, it replaces parentheses. Which was *every* character. So to sum up, it replaces
@ -539,12 +590,13 @@ as well.
MAKES YOU TALK LIKE THIS. MAKES YOU TALK LIKE THIS.
* Let's look at Terezi next. * Let's look at Terezi next.
<pre>
```
Regexp: "[aA]" Replace with: "4" Regexp: "[aA]" Replace with: "4"
Regexp: "[iI]" Replace with: "1" Regexp: "[iI]" Replace with: "1"
Regexp: "[eE]" Replace with: "3" Regexp: "[eE]" Replace with: "3"
Regexp: "(.)" Replace with: "upper(\1)" Regexp: "(.)" Replace with: "upper(\1)"
</pre> ```
We already know what the last line does. But what's up with those We already know what the last line does. But what's up with those
brackets? What's their deal? Basically, in regular expressions, brackets? What's their deal? Basically, in regular expressions,
@ -554,25 +606,27 @@ as well.
"i" and "I" will be replaced with "1", and "e" and "E" will be "i" and "I" will be replaced with "1", and "e" and "E" will be
replaced with "3." replaced with "3."
Just like there is an <b>"upper()"</b> function, there is also a <b>"lower()"</b> Just like there is an `upper()` function, there is also a `lower()`
function. It acts just like <b>"upper()"</b> but instead makes everything function. It acts just like `upper()` but instead makes everything
inside the parentheses lowercase. This allows you to do things like: inside the parentheses lowercase. This allows you to do things like:
<pre>
```
Regexp: "(.)" Replace with: "lower(\1)" Regexp: "(.)" Replace with: "lower(\1)"
You type: "I AM YELLING" You type: "I AM YELLING"
Result: Result:
GD: i am yelling GD: i am yelling
</pre> ```
Along with the upper and lower functions is a <b>"scramble()"</b> function. Along with the upper and lower functions is a `scramble()` function.
The purpose of this function is to randomly scramble anything inside The purpose of this function is to randomly scramble anything inside
the parentheses. the parentheses.
<pre>
```
Regexp: "(\w)(\w*)(\w)" Replace with: "\1scramble(\2)\3" Regexp: "(\w)(\w*)(\w)" Replace with: "\1scramble(\2)\3"
You type: "hello there" You type: "hello there"
Result: Result:
GD: hlelo trhee GD: hlelo trhee
</pre> ```
This particular regular expression scrambles all of the letters in This particular regular expression scrambles all of the letters in
the middle of a word. Notice that the "h" and "o" at the beginning the middle of a word. Notice that the "h" and "o" at the beginning
@ -583,38 +637,43 @@ as well.
brackets instead match every character *except* the ones in the brackets instead match every character *except* the ones in the
brackets. So, for example, if you wanted to have a quirk where you brackets. So, for example, if you wanted to have a quirk where you
capitalized all your letters *except* o, you'd do this: capitalized all your letters *except* o, you'd do this:
<pre>
```
Regexp: "([^o])" Replace with: "upper(\1)" Regexp: "([^o])" Replace with: "upper(\1)"
You type: "hello there" You type: "hello there"
Result: Result:
GD: HELLo THERE GD: HELLo THERE
</pre> ```
You can also specify a *range* of characters inside the brackets, by You can also specify a *range* of characters inside the brackets, by
using the "-" character. [a-z] will match any lowercase letter. You 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. can combine them, too: [a-z0-9] will match any digit and lowercase letter.
There are also different shortcuts for character types: There are also different shortcuts for character types:
<pre>
```
\d matches any digit; same as [0-9] \d matches any digit; same as [0-9]
\D matches any non-digit; same as [^0-9] \D matches any non-digit; same as [^0-9]
\s matches any spaces \s matches any spaces
\S matches any non-space \S matches any non-space
\w matches any alphanumeric character; same as [a-zA-Z0-9_] \w matches any alphanumeric character; same as [a-zA-Z0-9_]
\W matches any non-alphanumeric character; same as [^a-zA-Z0-9_] \W matches any non-alphanumeric character; same as [^a-zA-Z0-9_]
</pre>
Note \w and \W also match extended Latin or Unicode alphanumerics.
```
You can include this inside brackets, too. You can include this inside brackets, too.
There's also a special character, \\b. What \\b does is make sure that There's also a special character, \\b. What \\b does is make sure that
you are at the beginning or end of a word. you are at the beginning or end of a word.
* So with that knowledge, let's try Kanaya: * So with that knowledge, let's try Kanaya:
<pre>
```
Regexp: \b(\w) Replace with: upper(\1) Regexp: \b(\w) Replace with: upper(\1)
You type: "i suggest you come to terms with it" You type: "i suggest you come to terms with it"
Result: Result:
GA: I Suggest You Come To Terms With It GA: I Suggest You Come To Terms With It
</pre> ```
Another feature of regular expressions is the ability to match Another feature of regular expressions is the ability to match
*repeated* characters. There are three repeat characters: the "\*", the *repeated* characters. There are three repeat characters: the "\*", the
@ -622,7 +681,7 @@ as well.
or character type you want to match. (So, you could say "\s+" or ".*") or character type you want to match. (So, you could say "\s+" or ".*")
The "\*" character matches ZERO or more of that character. So, for The "\*" character matches ZERO or more of that character. So, for
example, "f\*" would match "f" and "ff" -- and any other character! example, "f\*" would match "", "f" and "ff" -- and any other character!
That's right, every character counts as matching it zero times. Yeah, That's right, every character counts as matching it zero times. Yeah,
it's weird. I suggest you use... it's weird. I suggest you use...
@ -630,32 +689,37 @@ as well.
wanted to have a character that wanted to elongate their s's so that 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 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: eight s's when using words with double s's, like pass, we'd do this:
<pre>
```
Regexp: "s+" Replace with: "ssss" Regexp: "s+" Replace with: "ssss"
You type: "you shall not pass" You type: "you shall not pass"
Result: Result:
UU: you sssshall not passss UU: you sssshall not passss
</pre> ```
As for the other two, I can't really think of any useful quirks to be 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 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}" character, so "trolls?" would match "troll" and "trolls". "{m,n}"
matches between m and n characters. (If you leave out 'n', any number 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 of characters more than m will be matched: "s{3,}" will match 3 or more 's'.)
"ss", "sss", and "ssss" and that's it. So "s{2,4}" will match "ss", "sss", and "ssss" and that's it.
Also, "?" is equivalent to "{0,1}", "*" is equivalent to "{0,}", and
"+" is equivalent to "{1,}".
Now with repeating expressions, we can do something like make EVERY Now with repeating expressions, we can do something like make EVERY
other WORD capitalized: other WORD capitalized:
<pre>
```
Regexp: "(\w+) (\w+)" Replace with: "upper(\1) \2" Regexp: "(\w+) (\w+)" Replace with: "upper(\1) \2"
You type: "this is pretty annoying i bet" You type: "this is pretty annoying i bet"
Result: Result:
GD: THIS is PRETTY annoying I bet GD: THIS is PRETTY annoying I bet
</pre> ```
The \1 matches the first word -- which has been matched because the The \1 represents the first word -- which has been matched because the
word is alphanumeric characters, repeated once or more -- and \2 word is alphanumeric characters, repeated once or more -- and \2
matches the second word. represents the second word.
Another operator to use is the "|", which will match more than one set Another operator to use is the "|", which will match more than one set
of characters. For example, "black|red" will match "black" or of characters. For example, "black|red" will match "black" or
@ -670,9 +734,10 @@ as well.
behaviors. For example, if we have a quirk that adds "..." to the end 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 of all our messages, we can set it up so it doesn't do that if we put
punctuation [?!.] at the end. So: punctuation [?!.] at the end. So:
<pre>
```
Regexp: "([^?!.])$" Replace with: "\1..." Regexp: "([^?!.])$" Replace with: "\1..."
</pre> ```
This will match the end of any message as long as it doesn't have 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 "?", "!", or "." at the end. Then it will replace it with whatever the
@ -683,19 +748,21 @@ as well.
one, you may not get what you expect because they will ALL be applied, 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! one after the other! This is a bug in my opinion, that I plan to fix!
* <b>Random replace:</b> * __Random replace:__
Just like the regexp replace, except that instead of just one thing to Just like the regexp replace, except that instead of just one thing to
replace it with, you give it a list. PC will then choose from that replace it with, you give it a list. PC will then choose from that
list randomly. So let's say I want to randomly end my sentences with list randomly. So let's say I want to randomly end my sentences with
either "bro" or "dog": either "bro" or "dog":
<pre>
```
Regexp: "$" Replace with: "bro" and "dog" Regexp: "$" Replace with: "bro" and "dog"
</pre> ```
* You can also imitate Araida's random "ribbits" in between words: * You can also imitate Araida's random "ribbits" in between words:
<pre>
```
Regexp: "\s" Replace with: " ribbit ", " ", " ", " ", " ", " ", etc.... Regexp: "\s" Replace with: " ribbit ", " ", " ", " ", " ", " ", etc....
</pre> ```
where " " is just a blank space added a bunch of times. (You can see where " " is just a blank space added a bunch of times. (You can see
how many blank spaces you've added by clicking on the list.) You have how many blank spaces you've added by clicking on the list.) You have
@ -706,7 +773,7 @@ either "bro" or "dog":
Also note that if you add more than one prefix or more than one Also note that if you add more than one prefix or more than one
suffix, it will pick randomly from them instead of adding them both! suffix, it will pick randomly from them instead of adding them both!
* <b>Mispeller</b>: * __Mispeller__:
Be careful with thsi one. The mispeller will randomly mispell x% of Be careful with thsi one. The mispeller will randomly mispell x% of
the words you type -- where x is the percentage you set the slider the words you type -- where x is the percentage you set the slider
to. I have attempted to mimic SBaHJ mispelling style but whoof knows to. I have attempted to mimic SBaHJ mispelling style but whoof knows
@ -717,57 +784,57 @@ SMILIES
------- -------
Here's a list of smilies: Here's a list of smilies:
* :rancorous: * `:rancorous:`
* :apple: * `:apple:`
* :bathearst: * `:bathearst:`
* :cathearst: * `:cathearst:`
* :woeful: * `:woeful:`
* :pleasant: * `:pleasant:`
* :blueghost: * `:blueghost:`
* :slimer: * `:slimer:`
* :candycorn: * `:candycorn:`
* :cheer: * `:cheer:`
* :duhjohn: * `:duhjohn:`
* :datrump: * `:datrump:`
* :facepalm: * `:facepalm:`
* :bonk: * `:bonk:`
* :mspa: * `:mspa:`
* :gun: * `:gun:`
* :cal: * `:cal:`
* :amazedfirman: * `:amazedfirman:`
* :amazed: * `:amazed:`
* :chummy: * `:chummy:`
* :cool: * `:cool:`
* :smooth: * `:smooth:`
* :distraughtfirman * `:distraughtfirman:`
* :distraught: * `:distraught:`
* :insolent: * `:insolent:`
* :bemused: * `:bemused:`
* :3: * `:3:`
* :mystified: * `:mystified:`
* :pranky: * `:pranky:`
* :tense: * `:tense:`
* :record: * `:record:`
* :squiddle: * `:squiddle:`
* :tab: * `:tab:`
* :beetip: * `:beetip:`
* :flipout: * `:flipout:`
* :befuddled: * `:befuddled:`
* :pumpkin: * `:pumpkin:`
* :trollcool: * `:trollcool:`
* :jadecry: * `:jadecry:`
* :ecstatic: * `:ecstatic:`
* :relaxed: * `:relaxed:`
* :discontent: * `:discontent:`
* :devious: * `:devious:`
* :sleek: * `:sleek:`
* :detestful: * `:detestful:`
* :mirthful: * `:mirthful:`
* :manipulative: * `:manipulative:`
* :vigorous: * `:vigorous:`
* :perky: * `:perky:`
* :acceptant: * `:acceptant:`
* :olliesouty: * `:olliesouty:`
* :billiards: * `:billiards:`
* :billiardslarge: * `:billiardslarge:`
* :whatdidyoudo: * `:whatdidyoudo:`