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
00037 #ifndef SECT_H
00038 #define SECT_H
00039
00040 #include <time.h>
00041 #include "item.h"
00042 #include "types.h"
00043
00044 struct sctstr {
00045
00046 short ef_type;
00047 natid sct_own;
00048 short sct_elev;
00049 coord sct_x;
00050 coord sct_y;
00051
00052 unsigned char sct_type;
00053 unsigned char sct_effic;
00054 short sct_mobil;
00055 unsigned char sct_loyal;
00056 unsigned char sct_terr;
00057 unsigned char sct_terr1;
00058 unsigned char sct_terr2;
00059 unsigned char sct_terr3;
00060 unsigned char sct_dterr;
00061 coord sct_dist_x;
00062 coord sct_dist_y;
00063 short sct_avail;
00064 short sct_flags;
00065 short sct_fill;
00066 unsigned char sct_work;
00067 unsigned char sct_coastal;
00068 unsigned char sct_newtype;
00069 unsigned char sct_min;
00070 unsigned char sct_gmin;
00071 unsigned char sct_fertil;
00072 unsigned char sct_oil;
00073 unsigned char sct_uran;
00074 natid sct_oldown;
00075 unsigned char sct_updated;
00076 unsigned char sct_off;
00077 short sct_item[I_MAX+1];
00078 short sct_del[I_MAX+1];
00079 short sct_dist[I_MAX+1];
00080 short sct_mines;
00081 short sct_pstage;
00082 short sct_ptime;
00083 unsigned char sct_che;
00084 natid sct_che_target;
00085 unsigned short sct_fallout;
00086 short sct_access;
00087 unsigned char sct_road;
00088 unsigned char sct_rail;
00089 unsigned char sct_defense;
00090 time_t sct_timestamp;
00091 };
00092
00093 typedef enum {
00094 NAV_NONE,
00095 NAVOK,
00096 NAV_02,
00097 NAV_CANAL,
00098 NAV_60
00099 } d_navigation;
00100
00101 struct dchrstr {
00102 unsigned char d_uid;
00103 char d_mnem;
00104 int d_prd;
00105 int d_peffic;
00106 float d_mob0, d_mob1;
00107 d_navigation d_nav;
00108 i_packing d_pkg;
00109 float d_ostr;
00110 float d_dstr;
00111 int d_value;
00112 int d_cost;
00113 int d_build;
00114 int d_lcms;
00115 int d_hcms;
00116 int d_maxpop;
00117 char *d_name;
00118 };
00119
00120
00121
00122 #define SCT_WATER 0
00123 #define SCT_MOUNT 1
00124 #define SCT_SANCT 2
00125 #define SCT_WASTE 3
00126 #define SCT_RURAL 4
00127 #define SCT_CAPIT 5
00128 #define SCT_URAN 6
00129 #define SCT_PARK 7
00130 #define SCT_ARMSF 8
00131 #define SCT_AMMOF 9
00132 #define SCT_MINE 10
00133 #define SCT_GMINE 11
00134 #define SCT_HARBR 12
00135 #define SCT_WAREH 13
00136 #define SCT_AIRPT 14
00137 #define SCT_AGRI 15
00138 #define SCT_OIL 16
00139 #define SCT_LIGHT 17
00140 #define SCT_HEAVY 18
00141 #define SCT_FORTR 19
00142 #define SCT_TECH 20
00143 #define SCT_RSRCH 21
00144 #define SCT_NUKE 22
00145 #define SCT_LIBR 23
00146 #define SCT_HIWAY 24
00147 #define SCT_RADAR 25
00148 #define SCT_HEADQ 26
00149 #define SCT_BHEAD 27
00150 #define SCT_BSPAN 28
00151 #define SCT_BANK 29
00152 #define SCT_REFINE 30
00153 #define SCT_ENLIST 31
00154 #define SCT_PLAINS 32
00155 #define SCT_BTOWER 33
00156
00157 #define SCT_TYPE_MAX 38
00158
00159 #define getsect(x, y, p) ef_read(EF_SECTOR, sctoff((x), (y)), (p))
00160 #define putsect(p) ef_write(EF_SECTOR, sctoff((p)->sct_x, (p)->sct_y), (p))
00161 #define getsectp(x, y) (struct sctstr *)ef_ptr(EF_SECTOR, sctoff((x), (y)))
00162 #define getsectid(id) (struct sctstr *)ef_ptr(EF_SECTOR, (id))
00163
00164
00165 extern int sctoff(coord x, coord y);
00166
00167 extern struct dchrstr dchr[SCT_TYPE_MAX + 2];
00168 extern struct dchrstr bigcity_dchr;
00169 #define IS_BIG_CITY(type) (dchr[(type)].d_pkg == UPKG)
00170
00171
00172 #define SCT_MINEFF 20
00173
00174
00175 #define SCT_BLD_WORK(lcm, hcm) ((lcm) + 2 * (hcm))
00176
00177
00178 #define SCT_DEFENSE(sp) \
00179 (intrchr[INT_DEF].in_enable ? (sp)->sct_defense : (sp)->sct_effic)
00180
00181 #define FORTEFF 5
00182
00183 #define MOB_MOVE 0
00184 #define MOB_MARCH 1
00185 #define MOB_RAIL 2
00186
00187 #define INT_ROAD 0
00188 #define INT_RAIL 1
00189 #define INT_DEF 2
00190
00191
00192 #define MOVE_IN_PROGRESS bit(0)
00193
00194
00195 #define ITEM_MAX 9999
00196
00197 #define MINES_MAX 32767
00198
00199 #define CHE_MAX 255
00200
00201 #define FALLOUT_MAX 9999
00202
00203 #define TERR_MAX 99
00204
00205
00206 struct sctintrins {
00207 char *in_name;
00208 unsigned char in_lcms;
00209 unsigned char in_hcms;
00210 unsigned char in_dcost;
00211 unsigned char in_mcost;
00212 unsigned char in_enable;
00213 };
00214
00215 extern struct sctintrins intrchr[INT_DEF + 2];
00216
00217 #endif