-
Notifications
You must be signed in to change notification settings - Fork 0
/
events.c
328 lines (256 loc) · 10 KB
/
events.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <ctype.h>
void print_slowly(const char* text);
int give_soldiers();
void print_soldiers();
void change_soldiers(int soldiers_lost);
int wrong_soldiers_check(int soldiers);
int check_for_negative_soldiers(int soldiers);
int generic_attack();
int british_attack();
void clean();
int checking_alpha(int soldiers);
int misheard = 10;
int event()
{
const char* misheard_message = "...I beg your pardon? Senior I don't understand... Please let me say the question again\n";
int success_check = 0;
// char events[6][50] = {"Foreign Traders want to be allowed in the port", "Pirates in the near area", "Animals ruin crops!", "Local Rebels", "Mutinies in the local force!", "British forces get ready for battle!!!"};
srand(time(NULL));
int rand_num = 1;
if(misheard == 0){
rand_num = 0;
}
else if(misheard == 1){
rand_num = 1;
}
else if(misheard == 2){
rand_num = 2;
}
else if(misheard == 4){
rand_num = 4;
}
if(rand_num == 0){
char ans[3];
int rand_traders = rand() % 4;
char countries[4][20] = {"British", "Dutch", "Portuguese", "Danish"};
print_slowly("Senior! Some ");
print_slowly(countries[rand_traders]);
print_slowly(" want to be allowed in the port! Should we allow them? ");
scanf("%s", ans);
if(strcasecmp(ans, "yes") == 0){
int possibilities = rand() % 10;
if(possibilities < 9){
print_slowly("\nThey were not traders! They were special forces of our enemies, who showed themselves as traders!\nThe whole city was burnt, and you did together with it...");
success_check = 1;
}
else{
print_slowly("\nThe merchants entered the city peacefully and traded with the locals");
return 0;
}
}
else if(strcasecmp(ans, "no") == 0){
print_slowly("\nWe didn't allow the merchants to enter");
return 0;
}
else{
print_slowly(misheard_message);
misheard = 0;
event();
}
}
else if(rand_num == 1){
char ans[3];
print_slowly("Senior! Pirates have been seen in the near area! Should we send men to fight them or not? ");
scanf("%s", ans);
if(strcasecmp(ans, "yes") == 0){
int possibilities = rand() % 10;
int soldiers = generic_attack();
if(possibilities < 7 && soldiers >= 100){
print_slowly("Our army emerged victorious! The ships of the pirates are now house for the fish!\n");
return 0;
}
else if(possibilities < 7 && soldiers < 100 && soldiers != 0){
int men_lost = rand() % 85;
print_slowly("The pirate ships were beaten... but we had some losses the battle was tough and we lost some men...\n");
if(men_lost > soldiers){
men_lost = soldiers;
}
change_soldiers(men_lost);
print_soldiers();
return 0;
}
else{
print_slowly("No matter how hard we fought the battle was lost...\n\n");
success_check = 1;
}
}
else if(strcasecmp(ans, "no") == 0){
int possibilities = rand() % 10;
if(possibilities < 8){
print_slowly("The pirates plundered the city and massacred the citizens. You were killed together with everyone else...\nSan Rafael became a big pirate haven");
success_check = 1;
}
else{
print_slowly("We are lucky! The pirates left the nearby waters... what a relief! Right Senior?");
return 0;
}
}
else{
print_slowly(misheard_message);
misheard = 1;
event();
}
}
else if(rand_num == 2){
char ans[3];
print_slowly("Many locals have been making requests for a small defence force to defend crops from some wild ");
int rand_animals = rand() % 4;
char animals[4][20] = {"boars", "wolves", "lizards", "crows"};
print_slowly(animals[rand_animals]);
if(give_soldiers() != 0){
print_slowly("\nShould we agree?\n");
print_slowly("You: ");
scanf("%s", ans);
if(strcasecmp("yes", ans) == 0){
print_slowly("Ok! I will make sure the guards take place");
return 0;
}
else if(strcasecmp(ans, "no") == 0){
print_slowly("Alright Senior! I understand you may not want to send useful soldiers in such a small mission!");
return 0;
}
else{
print_slowly(misheard_message);
misheard = 2;
event();
}
}
else{
print_slowly("\nBut since we have 0 soldiers we can't do something about it");
}
}
else if(rand_num == 3){
int possibilities = rand() % 10;
print_slowly("Senior! Senior! Some locals have started some sort of 'rebellion'!\nWe can't wait for reinforcements from the crown right now! We will use our guards!\n");
int soldiers = generic_attack();
if(soldiers >= 200 && soldiers != 0 && possibilities < 6){
print_slowly("The battle was hard but we won! It is a miracle that there were no dead guards!");
return 0;
}
else if(soldiers >= 200 && soldiers != 0 && possibilities >= 6){
int men_lost = rand() % 170;
print_slowly("We won the battle, but with severe losses... it was very hard\n");
if(men_lost > soldiers){
men_lost = soldiers;
}
change_soldiers(men_lost);
print_soldiers();
return 0;
}
else{
print_slowly("The rebels have succeeded... You managed to escape to Spain, but The King\n decided that you will be killed for your insufficient ruling");
success_check = 1;
}
}
else if(rand_num == 4){
if((give_soldiers()) == 0){
event();
}
char ans[3];
print_slowly("Senior! There are a few soldiers of the guard that want a rise\n on their payment... should we give it?\n");
print_slowly("You: ");
scanf("%s", ans);
if(strcasecmp(ans, "yes") == 0 || strcasecmp(ans, "no") == 0){
print_slowly("Ummm... ok sir! I will make sure your commands will be followed!");
return 0;
}
else{
print_slowly(misheard_message);
misheard = 4;
event();
}
}
else if(rand_num == 5){
int soldiers;
print_slowly("A young man enters your office...\n\n");
print_slowly("SENIOR! SENIOR! There are british forces that are getting ready for battle near the city!\n");
soldiers = british_attack();
if(soldiers > 300){
int men_lost = rand() % 150;
print_slowly("The men were just enough to defend against the enemy! Yet, we had some losses...");
if(men_lost > soldiers){
men_lost = soldiers;
}
change_soldiers(men_lost);
return 0;
}
else{
print_slowly("The men were too few to defend the city. The british slaughtered all the officers... including you...\n");
success_check = 1;
}
}
return success_check;
}
int wrong_soldiers_check(int soldiers)
{
int de_facto_soldiers = give_soldiers();
int ret_value = 0;
char soldiers_c[3];
itoa(soldiers, soldiers_c, 10);
if(((isdigit(soldiers_c[0]) == 0) && (soldiers_c[0] != '\0')) || ((isdigit(soldiers_c[1]) == 0) && (soldiers_c[1] != '\0')) || ((isdigit(soldiers_c[2]) == 0) && (soldiers_c[2] != '\0'))){ // isdigit considers '-' as a non numeric character so it serves both on not allowing the user to enter letters but also a negative number or even both
print_slowly("Senior the situation is urgent! Please answer seriously! ");
ret_value = 1;
}
if(de_facto_soldiers < soldiers){
print_slowly("Senior! We don't have so many soldiers! Let me ask you again...");
ret_value = 1;
}
return ret_value;
}
int generic_attack()
{
int soldiers;
if(give_soldiers() == 0){
print_slowly("Senior... I just checked the last reports... we have no soldiers... Oh no this is terrible! What are we going to do?\n");
soldiers = 0;
}
if(give_soldiers() != 0){
do{
print_slowly("\nAlright! How many men should we send?\n");
print_soldiers();
print_slowly("You: Let's send ");
clean();
scanf("%3d", &soldiers);
}while(wrong_soldiers_check(soldiers) == 1);
}
return soldiers;
}
int british_attack()
{
int soldiers;
if(give_soldiers() == 0){
print_slowly("Senior... I just checked the last reports... we have no soldiers... Oh no this is terrible! What are we going to do?\n");
soldiers = 0;
}
if(give_soldiers() != 0){
do{
print_slowly("The field marshal asked me how many men should we send to the field... What should I say to him?\n");
print_soldiers();
print_slowly("You: Let's send ");
clean();
scanf("%3d", &soldiers);
}while(wrong_soldiers_check(soldiers) == 1);
}
return soldiers;
}
void clean()
{
int c;
while ((c = getchar()) != '\n' && c != EOF) { //keeps picking and discarding and picks up the unneeded character
;
}
}