- if (*cp == 'M' ||
- *cp == 'B' || *cp == 'f' || *cp == 'i' || *cp == 'm') {
- ++cp;
- if (cp[-1] == 'M') {
- unit_map(EF_SHIP, shp->shp_uid, &ns, &origin);
- draw_map(0, origin, MAP_SHIP, &ns);
- skip = 1;
- } else if (cp[-1] == 'B') {
- unit_map(EF_SHIP, shp->shp_uid, &ns, &origin);
- draw_map('b', origin, MAP_SHIP, &ns);
- skip = 1;
- } else if (cp[-1] == 'f') {
+ }
+ dir = chkdir(*cp, DIR_STOP, DIR_VIEW);
+ if (dir >= 0) {
+ if (dir == DIR_VIEW)
+ shp_view(&ship_list);
+ else {
+ stopping |= shp_nav_one_sector(&ship_list, dir, player->cnum, together);
+ if (stopping != 2) {
+ *pt++ = dirch[dir];
+ *pt = '\0';
+ }
+ }
+ cp++;
+ continue;
+ }
+ ac = parse(cp, player->argp, NULL, scanspace, NULL);
+ if (ac <= 1) {
+ sprintf(dp, "%d", shp->shp_uid);
+ player->argp[1] = dp;
+ cp++;
+ } else
+ cp = NULL;
+ bmap_flag = 0;
+ switch (*player->argp[0]) {
+ case 'B':
+ bmap_flag = 'b';
+ /*
+ * fall through
+ */
+ case 'M':
+ unit_map(EF_SHIP, shp->shp_uid, &ns, &origin);
+ draw_map(bmap_flag, origin, MAP_SHIP, &ns);
+ skip = 1;
+ break;
+ case 'f':
+ {