1. Hello!

    First of all, welcome to MapleLegends! You are currently viewing the forums as a guest, so you can only view the first post of every topic. We highly recommend registering so you can be part of our community.

    By registering to our forums you can introduce yourself and make your first friends, talk in the shoutbox, contribute, and much more!

    This process only takes a few minutes and you can always decide to lurk even after!

    - MapleLegends Administration-
  2. Experiencing disconnecting after inserting your login info? Make sure you are on the latest MapleLegends version. The current latest version is found by clicking here.
    Dismiss Notice

Odd Jobs Community Thread

Discussion in 'Community' started by deer, Jan 7, 2021.

  1. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    Awwh!! Thank you, I'm just glad to see that someone actually reads this stuff :D BAHAHA

    Yeah, so my definition of the "general case for any metric space" is based on https://en.wikipedia.org/wiki/Energy_distance#Generalization_to_metric_spaces, which I adapted slightly because I did not understand it when I read it the first few times. I knew, because of the way that it's written, that it would be an important stepping stone for the finite, concrete case (where the distance is obtained by a finite number of direct sums over finite sets), which is what I was trying to get to. Unfortunately for me, I don't actually know very much maths (shhh, don't tell anyone) partly because my brain is stuck in computer science land, where everything is computable (or at least constructible), and probably finite, too. And partly because my knowledge is almost entirely at the secondary-school level, so I had to stare at a few webpages for a long time to figure out what the heck a "measurable space", "probability measure", and "sigma-algebra" were... And then I realised that the Wikipedia article on Borel sets had to resort to irrational numbers to give an example of a non-Borel set (and that they define Borel sets using transfinite induction? excuse me, what??), and I knew I was going too far.

    That being said, it seems to me (someone who has never heard of a Lebesgue sigma-algebra until, like, now) that you're right that a Lebesgue sigma-algebra is good enough here, assuming that we're talking about the specific case of odd jobs being encoded into some vectors. You're right that the whole point of this exercise is to classify odd jobs based on a vector of features. The Borel sigma-algebra restriction is there, as far as I can tell, because you can define it over basically whatever metric space you want, and a sigma-algebra just pops out of it (not that I understand the transfinite induction, I just trust that it works somehow...). And that definition that I give — namely, the second definition — is the general case of defining a probabilistic energy distance (read: distance between probability measures) over an arbitrary metric space (well, arbitrary except that you kinda need the strict negative definiteness thing). Our odd job vectors will definitely fit into Rn somehow — it would be truly concerning if they didn't. Although they will likely be more restricted than that, e.g. fitting into Qn or even something finite, like GF(2)n!

    Right, so, that's just a consequence of the energy distance originally being defined as a distance between probability distributions, so the general case still retains the connection to probability. In our actual concrete application, we are computing the distance between clusters, where each cluster is a finite nonempty set of vectors. So there is no actual probability per se, rather, we are abusing the energy distance to give us a distance between ill-defined objects (the distance between a pair of objects is well-defined, as we have a metric space, but a distance between clusters is something different entirely). You can think of the clusters as being like empirical distributions, where we don't know the "true" probability distribution (because there is no such thing, oops), but we took some positive integer number of samples of that distribution, and we call that finite nonempty set of samples a "cluster".
     
  2. Slime
    Offline

    Slime Pixel Artist Retired Staff

    640
    1,184
    381
    Apr 8, 2015
    Male
    Israel
    9:06 AM
    Slime / OmokTeacher
    Beginner
    102
    Flow
    Wow GF(2)n! I wish I had even 1 GF!
     
    • Like Like x 1
    • Agree Agree x 1
    • Great Work Great Work x 1
  3. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    (You can also read the original diary entry here, and/or read the diary entry on the Oddjobs forum.)

    rangifer’s diary: pt. lxiii

    Massive tangent

    In “Taxonomising odd jobs, pt. iii: Exploring the space of possible taxonomies. §4”, I talked about weak orderings. I mentioned that weak orderings are enumerated by the ordered Bell numbers (a.k.a. Fubini numbers), that is to say, the total number of possible weak orderings over a set of elements is just the th ordered Bell number. And I asked what the 45th ordered Bell number is, because at the time of writing, the list of odd jobs on the Oddjobs website had a length of 45. The OEIS entry only lists the ordered Bell numbers up to = 20, so I had to calculate the 45th element in the sequence myself. To do this, I looked at two of the formulae that the relevant English Wikipedia article gives, and wrote some Python functions based on those formulae. Each of the Python implementations has the same observable behaviour (input a natural number , and the function spits out the th ordered Bell number as its output), but they differ in their approaches and in their performance characteristics (time spent computing, memory usage). Although it’s obviously not relevant to what the series is trying to do (taxonomise odd jobs), I did some very informal benchmarking to compare the Python implementations of such a fubini(n) function, because I’m into that kind of thing, I guess. I dunno, I was just curious.

    After finishing that entry, I allowed my curiosity to get the better of me, and I continued looking at implementations of this rather simple mathematical function. Out of the Python implementations that I wrote, the implementation that most programmers would likely reach for (for its familiar use of for loops and its predictable performance) would be the straightforward imperative implementation, which I called simply fubini. Knowing that Python, as a characteristically interpreted language, does not optimise programs before executing them (we’re just using CPython here, sorry for any PyPy fans out there*), I wanted to optimise the (-1) ** (k - j) expression that occurs within the definition of fubini. I called this new function fubini_pow:
    Code:
    def fubini_pow(n):
        """
        ``fubini``, but with some optimisations focussed around calculating
        exponents.
        """
    
        a = 0
        for k in range(0, n + 1):
            for j in range(0, k + 1):
                #   (-1) ** (k - j)
                # = -1 if (k - j) % 2    else 1
                # = -1 if (k - j) & 0x01 else 1
                # = -1 if (k ^ j) & 0x01 else 1
                a += (-choose(k, j) if (k ^ j) & 0x01 else choose(k, j)) * j ** n
    
        return a
    
    Obviously, taking −1 to an integer power returns −1 if the power is odd, and +1 if the power is even. So (-1) ** (k - j) can be optimised to -1 if (k - j) % 2 else 1. But there is actually a better way to check for the parity of k - j: testing the least significant bit (LSB). So we can optimise to -1 if (k - j) & 0x01 else 1. But, because we only care about the LSB of k - j, we don’t really need to perform the full subtraction of j from k. A few napkin-scribbles later, and I figured out that taking the bitwise XOR of k and j will have the same effect on the LSB as subtracting them. So we can optimise to -1 if (k ^ j) & 0x01 else 1. And, instead of multiplying choose(k, j) by this result (which is always either -1 or 1), we can avoid multiplication entirely by inlining choose(k, j) into each branch of the if statement, and using unary numeric negation (-) instead. As we will see, this series of optimisations does indeed speed up the program, although as you’d expect, the performance gain is modest.

    I also changed how fubini_rec performs its memoisation. In the previous diary entry, I (somewhat embarrassingly) immediately reached for a hash map, writing memo = {0: 1}. This is perfectly correct, and results in neat-looking code as a result of hash maps being built-in objects in Python. However, it’s kind of a dumb idea, because we know exactly what the set of keys in this map is going to be: {0, 1, 2, …, n - 1, n}. So what we actually want is an array! This changes the code only slightly, resulting in the following implementation:
    Code:
    def fubini_rec(n):
        memo = [None] * (n + 1)
        memo[0] = 1
    
        def a(m):
            memo_val = memo[m]
            if memo_val is not None:
                return memo_val
    
            fubini_m = sum((choose(m, i) * a(m - i)) for i in range(1, m + 1))
            memo[m] = fubini_m
    
            return fubini_m
    
        return a(n)
    
    And I used timeit to write up a simple — but still more proper than last time — benchmarking program for these Python implementations.

    I was curious to see how these functions might perform if they were written using properly-optimised and compiled code, compiled down to some x86-64 machine code to be run natively by my CPU. I’m no expert in numeric computing, so I’m sure some folks can do better, but in my case I just reached for Rust and tried to reasonably translate my Python code into that language. Under my belt, I had the rug crate, allowing me to easily harness the power of GMP to work with arbitrary-precision integers. Arbitrary precision is necessary here, as the ordered Bell numbers are a combinatorial sequence, so they grow really quickly. In Python, we didn’t have to think about it, because Python will automatically switch to using arbitrary-precision integers under the hood, any time that an integer exceeds the capacity of a single word.

    In the end, my Rust implementations looked something like:

    Code:
    /// `fubini(n)` is the `n`th Fubini number (a.k.a. the `n`th ordered Bell
    /// number).
    #[inline]
    pub fn fubini(n: u32) -> Integer {
        let mut a = Integer::new();
        for k in 0..=n {
            for j in 0..=k {
                a += (-1i32).pow(k - j)
                    * Integer::binomial_u(k, j).complete()
                    * Integer::u_pow_u(j, n).complete();
            }
        }
    
        a
    }
    
    /// `fubini`, but with some optimisations focussed around calculating
    /// exponents.
    #[inline]
    pub fn fubini_pow(n: u32) -> Integer {
        let mut a = Integer::new();
        for k in 0..=n {
            for j in 0..=k {
                a += if (k ^ j) & 0x01 == 0 {
                    Integer::binomial_u(k, j).complete()
                } else {
                    -Integer::binomial_u(k, j).complete()
                } * Integer::u_pow_u(j, n).complete();
            }
        }
    
        a
    }
    
    /// `fubini` defined by `sum`ming iterators, instead of using explicit loops.
    #[inline]
    pub fn fubini_gen(n: u32) -> Integer {
        (0..=n)
            .map(|k| (0..=k).map(move |j| (k, j)))
            .flatten()
            .map(|(k, j)| {
                (-1i32).pow(k - j)
                    * Integer::binomial_u(k, j).complete()
                    * Integer::u_pow_u(j, n).complete()
            })
            .sum()
    }
    
    /// `fubini_gen`, but MOAR THREDZ!!!
    #[inline]
    pub fn fubini_par(n: u32) -> Integer {
        (0..=n)
            .into_par_iter()
            .map(|k| (0..=k).into_par_iter().map(move |j| (k, j)))
            .flatten()
            .map(|(k, j)| {
                (-1i32).pow(k - j)
                    * Integer::binomial_u(k, j).complete()
                    * Integer::u_pow_u(j, n).complete()
            })
            .sum()
    }
    
    /// `fubini_par`, but I re-implement `sum`?
    #[inline]
    pub fn fubini_par_hack(n: u32) -> Integer {
        (0..=n)
            .into_par_iter()
            .map(|k| (0..=k).into_par_iter().map(move |j| (k, j)))
            .flatten()
            .map(|(k, j)| {
                (-1i32).pow(k - j)
                    * Integer::binomial_u(k, j).complete()
                    * Integer::u_pow_u(j, n).complete()
            })
            .reduce(|| Integer::new(), |acc, x| acc + x)
    }
    
    /// Do **not** use this function. It is only here for illustrative purposes,
    /// and is completely useless for any significantly large values of `n`.
    ///
    /// Implements `fubini` using a naïve recursive method. I think the runtime is
    /// Ω(n!).
    #[inline]
    pub fn fubini_rec_naive(n: u32) -> Integer {
        if n == 0 {
            1.into()
        } else {
            let mut a = Integer::new();
            for i in 1..=n {
                a += Integer::binomial_u(n, i).complete() * fubini_rec_naive(n - i)
            }
    
            a
        }
    }
    
    /// Implements `fubini` using recursion, but memoises, in order to make the
    /// performance (read: asymptotic runtime behaviour) reasonable.
    ///
    /// <https://en.wikipedia.org/wiki/Dynamic_programming>
    #[inline]
    pub fn fubini_rec(n: u32) -> Integer {
        let mut memo = vec![Integer::new(); (n + 1) as usize];
        memo[0].assign(1);
    
        fn a(m: u32, memo: &mut [Integer]) -> Integer {
            let memo_val = &memo[m as usize];
            if memo_val != &0 {
                return memo_val.clone();
            }
    
            let mut fubini_m = Integer::new();
            for i in 1..=m {
                fubini_m += Integer::binomial_u(m, i).complete() * a(m - i, memo);
            }
    
            memo[m as usize] = fubini_m.clone();
    
            fubini_m
        }
    
        return a(n, &mut memo);
    }
    

    Naturally, the Rust implementations look a good deal noisier than their corresponding Python implementations, as we now have essentially total control over memory management. One thing that we can immediately note is that the Rust implementation of fubini_pow isn’t very useful. It’s left there for reference, but in reality, optimising “−1 to an integer power” is a trivial task for any optimising compiler (LLVM, in our case). The manual optimisation that we did with Python is done here for us automatically, making the Rust versions of fubini and fubini_pow effectively identical, after code generation.

    Everything else is pretty self-explanatory here, considering that they are more or less one-to-one translations of the Python implementations. I did, however, add the fubini_par and fubini_par_hack functions, which make use of rayon to turn fubini_gen into a multithreaded version of the same thing, with very minimal changes to the code. The low effort required to make fubini_gen parallel by slapping rayon on it was enough to tempt me to do it. So I did. That’s not to say that rayon produces a good and reasonably-close-to-optimal parallel computation of ordered Bell numbers here… again, I was just goofing off. I also realised just now (oops) that the cloning occuring in return memo_val.clone(); (within fubini_rec) is probably not necessary. Oh well.

    In any case, I benchmarked these functions. As mentioned before, timeit was used for benchmarking the Python code, and for the Rust code, criterion was used. This probably skews the results in favour of Python a bit, as criterion will spit out its best estimation of a “representative” timing (criterion uses fairly rigourous statistical methodology), whereas our Python benchmarking just takes the best time of five trials (each trial being the arithmetic mean of usually a few hundred iterations). That being said, the results are at least reasonably comparable. The benchmarking was done on an Intel i7-4510U CPU running at 2.00 GHz; this is a laptop processor, although I did not have anything else of significance (not even any display server whatsoever — completely headless and accessed only via SSH) running concurrently with the benchmarks.

    The x-axis here is the n value, and the y-axis is the runtime (in ms) of f(n), for the given implementation of f. All graphs were generated using gnuplot, with the Qt backend.

    [​IMG]

    Looking at the Python implementations, fubini and fubini_gen appear to be tied — neither one is consistently faster than the other, and they always are very similar. This may come as no surprise, as they are essentially the same implementation, but it’s good to know that using generators in this way has no overhead in Python! Coming in consistently faster (albeit only mildly faster) is fubini_pow, proving that the hand-optimised −1-exponentiation did help a bit. And then, considerably faster is fubini_rec, running roughly ≈1.26 times faster than fubini_pow for n = 250.

    Looking at the Rust implementations, it’s immediately clear that they are (as expected) far faster than the corresponding Python ones. In fact, they’re so much faster that it’s difficult to distinguish the Rust implementations from one another in this graph. For that, we have the same graph, but with the Python implementations removed:

    [​IMG]

    Like with Python, fubini and fubini_gen are tied. Again, not surprising, but it’s good to know that rustc & LLVM are collectively smart enough to compile the two functions down to the same thing. And, lo & behold, our parallel rayon-based implementations of fubini_gen (viz. fubini_par & fubini_par_hack) do achieve some measurable speedup compared to their sequential counterparts. The speedup over fubini_gen for n = 250 is a factor of roughly ≈1.49 for fubini_par and ≈1.57 for fubini_par_hack. Keep in mind that the number of CPUs here is four. And, as I kind of suspected, fubini_par_hack does seem to be a bit faster than fubini_par, even though it just re-implements .sum(). I would have to actually investigate to see why, but I assume that rug’s implementation of the Sum trait is not playing nicely with what rayon is trying to do. But, in any case, it seems that just slapping an .into_par_iter() or two onto fubini_gen is not enough (at least, not with just four CPUs) to beat fubini_rec. Like with Python, fubini_rec reigns supreme.

    Without comparing all of the numbers here, we can compare the two implementations (Python vs. Rust) of fubini_rec (the fastest version within either language) at n = 250 to get a vague idea of how much time (not to mention memory) we save by switching from Python to Rust: a factor of roughly ≈21.9. Whew!

    Alright, enough useless software engineering nonsense for now.

    *Testing with PyPy does (as expected) give faster results across the board. Interestingly enough, the performance gains are considerably higher for fubini_rec in particular, for smaller values of n. It seems PyPy finds some good optimisation that ends up being dominated by the bulk of the arithmetic computation, as n gets larger. Maybe some inlining to reduce function call overhead, or better implementation of the cache array. Who knows! As it turns out, PyPy is roughly ≈1.33 times faster than CPython for fubini_rec(250). For fubini_rec(50), this factor is ≈3.33!

    Taxonomising odd jobs, pt. iii: Exploring the space of possible taxonomies. §5

    In the previous section (§4) of this part (pt. iii), I talked about weak orderings, and had this to justify it:
    Well, it is now “next time”, so I want to cover this, at least somewhat.

    Trees are for treehouses

    What is a tree? Well, a tree is a perennial plant with an elongated stem/trunk, supporting branches, and — in most species — leaves.

    Just kidding. A tree is actually a connected acyclic undirected graph. Unfortunately (or fortunately…?), this means that we are going to end up in “graph theory 101” territory before we can talk about our leafy friends. So let’s break this down a bit:

    A graph is, informally, a bunch of vertices (which are basically just… objects) that may or may not be joined to one another. Two vertices are joined when there is an edge joining them. Usually, when we visually represent graphs, we represent a vertex with a circle, and we represent an edge with a line that connects two circles. But graphs are really abstract, so they can represent a lot of things, not just circles and lines. Formally, a graph is a pair = (, ), where is a set of objects called vertices, and is a set whose members are sets of cardinality exactly 2, where each member of such a 2-set is also a member of . These 2-sets are called edges.

    An undirected graph is the same thing as what I defined as a “graph” above. The reason for specifying that a graph is “undirected” is to clearly distinguish from a directed graph, which is a graph whose edges have a specified direction, from one vertex to the other. When we visually represent directed graphs, we usually show the direction of an edge by adding an arrowhead to the corresponding one of its ends (so it looks like “→” or “←”). Formally, a directed graph is defined similarly to an undirected graph, except that instead of defining in terms of 2-sets, {(, ) ∈ × | ≠ }.

    An acyclic graph is a graph that has no cycles. If you have a vertex , and you can walk from back to along one or more edges of the graph, without walking along any given edge more than once, that’s called a cycle. So if you’re walking along an acyclic graph, then you cannot leave your current vertex, and then return back to that vertex, without re-treading any edges. Formally, a walk on a graph = (, ) is a sequence of edges ⟨₁, ₂, …, ₙ₋₂, ₙ₋₁⟩ (where ᵢ ∈ ) such that there exists a sequence of vertices ⟨₁, ₂, …, ₙ₋₁, ₙ⟩ (where ᵢ ∈ ), so that for all < , ᵢ = {ᵢ, ᵢ₊₁}. (For directed graphs, we can just change that last equality to ᵢ = (ᵢ, ᵢ₊₁).) A trail is a walk where ≠ ᵢ ≠ ⱼ. A circuit is a nonempty trail where ₁ = ₙ. A cycle is a circuit where ᵢ = ⱼ iff ᵢ = ⱼ = ₁ = ₙ. And, since we’re talking about trails, a path is a trail where ≠ → ᵢ ≠ ⱼ.

    A connected graph is a graph in which every vertex is connected to every other vertex. A pair of vertices is connected if you can walk, along edges, from one to the other. If a graph has one or more pairs of vertices that are not connected (that are disconnected), then the graph is a disconnected graph. Every graph is either connected, or else disconnected. Formally, two vertices (ᵢ, ⱼ) ∈ × of a graph = (, ) are connected when there exists a walk on whose vertex sequence is ⟨ᵢ, …, ⱼ⟩. Two vertices (ᵢ, ⱼ) ∈ × of a graph = (, ) are disconnected iff they are not connected. A graph = (, ) is a connected graph when, for all (ᵢ, ⱼ) ∈ × , (ᵢ, ⱼ) is connected. A graph is a disconnected graph iff it is not a connected graph. For directed graphs, we can define a weaker version of connectivity, weakly connected, which describes two vertices that would be connected if all edges in the graph became undirected (via a function that maps any edge (ᵢ, ⱼ) {ᵢ, ⱼ}).

    When a graph is acyclic, as defined above, there is at most one path between any given pair of vertices. The reason is that, if there were two distinct paths ₁ ≠ ₂ between a pair of vertices (₁, ₂), we could take ₁ from ₁ to ₂, and then ₂ to go from ₂ to ₁. And in there somewhere, would be a cycle! A (very) informal proof of this might look like: If the two paths share no edges, then chaining (i.e. connecting end-to-end) the paths would form a cycle (or, if it forms a circuit instead, that’s okay — every circuit contains at least one cycle). If the two paths do share edges, then we can manipulate our graph to produce a new graph ′ in which all of these shared edges have been contracted. Edge contraction preserves paths in the sense that any path in that connects two of its vertices also exists in ′, albeit with some edges possibly removed from the sequence — remember that empty (i.e. length 0) paths are perfectly valid. And there are still two distinct paths ₁′ ≠ ₂′ that connect our vertices (₁′, ₂′), as the paths were distinct before, so they could not possibly have shared all of their edges. But now, thanks to the edge contraction, chaining ₁′ with ₂′ definitely forms a cycle — ₁′ and ₂′ share no edges. This means that ′ is cyclic. If ′ is cyclic, then must be cyclic too, as the only thing that we did to go from to ′ is contract some edges, which cannot create new cycles, as it does not create new trails (it just shortens them). By contradiction, any acyclic graph must have at most one path between any given pair of vertices.

    If a graph is acyclic and connected (i.e. a tree), then we can strengthen “at most one path between any given pair of vertices” to “exactly one path between any given pair of vertices”. Having less than one (i.e. zero) paths between a pair of vertices is impossible, as all such pairs are connected! This stronger condition is, essentially, what it means for a graph to be a tree.

    Treerarchy

    As they are, trees are a tad bit abstract. We can, however, impose some additional structure.

    A rooted tree is a tree in which exactly one of the vertices has been designated as the root. Every rooted tree = (, ) has an associated tree-order, which is a partial order over — call it (, ≤) — such that (let , ∈ ) ≤ iff the path from the root to passes through . This path from the root is guaranteed to exist and to be unique, because of the properties of trees discussed above.

    Another ordering that we can impose on a rooted tree is that of depth. The depth of a vertex is the length of the path between it and the root. Naturally, this produces a weak ordering ((, ≲) such that ≲ iff the depth of is less than or equal to the depth of ), as depth values are natural numbers, and two distinct vertices can possibly have the same depth. In the special case of phylogenetic trees, this ordering can have a special meaning when paired with a molecular clock hypothesis: each depth value (or rather, the equivalence class associated with such a depth value) is essentially an evolutionary generation, and larger values correspond to times that are further in the future. However, in our case (taxonomising odd jobs), this depth-order won’t really have a meaning (especially not for our hand-crafted trees).

    Although depth-order may not be quite so useful, the tree-order is what we want to combine with the hypothetical weak ordering of our set of odd jobs that was mentioned in §4 (and was quoted above). Let be our set of odd jobs, and let (, ≲) be our weak ordering of odd jobs by “primitiveness” (or whatever), where ≲ (, ∈ ) is interpreted as “ is more ‘primitive’ than ”. Suppose that we produce a single rooted tree = (, ), which has a tree-order (, ≤). Then we want to maintain the following invariant: ≤ → ≲ . I should stress that this is a one-way implication, not an iff.

    Forestry

    We can lift the connectedness requirement on our definition of trees, resulting in simply an acyclic undirected graph (that is not necessarily connected). This is known as a forest, because such a graph can be thought of as the disjoint union of zero or more trees. Formally, the disjoint union of two graphs ₁ = (₁, ₁) and ₂ = (₂, ₂) is another graph ₁ + ₂ = (₁ ₂, ₁ ⊔ ₂). Taking the disjoint union of two or more nonempty trees necessarily results in a disconnected graph, despite the fact that each tree is itself, by definition, connected.

    Forests could be useful for our case, because they allow for two objects to be well and truly unrelated, by simply being disconnected within the graph representation. This would correspond, in the biological case, to two species who have no common ancestor(s) whatsoever. In the biological case, there is, empirically, apparently no such thing — it is commonly understood that all known lifeforms ultimately decend from a last universal common ancestor, which makes every species part of a colossal phylogenetic tree spanning some 3 to 5 billion years or so. In our case, however, it may very well make sense to have a pair of odd jobs be completely unrelated.

    Because we want our trees to be rooted, we will end up with a rooted forest, which is just a disjoint union of zero or more rooted trees. Let ₁, ₂, …, ₙ₋₁, ₙ be our rooted trees, let ℐ = { ∈ ℕ | 1 ≤ ≤ } be the index set for our collection of trees, and let = ᵢ (for each ∈ ℐ) be our rooted forest. Each rooted tree ᵢ = (ᵢ, ᵢ) has a vertex set ᵢ ⊆ , as well as a tree-order (ᵢ, ≤ᵢ). Then we can generalise the invariant above to: ∈ ℐ ∀(, ) ∈ ᵢ² [ ≤ᵢ → ≲ ].

    A little card-hunting with capre

    As readers of this diary may know, I’ve done the most card-hunting of any of my characters on my woodsmaster, capreolina. Well, I went back to a little more card-hunting where I last left off: Orbis.

    I had to take care of the rest of the big cats: Lioners & Grupins.

    [​IMG]

    [​IMG]

    Once that was over with, I was done with Orbis entirely (minus Eliza, as I refuse to card-hunt area bosses that are required for quests). So I headed to the bottom of the respective tower, to farm some more cards at Aqua Road. I have farmed at the upper regions of Aqua Road before, so I already had quite a few of the sets finished (and some partially finished). But I needed some of the ones to the far west, near the base of the Orbis Tower. So I farmed around there (e.g. in Ocean I.C):

    [​IMG]

    [​IMG]

    [​IMG]

    The Poison Poopas were giving me a bit of a hard time, but all I had to do was complain about it in alliance chat, and suddenly they started spitting out more cards than I even needed. Hooray for 6/5 Poison Poopas~

    And, while I was hunting, Battlesage (Permanovice, Dreamscapes, Hanger), an F/P gish also of Oddjobs, pulled me aside to show me 3 “bois”:

    [​IMG]

    Three fine-looking gish weapons! And in every colour of the rainbow… that yellow-glowing one is really somethin’ else.

    A little questing with alces

    I did some more questing in Victoria Island with my undead daggermit alces! I went to wrap up the Icarus questline, so I had to get some Alligator Skin Pouches:

    [​IMG]

    …And Tablecloths:

    [​IMG]

    Oh, and I have to 1v1 some swamp plants to the death, as well. We cant go around making magical flying pills without some swamp leaves with seemingly-too-low drop rates:

    [​IMG]

    And there it is; the magical flying cape of legend:

    [​IMG]

    Nice!

    Oh, and I prepared the ETC items that I needed for the Sauna Robe questline. I ran around to various NPCs, and lo and behold, a robe of my own:

    [​IMG]

    Stylish.

    And I headed to deep Sleepywood to work on Muirhat’s monster-slaying questline. Next up was Drakes and Ice Drakes:

    [​IMG]

    NIce Drake card.

    And then, I started Muirhat’s last quest, along with concurrently starting the latter half of A Spell That Seals Up a Critical Danger — both of these quests require at least some Tauromacis kills, although the latter quest is clearly considerably more difficult. A tad ironic, considering how much lower-level it is, and how much worse the reward is…

    [​IMG]

    And, as usual, my suspicion that Taurospears have a much higher card drop rate than Tauromacis is confirmed again and again… I’ll have to finish up this quest later, it’s a real doozy.

    Permanovice’s level 100 party~

    I was honoured to attend the level 100 party of STRginner Permanovice! The first part of the party was to engage in ritualistic snail murder, which Permanovice assured us was a very sacred permabeginner ritual that he needed to undergo in order to achieve level 100 beginner. As it happened, by the time that the party’s scheduled date rolled around, the summer event had started. So the bonus event EXP made it so that the sequence SnailBlue SnailRed SnailMano would level Permanovice prematurely, before getting to the Mano. Oh well, the party was still on and starting in Lith Harbour:

    [​IMG]

    Although I had to leave early and didn’t experience the omok tourney, the party went as planned, and we even found a Mano :) Congrats again on the big level 100!!! ^^

    capre trawling the Phantom Forest w/ NZPally & Yohichi

    I teamed up with NZPally again on my woodsmaster capreolina, to kill some more bosses. We also teamed up with bishop Yohichi, an old friend of NZPally’s, who came with us to the Phantom Forest in search of HH’s head and BF’s toe.

    With some luck, and with NZPally’s relatively extensive knowledge of the Phantom Forest’s geography (I’m no newb to the forest myself, but I admit that I only go to a few places within it, so my knowledge is not very broad), we found an HH (actually, 2 or 3 of them in total):

    [​IMG]

    And we also found some Bigfeet as well! Here I am, confidently standing just far enough away from the thing that will instantly kill me if it touches me:

    [​IMG]

    All in all, I got quite a bit of EXP this session, and capreolina is now level 123~!! Level 9 SE yayy~

    Visiting the Temple of Time for the first… time

    Believe it or not, I’ve never actually checked out the ol’ ToT. I suppose I never really had any reason to go there, and I wasn’t even aware of how to get there… As it turns out (for anyone not already familiar), ToT is accessible via Leafre — in particular, you go there by going to the same map that you would visit if you were headed to Orbis, but instead of talking to the ticketing guy there to board the ship to Orbis, you go wayyy on up to the tippy-top of the map to talk to Corba. As it turns out, Corba is a retired dragon trainer. What Corba is doing hanging out at the “cabin” from Leafre to Orbis, I’m not sure, but in any case, Corba’s experience with dragon training proves useful to any intrepid Minar Forest explorer. The reason for this is that Corba can not only train dragons, but can simply turn you into one!:

    [​IMG]

    Wowie. Besides being cute, turning into a dragon means that no ship, or anything like that, is required to fly through the skies — you have your own wings now. While this is generally fun and all, the real purpose is to fly high above the clouds, where among the heavens you can find the apparently Ancient-Greek-inspired architecture (think Orbis*, but everything looks bigger and more expensive) of the Temple of Time.

    [​IMG]

    Besides its grandiose & ancient-but-pristine architecture, the Temple of Time attempts to invoke themes of… well, time, obviously. Much like time elsewhere, the time in this region of MapleStory appears to march unceasingly and in a single direction — yet, since we are talking about turning into a dragon to fly into the heavens where there’s an inexplicable giant floating palace, why not mess with time itself, as well?

    So, this is our task: for vague and unspecified reasons, something is funky (and not in a good way) with the Temple of Time, and it is our job to investigate. But, in order to do so, we must walk down Memory Lane — and not just anyone can do that. In order to uncover these memories that are apparently too old to be our own (and yet, they are), we need permission. So for that, we must prove our strength to the keeper of the Temple. I played as my pure STR bishop cervid, and teamed up with ducklings, Harlez, Gruzz, and xBowtjuhNL to do just that:

    [​IMG]

    The ToT quests are simple: kill 999 monsters, thus completing your current quest, and the next map is then opened up for you. The next quest asks to kill 999 monsters in this new map, and we rinse & repeat.

    [​IMG]

    After Memory Monks (which I know as simply “pointy monks”) come Memory Monk Trainees (which I know as simply “pointy monks w/ babies”):

    [​IMG]

    These guys are no joke: the ones with babies are level 94, with a whopping 45k HP a piece. Everpresent are the Eyes of Time (which I know as simply “flappy hourglasses”), which have 24k HP a piece and some nasty magical attacks… although you are never required (at least, not directly) by the quests to kill them.

    [​IMG]

    Next are the Memory Guardians (which I know as simply “gassy armour”), level 98 with 53k HP a piece:

    [​IMG]

    The EXP so far has been fairly decent, which is great for cervid. I suspect that these quests are reasonably doable by cervid when soloing (at least, the first few ones that I’ve seen), although in that case the EPH would be much less useful… and it would make an already tedious questline even more so!

    [​IMG]

    Now, on to complete the pointy armour quest…

    *Funnily enough, it seems that, like Orbis, the Temple of Time has its own “Goddess” (who is also often referred to simply as “Goddess”) who is, again like the Goddess of Orbis, mysteriously MIA. In the case of Orbis, reviving Minerva the Goddess (and thus, presumably, relieving her from being a broken stone statue for all eternity) is the crux of the Orbis Party Quest. In the case of ToT, the Goddess’s name is Rhinne, and as the Goddess of time itself, she exists in an eternal state of slumber. What exactly this is ultimately supposed to mean, I’m not sure. But, then again, I’m also not sure exactly what else I’d expect the personification of time to be doing.

    Outland BPQ w/ woosa

    I also, with much the same crew, hit up the PQ that comes with the current summer event: Boss (Rush) Party Quest, or BPQ for short. I hopped onto my darksterity knight rusa and was transported back to MPQ, with the same folks with whom I MPQ’d originally ^^:

    [​IMG]

    Although, this time we didn’t have to save Romeo, and Franken Lloyd really went down like a chump…

    Oh, and also in BPQ, we had the chance to fight our favourite apocryphal sea lizard:

    [​IMG]

    And this was about as far as we went, usually. The first time, we tried killing Papu Clock and were able to defeat it, and make it to Pianus… but with only 90 seconds or so on the clock, and with xBowtjuhNL having used an apple >w<

    Vic island questing w/ d34r

    I wrapped up what are essentially my last few (sadly) quests on my vicloc dagger spearwoman d34r. The first order of business was two of the same quests mentioned earlier in this entry: Muirhat’s final quest, and A Spell That Seals Up a Critical Danger.

    [​IMG]

    Now, doing these quests was really not easy. Tauros have gobs of HP, and Taurospears in particular pose a problem: level 75, 18k HP, 550 WDEF, 390 MATK, and 30 AVOID… yowza. Combine this with their rather… difficult spawn rates, and yanking the Spirit Rocks out of these fuzzy bull-headed bastards was like pulling teeth.

    But, I did get two card sets out of it!

    [​IMG]

    Oh, and I found this weird book?:

    [​IMG]

    I asked Manji about it, but he didn’t seem to know anything about it…

    Eventually, the Tauros relented and let me have my Spirit Rocks. So I carried on to do the easier part of that quest: collecting Wild Kargo’s Spirit Rocks.

    [​IMG]

    And with 33 of those also under my belt, I was able to claim my… mildly underwhelming prize:

    [​IMG]

    With that out of the way, I went to do another quest that also involves Tauros (somewhat): Luke the Security Man’s Wish to Travel. This level 50 quest is for warriors only — there are corresponding Victoria Island quests for other archetypes as well, although they differ considerably from one another. This one is a real doozy:

    [​IMG]

    Luke is not kidding about how ridiculous the necessary materials are. In total, I had to collect:
    Nevertheless, I was determined to complete this quest. So I had to hunt for another Flaming Feather. Readers of this diary will know just how much fun I find it to hunt Flaming Feathers on Victoria Island… Thankfully, after a while of grinding Red Drakes, xXCrookXx wished me luck, and it seemed to do the trick!:

    [​IMG]

    Wowee. That could have been a lot worse. Now that I had this rare item out of the way, it was time to do some crafting:

    [​IMG]

    Geez. Thankfully, I was well rewarded for my efforts: an insignificant amount of EXP, and a beat-up warrior helmet that I sold to an NPC within 90 seconds of aquiring it! Thanks Luke.

    And I wanted to wrap up just one last quest: Mrs. Ming Ming’s Second Worry. I had this one nearly finished for a long time, and just needed to get around to farming a few more Pig’s Heads. So I did:

    [​IMG]

    And this one, although it may require a whopping 20 Pig’s Heads, does pay pretty well, with none other than our good old friend the Ribboned Pig Headband:

    [​IMG]

    50 MAXHP and 12 WDEF! An excellent secondary helmet for the squishier among us~

    d34r & xXCrookXx leave Victoria Island in search of better PQs

    Now, being a Victoria Islander is great and all, but there’s just one issue: the PQs. I’m too high level for KPQ, I’m not a huge fan of HPQ (not that the EXP would be very rewarding at level 73), APQ sounds great but has some nasty time limits that prevent me from entering my normal state of existence (24/7 PQing), and SPQ just ain’t never gonna happen, let’s be real. So it seems that there is only one solution: escaping the island we know as Victoria.

    I tried to elope with fellow viclocker xXCrookXx, but our first attempt didn’t pan out…:

    [​IMG]

    R.I.P. It seems that Ossyria really is a hoax designed to feed the crogs.

    But we didn’t give up. After some effort, we made it all the way to Magatia, where we were just the right level to participate in the Magatia Party Quest:

    [​IMG]

    Just kidding. Both of the above screenshots are actually from BPQ. Speaking of vicloc BPQ, some of the non-boss monsters that are summoned by the bosses in BPQ actually drop cards. Take Kimera for example, who is capable of summoning Roids that drop Roid Cards. We found this out first-hand, when xXCrookXx looted one of these sacred Roid cards:

    [​IMG]

    Of course, these exotic BPQ cards actually are perfectly vicloc-legal, so no one was banned :p

    Oh, and also, we went to Mu Lung Gardens to participate in MLGPQ (Mu Lung Gardens Party Quest) with STRginner Outside:

    [​IMG]

    d34r is stronk!!!

    d34r has been using a 6 WATK, 4 STR Dark Knuckle as her main (read: greedy damage) glove for a while now. As I’ve started to accumulate GFA60s, I’ve considered scrolling another glove to try to beat that. I struggled for a while, trying to decide on how greedy I should be: be extra greedy and scroll a nice warrior glove that has lots of STR/DEX/WACC/WDEF on it, or be less greedy and scroll a Work Glove of some kind, so that I can give it to a fellow viclocker in need of WATK gloves when I likely fail to make a very good glove? In the end, I decided to be a little less greedy and use some of my scrolls on an RWG:

    [​IMG]

    o_o Holy moly!! The first ≥10 WATK vicloc glove!!! Who ever said I was no good at scrolling????

    Now that I had a nice new pair of gloves, I wanted to upgrade my rather sad cape situation. For almost the entirety of d34rs career, she has been using an ORC with 3 DEX and 2 LUK (owie), or more likely, a (+0) Icarus Cape (2) with 4 slots left… for the SPEED…

    I had already “boomed” 2 or 3 other nice capes in an attempt to just pass a single Cape STR 60%, but it seemed that the 60% figure was lying to me. I tried once again on a random RMC that dropped from a Wild Kargo that I killed, and lo and behold, I actually managed to pass a 60% on it. Not just one, either — three in total:

    [​IMG]

    Not bad!

    But we’re saving the best for last, here. I have been hunting Balrog Junior for… weeks, months, decades. Millenia. The number of Mana Elixirs that I’ve seen this beast drop would be enough to feed a smol village for a year. Eventually, I came to believe that, perhaps, Jr. Rog doesn’t drop Golden Rivers at all. Perhaps the Golden River is listed in Jr. Rog’s droptable on the MapleLegends library specifically to mess with viclocked dagger warriors. Perhaps, Jr. Rog can read my mind, and knows what I want — and that is why he will not drop it. So, you could almost imagine the sensation that I felt when I saw this happen:

    [​IMG]

    Actually seeing this impossible item flying into the air was enough to make my stomach drop. It took me a minute or two before I actually had the courage to look at the thing and see its WATK value:

    [​IMG]

    Three above average!!!!!!!! That’s eight better than what I was expecting! I admit to taking another few minutes before I had the courage to scroll it, even though I already had 10 Dagger WATK 60%s in my inventory. But, again much to my pleasant surprise, it went quite well:

    [​IMG]

    Few times have I ever been so thrilled to have a MapleStory item in my life… My character finally feels complete.

    And I got to test out this sleek little dagger when GM buffs were announced, and xXCrookXx and I did an intense 60-minute GM buffs TfoG session:

    [​IMG]

    Oh my. GM buffs are wild…

    Getting that T2 before the big day

    There are a total of 69 card sets natively available to viclockers, which means that the tier 2 Monster Book Ring is the highest tier that can be achieved. So, it was time for d34r to get to that 60th set and finish off her card-hunting career for good!

    The first order of business was actually just to finish off that red tab — I had 5/5 on all of those monsters, except for Bubblings, of which I had no cards at all:

    [​IMG]

    And, while I was in the Kerning City subway, I went to go the Stirge set:

    [​IMG]

    These slippery batty bois prove to be somewhat difficult to efficiently kill with nothing other than a dagger… Nevertheless, I was able to finish the set and continue on further into the subway:

    [​IMG]

    Wraiths proved to be perhaps the easiest of them all, as I already had two or three of their cards, and they readily gave up the rest that I needed. With that, I moved to the excavation site in Perion:

    [​IMG]

    [​IMG]

    [​IMG]

    The Ghost Stumps appear to have more favourable card drop rates than their masked friends, but eventually, I was able to squeeze 5/5 out of all of them.

    I wasnt quite sure where to go next, but I decided it would be a good idea to take care of the iron-clad swine card sets:

    [​IMG]

    [​IMG]

    Iron Boars are kind of similar to Red Drakes: both only spawn in a single map in the entire game, both of their respective maps are relatively hidden, and both of their respective maps are in Perion.

    With the armoured pigs out of the way, I headed over to Dyle’s map to hunt the Croco cards (and maybe a Dyle or two…):

    [​IMG]

    And now, with 59 full sets done, it was time to get that 60th set. For this, I headed to Lorang Lorang Lorang (Lorang Lorang…):

    [​IMG]

    Lorangs are kinda funny-looking. They have a single big claw. Although the six appendages of the Lorang are not necessarily accurate to real-life crabs (Brachyura), which generally have ten appendages, there is a very real family of crabs whose members possess a single oversized claw: fiddler crabs (Ocypodidae). Only the males have the strangely large claw, and the crabs themselves are somewhat small (5 cm across at most).

    After a while, I got the Lorangs to cough up the last two cards that I needed to finish their set. And there it was: 60 finished sets overall.

    [​IMG]

    Yay!!! Now d34r feels even more complete! And just in time.

    My first mushroom marriage~

    Just in time for what? Why, my first MapleStory marriage of course :)

    Although vicloc is, in the grand scheme of things, a quite restrictive mode of playing MapleStory, it is not so devoid of content as it might seem at first blush. One aspect of this is the simple fact that Amoria is a part of Victoria Island. Amoria opens the door to a number of things, including:
    • Sakura Cellions, which drop some special items that are difficult or impossible to find elsewhere;
    • Some extra quests, including Beauty or Beast!, About the Amorian Challenge!, and Red Dahlia;
    • Some additional grinding/farming maps that are good for parties of ≥2, including PPI (for low-level characters and for farming items that drop from any monster), PWFI (for medium-level characters), and PWFII (also for medium-level characters);
    • Some additional hair/face styles that would otherwise be unavailable to viclockers;
    • HP warrior clothing;
    • APQ;
    • and of course, marriage itself, which comes with a large number of its own goodies.
    However, so far, no one in vicloc has actually married (or even attended a wedding, for that matter). In order to marry, though, the one who is making the engagement ring has to acquire 20 Soft Feathers (assuming that they are vicloc; outlanders have other options). In GMS, Sakura Cellions dropped Soft Feathers. However, in MapleLegends, for some reason, Sakura Cellions don’t drop them. Indeed, they aren’t available on Victoria Island at all. So we have a special exception in da roolz that allows for viclockers to acquire Soft Feathers without ever leaving Victoria Island. When xXCrookXx (Level1Crook, Lv1Crook) and I (d34r) were at The Cursed Sanctuary killing jrogs together, and we had killed the last of the eight channels, xXCrookXx told me that he had gathered up 20 Soft Feathers. He asked if I wanted to marry him, and I said yes.

    Although the proposal was not exactly supposed to be theatrical, it was at least in an appropriate place: Jr. Balrog’s lair (plus, Sleepywood maps are some of the most beautiful maps in the game, in my opinion). Now, it was time to put together an engagement ring so that we could get engaged, in preparation for marrying on the next day!

    We decided on the most expensive of the four engagement ring types: the Moonstone ring. So we paid a visit to Chris in Kerning City to refine some ores:

    [​IMG]

    And I gave xXCrookXx the rest of the ETCs necessary for all four Proofs of Love:

    [​IMG]

    And now, with a fully-crafted Moonstone Engagement Ring, we got engaged:

    [​IMG]

    [​IMG]

    Now we had to figure out our outfits for the wedding, so we paid a visit to Vivian Boutique:

    [​IMG]

    In the end, I went with the Red Bridesmaid’s Dress combined with my usual long boots (Antique Demon Long Boots). And we collectively decided on both wielding Field Daggers.

    As the planned time for our wedding approached, xXCrookXx was at the Sanctuary Entrance fighting Taurospears/macis for their associated quests, and I asked him to check for jrog. As it happened, all of the jrogs were up at that time, so I zoomed over there and we hurriedly tried to kill all of them before the wedding:

    [​IMG]

    We were able to make it to the cathedral just about on time — at least, certainly before anyone else got there. And luckily for us, many people were able to attend: viclockers Thinks (OmokTeacher, Slime, Slimu), LoveIslander (NZPally, NZIslander), SeaThief, and xXcorticalXx/SussyBaka (Phoneme, Cortical, moonchild47), as well as Permanovice and kookiechan, who brought with them a whole host of other lovely people, including (but not limited to) Buqaneer (IceGrinder), kleene, and Bretticuss (xBrett).

    [​IMG]

    Unfortunately for us, however, xXCrookXx and I were both total wedding newbs. Because xXCrookXx had already purchased the wedding ticket from the Cash Shop, and we had already made the engagement ring and gotten engaged, I thought that all we had to do was go inside. As it turns out, this is not sufficient.

    When he tried to go inside the cathedral, xXCrookXx informed me that I needed to get permission from my parents. So I headed through HHGII to Meet the Parents. Much to our collective dismay, Mom & Dad had nothing to say to me, other than to tell me to see High Priest John… So back to Amoria I went. But again, no dice. High Priest John had nothing useful to say to me. After an embarrassingly long string of running back and forth between Meet the Parents and Amoria proper, we found out that I needed two Proofs of Love, which I would give to my parents in exchange for wedding permission. So I made haste to Perion and Kerning City, to turn in some Firewood and Horny Mushroom Caps, respectively. Then back to Meet the Parents… then back to Amoria…

    And finally, after a little more scrambling about with the NPCs in Amoria, and some more flustered apologies to our guests, we managed to get into the damn cathedral.

    It took two tries, as not everyone was actually ready to go in yet — we sent out a bunch of invitations, but not everyone joined within the first ten minutes, so we got kicked out. But, eventually, everyone was in, and we could actually begin the wedding:

    [​IMG]

    Beautiful. Who needs the Smoochies emote when you have the Queasy emote?

    And Phoneme, as the vicloc “boss” (read: non-vicloc guild leader mule), took this opportunity to give a classic drunken-wedding-speech. Phoneme let everyone in attendance know that Victoria is a Victoria-Island-based crime syndicate (of which, Phoneme presumably assumes the role of kingpin), and that Victoria Islanders own the island and all area bosses within it.

    [​IMG]

    And with that, it was time for the cake photos:

    [​IMG]

    This entire time, we had been hoping that someone would get a Heart Wand or Heart Staff so that my vicloc clericlet d33r would have something to look forward to at level 54 (Heart Wand/Staff is endgame for vicloc magelets). I even put it on my wedding gift wishlist! And much to my pleasant surprise, LoveIslander was lucky enough to get a Heart Wand from his Onyx Chest, for which I exchanged a perfect (29 WATK, 5 LUK, 4 AVOID, 7 slot) Dark Slain!!:

    [​IMG]

    Yayy!! And from my Onyx Chests, I received a Yellow Chair (on d34r) and a Moon Rock (on d33r). xXCrookXx got, from his Onyx Chest, the sacred Amorian Relaxer.

    Later, xXCrookXx and I went to TfoG for some honeymoon grinding, and on a whim, he gave me a single Helm DEX 10% (only available from Dyle) to try on my helmet:

    [​IMG]

    Holy moly!!! It looks like this helmet is never leaving my head; it doesn’t get much better than that. :D

    Looking forward to some APQ in the future, hehe~

    Hunting jrog w/ KaleBeer

    xXCrookXx and I also went back to the Cursed Sanctuary to kill some more jrogs. After killing them, we sat in the sanctuary to chit-chat, and a little oever two hours later, KaleBeer came along looking for some jrogs. We told KaleBeer that none of them could be up right now, as we have timers for all eight channels. After xXCrookXx said goodnight, I chatted with KaleBeer and explained why I was there at the Cursed Sanctuary. KaleBeer was intrigued, and I agreed to help him get jrog cards (as I, of course, got 5/5 cards long ago)! KaleBeer buddied me, and we went on a jrog hunt as my timers came around.

    We were able to finish KaleBeer’s jrog card set!:

    [​IMG]

    And KaleBeer even helped me out with some other area bosses that he needed cards from (Faust, ZMM), letting me kill them! Unfortunately, no Shield STR 60%s to be found x)

    <3
     
    • Great Work Great Work x 2
    • Friendly Friendly x 2
    • Like Like x 1
  4. Ainz
    Offline

    Ainz Zakum

    1,666
    1,081
    490
    May 2, 2015
    Male
    Netherlands
    8:06 AM
    So many I keep forgetting
    0
    So I thought this was just a thread where goofballs play their oddjobs and go "haha my damage as a full dex mage is doodoo!"

    ...but there's academic papers being written on a 2006 mushroom game. I love this place.
     
    • Like Like x 3
  5. Slime
    Offline

    Slime Pixel Artist Retired Staff

    640
    1,184
    381
    Apr 8, 2015
    Male
    Israel
    9:06 AM
    Slime / OmokTeacher
    Beginner
    102
    Flow
    ??????? Who's OmokLeecher???? CorticalCortical
     
    • Informative Informative x 1
  6. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    (You can also read the original diary entry here, and/or read the diary entry on the Oddjobs forum.)

    rangifer’s diary: pt. lxiv

    Ape-y queue

    Now that my vicloc dagger spearwoman d34r is happily married, it’s time to do some quests that are only available to married folk :)

    First on the list are two quests that showed up in my quest journal as soon as I tied the knot with xXCrookXx: Circle of Trust and Red Dahlia. I was really excited to see these show up in my journal — I had no idea that there were married-specific quests other than APQ, and at that point I had run out of other vicloc quests to complete. Unfortunately, it turned out that Circle of Trust is not a vicloc quest at all; it requires recovering a special quest item from Tweeters, which regrettably can only be found in the Eos Tower, which isn’t a real thing that exists.

    On the other hand, Red Dahlia is a perfectly good vicloc quest. The quest is different depending on which first job advancement you’ve taken, and it seems (regrettably) that those who have not taken the first job advancement can’t do this quest. For better or worse, though, the quest is pretty trivial — I already had the necessary ETC items laying around in my inventory, so completing the quest was just a matter of talking to Ben twice:

    [​IMG]

    Meh. A frankly useless scroll and an insignificant amount of EXP for my level…

    But that’s okay, because there’s just one other quest that marriage unlocks. You already know what it is: the Amorian Party Quest.

    While collecting Lip Lock Keys to gain entrance to the PQ, I accidentally fell off of the map. I mean, like, all the way through the bottom of the screen, only to be magically teleported back to the map proper after falling far enough. I showed xXCrookXx how to do it:

    [​IMG]

    After we made ourselves dizzy by trying it a few times, we went back to farming keys.

    The first APQ was a really cool experience for the both of us; neither of us had ever APQed in MapleStory before, so everything was totally new. For our first APQ we were joined by… not one, but two level 200 characters (lol). I had a guide to APQ open in a web browser tab, but by the time that xXCrookXx had gotten us into a full party of 6, I didn’t have time to read very thoroughly, so thankfully our party members were nice and guided us through the uncertain bits.

    The first stage was pretty straightforward. This appears to be the only stage that places constraints on the genders of the members of the party; one half of the map is only accessible to female characters, and the other only to male characters. Basically, though, you just kill stuff:

    [​IMG]

    Stage 2 excited me a bit because it’s actually identical to the Sealed Room stage in OPQ, which is one of my favourite PQ stages. The only difference, of course, are the visuals. Instead of three ordinary platforms, there are three ropes suspended high in the sky from giant floating sculptures. To climb the ropes, special teleporters may be used to assist the intrepid APQer in getting yeeted into the sky — just make sure that you hold the up arrow key so that you actually land on the rope:

    [​IMG]

    The next stage is also a puzzle, and much to my delight, it appears to be a mixture of the OPQ Sealed Room puzzle and the LPQ stage 8 puzzle. Like the Sealed Room, stage 3 of APQ indicates to the players (in this case, all players — not just the leader, which is cool) how many of the platforms are correct*. And like LPQ stage 8, at most one character can stand on each platform, and there are exactly 9 platforms. Also like LPQ stage 8, the platforms are given meaningless labels so that players can easily reference individual platforms. With LPQ stage 8, regrettably, the (1, 2, 3, 4, 5, 6, 7, 8, 9) labels of the platforms often confuse players who think that the stage has something to do with numbers — in reality, like with APQ stage 3, the labels are meaningless identifiers (they could instead be colours, or shapes, or…).

    [​IMG]

    Stage 4 is a pretty straightforward ETC collection, much like collectively completing a quest by collecting 50 of… these things:

    [​IMG]

    I was only mildly surprised to see that the items we were collecting were, you know, sex toys. But I guess it is the Amorian Party Quest, after all — celebrating love and, apparently, also sexuality! One of our party members referred to these as butt plugs, although I don’t recommend using them that way — they appear to have no base! Wouldn’t want to lose one in an unfortunate place :)

    The next stage is kinda goofy, as it consists entirely of running as fast as you can towards the right-hand side, breaking through gates (with basic attacks) as you go:

    [​IMG]

    The entire time, there are various spoopy creatures creeping up behind you, as well as lava constantly spewing out of the ground. In fact, the stage almost has a halloween-y vibe to it. Well, it would, if it weren’t for the background music being the same as everywhere else in the PQ: more upbeat, cheesy vibes.

    And of course, it wouldn’t be a PQ without the big bad end guy, would it? Meet grog:

    [​IMG]

    As it turns out, while grog’s stats are not all that impressive (not all that much hp, doesn’t hit very hard, etc.), it is quite the pain in the ass just because of its tendency to weapon cancel, fly around everywhere, and disappear entirely…

    With that done, it was time for the bonus stage. Normally, folks are out here looking for apples, but xXCrookXx and I have something slightly different in mind. Much to my amazement, in my first ever APQ, I got the item that I was perhaps most looking forward to from this stage:

    [​IMG]

    That’s right — Cecelia’s Earrings! The most powerful earrings in all of vicloc!! These ones that I got first were kinda crappy (10 WDEF and 50 MDEF), but still a lot better than the 0 WDEF & 42 MDEF Pink-Flowered Earrings that I was using before!

    I’ve now done some nine APQs or so, over the course of which I’ve racked up three apples, as well as two or three baskets, a number of joocy capes, and lots of joocy cape 30% scrolls :D

    *This value is actually just Dim(ℋ) − d(g, s), where ℋ is our Hamming space, Dim(ℋ) is the number of dimensions of ℋ, d is the Hamming distance that makes (ℋ, d) a metric space, g ∈ ℋ is the guess that we made, and s ∈ ℋ is the correct string (s is selected randomly by the game, and originally a complete mystery to the players). For stage 3 of APQ and stage 8 of LPQ, ℋ is defined over GF(2), because each platform either has a player on it, or doesn’t (either 1 or 0). And the length of the words in ℋ is Dim(ℋ) = 9 for stage 3 of APQ and stage 8 of LPQ. In the case of the Sealed Room and stage 2 of APQ, ℋ is no longer a vector space (lol), because the alphabet is {0, 1, 2, 3, 4, 5}, which has a cardinality of 6 (not a prime power, womp womp…). And in this latter case, Dim(ℋ) = 3.

    d33r lays waste to thousands, nay millions, of napkins

    I started playing more actively on my vicloc clericlet d33r! For better or worse, the only thing on d33r’s table at the moment is tireless solo grinding… Thankfully, with just a little bit of gear (especially the Yellow Umbrella that xXCrookXx kindly traded me ^^), d33r is more than capable of killing a smol napkin or two, albeit much more slowly and painfully than you might expect…

    The main suspect for a grinding map for d33r was Line 2 <Area 1>, in the Kerning City subway. This map is pretty large, but makes up for it with a massive number (83) of Jr. Wraith spawns. The Jr. Neckis are a bit annoying, but I can kill them with three Magic Claws or so each, and d33r is not yet 5/5 on Jr. Necki cards, so it works out. But Slime (Thinks, OmokTeacher, Slimu) told me that I could find an even better grinding map at the end of the Kerning City jump quests (JQs). In particular, the Subway Depot at the end of the B2 JQ spawns almost entirely Jr. Wraiths (and a single lone Jr. Booger). Now, I am the absolute last person on this Earth to come to for JQ expertise, but I had successfully completed the B2 JQ at least twice before, Slime said it was the fastest JQ in the game, and it’s mostly just red and blue lasers, so just being patient should hopefully be enough for me to make it through.

    So I tested the two maps side by side, with one @epm 3 test each:

    [​IMG]

    Wowza! Slime was right — that’s just about a 90k EPH increase, which is very significant in this case. So I guess it’s time to get good at the B2 JQ… My times so far (not timed properly, just looking at my system clock):
    1. 12.5 minutes
    2. 9.2 minutes
    3. 7.5 minutes
    4. 5.5 minutes
    Getting better ^^

    [​IMG]

    Very nice!! d33r is level 46 now :3

    Here’s a collection of loot that I got during my first grind session (at both Line 2 <Area 1> and the B2 Subway Depot):

    [​IMG]

    [​IMG]

    Wowza, that’s a lot of napkins lmfao.

    My next milestones for d33r are:
    • Level 49, for max Bless (thus completing my main arsenal);
    • Level 50, so I can wear a better cape that I’ve been scrolling while APQing;
    • and finally, level 54, so that I may wield the almighty Heart Wand.
    And yes, for now I do really mean “finally”. There is, unfortunately, little motivation to level up d33r past level 54, unless I have some other viclockers to play alongside with*.

    *This is a cry for help. Come play vicloc, xXCrookXx and I are very lonely v_v

    Stab, stab.

    I did lots of questing on my undead daggermit, alces!

    First on the list was finishing off the Victoria Island quests that I wanted to do. For some god forsaken reason, one of the Vic Island quests that I decided to do (if you’ll remember from the previous diary entry) was A Spell That Seals Up a Critical Danger. So I got back to killing these bipedal ungulate weirdos:

    [​IMG]

    Having completed the questline, I made off with my crumb of EXP and handful of PEs, and killed a ZMM or two along the way:

    [​IMG]

    I took a brief detour to BPQ with whoever happened to be standing in the training centre:

    [​IMG]

    Franken Lloyd, we meet again…

    One of my party members gave me a name, due to my tendency to fly towards the boss each time that we entered a new map:

    [​IMG]

    And with that, before leaving Victoria Island to quest elsewhere, I wanted to start off my card-hunting journey with the T1 ring. So I hunted some snails, mushrooms, and the like:

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    Et voilà ! alces has her very own monster book ring now :)

    [​IMG]

    With the T1 ring on my finger, I headed to Orbis for moar quest. First, Goddess’ Pet!:

    [​IMG]

    [​IMG]

    And, to my pleasant surprise, there was an Eliza already there when I went looking!

    [​IMG]

    I farmed this Eliza for her Jr. Lucidas, and when she refused to spawn any more, I killed her to finish the quest. I went around all eight channels and found three or four other Elizas as well, which I did not kill. Instead, I kept each one below 50% HP and exhausted them of all of their Jr. Lucida spawns. All in all, over the course of an hour or so… this was enough to get me to 1/5 Jr. Lucida:

    [​IMG]

    Well… I suppose that’s better than 0/5, innit?

    Apparently, the “Eliza” that I killed was not Eliza at all — merely her shadow:

    [​IMG]

    I guess that explains the freaky all-white eyes of the “Eliza” that I killed. With this quest complete (including the joocy fame at the end), and with Fairy’s Horn Flute complete:

    [​IMG]

    …alces was now level 90!!:

    [​IMG]

    Finally, I can put on the proper rogue gear that I’ve been waiting for :D
    Time to test it out!!:

    [​IMG]

    >4k lines with Double Stab… w h e w .

    I did just two more quests in Orbis: Lisa’s Special Medicine and Delivering Food to Spiruna, which are basically just potion-ferrying quests. And with that, I started the Scadur’s New Fur Coat quest and headed to El Nath:

    [​IMG]

    While farming for these wolven tails, I stumbled across an old friend:

    [​IMG]

    Terrible. Seeing a Serpent’s Coil drop to the ground induces Camp 3 flashbacks. And, of course, this coil was 4 WATK above average…

    I stumbled upon the Snow Witch’s map and found there Sergeant Bravo, who struck me as strangely (perhaps, unjustifiably) confident:

    [​IMG]

    If I were recovering from an “emergency landing”, and was not able to find any of my fellow crew members… well, I’d likely be less optimistic. But anyways, I did run into the Snow Witch herself:

    [​IMG]

    And got a few cards!

    [​IMG]

    And, to finish off Scadur’s New Fur Coat, I hunted for 100 Yeti Horns:

    [​IMG]

    And with that (and some Garnets and Sapphire Ores that I bought on the FM, lol), I completed Alcaster’s Cape and got my very own Cape of Warmness:

    [​IMG]

    …and Scadur’s New Fur Coat:

    [​IMG]

    Cozy!

    And, of course, I was doing the Snowfield Giant quest as well. It took me a little while to find a Snowman, but I did eventually!:

    [​IMG]

    And, while I was there, I also completed Master Sergeant Fox’s Secret.

    I then moved just slightly further down the Orbis Tower, to start doing some Aqua Road quests. I started the Lost in the Ocean quest, and headed into deep aqua to find a small shipwreck on the seabed:

    [​IMG]

    After overcoming my not-entirely-irrational fear of dozens of oversized cartoon sharks biting me to pieces, I took a peek inside of the wreckage:

    [​IMG]

    How convenient. Inside was none other than Taeng the Explorer, who had a quest for me: find the artefacts left behind by Taeng’s MIA crew members, which artefacts Taeng assumes must have been eaten by the sharks. So I started indiscriminately stabbing the sharks just outside:

    [​IMG]

    These Cold Sharks are no joke, and were constantly threatening to kill me. Thankfully, I never actually died (although I got quite close a number of times), and recovering the artefacts was not quite as tedious as I expected:

    [​IMG]

    Having collected a no-longer-functional camera, a no-longer-functional flashlight/torch, and a ripped piece of a spiral notebook, I returned to Taeng, who rewarded me for my efforts.

    I then set out to complete some of Hughes the Fuse’s quests, including Hughes’ New Research, which calls for 100 Poison Poopa’s Poisonous Spikes, and 100 Poopa Eggs:

    [​IMG]

    [​IMG]

    I also needed some Toy Baby Seals for Hughes’ Hobby:

    [​IMG]

    And, some Snorkles [sic] for Hughes’ Weird Invention:

    [​IMG]

    The latter quest awarded me with this stylish cape:

    [​IMG]

    And, finally, I went on to complete Hughes’ Research Material before leaving for Ludus Lake. A nearest town scroll took me to the Aquarium, and a brief chat with the local bottlenose dolphin took me to The Sharp Unknown, from which I climbed the rope in the KFT well (yay for rope speed!) to arrive in the Ludus Lake region.

    So, then I climbed the entire Helios Tower (or rather, took the elevator…) only to fall all the way back down a different tower: the clocktower.

    [​IMG]

    It was time to do Ghosthunter Bob’s quests, including Free Spirit, The Binding, and The Soul Collector! Unfortunately, Clock Tower Monster Wipe-Out doesn’t exist in MapleLegends. But I set out to do the other Ghosthunter Bob quests, as well as teh first part of the Papulatus pre-quests (lol):

    [​IMG]

    [​IMG]

    A deep ludi card! Oooo~

    The harder of the Ghosthunter Bob quests require fighting MDTs:

    [​IMG]

    …and Spirit Vikings:

    [​IMG]

    And so I returned the Ghostbusters can to Bob:

    [​IMG]

    I went to see Assistant Cheng in the Ludibrium toy factory, to retrieve from him some robot parts that Dr. Kim asked for. While I was there, Cheng took me to a surprise JQ:

    [​IMG]

    I was really not in the mood for an annoying JQ, so I tried to leave. It took a bit of fumbling around… to be honest, I thought for a minute that I might be stuck! But I found the way out.

    I headed down the Eos Tower to the Omega Sector, delivered these robot parts to Dr. Kim, and went to retrieve even moar robot parts from some giant metal boxes lying around the Omega Sector:

    [​IMG]

    While I was there, I did the Eliminating Aliens quest:

    [​IMG]

    [​IMG]

    If you’ll remember, many diary entries ago, I featured alces also fighting this same MT-09. The main difference here (besides doing it for a different quest) is in alces’s damage! They grow up so fast!!

    And I completed The Effort to Make-Up, as well as Artificial Combatant Zeno:

    [​IMG]

    [​IMG]

    I only completed Artificial Combatant Zeno up to (but not including) the point of actually killing Zeno itself, as there were no Zenos to be found at that time. I did, however, get lucky with the first Wave Translator that I obtained being the real one.

    I also did the follow-up quest for The Effort to Make-Up, Collecting Meteorite Samples, although that quest basically just consists of walking around and talking to a few NPCs. Similarly, I completed Hoony’s Toothache, which is a simple delivery quest.

    As there were no Zenos to be found for the time being, I headed to KFT. While I was there, I completed(!) the Scholar Ghost card set:

    [​IMG]

    And I hunted some three-tailed foxes for a clue and some tails:

    [​IMG]

    To finish off the Legends of Hometown questline, I needed to take on the 구미호 itself:

    [​IMG]

    At the end of the questline, Chil Nam says this:
    The English Wikipedia article on kumiho claims that kumiho are, traditionally, capable of transforming into beautiful women for the purpose of seducing men and then eating them. The MapleStory version is a little less gruesome, instead taking Chil Nam’s soul (rather than his physical heart, or liver). So we can achieve a happy ending by slaying the kumiho and recovering Chil Nam’s soul.

    And, with the rest of the fox tails that I needed, I completed The Fox Hunt. Chumji explained to me, in very simple terms, how ACPs work:

    [​IMG]

    I also used some of the Seal Meat that I had gathered while completing Hughes’ Research Material to complete Secret Love Affair With Seal Meat (Hidden Street calls this quest “Her Secret Craving for Seal Meat”).

    I then headed back to Aqua Road to finish the Lost in the Ocean quest:

    [​IMG]

    From there, my bottlenose friend took me to the Mu Lung Gardens region, where I completed The Forgotten Master:

    [​IMG]

    …And Eliminating King Sage Cat; I ran into a fellow by the name of jotdu who was card-hunting King Sage Cat, and agreed to kill one of them with me so that I could complete my quest:

    [​IMG]

    To finish up The Forgotten Master, I dropped a single peach onto the bench in Wild Bear Area 1:

    [​IMG]

    Poof. A magical note!

    While I was in Mu Lung Gardens, I snagged a Master Dummy card or two:

    [​IMG]

    And completed the Operation Eliminate Red-Nosed Pirates quest:

    [​IMG]

    I headed back to the Omega Sector to check again for Zeno, and thankfully, it was there this time. So I finished Artificial Combatant Zeno!:

    [​IMG]

    It’s true; neon orange really isn’t alces’s colour…

    And with that, I traveled to the Nihal Desert to do some Ariant quests.

    I used to do the main Ariant questline on every one of my characters, once I graduated from KPQ. Some time ago, I changed that, and I’ve gotten used to skipping it entirely; alces is no exception. So I still had those quests to do, as well as some others in Ariant as well:

    [​IMG]

    I could tell this was made for level 30-ish characters when I killed poor Ardin with just a pair of swift attacks:

    [​IMG]

    More cards popped out as I continued collecting ETCs (and some USE items) for the main Ariant questline:

    [​IMG]

    [​IMG]

    I also completed The Bounty Hunt for the first time in my Maple career, after waiting just a few minutes for a Deo to spawn:

    [​IMG]

    Being a rogue, alces is a master of disguise, which helped immensely in completing First Mission of the Sand Bandits and thus wrapping up the main Ariant questline:

    [​IMG]

    I also completed the For the Little Prince (Pour Le Petit Prince) questline, as well as Queen’s New Make-Up Kit, In Search for His Sister, and Sejan’s Good Habit.

    Now that I had done essentially all Ariant quests, I headed to Magatia to get started on some of those quests — including the main Magatia questline, which is one of my favourite questlines in the game! :)

    [​IMG]

    More questing to come~

    All-odd beepy cue

    I was going to BPQ with STRginner Cortical (xXcorticalXx, SussyBaka, CokeZeroPill, moonchild47), who asked STRginner Permanovice (Battlesage, Dreamscapes) about forming a party. We gathered together in the Exclusive Training Center and tried to get together a team of all odd characters to do a BPQ. Well, as it turned out, it was more like an all-STRginner BPQ… except that I don’t have a STRginner on this server (no, cervid does not count, and she’s too high of a level anyways), and my LUKginner hashishi is smol baby who is not high level enough. So, in the end, we were able to pull together Gumby, Cowbelle (Tabs), and OmokTeacher (Thinks, Slime, Slimu) to form a full party of five STRginners… plus my one daggermit alces.

    [​IMG]

    On our first run, fighting crog actually went better than we expected — out of the six of us, zero of us were capable of taking even a single magical attack from crog (who has a whopping 720 MATK, meaning that a typical magical hit on a fully-armoured character of this level will be around the 4k(!) damage mark), and yet somehow only one of us died! R.I.P. Permanovice ;~;

    [​IMG]

    As we still had five extant party members, we continued on… only to come up against a beast even more foul: Manon. We all fairly quickly fell to Manon’s attacks — well, at least most of us. Gumby, being the absolute tank of a STRginner that he is, survived a good bit longer than the rest of us, so we all took part in cheering him on from our graves:

    [​IMG]

    Alas, Gumby eventually went down as well… not that there was enough time on the clock for him to finish soloing the beast, anyways.

    Our second run was less successful, albeit still worth the same number of points; we were not so lucky with crog the second time around! But it was lots of fun!!

    Diversifying the sadsadgrind

    I did a bit of sadsadgrinding. Readers of this diary will know that “sadsadgrinding” refers to achieving an additional level of sadness on top of the usual sadgrinding — the “sad” in “sadgrinding” refers to me grinding all by myself (usually, but not always, at CDs). Sadsadgrinding takes this one step further, as instead of grinding all by myself, I am grinding with only myself; my pure STR bishop cervid and my darksterity knight rusa make a formidable duo by combining their powers of Healing and of rawring, respectively.

    As I said, ordinarily much of my outlander grinding takes place at CDs. And, in particular, my sadsadgrinding sessions have always been there. But ordinarily, for most folks on MapleLegends, it becomes more profitable EXP-wise (not so much mesos-wise, but that’s okay) to move away from CDs as one’s level approaches the 120 mark. Triple-digit-level characters can often grind elsewhere (again, assuming for simplicity that we only care about EPH), such as Gallos, Petris (Petrifighters are particularly tough, but worthwhile for some classes at level ≥110 AFAIK), Dreamy Ghosts (sometimes known as “Himes”), etc. This latter location, in particular (viz. Encounter with the Buddha), is a popular grinding spot for warriors of all classes (yes, probably even permawarriors, if any got to level ≥100…), often paired with a priest (or in my case, bishop) partner. So it would seem to be a perfect fit for cervid+rusa, who have been stuck at CDs this whole time. So I tested it.

    Keeping in mind that CDs are pretty obviously superior in terms of MPH (mesos per hour), and keeping in mind that Dreamy Ghosts have the distinct advantage of dropping cards, I did some @epm 4 tests (on rusa specifically; cervid’s @epm measurements would be smaller) at both CDs and Dreamy Ghosts, in an attempt to compare them EPH-wise.

    At CDs:
    • 9 926 280
    • 10 822 140
    • 11 172 420
    Average EPH: 10 640 280

    At Dreamy Ghosts:
    • 8 830 080
    • 8 951 040
    • 9 878 400
    • 8 830 080
    …Average EPH: 9 122 400

    That’s roughly a 1.5M EPH disparity in favour of CDs. Unfortunately, this means that CDs are considerably superior both MPH-wise and EPH-wise. And, to be honest, I kind of expected this result. Ordinary priest+warrior combos at Dreamy Ghosts benefit from Dreamy Ghosts being undead, meaning that they take damage from the Heals provided by the priest. This is not the case at all for me; cervid is both INTless and LUKless, so there is absolutely no way that she could muster the MACC required to have a nonzero probability of hitting the Dreamy Ghosts with magical attacks (e.g. Heal), and even if a gamemaster alighted from the skies and blessed me with a +900 MACC buff (not actually possible), cervid’s Heals would do pretty poor damage anyways.

    Furthermore (and perhaps more importantly), moving to Dreamy Ghosts faces the same problem that nearly any odd-jobbed (or, more generally, disproportionately weak) character faces when trying to move away from training spots like those at Taipei 101 (CDs in particular, but also Kid Mannequins, Fancy Amps, etc.). It took me a while to realise this (and it was a bit of a sad realisation, considering that it makes most of my characters damned to eternal brightly-coloured Taiwanese shopping mall hell), but some characters just never (or, almost never) have enough killing power to make more powerful grinding spots (read: usually similar or worse EXP/HP ratio, but overall more powerful, enemies) actually worth it. If we naïvely model grinding so that all enemies have arbitrarily large HP values, but leave their EXP/HP ratios intact, it seems like any MapleStory character ideally grinds at whatever location has monsters with the largest EXP/HP ratio. Obviously, this is not actually the case; it becomes clear at some point when a character outgrows a grinding spot, and more powerful monsters are more appealing (even if EXP/HP ratios are a bit scattered throughout this process).

    A less naïve model looks at, for each grinding spot, the maximum possible EPH that can theoretically be attained. This is done by imagining that every monster is instantly slain as soon as it spawns. Obviously, this is purely theoretical; even a very powerful fourth job mage realistically can’t even get that close to this level of efficiency, in most maps. For characters who can easily one-shot the monsters on the map, their ability to get as close as they can to this theoretical limit is limited by the dispersion of their damage. A character can only make their damage so diffuse; the most powerful mobbing attacks in the game hit a maximum of 15 monsters at once, and all attacks have a finite reach (even so-called “full-map attacks”). Furthermore, the mobility of the character factors into how much they can disperse their damage. And in cases where one-shotting all monsters cannot be taken for granted, we have to take into account something like (basically) the distribution of how much time spent in sustained attacking it takes to slay a given monster, which is, furthermore, a function of various factors like e.g. the skills being used, the character’s stats, the monster’s MAXHP, MDEF, WDEF values, etc.

    Similarly, we can consider the maximum possible aggregate (read: summed across an arbitrarily large number of ideally-positioned monsters, each with infinite HP) DPH that can theoretically be attained by our model MapleStory character. The reason, then, why training spots are easily outgrown (at least, significantly more easily than we would expect from the naïve model mentioned earlier) is because of a few effects:
    • The map is just theoretically better: The theoretical EPH limit on a map naturally keeps actual EPH numbers well below it; if the new map has a considerably higher theoretical limit, this helps give it the edge in cases where the character is approaching the theoretical limit of the old map sufficiently closely. And again, in this context, “sufficiently closely” really isn’t that close to the actual theoretical limit; practical limits are lower (and “softer” in the sense that you can theoretically break them), and perhaps more importantly, the efficiency with which the character’s aggregate DPH is utilised starts to decline as the character approaches even a soft practical limit. Time spent effectively waiting for monsters to respawn (this doesn’t necessarily take the form of not attacking at all — simply fighting a subpar number of monsters, because the character is waiting for more to spawn, still counts towards this) is time wasted (or partially wasted, as the case may be).
    • Relative damage dispersion: Certain maps can be more conducive to damage dispersion (to some extent, this can be dependent on the character’s build). And, furthermore, we don’t necessarily care about the absolute damage dispersion per se; we care more about the damage dispersion relative to the actual locations of the monsters (i.e. the dispersion of the monsters) across the map. Some maps are just more compact, which tends to increase relative damage dispersion.
    • Overkilling: A monster that has x HP remaining and gets hit for y damage such that y > x effectively “wastes” yx damage (thus utilising the character’s aggregate DPH less efficiently). Overkilling to at least some degree is basically inevitable, but more egregious overkilling will result in more significant wasting of the aggregate DPH that could theoretically be output.
    • Threshold effects: A lot of factors go into the very general concept of what I’m calling “(theoretical) aggregate DPH” here. While obviously some of these are measures of the general ability of the character to output damage (their total stats e.g. STR, DEX, INT, LUK, WATK, MATK, etc., what skills they have, etc.), others are “threshold” effects in the sense that a given monster species imposes certain thresholds on those characters who would slay them. In particular, if the character is of a strictly lower level than the monster, then the character takes a penalty (in proportion to the difference between the monster’s level and theirs) to the damage that they deal. There is also a similar penalty for probability to hit, i.e. not “MISS” (with both physical and magical attacks). Another threshold is that of the monster’s WDEF/MDEF, which (in combination with the aforementioned effects) puts a threshold on how much raw damage (i.e. raw damage range) is necessary to deal >1 damage per line. Aside from this hard limit (viz. dealing ≤1 damage per line), as the WDEF/MDEF gets larger (for a given raw damage range), it starts to more strongly dominate the raw damage range, and this causes aggregate DPH (theoretical or otherwise) to decrease nonlinearly. You can, alternatively, think of this as putting a damper (a nonlinear one, at that) on the efficiency with which the character’s raw (i.e. considering only unbuffed level 1 monsters with 0 WDEF, 0 MDEF, etc.) theoretical aggregate DPH is utilised. Thinking of it in this latter way is more useful when considering a particular character (at a particular level), who is comparing two or more grinding maps against one other.
    When it comes to peepee poopoo odd-jobbed characters getting stuck at CDs (or Fancy Amps/Kid Mannes/whatever), the reality is simply that Taipei 101 monsters have extraordinarily high EXP/HP ratios. More powerful characters have issues with:
    • Other maps just being theoretically better, as explained in the first item of the list above. Taipei 101 monsters may have great EXP/HP ratios, but their absolute MAXHP values are just not very impressive. High spawn counts help Taipei 101 here (i.e. increases theoretical maximum EPH), but only go so far.
    • Overkilling, as explained in the third item of the list above. Again, Taipei 101 monsters just don’t have that much MAXHP.
    And yet, threshold effects are much less of an issue for more powerful characters. Taipei 101 monsters are (in this context) quite low level, so their levels are never an issue, and they tend to have pretty pitiful WDEF/MDEF as well. Moving away from Taipei 101, threshold effects become more difficult to efficiently overcome, which poses a serious issue for our peepee poopoo odd-jobbed characters, but not nearly as much for our more powerful characters. For a concrete comparison, let’s look at some of the monster species that I mentioned previously:
    namelocalelevelWDEFMDEFMAXHPEXP/kHP*
    Greatest OldiesTaipei 101764004508 50094.1
    Latest Hits CompilationTaipei 101723003507 90088.6
    Dreamy GhostMushroom Shrine10081058068 00047.1
    GalloperaKampung Village9482054043 00058.1
    PetrifighterSingapore CBD11090060080 00056.9
    As you can see, CDs just have pathetic WDEF values when compared to these other three species. They are also much lower level, have much less MAXHP, and give much more EXP per HP. If your per-target damage just isn’t that high, and you don’t have any fancy tricks to make up for it, the concerningly low MAXHP values of CDs are… not actually so concerning. On the other hand, the much lower EXP/HP ratios and much higher WDEF values of other species like Dreamy Ghosts, Galloperas, etc., are quite concerning. In this case, overkilling the squishy Taipei 101 monsters is never really an issue, and furthermore, other maps might have higher theoretical DPH limits, but when you aren’t even getting remotely close to the usual practical DPH limits, this becomes irrelevant. I’ve experimented with these other three species before, on multiple separate occasions (usually at the recommendation of another player), and I’ve yet to find a case where my EPH was not downgraded from what I would get at Taipei 101. This isn’t so much me complaining†, as it is just giving some theoretical basis (which I most definitely pulled directly out of my ass) for these seemingly strange (and possibly game-balance-breaking, depending on who you ask) effects, by which a character can get “stuck” at a grinding spot even when they seem to have other options ahead of them.

    *I’m using base/raw EXP values here.

    †On the other hand, I could frame the Taipei 101 situation (focussing on myself here) positively: Taipei 101 gives my characters a place to stay, and allows them to make the most out of what they can do. The kinds of EPH figures that I’m capable of clocking at Taipei 101 tend to be very impressive by odd job standards. Then again, I just wish that Taipei 101 wasn’t so hard to look at :')

    capre LF>cardz

    That’s right, folks. Moooooar card-hunting. My woodsmaster capreolina is on the hunt again, in pursuit of… well, hopefully T10 one day x)

    On my way to Aqua Road via Orbis, I took the ship from Ellinia to Orbis. And it was there that I was bless’d with two crogs, which I defeated in exchange for a single lovely card~

    [​IMG]

    I think I’m 2/5 on this set now. Or was it 3/5?

    In any case, at Aqua Road I finished up the rest of the upper Aqua Road sets, which in my case just meant finishing Freezer and Sparker:

    [​IMG]

    [​IMG]

    I then headed to the Omega Sector, via KFT, and started the Artificial Combatant Zeno questline. By the time that I actually had to kill Zeno, I was fortunate enough that there was already one there waiting for me!:

    [​IMG]

    With that out of the way, I card-hunted the Kulan Field baddies: Zeta Gray, Ultra Gray, & Chief Gray (not Barnard Gray, as I was already 5/5 on them):

    [​IMG]

    [​IMG]

    [​IMG]

    I then switched over to the Boswell Field baddies, like Plateon:

    [​IMG]

    And I took a little break to do some beepy queues with IceGrinder (DarkCookie, Buqaneer), Permanovice (Battlesage, Dreamscapes), and babtong:

    [​IMG]

    Then, back to Omega for Mateons and Mecateons:

    [​IMG]

    [​IMG]

    I also did the MT-09 card set. The first sweep that I did (all eight channels, for a total of 24 MT-09 kills) made it seem pretty easy: I already had 4/5 cards. Then I killed another 39 MT-09s… still 4/5. Ouf. Luckily, another MT-09 kill did the trick:

    [​IMG]

    And with that, I was done with the Omega Sector. So, off to El Nath I went, to pick off some of the easier El Nath card sets!

    I stumbled across some White Fang and Hector cards o_o:

    [​IMG]

    A trip up the mountain took me to Riche’s domain; I did nearly a full sweep (killing a total of 23 Riches), only to obtain… a single card. Now, luckily I was already 3/5, so this took me to 4/5. Coming back later was enough to get that pesky 5/5:

    [​IMG]

    And while I was there, I got the Coolie Zombie set:

    [​IMG]

    I remembered that once I leveled up, I would need an SE20 to allow me to dump all 3 SP into SE. So I bought one. And passed it!:

    [​IMG]

    Nice ^^

    Oh, and, speaking of Riche, there’s another card-dropping anti-bot monster that spawns in El Nath: the Snow Witch.

    [​IMG]

    And, deep inside of the volcano around which the Dead Mine is constructed, I arrived at The Caves of Trial:

    [​IMG]

    (I finished the Firebomb set in Showa Town.)

    [​IMG]

    [​IMG]

    And while waiting for more Snow Witches to spawn so that I could finish that set, I headed back to Watch Out for Icy Path I to get the Jr. Yeti set:

    [​IMG]

    And I went to The Crown-Flyer to get the Pepe set as well:

    [​IMG]

    Besides being the only map in the game that spawns Pepes, I also like the name of this map. The “Crown” in “Crown-Flyer” presumably refers to the crowns that the Pepes wear, and the neat little isosceles ski slopes that can be found around this small map presumably make those crowns fly, if the Pepe ascends a slope at a sufficiently high speed…

    And, with the Snow Witch and Pepe sets out of the way, I decided that was enough El Nath for now. So I headed to Malaysia to card-hunt the species there. First up were Emo Slimes and Chlorotraps:

    [​IMG]

    [​IMG]

    I took this opportunity to do the Malek’s Joy of Music questline, which is amazingly profitable fame-wise: 26 fame total, if you complete the entire questline!

    Then, Oly Olys and Dark Fissions:

    [​IMG]

    [​IMG]

    The associated questline here is Chee Wee’s Worries, which is… not as good. It’s pretty bad. Unless you really want those 20 Screws…

    And finishing that Dark Fission set brought me to 210 completed sets overall!

    [​IMG]

    Tier 7!!!! Yey!!!!!!!

    panolia attempts moar MPQing

    I joined an MPQ group on my permarogue panolia. I joined the party of I/L mage MyDNA, priest MilkFactory, and chief bandit Considerada. We had a good run or two:

    [​IMG]

    Although, unfortunately, we were playing through some pretty bad server lag. Eventually, it came to a head, and an unplanned server restart was scheduled while we were just starting stage four of an MPQ. Because the restart was scheduled to be in 15 minutes or so, we thought that we might have enough time to finish our MPQ, if we were quite swift about it. MyDNA and I made it to the top of stage six at roughly the same time, and I asked MilkFactory (who was the leader of the party) to pass the leadership to me so that I could start the fight immediately, instead of waiting for MilkFactory and Considerada to both finish stage six as well. Of course, I had momentarily forgotten that party leadership can only be transferred between characters who are in the same map — but it turned out not to matter anyways, as MilkFactory disconnected before ever finishing stage six, and we were thus all booted out of the PQ. Oh well; at least that ensured that I could definitely log off safely…

    Moar be peekyooz

    And finally, here are some more of the BPQs that I did :)

    I did a pair of BPQs on my vicloc dagger spearwoman d34r, with fellow viclocker (and husband) xXCrookXx (Level1Crook, Lv1Crook) and STRginner Cortical (NoMoreStars, CokeZeroPill, SussyBaka), during which, I found something out about my spouse…

    [​IMG]

    Oh, and I also looted a forbidden card:

    [​IMG]

    My Monster Book is forever tainted. u_u

    I also did a pair of BPQs with Cortical on my I/L magelet cervine:

    [​IMG]

    During which, I made GishGallop (Cortical) solo the Dyle stage as I Teleported around and screamed:

    [​IMG]

    And I also did some BPQs with a party consisting of me (as d34r), xXCrookXx, permapirate Copo (Bipp, Celim, Sommer, Fino, Sabitrama, Vicloc, Gets), daggermit Keppet (Rapskal), and assassin 2GirlsOneCup:

    [​IMG]

    We did a pretty good job of fast eight-point runs, although we did encounter just one slight hiccup when Lord Pirate unexpectedly took to the skies:

    [​IMG]

    Spooky. Luckily for us, Lord Pirate could not sustain flight for very long, and came back to the ground, where we all collectively beat the living shit out of him. Good times.
     
    • Great Work Great Work x 2
    • Like Like x 1
  7. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    (You can also read the original diary entry here, and/or read the diary entry on the Oddjobs forum.)

    rangifer’s diary: pt. lxv

    Taxonomising odd jobs, pt. iv: Microtaxonomy & encodings. §1

    In the previous part of this series (“Taxonomising odd jobs, pt. iii: Exploring the space of possible taxonomies”), I considered what the structure of an odd job taxonomy could look like, and also investigated some formal (and semi-formal) methods that we might want to use for creating such taxonomies. However, throughout that entire part, I assumed that we already have a notion of discrete odd jobs, i.e. some finite set consisting of objects called “odd jobs”, each one of which has a distinct encoding* into some metric space (which, if we’re lucky, is also a vector space). For certain strategies (viz. explicitly constructing a tree by hand), the metric is not so important, so formalising an encoding is not necessary per se. However, even in this seemingly simpler case, we are still imposing the restrictions that our finite set of odd jobs is indeed finite, has a cardinality of at least two, and that — importantly — each member of the set is a well-defined “odd job” that exists on the same conceptual level as, but is distinct from, every other member of the set, in a way that is more or less analogous to the biological notion of “species”.

    This more general, looser set of requirements doesn’t have anything to do with metrics or any fancy stuff like that, so it might look like an ordinary, structureless set from the outside. But be not fooled: such a set has a vast amount of structure tucked away within it, and this inner ontology is, arguably, just as important as the outer structure that we ultimately want to impose with our taxonomies. Again referring to the biological case for the purpose of analogy, this “inner ontology” is known in biology as the species concept. Briefly, a species concept defines what a biological “species” even is. The study of species concepts, and how to organise real biological organisms into them, is known as microtaxonomy — hence the title of this part. Microtaxonomy is perhaps lesser known than its macrotaxonomy counterpart, because for many practical purposes, a handful of practical guidelines for delineating species tends to do the trick, making the boundaries between species “obvious”… except when they’re not. Nevertheless, microtaxonomy is deeply contentious, with there being one understanding of species concepts for each biologist/philosopher who has ever studied the subject. Quoting a 2003 paper by Massimo Pigliucci† (hyperlinks mine):
    In our case, the subjects (odd jobs) are not — and are not composed of, nor intended to represent — natural physical entities, unlike in the biological case. The closest thing that we have to “empirical evidence” falls, roughly, into two categories:
    • Concrete game-mechanical distinctions that are either:
      • explicitly put forward by the game,
      • or tacitly (i.e. never explicitly explained, nor even named, in a way that the player is exposed to) enforced by the game’s programming.
    • Historical distinctions, as explored in a previous part of this series: “Taxonomising odd jobs, pt. ii: Building up a modern perspective”. These distinctions, should we choose to respect them in one way or another, count as “empirical evidence” in a kind of anthropological sense.
    And, much like in the biological case, the union of these things still leaves many gaping holes. Simply having the evidence does not magically produce a microtaxonomy, and likewise, we will need to put in the philosophical hard work to arrive at the kind of finite set mentioned in the first paragraph of this section.

    Luckily, we at least have some starting points for this task. One obvious point of reference is the list of odd jobs on the Oddjobs website, which I created and curate. Another comes from a previous part (pt. ii) of this series, in which we considered some of the earliest recorded evidence of odd jobs — to quote from the conclusion of said part:
    As another few points of reference, we have yet more lists of odd jobs. Both predate the Oddjobs one:
    And, in the end, we will need to come up with one or more encodings of these odd jobs (with a metric, and all that jazz) so that we can apply our numerical/statistical methods as well.

    *In this context, an “encoding” doesn’t necessarily refer to coding in the technological sense (although it could), but rather, it just has to be a formalisation of some kind.

    †M. Pigliucci, “Species as family resemblance concepts: The (dis-)solution of the species problem?”, BioEssays, vol. 25, no. 6, pp. 596–602, May 2003, doi: 10.1002/bies.10284. | PhilPapers

    More ToT w/ cervid, xBowtjuhNL, & Gruzz

    In pt. lxiii of this diary, I talked about going to the Temple of Time (ToT) for the first time, alongside Gruzz, xBowtjuhNL, ducklings, and Harlez. I played as my pure STR bishop cervid, and we did the first handful of quests in the ToT questline to unlock the first few maps. Well, this time, I continued along that same questline with Gruzz and xBowtjuhNL:

    We had to finish massacring — I mean, subduing — 999 Chief Memory Guardians:

    [​IMG]

    With yet another 999-kill quest done, we got a new kind of quest: to kill an area boss, viz. Dodo. This Dodo is not a bird, but rather a whale:

    [​IMG]

    This airfaring (as opposed to seafaring…) whale wears a spiked helm atop its cranium, has 5.9M MAXHP, and a fairly hefty magical attack that can hit for over 4k damage. In fact, after being hit by the thing several times, I was so surprised by an attack that was suddenly stronger, that I died (oops!). I rushed back to the map to take on this thing for real, with my party members:

    [​IMG]

    With Dodo slain, in order to continue the questline, we had to meet up with the Memory Keeper:

    [​IMG]

    The Memory Keeper wears a blindfold and has what is, apparently, a prehensile beard… although I’m not sure exactly what it’s holding. A telescope? Surely not with a blindfold… Maybe a loudhailer? After all, it is pointed at his mouth, not at his eyes (or rather, his blindfold)…

    In any case, the Memory Keeper instructed us to go back to the beginning, where it all began. I suggested reinstalling the game, but instead, we went back to our first job instructors to talk:

    [​IMG]

    I was relieved to hear that Grendel was happy to see what I had become. I had come to fear that maybe Grendel would be disappointed at how much time I had spent at the gym, instead of studying magical spells. I have some bad news about my ability to effectively use the Energy Bolt spell, however…

    With that, we unlocked a whole new frozen area of the Temple of Time, and resumed business as usual. Time to kill 999 Qualm Monks!

    And, just as we were finishing up those 999, cervid hit level 124!!:

    [​IMG]

    :D

    A lil viclockin’

    My vicloc dagger spearwoman, d34r, and her vicloc bandit husband xXCrookXx (Sangatsu, Level1Crook, Lv1Crook) have developed somewhat of a ritual of APQing once daily, and BPQing afterwards. Of course, this can only last for the duration of the current summer event, as BPQ is a summer event exclusive. But APQ is forever…

    And, after completing such a ritual one day, we headed to TfoG to duo grind 23% or so EXP for xXCrookXx, so he could level up. With no special buffs whatsoever (no GM buffs, no Echo), I tried an @epm 4, and was pleasantly surprised to see the result!:

    [​IMG]

    I also took a snapshot of d34r’s ETC inventory — this is slightly outdated at the time of writing, but gives an idea of what it’s like to be a Victoria islander who has a penchant for keeping anything that might… be useful… for someone… eventually:

    [​IMG]

    The non-vicloc items (Flask, Yellow Belt, Wires) were obtained legitimately via BPQ, and are kept as a keepsake from this event :)

    And I’ve continued training my vicloc clericlet, d33r. As detailed in the previous diary entry, I have been training at Line 3 Construction Site: B2 <Subway Depot>, which requires completing the entire B2 jumpquest (JQ) each time that I want to train there. I kept track of my approximate completion times for the JQ, and I can now add to that list with some more times. Below is the new list:
    1. 12.5 minutes
    2. 9.2 minutes
    3. 7.5 minutes
    4. 5.5 minutes
    5. 6.0 minutes
    6. 8.0 minutes
    7. 5.3 minutes
    8. 5.5 minutes
    9. 5.7 minutes
    Which does somewhat improve my best time so far, from 5.5 minutes to 5.3 minutes.

    The Jr. Wraiths that spawn there drop three kinds of ores: Power Crystal Ores, Adamantium Ores, and Opal Ores. Again, this is a little outdated at the time of writing, but even after NPCing a number of Power Crystal Ores (as this is their only use in vicloc; they cannot be used for crafting), I had a rather impressive stash:

    [​IMG]

    Most recently, I duoed the B2 Subway Depot for the first time; previously, I had always grinded there solo. xXCrookXx’s I/L LPQ mule Sangatsu joined me there:

    [​IMG]

    Although Sangatsu deals far more damage than d33r (using Thunderbolt), an @epm test ironically revealed that I was actually getting worse EPH there than I would get solo… But oh well, the EPH was still pretty good, and it was great to have company in my lonely napkin dungeon!

    alces & xX17Xx doing the main Magatia questline~

    I invited permarogue extraordinaire xX17Xx (drainer, partyrock, attackattack, strainer, technopagan) to do the main Magatia questline (the one that begins with A Deal with the Broker and culminates in For Phyllia*) with me, as xX17Xx has been trying to do quests for EXP (as an alternative to killing Fancy Amplifiers all day…), and was not previously aware of the main Magatia questline. I mentioned that I had only just barely started it on my daggermit, but I had done the questline multiple times before, and commented that it’s one of my favourite (if not my favourite) questlines in the game. xX17Xx was intrigued, and so she came to Magatia to start the questline.

    As it turned out, she had (sort of) already started the questline some time ago (level 3X or so), at least far enough to get the level 35 Alcadno’s Cape and Zenumist’s Cape. But, for better or worse, the level requirements for this questline are quite spread out — the initial quest is level ≥30, whereas finishing the final quest requires level ≥75. So xX17Xx didn’t realise, at the time, that the questline continues, and threw away the level 35 capes. So we had to get those back, which required doing Re-acquiring Zenumist Cape and Re-acquiring Alcadno Cape, more or less entailing a run to the Free Market for some jewels.

    Then we started the questline in earnest:

    First was Russellon’s Items for Experiment, which meant killing Triple Rumos for their leaves:

    [​IMG]

    And Helping Out Bedin, which entails killing Dark Sand Dwarves for their Flaming Deserts.

    Then, Destroy the Roid!:

    [​IMG]

    And likewise, for the Zenumist side, we completed Getting in the Way of Alcadno, which requires killing not Roids, but rather, Reinforced Mithril Mutae. These things are a slight oddity, as they only spawn in one map — area A-1 of the Alcadno Research Institute), which is a dead end — their ETCs (Hardened Piece of Mithril) are not used for anything in the game†, and their only other appearance in the game besides this quest is another Magatia quest (Yulete’s Request), in which they are stronger and have a different name: Obstacle Mutae.

    [​IMG]

    Then, An Incident, and the Missing Alchemist, which required us to seek a secret document within a very dark room:

    [​IMG]

    This is followed immediately by Zenumist and the Missing Alchemist, in which Carson transported us into the Closed Lab (unfortunately, it’s instanced, so we were in different copies of the same map) where we were stuck until we could recover a Magic Device from the special Homun that spawn in there:

    [​IMG]

    I had, in the past, had rather poor luck with getting this thing to drop. Luckily for us, we both had pretty good luck and were not in there for very long. The Closed Lab also has a facility for sucking the light out of these devices, producing the Lightless Magic Device that we needed for the quest.

    Then, Alcadno and the Missing Alchemist, which involves paying a visit to Eurek, the wandering alchemist. Being a wanderer, Eurek can be found variously in Sleepywood, Ludibrium, Leafre, and El Nath. It was this last location in which we met Eurek, as we also wanted to see Alcaster to complete Acquiring the Seed for the Snowfield Rose for the purpose of completing the Humanoid Just Wants to be Human questline. Acquiring the Seed for the Snowfield Rose requires cleaning up some Leatties, so that’s what we did:

    [​IMG]

    [​IMG]

    And we headed back to Magatia to visit Parwen in Authorized Personnel Only. There was a Security Camera there, which we quickly dispatched, and which was kind enough to gift us a card:

    [​IMG]

    In the process of visiting Parwen, we completed Parwen’s Lab by killing 200 Sites‡, and also did the The Secret, Quiet Passage questline to gain access to Secret Basement Path (and the maps that it leads to).

    We talked with the wife of the missing alchemist, Phyllia, who didn’t believe us when we said that we had talked to Dr. De Lang via re-living the disembodied memories of a ghost that we found in a corner of the Alcadno laboratories. Frankly, I don’t blame her. So we broke into Dr. De Lang’s house and started indiscriminately rummaging around in search of something that would make Phyllia believe us, and hopefully make her less mad about the fact that we burgled her husband’s house for no apparent reason. Thankfully, we found that something: Phyllia’s Pendant.

    With this, we had earned Phyllia’s trust, and she sent us back to the house with a special password (my love Phyllia), which we used to uncover Dr. De Lang’s Secret Book and place the pendant inside:

    [​IMG]

    This caused the book to unlock itself, revealing itself to be a short manuscript, which we had to travel back to El Nath to decipher. Alcaster told us that parts of this manuscript had writing in a kind of invisible ink that could only be revealed through the use of highly advanced alchemy. Unfortunately, neither I nor xX17Xx as master alchemists, so it looked like we were out of luck.

    But Alcaster then went on to mention that there was another, easier way to read the writing: just pour a bunch of blood on it. Ah, but not just any blood: Homunsculer’s Blood. So we went back to Magatia to find these blood-filled beasts:

    [​IMG]

    While we were there, I came across a stray Deet & Roi:

    [​IMG]

    And we went back to Alcaster, who demonstrated the dousing of the manuscript in Homunsculer blood, thus revealing the manuscript’s full contents. The manuscript is a personal log/diary that Dr. De Lang kept, and contains some juicy details. As it turns out, all of Magatia is founded on the dark alchemy of The Black Magician: Zenumist, Alcadno, everything. As usual, this is some very evil, but very powerful, stuff. So when Dr. De Lang wanted to extend his own life so that he would never have to leave behind Phyllia (who is a fairy, or something like that, and never dies, or lives for a long time, or whatever — you get the idea) and their half-fairy(?)-half-human child, the whole black magic thing seemed kinda sweet. Unfortunately, this led De Lang to blow everything up and ruin the town of Magatia.

    Luckily, Alcaster had an idea to fix up Magatia. By collecting a bespoke triad of magical stones associated, respectively, with three virtues (humility, honesty, and trust), we could… uhm… ameliorate(?) the trigram (presumably used for nefarious alchemical purposes) located in The Black Magician’s laboratory and restore Magatia to its former glory. Alcaster was kind enough to provide us with the stone of humility, which meant that we only had to retrieve a stone of honesty from Homunculuses, and a stone of trust from D. Roy.

    I actually had already gotten a stone of honesty earlier, when we fought some Homunculus for an earlier quest in the questline. But xX17Xx still needed one, so we went back to unit 203 of the Zenumist Research Institute and got her one:

    [​IMG]

    …Which leaves only the issue of actually finding D. Roy and getting two Magic Stones of Trust from them… Stay tuned for the end of this questline~ :)

    *The questline can also, alternatively, culminate in either For Zenumist or For Alcadno. But these other two endings are… less desirable. The level 80 capes are actually not terribly bad (although none of their benefits go towards DPS; no STR/DEX/INT/LUK, no WATK/MATK, and just the usual 5 slots), but the much lower EXP reward and the lack of fame reward just isn’t worth it. Plus, are you really gonna do my homegirl Phyllia dirty like that?

    †Later versions of MapleStory have a special ETC item called Shovel which is used for the Keol’s Order #3 quest, and requires 30 Hardened Pieces of Mithril to craft using the Maker skill. Also, I found a quest called Stability in Magatia that requires 90 Hardened Pieces of Mithril, and is part of a game called “MapleStory M”, which I guess is a mobile version of MapleStory? News to me.

    In MPQ, these are called Cytis.

    capre… hunts… more… you guessed it: cards

    It’s time for moar card-hunting with my woodsmaster capreolina~!

    Last time (q.v. the previous diary entry), I left off by finishing both of the card sets in Muddy Banks 1: Oly Oly and Dark Fission. So, I ventured forth to Muddy Banks 2 to get the Rodeo set:

    [​IMG]

    Then, onward to Muddy Banks 3 to get the Charmer set:

    [​IMG]

    Now, it was time to kick things up just one notch, with the Fantasy Theme Park region of Kampung Village. The eagle-eyed reader may notice some funky things going on with some of the screenshots here; for some reason, the Fantasy Theme Park region (much like many Orbis maps) doesn’t play well with my setup, so I have to crank the graphics quality all the way down to make the game’s framerate work out. In any case, the first Fantasy Theme Park map is Hibiscus Road 2, which is home to Scaredy Scarlions:

    [​IMG]

    …and Ratatulas:

    [​IMG]

    Then, on to Fantasy Theme Park 1 (which is, confusingly, not the first Fantasy Theme Park map at all). This map has Jester Scarlions and Froscolas, but there’s a nifty minidungeon — accessible through Fantasy Theme Park 3 — called Longest Ride on ByeBye Station that makes it easier to hunt these two species:

    [​IMG]

    [​IMG]

    Then, it started to actually get more difficult, as I went back to Fantasy Theme Park 2 for Yabber Doos:

    [​IMG]

    These things refused to give me any cards whatsoever for like 45+ minutes, but eventually they started to cough ’em up.

    I already had (thank god) 2/5 on Booper Scarlions (also found within Fantasy Theme Park 2) because I had done the Scarlion/Targa prequests before on this character (documented in previous diary entries). So finishing them was a little easier as a result:

    [​IMG]

    Then, onward to Fantasy Theme Park 3 to hunt the Vikerola set. This is where they start to simply get much harder to kill for me: 36k MAXHP, 820 WDEF, and a penchant for spamming heals in a large radius. Additionally, Vikerolas’ hitboxes expand quite a bit during each attack, which can be a pain in the ass for ranged combatants (who magically become melee combatants as they start bow-whacking, claw-punching, and buffaloing):

    [​IMG]

    …But I did finish them! And so, on to the final card set of Malaysia (not counting Scarlion and Targa…): Galloperas. (I was already 1/5 to begin with, which was nice):

    [​IMG]

    And I only died once in the process! Cool~

    With Malaysia all wrapped up, I headed to Ellin Forest to finish up the card sets there. I had already obtained quite a few cards long ago, when I did the Ellin Ring questline on capreolina. In fact, I already had the Mossy Snail set completed. But the others were in need of completing, so I headed to finish the Tree Rod set:

    [​IMG]

    And the Mossy Mushroom set:

    [​IMG]

    Plus, the Primitive Boar set:

    [​IMG]

    And last, but not least, Stone Bugs. This was the only somewhat painful one, as it took me quite a while to get them to cough up a card. But I did finish it eventually:

    [​IMG]

    With the Ellin Forest fully completed (except for BBRM, which I have at 3/5… F4), I went to Zipangu to do the cards there. First up was Crow:

    [​IMG]

    Crows fly around aimlessly, making them a little difficult to deal with, but thankfully I had Arrow Rain and Arrow Bomb on my side.

    I then headed over to the Forest of Animals for Cloud Foxes and Fire Raccoons:

    [​IMG]

    [​IMG]

    And then, to A Night in the Forest for Big Cloud Foxes (a.k.a. “Dark Cloud Foxes”, as they are the exact same size as normal Cloud Foxes anyways…):

    [​IMG]

    …and Paper Lantern Ghosts:

    [​IMG]

    Then, the Vanished Village for Water Goblins:

    [​IMG]

    (I already had 5/5 Samiho as a result of card-hunting at KFT.)

    Now, it was time for the most difficult (at least, in terms of actually fighting them) card-bearing monsters in Zipangu, with the exception of Black Crow (which spawns in the same map on a 23-hour timer…): Dreamy Ghosts (a.k.a. “Himes”).

    [​IMG]

    Midway through card-hunting these, I had already chewed through 1.5k Chicken Rices… so I had to restock. But I did, eventually, get that precious 5/5 (and again, only died once in the process! Wowie~)!

    And now, it was time for the (apparently) most difficult non-boss card set in Zipangu: Nightghosts. I know that Cortical (CokeZeroPill, SussyBaka, GishGallop, MageFP, WizetWizard) had an extremely hard time with this set (I took a trip to A Desolate Cemetery on my darksterity knight rusa to help them out), and at least one other person told me that they gave up when Nightghosts didn’t appear to drop cards at all. But I figured I’d at least give it a whirl:

    [​IMG]

    Nice! This set wasn’t exactly easy (and of course, I didn’t expect it to be), but I did finish it~! That left just one last set (as I was definitely not planning on getting the Black Crow set…): Lucida.

    [​IMG]

    While I was at Hall of Mushroom hunting these things, I took a break to do a special summer activity: booming PSBs! The PSB is a particularly important weapon for my darksterity knight rusa, as (unlike most polearms) it has no STR requirements — indeed, no stat requirements at all. I had been using a 111 WATK and 4 STR one from the previous summer event — I had hoarded three and boomed/ruined two of them, so that was all that I had left. Well, fast-forward to the current summer event, and fast-forward through me throwing 97M(!) mesos into the void, and I made this thing:

    [​IMG]

    Not bad! It remains to be seen how greedy I want to be (is 116 WATK enough for me?? Or do I impoverish myself for 117 WATK???), but this is at least a solid upgrade for now! I put it to the test on these Lucidas (using just self-buffs, Cider, and Echo):

    [​IMG]

    o_o

    In any case, I finished the Lucida set, meaning that I could leave Zipangu 5ever. Speaking of cards, xXCrookXx has been kind enough to give me the excess area boss cards produced in the process of generating vicloc goodies:

    [​IMG]

    [​IMG]

    [​IMG]

    These cards are especially important to me, as I have (for my entire card-hunting career) self-imposed a rule to never kill area bosses that are used for quest(s)… unless I need to for the purpose of a quest (or if I’m a viclocker, as area bosses are a very special resource for viclockers, for obvious reasons). This is as a direct result of my own frustration, due to being unable to complete quests due to card-hunters. Rather than inflict that same punishment on other questers for my own card-hunting ease, I just skip those sets. But being able to look viclockers’ cards helps this!

    Since I was just in Zipangu for some card-hunting, I took a little detour back in time to Ninja Castle, to do the one card set that I actually wanted from this region: Genin.

    [​IMG]

    I’ve card-hunted here (during the last St. Valentine’s event, on my pure STR bishop cervid; see previous diary entries) before, and I’m well aware that Genins are the only reasonable card set here. Everything else has an abysmal card drop rate, so — at least for now — I took my Genin 5/5 and got the hell out.

    Next, I wanted to at least try to take on the Ulu City region of Singapore. The monsters here get really tough, so I figured that I may want to give up halfway through, or something like that… In any case, I started out in Ulu Estate I with Veetrons:

    [​IMG]

    …and Berserkies:

    [​IMG]

    But I’ve only just started, so I think I’m still 1/5 on both of these critters. More critters next time~

    Bepeak yous

    And now, ’tis time for the staple of summer event: beep e-queues!

    Not technically related to BPQ, but before I BPQ’d on my darksterity knight rusa, I did a sadsadgrinding sesh at CDs with cervid+rusa until woosa hit level 125~!:

    [​IMG]

    Nice :D Now it was time to beepy cue with the gang. With xBowtjuhNL, Gruzz, Harlez, Eoka, and STRginner ducklings (not pictured here, as crog proves to be a difficult boss to survive through):

    [​IMG]

    Take that, Levi!! Although my zerk threshold is still rather low (5.5k), I did manage to briefly zerk against Levi (without really making a concerted effort to) a few times, when my HP happened to land around the safe zone where my HP < 5.5k, but I still knew that Levi wouldn’t kill me.

    And here I am, fighting Levi in BPQ yet again — but this time, as my woodsmaster capreolina, alongside a team of random folks (xMAGiEx, s1uTpr1ncess, Jiwie, 2001, & Snoopii) who I met by responding to a smega:

    [​IMG]

    It was in this BPQ that I learned (thanks to s1uTpr1ncess explaining it to all of us) that one of Levi’s magical attacks (viz. the one for which its eyes glow orange) can be dodged, by jumping into the air at the right time. I admit that, even with this knowledge, I probably only dodged 40% or so of said attacks, thanks to my attacks causing me to be unable to jump for a while afterwards (and thanks to me being bad at the game).
     
    • Like Like x 2
    • Great Work Great Work x 2
    • Friendly Friendly x 1
  8. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    (You can also read the original diary entry here)

    rangifer’s diary: pt. lxvi

    Taxonomising odd jobs, pt. iv: Microtaxonomy & encodings. §2

    In the previous section (§1) of this part, I introduced the notion of “microtaxonomy”, comparing our situation of determining exactly what makes up our “set of all odd jobs” with the biological problem of determining what a “species” is. I also suggested the following three lists as points of reference for this task:
    Using my own list as the baseline, I want to outline the exact differences between my list (at the time of writing) and the other two linked above. I then also want to compare my list with the findings from pt. ii of this series (“Taxonomising odd jobs, pt. ii: Building up a modern perspective”).

    Comparing to “General List of Experimental Classes”

    So, the first and most obvious difference here is that GunDelHel actually produces two lists here: a list of post-Big-Bang (henceforth “post-BB”) odd jobs, and a list of pre-Big-Bang (henceforth “pre-BB”) odd jobs. My list only includes pre-BB odd jobs — and, admittedly, is biased towards classes that are available in MapleLegends (read: v62 of GMS). As mentioned above, this list actually dates back to 2010-01-13, which is prior to Big Bang; Big Bang was originally released in KMS during 2010-07*, and wasn’t released in GMS until 2010-12-07†. However, GunDelHel continued to update the list through Big Bang (up until sometime during 2012, I think), so the final revision is what we have now. We’re going to restrict our view to pre-BB, but it’s worth noting that although Big Bang did change the game mechanics a lot, which made many odd jobs no longer appealing or simply impossible to make, Big Bang still offered the ability to make odd jobs, even including a few new ones!

    When it comes to permabeginners, GunDelHel recognises the following jobs:
    • Camper
    • Islander
    • Perma-beginner
    • Perma-noblesse
    • Perma-legend
    • Evan-ginner
    • Wand-ginner
    This last one (“wand-ginner”) is listed separately, although its description indicates that it is merely a variant of any given one of the other permabeginner jobs. Comparing this to my own list (again, at the time of writing):
    GunDelHel’sOddjobs’s
    CamperCamper
    IslanderIslander
    Perma-beginnerSTR beginner
    Perma-noblesseSTR beginner
    Perma-legendSTR beginner
    Evan-ginnerSTR beginner
    Wand-ginnerWand beginner, Magelander
    [none]Besinner
    [none]DEX beginner
    Campers and islanders translate nicely here. GunDelHel’s “perma-beginner” is, in contrast to campers & islanders, off-island — but it excludes off-island variants like besinner and DEX beginner, settling instead on what my list calls “STR beginner” (usually “STRginner” for short). Perma-noblesse and perma-legend are covered by the “STR beginner” entry on my list, which lists aliases like “Permanoblesse” and “STR Permalegend”, and notes:
    Evan-ginners are not interesting; they could only be created as the result of a short-lived exploit/bug, and they are essentailly identical to off-island explorer permabeginners, besides showing up as “Evan” instead of “Beginner” in-game.

    When it comes to warriors, we have:
    GunDelHel’sOddjobs’s
    Perma-first job warriorPermawarrior
    STRless DEX warriorDEX warrior
    HP warriorHP warrior
    LUK warriorLUK warrior??
    Dagger fighterDagger warrior dagger page ∖ dagger spear(wo)man ∖ dagger permawarrior
    STRless aranDEX warrior
    Wand warriorWand warrior
    The warriors translate pretty well, for the most part. LUK warriors are a bit of a pain here — GunDelHel appears to be using the definition of “LUK warrior” that we investigated in pt. ii of this series (see “LUK Warrior” (archived)). This definition assumes that the LUK warrior is mostly STR-based (like an ordinary warrior), but stays DEXless, and adds some AP into LUK as necessary for WACC (and AVOID). According to my view, STR-based warriors are non-odd unless they have something else about them that is odd (e.g. a STR-based permawarrior). So the definition of “LUK warrior” on the Oddjobs website defines them as being DEXless and STRless (analogous to DEX warrior). GunDelHel excludes dagger pages/WKs/paladins, dagger spear(wo)men/DKs, as well as dagger permawarriors from their definition of “dagger fighter”. And GunDelHel lists “STRless aran” separately from “STRless DEX warrior”, similarly to the situation with “perma-legend” above.

    When it comes to mages, we have:
    GunDelHel’sOddjobs’s
    STR mageSTR mage
    INTless mageMagelet
    Pure LUK F/P mageMagelet ∖ clericlet/priestlet/bishoplet ∖ I/L magelet ∖ permamagicianlet
    Pure one-element[none]
    Perma first job magePermamagician
    STR evanSTR mage
    [none]DEX mage
    [none]Gish
    STR mage??Gishlet
    For some reason, GunDelHel separates out F/P magelets from other types of magelets. We also have the similarly suspicious “pure one-element” job, which is just any mage that restricts themselves to a single element (e.g. only using ice spells & elementless spells). This is a cute idea for a mild challenge run, but I’m going to ignore this one going forward — I don’t think there’s any way to make this into an “odd job” in our sense. “Experimental class” sounds fine to me. GunDelHel splits out STR evans from the rest of the STR mages, like “STRless aran” and “perma-legend” above. And finally, DEX mage, gish, and gishlet have no real analogues in GunDelHel’s list. The closest that we get is when GunDelHel says:
    This suggestion seems to imply base stats of x/4/20/y (STR/DEX/INT/LUK), with LUK lending some WACC and MACC, which would meet my definition of “gishlet”. However, it seems that GunDelHel would not make any such distinction, lumping such mixed mages together in the “STR mage” pile. As we saw in pt. ii of this series, this is not uncommon.

    When it comes to archers, we have:
    GunDelHel’sOddjobs’s
    WoodsmanWoodsman
    BowginnerBowginner?
    Perma first job archerPermarcher
    Bow-whackerBow-whacker
    Archers are where my list and GunDelHel’s agree most clearly. The only slight discrepancy is with bowginners. GunDelHel’s description is a little underspecified for our purposes (and for the purposes of my own list). GunDelHel’s description gives us the usual intuitive notion of what a bowginner is:
    Unfortunately, the phrase “use no skills” is doing a lot of heavy-lifting here. Many people understand this to mean “use no attacking skills”, meaning that active skills which are just buffs (Focus, Booster, Soul Arrow, SE, MW, Concentrate) are fair game, and so are passive skills (The Blessing of Amazon, The Eye of Amazon, Critical Shot, Mastery, Final Attack, Thrust, Mortal Blow‽, Expert). Others would understand the word “use” to refer to active skills in general, thus excluding the buffs. And yet, even when excluding all active skills entirely, we are left with a “beginner who can use bows” that somehow has access to passive WACC bonuses that stack with everything, passive critical hits on 50% of attacks, 60% (or more) mastery, Final Attack, passive SPEED bonuses that stack with everything, etc. Perhaps most worrying is Mortal Blow, which passively causes some (70% of) close-range attacks to deal 250% damage, including a chance to instakill its target. So, when adding bowginner to the list of odd jobs on the Oddjobs website, I thought a lot about how to add it (and consulted with Cortical), and settled on a definition that bans all skills (passive or not), with the sole exception of The Eye of Amazon. This (in my opinion) retains the spirit of “what if beginners could use bows?”, because the only ≥1st grade skill that doesn’t give a weird advantage compared to beginners is just The Eye of Amazon — all it does is increase reach (not to be confused with “range” as in “damage range”), which was kinda the whole point of equipping a bow/crossbow in the first place. Of course, bowginners don’t have to put SP into The Eye of Amazon; we categorised those bowginners who are truly SPless as “pure bowginners”, a subjob of the bowginner. Because all SP accumulated from level 10 to level 30 (viz. 61 first-grade SP) must be spent in order to take second grade advancement, and because second grade advancement gives a MAXHP boost, we decided to define bowginners as necessarily being permarchers as well. However, I would consider loosening this restriction; it is possible to simply spend excess SP on active skills and just never use them, and while the extra MAXHP does push bowginners further away from true permabeginners, even permarchers already have a MAXHP advantage over permabeginners anyways.

    When it comes to thieves, we have:
    GunDelHel’sOddjobs’s
    LUKless STR banditLUKless bandit
    BrigandBrigand
    HP chief ditBlood bandit
    LUKless sinLUKless assassin
    LUKless night walkerLUKless assassin
    Perma first job thiefPermarogue
    ClawginnerClawginner?
    Brigand??, LUKless sin??Grim reaper
    Brigand??, LUKless sin??Carpenter
    [none]Dagger assassin
    [none]Claw-puncher
    The thief jobs that GunDelHel lists translate quite well to my list — as before, some post-Cygnus variants are split out (“LUKless night walker”, in this case). Clawginners have the same issues, for the most part, as bowginners. However, there are four items on my list that have no clear analogues in GunDelHel’s. Grim reaper and carpenter are each defined in terms of a single weapon (the Scythe and the Saw, respectively), meaning that some of the requirements of brigand (e.g. going the Rogue → Bandit → Chief Bandit → Shadower route) don’t necessarily apply, even though these jobs seem to look a lot like highly-weapon-restricted brigands. They could just as easily be LUKless assassins, for example. And dagger assassins and claw-punchers have no representation in GunDelHel’s list whatsoever.

    And finally, when it comes to pirates, we have:
    GunDelHel’sOddjobs’s
    Fist fighterPugilist?
    Non-knuckle brawlerArmed brawler
    STRless DEX brawlerDEX brawler
    DEXless STR gunslingerSwashbuckler
    Perma first job piratePermapirate
    SummonerSummoner?
    BegGunnerBegunner?
    [none]LUK bucc
    [none]Bullet bucc
    [none]Bombadier
    [none]Pistol-whipper
    [none]Punch slinger
    Pirates turn out to be remarkably diverse. Five(!) of the entries in my list have no representation in GunDelHel’s list whatsoever. The others translate reasonably well, with just a handful of hiccups. GunDelHel’s “fist fighter” obviously translates to my “pugilist”, although GunDelHel adds — despite referring to fist fighters as “unarmed FOREVER” — that fist fighters may equip shields. Usual definitions of the English word “unarmed” would seem to disagree with the use of a shield, but this is simply a difference in definition. My version is “bare-handed/empty-handed brawler”, whereas GunDelHel’s is more generally “weaponless brawler” (unless you count a shield as a kind of weapon). While I disagree with GunDelHel’s version conceptually (and I never used a shield when playing rangifer), I actually want to use GunDelHel’s version (or at least, a version closer to GunDelHel’s than to mine) because it is more general. I also want to lift the “Pirate → Brawler → Marauder → Buccaneer” class restriction. But we’ll get to that later.

    The spirit of GunDelHel’s “summoner” is definitely the same as my “summoner”. But the details are a little fuzzy; GunDelHel says:
    This would seem to imply that summoners are disallowed from using guns — or perhaps they “also use non-guns” in addition to guns…? In any case, my version of “summoner” places no restrictions on equipment (which I think is probably a good thing). We agree on DEX being the primary stat (for obvious reasons), although I’m not sure what that has to do with summoners being “quite hard to explain without pictures”. My version of “summoner”, rather than disallowing(?) guns, disallows attacking skills, relegating the summoner to basic-attacking only, unless assisted by their summons. This could, potentially (depending on how you want to play it), make the summoner-sans-summons look a lot like a begunner. And, speaking of begunners, they have some of the same issues as bowginners and clawginners discussed above.


    Comparing to “Alyssaur’s Kind of Unnecessary Compilation of Unusual Builds”

    Alyssaur’s list is more recent than GunDelHel’s, being more similar to my list in that it targets the players of pre-BB MapleStory private servers.

    Starting out with the permabeginners, Alyssaur (somewhat humourously) collectively refers to these as “tutorial classes”, presumably so that she can reserve terms like “beginner”, “permanent beginner”, “permabeginner”, etc. for off-island permabeginners only. Alyssaur only observes differences on the basis of location; hence, we have the trio:
    • Camper
    • Islander
    • Beginner
    …Where “beginner” seems to specifically mean STRginner, based on the references to the level 20 Frozen Tuna and the Maroon Mop (both of which have considerable STR requirements).

    The rest of the entries in this list coincide pretty heavily with GunDelHel’s list, as Alyssaur’s list is more brief. Without going over the jobs that are missing from Alyssaur’s list, let’s consider the stuff that is more unique to this list:
    • Alyssaur’s “dagger warrior” does include all types of warriors, unlike GunDelHel’s (and like mine).
    • Alyssaur’s “LUK mage” does coincide mostly with my “magelet”, except that it says: “There are two builds available for these Mages, one where you pump all AP points into LUK and one where you cap your INT to meet equipment requirements and then pump everything else into LUK”. This latter version is considered (for our purposes) to be a “LUK mage” in the ordinary sense (i.e. still INT-based), albeit a rather extreme one. So we won’t consider this latter definition.
    • Alyssaur’s list actually does provide a direct analogue to my “gish” (and possibly also “gishlet”, although no such distinction is made by Alyssaur): “melee mage”!
    • Alyssaur confuses brigands and LUKless assassins. She uses the term “brigand” as a catch-all term (and also insists that they are always STR-based, which they aren’t necessarily, in our case), and says: “Go Bandit in Second job and you'll get Steal, go Hermit and you'll get nothing!”. This is mistaken, as assassins/hermits/NLs do get plenty of good skills as well.
    Comparing to the summarised findings of pt. ii
    Towards the end of pt. ii of this series, I said this:
    Doing a similar list-item-by-list-item analysis here:
    • The list of odd jobs on the Oddjobs website currently limits HP warrior to the fighter and page routes. In light of this ancient HP spear(wo)man finding, and for the sake of generality, I want to expand this to include any class progression that includes warrior.
    • Although we can find at least two pieces of historical evidence of this kind of “LUK warrior”, unfortunately we just can’t square it with our definition of “odd job”. This one has to go in the bin with “LUK mage” (in the more usual sense) and all the others.
    • We have now encountered a lot of examples of this, but we will maintain the much less ambiguous and much less confusing terminology, including terms like DEX mage, gish, and gishlet.
    • Ditto on the comments on “LUK warrior”.
    • These colourful distinctions will, for better or for worse, be a pain point when trying to come up with our microtaxonomy. The problem of subjobs, and of overlapping job definitions in general, is something that I think I want to struggle with in the next entry in the series (§3 of this part).
    • This makes STRginners one of our most “core” odd jobs, and if we come up with an ordering, it will thus be first (or close to first).
    More questing with xX17Xx
    In the previous diary entry (pt. lxv), I joined permarogue extraordinaire xX17Xx (drainer, attackattack, maebee, partyrock, technopagan) on a journey to finish the main Magatia questline. We last left off somewhere within the latter half of Dr. De Lang’s Notes. In particular, we had already each gotten our Magic Stones of Honesty from Homunculuses, and just needed to get those pesky Magic Stones of Trust from the elusive D. Roy. I casually logged onto my daggermit alces a few times, and each time checked if there was a D. Roy already spawned there, but to no avail as of yet. xX17Xx logged on, and so I thought I would check again (and more thoroughly this time). To my dismay, it seemed that D. Roy was already being hunted by someone… however, that quickly turned around when I found a Magic Stone of Trust that they left behind! And another one, for xX17Xx!:

    [​IMG]

    xX17Xx is crying in this image because she was unable to pick up the rock, for at least a handful of seconds. I have out my Liu Bei because I had yet to properly transfer my gear over from other characters, so I couldn’t equip my normal dagger.

    With that settled, it was time to take each of our Magic Stone trios into the laboratory of the Black Magician. Of course, that means getting to the laboratory in the first place…

    [​IMG]

    There is a bit of a jump quest (JQ) on the way to the lab, and although it’s really not all that difficult, I always find it disorienting, thanks to the near-complete darkness and the confusingly-placed sewer grate teleporters. But we persevered, and made our way to the lab:

    [​IMG]

    All that remained was to put each Magic Stone in its proper place within the trigram, in the correct order, so that we might restore Magatia to its former glory… somehow… I think. In any case, this was enough to please Alcaster, who gave the notebook back to us, telling us that we must choose whose hands to ultimately place the notebook in. So, naturally enough, we chose Phyllia, the widowed wife of De Lang:

    [​IMG]

    This concludes the main Magatia storyline. Giving the notebook to Phyllia yields the “happy” ending — or, at least, as happy as it gets. In some ways, this questline’s story resembles the Romeo & Juliet adaptation that also takes place in Magatia (see: MPQ): both centre around a pair of lovers, both stories are propelled by a alchemist/wizard character (one of the lovers, in the case of the main Magatia questline, and a separate character in the case of MPQ) who is mad with power, and both play off of the “Zenumist vs. Alcadno” rivalry to heighten the drama. The main Magatia questline is not afraid to come to an unhappy ending, although somewhat confusingly, MPQ does have a happy ending, despite the rather gruesomely unhappy ending of Shakespeare’s original play.

    Having finished the Magatia questline, we decided that we wanted to do the questline for the Hog! The Hog is the first of the three mounts (available at levels ≥70, ≥120, and 200, respectively) that can be obtained in the game. As this implies, the Hog is the weakest (read: slowest), but still moves strictly faster than an unmounted character moving at max SPEED (140% SPEED). I particularly wanted to get a Hog for my darksterity knight rusa and my woodsmaster capreolina, as they tend to be in the most need of mobility. Unfortunately, up to this point, I had never gotten a mount at all (in my entire Maple career…) due to its rather steep price (20M mesos for the Hog alone, not to mention the mounts that come after it!). As a result, I was frankly completely unaware of how to do the quest, so xX17Xx guided me along hte questline as she did the questline herself, to get xX17Xx a mount as well. With rusa lacking mobility skills entirely (she carries around a stack of Speed Pills…), unlike capreolina, who at least has Thrust to keep her at 140% SPEED at all times, I decided to do the quest as rusa:

    [​IMG]

    Why are there Barnard Grays coming down deep within the oceans of Ossyria to attack a pig that’s trapped inside of an aquarium? God only knows. In any case, I did successfully protect the piggo, so things were looking good so far.

    Now it was time to pony up:

    [​IMG]

    And with our perfumes in hand, xX17Xx and I headed to KFT to tame ourselves some hogs!:

    [​IMG]

    Cool!! My very own hoggo!!! And next, xX17Xx got hers as well:

    [​IMG]

    The hog is pretty cute, I admit, but maybe a little basic-looking, considering that that’s what it looks like by default. So it was time to investigate NX mount covers. I had a look through this very helpful thread on the MapleLegends forums, which has an animated GIF displaying each mount cover. I liked the look of a few of them, including the Owl, which would match rusa’s NX weapon cover quite nicely. But I ended up going for, at least at first, the Nightmare, to match rusa’s flaming look and the “dark knight” aesthetic:

    [​IMG]

    It is, admittedly, pretty goofy. The mount is absolutely huge, and looks even more ridiculous if I happen to be zerked at the time, as the zerk animation sits in the empty space underneath the horse’s barrel. Also, it looks very silly when operating a rope/ladder… But I love it!! Especially the crouching (lying down) animation looks almost adorable… if it didn’t still look terrifying.

    panolia does some MPQin’

    Speaking of MPQ, I did some more empy queueing on my permarogue panolia! I started out by doing some MPQs with fellow Oddjobs member GishGallop (Cortical, SussyBaka, CokeZeroPill, moonchild47), the I/L gish. I dragged along my MPQ mule potpan, who did a great job AFKing in the first stage for the entire duration of the PQ. We were also accompanied by Goucha:

    [​IMG]

    After a few more PQs, I had the marbles necessary to get my first Horus’ Eye, so I went to run some errands for Yulete. This included painstakingly searching for 20 clickable regions:

    [​IMG]

    …And fighting some Reinforced Mithril Mutae — I mean, some Obstacle Mutae:

    [​IMG]

    But, unfortunately, to no avail:

    [​IMG]

    Besides the fact that the MAXHP, AVOID, and MDEF are subpar here, I want to try holding out for a Horus’ Eye that has 5 LUK clean (panolia is DEXless), before using any Rocks of Wisdom. So, for now, this one can sit in my inventory, clean.

    I later did some MPQs with the lovely stink3r and PengXiang, which which were enough to graduate GishGallop to level 86! So GishGallop said bye to MPQ 5ever~

    [​IMG]

    And now panolia is level 77, almost 78~!

    The card-hunt intensifies

    In the previous diary entry, my woodsmaster capreolina had just started card-hunting in the Ulu City region of Singapore. I was at Ulu Estate I hunting Berserkies and Veetrons, and by now I’ve finished both of those sets. So I moved onwards to Ulu Estate II to attempt to get the Slygie card set:

    [​IMG]

    Very nice! With just a little help (after asking politely) from the leechers at Ulu II, I was able to finish this set fairly quickly~

    Now it was time to move to Ulu III for the Montrecer set…

    [​IMG]

    Oh dear. For those who have never had the displeasure of fighting these mangled automobiles that have, apparently, been reclaimed by the trees, you should know that fighting them is generally considered a “not so good idea” unless you can one-shot them or easily stun/freeze them. Unfortunately for those who would want to one-shot Montrecers, each one has 62k(!) HP and respectable amounts of defences. Attacking them without one-shotting them or stunning them is sure to result in being nearly perma-stunned, as each one of their attacks stuns for 4 or 5 seconds. If you’re lucky, you eventually get out without having to resort to desperate methods. Those who grow frustrated with being stunned may wish to go have lunch and come back later, in the vain hope that the Montrecers may have stopped by the time that you get back — just make sure that your pet’s auto-HP is quite diligent, as these things pack quite the punch! Otherwise, you might try a return scroll, or simply relogging (provided that you don’t have any important ongoing buffs on your character…).

    Speaking of these arboreally-possessed motor vehicles, what the heck is a “montrecer” anyways? I can only imagine that it’s pronounced something like /mɔ̃tʁəse/ — looks French to me! But « *montrecer » doesn’t mean anything in French… the closest thing is the verb « montrer », which means “show; display” (compare Spanishmostrar”, which means the same thing). Maybe it’s severely corrupted from English “motor” + “racer”, reflecting the mangled-motor-vehicle nature of these things? Maybe someone at Necksawn just typed out something random that looked vaguely European? Maybe someone vomited on their keyboard??

    Unfortunately for me, it seemed that Ulu III was not a very popular leeching spot, so there was no one to beg for cards from. So I spent an undisclosed number of hours painstakingly Arrow Bombing these things, gradually, to death. The problem with Arrow Bomb is, although it does stun (which is why it was my main weapon here), it doesn’t work at all if the Montrecers are too close to me, resulting in unnecessary aggroing without any chance of stunning. And speaking of chance, Arrow Bomb only has a 60% chance to stun, which feels more like a 45% chance a lot of the time. Combine that with the rather… unfortunate map design, including (but not limited to) invisible walls that eat up my arrows, and this turned out to be a gruelling experience. I did, however, manage to farm up three cards all by my lonesome:

    [​IMG]

    And, thanking my lucky stars, I did eventually come across a leecher who was giving Ulu III leech. This got me the last two Montrecer cards that I needed to finish the set >w<

    So I made my way to the Ulu City Centre in search of Petrifighter cards. I must admit, this is such a popular leeching map, that I didn’t actually farm any of the cards myself! I did kill a number of Petrifighters, but in the end, asking leechers for their spare cards was far quicker:

    [​IMG]

    With that set completed, I headed to Destroyed Park II for the Duku set. I did a little peeking around to see if anyone was giving Duku leech, but it seems that it may be even less popular than Montrecer leech. But that was okay — although these things do have 90k(!!) HP a piece, and 820 WDEF, a quick @epm 4 test was enough to see that this was pretty decent EPH anyways. So I didn’t feel so bad grinding these grumpy trees for quite a while:

    [​IMG]

    Speaking of EPH, killing Dukus was enough to level up capreolina to level 125~!:

    [​IMG]

    And eventually, I did finish the set. Check out the Montrecer ETCs and Duku ETCs that I was left with:

    [​IMG]

    W h e w .

    And, much to my delight, finishing the Duku set (and thus finishing all Singapore sets, with the exceptions of Capt. Latanica — who I can come back for — and Krexel — who I plan on being 0/5 on forever…) was enough to get me the T8 Monster Book ring!!!:

    [​IMG]

    Cool! :D

    Next on my route was to do some of the easier Deep Ludibrium sets; particularly those that satisfy at least one of the following conditions:
    • The set is recommended by the card-hunting guide(s) that I’m referencing.
    • I already have ≥1 card(s) in the set.
    So I went to finish up the Buffy:

    [​IMG]

    …and Lazy Buffy:

    [​IMG]

    …card sets, which I had already made some progress on. :)

    More card-hunting to come~

    Levelling up the magelets

    As I have been chronicling in the past few diary entries, my vicloc clericlet d33r has been on the way to her ultimate goal: level 54! For great Heart Wand!! As usual, the grinding spot of choice is the B2 Subway Depot (a.k.a. My Favourite Napkin Murder Dungeon™), at the end of the B2 Kerning City JQ. I recorded a few more times for my B2 JQ runs, which you can see appended below:
    1. 12.5 minutes
    2. 9.2 minutes
    3. 7.5 minutes
    4. 5.5 minutes
    5. 6.0 minutes
    6. 8.0 minutes
    7. 5.3 minutes
    8. 5.5 minutes
    9. 5.7 minutes
    10. 8.0 minutes
    11. 4.8 minutes
    12. 5.2 minutes
    That’s a new personal best: 4.8 minutes!

    After long hours of unceasing napkin murder, I finally did it: level 54!!!

    [​IMG]

    With no hesitation, I scrolled my Heart Wand (using all seven Wand 60%s in vicloc existence) so that I could test out my new damage:

    [​IMG]

    o_o Now that is a serious upgrade. Doing twice as much damage is great — you could say, “but two times zero is still zero…”, and you might be right. But being upgraded from peepee poopoo useless garbage to just ordinary, everyday useless garbage is a huge deal for d33r!! And for me, this kind of represents the culmination of everything I hoped that d33r could be… d33r, my first-ever viclocker~ <3

    Oh, and if you wanted to see the wand itself:

    [​IMG]

    Unfortunately, this is below average scrolling luck. Passing 57% of my scrolls that supposedly have a 60% chance of passing is mildly disappointing, but only mildly. Still absolutely hooge for d33r.

    And, speaking of levelling up magelets, you’ll remember my outlander I/L magelet cervine. Level1Crook (xXCrookXx, Sangatsu, Lv1Crook) promised me that he would help me level up by duoing with me at CDs. Eventually, he came through on that promise, and lo and behold… cervine is level 109 now!!:

    [​IMG]

    :D

    Along the way, we learned that using the @music command to put the MapleStory soundtracks on shuffle is a nice feature, but somewhat… dangerous. You see, among the many soundtrack-sounding soundtracks in MapleStory, there is one soundtrack unlike the others: Bathroom. This is a real in-game soundtrack that you can hear naturally by going into the Showa bathhouses (which also lead to The Secret Spa). Unlike most soundtracks in the game, this one is supposed to sound like some kind of field recording of a bathroom… in reality, it’s a handful of clumsily pasted-together Foley effects of dripping water, toilets flushing, and so on. The overall effect is… uncomfortable. But you don’t have to take it from me — poor Level1Crook randomly had this “soundtrack” come up during his shuffled @music command, mid-grind. Not wanting to lose EPM, Level1Crook persisted through the entire soundtrack (which is thankfully only 56 seconds in length), but shortly later confessed that the experience had psychologically disturbed him. Hopefully his suggestion to add curated playlists to the @music command comes to fruition…

    d34rventures

    As usual, I’ve been doing some APQs and a few BPQs on my vicloc dagger spearwoman d34r. During one such APQ, my husband xXCrookXx told us all a tragic vicloc story of what happened to his father:

    [​IMG]

    Now with nearly enough EXP for level 75, xXCrookXx and I both headed to TfoG to each grind out our level 75s~!:

    [​IMG]

    Very nice!!

    And after that, I was honoured to join permarogue xX17Xx and xXCrookXx’s main, Level1Crook, to form VOM GANG:

    [​IMG]

    By our powers combined, we vomited allllll over BPQ — even BPQ’s most fearsome (not actually, but at least for us) villain: Franken Lloyd.

    [​IMG]

    <3
     
    • Like Like x 2
    • Great Work Great Work x 1
    • Friendly Friendly x 1
  9. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    (You can also read the original diary entry here. If odd-jobbed characters interest you, you should know that Oddjobs is recruiting!)

    rangifer’s diary: pt. lxvii

    Taxonomising odd jobs, pt. iv: Microtaxonomy & encodings. §3

    In the previous section (§2) of this part, I compared and contrasted the list of odd jobs on the Oddjobs website with two other similar lists:
    And we also compared the Oddjobs list to the findings of pt. ii of this series, as well.

    I came across a few adjustments that I wanted to make to the Oddjobs list (at the very least, for the purpose of this series):
    • More carefully include post-v62-but-pre-BB (“v62” as in version 62 of GMS; “pre-BB” as in pre-Big-Bang) classes, i.e. Cygnus Knights and Legends. The Oddjobs list (at the time of writing) does mention some of these, but only in the aliases and notes for a few jobs like STR beginner. GunDelHel’s list splits out some of the Cygnus-based and Legend-based odd jobs into their own jobs, but none of them are radically different enough from their pre-v63 counterparts to fall outside of their counterparts’ original definitions. That being said, in the interest of generality, I want to ensure that these later versions are incorporated explicitly into the odd jobs’ definitions.
    • Although there are some good reasons why the Oddjobs list currently defines bowginners (and the other jobbed rangeginners, i.e. clawginners and begunners) as being perma-firsts (permanently first grade), I want to loosen this restriction on all three of them. Again, this is in the interest of generality, and to make their definitions sit more comfortably with historical definitions.
    • Similarly in the interest of generality and historicity, I want to loosen the restriction on pugilists that they must be totally bare-handed, instead stipulating that they mustn’t use a main weapon, but may still equip shields. This still means no knucklers, no spears, etc.; the only difference is that pugilists can now wear shields by definition, making “shieldless pugilist” a subjob of pugilist.
    • We have at least two pirate odd jobs that have unclear definitions (well, their definitions are basically clear — it’s just unclear whether these are spiritually the “correct” or “natural” definitions), which we are going to handwavingly gloss over for now:
    • The definition of HP warrior is to be expanded to include HP spear(wo)men/DKs, although HP permawarriors will still be excluded. Again, this is for generality and historicity purposes.
    Otherwise, there are other difficult issues that don’t arise (at least, not directly) from comparing historical lists side by side.

    Toe-stepping

    The fundamental problem of perhaps all taxonomy is, in some ways, very simple: how do we make things (conceptually) separate from one other? In The Real World™ (whatever that is), things are very messy, and nothing is separate from anything else. In some ways, the fact that we are dealing with a video game can simplify things — if we want to know what class my character is, we can unambiguously consult the bit-level representation of my class. Something like 0000 0000 1110 1000* (in decimal: 232) is known as “bishop”. This is because computer programs, intentionally or tacitly, and for better or for worse, must formalise things to some degree — in the most basic case, by merely encoding them at the bit level.

    Also for better or for worse, this kind of formalisation doesn’t actually take us very far. We bear in mind with seriousness the mechanical details as we go, but when it comes to something like defining “odd jobs”, we are left with an essentially anthropological subject. In Actual Reality™ (again, whatever that is), we are dealing with a body of practice surrounding an unusually specific way of playing a particular MMORPG from 2003. Cultural approaches are useful here, but limited, as the traces of such “culture” are largely lost to the ages, and many players (or groups of players) have decided to play odd jobs independently of one another.

    In any case, this leaves us with the task of hardening the definitions on our list of odd jobs. The fundamental problem of taxonomy is one of separation, so that is what we’ll do: get rid of as much toe-stepping as we can. We have a few issues with “odd job” definitions stepping on one another’s toes:

    “Permabeginner”

    In §2 of pt. i of this series, I tried to define “odd job” in a way that is parsimonious, and keeps things simple & pure. I said that “[d]efining a particular odd job (e.g. permawarrior) is simple”, and also that “[e]ach particular odd job satisfies some intuitive notion of natural”. The simplest definition of the classic “permabeginner” defines it as “the job that never takes first grade advancement”. However, permabeginners are very diverse, and as such, this definition technically encompasses our campers, islanders, and even non-locative distinctions like our STRginners, besinners, etc. It is possible to pave over these distinctions as all being subjobs (and subsubjobs, and so on), but at least to me, that would seem to be doing an immense disservice if this results in “hiding” them all within the umbrella of “permabeginner”. If our intent really is that stated in §1 of this part:
    …Then we need a way to chop down our ontology into a single conceptual level, with the understanding that there can always be “subjobs, subsubjobs, etc.” below that level, and possibly even “superjobs” above it. Ultimately, we want our taxonomic structure to co-occupy this upper level alongside where the “superjobs” (c/w)ould be, because we don’t want to organise odd jobs based on their definition (and therefore simply on which definitions are strictly more general, or less general, than some others) and nothing else. It’s pretty clear to me (and should become even more clear when we really start nailing down (a) taxonom(y/ies)) that defining a taxonomy based on the subjob relation is certainly possible, but pretty much misses the point, and leaves a lot (most?) of odd jobs stranded, somehow completely unrelated to every other job. So flattening things out gives us a simple and easy starting point (again, as elaborated in §1 of this part), and in doing so, we don’t want to flatten out our beginners to the point of asphyxiation.

    If we — to use just one example — wanted to separate besinners from STRginners, it seems that we could easily float out some arguments that justify doing so, even given our definition of “odd job” expounded in pt. i of this series. A natural-language definition of these two jobs can still, arguably, satisfy our “simplicity” and “naturalness” requirements. For example:
    • A STRginner is a STR-based beginner.
    • A besinner is a beginner that uses claws.
    Unfortunately, we’ve already run into a problem here. “STR-based beginner” still encompasses STRlanders, and “beginner that uses claws” still encompasses sinlanders. So, for better or for worse, we’re going to introduce the term “off-island” into these kinds of definitions, so we would have (for example):
    • A STRginner is a STR-based off-island beginner.
    • A besinner is an off-island beginner that uses claws.
    • A STRlander is a STR-based islander.
    • A sinlander is an islander that uses claws.
    Other ways of phrasing “off-island” would be “outlander” or “mainlander”. The justification here is basically that locative distinctions form such a fundamental part of a job, that we cannot reasonably lump STRginners with STRlanders (although their names and corresponding naïve definitions might have you believe otherwise).

    Likewise, distinctions of AP allocation, and of weaponry, form fundamental parts of jobs as well. Some odd jobs seem to (at least, definitionally) differ from non-odd ones simply by AP allocation alone: the magelet is a mage that is LUK-based rather than INT-based. And we can say similar things about weaponry distinctions: the dagger warrior is a warrior that uses daggers rather than ordinary warrior weapons (e.g. blunt weapons for warriors/pages/WKs/paladins). So this provides a strong argument for separating — reusing the same example — besinners from STRginners.

    And furthermore, we have to simply realise the obvious: beginners are, by design, inherently unspecialised. This is why every character is born a beginner (or whatever it may be called, e.g. noblesse; I’m using “beginner” as the catch-all term). And because all characters are expected to leave Maple Island forever, and expected to take first grade advancement at level 10 (or 8), these assumptions can be sneakily implicit in our definitions/names, and also causes “[any] job that never takes first grade advancement” to necessarily be odd already.

    So, with that, we can expand “permabeginner” (or the list of permabeginner odd jobs on the Oddjobs list) into:
    • Camp:
      • Camper (a.k.a. applelander)
    • Maple Island:
      • STRlander (a.k.a. STR islander, stronglander)
      • DEXlander (a.k.a. DEX islander)
      • Magelander (a.k.a. wand islander, wandlander)
      • LUKlander (a.k.a. LUK islander, sinlander)
      • Hybridlander (a.k.a. hybrid islander) (this includes “perfectlanders”, and other related concepts)
    • Outland:
      • STRginner (a.k.a. STR beginner)
      • DEXginner (a.k.a. DEX beginner, permadexer)
      • Wand beginner (a.k.a. wandginner, permawander)
      • LUKginner (a.k.a. besinner, singinner, LUK beginner)
    …for a total of ten odd jobs which necessarily can never take first grade advancement.

    Thieves with a healthy disrespect for AP allocation

    While this doesn’t cover all thieves with a healthy disrespect for AP allocation (others are less problematic), the following are five such odd jobs that can sometimes be difficult to pry apart:
    See §3 of pt. i of this series for the arguments as to why grim reaper, carpenter, and brigand count as authentic odd jobs by our definitions, even though this might not be obvious.

    First of all, we want to pry grim reaper and carpenter out of the grips of LUKless sin and brigand. Because grim reapers & carpenters are, by definition, restricted to using a one-handed axe & a one-handed sword, respectively, they tend to look like highly-weapon-restricted brigands. Or was it highly-weapon-restricted LUKless sins? Well, obviously, it depends on how they take their second grade advancement. But what if they just don’t take second grade advancement? Well, then they would overlap with permarogue instead then, wouldn’t they? The point that I want to make is: just because two jobs can easily overlap with one another (“overlap” in the sense of a single character having both jobs), that doesn’t necessarily mean that they conflict, or step on each other’s toes. In particular, as long as the two jobs are defined distinctly enough that neither one encompasses the other (neither is a subjob of the other), and as long as each definition satisfies our requirements to be an “odd job”, there is no real issue. A given carpenter could be a permarogue, or they could just take second grade advancement. A given carpenter could be a brigand, or they could just never take second grade advancement to bandit. A given carpenter could be a LUKless sin, or they could just never take second grade advancement to assassin. The key thing is that the carpenter, as a job, is defined only by the exclusive use of the Saw. This happens to imply that they take first grade advancement to rogue (otherwise, they obviously couldn’t use the Saw at all), but there is no particular suggestion of what to do beyond that point. This means that our odd job definitions, when properly formalised/encoded/whatever, will need to include information about weaponry — at the very least, the set of all possible weapons that the job is capable of using. This information is already reflected in the Oddjobs list. I also want to, in addition, include the set of all “canonical” weapons (or rather, weapon types) for each job — so, hopefully I remember to do that!

    Second of all, we want to pry apart LUKless sin and brigand from one another. The issue here is essentially that both of these odd jobs are rogues at their core, but don’t differ in any notable way while they are still first grade. Again, upon closer inspection, this isn’t a real issue; many pairs of jobs (when played/built “canonically”, if you will) are more or less indistinguishable from one another at some point. Sometimes this happens within the first grade — take, as another example, a permawarrior versus any normal warrior. For obvious reasons, this is even more likely to happen within the zeroth grade… The point is, only diverging from second grade advancement and onwards is not really an issue for us, thanks to our definition of “atemporality” in pt. i of this series (see §4 and §5 in particular). Furthermore, LUKless sins and brigands actually do differ in a subtle way during even first grade, which I will get into below.

    More to the point, we need to fix up how we represent the relationship between classes (“class” meaning in-game class name, like beginner, rogue, gunslinger, white knight, marksman, etc.; see §1 of pt. i of this series) and our odd jobs. Right now, on the Oddjobs list, each entry in the list has an associated list of “possible job progressions”. Each such “possible job progression” is full and complete; it always starts with “beginner” and proceeds to the highest possible grade, including everything in between. For many purposes, this works well enough. It’s supposed to be implied that some characters with a given odd job — and a given “job progression” thereof — may not make it to the highest possible grade listed, either because they simply never make it that far, or because they exist within a version of the game that lacks the fourth grade (and possibly also lower grades), or because they are self-imposing a grade restriction. And it’s also supposed to be implied that — while it’s obviously impossible to “skip” lower grades to get to higher ones more quickly — a character with a given job may not differentiate itself immediately, especially not while still a beginner. So lower grades might be irrelevant in some cases as well. When producing our own formalisation/encoding of odd jobs for the purpose of this series, “possible job progressions” just won’t do. Instead, we need to encode classes into our odd jobs by associating each odd job with a corresponding set of classes. This set would only contain exactly those classes c such that it’s possible for a character whose class is c to be a genuine specimen of the given odd job. In this example, a first grade brigand would not be considered a “genuine specimen” yet, as we are intentionally making a three-way distinction between kinds of non-dagger-using melee thieves: permarogues, brigands, and LUKless sins. None of these can be truly differentiated until level >30, so before that point, they are in kind of a weird state where we consider them to be odd (as they are non-dagger-using melee thieves), but we don’t yet conclusively assign a job to them.

    Third of all, we want to pry apart brigand and LUKless dit from one another. Both are LUKless dits/CBs/shads by definition, which makes the nomenclature somewhat confusing, as only one of them is actually called “LUKless dit”. Furthermore, they are both melee combatants — barring the possible use of claws, which neither are very good at using anyways, although claws can still be useful in niche circumstances. What separates them is purely a matter of weaponry. Brigands are defined such that they can use essentially any weapon type, except for the canonical weapon type of their class (dit/CB/shad): daggers. On the other hand, LUKless dits are essentially limited to only ordinary thief weapons: daggers (and claws…). This gives them a playstyle very different from brigands, as there are many daggers (read: warrior-thief daggers, e.g. Dragon Kanzir) which don’t have LUK requirements, and their damage with daggers still scales reasonably well with STR+DEX (read: non-LUK stats) in all of their attacking skills. This also means that their AP allocation strategies tend to usually be quite different in practice, although this is not part of their definitions per se. In line with the weaponry sets discussed above, this might look like:
    • Brigand
      • Possible weapons:
        • {one-handed swords}
        • {one-handed axes} ∪
        • {one-handed blunt weapons} ∪
        • {wands} ∪
        • {staves} ∪
        • {two-handed swords} ∪
        • {two-handed axes} ∪
        • {two-handed blunt weapons} ∪
        • {spears} ∪
        • {polearms} ∪
        • {claws}.
      • Canonical weapons:
        • {one-handed swords} ∪
        • {one-handed axes} ∪
        • {one-handed blunt weapons} ∪
        • {two-handed swords} ∪
        • {two-handed axes} ∪
        • {two-handed blunt weapons} ∪
        • {polearms}.
    • LUKless dit
      • Possible weapons:
        • {daggers} ∪
        • {claws}.
      • Canonical weapons:
        • {daggers}.

    *I’m using 16 bits here because, in general, these numbers can be as large as 999, thus requiring at least two bytes. At best, DPD gets you down to ten bits :)

    Adventures on Victoria Island

    As it turns out, Jr. Wraiths drop helm HP 10%s. And as you already know, my vicloc clericlet d33r is MapleLegends’s foremost Jr. Wraith murderer. Well, okay, maybe except some Jr. Wraith leechers out there… but that doesn’t count! They’re cheating!! In any case, this meant that I had a lot of these scrolls to give to vicloc bandit xXCrookXx:

    [​IMG]

    ur welcome. Good luck with those. :)

    Speaking of which, xXCrookXx was kind enough to help me towards finishing d33r’s Sauna Robe and cape! This included two more OA INT 60%s from Casey, both of which I passed!!:

    [​IMG]

    That brings the ratio of OA INT 60%s that I’ve passed on this god forsaken thing from 1/5 = 20%(!!) to 3/7 = 42.86%… Still not great, obviously, but what can you do. I’m just glad to have passed more of these damned things to get d33r that joocy INT.

    The cape, on the other hand, was finished wonderfully with the aid of one more cape INT 60%! Look at this thing!!:

    [​IMG]

    12 INT… o_o That brings d33r a long way towards being able to quest on her own, hehe.

    And on my vicloc spear(wo)man d34r, I did some more APQs, as usual. I got to kill the special fierry that spawns when you have killed all of the original monsters in the first stage, and then talk to the Glimmerman. This is nothing special — you have to kill it in order to get the hammer that lets you proceed — but I had actually never seen this thing up until this point. There was always someone else lined up to kill it, and often times I would be the leader, meaning that I was above the region where the monsters spawn, in order to talk to the Glimmerman. Turns out, this thing is just a scaled-up version of the ordinary Magik Fierries that spawn when the stage first begins…

    [​IMG]

    Kinda goofy-lookin’, but I respect the vibe. Unfortunately, I was also the leader during this APQ… I only had to kill the special fierry because I was the only female in the party.

    The big levelup party

    I was honoured (and, unfortunately, exhausted, as it took place during an awkward time for me…) to attend the party for STRginner ducklings’s level 100, as well as I/L mage Gruzz’s, chief bandit (now shadower) Harlez’s, and sniper (now marksman) xBowtjuhNL’s level 120~! Long-time readers of this diary may remember that these are the folks with whom I MPQed on my darksterity knight rusa!

    The party took place at the Pet-Walking Road in Henesys, where partygoers were required to climb the pet-walking jump quest (JQ) in order for the party to start… unfortunately, I’m not exactly a JQ pro. But there were other non-pro JQers present, so it wasn’t so bad, even if I was feeling a bit zombified at the time. As I was attempting the JQ, xBowtjuhNL threw a Bridesmaid’s Dress at me and asked me to put it on for the party. So you’ll see rusa looking a little different in the image below…

    [​IMG]

    Grats!!! That’s not one, not two, not three, but four huge levelup milestones in one image!! Unfortunately, I was such a zombie at this point that I couldn’t continue on with the rest of the party, so I missed out on the job advancements and Silver Mane quests and such. But I was happy to at least make it to the party and witness the levelups~!

    Moar MPQ w/ panolia

    I did a few more MPQs on my permarogue panolia~ I’ve been casually MPQing whenever the opportunity arises; I’m not really in a huge rush to level up panolia and get her out of MPQ, so taking it a bit slow is my current approach.

    Here’s panolia, facing off against normal Franky alongside I/L mage Espontanea, DK tootle, and hermit AppleBao:

    [​IMG]

    I also did some trio MPQs (with me largely AFKing on my MPQ mule potpan in order to fill a slot and do the mage portal in stage 4) with the lovely PengXiang and stink3r!:

    [​IMG]

    At this point, I have pretty much cemented my approach to MPQing on panolia: I use my dagger for the first three stages, and then largely use my claw for the rest, with the exception of doing the thief portal (if I do do it) during stage 4.

    And finally, I also did some MPQs in a party with Espontanea, hermit xChouri, and white knight of the RoundTable guild SirAmik:

    [​IMG]

    Unfortunately, this last string of runs was cursed. It was quite a long and continuous session of MPQing, and during that single session alone, we botched not one, not two, not three, but four of the MPQs after having completed the large majority of the PQ!!! One was due to Espontanea dying in the mage portal as we were finishing up stage 4, and the others were due to MPQ bugs/crashes (as usual). One such crash even occurred after we had gotten Angy Fanky down to 10% HP or so :(

    Usually, these bugs occur swiftly and with violence — but one of them, we were able to see from a mile away:

    [​IMG]

    R.I.P. SirAmik. This is as he was frozen in place, and we all cheerlessly waited for the server to finally time out and boot us all from the PQ. After the fourth failed PQ, we all went our separate ways, our souls having been wrested from our physical bodies by MPQ and its bugginess…

    Cards on cards on cards

    Guess what time it is. That’s right, it’s time for Card-Hunting With capreolina™!!

    With the Buffy and Lazy Buffy cards all wrapped up, I headed to WPoT3 to get the Ghost Pirate set:

    [​IMG]

    While I was there, I accidentally stumbled across two Buffoon cards, as they spawn (albeit rarely) in this map as well:

    [​IMG]

    …So I decided I would go back for the Buffoon card set later.

    From there, a hidden portal took me to Unbalanced Time, where I hunted for the card set of Dual Ghost Pirates, which largely differ from Ghost Pirates in the colour of their hats (green instead of blue):

    [​IMG]

    Somewhat surprisingly given their name, Dual Ghost Pirates are not really the “dual” of Ghost Pirates in any discernible way, unless you count green as the “dual” of blue… Ghost Pirates are weak to fire and strong to ice, so you might expect Dual Ghost Pirates to be the opposite. But nope, their elemental interactions are identical. But, while I was at Dual Ghost Pirates, I came across something unusual:

    [​IMG]

    Huh, weird. An Unknown Letter. I guess it’s used in some quest for a nightlord skill!

    With the Dual Ghost Pirate set complete, I headed to Lost Time for the MDT set. I already had the Death Teddy set completed, which I completed while helping Gruzz farm at FPoT3 (see pt. xlvi).

    [​IMG]

    Then I headed to WPoT4 to finish the Spirit Viking set, which I had already started as a result of training here for EXP:

    [​IMG]

    I had never found the EXP to be that amazing. Back when I tried out this training spot, it was largely to take a break from the Male Mannequins that I was hunting at the time (I think this was during the x-mas event). Mannequins hit hard, and I found myself dying a lot and using a lot of potions. Unfortunately, Spirit Vikings never really matched up to the kind of EPM that I was capable of getting at Taipei 101. That being said, I wanted to test my EPM now, with SE and all that. So I did:

    [​IMG]

    Yeah, not so good. Obviously a lot better than many other card-hunting locations, but for EPM alone, this is pretty bad. And that’s saying something, as I miraculously didn’t mess up almost at all during the EPM recording. Usually I’m getting hit by stray cannonballs and falling off the platforms every 15 seconds.

    Anyways, with that set eventually finished up, I went to Forbidden Time to get the GPW set:

    [​IMG]

    And then, to the bottom of the clocktower for Thanatos:

    [​IMG]

    …As well as the significantly more annoying (but kinda cool-looking) Gatekeeper:

    [​IMG]

    And with that, I headed back up to the top of Deep Ludi and up one map further for Timer. Unfortunately, Clock Tower Monster Wipe-Out (a.k.a. “the Timer quest”) doesn’t exist in MapleLegends — on the bright side, this means that I can hunt for the Timer card set without breaking my vow x)

    [​IMG]

    I got a bit lucky here, and the Timer hunter who I ran into seemed to be leaving behind the cards! I guess they just wanted the chair? In any case, I only had to return back to Timer once in order to finish the set~

    Whilst I was waiting for my Timer timer, I headed down just a bit to FPoT1 for a little more card-hunting. This map is the only map on which Soul Teddies spawn, and also the only map on which MSTs spawn. The first card that I got was an MST one:

    [​IMG]

    I had been warned (by the card-hunting guides that I read) that the MST set is a “probably just skip this one”, but things were looking good already. And I got some Soul Teddy cards as well:

    [​IMG]

    Eventually, I finished the Soul Teddy card set. By that point, I was still only 3/5 MST. But that’s more than halfway there, right? So I decided to just keep farming there until I finished the MST set as well.

    Oh, how foolish I was… By the time that I (finally, thank god) got my fifth MST card, I had not five, not six, not seven, but 15 Soul Teddy cards. At some point, I was no longer even hunting there for the MST set; a card set is just a card set. What I really wanted was to declare victory over MSTs once and for all, to show them that their trickery and stinginess was nothing to me!! By the time I finished, I had… a few MST ETCs:

    [​IMG]

    Not bad, really. These ETCs are kind of a pain to farm for most of my characters, and they are required for the Free Spirit quest, as well as Soul in the Dark, which are both quests that I like to do.

    With that, I was very prepared to leave Deep Ludi behind (for now, at least). So I headed down the Helios Tower towards KFT. At this point, there were only two KFT card sets that I didn’t already have: Old Fox and Scholar Ghost. The former is off limits for me, for obvious reasons, but I was also 0/5 on the latter, so I decided to try my hand at the Scholar Ghost set:

    [​IMG]

    The first sweep of all eight channels that I did yielded three cards, so I was 3/5. Great! Just one more sweep, three hours later, and I could finish up this set. Unfortunately, three hours later, the second series of eight Scholar Ghost kills yielded just one card… 4/5. Thankfully, coming back a third time did yield the last card that I needed.

    While I was there, I headed to the nearby Seaweed Tower to attempt the only Upper Aqua Road set that I didn’t yet have completed: Seruf. After some 45 minutes of busy-waiting, I did eventually manage to find one:

    [​IMG]

    But it wasn’t enough to finish the set yet, so I came back just one more time some 65 minutes later to complete it! Again, while waiting, I headed to Authorised Personnel Only in Magatia, to finish up a set that I had started but never completed: Security Camera.

    [​IMG]

    Very nice! This set was much easier to finish than it was to start, back when I was actually doing Magatia cards…

    And now, it was time to move back to where I wanted to card-hunt next: Victoria Island. There, I harassed the only area bosses / anti-bot monsters that I could hunt on my own:

    [​IMG]

    Shade set done!

    [​IMG]

    ZMM set: also done!! And while I was completing it, I had a rather interesting string of luck:

    [​IMG]

    o.o

    rusa does the Rush quest (again)

    While I was card-hunting on capre, I responded to a smega from nascent hero Jcrry, who was looking for another fourth-job warrior to do the Rush quest with. I showed up to Ant Tunnel Park as my darksterity knight rusa, and we headed to Sanctuary Entrance III together on hogback. Along the way, Jcrry asked me about Southperry, wondering if they really were in the same alliance (Suboptimal) with me, as he suspected. I said that there were indeed a few Southperry members online at the moment, and Jcrry said that he had played as a member of Southperry (an islander) for a while, some time back.

    So, as we were killing Charging Taurospears in the Secret Shrine:

    [​IMG]

    …We talked a little bit about the island (vs. outland), as well as Victoria Islanding (vicloc)! And grats again to Jcrry on unlocking the Rush skill :)

    rusa slays the Leviathan

    The 2021 MapleLegends summer event brought us several things. Among them was B(R)PQ (Boss (Rush) Party Quest). Because I previously made a video of rusa soloing bosses throughout her career, I thought it would be a fun thing to take advantage of the event to do something similar — but all at once. I may or may not have procrastinated on this until the last day of the event, but I’m nevertheless pleased with how it came out!

    I was able to solo the entirety of the first five (out of six) stages of BPQ, including a special area boss that I’ve never had the chance to solo (or even to fight at all, outside of BPQ): the Leviathan. If you’re interested, you can watch the resulting video here!:

    rusa solos BPQ (but not the last stage) [YouTube]

    And I’ve broken the video up into chunks for ease of viewing :)

    • 00:00 rusa solos BPQ (but not the last stage)
    • 00:16 Part I: The Easy Part™.
    • 04:59 Part II: Manon & Griffey.
    • 07:17 Part III: The Leviathan.
    • 11:30 outro
    • 11:40 outtakes

    cervine hits the big 110
    As seen in the previous diary entry, I’ve been doing a bit of grinding at CDs on my I/L magelet cervine, accompanied by sniper Level1Crook (xXCrookXx, Sangatsu)! Well, the grind has continued, and now cervine has hit a big milestone: level 110!!!

    [​IMG]

    :D

    Being level 110, besides looking cool, is a milestone because it enables me to equip the Mark of Naricain (MoN)! Poor cervine has been using a Silver Deputy Star for 60 levels, thanks to the fact that she graduated MPQ long before MapleLegends massively buffed the Horus’ Eye. Ironically, cervine’s Horus’ eye is actually “perfect” (by the old standards) — I managed to somehow pass all three Rocks of Wisdom on it…

    In any case, I was on the lookout for MoN sellers. I responded to a smega from MuscleUncle (GuoYuUncle, XiWinieUncle, PorhubUncle, JinpingUncle), but the first two times that I tried to buy from them, I was not fast enough (I’m not quick enough on the draw, I guess). Eventually, I did manage to sneak myself in as a buyer. So I was accompanied through a CWKPQ (or at least, 90% of one) by the {U}ncle crew, YUrain00 (YUrain02, YUrain99), ScarletMoon, and zswitch:

    [​IMG]

    Obviously, I didn’t actually participate in any of the PQ, so this was the only screenshot I took, from my hidey spot at the far left side of the boss stage. I can’t see much of what’s going on from here (lots of… hitting bosses very fast, I take it), but I did see this poor pirate fellow getting absolutely blasted off of a ledge by someone’s Hurricane.

    The first MoN that I looted was under average (9 MATK + 5 INT = 14 TMA < 15 TMA), so I relooted and got this one:

    [​IMG]

    Not bad! Ever so slightly above average, as the TMA is exactly average, but the INT is above average by 1. No more dep stars for cervine :D

    That being said, as you can see, the MAXHP and MAXMP are both the minimum possible (the range for each is 290–310)… oh well :p

    A special little LPQ session

    Now that Level1Crook’s LPQ mule Sangatsu was all grown up (i.e. level 50), Sangatsu invited me to LPQ on my own LPQ mule, my DEX brawler sorts. I was happy to do so, and fortunately for us, Bipp (Celim, Copo, Sommer, Fino) and xX17Xx (drainer, attackattack, partyrock, maebee, strainer) happened to be online as well! So Bipp joined us on his claw clericlet Cassandro, and xX17Xx on her gunslinger partyrock!! Together, we formed Suboptimal Krew™ (& best5):

    [​IMG]

    Somewhat ironically, partyrock is the only one actually representing Suboptimal here — both Sangatsu and Cassandro are guildless, and my LPQ mule is in Pals. :p

    After an excellent, if short (partly due to Sangatsu & I absolutely laying waste to LPQ), LPQ session, it was time for Sangatsu and I to do the PQ mule thing: suicide. So we formed a suicide pact and died together in FPoT1:

    [​IMG]

    Very sad. But ya gotta do it — for the LPQs.
     
    • Like Like x 2
    • Great Work Great Work x 2
  10. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    (You can also read the original diary entry here. If odd-jobbed characters interest you, you should know that Oddjobs is recruiting!)

    rangifer’s diary: pt. lxviii

    Taxonomising odd jobs, pt. iv: Microtaxonomy & encodings. §4

    In the previous section (§3) of this part (pt. iv), I tried to narrow down some refinements to the list of odd jobs on the Oddjobs website. The purpose of these refinements is mostly to iron out the kinks that we come across when trying to flatten out our “universe” of odd jobs into a single structureless set of objects. We want each one of these objects (i.e. each odd job) to essentially follow the principles laid out in pt. i of this series, and also fit nicely with our historical/anthropological perspective as explored in pt. ii of this series. Furthermore, we want to ensure that these objects don’t overlap in undesirable ways — for example, we don’t want one of the odd jobs to be a subjob (strict or otherwise) of another.

    With that in mind, and with some of the kinks having already been ironed out in the previous section, I want to start explicitly constructing the set that we’re after, element by element. Unfortunately, it seems that we need even more prelude here — we need to decide how to describe each odd job. This is already a kind of “encoding”, as we’re using “encoding” loosely to include formalisations in general, in addition to actual concrete codes. As before, I’m going to be using the list of odd jobs on the Oddjobs website (at the time of writing) as a starting point here.

    Names

    The name of an odd job is only used to identify the odd job. Although obviously these names tend to actually mean something(s), and have some etymology, we don’t actually care for our purposes here. Thus, a name is just an arbitrary nonempty string, with the constraint that that string is not used as a name for any other odd job.

    We could encode names by associating with each odd job a nonempty set of nonempty strings, subject to the constraint that the collection of all such sets is pairwise disjoint. This would allow for a given odd job to have multiple names (as they often do, in practice). But, again, we are really only using the names for identification purposes, so it suffices to just pick one.

    Classes

    In §3 of this part, I said:
    This notion of “genuine specimen” is a kind of… “nonlocal” property, if you will. What I mean is that, when determining whether or not a character is a “genuine specimen” of a particular odd job, it doesn’t always suffice to just look at the character & at the basic definition of the odd job. We might also need to know how other odd jobs are defined, because the notion of “genuine specimen” is tied up with our need to keep the odd jobs separate from one another. We’re perfectly okay with a single character fitting the definition of more than one odd job at the same time: for example, a permarcher who is also a woods(wo)man is perfectly conceivable (in fact, I wouldn’t mind playing one myself…). What we’re not okay with is when a pair of odd jobs necessarily collide at some point. Using the example above: if we allowed a rogue (first grade thief) to be considered a brigand, and also allowed them to be considered a LUKless sin, then any level 27 rogue who aspires to advance to second grade brigand (with a class of “bandit”) or to second grade LUKless sin (with a class of “assassin”) is somehow considered to be both, at least for the time being. And worse yet, if they instead went the permarogue route — while still being a non-dagger-using melee thief — they would presumably be a brigand, a LUKless sin, and a permarogue all at once. These collisions are not the product of the player’s choice (as was the case with the permarcher-woods(wo)man), but rather, are a product of sloppy definitions.

    So, with that in mind, the above quotation summarises how we wish to formalise classes as part of our odd job definitions. The basic structure is thus: a single nonempty set of classes being associated with each odd job. And the constraint is: each set contains all classes c such that it’s possible for a character whose class is c to be a “genuine specimen” (in the above sense) of the associated odd job.

    Oh, and also, we will only be considering classes up to, and including, grade two. This is for generality; classes that have a grade higher than two can simply be collapsed into the lowest-grade class that is a member of their throughclass. For example, we can conflate “chief bandit” and “shadower” with bandit, thus eliminating the need to use the terms “chief bandit” and “shadower” entirely.

    Locations

    Every odd job is associated with a location of some kind, in order to accommodate our islanders and our campers (and their exact analogues from later pre-BB versions, e.g. roadies and snowlanders). There are plenty of interesting locations that can be associated with a given character build, but our focus is narrow: we only want to define some odd jobs. So, for that purpose, there are only three possible values for the location of a particular odd job:
    • Camp
    • Maple Island
    • Outland
    …Which should be self-explanatory. The only slight caveat is that we are using these terms broadly:
    • “Camp” refers to any camp from any pre-BB version of MapleStory. This includes, for example:
      • The “classic camp”, which looks visually similar to Maple Island (grass, dirt, mushrooms, sky, etc.), with the exception of being populated by Tutorial Jr. Sentinels.
      • Later versions of the same camp, which are visually indoors (featuring conveyor belts, image projectors, etc.) and force the player to wear a full-body green apple suit (whence “applelander”).
      • Empress’ Road (whence “roadie”).
      • The tutorial region of Snow Island (populated by Tutorial Murus), whence “snowlander”.
    • “Maple Island” refers to any version of Maple Island, as well as any Maple-Island-equivalent region from any pre-BB version of MapleStory.
    • “Outland” refers to the union of all regions that aren’t already included within the above.
    Stats
    Within the list of odd jobs on the Oddjobs website, the stats used by a given odd job are addressed in two ways:
    • A list of “primary” stats, and a list of “secondary” stats.
    • A list of stat constraints.
    And, in particular, the stats in question are:
    • STR
    • DEX
    • INT
    • LUK
    • MAXHP
    • MAXMP
    Primary stats, secondary stats
    Defining what “primary” and “secondary” mean above can be a little tricky. But this should suffice:
    • A stat s is “primary” for a job j when one or more of the following are true:
      • j requires, by definition, having a base s that is significantly more than the minimum amount of s. The minimum amount of s might depend on j’s classes, e.g. 4 is usually the minimum for INT, but that’s raised to 20 in the case that j enforces being a mage. The minimum amount of s also might depend on j’s required equipment, in the case that j requires some particular equipment item that has stat requirements. For example, magelanders are forced to use the Metal Wand, which has a minimum total INT requirement of 55.
      • m is a mode of attacking that is a primary method of dealing damage for j (many odd jobs have multiple such modes), and s is the stat (out of all six stats) that contributes the most positively to m’s expected damage output. In the case of a tie (multiple stats contribute the most positively to m’s expected damage output), all stats s that are tied and would otherwise qualify as secondary stats (if they weren’t primary stats) are considered primary stats. Other stats s that are tied are considered to be secondary (unless they are already primary anyways!).
    • A stat s is “secondary” for a job j when s is not primary for j, and one or more of the following are true:
      • Nontrivial amounts of total s are required to equip one or more of the items that are idiomatic equipment for j.
      • m is a mode of attacking that is a primary method of dealing damage for j (many odd jobs have multiple such modes), and s is a stat that contributes positively to m’s expected damage output.
    • A stat s is “tertiary” for a job j when s is neither primary nor secondary for j. It is rare to explicitly name tertiary stats for a job, as knowing the primary and secondary stats is enough to know that all other stats are tertiary.
    Slightly wonky, but MapleStory has some rather strange mechanics and weird corner cases that force us to word this very carefully. This is also, obviously, far from the only possible way to reasonably define these terms — but it should be good enough for our purposes.

    With that in mind, we can formalise the primary and secondary stats of a given odd job as simply being two sets (each possibly empty) of stats, selected from the universe {STR, DEX, INT, LUK, MAXHP, MAXMP}. We don’t necessarily have to specify that this pair of sets is disjoint, but because of our definitions of “primary” and “secondary” above, they will end up being disjoint anyways.

    Stat constraints

    Within the list of odd jobs on the Oddjobs website, stat constraints are given as a list of constraints, and the implication is that we take the conjunction of these constraints. Each item in the list is generally written as ab, where ℛ is one of the following binary relations:
    This latter symbol means “is much greater than”, and is used to denote that the left-hand side has to be considerably larger than the right-hand side, not merely mathematically larger. And a and b are usually(!) either a constant natural number (e.g. 4), or some stat (e.g. DEX). It gets a little hairier with, for example, the stat constraints of gish and of gishlet — but we can gloss over that, because I don’t want to actually define our stat constraints in that way for our purposes.

    Rather than adopting this method, I want to do something fundamentally different, albeit loosely inspired by the way that I’ve done it for the list on the Oddjobs website. Like the aforementioned method, I want to express stat constraints as a conjunction of zero or more (but still a finite number, of course) constraints. But, instead of framing each individual constraint in terms of a binary relation, I want to break the constraints into a few possible cases. Each possible case is formalised as a higher-order function that takes in a stat (i.e. an element of the set Stat = {STR, DEX, INT, LUK, MAXHP, MAXMP}), and yields a predicate. The predicate’s sole argument is a natural number representing the value of the corresponding base (i.e. without any equipment/buffs) stat of the character. In other words, each case is some function: Stat ({0, 1}).* Each concrete constraint, then, is the result of applying such a higher-order function, and the constraint is satisfied iff it yields true (or 1, or whatever you wanna call it) for the given character. In the following list of cases, s is any arbitrary stat:
    • Less(s)

      This function gets its name from the English suffix-less”, which is commonly used to describe character builds in MapleStory: “DEXless”, “LUKless”, etc. This expresses constraints that are, in the Oddjobs list, expressed by using equality (“=”) to equate the stat (e.g. STR) with its minimum (e.g. 4 for most classes, 35 for warriors). The constraint is simply that the character cannot have a base s that is significantly higher than the minimum value of their s.
    • Ful(s)

      This function gets its name from the English suffix “-ful”, which is the opposite of “-less” in some sense. If Less(s) expresses that the character mustn’t have any base s, then Ful(s) expresses that the character must have some significant amount (above the minimum) of base s. This expresses constraints that are, in the Oddjobs list, expressed by using “≫” to constrain the stat (e.g. STR) to be considerably larger its minimum (e.g. 4 for most classes, 35 for warriors).
    • Pure(s)

      This function is a stronger version of Ful(s). Rather than expressing that the character has a significantly high base s, Pure(s) expresses that the character has put all of their AP into s (at least, as much as possible). The term “pure” is also in common parlance: a “pure LUK thief” is understood to be a thief that is STRless and DEXless. We can allow some special exceptions to the constraint that the character has “put all of their AP into s”, for the purpose of HP/MP washing (if such a mechanic exists in the game implementation), and/or for the purpose of “bloodwashing”/“bluewashing” to some degree†.
    A smol, but significant, addition here is that we actually want each constraint not to be just one predicate, but rather, to be the disjunction of one of more predicates.‡ This lets us easily cover a few edge cases (e.g. gishes), but is usually unnecessary (i.e. it will usually be the disjunction of just one predicate, which is the same as just the predicate itself).

    *This is somewhat simplified; “ℕ” should really be “Char”, or something like that. We need to know more about the character than just a single number in order to evaluate these predicates, but the main thing that we are looking at is their base s (for whatever s Stat was passed in as an argument).

    †I say “to some degree” because we can’t allow purely washed characters to qualify for this exception. Characters that spend all of their AP to further some combination of HP/MP washing, “bloodwashing”, and “bluewashing” would then be able to satisfy Pure(s) and Less(s) at the same time, which we obviously want to disallow.

    ‡We’re getting what is called a “product of sums form” in digital logic.

    Equipment

    Because we are going to allow pugilists to wear shields (see §2 and §3 of this part), the only constraints that we need to place on equipment is on weapons. So, to specify the equipment that is allowed for a given odd job, we can simply specify the set of all weapons that they are “allowed” to use. The key word here is “allow” — this still includes weapons that the odd job is spiritually allowed to use, but that the odd job is actually incapable of wielding in practice. For example, brigands are allowed to use any polearm; nevertheless, they can never wield the Eclipse — despite it being a polearm — due to it being a warrior-only equipment item. This makes equipment constraints more comparable, easier to define, and more general.

    There are basically three ways that we might define weapon constraints. For any given odd job, we will pick exactly one of them:
    • No constraints. This is just the set of all weapons in the game.
    • A nonempty set of weapon types. Each such weapon type is the set of all weapons that are of that type, and we simply take the union of all of these sets. The types that exist are as follows:
      • One-handed sword (item IDs: 130dddd*)
      • One-handed axe (item IDs: 131dddd)
      • One-handed BW† (item IDs: 132dddd)
      • Dagger (item IDs: 133dddd)
      • Wand (item IDs: 137dddd)
      • Staff (item IDs: 138dddd)
      • Two-handed sword (item IDs: 140dddd)
      • Two-handed axe (item IDs: 141dddd)
      • Two-handed BW (item IDs: 142dddd)
      • Spear (item IDs: 143dddd)
      • Polearm (item IDs: 144dddd)
      • Bow (item IDs: 145dddd)
      • Crossbow (item IDs: 146dddd)
      • Claw (item IDs: 147dddd)
      • Knuckler (item IDs: 148dddd‡)
      • Gun (item IDs: 149dddd)
    • A nonempty set of individual weapons (i.e. individual item IDs).
    There is just one weird corner case here: attacking with no weapon equipped. Attacking with no weapon is similar enough to using a knuckler that we consider “no weapon at all” to be a member of the set of all knucklers. Obviously, it has no item ID, but we can just pretend that it has an ID of 0. Thus, the weapon constraints for pugilist are expressed as the singleton set {0}.

    Beyond just constraints, we also (as per §3 of this part) want to accommodate “canonical” weapons as part of each odd job’s definition. While the weapon constraints tell us the set of all weapons that the odd job is spiritually allowed to use, the set of canonical weapons tells us which weapons the odd job idiomatically uses. The set of canonical weapons is always a subset (although, not necessarily a strict one) of the set of allowed weapons. Otherwise, the set of canonical weapons is defined very similarly to the set of allowed weapons. One caveat is that we want to disallow defining the canonical weapons in terms of individual IDs, unless the allowed weapons are also defined in terms of individual IDs. Again, this makes things more comparable, easier to define, and more general.

    *Here, dddd is any string of four decimal digits.

    †Here, “BW” stands for “blunt weapon”, and is synonymous with “mace”.

    ‡We make an exception for fighting with no weapon equipped, which has an ID of 0 despite being considered a knuckler. See the main text.

    Skills & attacks

    Weapon constraints (and class constraints, obviously) naturally put limitations on the abilities (active or passive) that a job can make use of. For example, despite the fact that most definitions of brigand don’t explicitly disallow the use of Savage Blow, brigands cannot use Savage Blow. Using Savage Blow requires that the user be wielding a dagger, and brigands cannot wield daggers. That being said, some odd jobs feature constraints on the abilities that they can use which cannot be captured simply by a combination of class constraints & equipment constraints. We can express these skill/attack constraints with the use of just one predicate, in addition to associating yet another set with each odd job. Our new predicate is (in the definition of this predicate, j is any arbitrary job):
    • Ammo(j)

      This predicate is satisfied iff j is allowed to use ammunition. Like with weapon constraints, the word “allowed” here is spiritual — even a job that would likely never want to use ammunition (e.g. DEX warrior), or a job that is de facto incapable of using ammunition (e.g. dagger warrior), can still satisfy this predicate.
    And the set that we want to associate with each job is the set of all non-zeroth-grade skills that that job is allowed to make use of. We ignore zeroth-grade skills because none of our odd job definitions disallow any particular zeroth-grade skills. For jobs that have no skill constraints, it is immaterial to our definition whether the corresponding set of skills contains all skills that are possibly available to that job (based solely on the job’s possible classes), or just all skills in general. For jobs that do have explicit skill constraints, we consider all and only those skills that are possibly available to the job in question (again, based solely on the job’s possible classes). We also consider skills from grades one, two, three, and four, for maximum generality. Furthermore, we collapse multiple skills that only really differ in what class and/or weapon type they are available to, into a single skill with a single ID. An extreme example of this kind of collapsing is Maple Warrior (MW); there is (internally) a different MW skill for every fourth-grade class in the game, but we simply take the smallest skill ID out of all of them (1121000, in the MW case; heroes just happen to have the smallest class ID of any fourth-grade class) and conflate the rest with it. This same logic applies to masteries, boosters, final attack skills, etc.

    Fancy Amps w/ xX17Xx

    I joined permarogue extraordinaire xX17Xx in her Fancy Amps grind, on the last stretch before the big level 90. She and my undead daggermit alces make a pretty good Fancy Amps duo, with both of us tearing up the amps with our respective first-job rogue skills:

    [​IMG]

    I was already fairly close to levelling up, so I hit level 92(!):

    [​IMG]

    …Which was just enough to max out Alchemist! Now my Barbarian Elixirs really over-heal me… Next up is maxing SW (that should be interesting…)!

    And with some more grinding, we hit the glorious moment that xX17Xx has been waiting for:

    [​IMG]

    At long last, xX17Xx can wield the ultimate permarogue weapon: the NRC!!! Congrats again :D

    Bossing with friends

    I was invited to do some more bossing with some of rusa’s MPQ buddies: Eoka, Gruzz, Harlez, and xBowtjuhNL! And this time, I invited along brand-new shadower of Flow, Bipp (Celim, Sommer, Cassandro, Copo, Fino, Sabitrama)!

    I hopped onto my pure STR bishop cervid to join the crew for a full six-man Ravana fight!:

    [​IMG]

    It was fun to see the occasional big red number pop up on Ravana’s head as a result of me whacking it with xBowtjuhNL’s SE crits x)

    And, after killing Rav, we headed to Deep Ludibrium for some Papu action. I had never actually fought Papu on cervid, despite having done the prequests a while ago. So I had to pick up a Ludibrium Medal from the scary guys at the bottom of the tower:

    [​IMG]

    I realised that fighting the Papulatus Clock was going to be a bit of a doozy, considering that its frequent dispels would eliminate all of my many buffs, including MG and Invincible. Because I would, obviously, be meleeing the beast, and I don’t have Power Stance, I was forced to sit on the bottom and be subjected to dispels and 1/1s whenever Papu felt like it. But I figured I might as well give it my best shot, so I did. Much buff-icon staring ensued:

    [​IMG]

    But, unfortunately, it wasn’t long before I got hit immediately after being dispelled:

    [​IMG]

    Very sad. I seriously considered switching characters for the next run, but someone suggested that I try actually taking on a Healing role (lol) instead. So, I pulled out my healing stick and gave it a go. With just a little bit of caution, this worked well enough to make it through a Papulatus run and finish the associated questline!:

    [​IMG]

    After that, we went BF hunting! So I swapped over to my darksterity knight rusa and proceeded to die at least twice to this absurd monster as a result of being bad at the game:

    [​IMG]

    And, the next day, we returned to Papu, with me taking rusa this time — to avoid the pain of trying to STR mage in the presence of Papulatus.

    [​IMG]

    …And I still have yet to see this clocktower freak drop a teddy bear! Come on!!

    Doing Shaolin Temple quests for the first time

    I was informed — by the same folks with whom I had just been bossing — that the Shaolin Temple region has a certain very rewarding questline within it: “The Secret of the Sutra Depository”. This is a level ≥120 quest, which is kind of neat, although unfortunately it appears to require the player to take fourth job advancement (sorry perma-thirds, perma-seconds, perma-firsts, and perma-zeroths!). Luckily for rusa, she is a full-blown darksterity knight, so she was able to start the questline. The quest largely asks you to go through the Sutra Depository and kill stuff, collecting some ETCs along the way. Here is rusa, on floors 1–2 of the Sutra Depository, fighting Mini Bronze Martial Artists for their hearts:

    [​IMG]

    The hearts (the ETCs) are the most important part, as the speed at which you finish the required kills outpaces their drop-rate pretty quickly. Plus, the last quest in the questline asks for an extra 30 of each type of heart. For the golden martial artists, we headed outside to The Forest of Towers:

    [​IMG]

    The “MISS”es that you see in the image above are, needless to say, not coming from rusa’s attacks…

    In any case, we eventually got all of the hearts that we needed for me and xBowtjuhNL to finish the questline. From the front to the back of this questline, a grand total of 4.05M base EXP is handed out — after MapleLegends’s 3× quest EXP multiplier, that comes out to 12.15M EXP!! Very nice!!! I’ll have to come back and do this questline on cervid and capreolina

    Oh, and now that we had all finished this questline, we were eligible to fight the big bad master martial artist of the Shaolin Temple: Jiaoceng* (sometimes referred to as simply “JC”)! Of course, we aren’t exactly badass enough to actually beat this guy, but that wasn’t going to stop us from trying it out. Although Jiaoceng’s other stats are not really all that impressive for a level 150 boss, he does have 80M MAXHP, which proves to be a bit of an issue, given that you only have ten minutes to kill him…

    [​IMG]

    We bailed out after three or four minutes, but it was pretty fun to check it out for the first time!

    *Other versions of the game romanise this name as “Wulin Yaoseng”, which appears to be the pinyin (without tone marks; the actual pinyin would be “Wǔlín Yāosēng”) for “武林妖僧”. Google Translate translates this into English as simply “martial arts monk”.

    capreolina takes a vacation in Victoria Island

    Now that my woodsmaster capreolina has decided to head to Victoria Island for the time being (maybe I’ll go back to Deep Ludi for cards another time), it was time for a little questing, and a special edition of Card-Hunting With capre™:

    As readers of this diary already know, I don’t hunt area bosses that are used for quests… unless I need them for a quest. Or, unless I’m a viclocker! Being a viclocker means that Victoria Island area bosses are an extremely valuable resource, so I hopped onto my vicloc dagger spearwoman d34r to hunt some area bosses, and get cards for capre along the way! This proved to be more than a little bit annoying, due to capre and d34r being on the same account. But it worked out.

    First up were some easy ones: Mano

    [​IMG]

    …and Stumpy:

    [​IMG]

    Not bad. I managed to get roughly ten Saps of Ancient Tree for my vicloc clericlet d33r, plus a good scroll or two, along the way.

    I hunted down my arch nemesis, the Golden-River-withholding demon: jrog.

    [​IMG]

    I even got capre her very own Balrog Chair o_o:

    [​IMG]

    Oh, and the beast decided to taunt me by dropping another Golden River at my feet:

    [​IMG]

    It was only 77 WATK (3 below average), and fellow viclocker xXCrookXx scrolled it, passing some four or five 60%s on it. Not bad, at that point, but certainly worse than the Golden River that d34r already uses.

    capre headed over to Florina Beach to complete the King Clang questline, hunt a few cards, and loot some Casey cards:

    [​IMG]

    [​IMG]

    [​IMG]

    It seems that, despite being probably the hardest to kill out of these three species, Torties have by far the highest card drop rate. Just from hunting in the best map for Clangs, I ended up with way too many of these dumb Tortie cards without even finishing either of the other two sets…

    And I did find a Casey to kill for my quest:

    [​IMG]

    …And polished off the Casey card set as well. While I was hunting Casey, I got a cape STR 60%, which was exactly what I needed to finish my cape! d34r had been using a 10 STR (passed two 30%s and two 60%s), 1 slot cape for a while, and I was blessed with another 60% passing to finish it off!:

    [​IMG]

    12 STR!! That’s gonna be real hard to beat…

    I also did the Dyle questline on capre:

    [​IMG]

    [​IMG]

    …And hunting just one more Dyle card after that was enough to polish off capre’s Dyle card set.

    Likewise, even though I had already finished Faust’s card set by this point, I wanted to do the Faust questline as well. So I found big monke:

    [​IMG]

    The Faust questline was enough to bring capre to the 300 fame mark!:

    [​IMG]

    Not too shabby for someone who never buys fame.

    And, last but certainly not least, I wanted to finish off the area bosses/anti-bot monsters of Victoria Island by completing the Mushmom card set. Easier said than done:

    [​IMG]

    But, along the way, d34r got a Mushmom chair!!:

    [​IMG]

    d34r now has essentially all of the vicloc-native chairs (i.e. excluding event-only chairs)! At least, all of the ones that you can get without divorcing and remarrying all day…

    With the area boss hunting finally over (phewf…), I went to hunt some non-boss monsters of Victoria Island, and do even more quests along the way. I got a random Echo of Hero, so I decided to take that opportunity to do the Dark Drake and Ice Drake sets. As I was walking to Cold Cradle, a couple of normal Drakes started indiscriminately throwing cards at me:

    [​IMG]

    And I went and did the aforementioned two sets:

    [​IMG]

    [​IMG]

    These turned out to be a lot easier than I thought they would be. At one point, I went to Drake’s Nest in order to get the Dark Drake cards more quickly — but that turned out to be a mistake, as by the time I got my last Ice Drake card, I already had a few excess Dark Drake cards. While I was there, I stumbled across a rare and legendary item:

    [​IMG]

    That’s right — Wild Kargos do drop cards. Crazy, I know. In fact, I tried my luck, and got so lucky that I was able to get more cards (3) than I had ever gotten in my career (across all of my characters combined) of doing the Ellin Ring questline and the A Spell That Seals Up a Critical Danger questline. Will I get those last two cards and finish the set? Only time can tell whether or not I’m able to produce another smol miracle.

    I went to do Muirhat’s questline, which meant starting with The Half-written Letter. This quest is just some back-and-forth between a few NPCs (one of which is hidden, and starts off the questline). I noticed that, in the dialogue of this quest, Athena Pierce mentions a few interesting tidbits of Maple history. In particular:
    • Victoria Island (previously simply “Victoria”) and Ossyria used to be a single contiguous landmass.
    • Kyrin (the leader of the Pirates, and the primary pirate job instructor) grew up in Henesys as a result of her father going off to fight the Black Magician when Kyrin was still a newborn child. Kyrin’s father, Destonen*, left his newborn daughter in Athena Pierce’s hands.
    • Kyrin overheard what happened to her father at some point, and as a result, left without notice. Athena Pierce searched high and low (including the breadth of Victoria Island, Maple Island, and Ossyria†, among possibly other places) for Kyrin and could not find her.
    • Kyrin eventually returned to Victoria Island, settling Nautilus Harbour with her crew of pirates, thus founding the Pirates as we know them.
    I admit that I don’t know much about the Black Magician (they seem to be a mysterious “bad guy who does all of the bad things” character), but I was curious about this Destonen guy. So I did a brief WWW search, and found this very helpful thread on Reddit (archived). In the thread, Reddit user Omgitsnothing1 asks about the history and geography of Elluel (which, despite technically being a part of Victoria Island, does not exist in MapleLegends, so I’ve linked to the relevant MapleWiki page). Reddit user Saught’s response gives a detailed assessment of the known history of Elluel, spanning from the GMS version that MapleLegends is based on (v62) up to v209, which was released in December of 2019. GMS v62 is of importance here because it’s the version in which pirates were released, and thus the version in which this quest (The Half-written Letter) first appeared.

    I found out that Yuris, who can be found in the Altaire Camp and is involved in the Ellin Ring questline in MapleLegends, is Kyrin’s mother. Furthermore, Tess (found in the same location, and involved in “Lazy Tess” and “Lazy, Lazy Tess”) is Kyrin’s older brother. MapleWiki mentions that Yuris is an elf (similar to Athena Pierce, who is one of the last remaining elves in the “present day” timeline, alongside the fairies of Ellinia and of Orbis), and Destonen is a human, thus making Kyrin and Tess both half-elves.

    But anyways, Muirhat didn’t give a rat’s ass about any of that. He just wanted me to kill some Stone Golems:

    [​IMG]

    …And some Dark Stone Golems, and some Mixed Golems:

    [​IMG]

    …And it was here that I stopped the questline, for now, before delving into the Excavation Site region of Perion.

    Instead, I went and did the Sauna Robe questline. I had almost everything I needed, except for those pesky 50 banan. I didn’t feel like politely asking the monkes for their banan, so instead I ruthlessly murdered them and took the banan off of their lifeless bodies:

    [​IMG]

    Does that make me a bad person? Yes. But it also makes me the proud owner of a clean Sauna Robe:

    [​IMG]

    Stylish.

    With that, I started card-hunting the aforementioned Excavation Site region. I started with Rocky Masks first, but on the way there, the Ghost Stumps started throwing cards at me without being prompted at all:

    [​IMG]

    And so I worked on the Wooden Mask and Rocky Mask cards:

    [​IMG]

    [​IMG]

    Stone Masks turned out to be, by far, the most difficult out of Ghost Stumps, Wooden Masks, and Stone Masks. Just by hunting in the Rocky Mask map, I ended up with many excess Wooden Mask cards — and going back to get the Ghost Stump cards, they were far easier to finish than Rocky Masks were. And with that, an almighty ring upgrade:

    [​IMG]

    Wowie~!! Just One More To Go™ for the ultimate prize: T10! :D

    So I got back to work right away, continuing the Excavation Site region by getting the Skeledog:

    [​IMG]

    …and Mummydog:

    [​IMG]

    …card sets. These turned out to be (thankfully) a good bit easier than they were when I got these two sets on d34r. So I headed to d34r’s favourite map to hunt for daggers on: Camp 3.

    [​IMG]

    [​IMG]

    And I headed back to Camp 1 in order to finish off the Skeleton Soldier set, once I got to 5/5 Officer Skeleton.

    And finally, I did start the most difficult card set of the region: Commander Skeles.

    [​IMG]

    I think I’m 2/5 now, but this one is not so forgiving. And I think I’ve fallen off of the map at least a dozen times now…

    *In MapleLegends, Destonen is spelled as “Testonen”. This is accurate to the original version of the quest, but he is generally referred to as “Destonen” elsewhere, so I use the latter spelling here.

    †Just so that no one makes the same mistake that I did for a long time: the continent of Ossyria might be bigger than you think. Ossyria includes, as you probably already know, the El Nath Mountains region:
    …as well as the Aqua Road region:
    But you might not know that Ossyria also includes the entire Ludus Lake region:
    …as well as the Minar Forest region:
    …as well as the Temple of Time region, as well as the Mu Lung Garden region:
    …as well as the Nihal Desert region:

    A crumb of the PPQ
    As a brief break from my Victoria Island card-hunt on capreolina, I was called upon by Cortical (SussyBaka, CokeZeroPill, GishGallop, moonchild47) to help them with some peepy queues. So I logged onto my swashbuckler hydropotina to do a handful of PPQs with Cortical and Brvh:

    [​IMG]

    Although the session was short, we were able to get two(!) Lord Pirate cards for Cortical, which goes a long way towards freeing them from the terrible clutches of PPQ…

    A crumb of the LPQ

    I did some more LPQs as my DEX brawler LPQ mule sorts, alongside fellow LPQ mule Sangatsu (xXCrookXx, Level1Crook, Lvl1Crook), claw clericlet Cassandro (Bipp, Celim, Copo, Sommer, Fino, Sabitrama), and DEX page attackattack (xX17Xx, partyrock, drainer), who also played as her woodswoman maebee :)

    Here, we can observe the golems* in the LPQ stage 5 thief portal misbehaving:

    [​IMG]

    Not shown above is that, when I first entered the map, one of the golems from the lowest golem-spawning platform quickly flew from its normal position, to the bottom of the map, where you can see the very top of it in the image above. Obviously, anyone who has been in this thief portal before knows that there aren’t supposed to be golem(s) down there! Why would there be? You can’t get down there anyways, even if you wanted to give it a “hug”. Fortunately, I was not affected by this.

    But I have been killed by this bug before. In the main LPQ stage 5 map, there are six portals which must be completed, in order to get the tickets needed to clear the stage. The topmost one is the mage portal, which can only be completed by characters who have at least level 1 Teleport. The bottom-most one (which is very far below all five other portals) is the “thief” portal, which can be completed by thieves thanks to Dark Sight, by brawlers (like sorts) thanks to Oak Barrel, and by some warriors who have enough MAXHP to take hits from the golems. The other four portals can be completed by any character. I once (when playing my swashbuckler hydropotina) did the second-to-bottom portal, which is quite far above the golems in the map. When I finished the portal and exited back into the main stage 5 map, I was instantly killed by a golem that rapidly flew past me, towards the bottom where it normally should be. This resulted in me dying directly on top of one of the normal (i.e. neither mage nor “thief”) portals… I sent out an @gm ticket, and before long, a GM appeared and asked me how in the god damned hell I managed to die there. Still bewildered, I said that I had no idea, and that there must have been some kind of bug, for the golems to fly all the way up here. Thankfully, the GM revived me and I was able to continue through the rest of the PQ normally. To this day, I have no idea why this happens, and I’m just thankful that it didn’t manage to kill sorts this time…

    Here I am, with Sangatsu, Cassandro, and attackattack on the front lines, killing the nippled clockhat whalemonster:

    [​IMG]

    And later, Sangatsu encouraged attackattack to switch to her woodswoman maebee, so we got to do an LPQ with her!:

    [​IMG]

    And even later, Sangatsu & I killed Alişar alone, as an LPQ mule duo:

    [​IMG]

    Easily done! :)

    *As of this writing (2021-10-11), the MapleLegends library page for King Block Golem from Another Dimension claims that there is a single spawn for this monster in the main Night Market map. The MapleLegends library page for that map, however, claims that it has no monster spawns whatsoever — which appears to be much more accurate, as I’ve never seen any monsters there myself, in-game. It doesn’t really matter, but still, kinda a weird library bug…

    cervine refrigerates more optical discs

    And finally, it just wouldn’t be another entry in my diary without at least a few CDs.* After even MOAR CD grinding with Level1Crook (xXCrookXx, Lvl1Crook, Sangatsu), my I/L magelet cervine has managed to worm her way into being level 111~!:

    [​IMG]

    My power waxes! Muahahaha~!! Soon, I will be the LUcKiest mage of all time!!! AHAHAHAHA

    Not pictured: spending hours hoeing in the CDs map with Level1Crook instead of actually grinding.

     
    • Great Work Great Work x 2
    • Like Like x 1
  11. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    (You can also read the original diary entry here. If odd-jobbed characters interest you, you should know that Oddjobs is recruiting!)

    rangifer’s diary: pt. lxix (nice)

    Taxonomising odd jobs, pt. iv: Microtaxonomy & encodings. §5

    In the previous section (§4) of this part (pt. iv), I said:
    And so, the previous section was dedicated to one way(!) of formalising the answer to the question: “How do we give a description of an odd job?”. Putting aside the fact that we may (read: will) have to bend/modify that formalisation as we go forward, we can take that formalisation and indeed try to “explicitly construc[t] the set that we’re after, element by element”. But first, some modifications are in order (booooo!! I know, I know…):

    Errata

    “Primary stats, secondary stats”

    Corrected version:

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    […]
    • A stat s is “primary” for a job j when one or more of the following are true:
      • j requires, by definition, […]
      • j has a location of “outland”, and m is a mode of attacking that is a primary method of dealing damage for j (many odd jobs have multiple such modes), and s is the stat (out of all six stats) that contributes the most positively to m’s expected damage output. (In the case of a tie, all stats that are tied for first are considered primary stats.)
      • j does not have a location of “outland”, and m is a mode of attacking that is a primary method of dealing damage for j (many odd jobs have multiple such modes), and s is the stat (out of all six stats) that contributes the most positively to m’s minimum per-attack damage output. (In the case of a tie, all stats that are tied for first are considered primary stats.)
    • A stat s is “secondary” for […]
    […]

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    There are two main differences between this version of the list found within “Primary stats, secondary stats”, and the original. One difference is the addition of “j has a location of ‘outland’, and” to the beginning of the second item of the first sublist. And the other difference is the addition of a third item to the first sublist. The reason for these additions is that, when considering outlanders, expected damage output is an appropriate single magnitude to look at when considering the magnitude of damage outputs in general. But, for non-outlanders (campers and islanders), this is no longer appropriate. These additions ensure that, instead, minimum per-attack damage is taken into consideration for non-outlanders.

    In addition, within the second item of the first sublist, the wording related to ties is cleaned up, so as not to be unnecessarily complicated.

    “Skills & attacks”

    Corrected version:

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    […]
    • Ammo(j)

      This predicate is satisfied iff j is allowed to use ammunition. In this context, “ammunition” includes both physical items used as ammunition (arrows, stars, etc.) and virtual ammunition provided by skills like Soul Arrow, Shadow Stars, etc. Like with weapon constraints, the word “allowed” here is spiritual […]
    […]

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    This change clarifies the role that skills like Soul Arrow have in the Ammo(j) predicate.

    The odd job universe (version 1.0.0)

    I’ve taken what’s been discussed and worked on so far, and used it to write a single RON (Rusty Object Notation) file that defines/enumerates the universe of odd jobs that we want to consider. You can find said RON file here.

    RON

    For those not familiar with RON — which is probably most readers, as it doesn’t enjoy extreme popularity — it’s kind of like JSON, but modelled after the semantics (and syntax) of the Rust programming language, rather than those of the JavaScript programming language. RON is somewhat more complex than JSON, but not by much, and (in my highly biased opinion) fixes most, or all, of the issues of JSON as a format. For our purposes, RON allows us to:
    • Cleanly express algebraic data types (viz. combinations of products and sums). This also includes using proper option types instead of arbitrary use of null.
    • Express proper lists, which are actually homogeneous. In JSON, for example, lists are heterogeneous, meaning that a single list can contain zero or more of any values whatsoever, even if those values are of mixed types. This makes JSON lists more like tuples… except that they don’t have a particular number nor ordering of their types… so they’re not really like tuples, either. This lack of structure is solved by RON’s homogeneous lists, combined with its algebraic data types.
    • Get some syntactical niceties, like optional trailing commas, comments, etc.
    If you wanna know more about RON, you can check out the associated GitHub repository.

    Reading RON (visually)

    Besides knowing the actual syntax of RON itself, you might want syntax highlighting to help read RON data with your eyeballs. Unfortunately, RON is not super widely-supported. However, you still have some options:
    Option types
    If you’re reading the raw RON, be sure not to get confused by the use of option types. In Rust, Option is defined like so:
    Code:
    enum Option<T> {
        None,
        Some(T),
    }
    
    If you’re more comfortable with the syntax of functional languages, this would instead look like (using Haskell-style notation):
    Code:
    data Option a = None | Some a
    Which means that, when expressing the allowed non-zeroth-grade skills for a given job, we either want:
    • a list of natural numbers representing a set of allowed skill IDs;
    • or nothing at all, to represent “all skills”, i.e. no restrictions.
    So, in the former case we have a value that looks like Some([ ... ]), and in the latter case we have a value that looks like None. So if you see something like:
    Code:
    skills: None,
    This does not mean that the job is not allowed to use skills at all. Quite the opposite; it can use any skills. If we wanted to express the inability to use non-zeroth-grade skills whatsoever (which is true for begunner), we would instead want:
    Code:
    skills: Some([]),
    Product-of-sums

    As per the previous section of this part, we are using a product of sums form to represent stat constraints. In the RON data, we represent this as a list of lists. We take the logical disjunction of each inner list, and then the logical conjunction of the outer list. Take gishlet for example, within whose definition we have:
    Code:
    constraints: [
        [Ful(STR), Ful(DEX)],
        [Ful(LUK)],
        [Less(INT)],
    ],
    
    Formally, this represents:

    HasGishletStats(c) ≝ [Ful(STR)(c) Ful(DEX)(c)] Ful(LUK)(c) ∧ Less(INT)(c)

    …which defines a predicate HasGishletStats that takes as its sole argument a PC named c, and is satisfied iff c meets the stat requirements to be a gishlet.

    Using the RON data

    I made a smol library to handle this weirdly specific RON schema. You can find it here, but it’s probably not all that useful to look at or use. Instead, I intend to use the library to handle the odd-job-definition data within this diary. For starters, I spent absolutely way too long* writing a program that just spits out a Markdown table so that I could throw it in here. So here it is:

    nameclasseslocationprimary statssecondary statsstat constraintsallowed weaponscanonical weaponsammo?allowed skills
    camperbeginner, noblesse, aran (beginner)CampDEXSTR[all]one-handed swords, one-handed axes, one-handed BWsyes[all]
    LUKlanderbeginnerMaple IslandLUK, DEX, STRPure(LUK)clawsclawsyes[all]
    DEXlanderbeginnerMaple IslandDEXSTRPure(DEX)[all]one-handed swords, one-handed axes, one-handed BWs, daggers, polearmsyes[all]
    STRlanderbeginnerMaple IslandSTR, DEXPure(STR)[all]one-handed swords, one-handed axes, one-handed BWs, daggers, polearmsyes[all]
    hybridlanderbeginnerMaple IslandDEX, STR, LUK[Ful(STR) ∨ Ful(DEX)] ∧ [Ful(DEX) ∨ Ful(LUK)] ∧ [Ful(LUK) ∨ Ful(STR)][all]one-handed swords, one-handed axes, one-handed BWs, daggers, polearms, clawsyes[all]
    magelanderbeginnerMaple IslandDEXINT, LUK, STRwands, staveswandsyes[all]
    LUKginnerbeginner, noblesse, aran (beginner)outlandLUKDEX, STRFul(LUK)clawsclawsyes[all]
    DEXginnerbeginner, noblesse, aran (beginner)outlandDEX, STRPure(DEX)[all]one-handed swords, one-handed BWs, daggers, two-handed swords, polearmsyes[all]
    STRginnerbeginner, noblesse, aran (beginner)outlandSTRDEXFul(STR)[all]one-handed swords, one-handed BWs, daggers, two-handed swords, polearmsyes[all]
    wandginnerbeginner, noblesse, aran (beginner)outlandSTRDEX, INT, LUKwands, staveswandsyes[all]
    HP warriorsword(wo)man, fighter, page, spear(wo)manoutlandMAXHPPure(MAXHP)[all][all]yes[all]
    DEX warriorsword(wo)man, fighter, page, spear(wo)man, dawn warrior (1st grade), dawn warrior, aran (1st grade), aranoutlandDEX, STRPure(DEX)[all]one-handed swords, one-handed axes, one-handed BWs, two-handed swords, two-handed axes, two-handed BWs, spears, polearmsyes[all]
    LUK warriorsword(wo)man, fighter, page, spear(wo)man, dawn warrior (1st grade), dawn warrior, aran (1st grade), aranoutlandLUK, STRDEXPure(LUK)[all]one-handed swords, one-handed axes, one-handed BWs, two-handed swords, two-handed axes, two-handed BWs, spears, polearmsyes[all]
    dagger warriorsword(wo)man, fighter, page, spear(wo)man, dawn warrior (1st grade), dawn warrior, aran (1st grade), aranoutlandSTRDEXdaggersdaggersyes[all]
    wand warriorsword(wo)man, fighter, page, spear(wo)man, dawn warrior (1st grade), dawn warrior, aran (1st grade), aranoutlandSTRDEX, INT, LUKwands, staveswandsyes[all]
    permawarriorsword(wo)man, dawn warrior (1st grade)outlandSTRDEX[all]one-handed swords, one-handed axes, one-handed BWs, daggers, two-handed swords, two-handed axes, two-handed BWs, polearmsyes[all]
    DEX magemagician, F/P, I/L, cleric, blaze wizard (1st grade), blaze wizard, evan (1st grade), evanoutlandDEX, STRPure(DEX)[all]one-handed swords, one-handed BWs, daggers, two-handed swords, polearmsyes[all]
    STR magemagician, F/P, I/L, cleric, blaze wizard (1st grade), blaze wizard, evan (1st grade), evanoutlandSTRDEXFul(STR) ∧ Less(INT) ∧ Less(LUK)[all]one-handed swords, one-handed BWs, daggers, two-handed swords, polearmsyes[all]
    gishmagician, F/P, I/L, cleric, blaze wizard (1st grade), blaze wizard, evan (1st grade), evanoutlandSTR, INTDEX, LUK[Ful(STR) ∨ Ful(DEX)] ∧ Ful(INT)[all]one-handed swords, one-handed BWs, daggers, wands, staves, two-handed swords, polearmsyes[all]
    gishletmagician, F/P, I/L, cleric, blaze wizard (1st grade), blaze wizard, evan (1st grade), evanoutlandSTR, LUK, INTDEX[Ful(STR) ∨ Ful(DEX)] ∧ Ful(LUK) ∧ Less(INT)[all]one-handed swords, one-handed BWs, daggers, wands, staves, two-handed swords, polearmsyes[all]
    mageletmagician, F/P, I/L, cleric, blaze wizard (1st grade), blaze wizard, evan (1st grade), evanoutlandLUK, INTPure(LUK)[all]wands, staves, clawsyes[all]
    permamagicianmagician, blaze wizard (1st grade), evan (1st grade)outlandINTLUK[all]wands, stavesyes[all]
    woods(wo)manarcher, hunter, crossbow(o)man, wind archer (1st grade), wind archeroutlandSTR, DEXPure(STR)[all]one-handed swords, one-handed BWs, daggers, two-handed swords, two-handed axes, two-handed BWs, polearms, bows, crossbowsyes[all]
    bow-whackerarcher, hunter, crossbow(o)man, wind archer (1st grade), wind archeroutlandDEXSTRbows, crossbowsbows, crossbowsno[all]
    bowginnerarcher, hunter, crossbow(o)man, wind archer (1st grade), wind archeroutlandDEXSTR[all]bows, crossbowsyesThe Eye of Amazon
    permarcherarcher, wind archer (1st grade)outlandDEXSTR[all]bows, crossbowsyes[all]
    claw-puncherrogue, assassin, bandit, dual blade, night walker (1st grade), night walkeroutlandDEX, STRLUKclawsclawsno[all]
    carpenterrogue, assassin, bandit, dual blade, night walker (1st grade), night walkeroutlandSTRDEXSawSawyes[all]
    grim reaperrogue, assassin, bandit, dual blade, night walker (1st grade), night walkeroutlandSTRDEX, LUKScytheScytheyes[all]
    clawginnerrogue, assassin, bandit, dual blade, night walker (1st grade), night walkeroutlandLUKDEX, STR[all]clawsyesKeen Eyes
    permaroguerogue, night walker (1st grade)outlandLUKDEX, STR[all]daggers, clawsyes[all]
    LUKless sinassassin, night walker (1st grade), night walkeroutlandSTR, LUKDEXLess(LUK)[all]one-handed swords, one-handed BWs, daggers, two-handed swords, polearms, clawsyes[all]
    dagger sinassassin, night walker (1st grade), night walkeroutlandLUKDEX, STRdaggersdaggersyes[all]
    brigandbanditoutlandSTRDEXLess(LUK)one-handed swords, one-handed axes, one-handed BWs, wands, staves, two-handed swords, two-handed axes, two-handed BWs, spears, polearms, bows, crossbows, claws, knucklers, gunsone-handed swords, one-handed BWs, two-handed swords, two-handed axes, two-handed BWs, polearmsyes[all]
    LUKless ditbanditoutlandLUKDEX, STRLess(LUK)[all]daggersyes[all]
    blood ditbanditoutlandMAXHP, LUKDEX, STRPure(MAXHP)[all]daggersyes[all]
    pistol-whipperpirate, brawler, gunslinger, thunder breaker (1st grade), thunder breakeroutlandDEXSTRgunsgunsno[all]
    pugilistpirate, brawler, gunslinger, thunder breaker (1st grade), thunder breakeroutlandSTRDEX[unarmed][unarmed]yes[all]
    begunnerpirate, brawler, gunslinger, thunder breaker (1st grade), thunder breakeroutlandDEXSTR[all]gunsyes
    permapiratepirate, thunder breaker (1st grade)outlandSTR, DEX[all]knucklers, gunsyes[all]
    DEX brawlerbrawler, thunder breaker (1st grade), thunder breakeroutlandDEX, STRPure(DEX)[all]knucklers, gunsyes[all]
    LUK buccbrawler, thunder breaker (1st grade), thunder breakeroutlandLUK, STRDEXPure(LUK)[all]knucklersyes[all]
    armed brawlerbrawler, thunder breaker (1st grade), thunder breakeroutlandSTRDEXone-handed swords, one-handed axes, one-handed BWs, daggers, wands, staves, two-handed swords, two-handed axes, two-handed BWs, spears, polearmsone-handed swords, daggers, two-handed swords, spearsyes[all]
    bullet buccbrawler, thunder breaker (1st grade), thunder breakeroutlandDEXSTRgunsgunsyes[all]
    swashbucklergunslingeroutlandSTR, DEXPure(STR)[all]one-handed swords, daggers, two-handed swords, spears, knucklers, gunsyes[all]
    punch slingergunslingeroutlandSTRDEXknucklersknucklersyes[all]
    bombadiergunslingeroutlandDEXSTR[all]gunsyesBullet Time, Dash, Gun Mastery, Grenade, Gun Booster, Wings, Octopus, Gaviota, Maple Warrior, Wrath of the Octopi, Aerial Strike, Hypnotize, Hero’s Will
    summonergunslingeroutlandDEXSTR[all]gunsyesBullet Time, Dash, Gun Mastery, Gun Booster, Wings, Octopus, Gaviota, Maple Warrior, Wrath of the Octopi, Hypnotize, Hero’s Will

    I was going to comment on the various entries within this table, but mayhaps I shall save that for next time…

    *Why can I not stop myself for pre-maturely optimising the hell out of a single script that I really only intend to run once, and that will definitely finish executing in under a second even without compiler optimisations enabled? Not even I know the answer to this question.

    Some more MPQ, with your host, pan oiler

    I responded to a smega from an MPQ party who needed an additional member, and brought my permarogue panolia. I prefer to do the first three stages with my dagger and some Double Stab, so my party members realised that I was still a rogue pretty quickly:

    [​IMG]

    But, once we got to the fourth stage and I switched to my claw, Cortical’s MTKs came out, and their opinions quickly changed…:

    [​IMG]

    Later, we were joined by crusader zaxuwu, who I had trained with before at TfoG on my vicloc dagger spearwoman d34r:

    [​IMG]

    And I was able to achieve levels of poor luck scarcely seen before, during a particular stage 6 in which I got a combo of 444 444 434 4d:

    [​IMG]

    (The above screenshot includes in-game chat, as well as a screenshot of the Google Sheets spreadsheet that we were using to make stage 6 easier.)

    Even later, we we joined by Actual Hermit™ TruffleFri3s, which left me on Romeo-protecting duty:

    [​IMG]

    And, after all that, I had enough marbles to get a second Horus’ Eye :

    [​IMG]

    Not so good… looks like I’ll be NPCing this one.

    Just a lil bit o’ viclockin’

    As per usual, I’ve been APQing on my vicloc dagger spearwoman d34r, alongside fellow viclocker xXCrookXx. We were fortunate enough to be joined by xBowtjuhNL, so I exploited my party-leader powers to take this pristine screenshot of us at the beginning of stage 3:

    [​IMG]

    Would you look at that! No pesky Crystal Boars nor Devil Slimes mucking everything up. I do like me some APQ, albeit with the exception of the sixth and final stage, which I confess is probably my least favourite boss fight in the game. Yes, even counting Papu… In any case — speaking of Crystal Boars — d34r levelled up as a result of killing one of them during key farming!:

    [​IMG]

    Nice~ d34r continues to passively and slowly level up as a result of hunting keys, and APQing, regularly…

    Oh, and I’ve been saving up GFD60s to try to scroll myself a new pair of WACC gloves. For quite a long time (since level 35), d34r has been using a pair of Dark Briggons obtained from the second Sleepywood JQ, which I was fortunate enough to pass four GFD60s on — enough to put them at 2 STR, 4 DEX, and 8 WACC. This is a bit tough to beat; but I figured that, as long as I start with something better than an average Dark Briggon, and manage to pass four or five out of the five slots, it’ll be an upgrade. Well, much to my (and xXCrookXx’s) extreme surprise, I managed to do exactly that… passing all five slots!!:

    [​IMG]

    Holy smokes. Now those are some mighty fine WACC gloves.

    Oversized villains

    I had the privilege of fighting two bosses who I had never seen before in my Maple career. First up was the Black Crow, which exclusively spawns at Encounter with the Buddha, a place that I had otherwise only known for hunting Dreamy Ghosts. Black Crow is no joke; with 35M HP and some very hard-hitting attacks, I brought along my darksterity knight rusa to help out the party with buffs:

    [​IMG]

    This is a bit of a chaotic fight, as Black Crow can move fairly swiftly, has quite the chaotic appearance itself, and there are constantly Dreamy Ghosts running around willy-nilly amidst all of the attack animations and damage numbers flying all over the place. But it’s worth it. For the Sabots.

    Second up was Pianus (R), a rare — but apparently extant — oversized fishy who loves to cancel weapon attacks, cancel magic attacks, 1/1 all the time, dispel, and summon not-so-friendly spiky guys. One catch is that these spiky guys can deal around 10k(!) damage when they go boom-boom. Getting hit by one of these boom-booms immediately after being dispelled is an excellent method for finding your way to the grave.

    I may have guzzled many more Honsters than I care to admit during the course of fighting this oversized piscine jerkass (or rather, during the course of fighting several such jerkasses), thanks to my persistent fear of spiky guys showing up and killing me. Even so, I still died at least two or three times…

    [​IMG]

    It seems that fighting Pianus can be rather annoying, especially with all the weapon-attack cancellation going on… But, after fighting two of three of them alongside Harlez, rusa got enough EXP to hit level 126~!

    [​IMG]

    …Which meant that it was time to pass a Berserk 30 book in preparation for next levelup!

    [​IMG]

    Very nice. I still haven’t actually failed one of these “master book” things yet…

    Later, we were joined by xBowtjuhNL, Gruzz, and Bipp, and we found a Pianus (L) to fight. This one is less annoying, as it doesn’t dispel, and has a bit less HP:

    [​IMG]

    Annoying as Pianus may be, it was overall a very positive experience to see Pianus in the flesh, and to fight a few for myself. As a wee fawn, I had only heard tale of the colossal fish hiding in the deepest reaches of Aqua Road, and was never even close to strong enough to face the beast myself…

    Voodoos w/ LoneW0lf1600

    I also had the distinct privilege of grinding with STRginner legend LoneW0lf1600 at Voodoos on my pure STR bishop cervid:

    [​IMG]

    LoneWolf had started streaming himself playing, in the MapleLegends Discord (thanks to MapleStory private server stuff being largely eradicated from twitch.tv due to bogus takedowns), and I offered to come along and do some duo Heartstopper farming.

    We chatted throughout, and I was quite pleased to see LoneWolf playing his ’ginner again — I had always known him as the mythical #1 on the ’ginner rankings (ignoring leechers, at least), although I had never really seen him in action.

    Plus, this marked the first time in a while that I’d come here… last time I was at Voodoos, if I recall correctly, it was to duo there with another high-ranking ’ginner, Taima (Boymoder, Tacgnol, Hanyou, Numidium, Gambolpuddy)!

    HTPQ (not affiliated with Herb Town)

    I was invited to HTPQ (Horntail Party Quest; not to be confused with PPQ, which was originally known as “Herb Town Party Quest”) by Gruzz, Harlez, and xBowtjuhNL. They needed more bodies, in order to enter the PQ (as it requires a full party of six), so that they could complete one or two associated quests. We managed to also round up Bipp (Celim, Copo, Sommer, Fino, Cassandro) of Flow, as well as Qubert of GangGang, to fill the party up.

    But I didn’t have a Dragon Elixir ready, so we had to work on that first:

    I managed to get a Manon “poke” without to much trouble, thanks to a friendly hero who was hunting Manon at the time. So we went to fight some Dark Cornians for the classic Busted Dagger, as well as some Cornian’s Marrow:

    [​IMG]

    Our luck was extremely good; by the time that we had the required marrow, some three or four daggers had already dropped! So we headed to Dark Wyverns then, for the Tough Dragon Skins:

    [​IMG]

    And, after not too long, we had fully assembled our HTPQ krew:

    [​IMG]

    We got all cornian’d up, looking very handsome and lacertian:

    [​IMG]

    Phewf. Glad I don’t have to worry about human ’s invasion…

    Just kidding — ’twas merely a ruse! We’re here to kill you!!

    [​IMG]

    As it turns out, HTPQ is pretty straightforward. Little more is involved than killing some cornians, and then killing some Skelegons… But before we got to the Skelegon bit, we had to make a certain bulb go all shiny-like:

    [​IMG]

    Oooh… pretty…

    Once we were all collectively done being mesmerised by the bulb, we had some dragon skeletons to crumble:

    [​IMG]

    It was here that we finished up farming the special ETCs necessary to complete the quest that grants the Certificate of the Dragon Squad. I now have these special ETCs on rusa, along with the Pianus Certificate, but have yet to obtain the Papulatus Certificate or Zakum Certificate.

    Once we were done with HTPQ, we found ourselves in the proper entrance to Horntail’s cave… so we decided to go into the cave, just for funsies:

    [​IMG]

    Take that, first Horntail prehead!! That’s 3% of your HP that you’ll never get back~! Admittedly, I wasn’t doing very much damage here; with the huge level gap (it’s level 160) and huge WDEF of this first prehead, each one of my Crushers was barely doing over 1.5k damage total. Yes, total — not per-line. But I did get to poke the head — many times, in fact. And that’s what matters…

    The final instalment of “card-hunting with capre”

    ’Tis time for a very special edition of “Card-Hunting With deer’s Woodswoman, capreolina”:

    I started off where I left off last: Commander Skeles.

    [​IMG]

    Not a particularly easy set, but finishing this set was enough to finish the Excavation Site region of Perion. So, with that, I went back to Florina Beach to pick up the remaining bits of the Lorang set:

    [​IMG]

    …and of the Clang set:

    [​IMG]

    And then back to Perion for my dear copper-coloured dino friends, who have a far higher card droprate than anyone seems to give them credit for:

    [​IMG]

    …And for their ruddy friends:

    [​IMG]

    As usual, however juicy the Red Drake’s droptable may be, they refuse to give up the goods, so I took my five cards and left.

    I tried my luck at finishing the Wild Kargo set, and was pleasantly surprised to actually finish it!:

    [​IMG]

    At that point, Vic Island was really finished for capre. The only Vic Island sets that I didn’t have at that point were those of King Slime (lol) and of Ergoth. So I boarded the ship to Orbis, and flew… and then flew back to Ellinia… and then back to Orbis… and then Ellinia… and then Orbis…

    Okay, you get the idea. Some 75 minutes or so of flying, and I had no crog cards to show for it, besides two such cards that I had obtained long before. It wasn’t until later, when I flew again to get back to Vic Island, that I did eventually get that third card:

    [​IMG]

    …and proceeded to never finish the set. Because no. Just, no.

    Instead, I headed to Masteria in search of the relatively newly-added NLC cards! The first one that popped out for me was a Street Slime card:

    [​IMG]

    I found the Urban Fungus set to be pretty easy:

    [​IMG]

    And I got a Boomer card early on, but this one proved to actually be quite difficult to finish:

    [​IMG]

    I hunted in the Boomers map for quite a long time, in search of these mythical teary-eyed-bomb cards, and ended up with probably a dozen each of Urban Fungus and Mighty Maple Eater cards:

    [​IMG]

    It was at this point that I remembered to actually do the Urban Warrior questline. In capreolina’s case, this just meant doing Featherweights and Cleaning Up the Streets, as I had previously completed all of the other quests in the questline. So, ultimately, this meant that I was going to have to fight some Gryphons:

    [​IMG]

    These winged bastards are certainly the least pleasant NLC monsters to fight, as they are wont to fly about willy-nilly, and both maps that they can be found on can only be described as “ass”. After killing the requisite number for the Urban Warrior questline, I was at 1/5 Gryphon cards.

    Cleaning Up the Streets required some Electrophant (somewhat ironically, icier than they are electrical) kills, so I headed into the Ice Chamber for those:

    [​IMG]

    And with that, I could claim my throne:

    [​IMG]

    While I was in NLC, I was using VIP TP rox to check up on my old friend Master Dummy. I have been 3/5 Master Dummy for a very long time now, so I figured that now was the time to finally polish it off. Well, with just three or so visits, I was able to get the last two cards that I needed:

    [​IMG]

    And, back in NLC, I headed to the Fire Chamber to do the Fire Tusk set:

    [​IMG]

    And also to the Soul Corridor to get the Killa Bee set (again, a bit annoying… flying monsters…):

    [​IMG]

    At this point, I had all of the NLC card sets that I thought might be more or less “easy”. But I figured I would try my hand at the I.AM.ROBOT set…

    [​IMG]

    It took me a while to get the first I.AM.ROBOT card, but after that, it wasn’t terrible. So I did finish the set. I also considered getting four more Gryphon cards to finish that set, but after some amount of unpleasant Gryphon-murdering, I was still 1/5, so I decided to leave Gryphons where they belong (viz. high in the sky, where I cannot hear nor see them).

    I also tried the one NLC card set that I have yet to mention: that of Wolf Spiders. The story here is that I was farming for a little while, and before I could actually get my first card, a couple of pet auto-HP failures caused my untimely demise. I prefer that my marsupial friend not repeatedly attempt to murder me, but that’s okay — I still have a Safety Charm, right? Oh wait…

    So, yeah. I may or may not have lost all of the EXP that I had earned that day and the day before, in that one moment. I was a bit discouraged by this, and I wasn’t exactly expecting Wolf Spiders to be an easy card set anyways, so I decided to depart from NLC in favour of icier pastures…

    That’s right; back at El Nath again. This time, I would be venturing further up the mountain, in search of Yeti:

    [​IMG]

    …and Yeti and Pepe cards:

    [​IMG]

    I started out hunting these within the Valley of Snowman, and later transitioned to Ice Valley II so that I might actually get Yeti & Pepe cards reasonably efficiently.

    Then, I was off to Sharp Cliff II in search of Dark Pepe cards:

    [​IMG]

    And, along the way, I got the Dark Jr. Yeti card set, which proved to be about as easy as the Jr. Yeti set (viz. very easy):

    [​IMG]

    I went to Dangerous Cliff in an attempt to farm Dark Yeti and Pepe cards:

    [​IMG]

    …alongside Dark Yeti cards, at the same time:

    [​IMG]

    …But I soon realised that I was getting Dark Yeti cards very slowly (I am still 1/5 to this day). I then realised that there actually does not exist any map that is good for farming Dark Yetis. Really, the highest spawn count is a measly five, at Sharp Cliff I, and even there, it’s swamped with other garbage that vastly out-populates it.

    So, instead, I headed to Wolf Territory II (which ironically has no wolves whatsoever) to finish the Dark Yeti & Pepe set. And, with that done, I decided not to mess with the Lycanthropes and Werewolves, as the guides that I was looking at cautioned against them. So, rather than stay in Alnath any longer, I headed to Leafre in anticipation of my 300th set…

    Just a single map west of Leafre proper, I found Rashes:

    [​IMG]

    …and Dark Rashes:

    [​IMG]

    And these puffballs just so happened to push my EXP bar into the next level! Level 126~!! So, like rusa with zerk, it was time for capre to eat an SE30 book:

    [​IMG]

    Oh… ouf. Well, at least now I know what it looks like when you fail one of these things. I used another and failed that one as well… but the third time was indeed the charm, so capre now has a master level of 30 on SE x)

    Anyways, back to card-hunting. I headed to the Cranky Forest in search of Hobi:

    [​IMG]

    …and Hankie cards:

    [​IMG]

    And, after finishing up the Hobi set (and getting to 2/5 Hankie), I was at 299 sets. I took a break, and when I came back, Bipp (Celim, Copo, Sommer, Fino, Cassandro) was excited to come to Leafre to hunt that final set with me:

    [​IMG]

    As you can see, we were at Steep Hill to finish up those Hankie cards. But I also nabbed a Green Hobi card as well, just in case that one managed to finish first:

    [​IMG]

    In the end — as expected — I finished the Hankie card set first. And that Hankie card set was capreolina’s 300th completed card set. So, it was time to receive the highest honour in the world of card-hunting: the tier 10 ring!!!!:

    [​IMG]

    You can see capreolina here, crying tears of joy… I frankly never would have expected to make it all the way to T10. It seems that my decision to focus almost entirely on just one character (capreolina) has paid off. And so, I can proudly say that I got the highest tier of ring, all by myself, all for myself — however long it may have taken.

    You can see in the screenshot above that xEggNog is asking me how long it took for me to get the T10 ring. I don’t have a good answer to that question. Partly, this is because I did a lot of other stuff along the way — on capreolina, and on other characters, of course — so I didn’t just grind cards all day, every day, until I got to T10. That being said, the entirety (or at least, almost the entirety) of capreolina’s card-hunting journey is in fact documented in this diary. So the process certainly didn’t go undocumented.

    So, in the future, any card-hunting that I do will, obviously, be on other characters. In particular, I want to try my hand at card-hunting with my darksterity knight rusa, my daggermit alces, my I/L magelet cervine, and many other characters, as well~ These monster book rings can be just as important for my other characters as well, and as any reader of this diary knows, I have no shortage of characters… But, for now, I am just proud to say that I Beat The Game™ (well, unless we consider monster book completionism…), at least once, when it comes to the monster book. :D

    <3
     
    • Like Like x 3
    • Great Work Great Work x 2
    • Agree Agree x 1
  12. Nightz
    Offline

    Nightz Supervisor Staff Member Supervisor Game Moderator

    1,748
    1,021
    490
    Oct 22, 2020
    Male
    8:06 AM
    Nightz
    I/L Arch Mage
    200
    Funk & Pasta
    Moderator Post
    I occasionally pop in here and even though there's a ton of information to take in it's definitely worth skimming through, keep it up deerdeer !
     
    • Agree Agree x 1
    • Friendly Friendly x 1
  13. Slime
    Offline

    Slime Pixel Artist Retired Staff

    640
    1,184
    381
    Apr 8, 2015
    Male
    Israel
    9:06 AM
    Slime / OmokTeacher
    Beginner
    102
    Flow
    Until recently I was keeping up with everything, but recently as I'm very busy I have been skipping the taxonomy sometimes. Great entry as always deer!
    Maybe HTPQ should be "HtPQ" to differentiate it from Herb Town Party Quest. :f1:
     
    • Friendly Friendly x 1
  14. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    (You can also read the original diary entry here. If odd-jobbed characters interest you, you should know that Oddjobs is recruiting!)

    rangifer’s diary: pt. lxx

    Taxonomising odd jobs, pt. iv: Microtaxonomy & encodings. §6

    In the previous section (§5) of this part (pt. iv), I finally fleshed out a set of all odd jobs, i.e. the odd job universe (version 1.0.0). The universe was expressed using a particular RON schema, and I also presented those same data in the form of a giant table. For now, I want to wrap up this part (pt. iv) of the series by commenting on the data that I essentially dumped in the previous section, with only comments on the format of the data, and not on the data themselves. And then, I want to do a little speculation on what can be done next.

    But first, an erratum or two…

    Errata (odd job universe, version 1.1.0)

    STRginner

    Version 1.0.0:
    Code:
    […]
        "STRginner": Job(
            […]
            weaponry: Weaponry(
                allowed: All,
                canonical: WepTypes([
                    OneHandedSword, OneHandedMace, Dagger, TwoHandedSword, Polearm,
                ]),
            ),
            […]
        ),
    […]
    
    Version 1.1.0:
    Code:
    […]
        "STRginner": Job(
            […]
            weaponry: Weaponry(
                allowed: All,
                canonical: WepTypes([
                    OneHandedSword,
                    OneHandedMace,
                    Dagger,
                    TwoHandedSword,
                    TwoHandedMace,
                    Polearm,
                ]),
            ),
            […]
        ),
    […]
    
    STRginners (and only STRginners) get access to the Sake Bottle, so we add two-handed BW to their list of canonical weapon types. I probably forgot about this because, you know, MapleLegends doesn’t have Sake Bottles.

    LUKless sin

    Version 1.0.0:
    Code:
    […]
        "LUKless sin": Job(
            […]
            weaponry: Weaponry(
                allowed: All,
                canonical: WepTypes([
                    OneHandedSword,
                    OneHandedMace,
                    Dagger,
                    TwoHandedSword,
                    Polearm,
                    Claw,
                ]),
            ),
            […]
        ),
    […]
    
    Version 1.1.0:
    Code:
    […]
        "LUKless sin": Job(
            […]
            weaponry: Weaponry(
                allowed: All,
                canonical: WepTypes([
                    OneHandedSword,
                    OneHandedMace,
                    TwoHandedSword,
                    TwoHandedAxe,
                    TwoHandedMace,
                    Polearm,
                    Claw,
                ]),
            ),
            […]
        ),
    […]
    
    Daggers were included in the LUKless sin’s canonical weapons, probably because I copy-and-pasted the canonical weapons for STRginner and then added claws. Daggers should not be included, as a result of LUKless sins being LUKless and not getting any dagger skills (besides Double Stab).

    And, I forgot two-handed axes and BWs, which should be included for the same reason that they’re included for woods(wo)men and brigands.

    Comments on the odd job universe, version 1.1.0

    General comments
    • You may have noticed the inclusion of many classes that are pre-Big-Bang (pre-BB) but were added after version 62 of GMS (post-v62):
      • “Cygnus Knights”:
        • Noblesse
        • Dawn warrior
        • Blaze wizard
        • Wind archer
        • Night walker
        • Thunder breaker
      • Dual blade
      • “Legends”:
        • Aran (beginner)
        • Aran
        • Evan (beginner)
        • Evan
      This is in line with what I said in §3 of this part:
    • The “Evan (beginner)” (a.k.a. evanginner) class is not actually used in any of the odd job definitions. This class has its own ID (2001), but isn’t actually materially different from an ordinary (explorer) beginner in any way other than being called an “Evan” in-game. Furthermore, perma-evanginners were only able to be created for a very short amount of time due to a bug in GMS’s implementation of Evan. I also couldn’t find any evidence of Evan equivalents of islanders nor of campers. If you know more about evanginner-based jobs, please let me know.
    • It should be noted that dual blades are explorers; they have a second-grade ID of 430 (compare to 400 for rogues, 410 for assassins, and 420 for bandits), and can only be created by initially advancing to rogue (as an ordinary explorer rogue would) and then advancing to dual blade for second-grade advancement. The main twist of this dual blade advancement is that it’s done at level 20, and not at level 30 as you would expect.
    • You also may have noticed that some class names end in “1st”. This is because the names of Cygnus Knight classes do not distinguish between grades, from first grade onwards. “Noblesse” is zeroth grade (i.e. a Cygnus Knight beginner) for all Cygnus Knights, but there are no grade distinctions reflected in class names beyond that point. Nevertheless, each of the first grade classes (all five of them: dawn warrior, blaze wizard, etc.) is pretty clearly analogous to the corresponding first-grade explorer class, with the addition of those little summon skills (Soul, Flame, etc.).

      Nevertheless, although we do the same for legends as well (AranBeginnerAran1stAran; EvanBeginnerEvan1stEvan), the situation there is somewhat different. We consider first-grade Arans to effectively be second grade or higher. The reason is that, although Aran class grades seem to correspond nicely to their explorer counterparts (0th, 1st, 2nd, 3rd, and finally 4th), Arans already have all of the following at first grade:
      • A multi-target attack that hits up to 12(!) monsters at once,
      • A Flash-Jump-like skill,
      • Polearm Booster,
      • and a WATK/WDEF/MDEF buff.
      Although this leaves them masteryless until second grade (like their explorer counterparts), I think it’s fair to say that this should at least disqualify them from being “permawarriorsper se. That’s not to say that perma-1st Aran can’t be an odd job — rather, it’s just that if they can be considered odd, it’s not because they are permawarriors.

      On the other hand, perma-1st Evans play more like stripped-down permamagicians, as a result of Evan grades being less spread out (they go all the way up to 10th(!) grade). They only get Magic Claw (although it’s called “Magic Missile” for them, the spell is otherwise identical), and a passive +20 MATK. Perhaps most interesting is that perma-1st Evans never get Magic Guard!

      And, when it comes to dual blades, there is no such thing as “DualBlade1st”. A “first-grade dual blade” is the same class as a “first-grade assassin” or “first-grade bandit” — namely, rogue (ID 400).
    Comments on specific odd jobs

    Not all of the entries are covered below; the others should be self-explanatory.
    • Camper
      • As you can see by the inclusion of noblesses and aranginners, this definition includes roadies and snowlanders (respectively) as well.
    • STRlander
      • As you can see from the class set being {beginner}, only explorers can be islanders, as Maple Island is the only geographical region of its kind.
      • Like all STATlanders, STRlanders are pure in their respective STAT (STR, in this case). Islanders are, naturally enough, difficult to categorise, as their builds are naturally more flexible than those of outlanders. So, although we define a STRlander as “Pure(STR)”, this constraint should be taken more impressionistically than it is for outlander builds that use the same predicate. For islander builds that are truly mixed, we have the “hybridlander”.
      • Although one-handed swords and polearms are obviously canonical weapon types for non-magelander melee islanders (one-handed swords being a common weapon type for islander-friendly event-only weapons like Maplemas Lights, The Stars and Stripes, Lifeguard Saver, Maple Sword, etc., and polearms including our old friend the Gold Surfboard, as well as Valentine Roses (e.g. White), etc.), the others here might require some justification. The existence of the Razor and, particularly, the Fruit Knife on-island is, in my opinion, enough to justify the inclusion of daggers. The Wooden Club and Leather Purse justify the inclusion of one-handed BWs, and while we’re at it, I added one-handed axes as well, so that all starter weapons (Sword, Hand Axe, and Wooden Club) are represented. Although representing starter weapons might seem a little weird, I think it’s justified, even if the only justification is being general enough to reflect any & all pre-BB versions of the game — even ones that have more or less limited availability of islander weapons.
    • DEXlander
      • See the comments on STRlander.
    • Magelander
      • It might seem a bit strange that we allow magelanders to use staves, but remember that the “allowed” things are merely spiritual — even those who cannot de facto use the thing may still be allowed to use it. In this case, staves don’t generally exist in any form on Maple Island; but we like to group wands and staves together, so that any job capable of using one may use the other. A magelander (hypothetically) using a staff still maintains the “mage” in “magelander”.
    • LUKlander
      • See the comments on STRlander.
    • Hybridlander
      • Hybridlanders have, somewhat ironically, perhaps the most verbose stat constraints of all odd jobs in our universe. But the idea is simple: out of {STR, DEX, LUK}, the hybridlander picks at least two. This is what makes them “hybrid”. This definition thus includes (but is not limited to) so-called “perfectlanders”.
      • Hybridlanders don’t have wands as part of their canonical weapons. Instead, we consider wands to be the exclusive domain of magelanders; adding wands to the canonical weapon set here would result in complicating the primary/secondary stats of hybridlander even further.
    • STRginner
      • Notice that the stat constraint for STRginner is Ful(STR), and not Pure(STR). While Pure(STR) might be expected by analogy to STRlander, the situation for outland beginners is different. Because outlanders care so much about expected damage, STR is quite a bit… well… STRonger than DEX. For the STRginner, DEX is still useful; it adds more to their WACC than any other stat (certainly more than STR, which gives no WACC whatsoever), and contributes to their damage as well. But besides the need for WACC to hit their targets, the STRginner is trying to pour as much AP into STR as possible. This means that STRginners may have varying levels of base DEX, depending on their needs. Nevertheless, what unites STRginners is being STR-based, even if not necessarily being pure STR. Instead, we define DEXginners as being Pure(DEX) so that they can be totally distinguished from STRginners.
    • DEXginner
      • See the comments on STRginner.
    • Wandginner
      • See the comments on magelander.
    • LUKginner
      • Because LUKginners are given a weapon constraint (they can only use claws), and because outlanders care so much more about expected damage, we don’t need to characterise the LUKginner’s stat constraint as “Pure(LUK)” (as we did for LUKlanders), and instead opt for the looser “Ful(LUK)”.
    • Permawarrior
      • As mentioned above, we consider first-grade Cygnus Knights to be essentially equivalent to their explorer counterparts, so perma-1st dawn warriors are included here. And, also as mentioned above, we do not consider first-grade Arans to be essentially equivalent to their explorer counterparts, so they are excluded here.
      • The canonical weapons should look pretty straightforward here, with two minor exceptions:
        • Daggers are considered canonical weapons for permawarriors. Although this may seem unusual (as they are not canonical for non-odd warriors), the reality is that, ceteris paribus, daggers and one-handed swords are (for non-rogues) identical. The only reason that this isn’t true for ordinary warriors is that ordinary warriors get access to weapon-type-specific skills, e.g. booster and mastery skills. Obviously, permawarriors never get any such skills, so daggers and one-handed swords are equivalent to them.
        • Spears are not considered canonical weapons for permawarriors. The reasoning here is that spears are not canonical weapons for ordinary warriors either, with the exception of 3rd-grade-or-higher spear(wo)men (i.e. dragon knights and dark knights). In the absence of DK skills, spears simply have an unusually low average PSM (primary stat multiplier) when using attacks that animate like basic-attacks (e.g. Power Strike and Slash Blast), thus making them undesirable for permawarriors.
    • HP warrior
      • Defining blood warriors and blood dits in this format proves to be difficult. I decided to take two different routes for these two different jobs, on the basis that blood dits don’t get their “killer skill(s)” until third grade, whereas HP warriors already have them by second. So, for HP warriors, I’ve de-emphasised traditional warrior fighting methods (i.e. melee), considering them to only be “secondary”. So, their ability to melee is not reflected in their primary/secondary stats, and not reflected in their canonical weapons either. Having all weapons as canonical is meant to imply that they don’t use their weapons to fight, so what weapon they have equipped is incidental (they might choose, for example, weapons that look cooler, or that grant MAXHP).
    • Wand warrior
      • See the comments on magelander.
    • DEX warrior
      • See the comments on permawarrior.
    • LUK warrior
      • See the comments on permawarrior.
    • Permamagician
      • As mentioned above, first-grade blaze wizards and Evans are considered to be close enough to magicians (or restricted versions thereof) to qualify for being permamagicians.
    • STR mage
      • Analogously to STRginners, STR mages have the Ful(STR) stat constraint. Because of this, we also need to specify Less(INT) and Less(LUK) in order to distinguish them from gish(let)s.
    • DEX mage
      • Analogously to DEXginners, DEX mages have the Pure(DEX) stat constraint. Because of this, we don’t need to specify Less(INT) and Less(LUK) to distinguish them from gish(let)s — these constraints are implied by Pure(DEX).
    • Magelet
      • You’ll notice that claws are included as a canonical weapon type for magelets. This is a result of magelets being defined by their class and stat constraints alone. With no weapon constraints, they can use claws just as well as LUKginners can. A magelet that only uses claws is a subjob of magelet called a “claw magelet”, or sometimes just “claw mage”.
    • Gish
      • For the physical-attacking side of gishes, we only constrain them to be Ful of STR or DEX (or both), by analogy with STR mages or DEX mages (or both).
      • Gishes, unlike STR mages and DEX mages, have wands and staves as part of their canonical weaponry. This reflects their (half-)proficiency with magical damage-dealing spells.
    • Gishlet
      • See the comments on gish.
    • Woods(wo)man
    • Blood dit
      • See the comments on HP warrior. Unlike the HP warrior, we do emphasise the role of daggers in the blood dit’s functionality. This is, again, a result of blood dits getting their “killer skill(s)” so much later than blood warriors do.
    • Brigand
      • See the comments on woods(wo)man.
      • The allowed weapons for brigands are just “all weapons that aren’t daggers”.
    • LUKless sin
      • See the comments on woods(wo)man.
      • Daggers are not canonical for LUKless sins, as a result of being LUKless and not getting any dagger skills (besides Double Stab).
    • Dagger sin
      • We consider night walkers to be closely analogous to assassins/hermits, so they can be dagger sins too.
    • Claw-puncher
      • Although technically any class can be a claw-puncher (in the presence of claws without class requirements, i.e. Magical Mitten), claw-punchers are specifically the rogue version of this concept, which we consider to be conceptually primitive (especially when claws without class requirements are unavailable). Other claw-punching odd jobs can be classified as subjobs of other odd jobs.
    • DEX brawler
      • We consider thunder breakers to be closely analogous to brawlers/marauders, so they can be DEX brawlers too.
      • Guns are considered canonical weapons for DEX brawlers, as they are pure DEX and have access to the Double Shot skill.
    • LUK bucc
      • See the comments on DEX brawler.
    • Swashbuckler
      • Besides guns, the only canonical weapons for swashbucklers are those that play nicely with SSK.
    • Pugilist
      • It should be noted that our definition of pugilist here includes all pirates who restrict themselves from ever using weapons, not just brawlers and closely related classes.
    • Armed brawler
      • The allowed weaponry for armed brawlers is just “any melee weapon that isn’t a knuckler”. Somewhat counterintuitively, this includes wands and staves. But the canonical weaponry only includes those weapons that play nice with SSK.
    • Pistol-whipper
      • See the comments on pugilist.
    • Bombadier
      • One unfortunate side-effect of how we define jobs here is that bombadier requires us to list quite a few skills.
      • Two of the skills listed (MW and Hero’s Will) use the skill IDs of their hero (i.e. fourth-grade fighter) versions. This is in line with the following sentence, from §4 of this part:
        The hero versions just so happen to have the lowest (i.e. lowest numerical value) IDs.
    • Summoner
      • See the comments on bombadier.
      • Notice that the only difference between our definitions of summoner and bombadier is that the summoner can only use a strict subset of the skills that bombadiers can use. This is a result of us allowing bombadiers to freely use summons (even Octopus), on the basis that these are not “attacking skills” per se.
    • Begunner
      • See the comments on pugilist.
      • As pointed out in §5, Some([]) is our way of representing that a job cannot use any first-grade-or-higher skills.
    Looking ahead
    This essentially concludes pt. iv of this series. In pt. v (and beyond), we have some things to look forward to — particularly, actually getting some taxonomies fleshed out! Hopefully!! Even more particularly, here are some things that I have floating around in the back of my mind:
    • We can try imposing a weak ordering onto this universe that we’ve enumerated, as discussed in §4 and §5 of pt. iii. Or, rather, we might end up with more than one ordering to “try on for size”, considering that determining an ordering is tricky business and, ultimately, just depends on what you want to get out of it.

      From here, it would then be possible to construct, by hand, (a) rooted forest(s) of our odd jobs that satisfy the condition laid out in §4–5 of pt. iii:
    • We can try to come up with encodings of our odd jobs, based on their definitions from this part (pt. iv) of the series, so that the clustering-oriented techniques discussed in pt. iii of this series can be applied. Again, as mentioned in pt. iii, such an encoding is ideally a metric space, or even better, a vector space. But it remains to be seen if we can reasonably satisfy these kinds of constraints without throwing away too much information, and without warping the information into an encoding that misrepresents which aspects of each job are relevant. I already have a few things in mind here, but it’s a long way from anything actually usable.
    • 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 S, combined with a collection of (nonempty) subsets of S. 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. Some hyperedges that might be included:
      • “Jobbed beginners”: {STR mage, DEX mage, woods(wo)man, brigand, LUKless sin}
      • “Mixed attackers”: {gish, gishlet}
      • “Perma-firsts”: {permawarrior, permamagician, permarcher, permarogue, permapirate}
      • “Islanders”: {STRlander, DEXlander, magelander, LUKlander, hybridlander}
      • etc.
      As I said, this is already a kind of taxonomy itself, which means that such a hypergraph already offers an answer to the question that motivates this entire series: “what (w/sh)ould a taxonomy of odd jobs look like?”. Furthermore, hypergraphs offer some of their own benefits:
      • A hypergraph matching generalises the notion of a “matching” in a graph. In our case, we can think of a hypergraph matching as a kind of practical generalisation of a partition of a set (indeed, a hypergraph matching that is a partition of the vertex set is called a “perfect” matching), in which we don’t necessarily have to include every element of the vertex set.
      • Assuming that every vertex in our hypergraph has a nonzero degree, the notion of set cover provides another kind of practical generalisation of a partition of a set, but going in the other direction: instead of not necessarily including every element of the set, we don’t necessarily require that the “partitions” are pairwise disjoint. The set cover problem, then, asks what is the smallest collection of hyperedges whose union equals the universe. A set cover that solves this problem can, for some purposes, be a practical substitute for an actual partition (if it isn’t already a partition itself).
      • If our hypergraph ends up being disconnected, then its connected components give us a natural partition of the universe, where we interpret two vertices being in different components as the two vertices being “unrelated” in our taxonomy.
      • Our hypergraph would naturally induce a line graph, which, because we’re working with hypergraphs, is just the same thing as an intersection graph.
      • Hypergraphs come with their own handy-dandy visualisation method (much like clustering comes with dendrograms): Euler diagrams (it should be noted that Venn diagrams are a special kind of Euler diagram). Also, rainbow boxes!
      • The edges of our hypergraph can also be used as a tool to produce some distances between odd jobs (e.g. Hamming distance between the bit vectors that represent which hyperedges the job is, and is not, incident to), as well as to generally inform the encodings that we give our odd jobs before trying to feed them into (a) clustering algorithm(s).

    *A hypergraph is called “simple” iff it has no loops and has no repeated edges. Loops in hypergraphs are analogous to loops in graphs, viz. a hypergraph loop is an edge of cardinality exactly 1. And repeated edges in hypergraphs are analogous to multi-edges in graphs, viz. multiple edges that are the same set.

    A little light LPQing

    I hopped onto my DEX brawler LPQ mule sorts to do some LPQs with Flow neophyte trishaa, fellow LPQ mule Sangatsu (Lvl1Crook, xXCrookXx, Level1Crook), and DEX page attackattack (xX17Xx, partyrock, breakcore, drainer, strainer, maebee)! We were able to do some all-Suboptimal (again, ignoring that some of the characters we’re playing here are not actually in the alliance…) runs thanks to attackattack also bringing along her gunslinger, partyrock. Here we are, embattled with glowy-eyed whale guy:

    [​IMG]

    And, these LPQs made great stage 8 JMS method practice for trishaa. Once mastered, the JMS method is the mark of a true LPQer!

    panolia @ Magatia

    I did an MPQ or two on my permarogue panolia, alongside chief dit asdsaou and outlaw bigolebarry:

    [​IMG]

    Afterwards, I remembered that I wanted to try Keeny’s Research on Frankenroid, a quest that acts as the culmination of the “Keeny’s Research” questline, but is not available to characters who are outside of the MPQ level range (71–85). I’d never done it before, so I went ahead and did the earlier, more familiar quests in the questline. First up was Keeny’s Research on Roid:

    [​IMG]

    Followed by Keeny’s Research on Neo Huroid!:

    [​IMG]

    Followed by Keeny’s Research on D.Roid!!, during which I was fortunate enough to stumble across a D. Roy:

    [​IMG]

    Again lucky for me, this D. Roy dropped not only the Broken Mechanical Heart that I needed for my quest, but also a Magic Stone of Trust that panolia will need later when she does the main Magatia questline! And, turning in the heart, I got a pair of Mechanical Gloves in exchange:

    [​IMG]

    They look less like mechanical gloves, and more like the black cat paws from the Cash Shop to me, but whatever.

    Keeny’s Research on Frankenroid is basically an MPQ check; it just requires that you’ve successfully (meaning also saving Romeo/Juliet) defeated Angy Fanky. In exchange, you get… an OA DEX 10% scroll. Could be worse, I suppose…

    Wild animals in the forest

    My woodsmaster, capreolina, now has a diverse assemblage of creatures following her at all times, as befits a forester.

    For contrast, here we have capreolina followed by merely two koalas, helping Permanovice (Dreamscapes, Battlesage) & kookiechan kill a Papulatus, alongside two DKs, FearNoPain and Orsaris:

    [​IMG]

    As a result of being HB’d the entire time, I didn’t have to worry about the second body touching me and, as a result, yeeting my lifeless body to the grave. But, I wanted to have this reassurance even in the absence of HB. So, now that capre has no more ring tiers to attain, it was time to shape up with some pet equips instead. To exploit the rather bizarre mechanic of getting stat increases from your pet’s equipment, I would need more than just one pet — after all, just one pet can only equip one equipment item at best. Instead, I need three HP-holders — I mean, pets. So for that, I need to acquire the special-sauce skill by completing the Pet-Walking Road JQ:

    [​IMG]

    Very nice. But in order to actually have three pets that I could put out at once, I thought I’d try reviving some Nerdy Koalas. You see, I’m a bit new to the whole “pet” thing, relatively speaking. I started playing MapleStory some time in 2005, and it wasn’t until recently (around when my pure STR priest cervid was level 10X or so) that I actually tried using pets. As ridiculous as it may sound, yes, I had been looting and potting manually for all these years. I just thought it was part of the game, okay?? It’s not like Nekksyn would ever let me use pets without absconding with my money, and I mentally transferred this state of affairs to private servers as well, when I started playing those. In any case, I found out the hard way that pets “expire” after 90 days, and I didn’t know how to revive them, nor did I care to find out when I tried to pull one out, only to find it in an inanimate doll state. At this point, I’m already about to Do A Thing™, so I need that pet right now. Thus, I adapted to simply re-buying the pet (as the Cash Shop is generally accessible from almost any map) any time the life of a pet dried up.

    Is that pet abuse? Maybe… But I decided to rectify my lack of pet knowledge on this day, and revive some of the Nerdy Koala dolls that I had shamefully sitting in my Cash Shop inventory:

    [​IMG]

    That’s not one, not two, but four koalas! Three of them are bright pink, and one is seated on my back. I actually bought pet equips for all three of these pets. I had never looked at pet equips, and now that I looked at them for the first time, I realised that most pet equips are specific to a particular pet species. So, I searched for “koala” and found the baby koala equip, which is a bright yellow baby koala that sits on top of the Nerdy Koala pet. At this point, I had seven koalas following me at all times, three of which were bright pink, three of which were bright yellow, and the other of which was seated on my back. Although capre has been using the Nerdy Koala pet (primarily to match the koala on my back) since she started using pets for the first time, I realised now that six koala pets was too much. The colours are just awful, which is why I don’t have a screenshot of that here, to spare your eyes. So, in the end, I swapped out two of the Nerdy Koalas for other pets:

    [​IMG]

    As you can see, all three have their pet equips on: the Brown Kitty with their aviation gear on, and the Monkey with a little red bow on their head! And still, a Nerdy Koala with the bright yellow baby koala on top. This is an improvement, but I might just boom the koala equip (I already passed two 30%s on it…) and switch to another pet x)

    In any case, I passed two 30%s on all three of these pet equips. Two of them still have five slots left(!), and the other has four slots left. So, this is a pretty good start (if only I could get my hands on some 60%s…), and that means that capre now has enough MAXHP (without HB) to take hits from Ravana!:

    [​IMG]

    Cool :D You can see capre fighting Rav here, alongside Bipp (Celim, Copo, Sommer, Fino, Cassandro) and Snel (LawdHeComin) of Flow — and my pure STR bishop cervid. I tried bringing along cervid for the HS, simply disconnecting her client before the boss died, so that she didn’t leech any EXP. It worked quite well, although for some reason I feel a bit dirty doing it…

    But, anyways, I decided that being followed around at all times by three koalas, a monkey, and a cat, wasn’t enough for me. So I went to the Aquarium to protect a certain hoggo:

    [​IMG]

    I proceeded to force my vicloc dagger spearwoman d34r to pay for the Pheromone Perfume (a significant sum of 20M mesos), and headed to The Area of Wild Hog to catch a wild hog of my own:

    [​IMG]

    And my mount cover of choice: the owl!!

    [​IMG]

    Very nice :D Oh, and how could I forget? In addition to the three koalas, the monkey, the cat, and the owl, I also have my lovely Phoenix:

    [​IMG]

    Fuck ’em up, birdy!!! And by “them”, I of course mean the Black Bear Swordsmen that I was fighting — along with many other Mt. Song Town monsters — in an attempt to check out some of the quests that this region had in store. While I was there, the game decided to tease me by giving me a few cards:

    [​IMG]

    [​IMG]

    (Above is a Male Thief card.)

    [​IMG]

    (Above is an Eagle Swordsman card.)

    I completed three or four quests here, including “The Door to Bai Shan”, which was the most difficult, and gave perhaps the best reward: 150k base EXP (450k EXP after multipliers) — not too shabby — and a fame.

    cervine @ CDs

    You already know who it is: my I/L magelet cervine. You already know where it is: Star Avenue South Section. And you already know what it is: cryopreserving optical discs!!

    I managed to catch some GM buffs (and Echo), and used them to sadgrind for 60 minutes:

    [​IMG]

    Nearly 4.5M EPH! Not bad at all!! However, significantly higher EPH is attainable with the aid of not just HS, but also, you know, actually partying:

    [​IMG]

    Niceee~ One step closer to I/L archmagelet, haha!

    Helping Permanovice with the main Taipei 101 questline

    Speaking of Taipei 101, I went to Taipei 101 as my darksterity knight rusa to help Permanovice (Battlesage, Dreamscapes) complete the main Taipei 101 questline (“Dreamy Park Concert”, followed by “The Missing Sheet Music”). As some readers may already know, this quest essentially entails collecting the ETCs from most of the species of monster found in Taipei 101 (with the exception of CDs, which are strangely not part of the questline at all). In particular, this means:
    Whew. That’s a lot of ETCs. And unfortunately for our prospective quester, CDs — the only species not represented here — are the only popular training spot in all of Taipei 101*, and there are no Taipei 101 monsters that drop cards, either. So you won’t have any luck trying to buy these ETCs on the FM. And that truly is unfortunate, as the perfumes in particular are a supreme pain in the arse to collect ETCs from. Collecting 600 perfumes is a frankly ridiculous chore — unless, of course, you can rawr:

    [​IMG]

    So, I collected with Permanovice (and, as you can see above, also Level1Crook at times) 1 200 perfumes, 600 mannequin ETCs, and 150 Cheap Speakers. Why so many perfumes and mannequin ETCs? Well, we gathered up enough ETCs for both of us to complete the quest. And Permanovice already had the amplifier ETCs, and I had a bunch of Fancy Amplifier Cables on my undead daggermit alces, so we didn’t collect quite as many of those. Anyways, I completed Dreamy Park Concert, and all I got was this lousy Red Umbrella:

    [​IMG]

    Ouf. But Permanovice was kind enough to buy two Spirit of Rock’s Music Scores, one for each of us, so we both completed the entire questline. Which makes us both proud owners of the super sweet Electric Guitar Necklace

    *This is not entirely true; Kid Mannequins used to be popular when they had full-map-range auto-aggro behaviour (which was a long time ago). And nowadays, Fancy Amps are a popular spot for single-target-only attackers, with Cheap Amps being (as their names imply) a cheaper alternative. Of course, these are level >70 training spots, so the only characters who are still single-target-only by this point are odd-jobbers…

    Hangin’ out at the Training Zone

    As I was online and playing rusa, OmokTeacher (Slime, Thinks, Slimu) logged on to say hi and see what’s up. He got into a conversation with Permanovice in buddy chat, and we went to HQ* to chat there. We were comparing the various “pogginners” (“pog” + “beginner”) of MapleLegends, such as OmokTeacher and Permanovice themselves, as well as Taima (Tacgnol, Boymoder, Hanyou, Numidium, Gambolpuddy), Gumby, Cortical (GishGallop, Medulla, BowerStrike, xXcorticalXx, SussyBaka, CokeZeroPill), LoneW0lf1600 (LoneWolf1600), Outside, etc. And, naturally, this resulted in OmokTeacher and Permanovice wanting to test their DPH on the spot… So, to the Training Zone we went…

    [​IMG]

    I took along my pure STR bishop cervid so that I could participate side-by-side with these STRginners. In the end, of course, the results are not exactly fair (as my various magician/cleric/priest/bishop skills have given me the EXP advantage…), but we compared anyways, with the focus being on OmokTeacher’s and Permanovice’s numbers. As usual, these tests were just with typical self-buffs and Ciders:

    [​IMG]

    Permanovice initially clocked 10.5M DPH, and so OmokTeacher (with 10.6M DPH) thought that he had won the contest. But Permanovice realised that he was using some DEX gear, so after switching to a STR robe, he instead clocked a whopping 11.4M DPH! Also, both OmokTeacher and I have our Crimson Arcglaives exposed in the screenshot above, but Permanovice has an NX weapon cover equipped, so for anyone who’s wondering, Permanovice is holding a Fan and a Stolen Fence.

    *We have a joint alliance headquarters between the Suboptimal alliance and the GangGang guild at FM 7-7 (channel 7, room 7). You should check it out and BUY MY SHIT @@@@@@@@@@@@@@@@@@@@@@@@@@@

    Card-hunting (and a little questing along the way): Because apparently, I have nothing better to do

    Now that my woodsmaster capreolina got the T10 ring, I have been wandering around, a lost deer, trying to figure out what to do now. The rest of my attempts are catalogued in the <details> element below:

    I was invited to do some card-hunting with intslinger Lvl1Crook (Level1Crook, xXCrookXx) and page vvvv (of Tunas). So, after some futzing about with my characters, I decided to bring my I/L magelet cervine to help these two hunt some Wild Boar cards:

    [​IMG]

    They were having a lot of trouble getting the Wild Boards to cough up some cards, but cervine fixed that right up:

    [​IMG]

    Once we all had our respective 5/5 Wild Boar cards, we headed to The Swamp of Despair III to hunt some Ligators:

    [​IMG]

    I suggested that we go one map to the right, as The Swamp of Despair III is basically just Ligators (with the occasional Jr. Necki sliding around the bottom), whereas Dangerous Croko I has both Ligators and Crocos. Then, once we get 5/5 Croco, we could go back to The Swamp of Despair III to finish up Ligator sets as necessary. But the main motivation for staying in The Swamp of Despair III was that Lvl1Crook was too smart. And too many smarticle particles made him not so good at shooty-shooting, so the Crocos were a bit too much of a challenge. But, just to see how bad it really was, we went there anyways to test it out. Plus, I needed at least 50 Croco Skins for the Dyle questline:

    [​IMG]

    [​IMG]

    Later, once Lvl1Crook and vvvv had left, I continued on card-hunting in Victoria Island, because… why not, I guess. So I headed to the Ant Tunnel for some Zombie Mushrooms:

    [​IMG]

    …and some Horny Mushrooms*:

    [​IMG]

    …and some oversized Zombie Mushrooms:

    [​IMG]

    [​IMG]

    …and some Evil Eyes (a particularly easy set):

    [​IMG]

    I hit up my favourite tree dungeon for the Curse Eye set:

    [​IMG]

    And then, I headed to Florina Beach for some of the card sets there, as well as for the Defeat King Clang! questline:

    [​IMG]

    [​IMG]

    I was fortunate enough to stumble across a Casey and complete my quest:

    [​IMG]

    And I finished up the Lorang set, thus finishing all three main sets on Florina Beach:

    [​IMG]

    I went to Ellinia to do the Defeat Faust questline, and while I was there in The Forest of Evil I, I went ahead and did the Malady set:

    [​IMG]

    I also got a start on my Zombie Lupin set, which I later finished at Monkey Swamp III:

    [​IMG]

    I did the Iron Hog set between Pig Park and Pig Park II:

    [​IMG]

    And moved on to Perion to get the Perion Drake sets: Copper Drakes…

    [​IMG]

    …and those gosh darned Red Drakes:

    [​IMG]

    It was at this point that I finally found a Faust:

    [​IMG]

    [​IMG]

    Cool! I finished the questline and got a card! Anyways, back to Perion for those Iron Boars…

    [​IMG]

    And I headed to the top floor of the Nautilus to ask Muirhat about his questline that follows The Half-written Letter. After taking down some Stone Golems, I headed to TfoG for some Dark Stone Golems and some Mixed Golems:

    [​IMG]

    And then, again, back to Perion for some Excavation Site monsters. Like Officer Skeles:

    [​IMG]

    …and Skeleton Soldiers:

    [​IMG]

    …and everyone’s favourite: Commander Skeletons! These lovely lads are strong against ice, so I had to take out the ol’ Thunderbolt:

    [​IMG]

    Not very swift at killing them, but good enough for the quest at least…

    And, finally, to Deep Sleepywood for the last critters of the questline. Again with the resistance to ice, we have Ice Drakes:

    [​IMG]

    Terrible. You’re not allowed to be ice — I’m ice!! Stop being so icy so that my ice ices you better!!!

    And just your ordinary, average Drakes:

    [​IMG]

    And last but not least, the Tauromacis and Taurospears. As usual, only the Taurospears are willing to part with their cards:

    [​IMG]

    I also did Mr. Wetbottom’s Secret Book, and got myself another snazzy Sauna Robe:

    [​IMG]

    And I finished up my Mixed Golem set and my Shade set…

    [​IMG]

    …just in time to get a snazzy T2 ring~!

    [​IMG]

    And, for want of something else to do, I headed to the Orbis Tower for more monsters to card-hunt:

    [​IMG]

    None of these card sets pose any threat to our intrepid card-hunter cervine, who is armed with not one, but two multi-target magic spells.

    [​IMG]

    Of course, there is the Ice Sentinel, formidable as it is with its rimy exterior.

    [​IMG]

    But, to balance it out, we have the Ice Sentinel’s evil, but tender, twin: the Fire Sentinel.

    [​IMG]

    Warm and fuzzy as it appears, the Leatty is nevertheless cold at heart as well.

    [​IMG]

    But, like the Ice Sentinel, the Leatty has a tender evil twin, more reddish in hue.

    [​IMG]

    And we can’t forget our miniature spheniscid friends, the Jr. Pepes. Adapted to harsh Antarctic winters, they too would shrug at my Ice Strikes.

    [​IMG]

    And I would have ventured further, to the Jr. Pepe’s aquatic cousins (also adapted to harsh winters…), but they also share habitat with some of our Upper Aqua Road friends, so they can be saved for later.

    Having gotten the Shade set for cervine, I stumbled across one and decided to get the set for my daggermit alces and my darksterity knight rusa. Shade is a spooky guy, and it’s spooky season, but there’s no spooky event, so that meant it was time to say goodbye to last year’s spooky event cosmetics… which I had been using on alces…

    [​IMG]

    F4

    But, no matter — I did finish both of these sets:

    [​IMG]

    [​IMG]

    And got the stray Wraith card here and there:

    [​IMG]

    I did a bit of browsing for cards as rusa, too. I accidentally stumbled on a Jr. Booger card or two:

    [​IMG]

    As I was headed to The Cave of Evil Eye for the Evil Eye set:

    [​IMG]

    I also said hi to the reanimated mother of all mushrooms, but did not finish her set:

    [​IMG]

    Later, I got bored and browsed for cards on my pure STR bishop cervid. cervid had partially done the Orbis Tower, but never actually finished. So I went back for the Dark Leatties:

    [​IMG]

    …and the Jr. Pepes:

    [​IMG]

    And I headed back to Victoria Island for some of the quests there, including more of those pesky area boss quests. To that end, I beat up some flying old ladies:

    [​IMG]

    And I hung around The Swamp of Despair III and Dangerous Croko I for a while, not even for quests. I just wanted some cards. But these silly crocodilian fellows refused to give up their precious rectangles, so I had to make do with the surfboards that they kept giving me:

    [​IMG]

    [​IMG]

    Oh, well. Better luck next time!

    *Any readers who play(ed) MapleLegends are already familiar with the in-game “[MapleTip]” that reads something like: “‘Horny Mushroom’ is actually called Horned Mushroom”. If I made a joke about how silly this MapleTip was, it would not be the first — many have pointed out the humour. Reading the MapleTip literally, it’s plainly false; Horny Mushrooms are not only named as such in the String.wz, but that is de facto what they are actually called by anglophone players of the game. But, presumably, the MapleTip is just very poorly worded. Perhaps the MapleTip’s author meant to say that “Horny Mushroom” was merely a poor translation of the original Korean name for the monster, and that Wizet presumably meant to translate it as “Horned Mushroom” or similar. This is very plausible, even obvious — horny is occasionally used in English in the sense of “horned” (i.e. having horns). But the original sense in English is neither this “horned” sense (for which horned is, by far, the more popular of the two terms), nor the usual sense in contemporary English of “sexually aroused”. Horny was in English as early as the late 1300s, meaning “made of horn”, and by the 1690s it had evolved a slightly more abstract sense of “bony, callous; as if made of horn”. It wasn’t until the latter half of the 1800s that the “sexually aroused” sense emerged. And, if you were wondering, the “sexually aroused” sense is from the horn in horn + -y as a euphemism for an erect penis. Later, it was generalised to the sexual excitement of anyone, regardless of whether or not they have a penis.
     
    • Like Like x 4
    • Great Work Great Work x 1
  15. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    (You can also read the original diary entry here. If odd-jobbed characters interest you, you should know that Oddjobs is recruiting!)

    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:
    • Imposing a (simple) hypergraph onto our universe, with the universe being the vertex set. The hyperedges then represent relevant categories of odd jobs. These hyperedges are essentially arbitrary; the idea is the select them by hand, based on our systematic and historical understandings of the odd jobs.
    • Imposing a weak ordering onto our universe, as discussed in §4 and §5 of pt. iii, and then using this weak ordering to constrain the by-hand construction of a rooted forest of odd jobs. The vertex set of such a forest would, again, by the universe of odd jobs. When, in this forest, one odd job is a child of another, we interpret that to mean that it somehow “descends from” the other one. The result is intended to have an effect similar to the disjoint union of one or more phylogenetic trees.
    • Using clustering methods, as explored in pt. iii of this series. Applying a clustering method requires encoding each odd job into a form that is amenable to said method. This route also can require nontrivial computational resources, as the resulting tree is generated by the clustering algorithm, not constructed by hand.
    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:
    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* 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:
    • The hypergraph itself is already a kind of “taxonomy”, and we want to visualise it. Visualising hypergraphs can be done using Euler diagrams (of which Venn diagrams are a special kind), and/or using rainbow boxes. Our hypergraph will probably(?) be large and tangled enough that an Euler diagram may be painful. Rainbow boxes are a little more systematic, and I suspect that rainbow boxes are the way to go here. My current instinct is to use plotters to write a program that produces an SVG of the rainbow box that we want.
    • Because the hypergraph gives us some information about how the elements (odd jobs) of our universe are related, it can inform the routes that we take next in producing taxonomies. For our hand-picked rooted forest, a pair of odd jobs that are more joined within our hypergraph (i.e. they share more hyperedges) — or, more weakly, have a shorter hypergraph distance between them — are more likely to be closely related (i.e. shorter distance between them, within the rooted forest). And a pair of odd jobs that are not even connected within our hypergraph, are more likely to be disconnected in the rooted forest, as well (or at least, have a quite large distance between them). For our clustering, we can usefully compare the results of clustering with our hypergraph (and with our rooted forest as well, of course). And, if we are so inclined, we can even use the incidence matrix of our hypergraph as part of the input to our clustering algorithms.

    *“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:
    • “jobbed beginners”: {STR mage, DEX mage, woods(wo)man, brigand, LUKless sin}.
    • “mixed attackers”: {gish, gishlet}.
    • “perma-firsts”: {permawarrior, permamagician, permarcher, permarogue, permapirate}.
    • “islanders”: {STRlander, DEXlander, magelander, LUKlander, hybridlander}.
    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).
    • “melee mages”: {STR mage, DEX mage, gish, gishlet}.
    • “STRangers”: {woods(wo)man, LUKless sin, swashbuckler}.
    • “bloody”: {HP warrior, blood dit}.
    • “inlanders”: {camper, STRlander, DEXlander, magelander, LUKlander, hybridlander}.
    • “wanded”: {magelander, wandginner, wand warrior}.
    • “weaponed warriors”: {wand warrior, dagger warrior}.
    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(/staves). And our “weaponed warriors” are warriors defined by their weapon restrictions.
    • “spell users”: {permamagician, magelet, gish, gishlet}.
    • “DEX melee”: {DEXlander, DEXginner, DEX warrior, DEX mage, DEX brawler}.
    • “LUK melee”: {LUK warrior, LUK bucc}.
    • “daggered”: {dagger warrior, dagger sin}.
    • “power strikers”: {permawarrior, wand warrior, dagger warrior}.
    • “double stabbers”: {permarogue, dagger sin}.
    • “kickers”: {permapirate, armed brawler, swashbuckler, punch slinger}.
    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.
    • “beginners”: {camper, STRlander, DEXlander, magelander, LUKlander, hybridlander, STRginner, DEXginner, wandginner, LUKginner}.
    • “warriors”: {permawarrior, HP warrior, wand warrior, DEX warrior, LUK warrior, dagger warrior}.
    • “mages”: {permamagician, STR mage, DEX mage, magelet, gish, gishlet}.
    • “archers”: {permarcher, woods(wo)man, bow-whacker, bowginner}.
    • “thieves”: {permarogue, blood dit, brigand, LUKless sin, LUKless dit, grim reaper, carpenter, dagger sin, claw-puncher, clawginner}.
    • “pirates”: {permapirate, DEX brawler, LUK bucc, swashbuckler, pugilist, bullet bucc, punch slinger, armed brawler, pistol-whipper, bombadier, summoner, begunner}.
    Pretty self-explanatory here. Just classifying jobs based on what first grade advancement they take (or don’t take).
    • “rangeginners”: {bowginner, clawginner, begunner}.
    • “STR beginners”: {STRlander, STRginner}.
    • “DEX beginners”: {DEXlander, DEXginner}.
    • “wanded beginners”: {magelander, wandginner}.
    • “LUK beginners”: {LUKlander, LUKginner}.
    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.
    • “ammoless”: {bow-whacker, claw-puncher, pistol-whipper}.
    • “common claw users”: {LUKlander, hybridlander, LUKginner, LUK warrior, magelet, LUK bucc}.
    • “uniquely weaponed”: {grim reaper, carpenter, pugilist}.
    • “hybrid physical attackers”: {hybridlander, woods(wo)man, permarogue, LUKless sin, permapirate, DEX brawler, swashbuckler}.
    • “secondary statted”: {DEX warrior, magelet, woods(wo)man, brigand, LUKless dit, DEX brawler, swashbuckler}.
    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 weapons 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:
    • “outlanders”: {STRginner, DEXginner, wandginner, LUKginner, permawarrior, HP warrior, wand warrior, DEX warrior, LUK warrior, dagger warrior, permamagician, STR mage, DEX mage, magelet, gish, gishlet, permarcher, woods(wo)man, bow-whacker, bowginner, permarogue, blood dit, brigand, LUKless sin, LUKless dit, grim reaper, carpenter, dagger sin, claw-puncher, clawginner, permapirate, DEX brawler, LUK bucc, swashbuckler, pugilist, bullet bucc, punch slinger, armed brawler, pistol-whipper, bombadier, summoner, begunner}.
    Right, so, that’s our largest hyperedge, as expected…
    • “LUKless thieves”: {brigand, LUKless dit, LUKless sin}.
    • “weapon restricted”: {magelander, LUKlander, wandginner, LUKginner, wand warrior, dagger warrior, bow-whacker, bowginner, brigand, grim reaper, carpenter, dagger sin, claw-puncher, clawginner, pugilist, bullet bucc, punch slinger, armed brawler, pistol-whipper, begunner}.
    • “skill restricted”: {bowginner, clawginner, bombadier, summoner, begunner}.
    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.0328. 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 Θ(||²).

    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:
    • An incidence matrix seems to be the “obvious” way to represent a hypergraph, as hypergraphs seem to often be thought of as incidence structures. This is a ||×|| (or ||×||, if you prefer the transpose) binary matrix that uses a “1” entry to represent that the hyperedge represented by that column contains the vertex represented by that row. And the other entries are all “0”s.
    • A hyperedge list would be a straightforward generalisation of the notion of edge list. This would just be a list of all the hyperedges, with each hyperedge represented as a list (or set, whatever) of vertices.
    • A vertex list would be kind of like an adjacency list, but instead of each element being a list of adjacent vertices, it would have to be a list (or set, whatever) of hyperedges that contain it. Each hyperedge could just be an identifier (like a simple integer), or could be represented like it is in a hyperedge list. The compromise (between the former being slow and the latter taking up too much memory) is to store a vertex list in combination with a hyperedge list, so that the vertex list can just store pointers (or rather, indices) to the elements of the hyperedge list.
    • An adjacency matrix is still possible, in some sense. The best generalisation (if there is one) isn’t obvious, but the first thing that comes to mind is to store a list (or set, whatever) as each matrix entry, instead of a Boolean value. Each list would contain all zero or more hyperedges that join the corresponding two vertices. Like with the vertex list, these hyperedges can be mere identifiers, or you can store a hyperedge list alongside it and store indices into that hyperedge list.
    Here’s my (shitty) analysis of the asymptotic complexity of using these structures (let be the average cardinality of a hyperedge):
    data structurespaceadjacency checkenumerate neighboursenumerate hyperedgeincidence check
    incidence matrix Θ(||⋅||) Θ(||⋅||) Θ(||⋅||) Θ(||)❤️ Θ(1)
    hyperedge list❤️ Θ(||) Θ(||) O(||)❤️ Θ()❤️ Θ(1)
    vertex list (IDs only)❤️ Θ(|| + ||)❤️ Θ(|| ÷ ||) Θ(|| + ||) Θ(||)❤️ Θ(1)
    vertex list❤️ Θ(|| + ||)❤️ Θ(|| ÷ ||) O(||)❤️ Θ()❤️ Θ(1)
    adjacency matrix (IDs only) Θ(||² + ²||)❤️ Θ(1)❤️ Θ(||) Θ(||²) Θ(||)
    adjacency matrix Θ(||² + ²||)❤️ Θ(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:
    • ² ≈ ||,
    • and ³⁄₂|| ≈ ||,
    • and < < .
    I also sometimes make the simplifying assumption that for an arbitrary ∈ , E[deg()] ≈ || ÷ ||. 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 O 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 O(||) is potentially too pessimistic, i.e. we should only get truly O(||) 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 and 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 among 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. 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:

    [​IMG]

    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:

    [​IMG]

    …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 (kills per minute; 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:

    [​IMG]

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

    [​IMG]

    …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:

    [​IMG]

    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:

    [​IMG]

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

    [​IMG]

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

    [​IMG]

    [​IMG]

    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:

    [​IMG]

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

    [​IMG]

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

    [​IMG]

    [​IMG]

    A Tauromacis card! A rare sight indeed!!

    Oh, and also I did the Sauna Robe questline:

    [​IMG]

    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:

    [​IMG]

    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:

    [​IMG]

    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:*

    [​IMG]

    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:

    [​IMG]

    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:

    [​IMG]

    Nice~!!

    *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 Endure. If you play a warrior or thief without maxed Endure, 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:

    [​IMG]

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

    [​IMG]

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

    [​IMG]

    And, while we’re at it, 40 Jr. Neckis as well. And then, 120 Crocos:

    [​IMG]

    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!!:

    [​IMG]

    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):

    [​IMG]

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

    [​IMG]

    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.

    [​IMG]

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

    [​IMG]

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

    [​IMG]

    Very snazzy — another Sauna Robe down:

    [​IMG]

    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:

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

    Clang:

    [​IMG]

    …and Tortie sets:

    [​IMG]

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

    [​IMG]

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

    [​IMG]

    [​IMG]

    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:

    [​IMG]

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

    [​IMG]

    Wow, another Tauromacis card!!

    [​IMG]

    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:

    [​IMG]

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

    [​IMG]

    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

    [​IMG]

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

    Off to East Rocky Mountain VII~!

    [​IMG]

    [​IMG]

    [​IMG]

    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:

    [​IMG]

    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:

    [​IMG]

    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 an @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:

    [​IMG]

    65.3M DPH… y 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:

    [​IMG]

    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 RollRoll, so I got to loot it!!!:

    [​IMG]

    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:
    • I’ve had a lot of fun playing my Victoria Islanders: my clericlet d33r, and my dagger spearwoman d34r. Although vicloc is not so active anymore, I continue to enjoy playing around with them, even if it’s only to do some brief questing, grinding, hunting, and/or often APQ (and the hunting associated with it).
    • Back in the day™, the first character that I ever truly enjoyed playing (that is, excluding the one crappy normal-jobbed character that I started out with, who I believe never even made it to level 35…) was an outland STRginner. It was not long before I decided it would be at least as fun to do something very similar, but without ever leaving Maple Island. So, as a result, I was Maple Islanding relatively early on; somewhere around 2006 or so. Of course, at this point I was likely barely large enough to operate a keyboard, so my memory is more than a bit fuzzy, but I definitely do remember being excited to get event items like the White Valentine Rose and such.
    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:

    [​IMG]

    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/x/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

    [​IMG]

    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:

    [​IMG]

    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* Dreamscapes (Permanovice, Battlesage, Hanger), who was kind enough to give me a Broomstick!:

    [​IMG]

    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:

    [​IMG]

    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† found that it is one of the most polymorphic species of mammal in the world. From the abstract of said study:
    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:

    [​IMG]

    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:

    [​IMG]

    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:

    [​IMG]

    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:

    [​IMG]

    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:

    [​IMG]

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

    [​IMG]

    As uwu jesus continued to treat us with bounties, we decided to pronounce our devotion to uwu jesus publicly:

    [​IMG]

    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:

    [​IMG]

    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:

    [​IMG]

    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:

    [​IMG]

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

    *The term “perfectlander” has been used to mean at least two different things, as far as I know. To the best of my knowledge, the original sense is “islander who has the ideal AP build for island EPH”, which generally pans out as “DEXlander until you can one-shot everything 100% of the time, and then only add LUK after that, for the AVOID”. But the sense that I’m using here is “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. So, the latter sense is “perfect” insofar as it is proficient in all arts, whereas the former sense is “perfect” insofar as it perfects the art of levelling up on Maple Island.

    †S. González, J. E. Maldonado, J. A. Leonard, C. Vilà, J. M. Barbanti Duarte, M. Merino, N. Brum-Zorrilla, and R. K. Wayne, “Conservation genetics of the endangered Pampas deer (Ozotoceros bezoarticus),” Mol. Ecol., vol. 7, no. 1, pp. 47–56, Jan. 1998, doi: 10.1046/j.1365-294x.1998.00303.x.
     
    • Like Like x 5
  16. Healer
    Online

    Healer Windraider

    490
    1,494
    327
    Apr 26, 2015
    Male
    9:06 AM
    69
    It's actually easier than you except, just need to jump from a higher place with your pet on into the pit and it will actually loot it.
    Also congratz, love to read this.
     
    • Friendly Friendly x 1
  17. Slime
    Offline

    Slime Pixel Artist Retired Staff

    640
    1,184
    381
    Apr 8, 2015
    Male
    Israel
    9:06 AM
    Slime / OmokTeacher
    Beginner
    102
    Flow
    capre big damages f5
     
  18. OP
    OP
    deer
    Offline

    deer Pac Pinky

    195
    398
    191
    Oct 27, 2020
    Female
    Oddville
    7:06 AM
    cervid
    Bishop
    130
    Oddjobs
    (You can also read the original diary entry here. If odd-jobbed characters interest you, you should know that Oddjobs is recruiting!)

    rangifer’s diary: pt. lxxii

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

    In the previous section (§1) of this part (pt. v), I discussed a bit about what hypergraphs are, and how they could be useful for taxonomising odd jobs. I also explicitly constructed a hypergraph by hand, by listing some 37 or so hyperedges (and commenting on their inclusion). Then, bearing in mind that we want to use our hypergraph programmatically, I gave some of my initial thoughts about representing hypergraphs using data structures.

    One of the things that I mentioned when talking about how hypergraphs might be useful — if we think of each odd job in our universe as a vertex — is the possibility of visualisation. In particular, we have — to my knowledge — essentially two options: Euler diagrams and rainbow boxes. I was leaning more towards the rainbow box approach. With so many vertices and hyperedges, an Euler diagram would probably take a lot of clever hand-picked placements. On the other hand, rainbow boxes are at least systematic; Euler diagrams can be made systematic by restricting them to be Venn diagrams (which are just a special kind of Euler diagram), but that requires essentially 2 distinct spatial regions, where n is the number of hyperedges. So yeah, not really doable for n > 6 (and it’s already pretty gnarly once you get to n > 3).

    Rainbow boxes have some of their own issues (as we’ll see here), but, inspired by the example rainbow box given by Wikimedia Commons, I set out to write a program that would generate these rainbow boxes for me. Software already exists for programmatically generating diagrams, of course — but making a rainbow box of this kind, in a reproducible way, was going to mean more than some lines of Mermaid or throwing around a couple rectangles in Inkscape. But I did it anyways, because trying absolutely way too hard is definitely in the spirit of this series. So I want to talk a little about how I wrote a program to do this, before showing some of the results.

    The program is very bad

    I wanted to get this done really quick and dirty, so that’s what I did. As a result, the code is smelly and bad. If I ever feel like it, I might go back and clean it up so that it’s not a pile of hot garbage, but the time is not now.

    So, you know, if you get eye cancer from reading the source code, don’t say that I didn’t warn you.

    Data structures

    I did decide to construct an adjacency matrix, as mentioned in the previous section (§1), to represent the hypergraph. It comes along with a hyperedge list, which I lazily deserialise (from the input RON file) as a HashMap<String, HashSet<String>> and then pretty much keep it like that, with the exception of duplicating it as a Vec<(String, HashSet<String>)>. It works well enough, I guess, although I didn’t bother to actually optimise… almost anything. So it’s all implemented very poorly, with the only hard limitation being that I make sure never to do anything that could induce superpolynomial behaviour, for obvious reasons.

    I sometimes represent vertices by their IDs, and sometimes by their names, and I don’t really keep them very separate. Again, not very optimised. But, in order to go between these two representations, I actually just use an array — the array simply holds a single copy of each vertex name, in ascending lexicographic order. Then, to get from an ID to a name, you just index into the array with the ID as the index. To get from a name to an ID, you perform a binary search. This makes going in either direction take sublinear* time (Θ(1) and Θ(log ||), respectively), which is Good Enough™.

    *“Sublinear” as in: o().

    Ordering the vertices

    One thing about rainbow boxes is that each vertex gets its own column, and the order of those columns makes a big difference in how the diagram looks. If you put the columns in any arbitrary order, chances are you’ll have a bunch of unnecessary gaps in your hyperedges (rows). In fact, we can define this as an optimisation problem:

    Given a hypergraph ≝ (, ), find the permutation of that minimises, over all ᵢ , (, ᵢ).

    (, ) is defined for any permutation of a set , and any . (, ) counts the minimum number of substrings of necessary to make every element of also an element of one of the substrings, while also making each substring only contain elements of . For example, given = ⟨a, b, c, d, e⟩ and = {a, b, d, e}, (, ) = 2, because becomes ⟨1, 1, 0, 1, 1⟩ when checking for membership in — “1” indicates that the element is a member of , and “0” otherwise. ⟨1, 1, 0, 1, 1⟩ can, at best, be split up into ⟨⟨1, 1⟩, ⟨0⟩, ⟨1, 1⟩⟩, so we need at least 2 substrings of contiguous “1”s, if we want to cover all “1”s with our substrings while not covering any “0”s.

    Actually, because our rainbow box “wraps around”, we’re looking at cyclic orders, not permutations. Think of it like this: we could define four seasons of the Northern year like so:
    • “winter” = {December, January, February}.
    • “spring” = {March, April, May}.
    • “summer” = {June, July, August}.
    • “autumn” = {September, October, November}.
    The nice thing about each of these four sets is that they can be made totally contiguous; you can go through an entire season without any “gaps”. If “winter” were instead defined as {January, November, February}, you would have no choice but to start winter in November, then stop winter so that you could have December (which is now, presumably, not a part of any season at all), and then start winter again for the next two months of January and February. That’s no good. If someone scrambles up the definitions of the seasons (who would do such a horrible thing?), the optimisation problem asks how we can reorder the months (e.g. swapping November and December — making them the 12th and 11th months, respectively — might help in this case) so that we minimise the number of annoying gaps we get that break up the seasons.

    The issue is that I, uhm, have literally no clue how to solve this problem. The naïve approach, obviously, is to brute force it. There’s just one slight issue with that: the number of possible values of is ||!, which is — to use a highly technical phrase — very extremely bad. More specifically, I think a straight-ahead brute-force method ends up taking O(||⋅||⋅||!) time, or something like that. The point is that it’s definitely Ω(||!). So instead, I used a heuristic method…

    The idea here is to rank each pair of vertices (all ½||(|| − 1) of them) by their “shared degree”, that is, the number of hyperedges that are incident to both vertices. We start with the empty sequence ⟨⟩, then go through the ranking (in descending order of shared degree), adding the pairs to the sequence as we go. Each time we “add a pair”, we don’t necessarily add two new elements to the sequence; we do that only if both elements of the pair aren’t already elements of the sequence. If one is already in the sequence, but the other one isn’t, we add the latter one to the sequence, either directly preceding the former, or directly succeeding it (so that they are adjacent to each other). If both are already in the sequence, we do nothing. If neither are already in the sequence, then we append both to the end of the sequence (again, so that they are adjacent to each other).

    You can see my crappy implementation of this algorithm in order.rs, but here’s some nifty pseudocode anyways:
    Code:
    define heuristic_permutation(M : adjacency matrix) → permutation of V:
        pair_ranking := ⟨⟩
    
        for each i of ⟨0, 1, …, Dim(M) - 1⟩:
            for each j of ⟨i + 1, i + 2, …, Dim(M) - 1⟩:
                pair_ranking ← (i, j, |M[i, j]|)
    
        sort pair_ranking in descending order by the last element of each triple
    
        P := ⟨⟩
        for each i, j, _ of pair_ranking:
            if |P| = Dim(M):
                break
    
            if i ∈ P and j ∉ P:
                insert j into P, immediately after i’s position
            else if i ∉ P and j ∈ P:
                insert i into P, immediately before j’s position
            else if i ∉ P and j ∉ P:
                P ← i
                P ← j
    
        return P
    
    Does this actually produce good results? I mean, it’s probably better, on average, than picking a permutation at random. Maybe…? Aaaand that’s about as far as we’re gonna go here.

    Colours

    We are making a rainbow box here, after all. We’re going to need a lot of colours. What is a colour, anyways? As it turns out, you can write (and many have written) nearly countless tomes on such a subject — it’s quite complicated! But I’m no expert, so I did a little bit of digging around the WWW for a cheap hack that would let me generate a rainbow of some kind.

    I found one suggestion that seemed appealing, although the author didn’t go into any detail, merely suggesting that the sine function be used to modulate colour channels. So, I thought about it a little bit, and tested the first thing that came to mind. First, I would map the index of each column (each column on the diagram, that is; each corresponding to a single element of ) to the unit interval by dividing it by ||. Call it ∈ [0, 1]. Then, I would map into an RGB colour space like so:

    Rainbow() : ℝ ≝ RGB(½sin() + ½, ½sin( + ⅔π) + ½, ½sin( + ⁴⁄₃π) + ½)

    The purpose of the “½”s is to scale each component (red, green, blue) to the unit interval. The image of the sine function is [−1, 1], so multiplying by ½ brings that to [−½, ½], and then adding ½ takes it to the desired [0, 1]. In order to have the components spread out from one another, their angles (the arguments to the sine functions) are separated by ⅔π radians — in other words, one third of a rotation. So they’re nice and evenly spaced, since we have three components.

    This achieved the desired effect, although of course “rainbow” is a bit of a misnomer — actual rainbows display some section of the visible spectrum, which only includes colours that can be produced by a single wavelength of light. Our Rainbow() function, on the other hand, produces plenty of colours that require multiple wavelengths of light, and thus are “not part of the rainbow”. But that’s okay; it looks just fine. We didn’t really want a rainbow per se anyways.

    But then, there comes a time when we must put overlay text onto our coloured polygons. I want to either put black text, or white text, but the issue is that some colours are brighter than others. Like I said, I am no colour expert. But it seems that luminance-related terminology looks roughly something like:
    • Luminous flux: The electromagnetic energy emitted by an object — weighted by a luminous efficiency function that attempts to capture the sensitivity of the human eye to various wavelengths — per unit time. That is, indeed, energy per unit time, so you would expect this to be measured in units of J/s, a.k.a. W. But the SI defines the candela (cd) as a base unit, giving it its own dimension. So luminous flux is measured in units of cd⋅sr, a.k.a. lm.
    • Luminous intensity: The luminous flux of a source, per unit solid angle. Thus, it is measured in units of cd, a.k.a. lm/sr. This attempts to capture the fact that a light source with a higher measured luminous flux might be “less intense” than a light source with a lower measured luminous flux, and only has a higher flux because it’s so close to the measuring device (e.g. your eyeball) that it takes up a large portion of the measuring device’s “field of view”.
    • Luminance: The luminous intensity of a source, per unit of projected area. The “projection” could be because you aren’t thinking of your measuring device as a kind of “point-like” device, but rather, as a surface that the light projects onto — like an image sensor or retina. Or, it could be that the surface itself is reflecting/emitting the light, like the surface of an object reflecting ambient light, or an image projector, or even a computer monitor. Either way essentially amounts to the same thing. In any case, luminance is measured using the units that you’d expect: cd/.
    • Relative luminance: This is luminance, but defined relative to a perfectly white, 100% reflective reference colour/material. Whereas luminance is measured in cd/m², relative luminance is dimensionless, and is generally defined to lie within the unit interval — 1 corresponds to the white reference point, whereas 0 corresponds to no light at all.
    • Luma: Similar to relative luminance, but defined in terms of a linear combination of gamma-compressed RGB values, rather than of raw (uncompressed) values. Whereas relative luminance is largely a colourimetric term, luma applies specifically to (digital) images, like video and still images. The reason for this is that gamma compression is important to efficiently make use of bits when encoding images, due to the way that humans perceive brightness/darkness. Gamma compression simply takes each component of a colour and takes it to a power — called γ, hence the name — such that 0 < γ < 1 and when decompressing, the values can simply be taken to the γ⁻¹ power. This use of a logarithmic scale is similar to the use of decibels (dB) for sound pressure, and follows a general trend theorised by psychologists as Weber’s law, Fechner’s law, and Stevens’s power law.
    Because we’re working with digital media here, this last term (luma) is what we’re looking for. That being said, I wasn’t really sure how gamma compression interacts with colours that we specify (e.g. in CSS, or in our case, SVG) using simple RGB values like #FF0000 for red. So, instead, I took the easy way out and just pretended that gamma compression isn’t even real. If I get it wrong, the worst thing that can happen is that I get a relative luminance value, right? Seems fine…?

    So I took the W3C’s advice and used the coefficients defined by ITU-R Recommendation BT.601:

    ₆₀₁ ≝ 0.299′ + 0.587′ + 0.114′

    A prime symbol (′) means that the value is gamma-compressed.

    Then, to determine whether to use white or black text, I checked whether or not the background colour was “dark”. I simply defined “dark” as ′ < ½ (or is it < ½…?). And it looks just fine!

    Oh, and then I had to figure out how to colour the hyperedges, as well. I decided to mix together the colours of all vertices that are in the hyperedge, to come up with the colour for the hyperedge. So, great. Now I have to figure out how colour mixing works… Luckily for me, additive colour mixing is relatively simple to implement in a basic way. To get one of the colour components of the result (e.g. green), you simply take the root mean square (rms) of the same component (green) from the colours that you’re mixing.

    Dealing with plotters

    As I mentioned in the previous section, my first instinct was to reach for plotters as my library of choice to power my program. Not because I had any experience with plotters, or really with much data visualisation software at all, but rather because I don’t have experience with such things. So, because Rust tends to be my language of choice these days (largely just so that I can satisfy my unhealthy compulsion to optimise, or at least be capable of optimising, the living shite out of anything that I write), plotters became the natural choice. As the name implies, plotters is focused on plotting data, and features built-in facilities for two-dimensional and three-dimensional data plotting, including usual function and scatter plots, as well as candlestick charts, histograms, etc.

    Unfortunately, none of the built-in functionality was actually going to help here. So in reality, I was just using plotters to render a few polygons (almost entirely rectangles) and some text to an SVG output. If I knew that I was going to be rendering to SVG anyways, was this really going to be faster than just hand-writing it? I’m not sure, although I didn’t know my way around the SVG (1.1) specification, so I just went with using plotters anyways… Plus, if I use plotters, I get a bunch of backends for free: not just SVG, but also bitmap images, the HTML5 <canvas> element, and cairo (which means GTK and FLTK support). Not too shabby, I guess.

    In the end, as I said, my code is obviously not representative of what good plotters code should look like, at all. I just got it to the point where it works. The one real pain point is text, where I knew I was going to have some trouble writing text into the main bit of the image, where the hyperedges are displayed. This is necessary for labelling the hyperedges with their names, but there are some cases where text overflow is unavoidable. In the end, I did kind of a hacky workaround that doesn’t look amazing, but makes it (hopefully) readable enough. The end result is a bunch of rectangles and some text, with the occasional triangle here and there (to make the gaps look nicer and a bit easier to read).

    Optimising with SVGO

    The resulting SVG files were a bit large (doable, but still large), so I thought I’d have a go at optimising them. Luckily for me, there’s a program that will just do this for me: SVGO (SVG Optimiser). I optimised each image with the following command-line options:
    • --multipass
    • --eol lf
    • --final-newline
    • --pretty
    • --indent 2
    …And ended up shrinking each file by a factor of about five, on average! Very nice!! The last two arguments are not really necessary, but I figured that it may as well be somewhat readable if someone looks at the plain text.

    The results

    Like with the odd job universe, I encoded each hypergraph as a RON file. I put together three such hypergraphs:
    • a “large” one, which you can find as odd_job_hypergraph-large.ron, and which includes all 37 hyperedges enumerated in the previous section;
    • a “medium” one, which you can find as odd_job_hypergraph.ron, and which cherry-picks an arbitrary handful of the hyperedges from the “large” version;
    • and a “small” one, which you can find as odd_job_hypergraph-small.ron, and which cherry-picks an arbitrary handful of hyperedges from the “medium” version.
    Below, you can see the rainbow boxes that are generated by my program for each one. Bear in mind that these are vector graphics, so you can view them at full fidelity from any zoom level; if you need to zoom in, try opening one in its own browser tab and inspecting it from there:

    [​IMG]

    [​IMG]

    [​IMG]

    Cool, right? Maybe?? Please say yes…

    woosa finishing up (almost) all of her 4th job quests

    My darksterity knight rusa has had just a few fourth job skill quests lingering, waiting to be completed.

    One of these is the Power Stance quest, which I largely haven’t completed because the party quest (PQ) that you do to complete it, El Nath Party Quest (ENPQ), is also the source of numerous skillbooks that cannot be obtained elsewhere. But, if you complete the PQ and get Power Stance, you can never enter the PQ ever again. So a “stanceless 4th job warrior” is required to even obtain such skills. I’ve already gotten two such skills for myself: Dragon’s Breath for my woodsmaster capreolina, and Infinity for my pure STR bishop cervid. But there are some other people who I want to get skillbooks for, as well.

    On the other hand, I still had some skill quests that I could complete: to raise the maximum (master) level of Aura of the Beholder, and to do the same for Hex of the Beholder. I hadn’t finished these earlier because, well, these skills just aren’t important; it’s unlikely that I’ll ever even spend SP on either of them, and I at least got access to them by doing the initial quests to defeat Thanatos and Gatekeeper. Plus, the quests are a tad unexciting; they’re just ETC collection quests. But, I figured I’d complete them at some point, and that point was now.

    So, I headed to Deep Ludi to fight some MDTs in Lost Time:

    [​IMG]

    Ooooh, snazzy… a card…

    [​IMG]

    Once I had collected enough Binding Bridles to finish off the 500 that I needed for the final part of the questline, I maxed out my master level for Aura of the Beholder:

    [​IMG]

    The EXP for these quests is… okay. I mean, the monsters that you’re fighting are reasonably high-level and give some halfway-decent EXP, so it’s not too horrible, EPH-wise.

    With that, I started the questline to improve the master level of Hex of the Beholder, which meant heading to WPoT4 for Spirit Vikings:

    [​IMG]

    And this time, I was here long enough to actually finish the card set! Nice!!:

    [​IMG]

    I also found a mastery book for Dragon Strike level 20. As it turns out, Spirit Vikings are one of only two sources of this mastery book, the other being Pianus (L)!:

    [​IMG]

    I later responded to a smega from an extremely unfortunate buccaneer who had already managed to fail a preposterous number of these exact mastery books (like 8 or 9? Maybe more?? I don’t remember…), and was looking for another one to try. I gave them my book, and it passed!! Yay!!! Congrats ^^

    With 200 Viking Sails collected, I finished the first mastery increase:

    [​IMG]

    And I went back to Spirit Vikings for the 500 sails, as well. But, once I had 5/5 Spirit Viking cards, and was over halfway to 500 sails, I stopped there and simply transferred some sails from capreolina to rusa, to finish the last bit. So that’s done!

    Some special OPQs

    I was invited to OPQ with fellow Suboptimal members Battlesage (Permanovice, Dreamscapes, Hanger) the gish, kookietann (kookiechan, kurisuwu; not actually a member of Suboptimal, anyways, but Battlesage’s partner and a member of GangGang), partyrock (xX17Xx, drainer, attackattack, breakcore, maebee, strainer, raving, technopagan), trishaa, and Lvl1Crook (xXCrookXx, Sangatsu, Level1Crook)! Together, we made a fearsome party of six… I didn’t have any characters that were capable of OPQing, so I took my OPQ mule (and DEXless assassin) sets, who is one of only two of my characters not in Suboptimal — she’s in GangGang as well. Here we are, fighting Father Pixel himself:

    [​IMG]

    We had a lot of fun in these PQs!! It took us a few PQs to, uhm, get the whole “do the lounge and the storage concurrently” thing quite right, but otherwise the runs were quite smooth. I admit, I don’t play my OPQ mule much (I continually regret not making her a swashbuckler…), but these PQs were a ton of fun! sets already does pretty ridiculously high damage (being rather optimally built as she is), but even so, I am a bit excited to see just how quickly she could mow down Father Pixel as a fully mature (i.e. level 70) OPQ mule…

    A lil bossin’

    I was fortunate enough to log on just in time for a chance to fight Ravana on my woodsmaster capreolina! I’ve mostly only been logging on to capre for the purpose of boss-fighting (and to fail more pet HP 60%s — maybe one day, I will manage to pass one…), as I suppose I’ve found it more productive and inspiring to grind on other characters, leaving capre’s EXP gain up to the bosses. I’ll probably get around to grinding on capre sooner or later, even if only to test various training spots and compare them to CDs. In any case, I joined a party with xBowtjuhNL, Gruzz, Harlez, and Bipp to fight this Hindu villain:

    [​IMG]

    Later, while I was doing the Deep Ludi skill quests on my darksterity knight rusa, I was invited to do some Papus by xBowtjuhNL, so we decided to duo it:

    [​IMG]

    These Papu fights were pretty exciting for me, not just because they got me the Papulatus Certificate that I needed for the Certificate of the Dragon Squad quest (which I now just need the Zakum Certificate for), but because I was actually able to zerk throughout the entirety of both Papulatus Clock fights!! Unfortunately, I was not set up to zerk efficiently through the fights with Papulatus proper, but that’s okay; it barely has any HP anyways, and I was probably still zerked like 40% of the time there. It was really cool to be able to zerk against A Real Boss™, without really worrying about dying, even with all of the dispels and 1/1s! Here’s an @dpm test that I did during one of these fights, with my usual buffs (including Cider), plus xBowtjuhNL’s SE (which helps a lot, thanks to Crusher dealing damage across three 170% damage lines, and thanks to zerk’s damage bonus being an aftermodifier):

    [​IMG]

    22.5M DPH against Papulatus Clock! Cool!! Not as much as capre is capable of, but still extremely impressive.

    Oh, and we were so fortunate as to get Soul Teddy Chair drops from both runs!!:

    [​IMG]

    Cozy!!!

    More MPQ, with panolia

    That’s right — it’s time for more em peek “U”s with my permarogue, panolia! Speaking of panolia, did you know that Panolia isn’t even a real genus?? Eld’s deer (Rucervus eldii) was named Panolia eldii by English zoologist John Edward Gray at least as early as 1850*, but at the time (and for over a century to come), the genus Cervus would include members of what are now considered to be other genera, including Axis, Dama, Rusa, etc., and most importantly, Rucervus. Even today, these genera are somewhat controversial, but part of the consensus (that there is) seems to basically be that Panolia and Rucervus are not distinct, but Cervus and Rucervus are. Searching for “Panolia” within the ITIS yields no results whatsoever; the species in question can be found there as Rucervus eldii. It can also be found on the ITIS as an “invalid name” under Cervus eldi and Cervus eldii, with the former as a “misspelling” and the latter as the “original name/combination” (dating from 1842).

    Oh, right. MPQ. Well, I was joined by I/L mage StormSpirit and F/P mage HeartNetNing (with whom I also MPQ’d in a previous entry), as well as STRginner Daddyo! Here we are, fighting Fanky:

    [​IMG]

    Our PQs went smoothly, with the exception of one where poor HeartNetNing got disconnected before making it to the boss stage :( On the bright side, Daddyo seemed to be having a pretty fun time of it, which contrasts favourably with the experiences I’ve been told of by other permabeginners…

    And, at long last, I finished enough MPQs to get panolia’s not first, not second, but third Horus’ Eye! Here’s hoping I can finally get that fabled 5 LUK clean one:

    [​IMG]

    Alright, well, I don’t know what I expected. I’ll just have to scroll one of my below-average ones…

    *J. E. Gray, “Panolia, Gray,” in Catalogue of the specimens of Mammalia in the collection of the British Museum, vol. 3. London, England: British Museum Nat. Hist. order of the Trustees, 1850, pp. 202–203. Available: https://archive.org/details/cataloguemammalia03britrich/page/202/mode/2up

    I’m back on my old shit. The sadsadgrind.

    Indeed, ’tis time for the grind — but not just any old grind: the sadsadgrind. The grind in which my pure STR bishop cervid and my darksterity knight rusa join forces to lay waste to countless CDs. Because the only thing more sad than solo grinding, is duo grinding with yourself.

    cervid was reasonably close to the next level, so she was actually the first to level up