Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

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

File size: 11.8 KB
RevLine 
[4202]1-- Create the trigger
2trigger = ScriptTrigger()
3trigger:setName("secondguardtrigger")
4trigger:setScript("secondguard.lua")
5trigger:setFunction("tick")
6trigger:setActiveOnCreation(true)
7
8
[4080]9-- Get objects from orxonox
10thisscript:addObject("GenericNPC", "secondguard")
11thisscript:addObject("GenericNPC", "guard")
12thisscript:addObject("FPSPlayer", "Player")
13thisscript:addObject("GenericNPC", "prisoner")
14
[3945]15-- Global Variables
16allOk = true
[3951]17cellReached = false
[3945]18guidePositionReached = false
19prisonerReachedLock = false
20hangarReached = false
[4080]21guardStopped = false
[4106]22letsgo = false
[3945]23
[4080]24height = 90
[3946]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
[3951]32function observeGuard()
33guardX = guard:getAbsCoorX()
34guardY = guard:getAbsCoorY()
35guardZ = guard:getAbsCoorZ()
36
[3965]37if dist( guardX,guardY,guardZ,35.48, 29, 191.28 ) < 30 then
[3945]38allOk = false
39end
40
[3951]41end
42
[4080]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
[4161]65if dist( playerX,playerY,playerZ,161.76,49,408.87 ) < 50  then
[4106]66letsgo = true
[4080]67end
68
[4106]69end
[4080]70
71
[4106]72
[3946]73function observePrisoner()
[3945]74
[3962]75prisonerX = prisoner:getAbsCoorX()
76prisonerY = prisoner:getAbsCoorY()
77prisonerZ = prisoner:getAbsCoorZ()
[3946]78
[3964]79if dist( prisonerX,prisonerY,prisonerZ,162.757919,49,363.489349 ) < 60 then
[3965]80--io.write("Prisonner reached lock \n")
81prisonerReachedLock = true
[3945]82end
83
[3951]84end
[3945]85
[3954]86cellProgrammed = false
[3951]87function goToCell(timestep)
88
[3954]89if not cellProgrammed then
[3964]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)
[3954]137cellProgrammed = true
138end
139
140if secondguard:finalGoalReached() then
141return true
142end
143
[3945]144return false
145end
146
[3954]147guideProgrammed = false
[3945]148function goToGuidePosition(timestep)
149
[3954]150if not guideProgrammed then
[3964]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)
[3954]188
189guideProgrammed = true
190end
191
192if secondguard:finalGoalReached() then
193return true
194end
195
[3945]196return false
197end
198
[3954]199hangarProgrammed = false
[3945]200function goToHangar(timestep)
201
[4106]202if not hangarProgrammed and prisonerReachedLock and letsgo then
[4080]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)
[3954]291hangarProgrammed = true
292end
293
[3965]294guardX = secondguard:getAbsCoorX()
295guardY = secondguard:getAbsCoorY()
296guardZ = secondguard:getAbsCoorZ()
297
298if dist( guardX,guardY,guardZ, 2.861493, 29, -1705.131958) < 60 then
[3954]299return true
300end
301
[3945]302return false
[3954]303
[3945]304end
305
[3965]306time = 2
[3945]307function tick(timestep)
[3946]308--io.write("Secondguard called \n")
309 
310observePrisoner()
[3964]311observeGuard()
[4080]312observePlayer()
[3945]313
314if not allOk then
[3951]315cellReached = goToCell(timestep)
[3945]316end
317
[3965]318--do talking
319if cellReached then
320time = time - timestep
321end
322
323
324if time < 0 then
325
[3951]326if cellReached and not guidePositionReached then
[3945]327guidePositionReached = goToGuidePosition(timestep)
328end
329
[3964]330if guidePositionReached and not hangarReached then
[3945]331hangarReached = goToHangar(timestep)
332end
333
334if hangarReached then
335return true
336end
337
[3965]338
339end
340
341
[3945]342return false
343end
Note: See TracBrowser for help on using the repository browser.