Blame


1 7ea8226e 2021-09-06 xhr /*
2 7ea8226e 2021-09-06 xhr * Copyright (c) 2021 Matthias Schmidt <xhr@giessen.ccc.de>
3 7ea8226e 2021-09-06 xhr *
4 7ea8226e 2021-09-06 xhr * Permission to use, copy, modify, and distribute this software for any
5 7ea8226e 2021-09-06 xhr * purpose with or without fee is hereby granted, provided that the above
6 7ea8226e 2021-09-06 xhr * copyright notice and this permission notice appear in all copies.
7 7ea8226e 2021-09-06 xhr *
8 7ea8226e 2021-09-06 xhr * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 7ea8226e 2021-09-06 xhr * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 7ea8226e 2021-09-06 xhr * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 7ea8226e 2021-09-06 xhr * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 7ea8226e 2021-09-06 xhr * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 7ea8226e 2021-09-06 xhr * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 7ea8226e 2021-09-06 xhr * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 7ea8226e 2021-09-06 xhr */
16 7ea8226e 2021-09-06 xhr
17 63354cc5 2021-09-01 xhr #ifndef _ISSCROLLS_H
18 63354cc5 2021-09-01 xhr #define _ISSCROLLS_H
19 63354cc5 2021-09-01 xhr
20 7eab0b32 2021-09-07 xhr #include <sys/queue.h>
21 7eab0b32 2021-09-07 xhr
22 63354cc5 2021-09-01 xhr #include <stdio.h>
23 63354cc5 2021-09-01 xhr
24 31ee7848 2021-09-06 xhr #define VERSION "2021.a"
25 7f1d5406 2021-09-06 xhr #define _PATH_SHARE_DIR "/usr/local/share/isscrolls"
26 31ee7848 2021-09-06 xhr
27 ce559d58 2021-09-05 xhr #define MAX_NAME_LEN 12
28 90849b35 2021-09-05 xhr #define MAX_RANK_LEN 13
29 323180ed 2021-09-05 xhr #define MAX_PLOT_LEN 63
30 d49e0a78 2021-09-05 xhr #define MAX_MYSTIC_LEN 127
31 1a26b5c7 2021-09-06 xhr #define MAX_PLACES_LEN 18
32 bb81a173 2021-09-08 xhr #define MAX_PROMPT_LEN 255
33 3ad507cb 2021-09-13 xhr #define MAX_PTP_LEN 201
34 bb81a173 2021-09-08 xhr #define MAX_CHAR_LEN 100
35 f2fa9e75 2021-09-10 xhr #define MAX_PROGRESS 10
36 c0c6ae4a 2021-09-16 xhr #define MAX_STAT_LEN 20
37 83af01ed 2021-09-02 xhr
38 af92ffb1 2021-09-15 xhr #define ANSI_COLOR_RED "\x1b[31m"
39 af92ffb1 2021-09-15 xhr #define ANSI_COLOR_GREEN "\x1b[32m"
40 af92ffb1 2021-09-15 xhr #define ANSI_COLOR_YELLOW "\x1b[33m"
41 af92ffb1 2021-09-15 xhr #define ANSI_COLOR_BLUE "\x1b[34m"
42 af92ffb1 2021-09-15 xhr #define ANSI_COLOR_MAGENTA "\x1b[35m"
43 af92ffb1 2021-09-15 xhr #define ANSI_COLOR_CYAN "\x1b[36m"
44 af92ffb1 2021-09-15 xhr #define ANSI_COLOR_RESET "\x1b[0m"
45 af92ffb1 2021-09-15 xhr
46 ce559d58 2021-09-05 xhr /* oracle.c */
47 ce559d58 2021-09-05 xhr void cmd_show_iron_name(char *);
48 ce559d58 2021-09-05 xhr void cmd_show_elf_name(char *);
49 ce559d58 2021-09-05 xhr void cmd_show_giant_name(char *);
50 ce559d58 2021-09-05 xhr void cmd_show_varou_name(char *);
51 ce559d58 2021-09-05 xhr void cmd_show_troll_name(char *);
52 89da551e 2021-09-05 xhr void cmd_show_action(char *);
53 89da551e 2021-09-05 xhr void cmd_show_theme(char *);
54 90849b35 2021-09-05 xhr void cmd_show_rank(char *);
55 323180ed 2021-09-05 xhr void cmd_show_combat_action(char *);
56 323180ed 2021-09-05 xhr void cmd_show_plot_twist(char *);
57 d49e0a78 2021-09-05 xhr void cmd_show_mystic_backshlash(char *);
58 1a26b5c7 2021-09-06 xhr void cmd_show_region(char *);
59 1a26b5c7 2021-09-06 xhr void cmd_show_location_description(char *);
60 1a26b5c7 2021-09-06 xhr void cmd_show_location(char *);
61 3ea4b207 2021-09-09 xhr void cmd_show_coastal_location(char *);
62 3ad507cb 2021-09-13 xhr void cmd_show_pay_the_price(char *);
63 29889142 2021-09-05 xhr void show_info_from_oracle(int, int);
64 ce559d58 2021-09-05 xhr
65 63354cc5 2021-09-01 xhr /* readline.c */
66 63354cc5 2021-09-01 xhr char ** my_completion(const char *, int, int);
67 63354cc5 2021-09-01 xhr char* command_generator(const char *, int);
68 180e58f6 2021-09-06 xhr void initialize_readline(const char *);
69 63354cc5 2021-09-01 xhr void execute_command(char *);
70 63354cc5 2021-09-01 xhr char* stripwhite (char *);
71 63354cc5 2021-09-01 xhr struct command* find_command(char *);
72 834ec24f 2021-09-06 xhr void cmd_cd(char *);
73 63354cc5 2021-09-01 xhr
74 63354cc5 2021-09-01 xhr /* rolls.c */
75 63354cc5 2021-09-01 xhr void cmd_roll_action_dice(char *);
76 8f2dede1 2021-09-02 xhr void cmd_roll_challenge_die(char *);
77 8f2dede1 2021-09-02 xhr void cmd_roll_oracle_die(char *);
78 63354cc5 2021-09-01 xhr void cmd_yes_or_no(char *);
79 63354cc5 2021-09-01 xhr void cmd_usage(char *);
80 c184771b 2021-09-01 xhr void cmd_create_character(char *);
81 a5abbb50 2021-09-09 xhr void cmd_resupply(char *);
82 1c9cf51f 2021-09-09 xhr void cmd_face_danger(char *);
83 5f0cab5f 2021-09-09 xhr void cmd_secure_an_advantage(char *);
84 7317e41e 2021-09-09 xhr void cmd_make_camp(char *);
85 dab8f6b9 2021-09-09 xhr void cmd_compel(char *);
86 80379fca 2021-09-09 xhr void cmd_sojourn(char *);
87 9c58a078 2021-09-09 xhr void cmd_draw_the_circle(char *);
88 86c8a615 2021-09-09 xhr void cmd_forge_a_bond(char *);
89 34ed03e1 2021-09-09 xhr void cmd_test_your_bond(char *);
90 8cc30b28 2021-09-09 xhr void cmd_swear_an_iron_vow(char *);
91 d2b9d86f 2021-09-13 xhr void cmd_face_death(char *);
92 80a35657 2021-09-13 xhr void cmd_endure_stress(char *);
93 8f2dede1 2021-09-02 xhr long roll_action_die(void);
94 8f2dede1 2021-09-02 xhr long roll_challenge_die(void);
95 8f2dede1 2021-09-02 xhr long roll_oracle_die(void);
96 63354cc5 2021-09-01 xhr void yes_or_no(int);
97 04d8c7d3 2021-09-08 xhr int action_roll(int[]);
98 319d4050 2021-09-16 xhr int progress_roll(double[]);
99 b00e659c 2021-09-11 xhr void ask_for_journey_difficulty(void);
100 319d4050 2021-09-16 xhr int get_int_from_cmd(const char *);
101 c0c6ae4a 2021-09-16 xhr int get_args_from_cmd(char *, char *, int*);
102 63354cc5 2021-09-01 xhr
103 63354cc5 2021-09-01 xhr /* isscrolls.c */
104 63354cc5 2021-09-01 xhr void cmd_quit(char *);
105 2ba8efca 2021-09-05 xhr void show_banner(char *);
106 726131df 2021-09-01 xhr void log_debug(const char *, ...);
107 c184771b 2021-09-01 xhr void log_errx(int, const char *, ...);
108 af92ffb1 2021-09-15 xhr void pm(int, const char *, ...);
109 180e58f6 2021-09-06 xhr void setup_base_dir(void);
110 40b0885d 2021-09-06 xhr void shutdown(void);
111 875fbef1 2021-09-06 xhr void sandbox(const char *);
112 e952d8d3 2021-09-06 xhr void set_prompt(const char *);
113 834ec24f 2021-09-06 xhr const char * get_isscrolls_dir(void);
114 63354cc5 2021-09-01 xhr
115 c184771b 2021-09-01 xhr /* character.c */
116 c184771b 2021-09-01 xhr struct character* init_character_struct(void);
117 d6d6a902 2021-09-08 xhr void print_character(void);
118 8a47a564 2021-09-07 xhr struct character* create_character(const char *);
119 8b801c9b 2021-09-11 xhr void free_character(void);
120 b00e659c 2021-09-11 xhr int validate_range(int, int);
121 b00e659c 2021-09-11 xhr int ask_for_value(const char *, int);
122 834ec24f 2021-09-06 xhr void cmd_print_current_character(char *);
123 2b8ffc2d 2021-09-08 xhr void cmd_delete_character(char *);
124 8b801c9b 2021-09-11 xhr void save_character(void);
125 2b8ffc2d 2021-09-08 xhr void delete_saved_character(int);
126 5d0c8c1e 2021-09-11 xhr int load_character(int);
127 f267c8e7 2021-09-08 xhr struct character * get_current_character(void);
128 7eab0b32 2021-09-07 xhr int return_character_id(const char *);
129 142b407e 2021-09-07 xhr void load_characters_list(void);
130 142b407e 2021-09-07 xhr void save_current_character(void);
131 43b54703 2021-09-08 xhr void cmd_increase_value(char *);
132 3a81c81c 2021-09-08 xhr void cmd_decrease_value(char *);
133 3dd6e83c 2021-09-08 xhr void cmd_toogle(char *);
134 0c0efc11 2021-09-08 xhr void cmd_ls(char *);
135 04d8c7d3 2021-09-08 xhr void cmd_gather_information(char *);
136 111285eb 2021-09-08 xhr void cmd_heal(char *);
137 04d8c7d3 2021-09-08 xhr void change_char_value(const char *, int, int);
138 43b54703 2021-09-08 xhr void increase_value(const char *, int *, int);
139 3a81c81c 2021-09-08 xhr void decrease_value(const char *, int *, int);
140 04d8c7d3 2021-09-08 xhr void modify_value(const char *, int *, int, int, int, int);
141 3dd6e83c 2021-09-08 xhr void toggle_value(const char *, int *);
142 2bc4629d 2021-09-08 xhr void change_momentum_reset(int);
143 68583e72 2021-09-08 xhr void set_max_momentum(void);
144 a20b3d4e 2021-09-08 xhr int character_exists(const char *);
145 fcaa7fb2 2021-09-11 xhr void update_prompt(void);
146 c184771b 2021-09-01 xhr
147 8a2e76b6 2021-09-10 xhr /* journey.c */
148 fcaa7fb2 2021-09-11 xhr void mark_journey_progress(void);
149 dcf33c24 2021-09-10 xhr void save_journey(void);
150 dcf33c24 2021-09-10 xhr void load_journey(int);
151 60bf4095 2021-09-11 xhr void delete_journey(int);
152 fcc4d354 2021-09-11 xhr void reach_your_destination_failed(void);
153 bd88fb1a 2021-09-11 xhr void cmd_undertake_a_journey(char *);
154 bd88fb1a 2021-09-11 xhr void cmd_reach_your_destination(char *);
155 8a2e76b6 2021-09-10 xhr
156 b0cb8082 2021-09-11 xhr /* fight.c */
157 b0cb8082 2021-09-11 xhr void load_fight(int);
158 b0cb8082 2021-09-11 xhr void save_fight(void);
159 b0cb8082 2021-09-11 xhr void delete_fight(int);
160 b0cb8082 2021-09-11 xhr void cmd_enter_the_fray(char *);
161 b0cb8082 2021-09-11 xhr void cmd_strike(char *);
162 b0cb8082 2021-09-11 xhr void cmd_clash(char *);
163 b0cb8082 2021-09-11 xhr void cmd_battle(char *);
164 d2b9d86f 2021-09-13 xhr void cmd_endure_harm(char *);
165 b0cb8082 2021-09-11 xhr void mark_fight_progress(void);
166 b0cb8082 2021-09-11 xhr void ask_for_fight_difficulty(void);
167 b0cb8082 2021-09-11 xhr void cmd_end_the_fight(char *);
168 51a1ad92 2021-09-11 xhr void set_initiative(int);
169 b0cb8082 2021-09-11 xhr
170 f267c8e7 2021-09-08 xhr enum how_to_change_values {
171 f267c8e7 2021-09-08 xhr INCREASE,
172 f267c8e7 2021-09-08 xhr DECREASE,
173 f267c8e7 2021-09-08 xhr };
174 f267c8e7 2021-09-08 xhr
175 af92ffb1 2021-09-15 xhr enum color_codes {
176 af92ffb1 2021-09-15 xhr RED,
177 af92ffb1 2021-09-15 xhr YELLOW,
178 af92ffb1 2021-09-15 xhr GREEN,
179 af92ffb1 2021-09-15 xhr DEFAULT,
180 af92ffb1 2021-09-15 xhr };
181 f267c8e7 2021-09-08 xhr
182 63354cc5 2021-09-01 xhr struct command {
183 99e16831 2021-09-01 xhr const char *name;
184 63354cc5 2021-09-01 xhr void (*cmd)(char *);
185 99e16831 2021-09-01 xhr const char *doc;
186 342aad66 2021-09-01 xhr int alias;
187 63354cc5 2021-09-01 xhr };
188 63354cc5 2021-09-01 xhr
189 1df0f789 2021-09-10 xhr struct journey {
190 67f6b276 2021-09-10 xhr int id;
191 1df0f789 2021-09-10 xhr int difficulty;
192 15d8381d 2021-09-11 xhr double progress;
193 1df0f789 2021-09-10 xhr };
194 1df0f789 2021-09-10 xhr
195 b0cb8082 2021-09-11 xhr struct fight {
196 b0cb8082 2021-09-11 xhr int id;
197 b0cb8082 2021-09-11 xhr int difficulty;
198 51a1ad92 2021-09-11 xhr int initiative;
199 b0cb8082 2021-09-11 xhr double progress;
200 b0cb8082 2021-09-11 xhr };
201 b0cb8082 2021-09-11 xhr
202 c184771b 2021-09-01 xhr struct character {
203 1df0f789 2021-09-10 xhr struct journey *j;
204 a6733253 2021-09-11 xhr struct fight *fight;
205 c184771b 2021-09-01 xhr char *name;
206 be9e9b67 2021-09-13 xhr double bonds;
207 d2b9d86f 2021-09-13 xhr int dead;
208 1df0f789 2021-09-10 xhr int journey_active;
209 b0cb8082 2021-09-11 xhr int fight_active;
210 834ec24f 2021-09-06 xhr int id;
211 c184771b 2021-09-01 xhr int edge;
212 c184771b 2021-09-01 xhr int heart;
213 c184771b 2021-09-01 xhr int iron;
214 c184771b 2021-09-01 xhr int shadow;
215 c184771b 2021-09-01 xhr int wits;
216 c184771b 2021-09-01 xhr int exp;
217 c184771b 2021-09-01 xhr int exp_used;
218 c184771b 2021-09-01 xhr int momentum;
219 c184771b 2021-09-01 xhr int max_momentum;
220 2bc4629d 2021-09-08 xhr int momentum_reset;
221 c184771b 2021-09-01 xhr int health;
222 c184771b 2021-09-01 xhr int spirit;
223 c184771b 2021-09-01 xhr int supply;
224 c184771b 2021-09-01 xhr int wounded;
225 c184771b 2021-09-01 xhr int unprepared;
226 c184771b 2021-09-01 xhr int shaken;
227 c184771b 2021-09-01 xhr int encumbered;
228 c184771b 2021-09-01 xhr int maimed;
229 c184771b 2021-09-01 xhr int cursed;
230 c184771b 2021-09-01 xhr int corrupted;
231 c184771b 2021-09-01 xhr int tormented;
232 c184771b 2021-09-01 xhr };
233 c184771b 2021-09-01 xhr
234 7eab0b32 2021-09-07 xhr struct entry {
235 7eab0b32 2021-09-07 xhr LIST_ENTRY(entry) entries;
236 7eab0b32 2021-09-07 xhr char name[255];
237 7eab0b32 2021-09-07 xhr int id;
238 7eab0b32 2021-09-07 xhr };
239 7eab0b32 2021-09-07 xhr
240 63354cc5 2021-09-01 xhr #endif
241 7eab0b32 2021-09-07 xhr