1+ import pyxinput
2+ import time
3+ import FFX_Xbox
4+ import FFX_Screen
5+ import FFX_Battle
6+ import FFX_memory
7+
8+ FFXC = FFX_Xbox .FFXC
9+
10+
11+ def Entrance ():
12+ FFX_Screen .awaitMap1 ()
13+ print ("Starting Baaj exterior area" )
14+ FFXC .set_value ('AxisLx' , 0 )
15+ FFXC .set_value ('AxisLy' , 0 )
16+
17+ #First, we need to change aeon summons ### MOVE THIS TO LATER
18+ FFX_Xbox .menuY ()
19+ time .sleep (0.6 )
20+ FFX_Xbox .menuUp ()
21+ FFX_Xbox .menuUp ()
22+ FFX_Xbox .menuB ()
23+ time .sleep (0.3 )
24+ FFX_Xbox .menuUp ()
25+ FFX_Xbox .menuUp ()
26+ FFX_Xbox .menuUp ()
27+ FFX_Xbox .menuRight ()
28+ FFX_Xbox .menuA ()
29+ FFX_Xbox .menuA ()
30+
31+ #Now back into the water
32+ FFXC .set_value ('AxisLy' , 1 )
33+ time .sleep (1 )
34+ FFXC .set_value ('AxisLx' , - 1 )
35+ time .sleep (0.5 )
36+ FFXC .set_value ('AxisLy' , 1 )
37+ FFXC .set_value ('AxisLx' , 0 )
38+ print ("Mark 1" )
39+ time .sleep (35 )
40+ print ("Mark 2" )
41+ FFXC .set_value ('AxisLx' , 0 )
42+ FFXC .set_value ('AxisLy' , 0 )
43+ FFX_Screen .clickToBattle ()
44+
45+ #Once we lose control, just keep clicking until we regain control.
46+ FFX_Battle .attack ('none' )
47+ time .sleep (0.2 )
48+ FFX_Screen .awaitTurn ()
49+ FFX_Battle .attack ('none' )
50+ FFX_Screen .clickToBattle ()
51+ while not FFX_memory .userControl ():
52+ if FFX_Screen .BattleScreen ():
53+ FFX_Battle .defend ()
54+ else :
55+ FFX_Xbox .menuB ()
56+
57+ #Out of the frying pan, into the furnace
58+ pos = FFX_memory .getCoords ()
59+ while FFX_memory .userControl ():
60+ if pos [1 ] < 85 :
61+ FFXC .set_value ('AxisLx' , - 1 )
62+ FFXC .set_value ('AxisLy' , 0 )
63+ elif pos [1 ] < 130 :
64+ FFXC .set_value ('AxisLx' , 0 )
65+ FFXC .set_value ('AxisLy' , 1 )
66+ elif pos [1 ] < 170 :
67+ FFXC .set_value ('AxisLx' , - 1 )
68+ FFXC .set_value ('AxisLy' , 1 )
69+ elif pos [1 ] < 190 :
70+ FFXC .set_value ('AxisLx' , 1 )
71+ FFXC .set_value ('AxisLy' , 1 )
72+ elif pos [1 ] < 225 :
73+ FFXC .set_value ('AxisLx' , 0 )
74+ FFXC .set_value ('AxisLy' , 1 )
75+ else :
76+ FFXC .set_value ('AxisLx' , - 1 )
77+ FFXC .set_value ('AxisLy' , 1 )
78+ pos = FFX_memory .getCoords ()
79+
80+
81+ def Baaj_puzzle ():
82+ FFXC .set_value ('AxisLy' , 0 )
83+ FFXC .set_value ('AxisLx' , 0 )
84+ FFX_memory .clickToControl ()
85+ print ("Starting Baaj puzzle" )
86+ FFXC .set_value ('AxisLy' , - 1 )
87+ time .sleep (0.3 )
88+ FFXC .set_value ('AxisLx' , - 1 )
89+
90+ time .sleep (2.8 )
91+ FFXC .set_value ('AxisLy' , 0 )
92+ FFXC .set_value ('AxisLx' , 0 )
93+
94+ FFX_Xbox .touchSaveSphere ()
95+
96+ FFXC .set_value ('AxisLy' , - 1 )
97+ FFXC .set_value ('AxisLx' , - 1 )
98+ time .sleep (0.4 )
99+ FFXC .set_value ('AxisLy' , 1 )
100+ FFXC .set_value ('AxisLx' , 0 )
101+ time .sleep (1.5 ) #Into the first room
102+ FFX_memory .awaitControl ()
103+ time .sleep (0.04 )
104+ FFX_memory .clickToEvent () #Grab Flint
105+ FFXC .set_value ('AxisLy' , - 1 )
106+ FFX_memory .clickToControl ()
107+ time .sleep (0.04 )
108+ FFX_memory .clickToEvent () #Exit the room
109+ time .sleep (0.04 )
110+
111+ FFXC .set_value ('AxisLx' , 0 )
112+ FFXC .set_value ('AxisLy' , 0 )
113+ #Across the room
114+ FFX_memory .awaitControl ()
115+ FFXC .set_value ('AxisLy' , - 1 )
116+ FFXC .set_value ('AxisLx' , 1 )
117+ time .sleep (0.6 )
118+ FFXC .set_value ('AxisLx' , 0 )
119+ time .sleep (0.25 )
120+ FFXC .set_value ('AxisLx' , 1 )
121+ time .sleep (2.2 )
122+
123+ pos = FFX_memory .getCoords ()
124+ while FFX_memory .userControl ():
125+ pos = FFX_memory .getCoords ()
126+ FFXC .set_value ('AxisLy' , 1 )
127+ if pos [1 ] > ((- 1.13 * pos [0 ]) + 11.75 ):
128+ FFXC .set_value ('AxisLx' , 1 )
129+ else :
130+ FFXC .set_value ('AxisLx' , 0 )
131+ FFXC .set_value ('AxisLy' , 0 )
132+ FFXC .set_value ('AxisLx' , 0 )
133+ #FFXC.set_value('AxisLy', 1)
134+ #FFXC.set_value('AxisLx', 0)
135+ #time.sleep(3) #Enters the stair room/hallway
136+ #FFXC.set_value('AxisLy', 0)
137+
138+ #Grab the withered bouquet
139+ FFX_memory .awaitControl ()
140+ pos = FFX_memory .getCoords ()
141+ while FFX_memory .userControl ():
142+ pos = FFX_memory .getCoords ()
143+ FFXC .set_value ('AxisLy' , 1 )
144+ if pos [1 ] < ((0.80 * pos [0 ]) - 85.80 ) or pos [1 ] < - 88 :
145+ FFXC .set_value ('AxisLx' , 1 )
146+ else :
147+ FFXC .set_value ('AxisLx' , 0 )
148+ FFX_Xbox .menuB ()
149+
150+ FFX_memory .clickToControl ()
151+ FFXC .set_value ('AxisLy' , 0 )
152+ FFXC .set_value ('AxisLx' , 0 )
153+ #Back down the hallway
154+ while FFX_memory .userControl ():
155+ pos = FFX_memory .getCoords ()
156+ if pos [1 ] < 82 :
157+ FFXC .set_value ('AxisLy' , - 1 )
158+ else :
159+ FFXC .set_value ('AxisLy' , 0 )
160+ if pos [1 ] < ((0.80 * pos [0 ]) - 85.80 ) or pos [1 ] > 82 :
161+ FFXC .set_value ('AxisLx' , 1 )
162+ elif pos [1 ] < 25 and pos [0 ] > 74 :
163+ FFXC .set_value ('AxisLx' , 1 )
164+ elif pos [0 ] > 90 :
165+ FFXC .set_value ('AxisLx' , 1 )
166+ else :
167+ FFXC .set_value ('AxisLx' , 0 )
168+ FFX_Xbox .menuB ()
169+
170+ FFXC .set_value ('AxisLx' , 0 )
171+ FFXC .set_value ('AxisLy' , 0 )
172+ #time.sleep(20)
173+
174+ #Back in the main room
175+ FFX_memory .awaitControl ()
176+ FFXC .set_value ('AxisLy' , - 1 )
177+ time .sleep (2 )
178+ FFXC .set_value ('AxisLx' , - 1 )
179+ FFX_Xbox .SkipDialog (2 )
180+
181+ FFXC .set_value ('AxisLy' , 0 )
182+ FFXC .set_value ('AxisLx' , 0 )
183+ if FFX_memory .userControl ():
184+ while FFX_memory .userControl ():
185+ print ("We missed the fireplace!" )
186+ pos = FFX_memory .getCoords ()
187+ if pos [0 ] > 2 :
188+ FFXC .set_value ('AxisLy' , - 1 )
189+ elif pos [0 ] < - 2 :
190+ FFXC .set_value ('AxisLy' , 1 )
191+ if pos [1 ] > 2 :
192+ FFXC .set_value ('AxisLx' , - 1 )
193+ elif pos [1 ] < - 2 :
194+ FFXC .set_value ('AxisLx' , 1 )
195+
196+ def Klikk_fight () :
197+ #Before Rikku shows up, we're just going to spam the click button. Simple.
198+ print ("Waiting on Use tutorial" )
199+ FFX_Screen .clickToPixel (897 ,295 ,(234 , 199 , 0 ))
200+
201+ print ("Doing Use tutorial" )
202+ FFX_Screen .clickToBattle ()
203+ FFX_Battle .useItem (1 ,'none' )
204+
205+ #Tidus self-potion
206+ FFX_Screen .awaitTurn ()
207+ FFX_Battle .Klikk ()
208+
209+ def ABboat1 () :
210+ FFXC .set_value ('AxisLy' , - 1 )
211+ time .sleep (0.3 )
212+ FFX_Xbox .SkipDialog (4 ) #Start Sphere Grid tutorial
213+ FFX_memory .clickToControl ()
214+ FFXC .set_value ('AxisLy' , - 1 )
215+ FFX_Xbox .SkipDialog (1 ) #Talk to Rikku a second time.
216+
217+ FFXC .set_value ('AxisLy' , - 1 )
218+ FFXC .set_value ('BtnA' , 1 )
219+ FFX_memory .clickToControl ()
220+
221+ time .sleep (12 )
222+ FFXC .set_value ('AxisLy' , 0 )
223+ FFXC .set_value ('BtnA' , 0 )
224+
225+ def ABswimming1 () :
226+ complete = 0
227+
228+ print ("Swimming towards airship" )
229+ while complete == 0 :
230+ pos = FFX_memory .getCoords ()
231+ ffxMap = FFX_memory .getMap ()
232+ #print(ffxMap)
233+ if not FFX_memory .userControl ():
234+ FFXC .set_value ('AxisLy' , 0 )
235+ FFXC .set_value ('AxisLx' , 0 )
236+ FFXC .set_value ('BtnA' , 0 )
237+ if FFX_Screen .BattleScreen () :
238+ FFX_Battle .stealAndAttack ()
239+ else :
240+ if ffxMap == 71 :
241+ FFXC .set_value ('AxisLy' , - 1 )
242+ FFXC .set_value ('BtnA' , 1 )
243+ elif ffxMap == 64 :
244+ complete = 1
245+ else :
246+ checkpoint = 1
247+ FFXC .set_value ('AxisLy' , 1 )
248+ FFXC .set_value ('BtnA' , 0 )
249+ if pos [1 ] < ((2.56 * pos [0 ]) + 583.79 ):
250+ FFXC .set_value ('AxisLx' , 1 )
251+ else :
252+ FFXC .set_value ('AxisLx' , 0 )
253+
254+ def ABswimming2 () :
255+ #Quick heal-up to make sure we're full HP on Rikku
256+ FFX_memory .awaitControl ()
257+ FFXC .set_value ('AxisLy' , - 1 )
258+ FFXC .set_value ('AxisLx' , 1 )
259+ FFXC .set_value ('BtnA' , 1 )
260+ time .sleep (0.5 )
261+ FFXC .set_value ('AxisLy' , 0 )
262+ FFXC .set_value ('AxisLx' , 0 )
263+ FFXC .set_value ('BtnA' , 0 )
264+ FFX_Xbox .touchSaveSphere ()
265+
266+ #Now to get to it
267+ FFXC .set_value ('AxisLy' , 1 )
268+ time .sleep (0.3 )
269+ FFX_memory .clickToEvent ()
270+ time .sleep (0.2 )
271+ FFX_memory .awaitControl ()
272+
273+ pos = FFX_memory .getCoords ()
274+ while FFX_memory .userControl ():
275+ FFXC .set_value ('AxisLy' , 1 )
276+ if pos [1 ] < 135 :
277+ FFXC .set_value ('AxisLx' , 1 )
278+ else :
279+ FFXC .set_value ('AxisLx' , 0 )
280+
281+ pos = FFX_memory .getCoords ()
282+ FFXC .set_value ('AxisLy' , 0 )
283+ FFXC .set_value ('AxisLx' , 0 )
284+
285+ #Final group of Pirhanas
286+ FFX_Battle .stealAndAttackPreTros ()
287+ FFXC .set_value ('AxisLy' , 1 )
288+ FFX_Xbox .SkipDialog (2 )
289+ FFXC .set_value ('AxisLy' , - 1 )
290+ FFX_Screen .clickToMap1 ()
291+ time .sleep (2 )
292+ FFX_memory .clickToEvent ()
293+ print ("Engaging Tros" )
294+ FFXC .set_value ('AxisLy' , 0 )
295+ FFXC .set_value ('AxisLx' , 0 )
296+
297+ #Tros fight
298+ FFX_Battle .Tros ()
299+ FFX_memory .awaitControl ()
300+ FFXC .set_value ('AxisLy' , 1 )
301+ time .sleep (2 )
302+ FFXC .set_value ('AxisLx' , 1 )
303+ time .sleep (2 )
304+ FFXC .set_value ('AxisLy' , 0 )
305+ time .sleep (1 )
306+ FFXC .set_value ('AxisLy' , 1 )
307+ time .sleep (5 )
308+ FFXC .set_value ('AxisLx' , 0 )
309+ FFXC .set_value ('AxisLy' , 0 )
310+ FFX_memory .awaitControl ()
311+ time .sleep (1 )
312+ FFXC .set_value ('AxisLx' , 1 )
313+ time .sleep (30 )
314+ FFXC .set_value ('AxisLx' , 0 )
315+
316+ #Back onto the ship
317+ FFX_memory .clickToControl ()
318+ FFXC .set_value ('AxisLx' , 1 )
319+ time .sleep (0.35 )
320+ FFXC .set_value ('AxisLx' , 0 )
321+ FFXC .set_value ('AxisLy' , 1 )
322+ FFX_Xbox .SkipDialog (1 )
323+ FFXC .set_value ('AxisLy' , 0 )
324+ FFXC .set_value ('AxisLx' , 0 )
325+
326+ FFX_Screen .awaitSave ()
0 commit comments