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