Advertisement
imbuedl

deku princess wall safety boundary

Dec 22nd, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.32 KB | None | 0 0
  1. X position has to be greater than or equal to -1877
  2. (before turning goron)
  3.  
  4. Z position has to be less than or equal to 105.8205
  5. (before turning goron)
  6.  
  7.  
  8. (x,z)
  9.  
  10. 1:
  11. Human: (-1836.245, 67.24214)
  12. Goron: (-1832.419, 71.19346)
  13. difference = (-1832.419 - (-1836.245), 71.19346 - 67.24214) = (3.826, 3.95132)
  14.  
  15. 2:
  16. Human: (-1864.574, 94.67256)
  17. Goron: (-1860.748, 98.6239)
  18. difference = (3.826, 3.95134) (slightly different, maybe floating point error? too lazy to check)
  19.  
  20. Slopes:
  21. Human slope = (67.24214 - 94.67256)/(-1836.245 - (-1864.574)) = ~ -0.96828056 ==> Truncate to -.96828
  22. Goron slope = (71.19346 - 98.6239)/(-1832.419 - (-1860.748)) = ~ -0.9682812665 ==> Truncate to -.96828
  23.  
  24. Human line:
  25. z = -.96828x - 1710.7571686
  26.  
  27. Goron line:
  28. z = -96828x - 1703.10120932
  29.  
  30.  
  31. (-1824.371, 118.3828)
  32.  
  33. -.96828(-1824.371) - 1710.7571686 = 55.74478328 < 118.3828
  34.  
  35. human safety line:
  36. z = -.96828(x - (-1839.544)) + 88.43627
  37. z = -.96828x -1692.75739432
  38.  
  39. (-1839.544, 80.93627) this is a point that is within our bounds; good point
  40. -.96828(-1839.544) - 1692.75739432 = 88.43627 > 80.93627
  41. value of point is less than value on the line, so good points are below the line z = -.96828x -1692.75739432
  42.  
  43. While human, check: Z_Position <= -.96828*X_Position - 1692.75739432 to ensure link is in the good region before attempting the goron pound clip
  44.  
  45. ---------------------------
  46.  
  47. Checking Success:
  48.  
  49. inside wall (assume same slope):
  50.  
  51. (-1885.182, 45.3085)
  52. z = -.96828(x - (-1885.182)) + 45.3085
  53. z = -.96828x -1780.07552696
  54.  
  55. For safety, assume a line in between the human line and the inside wall line
  56. Checking Line: z = -96828x - 1750
  57.  
  58. if Z_Position < -9.6828*X_Position - 1750, then consider the clip a success
  59.  
  60.  
  61.  
  62. ---------------------------
  63.  
  64. untargeted right slash + shield = targeted right slash = targeted right slash + shield = targeted right slash + untarget ASAP + shield
  65.  
  66. targeted left slash = untargeted horizontal slash + shield = targeted left slash + shield
  67.  
  68. Targeted Vertical Slash = Targeted Vertical Slash + Untarget ASAP + Shield = Targeted Vertical Slash + Shield =/= Targeted Vertical Slash + Untarget ASAP
  69.  
  70. left, right, vertical, forward
  71.  
  72. ---------
  73.  
  74. MOVEMENTS:
  75. Turn Right
  76. Turn Left
  77. Turn Down
  78. Turn Up
  79. Untargeted Horizontal Slash
  80. Untargeted Horizontal Slash, Shield
  81. Targeted Vertical Slash
  82. Targeted Vertical Slash, Untarget ASAP
  83. Untargeted Right Slash
  84. Untargeted Right Slash, Shield (note: this is the same as Targeted Right Slash)
  85. Targeted Forward Thrust
  86. Targeted Forward Thrust, Untarget ASAP
  87.  
  88. ---------
  89. define functions
  90.  
  91. Turn_Right()
  92. Untargeted_Horizontal_Slash()
  93. etc.
  94.  
  95. 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)
  96.  
  97. ---------
  98.  
  99. Positions = {}
  100. # add initial position to dictionary
  101. Positions[(x,z,y)] = True
  102.  
  103. 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)
  104.  
  105. 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
  106.  
  107. ----------
  108.  
  109. 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
  110.  
  111. ----------
  112.  
  113. 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"
  114.  
  115. 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.
  116.  
  117. ----------
  118.  
  119. 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'}
  120.  
  121. For option in Movement_Options:
  122.  
  123. --------------------------
  124.  
  125. note (INCORRECT):
  126.  
  127. Z
  128. 5 nothing
  129. down + c down (bomb)
  130. 1 nothing
  131. A
  132. 11 nothing
  133. c-right (goron mask)
  134. 4 nothing
  135. A
  136. 21 nothing
  137. control stick direction
  138. up on control stick (turn up)
  139.  
  140. -- Wait X frames before curling so first explosion frame occurs on second -20 y velocity frame
  141. (currently bomb explodes 32 frames after -11 y velocity frame, want it to explode 4 frames after, so wait 28 frames before curling)
  142. A (curl)
  143. 7 Hold A
  144. B + Hold A
  145. 17 Hold A (have -11 y velocity now) <-- can release A now
  146. 1 Hold A (have -20 y velocity now) <-- or can release A now
  147. 1 nothing (still have -20 y velocity now) <-- should have 15 linear velocity now
  148.  
  149.  
  150. if release A on -11 y velocity frame, you have -20 y velocity for 4 frames
  151. if release A on first -20 y velocity frame, you have -20 y velocity for a total of 4 frames
  152.  
  153.  
  154. --------------------------------------------------------
  155.  
  156. note (CORRECT):
  157.  
  158. Z
  159. 5 nothing
  160. down + c down (bomb)
  161. 1 nothing
  162. A
  163. 11 nothing
  164. c-right (goron mask)
  165. 4 nothing
  166. A
  167. 21 nothing
  168. control stick direction
  169. up on control stick (turn up)
  170.  
  171. -- Wait X frames before curling so first explosion frame occurs on second -20 y velocity frame
  172. (currently bomb explodes 32 frames after -11 y velocity frame, want it to explode 5 frames after, so wait 27 frames before curling)
  173. A (curl)
  174. 7 Hold A
  175. B + Hold A
  176. 17 Hold A (have -11 y velocity now) <-- can release A now
  177. 1 Hold A (have -20 y velocity now) <-- or can release A now
  178. 1 nothing (still have -20 y velocity now)
  179. 1 nothing (still have -20 y velocity now)
  180. 1 nothing (still have -20 y velocity now)
  181. 1 nothing (should have 15 linear velocity now)
  182.  
  183. if release A on -11 y velocity frame, you have -20 y velocity for 4 frames
  184. 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