Skip to the main content
Skip to the entry’s beginning
First published on .

rangifer’s diary: pt. lxxi

Taxonomising odd jobs, pt. v: Hypergraphing. §1

In the previous part (pt. iv) of this series — “Microtaxonomy & encodings” — I tried to enumerate a set of all odd jobs that we want to consider. As usual, we have to give the caveat that such a set can never be virtually exhaustive; with odd jobs, the only actual limit per se is your imagination. But this set will nevertheless serve as our universe of discourse. Part of enumerating such a set is defining each element of the set, which means having a systematic definition for each job — hence the “encodings”. Ultimately, this resulted in one big RON file, which you can find here.

Bearing with us the collective wisdom (or lack thereof…) of the previous four parts of this series, this part (and those after it) will — hopefully — put it all to the test. As outlined in the final bit of the previous part, there are essentially three routes that we want to explore:

The third and final element of the list above is, for better or worse, the most technical of the three. That being said, it’s also more of an art than it is a science; there are virtually countless ways that we can encode each object, define a metric (or just “distance function”, if it doesn’t have to satisfy all of the properties of a metric), choose linkage methods, and potentially even choose a clustering algorithm. Ultimately, there is no single “correct” way to do any of these things, per se, especially because our domain of discourse is so abstract and almost entirely free of practical considerations.

Partly as a result of the more extreme technicality of the last route listed above, I want to tackle each of the three routes in the order listed above. This gives me more licence to take absolutely way too long with the clustering route — although the other two routes are certainly not without their own technical hurdles — and puts the hypergraph route first, allowing it to inform the other two routes about what odd jobs we spiritually consider to be related, and how. So, tentatively, this part of the series, and the two parts after it, should look something like:

  1. “Taxonomising odd jobs, pt. v: Hypergraphing.”
  2. “Taxonomising odd jobs, pt. vi: Forestry.”
  3. “Taxonomising odd jobs, pt. vii: Clustering.”

Hypergraph?

In the last bit of the previous part of this series, I introduced the notion of hypergraphs like this:

  • Another kind of classification that could reasonably be considered a “taxonomy” — but that was not discussed in pt. iii of this series — is closely related to the notion of a hypergraph. You may remember that, in §5 of pt. iii of this series, I talked a bit about the basics of graph theory in order to introduce trees. Hypergraphs are like graphs where we don’t restrict each edge to be a set of cardinality exactly 2. Instead, we just require that each edge is nonempty. This makes a hypergraph basically just a set 𝑆, combined with a collection of (nonempty) subsets of 𝑆. We can impose a hypergraph onto our universe of odd jobs (with each odd job in the universe being a vertex) by grouping odd jobs into relevant categories. Because we aren’t trying to impose any restrictions on this hypergraph (other than that it’s nonempty and simple), these categories can be of varying sizes, and can freely overlap with one another.

So, a hypergraph is just a generalisation of a graph. A hypergraph where all hyperedges have a cardinality of exactly two, is just a graph. A hypergraph in which all hyperedges have a cardinality of exactly 𝑘 is called a 𝑘-uniform hypergraph, so we can express this by saying that 2-uniform hypergraphs are equivalent to ordinary graphs. In our case, though, we won’t at all be restricting our hypergraph to be uniform. Formally, the kind of hypergraph that we’re interested in here (one that is undirected, and not necessarily uniform) is defined as follows:

A hypergraph 𝐻 over a set 𝑉 is an ordered pair 𝐻 ≝ (𝑉, 𝐸). 𝑉 is the vertex set, i.e. its elements are called “vertices”. And 𝐸 is the hyperedge set — each of its elements is called a “hyperedge” — such that 𝐸  𝗣⁡(𝑉)  {}. In other words, equipping a set with a family (provided that the family does not include ∅) yields a hypergraph over that set.

And, as mentioned in the quotation above, we impose just two restrictions on our hypergraph: that it is nonempty, and that it is simple. Being nonempty is straightforward; it just means that 𝐸 ≠ ∅. And being simple means that there are no loops (𝑒  𝐸 (|𝑒| ≥ 2)), and no multiedges (𝐸 is actually a set, not just any collection; therefore every edge is unique).

What is it, and what do we do with it?

The interpretation of our hypergraph is simple: each hyperedge represents a relevant category[1] of odd jobs. If two or more odd jobs belong to a given single hyperedge, then those odd jobs are related insofar as they belong to the same category. A given odd job can belong to zero or more categories.

Once we’ve constructed a hypergraph by hand, there are two main things that we can do with it:

Footnotes for “What is it, and what do we do with it?”

  1. [↑] “Category” in the usual sense, not in the mathematical sense.

Hand-picking hyperedges

The process of hand-picking hyperedges is, essentially, just a matter of staring at our odd job universe and thinking really hard about how we organise the odd jobs in our mind. Of course, I welcome any suggestions and/or corrections, but the plan here is presumably that I will just be using my own personal intuition to do this hand-picking myself.

I’m going to start by representing the hyperedges directly in the diary entry itself, i.e. in Markdown, with the intent to be rendered as part of the prose. Later, this will be given the same treatment as our odd job universe, and also serialised into RON (or at least some serialisation format, e.g. RON, JSON, etc.).

We’ll start off with the hyperedges that I gave as examples in the previous entry:

All of these are pretty straightforward, with the exception of the “jobbed beginners”. The name is mildly confusing, but also somewhat self-explanatory: these odd jobs are all physical attackers, often fight “like beginners do”, but none of them are beginners — they are all “jobbed”. Fighting “like beginners do” is a bit of a questionable way of putting it; what we really mean is “meleeing with basic-attacks”. The comparison is really with outland STRginners, in particular. I use the term “jobbed beginner” to name the hyperedge here because this term is historically accurate (see pt. ii of this series).

Here we have some more reasonably straightforward hyperedges. Our “STRangers” include any traditionally ranged class that has had their AP replaced entirely with STR. These jobs tend to play vaguely similarly, insofar as they have the ability to proficiently swap between melee and ranged physical combat. Our “inlanders” are not to be confused with our “islanders”; “inland” is the opposite of “outland”, so this hyperedge includes exactly those jobs who never say “yes” to Shanks. In the case of campers, they never get the chance to talk to Shanks, and in the case of islanders, they simply refuse to give Shanks the time of day. Our “wanded” jobs are defined, in part, by their exclusive use of wands (and/or staves). And our “weaponed warriors” are warriors defined by their weapon restrictions.

Our “spell users” use magic offensively, as a primary means of combat. “LUK melee” jobs only include jobs that are defined by their pure LUK; dagger sins, for example, do not count, despite being melee-only and typically LUK-based. Those jobs that are “power strikers” are stuck with Power Strike — and Slash Blast — as their main attacks for their entire careers. Likewise, we have “double stabbers” that are more or less analogous, but for Double Stab. And also likewise, “kickers” for SSK.

Pretty self-explanatory here. Just classifying jobs based on what first grade advancement they take (or don’t take).

The “rangeginners” include our non-beginner jobs that imitate beginners in order to have the privilege of being “beginners” that use ranged weapons. And the rest join our outland beginners to their corresponding inland varieties.

The “common” in “common claw users” is in the sense of “no class requirements”, e.g. the Magical Mitten. This hyperedge includes jobs that canonically can use common claws as a main part of their arsenal. Obviously, any job can use common claws (as the only hard requirement is to be level ≥8 or so), but these jobs are simultaneously full of LUK (and STR+DEX in the case of the hybridlander — but that’s okay, as they are islanders, so minimum damage is at least as important as expected damage), and unable to wear non-common claws. Which reminds me, I forgot to add Claw to the set of canonical weapon types for both LUK warrior and LUK bucc. So I’ve done that — call it the odd job universe version 1.2.0.

Our “uniquely weaponed” jobs are defined by the use of a single weapon: for grim reapers, the Scythe; for carpenters, the Saw; and for pugilists, no weapon at all.

Our “hybrid physical attackers” includes all jobs that canonically are proficient in dealing both ranged physical damage, and melee physical damage. The only addition that might be surprising here is DEX brawler; DEX brawlers are big on gun usage, as it is quite favourable for them. DEX warriors are a different story, despite being analogous to DEX brawlers in many ways, because they have no access to ranged weapons besides common claws.

And our “secondary statted” jobs are any jobs that are essentially pure in the stats that are canonically “secondary” for their class. The inclusion of brigand and LUKless dit might be surprising, but remember that bandits/CBs/shadowers are the only classes that have (in a non-odd context) two secondary stats: STR and DEX. And I’ve excluded all permabeginners from this hyperedge, because beginners are unspecialised and have no canonical “secondary stats”. Arguably, their secondary stats should be {DEX}, but you could also argue that that’s too STRginner-centric; not only would that ignore our LUKginners (read: besinners), but it definitely wouldn’t apply to islanders nor to campers.

And, since we defined a hyperedge for “inlanders”, surely we need one for outlanders:

Right, so, that’s our largest hyperedge, as expected…

Alright, I think that’s about all I can come up with off the top of my head. Which is fine, because that’s already way too many hyperedges… 37 of them!! 37 hyperedges means that our hypergraph is still quite sparse, even in the ordinary (not-so-hyper) graph sense: in our case, |𝑉| = 48. That would put the maximum number of (again, non-hyper graph) edges at 48 ⋅ (48 − 1)∕2 = 1 128. This puts the ordinary density at 37∕1 128 ≈ 0.032 8. Obviously, any ordinary graph where |𝐸| ≤ |𝑉| is “sparse”, since at that point |𝐸| is obviously on the order of Θ⁡(|𝑉|) moreso than it’s on the order of Θ⁡(|𝑉|2).

But we’re not dealing with that kind of graph here; usually, the main practical purpose of determining the density of a graph is so that you can use the density to inform how best to represent the graph in memory, and what kinds of algorithms to use with it. But the two usual ways of representing graphs, adjacency matrices and adjacency lists, don’t work for hypergraphs — at least, not in any obvious way. One concern that we have is for our visualisation: visually displaying all 48 vertices and all 37 edges of our hypergraph is going to be tough. I already accepted that a rainbow box would be very wide (i.e. large along the x-axis), which is doable, so long as the odd job names are written vertically. But having 37 rows is a lot; it might make sense to only show some of them. And we still want to consider how to represent it in memory; I’m not super familiar with hypergraphs myself, but these are the in-memory representations that come to mind:

Here’s my (shitty) analysis of the asymptotic complexity of using these structures (let 𝑘 be the average cardinality of a hyperedge):

data structure space adjacency check enumerate neighbours enumerate hyperedge incidence check
incidence matrix 🤷🏽‍♀️ Θ⁡(|𝑉|⋅|𝐸|) 👎 Θ⁡(|𝑉|⋅|𝐸|) 👎 Θ⁡(|𝑉|⋅|𝐸|) 🤷🏽‍♀️ Θ⁡(|𝑉|) ❤️ Θ⁡(1)
hyperedge list ❤️ Θ⁡(𝑘⁢|𝐸|) 🤷🏽‍♀️ Θ⁡(|𝐸|) 🤷🏽‍♀️ 𝑂⁡(𝑘⁢|𝐸|) ❤️ Θ⁡(𝑘) ❤️ Θ⁡(1)
vertex list (IDs only) ❤️ Θ⁡(|𝑉| + 𝑘⁢|𝐸|) ❤️ Θ⁡(𝑘⁢|𝐸|∕|𝑉|) 👎 Θ⁡(|𝑉| + 𝑘⁢|𝐸|) 🤷🏽‍♀️ Θ⁡(|𝑉|) ❤️ Θ⁡(1)
vertex list ❤️ Θ⁡(|𝑉| + 𝑘⁢|𝐸|) ❤️ Θ⁡(𝑘⁢|𝐸|∕|𝑉|) 🤷🏽‍♀️ 𝑂⁡(𝑘⁢|𝐸|) ❤️ Θ⁡(𝑘) ❤️ Θ⁡(1)
adjacency matrix (IDs only) 👎 Θ⁡(|𝑉|2 + 𝑘2⁢|𝐸|) ❤️ Θ⁡(1) ❤️ Θ⁡(|𝑉|) 👎 Θ⁡(|𝑉|2) 👎 Θ⁡(|𝑉|)
adjacency matrix 👎 Θ⁡(|𝑉|2 + 𝑘2⁢|𝐸|) ❤️ Θ⁡(1) ❤️ Θ⁡(|𝑉|) ❤️ Θ⁡(𝑘) ❤️ Θ⁡(1)

I’ve included some emoji ratings (“⁠❤️⁠” being the most favourable, “⁠👎⁠” being the least favourable, and “⁠🤷🏽‍♀️⁠” being somewhere in between) for how these complexities pan out in our case. These ratings are given under the assumptions that:

I also sometimes make the simplifying assumption that for an arbitrary 𝑣 ∈ 𝑉, E⁡[𝖽𝖾𝗀⁡(𝑣)] ≈ 𝑘⁢|𝐸|∕|𝑉|. I also assume that sets are implemented using hash tables, where appropriate, in order to make lookups have Θ⁡(1) time complexity, and set enumerations have Θ⁡(|𝑆|) time complexity, where 𝑆 is the set in question.

In the names of the structures, “IDs only” means that hyperedges are represented as bare identifiers, rather than as sets. The vertex list and adjacency matrix that are not “IDs only” store a hyperedge list alongside the main data structure, and then store indices into that hyperedge list, instead of bare IDs.

I use big 𝑂 notation here (instead of big Θ) for the time complexity of enumerating the neighbours of a chosen vertex, when using the hyperedge list. The reason is that 𝑂⁡(𝑘⁢|𝐸|) is potentially too pessimistic, i.e. we should only get truly 𝑂⁡(𝑘⁢|𝐸|) behaviour in a quite pathological case where the chosen vertex has a very high degree.

The two obvious choices here seem to be the vertex list and the adjacency matrix. The adjacency matrix has very strenuous space requirements, but is essentially the best, time-wise, for all operations considered above. This is because it stores a hyperedge list alongside the matrix, so that it can avoid being slow at enumerating a given hyperedge, and avoid being slow at checking for the incidence between a given vertex and a given edge. Compared to a hyperedge list alone, it’s generally faster at checking for the adjacency of a given pair of vertices, and at enumerating the neighbours of a given vertex. The vertex list is a nice compromise; like the adjacency matrix, it benefits from storing a hyperedge list alongside the main structure. But the space demands are considerably less than those of the adjacency matrix, and in exchange, it’s slower at enumerating the neighbours of a given vertex. It’s also slower at adjacency checking.

cervid roams the land of Victoria Island

I’ve been roaming Victoria Island with some of my non-Vicloc characters, with a focus on certain quests that I like to do, as well as certain card sets. The sets that I focus on in my first pass over Victoria are anything except: bosses (but including ZMM & Shade, if convenient), Excavation Site monsters, and Deep Sleepywood monsters (viz. anything in The Tunnel That Lost Light I or deeper).

As for quests, well, one questline amongst them is The Monster and the Evil Scheme, which requires killing our old friend Dyle. It also, however, requires talking to a certain NPC during an alarmingly narrow three-hour time-of-day window from 17:00 to 20:00 UTC+0. If you are generally asleep, at work, or otherwise not in a position to play MapleStory during this time, then tough luck. This quest isn’t for you. Eventually, I did talk to this NPC myself, and at the right time, so at that point, all I needed to do was actually find a Dyle… Which I did! Here, we see my pure STR bishop cervid taking on this oversized Ligator:

cervid vs. Dyle

I stayed around to finish my Ligator set, and get the Croco set as well. Little did I know, these rather easy cards would generally refuse to drop for cervid:

Croco card get!

…Eventually (after multiple sessions), I did get that Croco set. This seems to exemplify a problem that I often have when trying to card-hunt as cervid: even when taking into account the fact that cervid has a rather low KPM (cervid is generally limited to basic-attacking, which yields poor KPM even though her basic-attacks are quite strong), generating just one card often takes an unusually large number of kills. The received understanding of card droprates would predict the opposite: basic-attacks are supposedly the attacks that cause droprates to be the highest. I did — completely accidentally — cast Genesis exactly once during the entire time spent hunting Croco cards, which naturally “MISS”ed the majority of its targets, as would be expected of a STR bishop wearing full damage gear. However, it did hit and kill one or two Crocos, and rather infuriatingly, one of them dropped a card. Scarcely have I been so humiliated in the presence of absolutely no one else…

In any case, I also completed a similar questline, The Forest of Evil, which had me kill big monke:

cervid vs. Faust

And, likewise, I went to Florina Beach to complete Defeat King Clang!, which required me to kill some of the critters around the beach:

cervid vs. Lorangs

…And then, of course, kill Casey itself. I just so happened to get to Hot Sand just in time to snag a Casey from a card-hunter who perplexedly watched me basic-attack it to death:

cervid snags a Casey

I continued Muirhat’s “Eliminate the […]” questline, which was convenient, as I needed Mixed/Dark Stone Golem cards anyways, so I headed to TfoG for some hunting:

cervid vs. Mixed Golem

In the end, I only got one card from this, and it wasn’t even a golem one…

Curse Eye card get!

With that, it was time to head to the Excavation Site for the next Muirhat quest, as well as “Notice from the Excavation Team”:

Officer Skeleton card get!

Skeleton Soldier card get!

The Commander Skeles gave me a weirdly hard time at first; the first 18 or so that I killed yielded only two Horse Skulls in total. But after that, they started picking up the slack, and I was able to finish the quest:

cervid vs. Commander Skeleton

For the next part, I was tasked with killing Drakes (and their icy cousins):

Drake card get!

And, finally, the bovine finale: Taurospears and Tauromacis:

Taurospear card get!

Tauromacis card get!

A Tauromacis card! A rare sight indeed!!

Oh, and also I did the Sauna Robe questline:

Sauna Robe get!

I have come to dread the day that the 2020 winter event cosmetics expire… The, uhm, overall — smock, maybe? — that cervid wears oddly contributes a lot to how strong she looks. The smock was intentionally designed to be oversized, as evidenced by the total disappearance of the hands and arms of any character that wears it while standing and holding a one-handed melee weapon (or claw, or knuckler, etc.). Usually, this appears to have the opposite effect, making the character look relatively smaller (in comparison to the giant smock), perhaps even neotenising them. With the long combat boots, combined with the Crimson Arcglaive (held upright, as a proper two-handed melee weapon), I adopted the smock as part of cervid’s look when I realised that it actually tends to make her look physically larger, and otherwise matches her look pretty well. cervid is nearly my only character which I didn’t design a look for before playing them; this is because she was originally IGN deer on JoblessMS, which didn’t feature many NX equips at all (encouraging a more NXless, gear-first look). So her outfit fluctuated several times, over the weeks and months, and I only managed to settle on a look once I tried the winter smock on for size (after not expecting it to look very good). See pt. xxxi of this diary for my interpretation of this outfit. Being so accustomed to the smock, seeing her in the Sauna Robe in the image above makes her look almost comically thin…

rusa does the Zakum prequests

I was invited to do the Zakum prequests as a group, with Lvl1Crook (Level1Crook, xXCrookXx, Sangatsu) and partyrock (attackattack, xX17Xx, breakcore, drainer, strainer, technopagan, raving). Readers of this diary may recall that I gave my poor darksterity knight rusa some amount of brain trauma by not getting her a helmet until she was level 90 or so. Partly, this was because I knew that I ultimately wanted the Ravana Helmet; partly, this was also because I was avoiding the Zakum prequests…

But the time is now. I didn’t have any characters who really needed a Zhelm and hadn’t done the prequests already. rusa certainly doesn’t need a Zhelm, but I thought it appropriate to finally do the prequests as her, in case I ever need to step foot into Zakum’s altar for some other reason… Like a Zakum Certificate! Or even to poke an arm!!

So, for starters, we went to Dead Mine II to farm up some gold teeth:

rusa, Level1Crook, & xX17Xx farming gold teeth

As you can see, both others hopped onto some more powerful characters for this part, to make things go faster. Fortunately for me, I had no need to do the same, as rusa is more than capable of shredding some Miner Zombies en masse. The prequests require 30 gold teeth, so between the three of us, we needed 90(!) total, not even counting the additional 30 that mae would inevitably need for attackattack as well (in addition to partyrock).

Along the way, we each got our 5⧸5 Miner Zombie cards and our 5⧸5 Flyeye cards. I actually already had 5⧸5 of both — I had gotten these sets on several of my characters while taking turns farming gold teeth for myself. These two species actually have rather high card drop rates, making the Dead Mine a premier card-hunting destination.

Once we’d each our teeth, it was time to do the real first part of the prequests: running through the labyrinthine Dead Mine tunnels, in search of rocks and chests to shatter, in hopes of a few keys. But Lvl1Crook had the idea to try getting not only the keys, but also all 32 documents scattered throughout the tunnels, so that we would additionally be awarded with Dead Mine return scrolls. None of us had ever tried to collect the documents before, so we figured we may as well give it a go:

rusa hitting rox

With a lot of communication through party chat, and a lot of getting teleported back to the beginning by rogue chests and rocks, we managed to clear just about the entire tunnel system within 28 minutes or so. The catch, of course, was that we only had 30 minutes to do the whole thing. So we breathlessly hurried to Area 16-5 to get the crucial fire ore from the giant chest:[1]

Opening the big Zakum prequest chest

Luckily, we made it in time — and each got five Dead Mine return scrolls, to boot!

That leaves just one last part of the Zakum prequests: the dreaded jump quest… I actually did remarkably well with the first stage of the JQ; I didn’t fall into the lava even once! Things were looking similarly favourable for the second stage. Well, they were, until I got to about this point:

rusa & Lvl1Crook at the last bit of the Zakum JQ

And believe me, I took my sweet time to really do this final bit of the JQ correctly. Or, at the very least, to not fall into the lava. Naturally, I fell into the lava anyways, after no small amount of agonising over this last section. So, I walked the full walk of shame across the entire length of the lava pit, to try stage II again. Thankfully, after eventually getting back to this final section again, and after even more agonising over it, I did finally complete the JQ:

Finished the Zakum JQ!

Nice!!!

Footnotes for “rusa does the Zakum prequests”

  1. [↑] The blue “60” that you see above rusa’s head, in this image, is indeed a massive flex on anyone who doesn’t have max Improved HP Recovery. If you play a warrior or thief without maxed Improved HP Recovery, get absolutely flexed on. Do not @ me.

Vicloc questing with d33r

I did some joocy Vic Island quests not just on my outlanders, but also on my Vicloc clericlet d33r! My goal was to do these quests totally unassisted; now that d33r has quite stronk gear (at least, for a Vicloc magelet…), I wanted to really put her to the test. So, as part of the Faust questline, I was tasked with killing Maladies for their Cursing Nails (ten of them, in particular). It must be that these nails line the gums of Maladies, because extracting them was much like pulling teeth:

d33r vs. Malady

With some patience and concerted effort whittling these Maladies down one by one, I did manage to extract some nails:

Cursing Nail get!

And, eventually, I did accumulate ten of them. But there were no Fausts to be found, so I took a detour to do another questline instead: The Alligators at the Swamp. The task was simple. Kill 250 Ligators:

d33r vs. Ligator

And, while we’re at it, 40 Jr. Neckis as well.

And then, 120 Crocos:

d33r vs. Croco

One might reasonably ask how exactly I killed 250 Ligators and 120 Crocos. The answer, of course, is equal parts Magic Claw and sheer… patience… Oh, and drugs. Lots of drugs.

Speaking of things that Vicloc magelets are definitely not designed to do, I did find a Faust! And killed it myself!!:

d33r vs. Faust

F555555555555

rusa also roams the land of Victoria Island

I know, I know. Even moar of the same Vic Island stuff?? If only I didn’t insist on starting in Victoria Island, the place where it all begins (or ends, from the Maple Island perspective)…

Thankfully(?), I only have a finite number of characters, which means that I’ll likely be roaming various other, more exotic lands, in the near future. It remains to be seen exactly where I shall wander off to… For now, let’s see what my darksterity knight rusa has been up to on the island…

I was doing the large monke questline, as usual, so while waiting for a large monke to spawn, I killed some Maladies (and zombie monke):

Zombie Lupin card get!

The Maladies were, perhaps surprisingly, rather generous with their cards:

Malady cards get!

By the time that I got to 5⧸5 Malady, there was still no sign of large monke, so I headed over to another classic Ellinia map: Tree Dungeon, Forest Up North IX.

Curse Eye card get!

With the Curse Eye set done, I headed back to check for large monke, and was fortunate enough to find one:

Faust card get!

Next up was finishing the Sauna Robe questline, which required some banan:

Lupin card get!

Another Sauna Robe down:

Sauna Robe get!

Very snazzy!

Next up was Muirhat’s questline, and hunting the cards associated with it. For rusa, I decided to avoid TfoG entirely, in favour of hunting all three Stone Golem species within The Golem’s Temple in Henesys:

Stone Golem card get!

That’s an easy Fairy set right there — and then some:

Fairy card get!

And finally, wrapping up the golems with Mixed Golems in Golem’s Temple IV:

Mixed Golem card get!

After that, I was off to Florina Beach for the King Clang questline, and the Lorang…:

Lorang card get!

Clang…:

Clang card get!

…And Tortie sets:

Tortie card get!

And, thankfully, I found a Casey without too much trouble:

rusa vs. KC

I headed back to KC (not to be confused with KC) to do the swamp sets:

Ligator card get!

Croco card get!

As usual, I headed to the Excavation Site in Perion for “Notice from the Excavation Team” and “Eliminate the Skeletons”, which were done without any trouble (I got no cards, except a random Mummydog card from a Mummydog that I accidentally killed in passing). And, for the next part of Muirhat’s questline, I headed to Deep Sleepy:

Ice Drake card get!

And finally, for the final bit, off to Sanctuary Entrance IV:

Tauromacis card get!

Wow, another Tauromacis card!!

Taurospear card get!

The problem with Tauromacis — and to a slightly lesser extent, Taurospears — is that they just don’t spawn. They are a bit tough (being level 70 and 75, respectively), but even if they are a piece of cake for you, you’re going to have a hell of a time just waiting for them to spawn in any significant quantity…

With nearly all of the important Vic Island quests completed, I headed to Pig Park (and Pig Park II) for some joocy Iron Hog cards:

Iron Hog cards get!

Finishing that set right up was enough to get me to 60 total sets completed!!:

rusa gets the T2 ring!

Yey for T2! :3

The T2 ring gave me the motivation that I needed to do a little bit of sadsadgrinding along with my pure STR bishop cervid, so I got some EXP for cervid and levelled up rusa to level 127~!! Wowow!!!

But still, there was one more Vic Island quest to finish up, but that would require finding a big gator

rusa vs. Dyle

Ok, phewf. Got that one out of the way. I guess it’s time for more card-hunting…?

Off to East Rocky Mountain VII…!

Fire Boar card get!

Copper Drake card get!

Dark Axe Stump card get!

Nice. Also in Perion are the Iron Boars, only to be found in the appropriately-named Iron Boar Land. One quirk of Iron Boar Land is that the bottom-left and bottom-right corners of the map have little pits that automatically teleport you to the top of the map (where there are no monsters). This is a bit of a pain when cardhunting, as the Iron Boars like to sit in the pits, so it’s not terribly unlikely that a card falls into one of them. I’ve had at least one or two Iron Boar cards call into the bottom-left pit before, and was able to get them out with the assistance of a pet, but for the first time, I managed to get one in the bottom-right pit:

rusa loses an Iron Boar card…

Trying as hard as I did, and with my pet equipping the Item Pouch, Binoculars, and Wing Boots, I could not loot this card. I had no choice but to watch it fade into the void before my very eyes, after some three minutes or so of desperate attempts to loot it… It’s okay though. I did finish the set anyways. :P

panolia empy queues again

Das rite. ’Tis time once again for an episode of A Little Bit Of MPQ With panolia™ (my permarogue). This time, featuring F/P mage HeartNetNing, sader iAxel, and priest BrownThunder:

HeartNetNing, iAxel, BrownThunder, & panolia @ MPQ stage 3

I was actually invited to this party as a result of responding to a smega requesting a “protector” for MPQ. HeartNetNing asked if I was capable of protecting Romeo/Juliet, and I said that I didn’t have any stuns/freezes, but I had some experience using the aggro of the diaper robots. We figured that was good enough, so I was on Romeo/Juliet protecting duty in each PQ. In honesty, it would have likely been better if BrownThunder was on protecting duty, as panolia does no smol quantity of single-target DPS to Franky with her claw, but whatever. We were able to get in a few Zenumist-side MPQs, bringing panolia closer to graduation (i.e. level ≥86) and to her next Horus’ Eye attempt!

Oh, and panolia is level 83 now. :)

Some bossing with capre

I was invited to do some bosses with Harlez, Gruzz, and xBowtjuhNL, so I hopped onto my woodsmaster capreolina — as you may recall from the previous diary entry, capre is all set up for bossing now! At least, any boss that doesn’t hit significantly harder than Ravana

Speaking of Rav, I did a @dpm test while we were fighting it. The results are a bit optimistic, as I had Gruzz’s MW, as well as xBowtjuhNL’s SE (which is higher level than mine), but here it is:

capre does a @dpm @ Rav

Transcription of the chatlog in the above image

[system message]: capreolina — Lv.126 Bowmaster — Total Damage: 2,175,870
Damage Per Hour: 65,276,100 — Damage Per Minute: 1,087,935

65.3M DPHy i k e s. I’ve had people assume, or tell me, that my darksterity knight rusa is my “strongest” or “most powerful” character. But this brings such loose, nearly meaningless, terminology to its breaking point: rusa might be much more survivable, and might be far better when it comes to killing a lot of monsters at once, but capre is certainly capable of more sheer single-target DPS than any of my other characters. And, for that matter, capre’s pure STR is certainly “STRonger” than rusa’s STRlessness…

We moved to kill some Papus next, so I decided to replicate this same test with Papu as well:

capre does a @dpm @ Papu

Transcription of the chatlog in the above image

[system message]: capreolina — Lv.126 Bowmaster — Total Damage: 1,284,325
Damage Per Hour: 38,529,720 — Damage Per Minute: 642,162

As you’d expect, of course, the result is smaller here. Papulatus just loves to go invincible — what can I say? But even with Papulatus Clock’s love of going invincible, 38.5M EPH is no slouch number either! Oh, and for the first time, I saw Papu actually drop a chair! And I won the @roll, so I got to loot it!!!:

capre gets the Papu chair!

Okay, you can’t see it very well here, as a result of me getting simultaneously photobombed by Gruzz and by my birdy, but just trust me. It looks really cool. And cozy, too!

Meet ozotoceros

Yep, das rite. It’s time for me to do what I do best: making even moar peepee poopoo garbo odd-jobbed characters. And this time, two forces have colluded to decide this character’s job:

So, as a result, my new peepee poopoo garbo odd-jobbed character will not be talking to the traitorous Shanks! Bugger off, you well-dressed con artist!! Instead, I will be playing the venerable DEXlander. Meet ozotoceros:

ozotoceros finds a perfect shirt

My first real find was a Red-Striped T-Shirt. And not just any shirt, but a perfect one! 13 WDEF!! Very nice start, although I was already nearing level 16 by this point…

My strategy here was to first finish all of the usual Maple Island quests (of course), and then head to Hunting Ground Middle of the Forest I to hunt Slimes for a Gold Surfboard. Of course, this map also has significant populations of Red Snails and Blue Snails, so I actually ended up with two Leather Purses quite early on, although both were miserable (32 and 31 WATK, respectively). When I hit level 15, I was excited to switch to the 32 WATK purse… only to find out that I needed 13 more STR to equip it.

See, ozotoceros’s base stats are 6⧸𝑥⧸4⧸4 — as a result of being a DEXlander who happened to roll 6 STR at character creation — and although I did get an RWG when completing the Maple Island quests, that only brings my total STR up to 6 + 1 = 7; 13 shy of the ≥20 STR necessary to hold a Leather Purse. So it was time to suck it up, and keep using my 22 WATK Fruit Knife

ozotoceros finds a ’dana

After some more levels of painstakingly fruit-knifing Slimes to death, I did find something else: a White Bandana. I was so happy to see something drop that I cried tears of joy, as you can see above. But then, I saw that it had the worst possible stats:

ozotoceros’s dana is min roll…

Transcription of the item in the above image

White Bandana

  • Req lev: 10
  • Category: hat
  • Weapon def.: 7
  • Number of upgrades available: 7

Ouf. Well, still better than the Red Headband that I was using before…

At level 20 (and some ≈92% of the way to 21), I paid a visit to perfectlander[1] Dreamscapes (Permanovice, Battlesage, Hanger), who was kind enough to give me a Broomstick!:

Dreamscapes gifts ozotoceros a broom!

The Broomstick would be a considerable upgrade over my Fruit Knife; it’s only one speed category slower (4 > 3), has considerably more WATK, and +5 SPEED, to boot! Dreamscapes pointed out that, with the Broomstick (and my choice of NX equipment to cover up my White Bandana), I had some serious housemaid vibes going on:

ozotoceros has maid vibes now

Transcription of the chatlog in the above image

Dreamscapes: you… look like a maid

ozotoceros: LMFAO
omg…

Dreamscapes: i think a namechange is in order

ozotoceros: hahah

If ozotoceros is a maid, then her only job is to tidy up Maple Island. Unfortunately, the Slimes just keep respawning as soon as I’ve cleaned them up…

Oh, and speaking of name changes, what the heck does ozotoceros mean, anyways? Well, as usual, Ozotoceros is a taxon of deer. In particular, Ozotoceros is a monotypic (meaning that it contains only one species) genus of deer commonly referred to in English as the Pampas deer. Ozotoceros’s single species is O. bezoarticus, and you’ll see that my pet’s name is, appropriately, bezoarticus.

The Spanish sound of Ozotoceros is a good hint as to where these deer live — not in Iberia, but still, in South America. The common name in Brazilian Portuguese for this genus is veado-campeiro, and in Spanish the equivalent common name is venado pampero, although it’s known by other names as well (partly because Spanish has a variety of words that basically mean “deer”). Although Ozotoceros is monotypic, O. bezoarticus is not — it is commonly carved up into three subspecies, as a result of its several populations being geographically discontiguous, and the species being highly polymorphic overall.

Members of Ozotoceros live at low elevations across certain parts of South America, in regions with grasses that tend to be at least as tall as these relatively small deer. By surface area (and by population), Brazil contains the majority of its range, but their range also extends to parts of Paraguay, Bolivia, Uruguay, and Argentina. One unique quirk of O. bezoarticus is that a 1998 study[2] found that it is one of the most polymorphic species of mammal in the world. From the abstract of said study:

Our results suggest that the control region of the Pampas deer is one of the most polymorphic of any mammal. This remarkably high variability probably reflects large historic population sizes of millions of individuals in contrast to numbers of fewer than 80 000 today. Gene flow between populations is generally close to one migrant per generation and, with the exception of two populations from Argentina, all populations are significantly differentiated.

O. bezoarticus is considered “near threatened” (NT) by the IUCN as a result of human (H. sapiens) activity.

Dreamscapes also kindly gave me a pair of Ice Jeans, and a pair of White Gomushin, to wear!! And we /trade’d so that Dreamscapes could show me the rest of his stuff:

Maple Island trade window chatting

Transcription of the chatlog in the above image

Dreamscapes: ahh deece

ozotoceros: so yeah ive been like
literally in the slimes map
for 11 levels
with a fruit knife and some dex

Dreamscapes: lmao
thats

ozotoceros: crying

Dreamscapes: wholly suffering

ozotoceros: LOOL

I had been slightly hesitant to accept the items that Dreamscapes gave me, as my initial plan was to virtually play solo until I got myself a respectable amount of gear and levels. But Dreamscapes insisted that “not everything has to be a challenge run”, and that no one should have to suffer slicing Slimes with a Fruit Knife for so long…

We did some training together at Hunting Ground Middle of the Forest II (a.k.a. “Pigs”), and after lamenting the dearth of Gachapon Tickets that we had both been experiencing, Dreamscapes decided that it was time to pray to a very special someone for gacha luck:

Praying to Uwu Jwesuwus

Transcription of the above image

Dreamscapes: alright
so
im gonna pray to uwu jesus for gacha
bear with me

ozotoceros: LOL
ok

Dreamscapes: deaw uwu jwesuwus…
pwees bwess mwy vwibe wiwff aw twinee wiw babiwe gwachwa twickwet
ai lwove youw awnd twust in youw deawes uwu jwesuwus
awmwen

ozotoceros: LOL thats actually so hard to read

Dreamscapes: aight watch a gacha drop

That’s right; Uwu Jesus himself. I admit, I was a bit skeptical at first. But, after 20 levels and just a single gacha ticket, Uwu Jesus showed me his power:

ozotoceros is converted to uwustianity

Transcription of the above image

ozotoceros: just got a gach
lmfao

Dreamscapes: AWMWEN
THWANK YOUW UWU JWESUWUS

ozotoceros: AWMWEN
UWUWUWUWUWU

Dreamscapes: hes real see

ozotoceros: i see now
im a convert

I’ve been converted to Uwustianity.

After Dreamscapes levelled up (grats!), we headed to the Slimes map next door to try to hunt me a Gold Surfboard. We were joined by Dreamscapes’s partner, kurisuwu. After a while of grinding Slimes, with no Gold Surfboards in sight, kurisuwu realised that she had a spare Gold Surfboard this entire time:

kurisuwu gifts ozotoceros a board!

Yay!!! Even if my original plan was to hunt one myself, I must say that after many hours of Slime murder, I’m just glad to have a surfboard at all — thanks kurisuwu!! And it’s a very good one too: the JUMP is perfect (6 JUMP), and the WATK is just one below perfect (42 WATK)!

At this point, I had used (and failed) a few bottom DEF 10%s. I got another one from one of the Slimes, and gave that one a whirl as well:

ozotoceros passes her first scroll!!

Transcription of the chatlog in the above image

[system message]: The scroll lights up, and then its mysterious power is transferred to the item.

Dreamscapes: POG

ozotoceros: OWWOWOWOW

Dreamscapes: LES FUCKING GO

Nice!!! ozotoceros’s first passed scroll!:

ozotoceros’s Ice Jeans

Transcription of the item in the above image

Ice Jeans (+1)

  • Req lev: 16
  • Category: bottom
  • HP: +10
  • MP: +4
  • Weapon def.: 17
  • Magic def.: 3
  • Number of upgrades available: 3

As Uwu Jesus continued to treat us with bounties, we decided to pronounce our devotion to Uwu Jesus publicly:

Pronouncing our devotion to uwu jwesuwus

Transcription of the above image

Dreamscapes [smega]: UWU JWESUWUS IS WEAW, HWE GWIVES UWS BWESSWINGS UWU

ozotoceros [item smega]: [Common Gachapon Ticket] FANK YU UWU JWESUS I WUV U UWU~~~~~~~~~~~~~~~~~AWEMWEN

And, in the pursuit of SPEED, I had my permarogue panolia scroll a pet equip for ozotoceros, using some pet SPEED 60%s that my Vicloc clericlet d33r had farmed from Jr. Wraiths:

ozotoceros’s Red Ribbon

Transcription of the item in the above image

Red Ribbon (+6)

  • Category: pet equip.
  • Speed: +12
  • Number of upgrades available: 0

Only these pets can equip this cute hat: Black Pig, Orange Tiger, Jr. Reaper, White Duck, Penguin, Skunk, Mini Yeti, Black Bunny, Rudolph, White Tiger, Robot, Porcupine, Pink Bunny, Golden Pig, Panda, Dino Boy, Dino Girl, Monkey, Turkey, Snowman, Brown Kitty, Brown Puppy, Black Kitty, Sun Wu Kong, Mini Kargo, Toucans, Dragons, and Robos.

12 SPEED! Very nice!! Zoom zoom~

Now that I was level ≥20, I could do the islander quest. The main purpose of this quest is to get random faces and/or hairstyles, so that islanders can have faces/hairs that aren’t available from character creation (or events, for that matter), but I just wanted to do it. I’m satisfied with ozotoceros’s hair and face, so the smol boost of EXP was my reward of choice. It’s well-known (and obvious to anyone who has completed the islander quest and taken the EXP reward) that you can get considerably more EPH by simply training in your map of choice (typically Hunting Ground Middle of the Forest II), but I figured it would be more fun to do this, and plus, I’d never completed the quest before:

ozotoceros finishes the islander quest for the first time

Transcription of the quest helper in the above image

The premise of this quest is that all islanders are stinky. There are no showers on Maple Island, so it’s understandable. Mai, however, possesses the power to clean up the filthy islanders, and give them a new look. But to earn such a treatment, you must help clean up the island, first. That means killing 300 of each species of monster on the island. The quest is, of course, repeatable, so I started a repetition:

Mai: uwu you smell so much better now…

Th—thanks Mai. I’m glad you think so…

Footnotes for “Meet ozotoceros”

  1. [↑] The term perfectlander means “islander who can equip any weapon”, which means adding enough LUK and INT to equip the Metal Wand, as well as enough STR to equip the Leather Purse, among possibly other things. And, you know, you actually have to have the weapons as well.
  2. [↑] S. González, J. E. Maldonado, J. A. Leonard, C. Vilà, J. M. Barbanti Duarte, M. Merino, N. Brum-Zorrilla, & R. K. Wayne; “Conservation genetics of the endangered Pampas deer (Ozotoceros bezoarticus)”; Mol. Ecol., vol. 7, № 1, pp. 47〜56; 1998-01; doi: 10.1046/j.1365-294x.1998.00303.x.