1 /*
2  *  Empire - A multi-player, client/server Internet based war game.
3  *  Copyright (C) 1986-2021, Dave Pare, Jeff Bailey, Thomas Ruschak,
4  *                Ken Stevens, Steve McClure, Markus Armbruster
5  *
6  *  Empire is free software: you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation, either version 3 of the License, or
9  *  (at your option) any later version.
10  *
11  *  This program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
18  *
19  *  ---
20  *
21  *  See files README, COPYING and CREDITS in the root of the source
22  *  tree for related information and legal notices.  It is expected
23  *  that future projects/authors will amend these files as needed.
24  *
25  *  ---
26  *
27  *  news.h: Definitions for Empire News
28  *
29  *  Known contributors to this file:
30  *     Dave Pare
31  *     Thomas Ruschak
32  *     Steve McClure
33  *     Markus Armbruster, 2004-2016
34  */
35 
36 /*
37  *	News codes for new options are not #ifdefed, since defining maxverb
38  *	would be a pain, and it doesn't hurt to leave them in --ts
39  */
40 
41 #ifndef NEWS_H
42 #define NEWS_H
43 
44 #include "file.h"
45 #include "nsc.h"
46 
47 struct nwsstr {
48     natid nws_ano;		/* "actor" country # */
49     unsigned char nws_vrb;	/* action (verb) */
50     natid nws_vno;		/* "victim" country # */
51     unsigned short nws_ntm;	/* number of times */
52     short nws_duration;		/* last time at nws_when + nws_duration */
53     time_t nws_when;		/* time of action */
54 };
55 
56 #define NUM_RPTS	2	/* number of story alternates */
57 
58 struct rptstr {
59     signed char r_uid;
60     int r_good_will;		/* how "nice" the action is */
61     int r_newspage;		/* which page this item belongs on */
62     char *r_newstory[NUM_RPTS];	/* texts for fmt( */
63 };
64 
65 	/* news verbs */
66 #define N_WON_SECT	1
67 #define N_SCT_LOSE	2
68 #define N_SPY_SHOT	3
69 #define N_SENT_TEL	4
70 /* unused		5 */
71 #define N_MAKE_LOAN	6
72 #define N_REPAY_LOAN	7
73 #define N_MAKE_SALE	8
74 #define N_OVFLY_SECT	9
75 #define N_SCT_SHELL	10
76 #define N_SHP_SHELL	11
77 #define N_TOOK_UNOCC	12
78 #define N_TORP_SHIP	13
79 #define N_FIRE_BACK	14
80 #define N_BROKE_SANCT	15
81 #define N_SCT_BOMB	16
82 #define N_SHP_BOMB	17
83 #define N_BOARD_SHIP	18
84 #define N_SHP_LOSE	19
85 /* unused		20 */
86 #define N_SEIZE_SECT	21
87 /* unused		22 */
88 /* unused		23 */
89 /* unused		24 */
90 #define N_HIT_MINE	25
91 #define N_DECL_ALLY	26
92 /* unused		27 */
93 #define N_DECL_WAR	28
94 #define N_DIS_ALLY	29
95 #define N_DIS_WAR	30
96 #define N_OUT_PLAGUE	31
97 #define N_DIE_PLAGUE	32
98 #define N_NAME_CHNG	33
99 #define N_DIE_FAMINE	34
100 /* unused		35 */
101 #define N_DOWN_PLANE	36
102 #define N_NUKE		37
103 #define N_FREEDOM_FIGHT	38
104 #define N_SHOOT_CIV	39
105 #define N_LAUNCH	40
106 #define N_SAT_KILL	41
107 #define N_GIFT		42
108 #define N_AIDS		43
109 #define N_HURTS		44
110 #define N_TAKE		45
111 #define N_NUKE_STOP	46
112 #define N_SCT_MISS	47
113 #define N_SHP_MISS	48
114 #define N_TRADE		49
115 #define N_PIRATE_TRADE	50
116 #define N_PIRATE_KEEP	51
117 #define N_SHIP_TORP	52
118 #define N_SUB_BOMB	53
119 /* unused		54 */
120 #define N_UNIT_BOMB	55
121 #define N_LHIT_MINE	56
122 #define N_FIRE_F_ATTACK	57
123 #define N_FIRE_L_ATTACK	58
124 #define N_FIRE_S_ATTACK	59
125 #define N_SACK_CAP	60
126 #define N_UP_FRIENDLY	61
127 #define N_DOWN_FRIENDLY	62
128 #define N_UP_NEUTRAL	63
129 #define N_DOWN_NEUTRAL	64
130 #define N_UP_HOSTILE	65
131 #define N_DOWN_HOSTILE	66
132 #define N_SCT_SMISS	67
133 #define N_SHP_SMISS	68
134 #define N_START_COL	69
135 #define N_NUKE_SSTOP	70
136 #define N_LND_MISS	71
137 #define N_LND_SMISS	72
138 #define N_AWON_SECT	73
139 #define N_PWON_SECT	74
140 #define N_PARA_UNOCC	75
141 #define N_ALOSE_SCT	76
142 #define N_PLOSE_SCT	77
143 /* unused		78 */
144 /* unused		79 */
145 #define N_WELCH_DEAL	80
146 #define N_LND_LOSE	81
147 #define N_BOARD_LAND	82
148 #define N_MAX_VERB	82
149 
150 #define N_NOTUSED	 0
151 #define N_FOR		 1
152 #define N_FRONT		 2
153 #define N_SEA		 3
154 #define N_SKY		 4
155 #define N_MISS		 5
156 #define N_ARTY		 6
157 #define N_ECON		 7
158 #define N_COLONY	 8
159 #define N_HOME		 9
160 #define N_SPY		10
161 #define N_TELE		11
162 #define N_MAX_PAGE	11
163 
164 #define getnews(n, p) ef_read(EF_NEWS, (n), (p))
165 #define putnews(n, p) ef_write(EF_NEWS, (n), (p))
166 #define getnewsp(n) ((struct nwsstr *)ef_ptr(EF_NEWS, (n)))
167 
168 extern struct rptstr rpt[N_MAX_VERB + 2];
169 extern struct symbol page_headings[N_MAX_PAGE + 2];
170 
171 #endif
172