====== A Noob's Guide to the Crypt ====== __By Axiom โ€” Originally posted in Discord__ This guide shares a few things I've picked up starting the crypt. ===== Learnings ===== * As so often with this game: **good gear & bad code > good code & bad gear**. You can get away with bad code if your gear is good. * The crypt isn't hard to do โ€“ but **some monsters are hard to kill** ๐Ÿ™‚ ===== Practical Tips ===== * You **MUST** have good tanking-ability (which means gear) * Optional: You should be able to **AoE (for Spike)** * I opted for **Priest / Warrior / Warrior**, simply because all 3 can tank and 1 can heal. It's the most resilient combo I have available. * A lonely monster is an easy monster! * Avoid monsters that are close together. * Have a good blacklist! * Found an easy mob but Orlok (or some other tough mob) is close? __Blacklist!__ * Found a hard mob with the healer attached? __Blacklist!__ * Found an easy mob with the healer attached? __Go for the healer first!__ * Yes, by blacklisting a ton of mobs you lose out on loot * But: You also stay alive, you don't enter a death loop, and you don't spend 2 hours in the same crypt! * Remember, this is the __noob's guide__ to the crypt! ๐Ÿ˜„ We ignore hard challenges and go for low-hanging fruit! ===== Want to Crypt? Here's How! ===== * You must be able to open a crypt instance * You make the instance ID available to all characters so they can join it * You should track the mobs you already defeated * Record the time you enter the crypt and delete the instance after X time (30 minutes? 1 hour?) All of the above (1-3) can be solved via `localStorage`. __Housekeeping__: Delete the instance if you killed all monsters (tracked in step 2) or if you've spent too much time in the instance (tracked in step 3). ===== Characters Must Be Able to Enter the Crypt ===== * Is there a Crypt-ID in localStorage and you're not already in the crypt? * If you're far from the crypt door, **move to the door** * If you're at the crypt door, **enter the crypt** using the ID from localStorage ===== Okay, Now You Are Inside ===== Make sure all characters go to the same spot. __An easy spot is at the vbats__ โ€“ it's the only static spawn in the crypt and always at the same location. ===== The Simplest Way of Farming the Crypt ===== * If nothing else, **kill all vbats** and delete the crypt instance from `localStorage` * Repeat! **Congratulations!** You can now farm `crings` & `ceaarings` โ€” vbats drop A LOT of them. > If you only farm vbats, youโ€™ve likely already got loot worth more than the crypt key (which usually goes for 3โ€“5M). ===== Farming Other Mobs than Vbats ===== * Find out what you can kill safely * If it's in `parent.entities`, go there and hammer away! ๐Ÿ˜„ Youโ€™ll soon find there are a lot of edge cases: * Thereโ€™s a healer that can make an easy monster like Bill undefeatable when attached __Write targeting logic AND safety logic:__ * Does the mob you want to farm have a healer ("a5") within X pixels? โ†’ Ignore it * ...But maybe attack the healer? ๐Ÿ™‚ * Is the monster leveled? โ†’ __Blacklist!__ * Is the monster named Orlok? โ†’ __Run!! ๐Ÿ˜„__ > Do this well, and you can farm most things. I *can* farm everything except Orlok โ€” *if* the monster is alone. ===== You Donโ€™t Need Pathfinding ===== Pathfinding is hard to do โ€” and even harder to do well! One of the most dreaded parts of the crypt is that all monsters (except vbats) roam around. Their location changes every run. **But I figured:** What is pathfinding? It finds a path from A to B. We kind of have that already with `smart_move()`. We know A (our current position), But we donโ€™t know B (the next monster). So... let's roam! ===== Roaming Logic (The Easy Way) ===== I chose the most inefficient but simple solution: __Just visit all or most intersections of the crypt and record them!__ * Make an **array of waypoints** * The array must be **ordered** * Start from the middle of the crypt * Keep adding waypoints until you complete a full loop ===== How to Roam ===== Simple rules! __If the current character is the master/tank:__ * Find the **closest waypoint** * Are the other 2 characters close? * If not โ†’ Stay at current waypoint and wait * If yes โ†’ Move to the **next waypoint** * Can't find other characters with `get_player()` (they may be dead)? โ†’ Go to `waypoints[0]` and regroup __If the character is not the master/tank:__ * Can you get the master with `get_player()`? โ†’ Move to him! * If not โ†’ Go to `waypoints[0]` and regroup And that's how you roam the crypt the easy way! ๐Ÿ˜„ > Itโ€™s inefficient as hell, yes. But it gets the job done โ€” youโ€™ll cover the whole crypt. ๐Ÿ˜„ ===== And Thatโ€™s It! ===== I hope you enjoyed! ===== Thank You ===== {{https://images-ext-1.discordapp.net/external/BOnYgqTg8uim-IAbd0h4JbFx4txOLoxPPOD7O29ysgQ/https/media.tenor.com/UladBrWhuJ8AAAPo/bowing-thank-you.mp4|Thank you from Axiom}} ===== BONUS: Edge Cases ===== The crypt is full of edge-cases. Itโ€™s what itโ€™s famous for! * Monster X is easy! Let's attack! * Oh, this time it has a healer... * Oh, now it's next to Orlok too... __So how do we noobs deal with it?__ ==== Ignore the Edge-Cases ==== Yes! __Simply ignore the edge-cases!__ ๐Ÿคฃ Here it comes: * Do **not** write code to handle edge-cases. * Write code to find **good cases**! > Your target selection should reflect what a **safe** monster is. * If it matches your "safe" definition โ†’ **Attack it** * If not โ†’ **Ignore it** This is the **easiest way** (that I found) to get decent target selection with minimal code โ€” for a wide range of targets and situations. --- __Originally written by Axiom in Discord. Minor formatting applied for wiki readability.__