-
-
Notifications
You must be signed in to change notification settings - Fork 418
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add helper for the The Curse of Arrav quest #1833
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lots of puzzles, well done on getting through them all, solutons all look solid!
src/main/java/com/questhelper/helpers/quests/thecurseofarrav/TheCurseOfArrav.java
Outdated
Show resolved
Hide resolved
// If the user has not already put the key in the south lever, and does not have the key | ||
((ConditionalStep) unsortedStep6).addStep(and(needToInsertKeyInSouthLever, not(hasSecondKey)), getSecondKey); | ||
// If the user has not already put the key in the north lever, and does not have the key | ||
((ConditionalStep) unsortedStep6).addStep(and(needToInsertKeyInNorthLever, not(hasFirstKey)), getFirstKey); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Step marked as not sorted, but to ensure it's highlighted it currently directs to get key 2 before key 1.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has been resolved in my refactors (no commit hash sorry)
pullSouthLever.addDialogStep("Yes."); | ||
var getToSouthLever = new ObjectStep(this, ObjectID.ODD_MARKINGS_50207, new WorldPoint(3891, 4554, 0), "Search the Odd markings to the south to get to the south lever. Search the markings again if you fail."); | ||
var needToInsertKeyInSouthLever = new VarbitRequirement(11482, 0); | ||
var needToFlipSouthLever = new VarbitRequirement(11482, 1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to flip it if it's 1 or 0.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should have been fixed, but its logic is kind of weird. I've added unit tests to try to make it sane.
|
||
var insideTomb = new Zone(new WorldPoint(3842, 4603, 0), new WorldPoint(3900, 4547, 0)); | ||
var insideTombReq = new ZoneRequirement(insideTomb); | ||
var hasFirstKey = new ItemRequirement("Mastaba Key", ItemID.MASTABA_KEY); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can add conditional show on steps for if used on lever.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I decided not to add this because:
- It messes with the conditional step logic if the key is used as a condition
- I think either key works for either lever (but I could be wrong with this)
var getToNorthLever = new ObjectStep(this, ObjectID.ODD_MARKINGS_50208, new WorldPoint(3891, 4597, 0), "Search the Odd markings to the north to get to the north lever. Search the markings again if you fail."); | ||
pullNorthLever = new ObjectStep(this, ObjectID.LEVER_50205, new WorldPoint(3894, 4598, 0), "Pull the lever to the north-east.", hasFirstKey); | ||
pullNorthLever.addDialogStep("Yes."); | ||
var needToInsertKeyInNorthLever = new VarbitRequirement(11481, 0); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs using if making its own step. Else can just make a the 'need to pull' check, where the key hides itself if used.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has been cleaned up
))); | ||
panels.add(new PanelDetails("Fort Invasion", List.of( | ||
unsortedStep20, | ||
rubbleMiner1, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All as one substep of a single one I think as it's the same text, or if not more distinguished text.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
this.addMineRubbleStep(2767, 10278, RubbleType.One, Direction.WEST); // 12 | ||
this.addMineRubbleStep(2767, 10279, RubbleType.Two, Direction.WEST); // 13 | ||
this.addMineRubbleStep(2768, 10279, RubbleType.One, Direction.WEST); // 14 | ||
this.addMineRubbleStep(2767, 10279, RubbleType.One, Direction.SOUTH); // 15 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
|
||
@Override | ||
protected void setupRubbleSteps() { | ||
this.addMineRubbleStep(2766, 10279, RubbleType.Three, Direction.WEST); // 5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like this as a clean solution! Players will be able to break it by deciding to mine from a non-directed direction, but it shouldn't hopefully ever be too problematic and 99% of people almost certainly won't.
rubbleMiner2, | ||
rubbleMiner3, | ||
rubbleMiner4, | ||
unsortedStep30, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This and below 3 steps need to be changed to actual steps.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has been cleaned up
* The third column is for strip 1 | ||
* The fourth column is for strip 3 | ||
*/ | ||
private static final int[][] CODE_MAPPING = new int[][]{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be good for this to have a few extra features:
- Arrow highlight to have number of times you still need to click it.
- Overlay saying what the answer is
- Allow for down arrow to be used if it's closer to answer
The existing door solvers from like Tribal Totem and SOTN should provide templates for those bits.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has been done, but in a bit of a unique way since I I'm using a DetailedOwnerStep instead of a straight up QuestStep
The new solution assumes that the key 30308 always goes with lever 50204, and 30309 goes with 50205. This makes the conditional logic a lot simpler.
(optimal ironman guide doesn't have curse of arrav so i just added it where it felt good)
Unrelated changes I've made:
display text
toConditionForStep
. This was useful in the RubbleSolver stepsBasicQuestHelper
step loading. thesetupStep
function is currently called twice when a quest is initialized. However, no logic has actually changed for now (as is explained in the added comment)-1
WidgetModelRequirement
, and the text we look for inWidgetTextRequirement
. I use this in the metal door puzzle solver to update what we're looking for depending on the code the user needs to enter.makeWidgetOverlayHint
. This is used in the metal door puzzle solver to render text for how many steps are left