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
RevLine 
[4051]1-- Get objects from orxonox
2thisscript:addObject("GenericNPC", "prisoner")
3thisscript:addObject("FPSPlayer", "Player")
4thisscript:addObject("GenericNPC", "secondguard")
[4057]5thisscript:addObject("GenericNPC","guard")
[4051]6
7
[3946]8cellDoorOpened = false
9walkinCellFinished = false
10cellExitReached = false
[3945]11exitReached = false
12hangarReached = false
13spaceShipReached = false
14spaceShipEntered = false
[3954]15playerInLock = false
[3945]16
[3946]17randTime = 0
[4057]18height = 29
[3945]19
[3962]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
[3954]27function observeGuard()
[3965]28guardX = secondguard:getAbsCoorX()
29guardY = secondguard:getAbsCoorY()
30guardZ = secondguard:getAbsCoorZ()
[3954]31
[3965]32if dist( guardX,guardY,guardZ, 43.406876, 29, 179.517303) < 60 then
[3945]33cellDoorOpened = true
34end
35
[3954]36end
[3945]37
[3954]38function observePlayer()
39playerX = Player:getAbsCoorX()
40playerY = Player:getAbsCoorY()
41playerZ = Player:getAbsCoorZ()
42
[4057]43
44guardX = guard:getAbsCoorX()
45guardY = guard:getAbsCoorY()
46guardZ = guard:getAbsCoorZ()
47
48
[3954]49if dist( playerX,playerY,playerZ,161.76,49,358.87 ) < 60 then
50playerInLock = true
51end
52
[4057]53
54if dist( guardX,guardY,guardZ,playerX, playerX, playerX) > 30 and hangarProgrammed then
[4063]55 prisoner:stop()
[4057]56 guardStopped = true
[3962]57end
58
[4057]59if dist( guardX,guardY,guardZ,playerX, playerX, playerX) < 30 and hangarProgrammed and guardStopped then
60 --prisoner:continue()
61 guardStopped = false
62end
[3965]63
[4057]64end
[3965]65
[3954]66walkProgrammed = false
67exitProgrammed = false
[3945]68function walkInCell(timestep)
69
[3965]70
[3954]71if not walkProgrammed then
[3964]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)
[3954]93walkProgrammed = true
[3945]94end
95
[3964]96
97if prisoner:finalGoalReached() and not cellDoorOpened then
[3965]98 walkProgrammed = false
99end
[3964]100
[3965]101
[3954]102if cellDoorOpened then
[3945]103
[3954]104  if not exitProgrammed then
[3964]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)
[3954]130   exitProgrammed = true
131  end
132
[3964]133  if prisoner:finalGoalReached() then
[3954]134   return true
135  end
136
[3965]137end 
[3954]138
139return false
[3964]140
[3946]141end
[3945]142
[3946]143
[3954]144hangarRouteProgrammed = false
[3945]145function goToHangar(timestep)
146
[3965]147if not hangarRouteProgrammed and playerInLock then
[4056]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)
[3954]250hangarRouteProgrammed = true
251end
252
[3965]253thisX = prisoner:getAbsCoorX()
254thisY = prisoner:getAbsCoorY()
255thisZ = prisoner:getAbsCoorZ()
256
257if dist( thisX,thisY,thisZ, 3.175952, 29, -1610.220093) < 60 then
258return true
[3954]259end
260
[3965]261
[3945]262return false
263
264end
265
[3954]266spaceshipRouteProgrammed = false
[3945]267function goToSpaceship(timestep)
268
[3954]269if not spaceshipRouteProgrammed then
270
[3964]271
[3954]272spaceshipRouteProgrammed = true
273end
274
275if prisoner:finalGoalReached() then
276   return true
277end
278
[3945]279return false
280
281end
282
283
284function enterSpaceship(timestep)
285
286return false
287end
288
289
290
291function tick(timestep)
292
[3954]293 observeGuard()
294 observePlayer()
295
296
[3965]297if not walkinCellFinished then
[3946]298walkinCellFinished = walkInCell(timestep)
[3945]299end
300
301
[3965]302if walkinCellFinished and not hangarReached then
[3945]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.