Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 4073 was 4070, checked in by snellen, 18 years ago

continued implementation

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