What is it?

This is a variant on Langton's ant which extends it to 45 degree turns, reversals, forking, etc. In essence, each point on the canvas is a cell in a grid, which is used for command lookups. When an ant walks onto a cell, it increments the value, which loops around -- this serves as the index into the command string. Forking in this works as such: When a fork happens, a new ant is created.

Command key:

CharacterBehavior
+Turn right 45 degrees
-Turn left 45 degrees
*Turn right 90 degrees
/Turn left 90 degrees
.Go straight
!Reverse
=Fork current ant, with the existing one continuing straight and the new one going in reverse
<Fork current ant, with the existing one turning left 45 degrees and the new one turning right 45 degrees
>Fork current ant, with the existing one turning left 135 degrees and the new one turning right 135 degrees
@If there are multiple ants, kill the one that hits this command; if not, the ant goes straight
~If there are multiple ants, kill all but the one that hits this command
$Increments the current color
^Decrements the current color
0Sets the wrap mode to square (default)
#Sets the wrap mode to octagon
mSets the wrap mode to reverse (ants reverse course when hitting a side)
_Switches to cartesian mode (default)
&Switches to polar mode
\Toggles between polar and cartesian modes
?Repeats the last command the ant used (if multiple repeats are hit in a row, they execute the same command)
vToggles visibility of the ant
pHits the 3 points mirrored around your current point (mirror x, y, x and y)
fForks to the 3 points mirrored around your current point (mirror x, y, x and y)
PHits the 7 points mirrored around your current point (45 degree equivalent of p)
FForks to the 7 points mirrored around your current point (45 degree equivalent of f)
iInverts the behavior of the ant -- rather than incrementing cells, it decrements them
gExecutes the following command if the current cell's value is greater than the average of the neighborhood (the 9 cells around and including itself)
lExecutes the following command if the current cell's value is less than the average of the neighborhood (the 9 cells around and including itself)
eExecutes the following command if the current cell's value is equal to the average of the neighborhood (the 9 cells around and including itself)
{.....}Executes everything within the braces as a single command (thus it's assigned to one cell)
wSets the background to white and turns off blending mode (only executed at initialization)
WSets the background to white and turns on blending mode (only executed at initialization)
bSets the background to black and turns off blending mode (only executed at initialization)
BSets the background to black and turns on blending mode (only executed at initialization)
dXChanges the direction of the cell the ant is on, based on the value of X (+ - * / ! are all valid). This is cumulative and applied to ants that walk onto the cell
nSets the current cell to 0
NSets the current cell to the max value
aSets all cells occupied by ants to the value of the current cell
oForks to all of the neighboring cells, setting their direction such that they're facing away from the current cell
1Executes the following command only once. Future hits on this command do nothing
rExecutes the following command only once per ant. Future hits on this command do nothing
xExecutes the following command only if there is one ant active
XExecutes the following command only if there are more than one ants active
sSuspends execution of ants other than the current ant until unsuspended by 'S' or 'u'
SToggles suspension
uDisables suspension
tSets the teleportation point for the current ant. Note: This is propagated to ants forked from this one
TTeleports to the teleportation point for the current ant, if it's set
7Teleports to the teleportation point for the current ant, if it's set, and sets the teleportation point to the previous location of the ant
zExecutes the following command if suspension is disabled
ZExecutes the following command if suspension is enabled