1 | -- Global Variables |
---|
2 | walkingRouteOne = true -- True if thestranger is walking route one |
---|
3 | exitPositionReached = false |
---|
4 | playerInLock = false |
---|
5 | hangarReached = false |
---|
6 | |
---|
7 | height = 80 |
---|
8 | |
---|
9 | -- Returns the distance between (x1,x2,x3) and (y1,y2,y3) |
---|
10 | function dist( x1,x2,x3, y1,y2,y3 ) |
---|
11 | return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 ) |
---|
12 | end |
---|
13 | |
---|
14 | |
---|
15 | function observePlayer() |
---|
16 | playerX = Player:getAbsCoorX() |
---|
17 | playerY = Player:getAbsCoorY() |
---|
18 | playerZ = Player:getAbsCoorZ() |
---|
19 | |
---|
20 | if dist( playerX,playerY,playerZ,167.361526,29,483.163818 ) < 60 then |
---|
21 | playerInLock = true |
---|
22 | end |
---|
23 | |
---|
24 | end |
---|
25 | |
---|
26 | routeOneProgrammed = false |
---|
27 | function walkRouteOne(timestep) |
---|
28 | |
---|
29 | if not routeOneProgrammed then |
---|
30 | guard:walkTo( 266.396362, height, 241.398544) |
---|
31 | guard:walkTo( 254.577255, height, 241.159897) |
---|
32 | guard:walkTo( 221.120651, height, 240.484360) |
---|
33 | guard:walkTo( 187.732651, height, 239.810196) |
---|
34 | guard:walkTo( 165.661865, height, 239.364563) |
---|
35 | guard:walkTo( 148.642044, height, 239.020889) |
---|
36 | guard:walkTo( 128.012802, height, 238.604340) |
---|
37 | guard:walkTo( 65.664688, height, 237.345383) |
---|
38 | guard:walkTo( 30.099592, height, 236.627243) |
---|
39 | guard:walkTo( -14.031926, height, 236.483414) |
---|
40 | guard:walkTo( -52.224205, height, 241.776978) |
---|
41 | guard:walkTo( -83.528168, height, 245.757629) |
---|
42 | guard:walkTo( -98.730980, height, 247.394043) |
---|
43 | guard:walkTo( -111.666504, height, 246.585648) |
---|
44 | guard:walkTo( -111.666504, height, 246.585648) |
---|
45 | guard:walkTo( -114.805542, height, 246.144440) |
---|
46 | guard:walkTo( -119.267967, height, 245.360168) |
---|
47 | guard:walkTo( -138.284515, height, 239.281021) |
---|
48 | guard:walkTo( -146.166840, height, 234.512054) |
---|
49 | guard:walkTo( -157.210480, height, 222.620941) |
---|
50 | guard:walkTo( -158.519867, height, 219.674301) |
---|
51 | guard:walkTo( -158.519867, height, 219.674301) |
---|
52 | guard:walkTo( -158.478958, height, 213.490570) |
---|
53 | guard:walkTo( -158.478958, height, 213.490570) |
---|
54 | guard:walkTo( -155.965332, height, 210.303101) |
---|
55 | guard:walkTo( -150.804489, height, 203.959869) |
---|
56 | guard:walkTo( -148.853012, height, 201.561295) |
---|
57 | guard:walkTo( -145.451157, height, 197.554382) |
---|
58 | guard:walkTo( -143.694107, height, 196.373535) |
---|
59 | guard:walkTo( -139.281479, height, 193.407990) |
---|
60 | guard:walkTo( -137.526047, height, 192.228226) |
---|
61 | guard:walkTo( -103.046753, height, 182.510071) |
---|
62 | guard:runTo( -14.992087, height, 181.910767) |
---|
63 | guard:runTo( 46.347664, height, 181.493317) |
---|
64 | guard:runTo( 86.343376, height, 181.221130) |
---|
65 | guard:runTo( 124.465179, height, 194.251617) |
---|
66 | guard:runTo( 136.548996, height, 219.682953) |
---|
67 | guard:runTo( 145.162140, height, 244.268982) |
---|
68 | guard:runTo( 149.328720, height, 256.993256) |
---|
69 | guard:runTo( 162.649582, height, 268.181732) |
---|
70 | |
---|
71 | routeOneProgrammed = true |
---|
72 | end |
---|
73 | |
---|
74 | if guard:finalGoalReached() then |
---|
75 | return false |
---|
76 | end |
---|
77 | |
---|
78 | return true |
---|
79 | end |
---|
80 | |
---|
81 | |
---|
82 | exitRouteProgrammed = false |
---|
83 | function goToExitPosition(timestep) |
---|
84 | |
---|
85 | if not exitRouteProgrammed then |
---|
86 | guard:walkTo( 162.096558, height, 274.944366) |
---|
87 | guard:walkTo( 161.519516, height, 286.673370) |
---|
88 | guard:walkTo( 161.098618, height, 295.228699) |
---|
89 | guard:walkTo( 160.568466, height, 306.004486) |
---|
90 | guard:walkTo( 160.151169, height, 314.486572) |
---|
91 | guard:walkTo( 159.416641, height, 324.925232) |
---|
92 | guard:walkTo( 158.700073, height, 335.108154) |
---|
93 | guard:walkTo( 157.943298, height, 345.862610) |
---|
94 | guard:walkTo( 157.418381, height, 356.131256) |
---|
95 | guard:walkTo( 156.908035, height, 366.115417) |
---|
96 | guard:walkTo( 156.940308, height, 377.467712) |
---|
97 | guard:walkTo( 156.965408, height, 386.287933) |
---|
98 | guard:walkTo( 156.924698, height, 394.296417) |
---|
99 | guard:walkTo( 156.816116, height, 401.564911) |
---|
100 | guard:walkTo( 156.147583, height, 446.314850) |
---|
101 | guard:walkTo( 155.145660, height, 515.473877) |
---|
102 | guard:walkTo( 148.450058, height, 524.572571) |
---|
103 | guard:walkTo( 135.599609, height, 533.407166) |
---|
104 | guard:walkTo( 119.772217, height, 539.609192) |
---|
105 | guard:walkTo( 108.926720, height, 537.174927) |
---|
106 | guard:walkTo( 100.885788, height, 524.737793) |
---|
107 | guard:walkTo( 99.870834, height, 512.540100) |
---|
108 | guard:walkTo( 108.219215, height, 502.064178) |
---|
109 | |
---|
110 | exitRouteProgrammed = true |
---|
111 | end |
---|
112 | |
---|
113 | if guard:finalGoalReached() and playerInLock then |
---|
114 | return true |
---|
115 | end |
---|
116 | |
---|
117 | return false |
---|
118 | end |
---|
119 | |
---|
120 | |
---|
121 | hangarRouteProgrammed = false |
---|
122 | function goToHangar(timestep) |
---|
123 | |
---|
124 | if not hangarRouteProgrammed and playerInLock then |
---|
125 | guard:walkTo( 138.422943, height, 504.832733) |
---|
126 | guard:walkTo( 188.685089, height, 509.034851) |
---|
127 | guard:walkTo( 259.451904, height, 515.326111) |
---|
128 | guard:walkTo( 351.655762, height, 519.210571) |
---|
129 | guard:walkTo( 495.821381, height, 517.551392) |
---|
130 | guard:walkTo( 650.267029, height, 516.826843) |
---|
131 | guard:walkTo( 752.277100, height, 506.265289) |
---|
132 | guard:walkTo( 780.652405, height, 397.283752) |
---|
133 | guard:walkTo( 780.212830, height, 317.386017) |
---|
134 | guard:walkTo( 778.699158, height, 241.875305) |
---|
135 | guard:walkTo( 776.305542, height, 120.869957) |
---|
136 | guard:walkTo( 774.626343, height, 26.204597) |
---|
137 | guard:walkTo( 773.148804, height, -30.654911) |
---|
138 | guard:walkTo( 771.164978, height, -106.990250) |
---|
139 | guard:walkTo( 756.719971, height, -197.656296) |
---|
140 | guard:walkTo( 730.690796, height, -269.808075) |
---|
141 | guard:walkTo( 702.250854, height, -341.732147) |
---|
142 | guard:walkTo( 681.786011, height, -393.487030) |
---|
143 | guard:walkTo( 664.005981, height, -441.609131) |
---|
144 | guard:walkTo( 655.612671, height, -523.194153) |
---|
145 | guard:walkTo( 664.289978, height, -585.003540) |
---|
146 | guard:walkTo( 670.221069, height, -645.366333) |
---|
147 | guard:walkTo( 674.347290, height, -704.953674) |
---|
148 | guard:walkTo( 677.495605, height, -750.421082) |
---|
149 | guard:walkTo( 680.699280, height, -796.687073) |
---|
150 | guard:walkTo( 686.407043, height, -879.117859) |
---|
151 | guard:walkTo( 692.573364, height, -952.031555) |
---|
152 | guard:walkTo( 701.940552, height, -1025.037964) |
---|
153 | guard:walkTo( 710.218628, height, -1086.598389) |
---|
154 | guard:walkTo( 719.834900, height, -1142.248779) |
---|
155 | guard:walkTo( 731.087158, height, -1198.201538) |
---|
156 | guard:walkTo( 745.157715, height, -1258.461182) |
---|
157 | guard:walkTo( 753.189331, height, -1290.539551) |
---|
158 | guard:walkTo( 763.940369, height, -1347.249268) |
---|
159 | guard:walkTo( 768.509949, height, -1377.040039) |
---|
160 | guard:walkTo( 770.845215, height, -1408.751953) |
---|
161 | guard:walkTo( 770.785583, height, -1435.573608) |
---|
162 | guard:walkTo( 765.031799, height, -1462.657593) |
---|
163 | guard:walkTo( 753.982727, height, -1483.425415) |
---|
164 | guard:walkTo( 735.194580, height, -1500.978394) |
---|
165 | guard:walkTo( 707.312500, height, -1514.814575) |
---|
166 | guard:walkTo( 672.638550, height, -1522.803589) |
---|
167 | guard:walkTo( 560.158936, height, -1530.277344) |
---|
168 | guard:walkTo( 500.429626, height, -1532.241577) |
---|
169 | guard:walkTo( 371.231262, height, -1535.953613) |
---|
170 | guard:walkTo( 204.211609, height, -1539.026611) |
---|
171 | guard:walkTo( 104.032593, height, -1546.350220) |
---|
172 | guard:walkTo( 45.058315, height, -1550.720337) |
---|
173 | guard:walkTo( 1.504358, height, -1574.713745) |
---|
174 | guard:walkTo( -20.050890, height, -1627.849854) |
---|
175 | guard:walkTo( -28.036245, height, -1674.240479) |
---|
176 | guard:walkTo( -29.157598, height, -1702.924316) |
---|
177 | guard:walkTo( -29.760004, height, -1730.014526) |
---|
178 | guard:walkTo( -29.538343, height, -1759.887329) |
---|
179 | guard:walkTo( -21.584003, height, -1790.162842) |
---|
180 | guard:walkTo( -8.572795, height, -1823.067871) |
---|
181 | guard:walkTo( 13.254844, height, -1861.705688) |
---|
182 | hangarRouteProgrammed = true |
---|
183 | end |
---|
184 | |
---|
185 | if guard:finalGoalReached() then |
---|
186 | return true |
---|
187 | end |
---|
188 | |
---|
189 | return false |
---|
190 | end |
---|
191 | |
---|
192 | |
---|
193 | function waveToSpaceship(timestep) |
---|
194 | |
---|
195 | end |
---|
196 | |
---|
197 | |
---|
198 | function tick(timestep) |
---|
199 | --io.write("Guard called \n") |
---|
200 | observePlayer() |
---|
201 | |
---|
202 | if walkingRouteOne then |
---|
203 | walkingRouteOne = walkRouteOne(timestep) |
---|
204 | end |
---|
205 | |
---|
206 | if not walkingRouteOne and not exitPositionReached then |
---|
207 | exitPositionReached = goToExitPosition(timestep) |
---|
208 | end |
---|
209 | |
---|
210 | if not hangarReached and exitPositionReached then |
---|
211 | hangarReached = goToHangar(timestep) |
---|
212 | end |
---|
213 | |
---|
214 | if hangarReached then |
---|
215 | waveToSpaceship(timestep) |
---|
216 | end |
---|
217 | |
---|
218 | return false |
---|
219 | end |
---|
220 | |
---|