Do Thingy as Dave suggests, not retained in saved games.
[super-star-trek.git] / sst.h
diff --git a/sst.h b/sst.h
index 0cb66ceccfae6e26d1d9efa7ea20b1399c3ba4eb..64dd1bc9845c36c61ed8d844fdd1e1d824748433 100644 (file)
--- a/sst.h
+++ b/sst.h
@@ -58,6 +58,43 @@ typedef struct {
            remtime;            // remaining time
 } snapshot;                            // Data that is snapshot
 
+/*
+ * This is how the integers in the galaxy array are encoded.
+ * Someday these should turn into structure fields.
+ */
+#define SUPERNOVA_PLACE        1000
+#define KLINGON_PLACE  100
+#define BASE_PLACE     10
+#define STAR_PLACE     1
+#define KLINGONS(n)    ((n)/KLINGON_PLACE)
+#define BASES(n)       (((n)%KLINGON_PLACE)/BASE_PLACE)
+#define STARS(n)       ((n)%BASE_PLACE)
+#define NOEXIT(s)      ((s) > 899)     /* supernova or >8 Klingons */
+
+/* for newstuff */
+#define ROMULAN_PLACE  10
+#define ROMULANS(n)    ((n)/ROMULAN_PLACE)
+
+/* for starch */
+#define CHART_UNKNOWN  -1
+
+#define SKILL_NONE     0
+#define SKILL_NOVICE   1
+#define SKILL_FAIR     2
+#define SKILL_GOOD     3
+#define SKILL_EXPERT   4
+#define SKILL_EMERITUS 5
+
+/* game options */
+#define OPTION_ALL     0xffffffff
+#define OPTION_TTY     0x00000001      /* old interface */
+#define OPTION_CURSES  0x00000002      /* new interface */
+#define OPTION_IOMODES 0x00000003      /* cover both interfaces */
+#define OPTION_PLANETS 0x00000004      /* planets and mining */
+#define OPTION_THOLIAN 0x00000008      /* Tholians and their webs */
+#define OPTION_THINGY  0x00000010      /* Space Thingy can shoot back */
+#define OPTION_PROBE   0x00000020      /* deep-space probes */
+
 // Scalar variables that are needed for freezing the game
 // are placed in a structure. #defines are used to access by their
 // original names. Gee, I could have done this with the d structure,
@@ -69,6 +106,7 @@ EXTERN WINDOW *curwnd;
 
 EXTERN struct {
     char magic[sizeof(SSTMAGIC)];
+    unsigned long options;
     snapshot state;
     snapshot snapsht;
     char quad[QUADSIZE+1][QUADSIZE+1];         // contents of our quadrant
@@ -109,8 +147,6 @@ EXTERN struct {
        justin,
        alldone,
        shldchg,
-       thingx,
-       thingy,
        plnetx,
        plnety,
        inorbit,
@@ -137,8 +173,6 @@ EXTERN struct {
        batx,
        baty,
        ithere,
-        iqhere,
-        iqengry,
        ithx,
        ithy,
        iseenit,
@@ -200,8 +234,6 @@ EXTERN struct {
 #define justin game.justin                     // just entered quadrant
 #define alldone game.alldone           // game is now finished
 #define shldchg game.shldchg           // shield is changing (affects efficiency)
-#define thingx game.thingx                     // location of strange object in galaxy
-#define thingy game.thingy                     //
 #define plnetx game.plnetx                     // location of planet in quadrant
 #define plnety game.plnety                     //
 #define inorbit game.inorbit           // orbiting
@@ -213,8 +245,6 @@ EXTERN struct {
 #define ishere game.ishere                     // Super-commander in quandrant
 #define neutz game.neutz                       // Romulan Neutral Zone
 #define irhere game.irhere                     // Romulans in quadrant
-#define iqhere game.iqhere                     // Thing in quadrant
-#define iqengry game.iqengry                   // Thing attacking
 #define icraft game.icraft                     // Kirk in Galileo
 #define ientesc game.ientesc           // Attempted escape from supercommander
 #define iscraft game.iscraft           // =1 if craft on ship, -1 if removed from game
@@ -270,6 +300,9 @@ EXTERN double perdate;
 EXTERN double aaitem;
 EXTERN char citem[10];
 
+/* the Space Thingy's global state should *not* be saved! */
+EXTERN int thingx, thingy, iqhere, iqengry;
+
 typedef enum {FWON, FDEPLETE, FLIFESUP, FNRG, FBATTLE,
               FNEG3, FNOVA, FSNOVAED, FABANDN, FDILITHIUM,
                          FMATERIALIZE, FPHASER, FLOST, FMINING, FDPLANET,
@@ -402,8 +435,7 @@ void crmshp(void);
 char *cramlc(enum loctype, int, int);
 double expran(double);
 double Rand(void);
-void iran8(int *, int *);
-void iran10(int *, int *);
+void iran(int, int *, int *);
 #define square(i) ((i)*(i))
 void dropin(int, int*, int*);
 void newcnd(void);
@@ -425,7 +457,7 @@ void prouts(char *, ...);
 int isit(char *);
 void preport(void);
 void orbit(void);
-void sensor(void);
+void sensor(int);
 void drawmaps(short);
 void beam(void);
 void mine(void);
@@ -436,7 +468,7 @@ void debugme(void);
 void attakreport(int);
 void movetho(void);
 void probe(void);
-void iostart(int);
+void iostart(void);
 void setwnd(WINDOW *);
 void warble(void);
 void boom(int ii, int jj);