diff --git a/README.mkdn b/README.mkdn
index 6b7c6c4..b7a60c6 100644
--- a/README.mkdn
+++ b/README.mkdn
@@ -1,788 +1,101 @@
Welcome to Pesterchum 3.41!
=============================
-WHAT'S NEW?
------------
-* Check out the CHANGELOG file to see what's changed!
+## FOR NEW USERS
+This modification of Pesterchum is intended for people who are already familiar
+with using the base client.
+If you aren't, please check the standard build's [documentation][doc].
+
+[doc]: https://github.com/illuminatedwax/pesterchum/blob/master/README.mkdn
+
+## FOR EVERYONE ELSE
+Greetings! This is a modification of Pesterchum, made because Pesterchum is
+effectively no longer maintained, that is intended to fix a number of issues.
+The code used as a base is a newer version of Pesterchum than the one in
+circulation, and thus has plenty of useful features that can be found in the
+[CHANGELOG][changes].
+In addition, there are other features and improvements that have been made, and
+there are many more planned. Check the [TODO list][todo-done] to see what's
+been fixed, as well as what's [planned][todo-upcoming].
+
+[changes]: https://github.com/karxi/pesterchum/blob/master/CHANGELOG.mkdn
+[todo-done]: https://github.com/karxi/pesterchum/blob/master/TODO.mkdn#tododone
+[todo-upcoming]: https://github.com/karxi/pesterchum/blob/master/TODO.mkdn#features
+
+### Installation
+There isn't a lightweight installer yet, but the steps aren't all that
+difficult.
+
+#### Pitfalls
+* If you're on a 64-bit system (most are these days), use those links. You can
+ also use the 32 bit versions, if you choose, but you *cannot* mix them.
+* If you're on a 32-bit system but use the 64-bit installers, you'll get an
+ error along the lines of "not a valid Win32 application", or the
+ installer will simply fail.
+* This version of Pesterchum does not come compiled as an executable, and thus
+ does not have Python/PyQt4 packaged with it. Those are necessary for
+ Pesterchum to run, so you have to install them manually.
+
+#### First-Time Install
+* Download links are for Windows, but a quick Google search will find
+ everything necessary.
+1. Install Python 2.7 or higher if you don't already have it:
+ * [32 bit][python2-32]
+ * [64 bit][python2-64]
+ Be *sure* to add Python to the PATH if asked to do so during
+ installation. It means Python will be usable from the console,
+ which is necessary for this to run.
+2. Install PyQt4:
+ * [32 bit][pyqt4-32]
+ * [64 bit][pyqt4-64]
+3. (LINUX) Install pygame:
+ * [pygame download page][pygame-dl]
+ You don't need to install this if you're using Windows; sound should
+ work fine without it.
+4. Download Pesterchum:
+ * [Download from main branch][pchum-zip]
+5. Unzip Pesterchum somewhere easily-accessible.
+6. **If you have any custom themes**, copy/paste them into the 'themes' folder.
+ You can find this in `%APPDATA%/Local/pesterchum`.
+ Oftentimes it doesn't exist, so you'll have to make it and copy the custom
+ themes into it.
+ __If that doesn't work:__
+ You can also copy the missing themes into the 'themes' folder of the version
+ you just unzipped. **Don't overwrite any files** if you do this - the themes
+ used by this have been updated, and the older default themes may break when
+ used.
+7. Run Pesterchum! How you do this depends on the OS:
+ * (WINDOWS) Run `w32-run-pchum.bat`.
+ * (LINUX) Run `./pesterchum`, preferably via terminal.
+ Note that this is made to provide debugging information - so that if errors
+ come up, they can be reported to me, and I can fix them.
+
+[python2-32]: https://www.python.org/ftp/python/2.7.12/python-2.7.12.msi
+[python2-64]: https://www.python.org/ftp/python/2.7.12/python-2.7.12.amd64.msi
+[pyqt4-32]: http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11.4/PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x32.exe
+[pyqt4-64]: http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11.4/PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x64.exe
+[pygame-dl]: http://www.pygame.org/download.shtml
+[pchum-zip]: https://github.com/karxi/pesterchum/archive/master.zip
+
+#### Upgrading
+Just re-download the [Pesterchum zip][pchum-zip] and extract it over your old
+installation, replacing everything that was already there. That's all there is
+to it!
+
+#### Having Problems?
+I can't offer much help in this regard; if you're getting errors, feel free to
+try to contact me, but if you're having trouble with the installers, there's
+little I can do. [How to install Python][howtogetpython] might help; failing
+that, Google saves lives.
+
+[howtogetpython]: http://www.howtogeek.com/197947/how-to-install-python-on-windows/
-What do I do now?
------------------
-
-Most questions can be answered by visiting the forums! Go to HELP->HELP
-and you'll be transported to the proper thread!
-
-Here's some tips to help you get started:
------------------------------------------
-
-- Some themes can be confusing if you haven't used the program
-already! Some hints:
- * Trollian: 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. You can go offline by hitting the
-"Timelines" menu bar.
-
- * Gold: Add chums by hitting the two chumpeoples in the upper left
-corner. Go offline by clicking the "CHUMHANDLE:" label.
-
- * Enamel: Add chums by hitting the "CHUMROLL" label. Go offline by
-clicking the upper left hand corner.
-
-- Right-click is your friend! There are useful right click
-options on the chumroll, by clicking the chumhandle in a conversation,
-online userlist, or the list of memo browsers.
-
-Cool features:
---------------
-
-- 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 times in one chat.
-- Quirks: Prefix, suffix, simple replace, regexp replace (like in
-2.5), random replacement, and an auto-mispeller :P
-- Chum groups. Organize your chums into collapsible groups for easy
-management.
-- Block/user list
-- Add/block chums directly from a conversation, the userlist, or memo
-userlist.
-- Timestamps saved in logs and shown in conversations if wanted.
-- Logging. Logs are output in bbcode (for easy forum posting), html,
-and plain text.
-- Logviewer for easy log reading inside Pesterchum
-- Idling. You can set yourself idle manually, and the computer will
-set it for you after a configurable amount of time.
-- 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.
-- Submit quotes directly to the Pesterchum QDB!
-
-FA%
----
-__Q:__ Norton says it has a virus and then deletes it!
-__A:__ Read this helpful Norton FAQ:
-
-Alright, here's a guide to by-passing Norton:
-
-* First, to download Pesterchum:
- 1. Make sure you're on a Moderator account. Moreso for the Norton steps than these ones.
- 2. Download the .zip file, not the .exe file.
- 3. Unzip the .zip file onto memory. Pesterchum should now be installed.
-
-* Now, to by-pass Norton:
- 1. Make sure you're still on a moderator account.
- 2. Open up Norton.
- 3. Click on 'Settings' up in the upperright hand corner.
- 4. Click on 'Anitivirus', off to the upper left. It has a small image of a needle or something similar off to it's side.
- 5. There's a word that reads 'SONAR protection' halfway to the bottomleft. Off to it's right, there's a bar that's half green. Click on the bar.
- 6. It will warn you about turning off SONAR. Have it set to turn back on when the system restarts.
- 7. If done properly, the background for the main page of Norton(what you saw on steps 2-3) has turned an apocaliptic red. Feel free to close Norton now. Keep in mind to stay off suspicious online sites now.
- 8. Open up Pesterchum, and let the chummy convos begin.
-
-* When finished:
- 1. Log off of Pesterchum. LOG OFF, NOT CLOSE IT.
- 2. Then, you can either shut off your comp, and Norton will re-enable SONAR, or you can repeat steps 1-5, except turning the red bar green. If done right, Norton will be it's happy color again.
- 3, Keep in mind that you must repeat all of this(other than the download) every time you want to get on Pesterchum.
-
-* Hope this is helpful!
-
-(This guide brought to you by the slightly combined efforts of empireomega and Xanaomin)
-
-------------------------------------------------------------------------------------
-
-__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!
-__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", ....
-```
-
-where the .... is the rest of the gobbledygook there.
-
-------------------------------------------------------------------------------------
-
-__Q:__ The mood buttons on Pesterchum 6.0 don't match up to what it sets your mood to! What gives?
-__A:__ The mood names are just there to look canon. It is intentional.
-
-------------------------------------------------------------------------------------
-
-__Q:__ I'm appearing as offline to 2.5 users/other users appear the wrong
-mood? What's happeninggggg
-__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
-extend it). So some moods will appear wrong between 2.5
-users. (\*COUGH\*tell them to switch to 3.14\*COUGH\*)
-
-------------------------------------------------------------------------------------
-
-__Q:__ Pesterchum 2.5 users don't get my /me messages correctly!
-__A:__ That's because they implemented the /me command differently.
-
-------------------------------------------------------------------------------------
-
-__Q:__ Can we resize the main window?
-__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.
-
-------------------------------------------------------------------------------------
-
-__Q:__ Can we have different chum rolls for different users?
-__A:__ No. Instead what we now have crum groups to organize people.
-
-------------------------------------------------------------------------------------
-
-__Q:__ Can we delete profiles?
-__A:__ Yes. Go to the profile switcher, choose a profile and press DELETE.
-
-------------------------------------------------------------------------------------
-
-__Q:__ You should make it so you can ban specific time frames in memos.
-__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.
-
-
-DOCUMENTATION
--------------
-
-STARTING
---------
-
-If this is your first time running Pesterchum 3.14, you need to create
-a new profile. Just type in your chum handle in the box and click the
-color swatch to pick your color. Check the "default" checkbox to make
-this your default profile.
-
-BASIC PESTERING
----------------
-
-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
-capital letter. Once you've added that person, they will appear on
-your chumroll. You can double click to begin pestering them, or
-right-click to bring up a menu where you can pester them, block them,
-or remove them from your chumroll. (Or you can select them and hit
-"enter" OR hit the "PESTER" button.)
-
-Once you begin pestering somebody (or they begin pestering you), it
-will bring up the conversation window. Here you can type to your
-chum. Also remember that if you right-click on the area just above the
-Pesterlog, it will bring up a list of options: Quirks Off will turn
-your quirks off, Add Chum will add this chum to your list, and Block
-will block them. (Those last two options are useful if you are being
-pestered by someone you don't have on your list yet!)
-
-While pestering your chum, here are some useful features:
-
-* Type /me to create a system message. "/me facepalms." will generate:
-
- ```
- -- ghostDunk [GD] facepalms. --
- ```
-
- You can also append 's after /me like so: "/me's computer exploded."
-
- ```
- -- ghostDunk's [GD'S] computer exploded. --
- ```
-
- In fact, any characters you type after a /me before the space will
- be added: "/meing 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
- some appleberry blast to your conversation, just use color
- tags. These work like in TC 1.5: `colored text`. But in
- PC 3.14, you can type your color in a lot of different ways:
-
- - You can use the familiar r,g,b method:
- `The Green Sun`
- - You can use HTML tags:
- `DURR I'M KARKAT AND I'M A HUGE IDIOT`
- - You can even use [plain color names](http://en.wikipedia.org/wiki/Web_colors):
- `D4V3 TH1S 1S SO D3C4D3NT`
- - You don't even have to add the `` if you are lazy. Just use a
- new color tag whenever you want to change colors and PC 3.14 will
- add the extra tags for you.
-
-* URLs (anything with `http://` or `www.` in front of it) will automatically be
- detected and made into a link you can CLICK.
-
-* You can also link people to memos by typing "#" and the name of the
- menu like so: #R41NBOW_RUMPUS_P4RTYTOWN
- Clicking the link will open up the memo select menu.
-
-* Smilies! There are a list of smilies at the end of this document;
- they are based on the MSPA Forum smilies.
-
-* Don't worry about your quirks screwing up any of the above: PC will
- apply your quirks AFTER it figures out color codes, links, smilies, etc.
-
-* Pressing the up arrow will cycle through a history of your comments,
- so if you want to retype something, you can pull it up.
-
-* You can submit directly to the Pesterchum Quote Database! If you
- have a particualarly awesome conversation, you can submit it to the
- database by simply highlighting the good part of the conversation,
- right clicking it and choosing "Submit to Pesterchum QDB!"
-
-
-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.
-
-CLIENT MENU
------------
-
-### OPTIONS: ###
-
-* __Chum List__
- * __Hide Offline Chums:__ Turning this option on will hide all offline chums
- off your chumroll.
-
- * __Show Empty Groups:__ Turning this option on will show empty groups.
-
- * __Show Number of Online Chums:__ Show number of online chums in each group.
-
- * __Sort Chums:__ How would you like your chums sorted?
-
-* __Conversations__
- * __Time Stamps:__ Turning this on will show timestamps in your chats.
-
- * __12/24 hour:__ Formatting for timestamps. Whether you want them in 12 or
- 24 hour time.
-
- * __Show Seconds:__ Turning this on will show the seconds in your timestamps.
-
- * __Show OP and Voice Messages in Memos:__ Whether or not you would like
- to see messages when people gain/lose OP or Voice.
-
- * __Use animated smilies:__ To animate or not to animate.
-
-* __Interface__
- * __Tabbed Conversations:__ Turns tabbed conversations on and off. Don't
- worry if you do this in the middle of a conversation, PC will save
- them for you.
-
- * __Minimize:__ What do you want the minimize button to do?
-
- * __Close:__ What do you want the close button to do?
-
-* __Sound__
- * __Sounds On:__ Uncheck to shut it the fuck up.
-
- * __Pester Sounds:__ Uncheck to only turn off Pester sounds.
-
- * __Memo Sounds:__ Uncheck to only turn off Memo sounds.
-
- * __Memo Mentions:__ Check to have a separate noise when your initials
- get mentioned in a memo.
-
-* __Logging__
- * __Log all Pesters:__ Log one-on-one chats.
-
- * __Log all Memos:__ Log everything said in memos.
-
- * __Log Time Stamps for Pesters__
-
- * __Log Time Stamps for Memos__
-
-* __Idle/Updates__
- * __Minutes before Idle:__ How long before you should be considered idle.
-
- * __Check for Pesterchum Updates:__ How often to check for updates
- to Pesterchum.
-
- * __Check for MSPA Updates:__ Check the MSPA site for updates to comics.
-
-* __Theme__
- * __Pick a Theme__
-
-### MEMOS: ###
-
-Opens the Memo list as above.
-
-### USERLIST: ###
-
-Shows a list of all the users that are currently logged onto
-Pesterchum. Right-click their names and select "ADD CHUM" to add them
-to your chum roll!
-
-### IDLE: ###
-
-Make yourself an idle chum. You will appear as idle until you
-uncheck this box, or if you *actually* go idle (stop using the
-computer) for 10 minutes and then come back.
-
-### IMPORT: ###
-
-Imports your old Pesterchum 2.0, 2.5 and Tinychum chum
-rolls. This will also import your old quirks from Pesterchum 2.5.
-
-### RECONNECT: ###
-
-Forces PC to reconnect to the server.
-
-### EXIT: ###
-
-noooooooooooooooooooooooo
-
-
-PROFILE MENU
-------------
-
-### QUIRKS: ###
-
-Opens the quirks menu. More on that below!
-
-### TROLLSLUM: ###
-
-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.
-
-### COLOR: ####
-
-Change your text color here!
-
-### SWITCH: ###
-
-Switch your profile! You can have any number of profiles, and
-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
-multiple instances of PC running on two or more handles!
-
-
-HELP MENU
----------
-
-### HELP: ###
-
-Get taken to a handy dandy tutorial for Pesterchum!
-
-### CALSPRITE: ###
-
-Open a chat with calSprite (learn more about calSprite below).
-
-### NICKSERV: ###
-
-Open a chat with NickServ. If you don't know what NickServ is, you don't need to.
-
-### ABOUT: ###
-
-See which version of Pesterchum you have. Learn about all the awesome people
-that helped bring Pesterchum 3.14 to you!
-
-### REPORT BUG: ###
-
-Report any bugs you come across so we can fix them and make Pesterchum
-even better!
-
-
-CALSPRITE
----------
-
-calSprite is the bot that helps moderate canon handle usage! Simply pester
-calSprite with the world "HELP" (turn your quirks off!) and you
-will get instructions on how to use calSprite!
-
-
-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!
-
-Also, note that your quirks will not work until you save them by
-hitting "OK" on the Quirk window.
-
-* __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](http://en.wikipedia.org/wiki/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 few functions (`upper()`,
-`lower()`, `scramble()`). 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."
-
- Just like there is an `upper()` function, there is also a `lower()`
- function. It acts just like `upper()` but instead makes everything
- inside the parentheses lowercase. This allows you to do things like:
-
- ```
- Regexp: "(.)" Replace with: "lower(\1)"
- You type: "I AM YELLING"
- Result:
- GD: i am yelling
- ```
-
- Along with the upper and lower functions is a `scramble()` function.
- The purpose of this function is to randomly scramble anything inside
- the parentheses.
-
- ```
- Regexp: "(\w)(\w*)(\w)" Replace with: "\1scramble(\2)\3"
- You type: "hello there"
- Result:
- GD: hlelo trhee
- ```
-
- This particular regular expression scrambles all of the letters in
- the middle of a word. Notice that the "h" and "o" at the beginning
- and end of hello remain in place while the other letters are scrambled.
-
- 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_]
-
- Note \w and \W also match extended Latin or Unicode alphanumerics.
- ```
-
- 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: "s{3,}" will match 3 or more 's'.)
- 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
- 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 represents the first word -- which has been matched because the
- word is alphanumeric characters, repeated once or more -- and \2
- represents 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:__
- 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
- list randomly. So let's say I want to randomly end my sentences with
- either "bro" or "dog":
-
- ```
- Regexp: "$" Replace with: "bro" and "dog"
- ```
-
- * You can also imitate Araida's random "ribbits" in between words:
-
- ```
- Regexp: "\s" Replace with: " ribbit ", " ", " ", " ", " ", " ", etc....
- ```
-
- 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
- to add the spaces because each entry has the same chance of being
- selected. (Yes, I know this could be improved.) If you add " ribbit "
- and 9 spaces, " ribbit " will have a 1/10 chance of being picked.
-
- 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!
-
-* __Mispeller__:
-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
-to. I have attempted to mimic SBaHJ mispelling style but whoof knows
-what will happen oh god ive created a mosnter
SMILIES
-------
-Here's a list of smilies:
+None of the smilies have changed or been added, yet; this list is kept for
+posterity and easy reference.
* `:rancorous:`
* `:apple:`
diff --git a/TODO.mkdn b/TODO.mkdn
index bfc09be..ddfa37a 100644
--- a/TODO.mkdn
+++ b/TODO.mkdn
@@ -63,6 +63,7 @@ Features
* Finish creating the sound wrapper. Just make it check what the type of sound needed is upon creation, and instantiate a private class based off of that.
* There is basically no good way to do this without moving to Qt5. I might try that myself later, but that's a long-term goal.
* Make it possible to test quirk things and such without connecting? This'd be hard to separate out, but useful.
+ * Make a quirk 'bin' that exists independent of profiles, and can be copied to/from at will.
* Right-click Time entry field to see those used? (Replace left/right buttons?)
* Make the memo name entry box accept a comma-separated list
* Make right-clicking on a tab open up the right-click menu one would get on right-clicking the title (frame??)
@@ -74,6 +75,7 @@ Features
Todo/Done
----
+**Everything in this list has already been completed.**
* Fix parser text-loss bug that plagues everyone (especially Chumdroid users)
* Make /me messages that cut continue into more /me messages
* Make sound work on Windows through QSound (disables volume control)
@@ -87,6 +89,7 @@ Todo/Done
Debugging
----
* Make small, simplistic windows that allow the viewing of internal variables pertaining to things like set quirks, users present, etc.
+ * Also let it display the stylesheet settings of the current window, or similar.
* Make a window that can be used to interface with the script directly - a simple Python console.
Bugs