Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: data/branches/single_player_map/scripts/prisoner.lua @ 4065

Last change on this file since 4065 was 4063, checked in by snellen, 18 years ago

adjusted height

File size: 9.9 KB
Line 
1-- Get objects from orxonox
2thisscript:addObject("GenericNPC", "prisoner")
3thisscript:addObject("FPSPlayer", "Player")
4thisscript:addObject("GenericNPC", "secondguard")
5thisscript:addObject("GenericNPC","guard")
6
7
8cellDoorOpened = false
9walkinCellFinished = false
10cellExitReached = false
11exitReached = false
12hangarReached = false
13spaceShipReached = false
14spaceShipEntered = false
15playerInLock = false
16
17randTime = 0
18height = 29
19
20
21function dist( x1,x2,x3, y1,y2,y3 )
22
23return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 )
24
25end
26
27function observeGuard()
28guardX = secondguard:getAbsCoorX()
29guardY = secondguard:getAbsCoorY()
30guardZ = secondguard:getAbsCoorZ()
31
32if dist( guardX,guardY,guardZ, 43.406876, 29, 179.517303) < 60 then
33cellDoorOpened = true
34end
35
36end
37
38function observePlayer()
39playerX = Player:getAbsCoorX()
40playerY = Player:getAbsCoorY()
41playerZ = Player:getAbsCoorZ()
42
43
44guardX = guard:getAbsCoorX()
45guardY = guard:getAbsCoorY()
46guardZ = guard:getAbsCoorZ()
47
48
49if dist( playerX,playerY,playerZ,161.76,49,358.87 ) < 60 then
50playerInLock = true
51end
52
53
54if dist( guardX,guardY,guardZ,playerX, playerX, playerX) > 30 and hangarProgrammed then
55 prisoner:stop()
56 guardStopped = true
57end
58
59if dist( guardX,guardY,guardZ,playerX, playerX, playerX) < 30 and hangarProgrammed and guardStopped then
60 --prisoner:continue()
61 guardStopped = false
62end
63
64end
65
66walkProgrammed = false
67exitProgrammed = false
68function walkInCell(timestep)
69
70
71if not walkProgrammed then
72prisoner:walkTo( -66.454849, height, 62.363449)
73prisoner:walkTo( -66.454849, height, 62.363449)
74prisoner:walkTo( -63.214821, height, 62.429710)
75prisoner:walkTo( -56.661182, height, 62.563740)
76prisoner:walkTo( -46.779755, height, 62.765827)
77prisoner:walkTo( -41.634224, height, 71.319214)
78prisoner:walkTo( -38.168526, height, 79.655807)
79prisoner:walkTo( -40.782196, height, 101.285233)
80prisoner:walkTo( -47.722874, height, 114.314980)
81prisoner:walkTo( -54.593349, height, 118.605423)
82prisoner:walkTo( -62.802982, height, 117.947144)
83prisoner:walkTo( -73.180130, height, 116.720863)
84prisoner:walkTo( -85.028603, height, 114.952316)
85prisoner:walkTo( -113.125824, height, 96.362946)
86prisoner:walkTo( -118.218887, height, 87.702599)
87prisoner:walkTo( -120.596275, height, 80.304184)
88prisoner:walkTo( -114.928169, height, 68.971840)
89prisoner:walkTo( -108.606766, height, 62.085098)
90prisoner:walkTo( -90.078171, height, 59.558804)
91prisoner:walkTo( -83.558510, height, 60.516567)
92prisoner:walkTo( -71.352402, height, 63.920750)
93walkProgrammed = true
94end
95
96
97if prisoner:finalGoalReached() and not cellDoorOpened then
98 walkProgrammed = false
99end
100
101
102if cellDoorOpened then
103
104  if not exitProgrammed then
105prisoner:walkTo( -61.875267, height, 158.254517)
106prisoner:walkTo( -62.335995, height, 170.318756)
107prisoner:walkTo( -62.358681, height, 179.232559)
108prisoner:walkTo( -55.998741, height, 189.289749)
109prisoner:walkTo( -49.237957, height, 195.076263)
110prisoner:walkTo( -39.007496, height, 195.889221)
111prisoner:walkTo( -24.234095, height, 195.547043)
112prisoner:walkTo( -11.409116, height, 196.236069)
113prisoner:walkTo( 2.545602, height, 196.805954)
114prisoner:walkTo( 13.875313, height, 196.377563)
115prisoner:walkTo( 28.379402, height, 195.829132)
116prisoner:walkTo( 41.672989, height, 195.326477)
117prisoner:walkTo( 57.125935, height, 194.742126)
118prisoner:walkTo( 70.114609, height, 194.251007)
119prisoner:walkTo( 81.857407, height, 193.806961)
120prisoner:walkTo( 97.840607, height, 193.974030)
121prisoner:walkTo( 107.569641, height, 196.299652)
122prisoner:walkTo( 120.975266, height, 202.754532)
123prisoner:walkTo( 129.063812, height, 207.099640)
124prisoner:walkTo( 140.468765, height, 214.389191)
125prisoner:walkTo( 145.902267, height, 224.194229)
126prisoner:walkTo( 148.106079, height, 233.095215)
127prisoner:walkTo( 150.907532, height, 244.410049)
128prisoner:walkTo( 153.191757, height, 253.635788)
129prisoner:walkTo( 153.191757, height, 253.635788)
130   exitProgrammed = true
131  end
132
133  if prisoner:finalGoalReached() then
134   return true
135  end
136
137end 
138
139return false
140
141end
142
143
144hangarRouteProgrammed = false
145function goToHangar(timestep)
146
147if not hangarRouteProgrammed and playerInLock then
148prisoner:walkTo( 153.801224, height, 253.259750)
149prisoner:walkTo( 156.047333, height, 263.016998)
150prisoner:walkTo( 158.592575, height, 275.126709)
151prisoner:walkTo( 160.208252, height, 284.592896)
152prisoner:walkTo( 161.436462, height, 293.934601)
153prisoner:walkTo( 162.154053, height, 299.829407)
154prisoner:walkTo( 162.288696, height, 307.149750)
155prisoner:walkTo( 161.846405, height, 314.288727)
156prisoner:walkTo( 161.481949, height, 320.171295)
157prisoner:walkTo( 161.149612, height, 331.675751)
158prisoner:walkTo( 160.959152, height, 344.682129)
159prisoner:walkTo( 161.191635, height, 359.230835)
160prisoner:walkTo( 161.436386, height, 364.404175)
161prisoner:walkTo( 161.829483, height, 372.712799)
162prisoner:walkTo( 162.251343, height, 382.889465)
163prisoner:walkTo( 162.375793, height, 391.746979)
164prisoner:walkTo( 162.433640, height, 399.580994)
165prisoner:walkTo( 162.492249, height, 407.515991)
166prisoner:walkTo( 162.624390, height, 425.402435)
167prisoner:walkTo( 162.666931, height, 431.160980)
168prisoner:walkTo( 162.708481, height, 436.786591)
169prisoner:walkTo( 162.789124, height, 447.704620)
170prisoner:walkTo( 162.863098, height, 457.719055)
171prisoner:walkTo( 162.916428, height, 464.939545)
172prisoner:walkTo( 162.975830, height, 472.982452)
173prisoner:walkTo( 163.028259, height, 480.078857)
174prisoner:walkTo( 164.319611, height, 491.340607)
175prisoner:walkTo( 168.597382, height, 497.577728)
176prisoner:walkTo( 186.090088, height, 506.772766)
177prisoner:walkTo( 205.179825, height, 510.814911)
178prisoner:walkTo( 210.280609, height, 511.704041)
179prisoner:walkTo( 216.508865, height, 512.518982)
180prisoner:walkTo( 224.820663, height, 513.199585)
181prisoner:walkTo( 233.553589, height, 513.803711)
182prisoner:walkTo( 275.363922, height, 514.931763)
183prisoner:walkTo( 325.490265, height, 515.918945)
184prisoner:walkTo( 365.214355, height, 516.691833)
185prisoner:walkTo( 403.109619, height, 515.911804)
186prisoner:walkTo( 464.696991, height, 514.644348)
187prisoner:walkTo( 524.817627, height, 513.407104)
188prisoner:walkTo( 565.836670, height, 512.870239)
189prisoner:walkTo( 608.300232, height, 512.717957)
190prisoner:walkTo( 634.151794, height, 512.625183)
191prisoner:walkTo( 656.115234, height, 512.546570)
192prisoner:walkTo( 679.420166, height, 512.462708)
193prisoner:walkTo( 696.694702, height, 512.400635)
194prisoner:walkTo( 712.425781, height, 512.344299)
195prisoner:walkTo( 720.998474, height, 512.273193)
196prisoner:walkTo( 733.098389, height, 512.028137)
197prisoner:walkTo( 755.905273, height, 493.950714)
198prisoner:walkTo( 758.626648, height, 472.345520)
199prisoner:walkTo( 758.944458, height, 464.883545)
200prisoner:walkTo( 760.426208, height, 404.809967)
201prisoner:walkTo( 761.147827, height, 370.829987)
202prisoner:walkTo( 761.848511, height, 337.836395)
203prisoner:walkTo( 762.567932, height, 303.964020)
204prisoner:walkTo( 763.293335, height, 269.808380)
205prisoner:walkTo( 764.076294, height, 232.951477)
206prisoner:walkTo( 765.114441, height, 184.070221)
207prisoner:walkTo( 765.890076, height, 147.545258)
208prisoner:walkTo( 766.753296, height, 106.902954)
209prisoner:walkTo( 767.115967, height, 76.410255)
210prisoner:walkTo( 766.648621, height, 39.034630)
211prisoner:walkTo( 766.501282, height, 3.641552)
212prisoner:walkTo( 766.630615, height, -25.998037)
213prisoner:walkTo( 766.773560, height, -58.753052)
214prisoner:walkTo( 766.897766, height, -87.277809)
215prisoner:walkTo( 766.534546, height, -107.109718)
216prisoner:walkTo( 764.282104, height, -135.666809)
217prisoner:walkTo( 761.187439, height, -155.214981)
218prisoner:walkTo( 756.769043, height, -180.015106)
219prisoner:walkTo( 748.603821, height, -224.832336)
220prisoner:walkTo( 741.901978, height, -259.153870)
221prisoner:walkTo( 735.091492, height, -293.963196)
222prisoner:walkTo( 726.579651, height, -329.477051)
223prisoner:walkTo( 716.802002, height, -367.452911)
224prisoner:walkTo( 706.963806, height, -402.515228)
225prisoner:walkTo( 697.003357, height, -438.013824)
226prisoner:walkTo( 688.261230, height, -471.035400)
227prisoner:walkTo( 683.497986, height, -504.091461)
228prisoner:walkTo( 681.250732, height, -528.006287)
229prisoner:walkTo( 679.264771, height, -554.841125)
230prisoner:walkTo( 678.647949, height, -582.533508)
231prisoner:walkTo( 678.731018, height, -612.342407)
232prisoner:walkTo( 678.873230, height, -663.699585)
233prisoner:walkTo( 683.213135, height, -824.669922)
234prisoner:walkTo( 691.796326, height, -993.215332)
235prisoner:walkTo( 696.237244, height, -1045.909302)
236prisoner:walkTo( 702.897461, height, -1072.645020)
237prisoner:walkTo( 710.501160, height, -1095.735107)
238prisoner:walkTo( 715.637573, height, -1111.740845)
239prisoner:walkTo( 725.408020, height, -1144.843506)
240prisoner:walkTo( 747.384888, height, -1223.670410)
241prisoner:walkTo( 751.330872, height, -1238.939941)
242prisoner:walkTo( 757.179504, height, -1262.104980)
243prisoner:walkTo( 761.473145, height, -1287.161133)
244prisoner:walkTo( 764.180298, height, -1311.035767)
245prisoner:walkTo( 765.995178, height, -1339.139648)
246prisoner:walkTo( 767.811340, height, -1381.138428)
247prisoner:walkTo( 769.017273, height, -1409.277344)
248prisoner:walkTo( 769.463684, height, -1430.375244)
249prisoner:walkTo( 769.351685, height, -1451.503418)
250hangarRouteProgrammed = true
251end
252
253thisX = prisoner:getAbsCoorX()
254thisY = prisoner:getAbsCoorY()
255thisZ = prisoner:getAbsCoorZ()
256
257if dist( thisX,thisY,thisZ, 3.175952, 29, -1610.220093) < 60 then
258return true
259end
260
261
262return false
263
264end
265
266spaceshipRouteProgrammed = false
267function goToSpaceship(timestep)
268
269if not spaceshipRouteProgrammed then
270
271
272spaceshipRouteProgrammed = true
273end
274
275if prisoner:finalGoalReached() then
276   return true
277end
278
279return false
280
281end
282
283
284function enterSpaceship(timestep)
285
286return false
287end
288
289
290
291function tick(timestep)
292
293 observeGuard()
294 observePlayer()
295
296
297if not walkinCellFinished then
298walkinCellFinished = walkInCell(timestep)
299end
300
301
302if walkinCellFinished and not hangarReached then
303hangarReached = goToHangar(timestep)
304end
305
306if hangarReached and not spaceShipReached then 
307spaceShipReached = goToSpaceship(timestep)
308end
309
310if spaceShipReached and not spaceShipEntered then
311spaceShipEntered = enterSpaceship(timestep)
312end
313
314if spaceShipEntered then
315return true
316end
317
318return false
319end
Note: See TracBrowser for help on using the repository browser.