| 1 | -- Global Variables |
|---|
| 2 | walkingRouteOne = true -- True if thestranger is walking route one |
|---|
| 3 | exitPositionReached = false |
|---|
| 4 | playerInLock = false |
|---|
| 5 | hangarReached = false |
|---|
| 6 | |
|---|
| 7 | -- Returns the distance between (x1,x2,x3) and (y1,y2,y3) |
|---|
| 8 | function dist( x1,x2,x3, y1,y2,y3 ) |
|---|
| 9 | return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 ) |
|---|
| 10 | end |
|---|
| 11 | |
|---|
| 12 | |
|---|
| 13 | function observePlayer() |
|---|
| 14 | playerX = Player:getAbsCoorX() |
|---|
| 15 | playerY = Player:getAbsCoorY() |
|---|
| 16 | playerZ = Player:getAbsCoorZ() |
|---|
| 17 | |
|---|
| 18 | if dist( playerX,playerY,playerZ,161.76,49,358.87 ) < 60 then |
|---|
| 19 | playerInLock = true |
|---|
| 20 | end |
|---|
| 21 | |
|---|
| 22 | end |
|---|
| 23 | |
|---|
| 24 | routeOneProgrammed = false |
|---|
| 25 | function walkRouteOne(timestep) |
|---|
| 26 | |
|---|
| 27 | if not routeOneProgrammed then |
|---|
| 28 | --io.write("Guard called \n") |
|---|
| 29 | guard:walkTo(-132, 29, 238.381805) |
|---|
| 30 | guard:walkTo(-138.41, 29, 275.25) |
|---|
| 31 | guard:walkTo(-143.70, 29, 275.35) |
|---|
| 32 | guard:walkTo(-149.10, 29, 226.66) |
|---|
| 33 | guard:walkTo(-149.10, 29, 196.83) |
|---|
| 34 | guard:walkTo(-145.82, 29, 189.74) |
|---|
| 35 | guard:walkTo(-138.48, 29, 184.28) |
|---|
| 36 | guard:walkTo(35.48, 29, 191.28) |
|---|
| 37 | guard:runTo(102, 29, 203.28) |
|---|
| 38 | guard:runTo(164, 29, 245.28) |
|---|
| 39 | |
|---|
| 40 | routeOneProgrammed = true |
|---|
| 41 | end |
|---|
| 42 | |
|---|
| 43 | if guard:finalGoalReached() then |
|---|
| 44 | return false |
|---|
| 45 | end |
|---|
| 46 | |
|---|
| 47 | return true |
|---|
| 48 | end |
|---|
| 49 | |
|---|
| 50 | |
|---|
| 51 | exitRouteProgrammed = false |
|---|
| 52 | function goToExitPosition(timestep) |
|---|
| 53 | |
|---|
| 54 | if not exitRouteProgrammed then |
|---|
| 55 | guard:walkTo(-132, 29, 238.381805) |
|---|
| 56 | guard:walkTo(-138.41, 29, 275.25) |
|---|
| 57 | guard:walkTo(-143.70, 29, 275.35) |
|---|
| 58 | guard:walkTo(-149.10, 29, 226.66) |
|---|
| 59 | guard:walkTo(-149.10, 29, 196.83) |
|---|
| 60 | guard:walkTo(-145.82, 29, 189.74) |
|---|
| 61 | guard:walkTo(-138.48, 29, 184.28) |
|---|
| 62 | guard:walkTo(35.48, 29, 191.28) |
|---|
| 63 | guard:runTo(102, 29, 203.28) |
|---|
| 64 | guard:runTo(164, 29, 245.28) |
|---|
| 65 | |
|---|
| 66 | exitRouteProgrammed = true |
|---|
| 67 | end |
|---|
| 68 | |
|---|
| 69 | if guard:finalGoalReached() and playerInLock then |
|---|
| 70 | return true |
|---|
| 71 | end |
|---|
| 72 | |
|---|
| 73 | return false |
|---|
| 74 | end |
|---|
| 75 | |
|---|
| 76 | |
|---|
| 77 | hangarRouteProgrammed = false |
|---|
| 78 | function goToHangar(timestep) |
|---|
| 79 | |
|---|
| 80 | if not hangarRouteProgrammed then |
|---|
| 81 | guard:walkTo(-132, 29, 238.381805) |
|---|
| 82 | guard:walkTo(-138.41, 29, 275.25) |
|---|
| 83 | guard:walkTo(-143.70, 29, 275.35) |
|---|
| 84 | guard:walkTo(-149.10, 29, 226.66) |
|---|
| 85 | guard:walkTo(-149.10, 29, 196.83) |
|---|
| 86 | guard:walkTo(-145.82, 29, 189.74) |
|---|
| 87 | guard:walkTo(-138.48, 29, 184.28) |
|---|
| 88 | guard:walkTo(35.48, 29, 191.28) |
|---|
| 89 | guard:runTo(102, 29, 203.28) |
|---|
| 90 | guard:runTo(164, 29, 245.28) |
|---|
| 91 | |
|---|
| 92 | hangarRouteProgrammed = true |
|---|
| 93 | end |
|---|
| 94 | |
|---|
| 95 | if guard:finalGoalReached() then |
|---|
| 96 | return true |
|---|
| 97 | end |
|---|
| 98 | |
|---|
| 99 | return false |
|---|
| 100 | end |
|---|
| 101 | |
|---|
| 102 | |
|---|
| 103 | function waveToSpaceship(timestep) |
|---|
| 104 | |
|---|
| 105 | end |
|---|
| 106 | |
|---|
| 107 | |
|---|
| 108 | function tick(timestep) |
|---|
| 109 | --io.write("Guard called \n") |
|---|
| 110 | observePlayer() |
|---|
| 111 | |
|---|
| 112 | if walkingRouteOne then |
|---|
| 113 | walkingRouteOne = walkRouteOne(timestep) |
|---|
| 114 | end |
|---|
| 115 | |
|---|
| 116 | if not walkingRouteOne and not exitPositionReached then |
|---|
| 117 | exitPositionReached = goToExitPosition(timestep) |
|---|
| 118 | end |
|---|
| 119 | |
|---|
| 120 | if playerInLock and exitPositionReached then |
|---|
| 121 | hangarReached = goToHangar(timestep) |
|---|
| 122 | end |
|---|
| 123 | |
|---|
| 124 | if hangarReached then |
|---|
| 125 | waveToSpaceship(timestep) |
|---|
| 126 | end |
|---|
| 127 | |
|---|
| 128 | return false |
|---|
| 129 | end |
|---|
| 130 | |
|---|