Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: data/trunk/scripts/ambush_at_uranus/secondguard.lua @ 4448

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

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

File size: 11.8 KB
Line 
1-- Create the trigger
2trigger = ScriptTrigger()
3trigger:setName("secondguardtrigger")
4trigger:setScript("secondguard.lua")
5trigger:setFunction("tick")
6trigger:setActiveOnCreation(true)
7
8
9-- Get objects from orxonox
10thisscript:addObject("GenericNPC", "secondguard")
11thisscript:addObject("GenericNPC", "guard")
12thisscript:addObject("FPSPlayer", "Player")
13thisscript:addObject("GenericNPC", "prisoner")
14
15-- Global Variables
16allOk = true
17cellReached = false
18guidePositionReached = false
19prisonerReachedLock = false
20hangarReached = false
21guardStopped = false
22letsgo = false
23
24height = 90
25
26-- Returns the distance between (x1,x2,x3) and (y1,y2,y3)
27function dist( x1,x2,x3, y1,y2,y3 )
28return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 )
29end
30
31
32function observeGuard()
33guardX = guard:getAbsCoorX()
34guardY = guard:getAbsCoorY()
35guardZ = guard:getAbsCoorZ()
36
37if dist( guardX,guardY,guardZ,35.48, 29, 191.28 ) < 30 then
38allOk = false
39end
40
41end
42
43function observePlayer()
44
45guardX = guard:getAbsCoorX()
46guardY = guard:getAbsCoorY()
47guardZ = guard:getAbsCoorZ()
48
49playerX = Player:getAbsCoorX()
50playerY = Player:getAbsCoorY()
51playerZ = Player:getAbsCoorZ()
52
53distance = dist( guardX,guardY,guardZ,playerX, playerY, playerZ)
54
55if distance > 250 and hangarProgrammed and not guardStopped then
56 secondguard:stop()
57 guardStopped = true
58end
59
60if distance < 250 and hangarProgrammed and guardStopped then
61 secondguard:resume()
62 guardStopped = false
63end
64
65if dist( playerX,playerY,playerZ,161.76,49,408.87 ) < 50  then
66letsgo = true
67end
68
69end
70
71
72
73function observePrisoner()
74
75prisonerX = prisoner:getAbsCoorX()
76prisonerY = prisoner:getAbsCoorY()
77prisonerZ = prisoner:getAbsCoorZ()
78
79if dist( prisonerX,prisonerY,prisonerZ,162.757919,49,363.489349 ) < 60 then
80--io.write("Prisonner reached lock \n")
81prisonerReachedLock = true
82end
83
84end
85
86cellProgrammed = false
87function goToCell(timestep)
88
89if not cellProgrammed then
90secondguard:walkTo( 442.173767, height, 176.429855)
91secondguard:walkTo( 442.173767, height, 176.429855)
92secondguard:walkTo( 436.727753, height, 188.191757)
93secondguard:walkTo( 432.311584, height, 198.882462)
94secondguard:walkTo( 426.079590, height, 213.968994)
95secondguard:walkTo( 420.553986, height, 226.714996)
96secondguard:walkTo( 412.681915, height, 235.053696)
97secondguard:walkTo( 398.758545, height, 241.846924)
98secondguard:walkTo( 384.690735, height, 242.851395)
99secondguard:walkTo( 348.930481, height, 242.394958)
100secondguard:walkTo( 336.467926, height, 241.985764)
101secondguard:walkTo( 324.042999, height, 241.577774)
102secondguard:walkTo( 303.851410, height, 240.914841)
103secondguard:walkTo( 293.013977, height, 240.559006)
104secondguard:walkTo( 276.207611, height, 240.007233)
105secondguard:walkTo( 261.475800, height, 239.523544)
106secondguard:walkTo( 239.185089, height, 238.791687)
107secondguard:walkTo( 226.655655, height, 238.491974)
108secondguard:walkTo( 211.996979, height, 238.851044)
109secondguard:walkTo( 192.956741, height, 239.859207)
110secondguard:walkTo( 178.496552, height, 241.852539)
111secondguard:walkTo( 160.421860, height, 244.009827)
112secondguard:walkTo( 145.371857, height, 244.946075)
113secondguard:walkTo( 129.918198, height, 245.307037)
114secondguard:walkTo( 113.065468, height, 245.108231)
115secondguard:walkTo( 99.159073, height, 244.695694)
116secondguard:walkTo( 82.069923, height, 244.188766)
117secondguard:walkTo( 65.880531, height, 243.708527)
118secondguard:walkTo( 48.133881, height, 243.182114)
119secondguard:walkTo( 34.706280, height, 242.783813)
120secondguard:walkTo( 20.682344, height, 242.367783)
121secondguard:walkTo( 5.419819, height, 241.915070)
122secondguard:walkTo( -10.556346, height, 241.058746)
123secondguard:walkTo( -24.159513, height, 240.127090)
124secondguard:walkTo( -33.819145, height, 239.995453)
125secondguard:walkTo( -45.414162, height, 240.373322)
126secondguard:walkTo( -60.228550, height, 240.856079)
127secondguard:walkTo( -73.269897, height, 241.260895)
128secondguard:walkTo( -86.128647, height, 240.457886)
129secondguard:walkTo( -100.443581, height, 236.485718)
130secondguard:walkTo( -112.346939, height, 233.967209)
131secondguard:walkTo( -127.331635, height, 227.615112)
132secondguard:walkTo( -135.153656, height, 215.476883)
133secondguard:walkTo( -131.529984, height, 202.931015)
134secondguard:walkTo( -122.671799, height, 193.644669)
135secondguard:walkTo( -113.823517, height, 183.986633)
136secondguard:walkTo( -104.089592, height, 170.659729)
137cellProgrammed = true
138end
139
140if secondguard:finalGoalReached() then
141return true
142end
143
144return false
145end
146
147guideProgrammed = false
148function goToGuidePosition(timestep)
149
150if not guideProgrammed then
151secondguard:walkTo( -100.266739, height, 171.345627)
152secondguard:walkTo( -91.152046, height, 171.639709)
153secondguard:walkTo( -85.456375, height, 171.823486)
154secondguard:walkTo( -74.048538, height, 172.191589)
155secondguard:walkTo( -53.574173, height, 172.852219)
156secondguard:walkTo( -43.275124, height, 173.184540)
157secondguard:walkTo( -35.155544, height, 173.446518)
158secondguard:walkTo( -31.645050, height, 173.559784)
159secondguard:walkTo( -23.426588, height, 173.824966)
160secondguard:walkTo( -10.576803, height, 174.239578)
161secondguard:walkTo( -2.389911, height, 174.503754)
162secondguard:walkTo( 6.950986, height, 174.805176)
163secondguard:walkTo( 16.313608, height, 175.161179)
164secondguard:walkTo( 23.271458, height, 175.547226)
165secondguard:walkTo( 31.248058, height, 176.199890)
166secondguard:walkTo( 43.694778, height, 177.753479)
167secondguard:walkTo( 50.441612, height, 178.595612)
168secondguard:walkTo( 71.374535, height, 181.208389)
169secondguard:walkTo( 82.251022, height, 181.855988)
170secondguard:walkTo( 91.975792, height, 182.434998)
171secondguard:walkTo( 101.695015, height, 183.013672)
172secondguard:walkTo( 110.377205, height, 183.530609)
173secondguard:walkTo( 122.299400, height, 184.240448)
174secondguard:walkTo( 129.848495, height, 184.689911)
175secondguard:walkTo( 141.687805, height, 185.394821)
176secondguard:walkTo( 150.166702, height, 186.776016)
177secondguard:walkTo( 155.342255, height, 189.285080)
178secondguard:walkTo( 162.508133, height, 192.849976)
179secondguard:walkTo( 171.747696, height, 197.075134)
180secondguard:walkTo( 177.846390, height, 199.864029)
181secondguard:walkTo( 182.707596, height, 204.381516)
182secondguard:walkTo( 182.707596, height, 204.381516)
183secondguard:walkTo( 187.317139, height, 211.966385)
184secondguard:walkTo( 193.191528, height, 221.632446)
185secondguard:walkTo( 197.856018, height, 229.307724)
186secondguard:walkTo( 198.350906, height, 232.634857)
187secondguard:walkTo( 198.427155, height, 243.656113)
188
189guideProgrammed = true
190end
191
192if secondguard:finalGoalReached() then
193return true
194end
195
196return false
197end
198
199hangarProgrammed = false
200function goToHangar(timestep)
201
202if not hangarProgrammed and prisonerReachedLock and letsgo then
203secondguard:walkTo( 198.984589, height, 243.144440)
204secondguard:walkTo( 188.270493, height, 242.143143)
205secondguard:walkTo( 185.177658, height, 241.854080)
206secondguard:walkTo( 166.990906, height, 249.598251)
207secondguard:walkTo( 160.702652, height, 251.610641)
208secondguard:walkTo( 157.542480, height, 260.691101)
209secondguard:walkTo( 158.720688, height, 285.526489)
210secondguard:walkTo( 158.819519, height, 295.229065)
211secondguard:walkTo( 158.941727, height, 307.225800)
212secondguard:walkTo( 159.095718, height, 322.344818)
213secondguard:walkTo( 159.248337, height, 332.535400)
214secondguard:walkTo( 159.600082, height, 343.361420)
215secondguard:walkTo( 160.006805, height, 355.880432)
216secondguard:walkTo( 161.582108, height, 441.998688)
217secondguard:walkTo( 161.650970, height, 447.407074)
218secondguard:walkTo( 161.755173, height, 455.592651)
219secondguard:walkTo( 162.311462, height, 471.569611)
220secondguard:walkTo( 164.966690, height, 482.971222)
221secondguard:walkTo( 168.578796, height, 492.256317)
222secondguard:walkTo( 204.727936, height, 507.833527)
223secondguard:walkTo( 212.031540, height, 508.235596)
224secondguard:walkTo( 226.355484, height, 509.024170)
225secondguard:walkTo( 441.672638, height, 512.266846)
226secondguard:walkTo( 509.640350, height, 512.965515)
227secondguard:walkTo( 576.208435, height, 512.614258)
228secondguard:walkTo( 638.251770, height, 512.247986)
229secondguard:walkTo( 667.897888, height, 512.072693)
230secondguard:walkTo( 683.874451, height, 511.978363)
231secondguard:walkTo( 693.377319, height, 511.922302)
232secondguard:walkTo( 700.632446, height, 511.837494)
233secondguard:walkTo( 703.564148, height, 511.713562)
234secondguard:walkTo( 710.958313, height, 510.896362)
235secondguard:walkTo( 724.824585, height, 502.160461)
236secondguard:walkTo( 728.256226, height, 497.817627)
237secondguard:walkTo( 734.361206, height, 484.795380)
238secondguard:walkTo( 737.112488, height, 478.616089)
239secondguard:walkTo( 740.696350, height, 470.796539)
240secondguard:walkTo( 743.915833, height, 462.804688)
241secondguard:walkTo( 750.241150, height, 438.829529)
242secondguard:walkTo( 751.186340, height, 432.598022)
243secondguard:walkTo( 751.977051, height, 427.385315)
244secondguard:walkTo( 756.962708, height, 379.979919)
245secondguard:walkTo( 759.845581, height, 337.377167)
246secondguard:walkTo( 762.304626, height, 288.355713)
247secondguard:walkTo( 764.125244, height, 248.893723)
248secondguard:walkTo( 766.738892, height, 164.214142)
249secondguard:walkTo( 767.405884, height, 116.896973)
250secondguard:walkTo( 767.289917, height, 68.270233)
251secondguard:walkTo( 767.680176, height, 31.480713)
252secondguard:walkTo( 767.315247, height, -46.728809)
253secondguard:walkTo( 767.634888, height, -85.314407)
254secondguard:walkTo( 767.905823, height, -112.270973)
255secondguard:walkTo( 767.716003, height, -134.956741)
256secondguard:walkTo( 765.699829, height, -159.042664)
257secondguard:walkTo( 762.026978, height, -178.211639)
258secondguard:walkTo( 751.512512, height, -219.904297)
259secondguard:walkTo( 735.898499, height, -277.525970)
260secondguard:walkTo( 722.206055, height, -329.591888)
261secondguard:walkTo( 709.354858, height, -383.514618)
262secondguard:walkTo( 697.115295, height, -434.870483)
263secondguard:walkTo( 685.142822, height, -485.212402)
264secondguard:walkTo( 681.659058, height, -532.429504)
265secondguard:walkTo( 679.999634, height, -581.595886)
266secondguard:walkTo( 678.678101, height, -632.772156)
267secondguard:walkTo( 678.162842, height, -682.753113)
268secondguard:walkTo( 678.398376, height, -731.779053)
269secondguard:walkTo( 679.124756, height, -782.160034)
270secondguard:walkTo( 680.050781, height, -831.132141)
271secondguard:walkTo( 678.395569, height, -877.242920)
272secondguard:walkTo( 676.737793, height, -919.301819)
273secondguard:walkTo( 676.191956, height, -962.443909)
274secondguard:walkTo( 676.493774, height, -994.707703)
275secondguard:walkTo( 677.446716, height, -1018.486389)
276secondguard:walkTo( 681.286865, height, -1042.623901)
277secondguard:walkTo( 685.302917, height, -1060.096436)
278secondguard:walkTo( 692.212036, height, -1083.229370)
279secondguard:walkTo( 698.947937, height, -1103.496826)
280secondguard:walkTo( 710.392944, height, -1137.932617)
281secondguard:walkTo( 719.685608, height, -1164.374634)
282secondguard:walkTo( 728.124512, height, -1186.812622)
283secondguard:walkTo( 746.270569, height, -1235.059082)
284secondguard:walkTo( 754.436340, height, -1259.201660)
285secondguard:walkTo( 760.588013, height, -1286.830933)
286secondguard:walkTo( 765.026733, height, -1329.641113)
287secondguard:walkTo( 765.849609, height, -1362.461670)
288secondguard:walkTo( 765.842346, height, -1398.791016)
289secondguard:walkTo( 765.749695, height, -1425.336304)
290secondguard:walkTo( 765.650024, height, -1454.007935)
291hangarProgrammed = true
292end
293
294guardX = secondguard:getAbsCoorX()
295guardY = secondguard:getAbsCoorY()
296guardZ = secondguard:getAbsCoorZ()
297
298if dist( guardX,guardY,guardZ, 2.861493, 29, -1705.131958) < 60 then
299return true
300end
301
302return false
303
304end
305
306time = 2
307function tick(timestep)
308--io.write("Secondguard called \n")
309 
310observePrisoner()
311observeGuard()
312observePlayer()
313
314if not allOk then
315cellReached = goToCell(timestep)
316end
317
318--do talking
319if cellReached then
320time = time - timestep
321end
322
323
324if time < 0 then
325
326if cellReached and not guidePositionReached then
327guidePositionReached = goToGuidePosition(timestep)
328end
329
330if guidePositionReached and not hangarReached then
331hangarReached = goToHangar(timestep)
332end
333
334if hangarReached then
335return true
336end
337
338
339end
340
341
342return false
343end
Note: See TracBrowser for help on using the repository browser.