// **********************************
// Interpreter variables, flags, etc.
// **********************************

// vars
#define room_no                  v0
#define prev_room_no             v1
#define ego_edge_code            v2
#define score                    v3
#define object_touching_edge     v4
#define object_edge_code         v5
#define ego_dir                  v6
#define max_score                v7
#define free_memory              v8
#define unknown_word_no          v9
#define cycle_delay              v10
#define clock_seconds            v11
#define clock_minutes            v12
#define clock_hours              v13
#define clock_days               v14
#define joystick_sensitivity     v15
#define ego_view_no              v16
#define error_code               v17
#define error_information        v18
#define key_pressed              v19
#define computer_type            v20
#define window_close_time        v21
#define sound_type               v22
#define sound_volume             v23
// not sure what v24 is
#define selected_inventory_item  v25
#define video_mode               v26
#define range                            v49
#define mode                         v50
#define universe                     v51  //A universal temp variable for loops and such
#define sleep_moss                v60 //Holds the quantity of sleep moss v60-v69 used for inventory
#define poison_berries           v61 //" """"" poison berries

#define temp_x                      v70//temporary variables to hold object positions
#define temp_y                      v71
#define temp_x2                    v72
#define temp_y2                    v73
#define temp_x3                    v74
#define temp_y3                    v75
#define room_up                   v90
#define room_left                  v91
#define room_right                v92
#define room_down               v93
#define index                        v94
#define legba_chat                v95
#define timer1_a                    v96
#define timer1_b                   v97
#define tv                             v98
#define ingredient_1              v99
#define ingredient_2              v100
#define ingredient_3              v101
#define block_x      v102
#define block_y      v103
#define block_xr     v104
#define inventorydex v105
#define mama_chat    v106
#define game_point   v107
#define question_data v109
#define question_no   v109
#define golden_caul   v110
#define arpg          v111
#define vg_health     v112
#define dk_health     v113
#define vg_mp         v114
#define turn_no       v115
#define dk_balls      v116
#define phil_chat  v117
#define choice      v118
#define selector    v119
#define escaped     v120
#define food_puzzle v121
#define chat v122
#define use_poison v123
#define dk_special_attack v124

// flags
#define ego_on_water             f0
#define ego_hidden               f1
#define input_recieved           f2
#define ego_touching_signal_line f3
#define input_parsed             f4
#define new_room                 f5
#define game_restarted           f6
#define script_buffer_blocked    f7
#define joystick_sensitivity_set f8
#define sound_on                 f9
#define trace_enabled            f10
#define first_logic0_cycle       f11
#define game_restored            f12
#define inventory_select_enabled f13
#define menu_enabled             f14
#define windows_remain           f15
#define swampy_asleep            f50
#define done_flag                    f51
#define cauldron_on_stove      f52
#define bridge_down               f53
#define handle_fixed               f54
#define mz_switch_1              f55
#define mz_switch_2              f56
#define on_raft                       f57
#define timer_started              f58
#define another_done_flag      f59
#define yet_another_done_flag f60
#define more_done_flag         f61
#define hut_flag                      f62
#define sound_flag                 f63
#define bridge_switch            f64
#define gate_switch            f65
#define doll_flag              f66
#define is_zombie              f67
#define twinkie                f68
#define grub                   f69
#define inmate1                f70
#define inmate2                f71
#define inmate3                f72
#define inmate4                f73
#define inmate5                f74
#define chthugone              f75
#define intro                  f76
#define mama_mold              f77
#define mama_coco              f78
#define mama_newt              f79
#define mama_thor              f80
#define mama_caul               f81
#define really_done_flag        f82
#define penultimate_done_flag   f83
#define shattered               f84
#define guards_asleep           f85
#define pole_and_well           f86
#define open_office             f87
#define se_in_cave              f88
#define mama_venom              f89

// strings
#define prompt_char              s0

// edge codes
#define no_edge                  0
#define horizon_edge             1
#define right_edge               2
#define bottom_edge              3
#define left_edge                4

// directions
#define stopped                  0
#define up                       1
#define upright                  2
#define right                    3
#define downright                4
#define down                     5
#define downleft                 6
#define left                     7
#define upleft                   8

// video modes
#define CGA                      0
#define RGB                      1
#define Hercules                 2
#define EGA                      3
#define VGA                      4

#define empty                     0
#define baited                     1
#define blowfish                 2

#define nothing                   0
#define sleepmoss             1
#define poisonberry           2
#define bluemushroom       3
#define purpleslime           4
#define yellowmold           5

//inventory object defines

#define sleep_moss_ 50
#define poison 51
#define sleep_potion 52
#define poison_berries_ 53
#define cauldron 54
#define blue_mushroom 55
#define purple_slime 56
#define yellow_grave 57
#define dream_brew 58
#define eye_newt 59
#define fishing_rod 60
#define vile_chug 61
#define blow_venom 62
#define voodoo_doll 63
#define bone_rattle 64
#define handle 65
#define blow_fish 66
#define puppet_mange 67
#define mangy_doll   68
#define slime_eater         69
#define fragment_one 70
#define fragment_two 71
#define amulet 72
#define coconut 73
#define thorazine 74
#define gold_shard 75
#define gold_cauldron 76
#define mt_coconut 77
#define sleep_bombs 78
#define lollipop 79
#define jacket_key 80
#define food_tray 81
#define golden_brew 82

// ***********
// Controllers
// ***********

// AGI menu
#define menu_about c21
#define menu_help c2
#define menu_debughelp c33
// File menu
#define menu_save c3
#define menu_restore c5
#define menu_fileseparator c20
#define menu_restart c7
#define menu_quit c1
// Action menu
#define menu_seeobject c22
#define menu_inventory c10
// Special menu
#define menu_soundonoff c16
#define menu_color c6
#define menu_clock c12
#define menu_joystick c15
#define menu_pause c18
// Speed menu
#define menu_normalspeed c24
#define menu_slowspeed c25
#define menu_fastspeed c23
#define menu_fastestspeed c28
// Debug menu
#define menu_gimme  c32

// Keys
#define key_activiate_menu c19
#define key_decreasevolume c26
#define key_increasevolume c27
#define key_clearinputline c17
#define key_echoline c9
#define key_seeobject c4
#define key_debug c14
#define key_object c36
#define key_memory c11
#define key_version c8
#define key_priority c13
#define key_ego c29
#define key_joystick c30
#define key_coords c31

#define left_click  c49

// *************************
// Other variables/flags/etc
// *************************

#define debug_active f32

#define clock_active f34
#define old_clock_seconds v37

#define ego o0
#define new_ego_x v30
#define new_ego_y v31
#define old_ego_x v32
#define old_ego_y v33
#define old_ego_dir v34
#define never_animate_ego f30
#define always_animate_ego f31

#define death_type v35
#define thankyou_timer v36

#define coords_shown f35

#define num_invobjects 33
// This is the number of inventory objects in game. It is used by the debug
// mode when the player types "gimme gimme". Remember to change this when you
// add more objects.

#define disable_game_functions f33
// Set the flag disable_game_functions to stop the player from using things
// like the menu, inventory and saving/restoring games. This is useful in
// places like the introduction when you don't want these things done. Scenes
// like this could test for have.key (i.e. when the user has pressed a key) to
// be bypassed.
// NOTE: disable_game_functions is currently set before the intro is run.
// Remember to make sure it is reset after the intro (this should be done before
// entering the first room).

#define game_version_message " Voodoo Girl\n Queen of the Darned\n v.1.2"
#define game_about_message "Voodoo Girl:  Queen of the Darned...  (C) 2001-2002, Andrew Ulysses Baker"

// Other stuff
#define sound_done f36

// Taken variables, flags, controllers, strings, and objects
// Variables v0 - v26, v30 - v37
// Flags f0 - f15, f30 - f36
// Controllers c1 - c33
// Strings s0
// Objects o0