00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef NAT_H
00037 #define NAT_H
00038
00039 #include <time.h>
00040 #include "types.h"
00041
00042 #define MAXNOR 50
00043
00044
00045 typedef enum {
00046
00047
00048
00049
00050 STAT_UNUSED,
00051 STAT_NEW,
00052 STAT_VIS,
00053 STAT_SANCT,
00054 STAT_ACTIVE,
00055 STAT_GOD
00056 } nat_status;
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 struct realmstr {
00068
00069 short ef_type;
00070 natid r_cnum;
00071
00072 short r_uid;
00073 unsigned short r_realm;
00074 short r_xl, r_xh;
00075 short r_yl, r_yh;
00076 time_t r_timestamp;
00077 };
00078
00079 struct natstr {
00080
00081 short ef_type;
00082 natid nat_cnum;
00083
00084 nat_status nat_stat;
00085 char nat_cnam[20];
00086 char nat_pnam[20];
00087 char nat_hostaddr[32];
00088 char nat_hostname[512];
00089 char nat_userid[32];
00090 coord nat_xcap, nat_ycap;
00091 coord nat_xorg, nat_yorg;
00092 signed char nat_dayno;
00093 signed char nat_update;
00094 unsigned short nat_tgms;
00095 unsigned short nat_ann;
00096 unsigned short nat_minused;
00097 short nat_btu;
00098 short nat_access;
00099 long nat_reserve;
00100 long nat_money;
00101 time_t nat_last_login;
00102 time_t nat_last_logout;
00103 time_t nat_newstim;
00104 time_t nat_annotim;
00105 float nat_level[4];
00106 unsigned char nat_relate[MAXNOC];
00107 unsigned char nat_contact[MAXNOC];
00108 unsigned char nat_rejects[MAXNOC];
00109 long nat_flags;
00110 };
00111
00112
00113 #define AT_WAR 0
00114 #define SITZKRIEG 1
00115 #define MOBILIZATION 2
00116 #define HOSTILE 3
00117 #define NEUTRAL 4
00118 #define FRIENDLY 5
00119 #define ALLIED 6
00120
00121
00122 #define REJ_TELE bit(0)
00123 #define REJ_TREA bit(1)
00124 #define REJ_ANNO bit(2)
00125 #define REJ_LOAN bit(3)
00126
00127 #define NAT_TLEV 0
00128 #define NAT_RLEV 1
00129 #define NAT_ELEV 2
00130 #define NAT_HLEV 3
00131
00132
00133
00134
00135
00136
00137
00138 #define FOUND_FLY 3
00139
00140 #define FOUND_LOOK 5
00141
00142 #define FOUND_SPY 6
00143
00144 #define FOUND_TELE 3
00145
00146 #define FOUND_COAST 3
00147
00148 extern char *relates[];
00149
00150
00151
00152 #define putnat(p) ef_write(EF_NATION, (p)->nat_cnum, (p))
00153 #define getnatp(n) ((struct natstr *)ef_ptr(EF_NATION, (n)))
00154
00155 #define getrealm(r, n, p) ef_read(EF_REALM, ((r) + ((n) * MAXNOR)), (p))
00156 #define putrealm(p) ef_write(EF_REALM, (p)->r_uid, (p))
00157
00158 extern double tfact(natid cn, double mult);
00159 extern double techfact(int level, double mult);
00160
00161 extern char *cname(natid n);
00162 extern char *relatename(struct natstr *np, natid other);
00163 extern char *rejectname(struct natstr *np, natid other);
00164 extern char *natstate(struct natstr *np);
00165 extern int getrel(struct natstr *np, natid them);
00166 extern int getrejects(natid them, struct natstr *np);
00167 extern int getcontact(struct natstr *np, natid them);
00168 extern void putrel(struct natstr *np, natid them, int relate);
00169 extern void putreject(struct natstr *np, natid them, int how, int what);
00170 extern void putcontact(struct natstr *np, natid them, int contact);
00171 extern void agecontact(struct natstr *np);
00172 extern int influx(struct natstr *np);
00173
00174 extern int grant_btus(struct natstr *, int );
00175
00176
00177 #define NF_INFORM bit(0)
00178 #define NF_FLASH bit(1)
00179 #define NF_BEEP bit(2)
00180 #define NF_COASTWATCH bit(3)
00181 #define NF_SONAR bit(4)
00182 #define NF_TECHLISTS bit(5)
00183 #define NF_SACKED bit(6)
00184
00185 #endif