src/bots.h

changeset 73
1ee9b312dc18
parent 72
03e4d9db3fd9
child 74
007fbadfa7f9
equal deleted inserted replaced
72:03e4d9db3fd9 73:1ee9b312dc18
1 //----------------------------------------------------------------------------- 1 // Macros and enums from zandronum bots.h
2 //
3 // Skulltag Source
4 // Copyright (C) 2002 Brad Carney
5 // Copyright (C) 2007-2012 Skulltag Development Team
6 // All rights reserved.
7 //
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions are met:
10 //
11 // 1. Redistributions of source code must retain the above copyright notice,
12 // this list of conditions and the following disclaimer.
13 // 2. Redistributions in binary form must reproduce the above copyright notice,
14 // this list of conditions and the following disclaimer in the documentation
15 // and/or other materials provided with the distribution.
16 // 3. Neither the name of the Skulltag Development Team nor the names of its
17 // contributors may be used to endorse or promote products derived from this
18 // software without specific prior written permission.
19 // 4. Redistributions in any form must be accompanied by information on how to
20 // obtain complete source code for the software and any accompanying
21 // software that uses the software. The source code must either be included
22 // in the distribution or be available for no more than the cost of
23 // distribution plus a nominal fee, and must be freely redistributable
24 // under reasonable conditions. For an executable file, complete source
25 // code means the source code for all modules it contains. It does not
26 // include source code for modules or files that typically accompany the
27 // major components of the operating system on which the executable file
28 // runs.
29 //
30 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
31 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
32 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
34 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
35 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
36 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
37 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
38 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
39 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
40 // POSSIBILITY OF SUCH DAMAGE.
41 //
42 //
43 //
44 // Filename: bots.h
45 //
46 // Description: Contains bot structures and prototypes
47 // [Dusk] Cropped out the stuff botc doesn't need.
48 //
49 //-----------------------------------------------------------------------------
50 2
51 #ifndef BOTC_BOTS_H 3 #ifndef BOTC_BOTS_H
52 #define BOTC_BOTS_H 4 #define BOTC_BOTS_H
53 5
54 //***************************************************************************** 6 static const int g_max_states = 256;
55 // DEFINES 7 static const int g_max_events = 32;
8 static const int g_max_global_events = 32;
9 static const int g_max_global_vars = 128;
10 static const int g_max_global_arrays = 16;
11 static const int g_max_array_size = 65536;
12 static const int g_max_state_vars = 16;
13 static const int g_max_stringlist_size = 128;
14 static const int g_max_string_length = 256;
15 static const int g_max_reaction_time = 52;
16 static const int g_max_stored_events = 64;
56 17
57 // Maximum number of variables on the bot evaluation stack. 18 enum e_data_header
58 #define BOTSCRIPT_STACK_SIZE 8
59
60 // Maximum number of botinto structures that can be defines.
61 #define MAX_BOTINFO 128
62
63 // Maximum number of states that can appear in a script.
64 #define MAX_NUM_STATES 256
65
66 // Maximum number of bot events that can be defined.
67 #define MAX_NUM_EVENTS 32
68
69 // Maximum number of global bot events that can be defined.
70 #define MAX_NUM_GLOBAL_EVENTS 32
71
72 // Maximum number of global variables that can be defined in a script.
73 #define MAX_SCRIPT_VARIABLES 128
74
75 // Maximum number of global arrays that can be defined in a script.
76 #define MAX_SCRIPT_ARRAYS 16
77
78 // Maximum number of global arrays that can be defined in a script.
79 #define MAX_SCRIPTARRAY_SIZE 65536
80
81 // Maxmimum number of state (local) variables that can appear in a script.
82 #define MAX_STATE_VARIABLES 16
83
84 // Maximum number of strings that can appear in a script stringlist.
85 #define MAX_LIST_STRINGS 128
86
87 // Maximum length of those strings in the stringlist.
88 #define MAX_STRING_LENGTH 256
89
90 // Maximum reaction time for a bot.
91 #define MAX_REACTION_TIME 52
92
93 // Maximum number of events the bots can store up that it's waiting to react to.
94 #define MAX_STORED_EVENTS 64
95
96 //*****************************************************************************
97 typedef enum
98 { 19 {
99 // Bot skill ratings. 20 dh_command,
100 BOTSKILL_VERYPOOR, 21 dh_state_index,
101 BOTSKILL_POOR, 22 dh_state_name,
102 BOTSKILL_LOW, 23 dh_on_enter,
103 BOTSKILL_MEDIUM, 24 dh_main_loop,
104 BOTSKILL_HIGH, 25 dh_on_exit,
105 BOTSKILL_EXCELLENT, 26 dh_event,
106 BOTSKILL_SUPREME, 27 dh_end_on_enter,
107 BOTSKILL_GODLIKE, 28 dh_end_main_loop,
108 BOTSKILL_PERFECT, 29 dh_end_on_exit,
109 30 dh_end_event,
110 NUM_BOT_SKILLS 31 dh_if_goto,
111 32 dh_if_not_goto,
112 } BOTSKILL_e; 33 dh_goto,
113 34 dh_or_logical,
114 //***************************************************************************** 35 dh_and_logical,
115 // STRUCTURES 36 dh_or_bitwise,
116 // 37 dh_eor_bitwise,
117 38 dh_and_bitwise,
118 //***************************************************************************** 39 dh_equals,
119 // These are the botscript data headers that it writes out. 40 dh_not_equals,
120 typedef enum 41 dh_less_than,
121 { 42 dh_at_most,
122 DH_COMMAND, 43 dh_greater_than,
123 DH_STATEIDX, 44 dh_at_least,
124 DH_STATENAME, 45 dh_negate_logical,
125 DH_ONENTER, 46 dh_left_shift,
126 DH_MAINLOOP, 47 dh_right_shift,
127 DH_ONEXIT, 48 dh_add,
128 DH_EVENT, 49 dh_subtract,
129 DH_ENDONENTER, 50 dh_unary_minus,
130 DH_ENDMAINLOOP, 51 dh_multiply,
131 DH_ENDONEXIT, 52 dh_divide,
132 DH_ENDEVENT, 53 dh_modulus,
133 DH_IFGOTO, 54 dh_push_number,
134 DH_IFNOTGOTO, 55 dh_push_string_index,
135 DH_GOTO, 56 dh_push_global_var,
136 DH_ORLOGICAL, 57 dh_push_local_var,
137 DH_ANDLOGICAL, 58 dh_drop_stack_position,
138 DH_ORBITWISE, 59 dh_script_var_list,
139 DH_EORBITWISE, 60 dh_string_list,
140 DH_ANDBITWISE, 61 dh_increase_global_var,
141 DH_EQUALS, 62 dh_decrease_global_var,
142 DH_NOTEQUALS, 63 dh_assign_global_var,
143 DH_LESSTHAN, 64 dh_add_global_var,
144 DH_LESSTHANEQUALS, 65 dh_subtract_global_var,
145 DH_GREATERTHAN, 66 dh_multiply_global_var,
146 DH_GREATERTHANEQUALS, 67 dh_divide_global_var,
147 DH_NEGATELOGICAL, 68 dh_mod_global_var,
148 DH_LSHIFT, 69 dh_increase_local_var,
149 DH_RSHIFT, 70 dh_decrease_local_var,
150 DH_ADD, 71 dh_assign_local_var,
151 DH_SUBTRACT, 72 dh_add_local_var,
152 DH_UNARYMINUS, 73 dh_subtract_local_var,
153 DH_MULTIPLY, 74 dh_multiply_local_var,
154 DH_DIVIDE, 75 dh_divide_local_var,
155 DH_MODULUS, 76 dh_mod_local_var,
156 DH_PUSHNUMBER, 77 dh_CASEGOTO,
157 DH_PUSHSTRINGINDEX, 78 dh_DROP,
158 DH_PUSHGLOBALVAR, 79 dh_increase_global_array,
159 DH_PUSHLOCALVAR, 80 dh_decrease_global_array,
160 DH_DROPSTACKPOSITION, 81 dh_assign_global_array,
161 DH_SCRIPTVARLIST, 82 dh_add_global_array,
162 DH_STRINGLIST, 83 dh_subtract_global_array,
163 DH_INCGLOBALVAR, 84 dh_multiply_global_array,
164 DH_DECGLOBALVAR, 85 dh_divide_global_array,
165 DH_ASSIGNGLOBALVAR, 86 dh_mod_global_array,
166 DH_ADDGLOBALVAR, 87 dh_push_global_array,
167 DH_SUBGLOBALVAR, 88 dh_swap,
168 DH_MULGLOBALVAR, 89 dh_dup,
169 DH_DIVGLOBALVAR, 90 dh_array_set,
170 DH_MODGLOBALVAR, 91 num_data_headers
171 DH_INCLOCALVAR, 92 };
172 DH_DECLOCALVAR,
173 DH_ASSIGNLOCALVAR,
174 DH_ADDLOCALVAR,
175 DH_SUBLOCALVAR,
176 DH_MULLOCALVAR,
177 DH_DIVLOCALVAR,
178 DH_MODLOCALVAR,
179 DH_CASEGOTO,
180 DH_DROP,
181 DH_INCGLOBALARRAY,
182 DH_DECGLOBALARRAY,
183 DH_ASSIGNGLOBALARRAY,
184 DH_ADDGLOBALARRAY,
185 DH_SUBGLOBALARRAY,
186 DH_MULGLOBALARRAY,
187 DH_DIVGLOBALARRAY,
188 DH_MODGLOBALARRAY,
189 DH_PUSHGLOBALARRAY,
190 DH_SWAP,
191 DH_DUP,
192 DH_ARRAYSET,
193
194 NUM_DATAHEADERS
195
196 } DATAHEADERS_e;
197 93
198 //***************************************************************************** 94 //*****************************************************************************
199 // These are the different bot events that can be posted to a bot's state. 95 // These are the different bot events that can be posted to a bot's state.
200 typedef enum 96 enum e_event
201 { 97 {
202 BOTEVENT_KILLED_BYENEMY, 98 ev_killed_by_enemy,
203 BOTEVENT_KILLED_BYPLAYER, 99 ev_killed_by_player,
204 BOTEVENT_KILLED_BYSELF, 100 ev_killed_by_self,
205 BOTEVENT_KILLED_BYENVIORNMENT, 101 ev_killed_by_environment,
206 BOTEVENT_REACHED_GOAL, 102 ev_reached_goal,
207 BOTEVENT_GOAL_REMOVED, 103 ev_goal_removed,
208 BOTEVENT_DAMAGEDBY_PLAYER, 104 ev_damaged_by_player,
209 BOTEVENT_PLAYER_SAY, 105 ev_player_say,
210 BOTEVENT_ENEMY_KILLED, 106 ev_enemy_killed,
211 BOTEVENT_RESPAWNED, 107 ev_respawned,
212 BOTEVENT_INTERMISSION, 108 ev_intermission,
213 BOTEVENT_NEWMAP, 109 ev_new_maps,
214 BOTEVENT_ENEMY_USEDFIST, 110 ev_enemy_used_fist,
215 BOTEVENT_ENEMY_USEDCHAINSAW, 111 ev_enemy_used_chainsaw,
216 BOTEVENT_ENEMY_FIREDPISTOL, 112 ev_enemy_fired_pistol,
217 BOTEVENT_ENEMY_FIREDSHOTGUN, 113 ev_enemy_fired_shotgun,
218 BOTEVENT_ENEMY_FIREDSSG, 114 ev_enemy_fired_ssg,
219 BOTEVENT_ENEMY_FIREDCHAINGUN, 115 ev_enemy_fired_chaingun,
220 BOTEVENT_ENEMY_FIREDMINIGUN, 116 ev_enemy_fired_minigun,
221 BOTEVENT_ENEMY_FIREDROCKET, 117 ev_enemy_fired_rocket,
222 BOTEVENT_ENEMY_FIREDGRENADE, 118 ev_enemy_fired_grenade,
223 BOTEVENT_ENEMY_FIREDRAILGUN, 119 ev_enemy_fired_railgun,
224 BOTEVENT_ENEMY_FIREDPLASMA, 120 ev_enemy_fired_plasma,
225 BOTEVENT_ENEMY_FIREDBFG, 121 ev_enemy_fired_bfg,
226 BOTEVENT_ENEMY_FIREDBFG10K, 122 ev_enemy_fired_bfg10k,
227 BOTEVENT_PLAYER_USEDFIST, 123 ev_player_used_fist,
228 BOTEVENT_PLAYER_USEDCHAINSAW, 124 ev_player_used_chainsaw,
229 BOTEVENT_PLAYER_FIREDPISTOL, 125 ev_player_fired_pistol,
230 BOTEVENT_PLAYER_FIREDSHOTGUN, 126 ev_player_fired_shotgun,
231 BOTEVENT_PLAYER_FIREDSSG, 127 ev_player_fired_ssg,
232 BOTEVENT_PLAYER_FIREDCHAINGUN, 128 ev_player_fired_chaingun,
233 BOTEVENT_PLAYER_FIREDMINIGUN, 129 ev_player_fired_minigun,
234 BOTEVENT_PLAYER_FIREDROCKET, 130 ev_player_fired_rocket,
235 BOTEVENT_PLAYER_FIREDGRENADE, 131 ev_player_fired_grenade,
236 BOTEVENT_PLAYER_FIREDRAILGUN, 132 ev_player_fired_railgun,
237 BOTEVENT_PLAYER_FIREDPLASMA, 133 ev_player_fired_plasma,
238 BOTEVENT_PLAYER_FIREDBFG, 134 ev_player_fired_bfg,
239 BOTEVENT_PLAYER_FIREDBFG10K, 135 ev_player_fired_bfg10k,
240 BOTEVENT_USEDFIST, 136 ev_used_fist,
241 BOTEVENT_USEDCHAINSAW, 137 ev_used_chainsaw,
242 BOTEVENT_FIREDPISTOL, 138 ev_fired_pistol,
243 BOTEVENT_FIREDSHOTGUN, 139 ev_fired_shotgun,
244 BOTEVENT_FIREDSSG, 140 ev_fired_ssg,
245 BOTEVENT_FIREDCHAINGUN, 141 ev_fired_chaingun,
246 BOTEVENT_FIREDMINIGUN, 142 ev_fired_minigun,
247 BOTEVENT_FIREDROCKET, 143 ev_fired_rocket,
248 BOTEVENT_FIREDGRENADE, 144 ev_fired_grenade,
249 BOTEVENT_FIREDRAILGUN, 145 ev_fired_railgun,
250 BOTEVENT_FIREDPLASMA, 146 ev_fired_plasma,
251 BOTEVENT_FIREDBFG, 147 ev_fired_bfg,
252 BOTEVENT_FIREDBFG10K, 148 ev_fired_bfg10k,
253 BOTEVENT_PLAYER_JOINEDGAME, 149 ev_player_joined_game,
254 BOTEVENT_JOINEDGAME, 150 ev_joined_game,
255 BOTEVENT_DUEL_STARTINGCOUNTDOWN, 151 ev_duel_starting_countdown,
256 BOTEVENT_DUEL_FIGHT, 152 ev_duel_fight,
257 BOTEVENT_DUEL_WINSEQUENCE, 153 ev_duel_win_sequence,
258 BOTEVENT_SPECTATING, 154 ev_spectating,
259 BOTEVENT_LMS_STARTINGCOUNTDOWN, 155 ev_lms_starting_countdown,
260 BOTEVENT_LMS_FIGHT, 156 ev_lms_fight,
261 BOTEVENT_LMS_WINSEQUENCE, 157 ev_lms_win_sequence,
262 BOTEVENT_WEAPONCHANGE, 158 ev_weapon_change,
263 BOTEVENT_ENEMY_BFGEXPLODE, 159 ev_enemy_bfg_explode,
264 BOTEVENT_PLAYER_BFGEXPLODE, 160 ev_player_bfg_explode,
265 BOTEVENT_BFGEXPLODE, 161 ev_bfg_explode,
266 BOTEVENT_RECEIVEDMEDAL, 162 ev_recieved_medal,
267 163
268 NUM_BOTEVENTS 164 num_bot_events
269 165 };
270 } BOTEVENT_e;
271 166
272 #endif // BOTC_BOTS_H 167 #endif // BOTC_BOTS_H

mercurial