Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: data/trunk/scripts/ambush_at_uranus/guard.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: 10.9 KB
RevLine 
[4202]1-- Create the trigger
2trigger = ScriptTrigger()
3trigger:setName("guardtrigger")
4trigger:setScript("guard.lua")
5trigger:setFunction("tick")
6trigger:setActiveOnCreation(true)
7
[4080]8-- Get objects from orxonox
9thisscript:addObject("GenericNPC","guard")
10thisscript:addObject("FPSPlayer", "Player")
11
[3945]12-- Global Variables
[3947]13walkingRouteOne = true   -- True if thestranger is walking route one
[3945]14exitPositionReached = false
15playerInLock = false
16hangarReached = false
[4080]17guardStopped = false
[4151]18gotoSpaceship = false
[3945]19
[4080]20height = 34
[3962]21
[3946]22-- Returns the distance between (x1,x2,x3) and (y1,y2,y3)
23function dist( x1,x2,x3, y1,y2,y3 )
24return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 )
25end
26
[3945]27
[3946]28function observePlayer()
[4080]29
30guardX = guard:getAbsCoorX()
31guardY = guard:getAbsCoorY()
32guardZ = guard:getAbsCoorZ()
33
[3946]34playerX = Player:getAbsCoorX()
35playerY = Player:getAbsCoorY()
36playerZ = Player:getAbsCoorZ()
37
[4080]38
39distance = dist( guardX,guardY,guardZ,playerX, playerY, playerZ)
40
[4151]41if distance > 250 and hangarRouteProgrammed and not guardStopped and not gotoSpaceship then
[4080]42 guard:stop()
43 guardStopped = true
44end
45
[4151]46if distance < 250 and hangarRouteProgrammed and guardStopped and not gotoSpaceship then
[4080]47 guard:resume()
48 guardStopped = false
49end
50
[4161]51if dist( playerX,playerY,playerZ,167.361526,29,483.163818 ) < 150 then
[3947]52playerInLock = true
[3945]53end
54
[4151]55if dist( guardX,guardY,guardZ,772.325012, height, -1500.850708) < 200 then
56gotoSpaceship = true
[3947]57end
58
[4151]59
60end
61
[3947]62routeOneProgrammed = false
[3945]63function walkRouteOne(timestep)
[3947]64if not routeOneProgrammed then
[3964]65guard:walkTo( 266.396362, height, 241.398544)
66guard:walkTo( 254.577255, height, 241.159897)
67guard:walkTo( 221.120651, height, 240.484360)
68guard:walkTo( 187.732651, height, 239.810196)
69guard:walkTo( 165.661865, height, 239.364563)
70guard:walkTo( 148.642044, height, 239.020889)
71guard:walkTo( 128.012802, height, 238.604340)
72guard:walkTo( 65.664688, height, 237.345383)
73guard:walkTo( 30.099592, height, 236.627243)
74guard:walkTo( -14.031926, height, 236.483414)
75guard:walkTo( -52.224205, height, 241.776978)
76guard:walkTo( -83.528168, height, 245.757629)
77guard:walkTo( -98.730980, height, 247.394043)
78guard:walkTo( -111.666504, height, 246.585648)
79guard:walkTo( -111.666504, height, 246.585648)
80guard:walkTo( -114.805542, height, 246.144440)
81guard:walkTo( -119.267967, height, 245.360168)
82guard:walkTo( -138.284515, height, 239.281021)
83guard:walkTo( -146.166840, height, 234.512054)
84guard:walkTo( -157.210480, height, 222.620941)
85guard:walkTo( -158.519867, height, 219.674301)
86guard:walkTo( -158.519867, height, 219.674301)
87guard:walkTo( -158.478958, height, 213.490570)
88guard:walkTo( -158.478958, height, 213.490570)
89guard:walkTo( -155.965332, height, 210.303101)
90guard:walkTo( -150.804489, height, 203.959869)
91guard:walkTo( -148.853012, height, 201.561295)
92guard:walkTo( -145.451157, height, 197.554382)
93guard:walkTo( -143.694107, height, 196.373535)
94guard:walkTo( -139.281479, height, 193.407990)
95guard:walkTo( -137.526047, height, 192.228226)
96guard:walkTo( -103.046753, height, 182.510071)
[3965]97guard:runTo( -14.992087, height, 181.910767)
98guard:runTo( 46.347664, height, 181.493317)
99guard:runTo( 86.343376, height, 181.221130)
100guard:runTo( 124.465179, height, 194.251617)
101guard:runTo( 136.548996, height, 219.682953)
102guard:runTo( 145.162140, height, 244.268982)
103guard:runTo( 149.328720, height, 256.993256)
104guard:runTo( 162.649582, height, 268.181732)
[3951]105
[3947]106routeOneProgrammed = true
107end
[3945]108
[3951]109if guard:finalGoalReached() then
110return false
[3945]111end
112
[3951]113return true
114end
115
116
117exitRouteProgrammed = false
[3945]118function goToExitPosition(timestep)
119
[3951]120if not exitRouteProgrammed then
[4080]121--guard:runTo( 162.096558, height, 274.944366)
122--guard:runTo( 161.519516, height, 286.673370)
123--guard:runTo( 161.098618, height, 295.228699)
124--guard:runTo( 160.568466, height, 306.004486)
125guard:runTo( 160.151169, height, 314.486572)
126guard:runTo( 159.416641, height, 324.925232)
[3962]127guard:walkTo( 158.700073, height, 335.108154)
128guard:walkTo( 157.943298, height, 345.862610)
129guard:walkTo( 157.418381, height, 356.131256)
130guard:walkTo( 156.908035, height, 366.115417)
131guard:walkTo( 156.940308, height, 377.467712)
132guard:walkTo( 156.965408, height, 386.287933)
133guard:walkTo( 156.924698, height, 394.296417)
134guard:walkTo( 156.816116, height, 401.564911)
135guard:walkTo( 156.147583, height, 446.314850)
136guard:walkTo( 155.145660, height, 515.473877)
137guard:walkTo( 148.450058, height, 524.572571)
138guard:walkTo( 135.599609, height, 533.407166)
139guard:walkTo( 119.772217, height, 539.609192)
140guard:walkTo( 108.926720, height, 537.174927)
141guard:walkTo( 100.885788, height, 524.737793)
142guard:walkTo( 99.870834, height, 512.540100)
143guard:walkTo( 108.219215, height, 502.064178)
144
[3951]145exitRouteProgrammed = true
146end
147
148if guard:finalGoalReached() and playerInLock then
149return true
150end
151
[3945]152return false
153end
154
155
[3951]156hangarRouteProgrammed = false
[3945]157function goToHangar(timestep)
158
[3964]159if not hangarRouteProgrammed and playerInLock then
[4080]160
161guard:walkTo( 133.354797, height, 504.669128)
162guard:walkTo( 147.490158, height, 507.034393)
163guard:walkTo( 157.640610, height, 508.901001)
164guard:walkTo( 168.830688, height, 510.958710)
165guard:walkTo( 185.020630, height, 512.736206)
166guard:walkTo( 201.232452, height, 513.413818)
167guard:walkTo( 265.666138, height, 513.736023)
168guard:walkTo( 362.377960, height, 515.575806)
169guard:walkTo( 426.176392, height, 515.666748)
170guard:walkTo( 500.031677, height, 515.197266)
171guard:walkTo( 551.294250, height, 514.430237)
172guard:walkTo( 604.974731, height, 515.106323)
173guard:walkTo( 651.117920, height, 516.026550)
174guard:walkTo( 664.581909, height, 516.295227)
175guard:walkTo( 683.122803, height, 516.665100)
176guard:walkTo( 694.547485, height, 516.892944)
177guard:walkTo( 704.408569, height, 517.089539)
178guard:walkTo( 714.413208, height, 517.289185)
179guard:walkTo( 739.045288, height, 515.581970)
180guard:walkTo( 763.904541, height, 497.281738)
181guard:walkTo( 767.672791, height, 481.974457)
182guard:walkTo( 769.436951, height, 468.704559)
183guard:walkTo( 770.490967, height, 453.283386)
184guard:walkTo( 771.185303, height, 435.960114)
185guard:walkTo( 771.952820, height, 379.502045)
186guard:walkTo( 771.938293, height, 310.049042)
187guard:walkTo( 772.514526, height, 231.579498)
188guard:walkTo( 773.601074, height, 135.177933)
189guard:walkTo( 773.790771, height, 50.675163)
190guard:walkTo( 773.316162, height, -36.961666)
191guard:walkTo( 772.885986, height, -116.407944)
192guard:walkTo( 772.841309, height, -124.651726)
193guard:walkTo( 772.491333, height, -137.742279)
194guard:walkTo( 770.644775, height, -153.245926)
195guard:walkTo( 768.774414, height, -163.767120)
196guard:walkTo( 766.336426, height, -174.224228)
197guard:walkTo( 762.794128, height, -187.312271)
198guard:walkTo( 733.548279, height, -274.004791)
199guard:walkTo( 713.113647, height, -329.657959)
200guard:walkTo( 694.801819, height, -379.530243)
201guard:walkTo( 681.276062, height, -422.047028)
202guard:walkTo( 672.579102, height, -458.540985)
203guard:walkTo( 670.843384, height, -465.824615)
204guard:walkTo( 669.948364, height, -480.910645)
205guard:walkTo( 669.361511, height, -493.648529)
206guard:walkTo( 669.686829, height, -501.598572)
207guard:walkTo( 674.055664, height, -582.077637)
208guard:walkTo( 676.046387, height, -630.403809)
209guard:walkTo( 677.839050, height, -674.209534)
210guard:walkTo( 680.754944, height, -765.965515)
211guard:walkTo( 681.034180, height, -803.351135)
212guard:walkTo( 680.088806, height, -844.069031)
213guard:walkTo( 677.801514, height, -899.952148)
214guard:walkTo( 675.205627, height, -950.496460)
215guard:walkTo( 672.847778, height, -996.413574)
216guard:walkTo( 676.204041, height, -1043.556274)
217guard:walkTo( 691.304382, height, -1088.596558)
218guard:walkTo( 705.101318, height, -1128.320312)
219guard:walkTo( 720.476013, height, -1164.364380)
220guard:walkTo( 729.216797, height, -1183.948364)
221guard:walkTo( 740.145203, height, -1212.598267)
222guard:walkTo( 746.547363, height, -1238.340576)
223guard:walkTo( 756.866211, height, -1280.605347)
224guard:walkTo( 763.380554, height, -1314.622314)
225guard:walkTo( 768.731506, height, -1347.977539)
226guard:walkTo( 772.446655, height, -1381.641479)
227guard:walkTo( 772.721069, height, -1421.184937)
228guard:walkTo( 772.414734, height, -1457.349121)
229guard:walkTo( 772.803284, height, -1489.560913)
230
[4100]231guard:walkTo( 772.325012, height, -1500.850708)
232guard:walkTo( 772.325012, height, -1500.850708)
233guard:walkTo( 772.487854, height, -1508.028809)
234guard:walkTo( 774.761047, height, -1519.442139)
235guard:walkTo( 778.809204, height, -1525.292847)
236guard:walkTo( 783.482666, height, -1530.000610)
237guard:walkTo( 790.163269, height, -1536.350708)
238guard:walkTo( 797.713745, height, -1542.968018)
239guard:walkTo( 804.024475, height, -1548.390503)
240guard:walkTo( 810.316406, height, -1553.796875)
241guard:walkTo( 819.849731, height, -1561.323242)
242guard:walkTo( 826.676819, height, -1566.627197)
243guard:walkTo( 833.950928, height, -1572.278442)
244guard:walkTo( 840.587036, height, -1577.434082)
245guard:walkTo( 847.261230, height, -1582.458252)
246guard:walkTo( 852.104797, height, -1586.104370)
247guard:walkTo( 857.504944, height, -1590.169556)
248guard:walkTo( 861.696411, height, -1593.324829)
249guard:walkTo( 867.690613, height, -1597.837036)
250guard:walkTo( 874.808105, height, -1604.437378)
251guard:walkTo( 878.302429, height, -1608.333252)
252guard:walkTo( 884.001892, height, -1614.366211)
253guard:walkTo( 890.699646, height, -1621.398315)
254guard:walkTo( 895.391052, height, -1626.179688)
255guard:walkTo( 902.171509, height, -1633.090332)
256guard:walkTo( 906.807495, height, -1637.957764)
257guard:walkTo( 910.438599, height, -1641.770142)
258guard:walkTo( 915.626160, height, -1647.216797)
259guard:walkTo( 921.844727, height, -1653.745972)
260guard:walkTo( 928.565125, height, -1660.801636)
261guard:walkTo( 933.742004, height, -1666.236694)
262guard:walkTo( 938.956543, height, -1671.711182)
263guard:walkTo( 942.160706, height, -1675.745972)
264guard:walkTo( 947.547302, height, -1681.952881)
265guard:walkTo( 951.732483, height, -1687.077759)
266guard:walkTo( 957.284851, height, -1693.876709)
267guard:walkTo( 962.786438, height, -1700.614990)
268guard:walkTo( 966.177246, height, -1705.151245)
269guard:walkTo( 970.221619, height, -1710.886230)
270guard:walkTo( 974.503113, height, -1717.243896)
271guard:walkTo( 977.332153, height, -1722.064087)
272guard:walkTo( 981.496887, height, -1729.391357)
273guard:walkTo( 986.814148, height, -1738.394165)
274guard:walkTo( 991.428650, height, -1745.393799)
275guard:walkTo( 998.958069, height, -1755.184326)
276guard:walkTo( 1003.995300, height, -1761.734131)
277guard:walkTo( 1009.006226, height, -1768.234375)
278guard:walkTo( 1013.550842, height, -1773.405029)
279guard:walkTo( 1019.371277, height, -1778.674072)
280guard:walkTo( 1024.703491, height, -1782.708618)
281guard:walkTo( 1030.605469, height, -1787.173950)
282guard:walkTo( 1036.072876, height, -1790.982056)
283guard:walkTo( 1043.746094, height, -1795.485474)
284guard:walkTo( 1050.884644, height, -1799.663574)
[3951]285hangarRouteProgrammed  = true
286end
287
[4106]288if guard:finalGoalReached() and not guardStopped then
[3951]289return true
290end
291
[3945]292return false
293end
294
295
[4151]296
[3945]297function tick(timestep)
[3946]298--io.write("Guard called \n")
299observePlayer()
[3945]300
[4151]301
[3945]302if walkingRouteOne then
[3951]303walkingRouteOne = walkRouteOne(timestep)
[3945]304end
305
306if not walkingRouteOne and not exitPositionReached then
307exitPositionReached = goToExitPosition(timestep)
308end
309
[3964]310if not hangarReached and exitPositionReached then
[3945]311hangarReached = goToHangar(timestep)
312end
313
[4100]314return hangarReached
[3945]315end
316 
Note: See TracBrowser for help on using the repository browser.