ScummVM API documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
u6_object_types.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 namespace Ultima {
23 namespace Nuvie {
24 
25 class U6UseCode;
26 
27 const U6ObjectType U6ObjectTypes[] = {
28 // (object,frame,distance to trigger,event(s),function,properties)
29  { &U6UseCode::use_egg, OBJ_U6_EGG, 0, 0, USE_EVENT_USE/*|USE_EVENT_LOAD*/, OBJTYPE_CONTAINER },
30 
31  { &U6UseCode::use_door, OBJ_U6_OAKEN_DOOR, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
32  { &U6UseCode::use_door, OBJ_U6_WINDOWED_DOOR, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
33  { &U6UseCode::use_door, OBJ_U6_CEDAR_DOOR, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
34  { &U6UseCode::use_door, OBJ_U6_STEEL_DOOR, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
35  { &U6UseCode::use_key, OBJ_U6_KEY, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
36  { &U6UseCode::use_key, OBJ_U6_LOCK_PICK, 255, 0, USE_EVENT_USE | USE_EVENT_SEARCH | USE_EVENT_GET, OBJTYPE_NONE },
37 
38  { &U6UseCode::magic_ring, OBJ_U6_PROTECTION_RING, 0, 0, USE_EVENT_READY, OBJTYPE_NONE },
39  { &U6UseCode::magic_ring, OBJ_U6_REGENERATION_RING, 0, 0, USE_EVENT_READY, OBJTYPE_NONE },
40  { &U6UseCode::magic_ring, OBJ_U6_INVISIBILITY_RING, 0, 0, USE_EVENT_READY, OBJTYPE_NONE },
41 
42  { &U6UseCode::use_staff, OBJ_U6_STAFF, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
43 
44  { &U6UseCode::storm_cloak, OBJ_U6_STORM_CLOAK, 0, 0, USE_EVENT_READY, OBJTYPE_NONE },
45 
46  { &U6UseCode::look_sign, OBJ_U6_SIGN, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
47  { &U6UseCode::look_sign, OBJ_U6_BOOK, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
48  { &U6UseCode::look_sign, OBJ_U6_SCROLL, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
49  { &U6UseCode::look_sign, OBJ_U6_PICTURE, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
50  { &U6UseCode::look_sign, OBJ_U6_SIGN_ARROW, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
51  { &U6UseCode::look_sign, OBJ_U6_TOMBSTONE, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
52  { &U6UseCode::look_sign, OBJ_U6_CROSS, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
53  { &U6UseCode::look_sign, OBJ_U6_CODEX, 0, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
54  { &U6UseCode::look_sign, OBJ_U6_BOOK_OF_CIRCLES, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
55 
56  { &U6UseCode::use_container, OBJ_U6_CRATE, 0, 0, USE_EVENT_SEARCH, OBJTYPE_CONTAINER },
57  { &U6UseCode::use_container, OBJ_U6_CRATE, 255, 0, USE_EVENT_USE, OBJTYPE_CONTAINER },
58  { &U6UseCode::use_container, OBJ_U6_BARREL, 0, 0, USE_EVENT_SEARCH, OBJTYPE_CONTAINER },
59  { &U6UseCode::use_container, OBJ_U6_BARREL, 255, 0, USE_EVENT_USE, OBJTYPE_CONTAINER },
60  { &U6UseCode::use_container, OBJ_U6_CHEST, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
61  { &U6UseCode::use_container, OBJ_U6_CHEST, 255, 0, USE_EVENT_USE | USE_EVENT_GET, OBJTYPE_CONTAINER },
62  { &U6UseCode::use_secret_door, OBJ_U6_SECRET_DOOR, 255, 0, USE_EVENT_USE | USE_EVENT_SEARCH, OBJTYPE_NONE },
63  { &U6UseCode::use_container, OBJ_U6_BAG, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
64  { &U6UseCode::use_container, OBJ_U6_BACKPACK, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
65  { &U6UseCode::use_container, OBJ_U6_BASKET, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
66  { &U6UseCode::use_container, OBJ_U6_DRAWER, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
67  { &U6UseCode::use_container, OBJ_U6_DESK, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
68  { &U6UseCode::use_container, OBJ_U6_STONE_LION, 1, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_NONE },
69  { &U6UseCode::use_container, OBJ_U6_MOUSE, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
70  { &U6UseCode::use_container, OBJ_U6_GRAVE, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_NONE },
71  { &U6UseCode::use_container, OBJ_U6_DEAD_ANIMAL, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
72  { &U6UseCode::use_container, OBJ_U6_DEAD_BODY, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
73  { &U6UseCode::use_container, OBJ_U6_DRAKE, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
74  { &U6UseCode::use_container, OBJ_U6_DEAD_CYCLOPS, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
75  { &U6UseCode::use_container, OBJ_U6_DEAD_GARGOYLE, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
76  { &U6UseCode::use_container, OBJ_U6_REAPER, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
77  { &U6UseCode::use_container, OBJ_U6_REMAINS, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
78  { &U6UseCode::use_container, OBJ_U6_DEER, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
79  { &U6UseCode::use_container, OBJ_U6_MONGBAT, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
80 
81  { &U6UseCode::use_passthrough, OBJ_U6_V_PASSTHROUGH, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
82  { &U6UseCode::use_passthrough, OBJ_U6_H_PASSTHROUGH, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
83 
84  { &U6UseCode::use_switch, OBJ_U6_LEVER, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
85  { &U6UseCode::use_switch, OBJ_U6_SWITCH, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
86 
87  { &U6UseCode::use_churn, OBJ_U6_CHURN, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
88 
89  { &U6UseCode::use_fishing_pole, OBJ_U6_FISHING_POLE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
90 
91 
92  { &U6UseCode::use_crank, OBJ_U6_CRANK, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
93 
94  { &U6UseCode::use_container, OBJ_U6_BED, 255, 0, USE_EVENT_SEARCH, OBJTYPE_CONTAINER },
95 
96  { &U6UseCode::use_firedevice, OBJ_U6_FIREPLACE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
97  { &U6UseCode::use_firedevice, OBJ_U6_CANDLE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
98  { &U6UseCode::use_firedevice, OBJ_U6_CANDELABRA, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
99  { &U6UseCode::use_firedevice, OBJ_U6_BRAZIER, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
100  { &U6UseCode::use_firedevice, OBJ_U6_BRAZIER, 1, 0, USE_EVENT_USE, OBJTYPE_NONE },
101  { &U6UseCode::holy_flame, OBJ_U6_BRAZIER, 2, 0, USE_EVENT_LOOK, OBJTYPE_NONE },
102  { &U6UseCode::torch, OBJ_U6_TORCH, 255, 0, USE_EVENT_USE | USE_EVENT_READY | USE_EVENT_GET | USE_EVENT_DROP, OBJTYPE_NONE },
103  { &U6UseCode::use_spellbook, OBJ_U6_SPELLBOOK, 255, 0, USE_EVENT_USE | USE_EVENT_LOOK, OBJTYPE_NONE },
104 
105  { &U6UseCode::use_moonstone, OBJ_U6_MOONSTONE, 255, 0, USE_EVENT_USE | USE_EVENT_GET, OBJTYPE_NONE },
106  { &U6UseCode::use_orb, OBJ_U6_ORB_OF_THE_MOONS, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
107  { &U6UseCode::enter_moongate, OBJ_U6_MOONGATE, 1, 0, USE_EVENT_PASS, OBJTYPE_NONE },
108  { &U6UseCode::enter_moongate, OBJ_U6_RED_GATE, 1, 0, USE_EVENT_PASS, OBJTYPE_NONE },
109  { &U6UseCode::use_ladder, OBJ_U6_LADDER, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
110  { &U6UseCode::enter_dungeon, OBJ_U6_CAVE, 255, 0, USE_EVENT_PASS, OBJTYPE_NONE },
111  { &U6UseCode::enter_dungeon, OBJ_U6_HOLE, 255, 0, USE_EVENT_USE | USE_EVENT_PASS, OBJTYPE_NONE },
112 
113  { &U6UseCode::look_clock, OBJ_U6_CLOCK, 255, 0, USE_EVENT_LOOK, OBJTYPE_NONE },
114  { &U6UseCode::look_clock, OBJ_U6_SUNDIAL, 255, 0, USE_EVENT_LOOK, OBJTYPE_NONE },
115  { &U6UseCode::look_mirror, OBJ_U6_MIRROR, 255, 0, USE_EVENT_LOOK, OBJTYPE_NONE },
116  { &U6UseCode::use_well, OBJ_U6_WELL, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
117  { &U6UseCode::use_powder_keg, OBJ_U6_POWDER_KEG, 255, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
118  { &U6UseCode::use_peer_gem, OBJ_U6_GEM, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
119 
120  { &U6UseCode::use_beehive, OBJ_U6_BEEHIVE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
121 
122  { &U6UseCode::use_potion, OBJ_U6_POTION, 255, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
123  { &U6UseCode::use_food, OBJ_U6_BUTTER, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
124  { &U6UseCode::use_food, OBJ_U6_WINE, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
125  { &U6UseCode::use_food, OBJ_U6_MEAD, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
126  { &U6UseCode::use_food, OBJ_U6_ALE, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
127  { &U6UseCode::use_food, OBJ_U6_BREAD, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
128  { &U6UseCode::use_food, OBJ_U6_MEAT_PORTION, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
129  { &U6UseCode::use_food, OBJ_U6_ROLLS, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
130  { &U6UseCode::use_food, OBJ_U6_CAKE, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
131  { &U6UseCode::use_food, OBJ_U6_CHEESE, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
132  { &U6UseCode::use_food, OBJ_U6_RIBS, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
133  { &U6UseCode::use_food, OBJ_U6_MEAT, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
134  { &U6UseCode::use_food, OBJ_U6_GRAPES, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
135  { &U6UseCode::use_food, OBJ_U6_HAM, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
136  { &U6UseCode::use_food, OBJ_U6_GARLIC, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
137  { &U6UseCode::use_food, OBJ_U6_HORSE_CHOPS, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
138  { &U6UseCode::use_food, OBJ_U6_JAR_OF_HONEY, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
139  { &U6UseCode::use_food, OBJ_U6_DRAGON_EGG, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
140  { &U6UseCode::use_food, OBJ_U6_FISH, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
141 
142  { &U6UseCode::use_fan, OBJ_U6_FAN, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
143  { &U6UseCode::use_sextant, OBJ_U6_SEXTANT, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
144 
145  { &U6UseCode::use_cow, OBJ_U6_COW, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
146  { &U6UseCode::use_horse, OBJ_U6_HORSE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
147  { &U6UseCode::use_horse, OBJ_U6_HORSE_WITH_RIDER, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
148 
149  { &U6UseCode::use_boat, OBJ_U6_SHIP, 255, 0, USE_EVENT_USE | USE_EVENT_SEARCH | USE_EVENT_LOOK, OBJTYPE_NONE },
150  { &U6UseCode::use_boat, OBJ_U6_SKIFF, 255, 0, USE_EVENT_USE | USE_EVENT_GET | USE_EVENT_LOOK, OBJTYPE_NONE },
151  { &U6UseCode::use_boat, OBJ_U6_RAFT, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
152  // don't want OBJTYPE_BOOK so that we will always use the plans when double clicking
153  { &U6UseCode::use_balloon_plans, OBJ_U6_BALLOON_PLANS, 0, 0, USE_EVENT_USE | USE_EVENT_LOOK, OBJTYPE_NONE },
154  { &U6UseCode::use_balloon, OBJ_U6_BALLOON, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
155  { &U6UseCode::use_balloon, OBJ_U6_INFLATED_BALLOON, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
156 
157  { &U6UseCode::pass_quest_barrier, OBJ_U6_QUEST_GATE, 0, 0, USE_EVENT_PASS, OBJTYPE_NONE },
158 
159  { &U6UseCode::use_rune, OBJ_U6_RUNE_HONESTY, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
160  { &U6UseCode::use_rune, OBJ_U6_RUNE_COMPASSION, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
161  { &U6UseCode::use_rune, OBJ_U6_RUNE_VALOR, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
162  { &U6UseCode::use_rune, OBJ_U6_RUNE_JUSTICE, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
163  { &U6UseCode::use_rune, OBJ_U6_RUNE_SACRIFICE, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
164  { &U6UseCode::use_rune, OBJ_U6_RUNE_HONOR, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
165  { &U6UseCode::use_rune, OBJ_U6_RUNE_SPIRITUALITY, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
166  { &U6UseCode::use_rune, OBJ_U6_RUNE_HUMILITY, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
167 
168  { &U6UseCode::use_firedevice, OBJ_U6_CAMPFIRE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
169 
170  { &U6UseCode::use_vortex_cube, OBJ_U6_VORTEX_CUBE, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
171  { &U6UseCode::use_bell, OBJ_U6_PULL_CHAIN, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
172  { &U6UseCode::use_bell, OBJ_U6_BELL, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
173  { &U6UseCode::use_shovel, OBJ_U6_SHOVEL, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
174  { &U6UseCode::use_shovel, OBJ_U6_PICK, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
175  { &U6UseCode::use_fountain, OBJ_U6_FOUNTAIN, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
176  { &U6UseCode::use_rubber_ducky, OBJ_U6_RUBBER_DUCKY, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
177  { &U6UseCode::use_cannon, OBJ_U6_CANNON, 255, 0, USE_EVENT_USE | USE_EVENT_MOVE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
178  { &U6UseCode::amulet_of_submission, OBJ_U6_AMULET_OF_SUBMISSION, 0, 0, USE_EVENT_READY | USE_EVENT_DROP | USE_EVENT_MOVE, OBJTYPE_NONE },
179  { &U6UseCode::gargish_vocabulary, OBJ_U6_GARGISH_VOCABULARY, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
180 
181  { &U6UseCode::use_crystal_ball, OBJ_U6_CRYSTAL_BALL, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
182 
183  { &U6UseCode::play_instrument, OBJ_U6_PANPIPES, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
184  { &U6UseCode::use_harpsichord, OBJ_U6_HARPSICHORD, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_NONE },
185  { &U6UseCode::play_instrument, OBJ_U6_HARP, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
186  { &U6UseCode::play_instrument, OBJ_U6_LUTE, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
187  { &U6UseCode::play_instrument, OBJ_U6_XYLOPHONE, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
188 
189  { nullptr, OBJ_U6_NOTHING, 0, 0, 0, OBJTYPE_NONE } // end indicator
190 };
191 
192 } // End of namespace Nuvie
193 } // End of namespace Ultima
Definition: detection.h:27