Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: data/trunk/scripts/prisoner.lua @ 4346

Last change on this file since 4346 was 4202, checked in by bensch, 18 years ago

merged the data back from scripting

File size: 12.9 KB
RevLine 
[4202]1-- Create the trigger
2trigger = ScriptTrigger()
3trigger:setName("prisonertrigger")
4trigger:setScript("prisoner.lua")
5trigger:setFunction("tick")
6trigger:setActiveOnCreation(true)
7
8
[4080]9-- Get objects from orxonox
10thisscript:addObject("GenericNPC", "prisoner")
11thisscript:addObject("FPSPlayer", "Player")
12thisscript:addObject("GenericNPC", "secondguard")
13thisscript:addObject("GenericNPC","guard")
14
15
[3946]16cellDoorOpened = false
17walkinCellFinished = false
18cellExitReached = false
[3945]19exitReached = false
20hangarReached = false
21spaceShipReached = false
22spaceShipEntered = false
[3954]23playerInLock = false
[4080]24guardStopped = false
[4151]25gotoSpaceship = false
[3945]26
[3946]27randTime = 0
[4100]28height = 36
[3945]29
[3962]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
[3954]37function observeGuard()
[3965]38guardX = secondguard:getAbsCoorX()
39guardY = secondguard:getAbsCoorY()
40guardZ = secondguard:getAbsCoorZ()
[3954]41
[4167]42if dist( guardX,guardY,guardZ, -85.456375, height, 171.823486) < 60 then
[3945]43cellDoorOpened = true
44end
45
[3954]46end
[3945]47
[3954]48function observePlayer()
49playerX = Player:getAbsCoorX()
50playerY = Player:getAbsCoorY()
51playerZ = Player:getAbsCoorZ()
52
[4080]53
54guardX = guard:getAbsCoorX()
55guardY = guard:getAbsCoorY()
56guardZ = guard:getAbsCoorZ()
57
58distance = dist( guardX,guardY,guardZ,playerX, playerY, playerZ)
59
[4100]60if dist( playerX,playerY,playerZ,161.76,49,408.87 ) < 50 then
[3954]61playerInLock = true
62end
63
[4080]64
[4151]65if distance > 250 and hangarRouteProgrammed and not guardStopped and not gotoSpaceship then
[4080]66 prisoner:stop()
67 guardStopped = true
[3962]68end
69
[4151]70if distance < 250 and hangarRouteProgrammed and guardStopped and not gotoSpaceship then
[4080]71 prisoner:resume()
72 guardStopped = false
73end
[3965]74
[4151]75
76if dist( guardX,guardY,guardZ,772.325012, height, -1500.850708) < 200 then
77gotoSpaceship = true
[4080]78end
[3965]79
[4151]80
81end
82
[3954]83walkProgrammed = false
84exitProgrammed = false
[3945]85function walkInCell(timestep)
86
[3965]87
[3954]88if not walkProgrammed then
[4100]89--prisoner:walkTo( -66.454849, height, 62.363449)
90--prisoner:walkTo( -66.454849, height, 62.363449)
[3964]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)
[3954]110walkProgrammed = true
[3945]111end
112
[3964]113
114if prisoner:finalGoalReached() and not cellDoorOpened then
[3965]115 walkProgrammed = false
116end
[3964]117
[3965]118
[3954]119if cellDoorOpened then
[3945]120
[3954]121  if not exitProgrammed then
[3964]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)
[4080]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
[3954]160   exitProgrammed = true
161  end
162
[3964]163  if prisoner:finalGoalReached() then
[3954]164   return true
165  end
166
[3965]167end 
[3954]168
169return false
[3964]170
[3946]171end
[3945]172
[3946]173
[3954]174hangarRouteProgrammed = false
[3945]175function goToHangar(timestep)
176
[3965]177if not hangarRouteProgrammed and playerInLock then
[4080]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)
[4100]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
[3954]325hangarRouteProgrammed = true
326end
327
[3965]328thisX = prisoner:getAbsCoorX()
329thisY = prisoner:getAbsCoorY()
330thisZ = prisoner:getAbsCoorZ()
331
[4164]332distance = dist( thisX,thisY,thisZ, 1113.230103, height, -1839.722534)
[4178]333--io.write(distance,"\n")
[4164]334
[4178]335if dist( thisX,thisY,thisZ, 1113.230103, height, -1839.722534) < 40 then
[4100]336prisoner:hide()
[3965]337return true
[3954]338end
339
[3965]340
[3945]341return false
342
343end
344
[3954]345spaceshipRouteProgrammed = false
[3945]346function goToSpaceship(timestep)
347
[3954]348if not spaceshipRouteProgrammed then
349
[3964]350
[3954]351spaceshipRouteProgrammed = true
352end
353
354if prisoner:finalGoalReached() then
355   return true
356end
357
[3945]358return false
359
360end
361
362
363function enterSpaceship(timestep)
364
365return false
366end
367
368
369
370function tick(timestep)
371
[3954]372 observeGuard()
373 observePlayer()
374
375
[3965]376if not walkinCellFinished then
[3946]377walkinCellFinished = walkInCell(timestep)
[3945]378end
379
380
[3965]381if walkinCellFinished and not hangarReached then
[3945]382hangarReached = goToHangar(timestep)
383end
384
385
[4161]386return hangarReached
[3945]387end
Note: See TracBrowser for help on using the repository browser.