Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: data/old_trunk/scripts/ambush_at_uranus/prisoner.lua @ 4788

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

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

File size: 12.9 KB
Line 
1-- Create the trigger
2trigger = ScriptTrigger()
3trigger:setName("prisonertrigger")
4trigger:setScript("prisoner.lua")
5trigger:setFunction("tick")
6trigger:setActiveOnCreation(true)
7
8
9-- Get objects from orxonox
10thisscript:addObject("GenericNPC", "prisoner")
11thisscript:addObject("FPSPlayer", "Player")
12thisscript:addObject("GenericNPC", "secondguard")
13thisscript:addObject("GenericNPC","guard")
14
15
16cellDoorOpened = false
17walkinCellFinished = false
18cellExitReached = false
19exitReached = false
20hangarReached = false
21spaceShipReached = false
22spaceShipEntered = false
23playerInLock = false
24guardStopped = false
25gotoSpaceship = false
26
27randTime = 0
28height = 36
29
30
31function dist( x1,x2,x3, y1,y2,y3 )
32
33return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 )
34
35end
36
37function observeGuard()
38guardX = secondguard:getAbsCoorX()
39guardY = secondguard:getAbsCoorY()
40guardZ = secondguard:getAbsCoorZ()
41
42if dist( guardX,guardY,guardZ, -85.456375, height, 171.823486) < 60 then
43cellDoorOpened = true
44end
45
46end
47
48function observePlayer()
49playerX = Player:getAbsCoorX()
50playerY = Player:getAbsCoorY()
51playerZ = Player:getAbsCoorZ()
52
53
54guardX = guard:getAbsCoorX()
55guardY = guard:getAbsCoorY()
56guardZ = guard:getAbsCoorZ()
57
58distance = dist( guardX,guardY,guardZ,playerX, playerY, playerZ)
59
60if dist( playerX,playerY,playerZ,161.76,49,408.87 ) < 50 then
61playerInLock = true
62end
63
64
65if distance > 250 and hangarRouteProgrammed and not guardStopped and not gotoSpaceship then
66 prisoner:stop()
67 guardStopped = true
68end
69
70if distance < 250 and hangarRouteProgrammed and guardStopped and not gotoSpaceship then
71 prisoner:resume()
72 guardStopped = false
73end
74
75
76if dist( guardX,guardY,guardZ,772.325012, height, -1500.850708) < 200 then
77gotoSpaceship = true
78end
79
80
81end
82
83walkProgrammed = false
84exitProgrammed = false
85function walkInCell(timestep)
86
87
88if not walkProgrammed then
89--prisoner:walkTo( -66.454849, height, 62.363449)
90--prisoner:walkTo( -66.454849, height, 62.363449)
91prisoner:walkTo( -63.214821, height, 62.429710)
92prisoner:walkTo( -56.661182, height, 62.563740)
93prisoner:walkTo( -46.779755, height, 62.765827)
94prisoner:walkTo( -41.634224, height, 71.319214)
95prisoner:walkTo( -38.168526, height, 79.655807)
96prisoner:walkTo( -40.782196, height, 101.285233)
97prisoner:walkTo( -47.722874, height, 114.314980)
98prisoner:walkTo( -54.593349, height, 118.605423)
99prisoner:walkTo( -62.802982, height, 117.947144)
100prisoner:walkTo( -73.180130, height, 116.720863)
101prisoner:walkTo( -85.028603, height, 114.952316)
102prisoner:walkTo( -113.125824, height, 96.362946)
103prisoner:walkTo( -118.218887, height, 87.702599)
104prisoner:walkTo( -120.596275, height, 80.304184)
105prisoner:walkTo( -114.928169, height, 68.971840)
106prisoner:walkTo( -108.606766, height, 62.085098)
107prisoner:walkTo( -90.078171, height, 59.558804)
108prisoner:walkTo( -83.558510, height, 60.516567)
109prisoner:walkTo( -71.352402, height, 63.920750)
110walkProgrammed = true
111end
112
113
114if prisoner:finalGoalReached() and not cellDoorOpened then
115 walkProgrammed = false
116end
117
118
119if cellDoorOpened then
120
121  if not exitProgrammed then
122prisoner:walkTo( -61.875267, height, 158.254517)
123prisoner:walkTo( -62.335995, height, 170.318756)
124prisoner:walkTo( -62.358681, height, 179.232559)
125prisoner:walkTo( -55.998741, height, 189.289749)
126prisoner:walkTo( -49.237957, height, 195.076263)
127prisoner:walkTo( -39.007496, height, 195.889221)
128prisoner:walkTo( -24.234095, height, 195.547043)
129prisoner:walkTo( -11.409116, height, 196.236069)
130prisoner:walkTo( 2.545602, height, 196.805954)
131prisoner:walkTo( 13.875313, height, 196.377563)
132prisoner:walkTo( 28.379402, height, 195.829132)
133prisoner:walkTo( 41.672989, height, 195.326477)
134prisoner:walkTo( 57.125935, height, 194.742126)
135prisoner:walkTo( 70.114609, height, 194.251007)
136prisoner:walkTo( 81.857407, height, 193.806961)
137prisoner:walkTo( 97.840607, height, 193.974030)
138prisoner:walkTo( 107.569641, height, 196.299652)
139prisoner:walkTo( 120.975266, height, 202.754532)
140prisoner:walkTo( 129.063812, height, 207.099640)
141prisoner:walkTo( 140.468765, height, 214.389191)
142prisoner:walkTo( 145.902267, height, 224.194229)
143prisoner:walkTo( 148.106079, height, 233.095215)
144prisoner:walkTo( 150.907532, height, 244.410049)
145prisoner:walkTo( 153.191757, height, 253.635788)
146prisoner:walkTo( 153.191757, height, 253.635788)
147prisoner:walkTo( 151.838257, height, 257.185974)
148prisoner:walkTo( 153.967865, height, 270.535095)
149prisoner:walkTo( 156.288605, height, 284.582123)
150prisoner:walkTo( 158.034988, height, 300.072937)
151prisoner:walkTo( 158.817184, height, 311.973724)
152prisoner:walkTo( 159.794891, height, 326.848816)
153prisoner:walkTo( 160.789093, height, 342.474060)
154prisoner:walkTo( 161.391815, height, 357.817505)
155prisoner:walkTo( 162.055618, height, 374.715668)
156prisoner:walkTo( 161.595901, height, 389.146759)
157prisoner:walkTo( 160.607056, height, 407.092896)
158prisoner:walkTo( 160.508041, height, 416.996307)
159
160   exitProgrammed = true
161  end
162
163  if prisoner:finalGoalReached() then
164   return true
165  end
166
167end 
168
169return false
170
171end
172
173
174hangarRouteProgrammed = false
175function goToHangar(timestep)
176
177if not hangarRouteProgrammed and playerInLock then
178prisoner:walkTo( 162.624390, height, 425.402435)
179prisoner:walkTo( 162.666931, height, 431.160980)
180prisoner:walkTo( 162.708481, height, 436.786591)
181prisoner:walkTo( 162.789124, height, 447.704620)
182prisoner:walkTo( 162.863098, height, 457.719055)
183prisoner:walkTo( 162.916428, height, 464.939545)
184prisoner:walkTo( 162.975830, height, 472.982452)
185prisoner:walkTo( 163.028259, height, 480.078857)
186prisoner:walkTo( 164.319611, height, 491.340607)
187prisoner:walkTo( 168.597382, height, 497.577728)
188prisoner:walkTo( 186.090088, height, 506.772766)
189prisoner:walkTo( 205.179825, height, 510.814911)
190prisoner:walkTo( 210.280609, height, 511.704041)
191prisoner:walkTo( 216.508865, height, 512.518982)
192prisoner:walkTo( 224.820663, height, 513.199585)
193prisoner:walkTo( 233.553589, height, 513.803711)
194prisoner:walkTo( 275.363922, height, 514.931763)
195prisoner:walkTo( 325.490265, height, 515.918945)
196prisoner:walkTo( 365.214355, height, 516.691833)
197prisoner:walkTo( 403.109619, height, 515.911804)
198prisoner:walkTo( 464.696991, height, 514.644348)
199prisoner:walkTo( 524.817627, height, 513.407104)
200prisoner:walkTo( 565.836670, height, 512.870239)
201prisoner:walkTo( 608.300232, height, 512.717957)
202prisoner:walkTo( 634.151794, height, 512.625183)
203prisoner:walkTo( 656.115234, height, 512.546570)
204prisoner:walkTo( 679.420166, height, 512.462708)
205prisoner:walkTo( 696.694702, height, 512.400635)
206prisoner:walkTo( 712.425781, height, 512.344299)
207prisoner:walkTo( 720.998474, height, 512.273193)
208prisoner:walkTo( 733.098389, height, 512.028137)
209prisoner:walkTo( 755.905273, height, 493.950714)
210prisoner:walkTo( 758.626648, height, 472.345520)
211prisoner:walkTo( 758.944458, height, 464.883545)
212prisoner:walkTo( 760.426208, height, 404.809967)
213prisoner:walkTo( 761.147827, height, 370.829987)
214prisoner:walkTo( 761.848511, height, 337.836395)
215prisoner:walkTo( 762.567932, height, 303.964020)
216prisoner:walkTo( 763.293335, height, 269.808380)
217prisoner:walkTo( 764.076294, height, 232.951477)
218prisoner:walkTo( 765.114441, height, 184.070221)
219prisoner:walkTo( 765.890076, height, 147.545258)
220prisoner:walkTo( 766.753296, height, 106.902954)
221prisoner:walkTo( 767.115967, height, 76.410255)
222prisoner:walkTo( 766.648621, height, 39.034630)
223prisoner:walkTo( 766.501282, height, 3.641552)
224prisoner:walkTo( 766.630615, height, -25.998037)
225prisoner:walkTo( 766.773560, height, -58.753052)
226prisoner:walkTo( 766.897766, height, -87.277809)
227prisoner:walkTo( 766.534546, height, -107.109718)
228prisoner:walkTo( 764.282104, height, -135.666809)
229prisoner:walkTo( 761.187439, height, -155.214981)
230prisoner:walkTo( 756.769043, height, -180.015106)
231prisoner:walkTo( 748.603821, height, -224.832336)
232prisoner:walkTo( 741.901978, height, -259.153870)
233prisoner:walkTo( 735.091492, height, -293.963196)
234prisoner:walkTo( 726.579651, height, -329.477051)
235prisoner:walkTo( 716.802002, height, -367.452911)
236prisoner:walkTo( 706.963806, height, -402.515228)
237prisoner:walkTo( 697.003357, height, -438.013824)
238prisoner:walkTo( 688.261230, height, -471.035400)
239prisoner:walkTo( 683.497986, height, -504.091461)
240prisoner:walkTo( 681.250732, height, -528.006287)
241prisoner:walkTo( 679.264771, height, -554.841125)
242prisoner:walkTo( 678.647949, height, -582.533508)
243prisoner:walkTo( 678.731018, height, -612.342407)
244prisoner:walkTo( 678.873230, height, -663.699585)
245prisoner:walkTo( 683.213135, height, -824.669922)
246prisoner:walkTo( 691.796326, height, -993.215332)
247prisoner:walkTo( 696.237244, height, -1045.909302)
248prisoner:walkTo( 702.897461, height, -1072.645020)
249prisoner:walkTo( 710.501160, height, -1095.735107)
250prisoner:walkTo( 715.637573, height, -1111.740845)
251prisoner:walkTo( 725.408020, height, -1144.843506)
252prisoner:walkTo( 747.384888, height, -1223.670410)
253prisoner:walkTo( 751.330872, height, -1238.939941)
254prisoner:walkTo( 757.179504, height, -1262.104980)
255prisoner:walkTo( 761.473145, height, -1287.161133)
256prisoner:walkTo( 764.180298, height, -1311.035767)
257prisoner:walkTo( 765.995178, height, -1339.139648)
258prisoner:walkTo( 767.811340, height, -1381.138428)
259prisoner:walkTo( 769.017273, height, -1409.277344)
260prisoner:walkTo( 769.463684, height, -1430.375244)
261prisoner:walkTo( 769.351685, height, -1451.503418)
262
263prisoner:walkTo( 775.508972, height, -1457.168213)
264prisoner:walkTo( 776.536743, height, -1462.372925)
265prisoner:walkTo( 778.141663, height, -1470.500732)
266prisoner:walkTo( 779.744995, height, -1478.620117)
267prisoner:walkTo( 782.587646, height, -1489.528198)
268prisoner:walkTo( 785.285156, height, -1497.338013)
269prisoner:walkTo( 788.850159, height, -1506.399414)
270prisoner:walkTo( 792.417053, height, -1515.465820)
271prisoner:walkTo( 796.757446, height, -1525.825684)
272prisoner:walkTo( 802.122009, height, -1534.417847)
273prisoner:walkTo( 808.422058, height, -1541.669067)
274prisoner:walkTo( 816.134949, height, -1549.770508)
275prisoner:walkTo( 824.352783, height, -1557.150024)
276prisoner:walkTo( 832.695801, height, -1563.451172)
277prisoner:walkTo( 843.443665, height, -1571.163818)
278prisoner:walkTo( 850.623901, height, -1576.316284)
279prisoner:walkTo( 859.099182, height, -1580.545166)
280prisoner:walkTo( 868.999939, height, -1585.129028)
281prisoner:walkTo( 879.254211, height, -1588.827148)
282prisoner:walkTo( 888.822021, height, -1592.277832)
283prisoner:walkTo( 895.563293, height, -1594.931885)
284prisoner:walkTo( 900.941589, height, -1597.049438)
285prisoner:walkTo( 907.684387, height, -1599.704102)
286prisoner:walkTo( 914.599243, height, -1604.825928)
287prisoner:walkTo( 919.703430, height, -1609.984619)
288prisoner:walkTo( 925.728088, height, -1616.250977)
289prisoner:walkTo( 930.751343, height, -1621.475830)
290prisoner:walkTo( 934.714905, height, -1625.719360)
291prisoner:walkTo( 940.166260, height, -1631.555664)
292prisoner:walkTo( 946.152344, height, -1637.964600)
293prisoner:walkTo( 953.042297, height, -1646.456421)
294prisoner:walkTo( 958.174194, height, -1654.167847)
295prisoner:walkTo( 964.112854, height, -1663.534424)
296prisoner:walkTo( 968.981812, height, -1670.229248)
297prisoner:walkTo( 975.821045, height, -1678.569946)
298prisoner:walkTo( 982.743835, height, -1687.244385)
299prisoner:walkTo( 990.572571, height, -1697.622559)
300prisoner:walkTo( 995.849670, height, -1704.618164)
301prisoner:walkTo( 1001.152649, height, -1711.648193)
302prisoner:walkTo( 1005.204590, height, -1717.019531)
303prisoner:walkTo( 1012.097412, height, -1725.154907)
304prisoner:walkTo( 1017.283020, height, -1731.152222)
305prisoner:walkTo( 1022.044250, height, -1736.658936)
306prisoner:walkTo( 1028.422852, height, -1744.234863)
307prisoner:walkTo( 1033.080688, height, -1749.780884)
308prisoner:walkTo( 1036.395874, height, -1753.908936)
309prisoner:walkTo( 1040.509155, height, -1759.065186)
310prisoner:walkTo( 1044.627441, height, -1764.227783)
311prisoner:walkTo( 1050.220093, height, -1770.871094)
312prisoner:walkTo( 1054.504883, height, -1775.961060)
313prisoner:walkTo( 1060.259888, height, -1782.490723)
314prisoner:walkTo( 1067.060913, height, -1789.939209)
315prisoner:walkTo( 1072.477173, height, -1795.898315)
316prisoner:walkTo( 1076.556152, height, -1800.990845)
317prisoner:walkTo( 1080.718018, height, -1806.200439)
318prisoner:walkTo( 1085.281494, height, -1811.912476)
319prisoner:walkTo( 1090.934448, height, -1817.621094)
320prisoner:walkTo( 1095.896240, height, -1822.369141)
321prisoner:walkTo( 1100.940430, height, -1827.278564)
322prisoner:walkTo( 1107.045898, height, -1833.460693)
323prisoner:walkTo( 1113.230103, height, -1839.722534)
324
325hangarRouteProgrammed = true
326end
327
328thisX = prisoner:getAbsCoorX()
329thisY = prisoner:getAbsCoorY()
330thisZ = prisoner:getAbsCoorZ()
331
332distance = dist( thisX,thisY,thisZ, 1113.230103, height, -1839.722534)
333--io.write(distance,"\n")
334
335if dist( thisX,thisY,thisZ, 1113.230103, height, -1839.722534) < 40 then
336prisoner:hide()
337return true
338end
339
340
341return false
342
343end
344
345spaceshipRouteProgrammed = false
346function goToSpaceship(timestep)
347
348if not spaceshipRouteProgrammed then
349
350
351spaceshipRouteProgrammed = true
352end
353
354if prisoner:finalGoalReached() then
355   return true
356end
357
358return false
359
360end
361
362
363function enterSpaceship(timestep)
364
365return false
366end
367
368
369
370function tick(timestep)
371
372 observeGuard()
373 observePlayer()
374
375
376if not walkinCellFinished then
377walkinCellFinished = walkInCell(timestep)
378end
379
380
381if walkinCellFinished and not hangarReached then
382hangarReached = goToHangar(timestep)
383end
384
385
386return hangarReached
387end
Note: See TracBrowser for help on using the repository browser.