cellDoorOpened = false walkinCellFinished = false cellExitReached = false exitReached = false hangarReached = false spaceShipReached = false spaceShipEntered = false playerInLock = false randTime = 0 function observeGuard() guardX = guard:getAbsCoorX() guardY = guard:getAbsCoorY() guardZ = guard:getAbsCoorZ() if dist( guardX,guardY,guardZ,35.48, 29, 191.28 ) < 60 then cellDoorOpened = true end end function observePlayer() playerX = Player:getAbsCoorX() playerY = Player:getAbsCoorY() playerZ = Player:getAbsCoorZ() if dist( playerX,playerY,playerZ,161.76,49,358.87 ) < 60 then playerInLock = true end walkProgrammed = false exitProgrammed = false function walkInCell(timestep) if not walkProgrammed then --io.write("Guard called \n") prisoner:walkTo(-132, 29, 238.381805) prisoner:walkTo(-138.41, 29, 275.25) prisoner:walkTo(-143.70, 29, 275.35) prisoner:walkTo(-149.10, 29, 226.66) prisoner:walkTo(-149.10, 29, 196.83) prisoner:walkTo(-145.82, 29, 189.74) prisoner:walkTo(-138.48, 29, 184.28) prisoner:walkTo(35.48, 29, 191.28) prisoner:runTo(102, 29, 203.28) prisoner:runTo(164, 29, 245.28) walkProgrammed = true end if cellDoorOpened then if randTime == 0 then randTime = 30 * math.random() else randTime = randTime - timestep end if randTime < 0 then -- goto cellexit if not exitProgrammed then prisoner:walkTo(-132, 29, 238.381805) prisoner:walkTo(-138.41, 29, 275.25) prisoner:walkTo(-143.70, 29, 275.35) prisoner:walkTo(-149.10, 29, 226.66) prisoner:walkTo(-149.10, 29, 196.83) prisoner:walkTo(-145.82, 29, 189.74) prisoner:walkTo(-138.48, 29, 184.28) prisoner:walkTo(35.48, 29, 191.28) prisoner:runTo(102, 29, 203.28) prisoner:runTo(164, 29, 245.28) exitProgrammed = true end if guard:finalGoalReached() then return true end end return false end return false end gotoExitProgrammed = false function goToExit(timestep) -- do not forget to make him wait until the player triggeres the trip to the hangar if not gotoExitProgrammed and playerInLock then prisoner:walkTo(-132, 29, 238.381805) prisoner:walkTo(-138.41, 29, 275.25) prisoner:walkTo(-143.70, 29, 275.35) prisoner:walkTo(-149.10, 29, 226.66) prisoner:walkTo(-149.10, 29, 196.83) prisoner:walkTo(-145.82, 29, 189.74) prisoner:walkTo(-138.48, 29, 184.28) prisoner:walkTo(35.48, 29, 191.28) prisoner:runTo(102, 29, 203.28) prisoner:runTo(164, 29, 245.28) gotoExitProgrammed = true end if prisoner:finalGoalReached() then return true end return false end hangarRouteProgrammed = false function goToHangar(timestep) if not hangarRouteProgrammed then prisoner:walkTo(-132, 29, 238.381805) prisoner:walkTo(-138.41, 29, 275.25) prisoner:walkTo(-143.70, 29, 275.35) prisoner:walkTo(-149.10, 29, 226.66) prisoner:walkTo(-149.10, 29, 196.83) prisoner:walkTo(-145.82, 29, 189.74) prisoner:walkTo(-138.48, 29, 184.28) prisoner:walkTo(35.48, 29, 191.28) prisoner:runTo(102, 29, 203.28) prisoner:runTo(164, 29, 245.28) hangarRouteProgrammed = true end if prisoner:finalGoalReached() then return true end return false end spaceshipRouteProgrammed = false function goToSpaceship(timestep) if not spaceshipRouteProgrammed then prisoner:walkTo(-132, 29, 238.381805) prisoner:walkTo(-138.41, 29, 275.25) prisoner:walkTo(-143.70, 29, 275.35) prisoner:walkTo(-149.10, 29, 226.66) prisoner:walkTo(-149.10, 29, 196.83) prisoner:walkTo(-145.82, 29, 189.74) prisoner:walkTo(-138.48, 29, 184.28) prisoner:walkTo(35.48, 29, 191.28) prisoner:runTo(102, 29, 203.28) prisoner:runTo(164, 29, 245.28) spaceshipRouteProgrammed = true end if prisoner:finalGoalReached() then return true end return false end function enterSpaceship(timestep) return false end function tick(timestep) --io.write("Prisoner called \n") observeGuard() observePlayer() if not cellDoorOpend then walkinCellFinished = walkInCell(timestep) end if walkinCellFinished and not exitReached then exitReached = goToExit(timestep) end if exitReached and not hangarReached then hangarReached = goToHangar(timestep) end if hangarReached and not spaceShipReached then spaceShipReached = goToSpaceship(timestep) end if spaceShipReached and not spaceShipEntered then spaceShipEntered = enterSpaceship(timestep) end if spaceShipEntered then return true end return false end