+
+/*
+ * Things past this point have policy implications.
+ */
+
+void drawmaps(short l)
+/* hook to be called after moving to redraw maps */
+{
+ if (curses) {
+ if (l == 1)
+ sensor();
+ if (l != 2) {
+ setwnd(srscan_window);
+ wmove(curwnd, 0, 0);
+ enqueue("no");
+ srscan(SCAN_FULL);
+ setwnd(report_window);
+ wclear(report_window);
+ wmove(report_window, 0, 0);
+ srscan(SCAN_NO_LEFTSIDE);
+ setwnd(lrscan_window);
+ wclear(lrscan_window);
+ wmove(lrscan_window, 0, 0);
+ enqueue("l");
+ lrscan();
+ }
+ }
+}
+
+void boom(int ii, int jj)
+/* enemy fall down, go boom */
+{
+ if (curses) {
+ setwnd(srscan_window);
+ drawmaps(2);
+ wmove(srscan_window, ii*2+3, jj+2);
+ wattron(srscan_window, A_REVERSE);
+ waddch(srscan_window, game.quad[ii][jj]);
+ wrefresh(srscan_window);
+ sound(500);
+ delay(1000);
+ nosound();
+ wmove(srscan_window, ii*2+3, jj+2);
+ wattroff(srscan_window, A_REVERSE);
+ waddch(srscan_window, game.quad[ii][jj]);
+ wrefresh(srscan_window);
+ setwnd(message_window);
+ delay(500);
+ }
+}
+
+void warble(void)
+/* sound and visual effects for teleportation */
+{
+ if (curses) {
+ drawmaps(1);
+ setwnd(message_window);
+ sound(50);
+ delay(1000);
+ nosound();
+ } else
+ prouts(" . . . . . ");
+}
+
+void tracktorpedo(int x, int y, int ix, int iy, int wait, int l, int i, int n, int iquad)
+/* torpedo-track animation */
+{
+ if (!curses) {
+ if (l == 1) {
+ if (n != 1) {
+ skip(1);
+ proutn("Track for torpedo number %d- ", i);
+ }
+ else {
+ skip(1);
+ proutn("Torpedo track- ");
+ }
+ } else if (l==4 || l==9)
+ skip(1);
+ proutn("%d - %d ", (int)x, (int)y);
+ } else {
+ if (game.damage[DSRSENS]==0 || condit==IHDOCKED) {
+ drawmaps(2);
+ delay((wait!=1)*400);
+ if ((game.quad[ix][iy]==IHDOT)||(game.quad[ix][iy]==IHBLANK)){
+ game.quad[ix][iy]='+';
+ drawmaps(2);
+ game.quad[ix][iy]=iquad;
+ sound(l*10);
+ delay(100);
+ nosound();
+ }
+ else {
+ game.quad[ix][iy] |= DAMAGED;
+ drawmaps(2);
+ game.quad[ix][iy]=iquad;
+ sound(500);
+ delay(1000);
+ nosound();
+ wattroff(curwnd, A_REVERSE);
+ }
+ } else {
+ proutn("%d - %d ", (int)x, (int)y);
+ }
+ }
+}
+
+void makechart(void)
+{
+ if (curses) {
+ setwnd(message_window);
+ wclear(message_window);
+ chart(0);
+ }
+}
+
+void setpassword(void)
+{
+ if (!curses) {
+ while (TRUE) {
+ scan();
+ strcpy(game.passwd, citem);
+ chew();
+ if (*game.passwd != 0) break;
+ proutn("Please type in a secret password-");
+ }
+ } else {
+ int i;
+ for(i=0;i<3;i++) game.passwd[i]=(char)(97+(int)(Rand()*25));
+ game.passwd[3]=0;
+ }
+}
+