Skip to the main content


Oddjobs website

I’ve made a website for the Oddjobs guild, which you can find at Besides the usual guild-related stuff, the Oddjobs website also contains a number of odd-job-related resources:

Odd job guides

As of yet, all of the guides on the Oddjobs website have been written by yours truly. You can find all of the guides here, which includes:

List of odd jobs

I also maintain a short list of odd jobs on the Oddjobs website. Do note, however, that this list is inherently not exhaustive, and also has not been updated in quite a while.

Damage calc

The Oddjobs website also features a damage calculator for calculating the damage dealt by PCs in pre-Big-Bang (pre-BB) MapleStory. This calculator is intentionally designed to be highly flexible. This highly flexible nature was originally intended to accomodate unusual characters & circumstances, for obvious reasons, but this also makes it a great general-purpose calculator — its use is by no means restricted to odd-job-related calculations.

Gish AP calc

The Oddjobs website also features a “gish AP calculator”, based on original work by Cortical (IGN GishGallop) and myself. The intent of this calculator is to help gishes allocate their AP and choose their gear/buffs wisely.

The gish AP calculator operates by adding AP (into STR, INT, or LUK — but never into DEX, as a heuristic), one by one, until it runs out of AP to spend, all the while attempting to optimise for a particular value of “wDominanceFactor”. wDominanceFactor is the factor by which the gish’s melee DPM should exceed the gish’s single-target magical DPM for the selected spell. This is a real number, and is typically in the interval (1, 3], because the gish can never attack multiple targets at once with their melee, so they naturally tend to focus on melee for single-target DPM and on magic for multi-target (aggregate) DPM. Thus, even a gish who deals twice as much (wDominanceFactor = 2) single-target DPM with their melee as they do with their spell, will nevertheless find their spell to be quite useful when attacking three or more monsters at a time, and possibly also (situationally) when attacking exactly two monsters at a time.

Caveat emptor: The formula for MACC (magical accuracy; the probability of hitting a given monster with one’s magical attacks) used by the gish AP calculator is known to be incorrect. The formula used is based on work done circa 2007, and thus would be accurate to pre-BB MapleStory if it had been done properly; however, this work was done merely to give a vague approximation, and its methodology was questionable to begin with. Unfortunately, we (at the time of writing) have no better approximation. This can seriously affect the calculator’s accuracy, as one way of intentionally sacrificing magical damage in favour of physical damage is to allow the probability of hitting with magic to fall below 1.

Odd-jobbed archive

There is also an archive of odd-job-related things on the Oddjobs website, which has been curated by hand.

Unofficial odd-jobbed rankings

I also maintain an informal “Unofficial ‘odd-jobbed rankings’” for MapleLegends. Note that although updating the levels and guilds on this ranking can be automated (see here), adding new characters to the rankings, removing characters from the rankings, and/or changing the “name” (not IGN) for a character cannot be automated — not even in principle.

Vicloc resources

I maintain a repository of useful resources for viclockers. “Vicloc” stands for “Victoria-Island-locked”, and is a style of play that limits characters to Victoria Island only. This eliminates any job advancements beyond second job, and lends itself to a fun & balanced style of play somewhat reminiscent of the earliest versions of MapleStory. For a full list of rules, see in the resources repo.

A guide to vicloc

Part of the vicloc resources includes A guide to vicloc, which is a wide-ranging guide that I wrote for newcomers and experienced viclockers alike.


I’ve written a Rust library called scroll_strategist, and a CLI to it called scroll_strategist_cli, which aim to be useful for deciding how to scroll MapleStory equipment items (and for estimating the market value of such equipment items). scroll_strategist makes use of dynamic programming techniques to find precisely optimal solutions to simple scrolling strategy problems.

For more information, see the README.


I’ve written a Rust program called bulletindown that is intended to convert Markdown into BBCode. I came across the need for such a tool when crossposting my diary entries to the MapleLegends forums, which uses XenForo — and thus XenForo-flavoured BBCode — for its forum posts. Additionally, bulletindown supports ProBoards-flavoured BBCode.


roll, or die trying

As part of the GMTK Game Jam 2022, I worked with Slime, Tab (Outside), and Monc to create a videogame from scratch over the course of just 48 hours! The result was roll, or die trying, a platformer with the unique twist that you control a six-sided die in a 2.5D world where you are effectively a square, but can roll “away from” or “towards” the camera to change which of your six faces is visible to the camera. Rolling in this “third” direction also toggles between two “layers” of the map, changing which platforms you can collide (or cannot collide) into. Each of the six faces was intended to confer different benefits & drawbacks to your mobility, although only like four or five were actually implemented by the time that the game jam was ending.


As a precursory warmup to the GMTK Game Jam 2022, to familiarise myself with using a game engine to program a game, I made a very smol “game” called bevy_test. The game consists of some wooden crates, plus a single metal crate controlled by your mouse that you can use to bash the wooden crates around. :P

The textures/images used in this game are due to Slime.

You can also check out the soundtrack over at the “audio” section of this website.