Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: data/trunk/scripts/ambush_at_uranus/guard.lua @ 4448

Last change on this file since 4448 was 4448, checked in by snellen, 17 years ago

reorganized scripts (put them in folders), implemented levelchange by script, put some npcs in spaceshiptower

File size: 10.9 KB
Line 
1-- Create the trigger
2trigger = ScriptTrigger()
3trigger:setName("guardtrigger")
4trigger:setScript("guard.lua")
5trigger:setFunction("tick")
6trigger:setActiveOnCreation(true)
7
8-- Get objects from orxonox
9thisscript:addObject("GenericNPC","guard")
10thisscript:addObject("FPSPlayer", "Player")
11
12-- Global Variables
13walkingRouteOne = true   -- True if thestranger is walking route one
14exitPositionReached = false
15playerInLock = false
16hangarReached = false
17guardStopped = false
18gotoSpaceship = false
19
20height = 34
21
22-- Returns the distance between (x1,x2,x3) and (y1,y2,y3)
23function dist( x1,x2,x3, y1,y2,y3 )
24return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 )
25end
26
27
28function observePlayer()
29
30guardX = guard:getAbsCoorX()
31guardY = guard:getAbsCoorY()
32guardZ = guard:getAbsCoorZ()
33
34playerX = Player:getAbsCoorX()
35playerY = Player:getAbsCoorY()
36playerZ = Player:getAbsCoorZ()
37
38
39distance = dist( guardX,guardY,guardZ,playerX, playerY, playerZ)
40
41if distance > 250 and hangarRouteProgrammed and not guardStopped and not gotoSpaceship then
42 guard:stop()
43 guardStopped = true
44end
45
46if distance < 250 and hangarRouteProgrammed and guardStopped and not gotoSpaceship then
47 guard:resume()
48 guardStopped = false
49end
50
51if dist( playerX,playerY,playerZ,167.361526,29,483.163818 ) < 150 then
52playerInLock = true
53end
54
55if dist( guardX,guardY,guardZ,772.325012, height, -1500.850708) < 200 then
56gotoSpaceship = true
57end
58
59
60end
61
62routeOneProgrammed = false
63function walkRouteOne(timestep)
64if not routeOneProgrammed then
65guard:walkTo( 266.396362, height, 241.398544)
66guard:walkTo( 254.577255, height, 241.159897)
67guard:walkTo( 221.120651, height, 240.484360)
68guard:walkTo( 187.732651, height, 239.810196)
69guard:walkTo( 165.661865, height, 239.364563)
70guard:walkTo( 148.642044, height, 239.020889)
71guard:walkTo( 128.012802, height, 238.604340)
72guard:walkTo( 65.664688, height, 237.345383)
73guard:walkTo( 30.099592, height, 236.627243)
74guard:walkTo( -14.031926, height, 236.483414)
75guard:walkTo( -52.224205, height, 241.776978)
76guard:walkTo( -83.528168, height, 245.757629)
77guard:walkTo( -98.730980, height, 247.394043)
78guard:walkTo( -111.666504, height, 246.585648)
79guard:walkTo( -111.666504, height, 246.585648)
80guard:walkTo( -114.805542, height, 246.144440)
81guard:walkTo( -119.267967, height, 245.360168)
82guard:walkTo( -138.284515, height, 239.281021)
83guard:walkTo( -146.166840, height, 234.512054)
84guard:walkTo( -157.210480, height, 222.620941)
85guard:walkTo( -158.519867, height, 219.674301)
86guard:walkTo( -158.519867, height, 219.674301)
87guard:walkTo( -158.478958, height, 213.490570)
88guard:walkTo( -158.478958, height, 213.490570)
89guard:walkTo( -155.965332, height, 210.303101)
90guard:walkTo( -150.804489, height, 203.959869)
91guard:walkTo( -148.853012, height, 201.561295)
92guard:walkTo( -145.451157, height, 197.554382)
93guard:walkTo( -143.694107, height, 196.373535)
94guard:walkTo( -139.281479, height, 193.407990)
95guard:walkTo( -137.526047, height, 192.228226)
96guard:walkTo( -103.046753, height, 182.510071)
97guard:runTo( -14.992087, height, 181.910767)
98guard:runTo( 46.347664, height, 181.493317)
99guard:runTo( 86.343376, height, 181.221130)
100guard:runTo( 124.465179, height, 194.251617)
101guard:runTo( 136.548996, height, 219.682953)
102guard:runTo( 145.162140, height, 244.268982)
103guard:runTo( 149.328720, height, 256.993256)
104guard:runTo( 162.649582, height, 268.181732)
105
106routeOneProgrammed = true
107end
108
109if guard:finalGoalReached() then
110return false
111end
112
113return true
114end
115
116
117exitRouteProgrammed = false
118function goToExitPosition(timestep)
119
120if not exitRouteProgrammed then
121--guard:runTo( 162.096558, height, 274.944366)
122--guard:runTo( 161.519516, height, 286.673370)
123--guard:runTo( 161.098618, height, 295.228699)
124--guard:runTo( 160.568466, height, 306.004486)
125guard:runTo( 160.151169, height, 314.486572)
126guard:runTo( 159.416641, height, 324.925232)
127guard:walkTo( 158.700073, height, 335.108154)
128guard:walkTo( 157.943298, height, 345.862610)
129guard:walkTo( 157.418381, height, 356.131256)
130guard:walkTo( 156.908035, height, 366.115417)
131guard:walkTo( 156.940308, height, 377.467712)
132guard:walkTo( 156.965408, height, 386.287933)
133guard:walkTo( 156.924698, height, 394.296417)
134guard:walkTo( 156.816116, height, 401.564911)
135guard:walkTo( 156.147583, height, 446.314850)
136guard:walkTo( 155.145660, height, 515.473877)
137guard:walkTo( 148.450058, height, 524.572571)
138guard:walkTo( 135.599609, height, 533.407166)
139guard:walkTo( 119.772217, height, 539.609192)
140guard:walkTo( 108.926720, height, 537.174927)
141guard:walkTo( 100.885788, height, 524.737793)
142guard:walkTo( 99.870834, height, 512.540100)
143guard:walkTo( 108.219215, height, 502.064178)
144
145exitRouteProgrammed = true
146end
147
148if guard:finalGoalReached() and playerInLock then
149return true
150end
151
152return false
153end
154
155
156hangarRouteProgrammed = false
157function goToHangar(timestep)
158
159if not hangarRouteProgrammed and playerInLock then
160
161guard:walkTo( 133.354797, height, 504.669128)
162guard:walkTo( 147.490158, height, 507.034393)
163guard:walkTo( 157.640610, height, 508.901001)
164guard:walkTo( 168.830688, height, 510.958710)
165guard:walkTo( 185.020630, height, 512.736206)
166guard:walkTo( 201.232452, height, 513.413818)
167guard:walkTo( 265.666138, height, 513.736023)
168guard:walkTo( 362.377960, height, 515.575806)
169guard:walkTo( 426.176392, height, 515.666748)
170guard:walkTo( 500.031677, height, 515.197266)
171guard:walkTo( 551.294250, height, 514.430237)
172guard:walkTo( 604.974731, height, 515.106323)
173guard:walkTo( 651.117920, height, 516.026550)
174guard:walkTo( 664.581909, height, 516.295227)
175guard:walkTo( 683.122803, height, 516.665100)
176guard:walkTo( 694.547485, height, 516.892944)
177guard:walkTo( 704.408569, height, 517.089539)
178guard:walkTo( 714.413208, height, 517.289185)
179guard:walkTo( 739.045288, height, 515.581970)
180guard:walkTo( 763.904541, height, 497.281738)
181guard:walkTo( 767.672791, height, 481.974457)
182guard:walkTo( 769.436951, height, 468.704559)
183guard:walkTo( 770.490967, height, 453.283386)
184guard:walkTo( 771.185303, height, 435.960114)
185guard:walkTo( 771.952820, height, 379.502045)
186guard:walkTo( 771.938293, height, 310.049042)
187guard:walkTo( 772.514526, height, 231.579498)
188guard:walkTo( 773.601074, height, 135.177933)
189guard:walkTo( 773.790771, height, 50.675163)
190guard:walkTo( 773.316162, height, -36.961666)
191guard:walkTo( 772.885986, height, -116.407944)
192guard:walkTo( 772.841309, height, -124.651726)
193guard:walkTo( 772.491333, height, -137.742279)
194guard:walkTo( 770.644775, height, -153.245926)
195guard:walkTo( 768.774414, height, -163.767120)
196guard:walkTo( 766.336426, height, -174.224228)
197guard:walkTo( 762.794128, height, -187.312271)
198guard:walkTo( 733.548279, height, -274.004791)
199guard:walkTo( 713.113647, height, -329.657959)
200guard:walkTo( 694.801819, height, -379.530243)
201guard:walkTo( 681.276062, height, -422.047028)
202guard:walkTo( 672.579102, height, -458.540985)
203guard:walkTo( 670.843384, height, -465.824615)
204guard:walkTo( 669.948364, height, -480.910645)
205guard:walkTo( 669.361511, height, -493.648529)
206guard:walkTo( 669.686829, height, -501.598572)
207guard:walkTo( 674.055664, height, -582.077637)
208guard:walkTo( 676.046387, height, -630.403809)
209guard:walkTo( 677.839050, height, -674.209534)
210guard:walkTo( 680.754944, height, -765.965515)
211guard:walkTo( 681.034180, height, -803.351135)
212guard:walkTo( 680.088806, height, -844.069031)
213guard:walkTo( 677.801514, height, -899.952148)
214guard:walkTo( 675.205627, height, -950.496460)
215guard:walkTo( 672.847778, height, -996.413574)
216guard:walkTo( 676.204041, height, -1043.556274)
217guard:walkTo( 691.304382, height, -1088.596558)
218guard:walkTo( 705.101318, height, -1128.320312)
219guard:walkTo( 720.476013, height, -1164.364380)
220guard:walkTo( 729.216797, height, -1183.948364)
221guard:walkTo( 740.145203, height, -1212.598267)
222guard:walkTo( 746.547363, height, -1238.340576)
223guard:walkTo( 756.866211, height, -1280.605347)
224guard:walkTo( 763.380554, height, -1314.622314)
225guard:walkTo( 768.731506, height, -1347.977539)
226guard:walkTo( 772.446655, height, -1381.641479)
227guard:walkTo( 772.721069, height, -1421.184937)
228guard:walkTo( 772.414734, height, -1457.349121)
229guard:walkTo( 772.803284, height, -1489.560913)
230
231guard:walkTo( 772.325012, height, -1500.850708)
232guard:walkTo( 772.325012, height, -1500.850708)
233guard:walkTo( 772.487854, height, -1508.028809)
234guard:walkTo( 774.761047, height, -1519.442139)
235guard:walkTo( 778.809204, height, -1525.292847)
236guard:walkTo( 783.482666, height, -1530.000610)
237guard:walkTo( 790.163269, height, -1536.350708)
238guard:walkTo( 797.713745, height, -1542.968018)
239guard:walkTo( 804.024475, height, -1548.390503)
240guard:walkTo( 810.316406, height, -1553.796875)
241guard:walkTo( 819.849731, height, -1561.323242)
242guard:walkTo( 826.676819, height, -1566.627197)
243guard:walkTo( 833.950928, height, -1572.278442)
244guard:walkTo( 840.587036, height, -1577.434082)
245guard:walkTo( 847.261230, height, -1582.458252)
246guard:walkTo( 852.104797, height, -1586.104370)
247guard:walkTo( 857.504944, height, -1590.169556)
248guard:walkTo( 861.696411, height, -1593.324829)
249guard:walkTo( 867.690613, height, -1597.837036)
250guard:walkTo( 874.808105, height, -1604.437378)
251guard:walkTo( 878.302429, height, -1608.333252)
252guard:walkTo( 884.001892, height, -1614.366211)
253guard:walkTo( 890.699646, height, -1621.398315)
254guard:walkTo( 895.391052, height, -1626.179688)
255guard:walkTo( 902.171509, height, -1633.090332)
256guard:walkTo( 906.807495, height, -1637.957764)
257guard:walkTo( 910.438599, height, -1641.770142)
258guard:walkTo( 915.626160, height, -1647.216797)
259guard:walkTo( 921.844727, height, -1653.745972)
260guard:walkTo( 928.565125, height, -1660.801636)
261guard:walkTo( 933.742004, height, -1666.236694)
262guard:walkTo( 938.956543, height, -1671.711182)
263guard:walkTo( 942.160706, height, -1675.745972)
264guard:walkTo( 947.547302, height, -1681.952881)
265guard:walkTo( 951.732483, height, -1687.077759)
266guard:walkTo( 957.284851, height, -1693.876709)
267guard:walkTo( 962.786438, height, -1700.614990)
268guard:walkTo( 966.177246, height, -1705.151245)
269guard:walkTo( 970.221619, height, -1710.886230)
270guard:walkTo( 974.503113, height, -1717.243896)
271guard:walkTo( 977.332153, height, -1722.064087)
272guard:walkTo( 981.496887, height, -1729.391357)
273guard:walkTo( 986.814148, height, -1738.394165)
274guard:walkTo( 991.428650, height, -1745.393799)
275guard:walkTo( 998.958069, height, -1755.184326)
276guard:walkTo( 1003.995300, height, -1761.734131)
277guard:walkTo( 1009.006226, height, -1768.234375)
278guard:walkTo( 1013.550842, height, -1773.405029)
279guard:walkTo( 1019.371277, height, -1778.674072)
280guard:walkTo( 1024.703491, height, -1782.708618)
281guard:walkTo( 1030.605469, height, -1787.173950)
282guard:walkTo( 1036.072876, height, -1790.982056)
283guard:walkTo( 1043.746094, height, -1795.485474)
284guard:walkTo( 1050.884644, height, -1799.663574)
285hangarRouteProgrammed  = true
286end
287
288if guard:finalGoalReached() and not guardStopped then
289return true
290end
291
292return false
293end
294
295
296
297function tick(timestep)
298--io.write("Guard called \n")
299observePlayer()
300
301
302if walkingRouteOne then
303walkingRouteOne = walkRouteOne(timestep)
304end
305
306if not walkingRouteOne and not exitPositionReached then
307exitPositionReached = goToExitPosition(timestep)
308end
309
310if not hangarReached and exitPositionReached then
311hangarReached = goToHangar(timestep)
312end
313
314return hangarReached
315end
316 
Note: See TracBrowser for help on using the repository browser.