Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- X position has to be greater than or equal to -1877
- (before turning goron)
- Z position has to be less than or equal to 105.8205
- (before turning goron)
- (x,z)
- 1:
- Human: (-1836.245, 67.24214)
- Goron: (-1832.419, 71.19346)
- difference = (-1832.419 - (-1836.245), 71.19346 - 67.24214) = (3.826, 3.95132)
- 2:
- Human: (-1864.574, 94.67256)
- Goron: (-1860.748, 98.6239)
- difference = (3.826, 3.95134) (slightly different, maybe floating point error? too lazy to check)
- Slopes:
- Human slope = (67.24214 - 94.67256)/(-1836.245 - (-1864.574)) = ~ -0.96828056 ==> Truncate to -.96828
- Goron slope = (71.19346 - 98.6239)/(-1832.419 - (-1860.748)) = ~ -0.9682812665 ==> Truncate to -.96828
- Human line:
- z = -.96828x - 1710.7571686
- Goron line:
- z = -96828x - 1703.10120932
- (-1824.371, 118.3828)
- -.96828(-1824.371) - 1710.7571686 = 55.74478328 < 118.3828
- human safety line:
- z = -.96828(x - (-1839.544)) + 88.43627
- z = -.96828x -1692.75739432
- (-1839.544, 80.93627) this is a point that is within our bounds; good point
- -.96828(-1839.544) - 1692.75739432 = 88.43627 > 80.93627
- value of point is less than value on the line, so good points are below the line z = -.96828x -1692.75739432
- While human, check: Z_Position <= -.96828*X_Position - 1692.75739432 to ensure link is in the good region before attempting the goron pound clip
- ---------------------------
- Checking Success:
- inside wall (assume same slope):
- (-1885.182, 45.3085)
- z = -.96828(x - (-1885.182)) + 45.3085
- z = -.96828x -1780.07552696
- For safety, assume a line in between the human line and the inside wall line
- Checking Line: z = -96828x - 1750
- if Z_Position < -9.6828*X_Position - 1750, then consider the clip a success
- ---------------------------
- untargeted right slash + shield = targeted right slash = targeted right slash + shield = targeted right slash + untarget ASAP + shield
- targeted left slash = untargeted horizontal slash + shield = targeted left slash + shield
- Targeted Vertical Slash = Targeted Vertical Slash + Untarget ASAP + Shield = Targeted Vertical Slash + Shield =/= Targeted Vertical Slash + Untarget ASAP
- left, right, vertical, forward
- ---------
- MOVEMENTS:
- Turn Right
- Turn Left
- Turn Down
- Turn Up
- Untargeted Horizontal Slash
- Untargeted Horizontal Slash, Shield
- Targeted Vertical Slash
- Targeted Vertical Slash, Untarget ASAP
- Untargeted Right Slash
- Untargeted Right Slash, Shield (note: this is the same as Targeted Right Slash)
- Targeted Forward Thrust
- Targeted Forward Thrust, Untarget ASAP
- ---------
- define functions
- Turn_Right()
- Untargeted_Horizontal_Slash()
- etc.
- Also define Perform_Goron_Pound_Clip() which assumes you start as human (note: turning goron changes your position if you are close enough to the wall) (for this function, check all 4 possible angles in order to determine how to turn before dropping the bomb)
- ---------
- Positions = {}
- # add initial position to dictionary
- Positions[(x,z,y)] = True
- after each movement, if the movement is not Turn Right, Turn Left, Turn Up, or Turn Down, if (X_Position, Z_Position, Y_Position) in Positions.keys(), then flag this permutation of movements as 'redundant' and proceed to the next permutation (i.e. if this happens, then the sequence of movements up to this point brought you back to a position that you already consistently got to with fewer movements)
- Also, make it so that you cannot do multiple "Turn" movements in a row. Since the savestate will initially be facing up, make it so that Turn Up cannot be the first movement
- ----------
- Perform a ton of movements and if the finial position is within the "safety region" then perform the goron pound clip, otherwise flag the permutation as "outside of region" and proceed to the next one
- ----------
- need to define a set of valid permutations to iterate over; should limit the number of movements allowed in each permutation to make the set "not too big" and also make the setup "not too long"
- I have 12 possible movements. For the first movement, I only have 11 possible movements since I am asserting that I do not Turn Up for the first movement because the savestate will already have link facing up.
- ----------
- Movement_Options = {'Turn Right', 'Turn Left', 'Turn Down', 'Turn Up', 'Untargeted Horizontal Slash', 'Untargeted Horizontal Slash, Shield', 'Targeted Vertical Slash', 'Targeted Vertical Slash, Untarget ASAP', 'Untargeted Right Slash', 'Untargeted Right Slash, Shield', 'Targeted Forward Thrust', 'Targeted Forward Thrust, Untarget ASAP'}
- For option in Movement_Options:
- --------------------------
- note (INCORRECT):
- Z
- 5 nothing
- down + c down (bomb)
- 1 nothing
- A
- 11 nothing
- c-right (goron mask)
- 4 nothing
- A
- 21 nothing
- control stick direction
- up on control stick (turn up)
- -- Wait X frames before curling so first explosion frame occurs on second -20 y velocity frame
- (currently bomb explodes 32 frames after -11 y velocity frame, want it to explode 4 frames after, so wait 28 frames before curling)
- A (curl)
- 7 Hold A
- B + Hold A
- 17 Hold A (have -11 y velocity now) <-- can release A now
- 1 Hold A (have -20 y velocity now) <-- or can release A now
- 1 nothing (still have -20 y velocity now) <-- should have 15 linear velocity now
- if release A on -11 y velocity frame, you have -20 y velocity for 4 frames
- if release A on first -20 y velocity frame, you have -20 y velocity for a total of 4 frames
- --------------------------------------------------------
- note (CORRECT):
- Z
- 5 nothing
- down + c down (bomb)
- 1 nothing
- A
- 11 nothing
- c-right (goron mask)
- 4 nothing
- A
- 21 nothing
- control stick direction
- up on control stick (turn up)
- -- Wait X frames before curling so first explosion frame occurs on second -20 y velocity frame
- (currently bomb explodes 32 frames after -11 y velocity frame, want it to explode 5 frames after, so wait 27 frames before curling)
- A (curl)
- 7 Hold A
- B + Hold A
- 17 Hold A (have -11 y velocity now) <-- can release A now
- 1 Hold A (have -20 y velocity now) <-- or can release A now
- 1 nothing (still have -20 y velocity now)
- 1 nothing (still have -20 y velocity now)
- 1 nothing (still have -20 y velocity now)
- 1 nothing (should have 15 linear velocity now)
- if release A on -11 y velocity frame, you have -20 y velocity for 4 frames
- if release A on first -20 y velocity frame, you have -20 y velocity for a total of 4 frames
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement