1/*
2 *
3 *  Copyright (C) 2006  Alun Bestor
4 *
5 *  This program is free software; you can redistribute it and/or modify
6 *  it under the terms of the GNU General Public License as published by
7 *  the Free Software Foundation; either version 2 of the License, or
8 *  (at your option) any later version.
9 *
10 *  This program is distributed in the hope that it will be useful,
11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 *  GNU General Public License for more details.
14 *
15 *  You should have received a copy of the GNU General Public License
16 *  along with this program; if not, write to the Free Software
17 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 *
19 *
20 *	This header file defines constants for shapes and frames in Black Gate's
21 *	SHAPES.VGA. Fill them in as you go along! It is best to use enums to group
22 *	shapes thematically by type and frames by shape, rather than attempting to
23 *	order them numerically.
24 *
25 *	Author: Alun Bestor (exult@washboardabs.net)
26 *	Last Modified: 2006-03-19
27*/
28
29//Shapes
30//------
31
32//Shapes used by NPCs (ones that will talk to you and have schedules). Note that there's a bit of confusion between this and monster_shapes since some NPCs have the monster flag (even though they are human).
33//Also note that some of these are duplicated to make 'monster' versions - you can find those in monster_shapes below.
34enum npc_shapes
35{
36	//NPCs with unique appearances
37	SHAPE_MALE_AVATAR	= 721,
38	SHAPE_FEMALE_AVATAR	= 989,
39	SHAPE_FERRYMAN		= 155,	//Doom Scythe is built into shape, unlike FERRYMAN2
40	SHAPE_FERRYMAN2		= 952,	//Actually this version is a monster...not sure which actually got used
41	SHAPE_ALAGNER		= 227,
42	SHAPE_PAPA			= 228,
43	SHAPE_MAMA			= 229,
44	SHAPE_UNICORN		= 375,
45	SHAPE_KISSME		= 382,
46	SHAPE_FAIRY			= 382,
47	SHAPE_BATLIN		= 403,
48	SHAPE_BATLIN2		= 482,	//Not sure which is the Real Batlin and which is the clone
49
50	SHAPE_IOLO			= 465,
51	SHAPE_SHAMINO		= 487,
52	SHAPE_DUPRE			= 488,
53	SHAPE_SPARK			= 489,
54	SHAPE_JAANA			= 490,
55
56	SHAPE_LORD_BRITISH	= 466,
57	SHAPE_SMITH			= 476,	//Smith the Horse
58	SHAPE_FRANK			= 477,	//Frank the Fox
59	SHAPE_SHERRY		= 478,	//Sherry the Mouse
60	SHAPE_DRAXINUSOM	= 480,	//Sherry the Mouse
61
62	SHAPE_HOOK			= 506,	//Hook is a monster, yet Forskis isn't. Huh.
63	SHAPE_FORSKIS		= 805,
64	SHAPE_ELIZABETH		= 881,
65	SHAPE_ABRAHAM		= 882,
66
67	SHAPE_EMP				= 479,	//There's also a monster emp, SHAPE_MONSTER_EMP. Could be this one is Saralek, and the monster one is everyone else
68	SHAPE_TROLL				= 861, //Not to be confused with monster trolls, this one is used for the troll jailer and troll prisoner
69
70	SHAPE_CYCLOPS			= 380,	//Friendly Cyclops, not monster cyclops (probably Iskender)
71	SHAPE_WISP				= 534,
72
73	//Gargoyle shapes
74	SHAPE_GARGOYLE_FLYING	= 226,	//Never used AFAIK
75	SHAPE_GARGOYLE_WINGED	= 274,
76	SHAPE_GARGOYLE_WARRIOR	= 274,	//White straps across torso
77	SHAPE_GARGOYLE_NOBLE	= 473,	//Circlet on head
78	SHAPE_GARGOYLE_WORKER	= 475,	//No wings
79	SHAPE_GARGOYLE_WINGLESS	= 475,
80
81	//While these have the MONSTER flag, they are only used as NPCs AFAIK
82	SHAPE_GHOST_FEMALE		= 299,
83	SHAPE_GHOST_MALE		= 317,
84
85	//General human shapes
86	SHAPE_SAGE_MALE			= 318,
87	SHAPE_SAGE_FEMALE		= 448,
88	SHAPE_MAGE_MALE			= 445,
89	SHAPE_MAGE_FEMALE		= 446,
90
91	SHAPE_SHOPKEEPER_FEMALE	= 454,
92	SHAPE_SHOPKEEPER_MALE	= 455,
93
94	SHAPE_PEASANT_MALE		= 319,
95	SHAPE_PEASANT_FEMALE	= 452,
96	SHAPE_PEASANT_CHILD		= 471,
97	SHAPE_PEASANT_CHILD2	= 965,	//Identical in appearance to CHILD
98
99	SHAPE_WOUNDED_MAN		= 447,
100	SHAPE_BEGGAR_CRUTCHES	= 449,
101	SHAPE_BEGGAR_NOLEGS		= 450,
102
103	SHAPE_NOBLE_MALE		= 451,
104	SHAPE_NOBLE_FEMALE		= 456,
105	SHAPE_NOBLE_CHILD		= 472,
106
107	SHAPE_GYPSY_MALE		= 457,
108	SHAPE_PIRATE			= 458,
109	SHAPE_WENCH				= 459,
110	SHAPE_RANGER_MALE		= 460,
111	SHAPE_RANGER_FEMALE		= 461,
112
113	SHAPE_FIGHTER_MALE		= 462,
114	SHAPE_FIGHTER_FEMALE	= 463,
115	SHAPE_PALADIN			= 464,
116
117	SHAPE_JESTER				= 467,
118	SHAPE_HIGHWAYMAN			= 485,	//Only used once, AFAIK
119	SHAPE_ENTERTAINER_MALE		= 468,
120	SHAPE_ENTERTAINER_FEMALE	= 469,
121
122	SHAPE_TOWNSMAN			= 265,
123	SHAPE_BLACKSMITH		= 304,
124	SHAPE_GUARD				= 720,	//Yes, the actual real-McCoy guard
125	SHAPE_BARKEEP			= 957,	//Looks identical to SHOPKEEPER_MALE, just different name
126
127	SHAPE_BABY				= 730,	//This is just an object, basically. Kinda creepy.
128	SHAPE_TODDLER			= 864
129};
130
131//Shapes used by 'monsters' - i.e. combatants and humans without schedules
132enum monster_shapes
133{
134	//Unique monsters
135	SHAPE_ETHEREAL_MONSTER	= 230,
136	SHAPE_HYDRA				= 381,
137	SHAPE_STONE_HARPIE		= 753,
138	SHAPE_GOLEM				= 1015,
139
140	//Human 'monsters'
141	SHAPE_MONSTER_MAGE		= 154,
142	SHAPE_MONSTER_PALADIN	= 247,
143	SHAPE_MONSTER_FIGHTER	= 259,
144	SHAPE_MONSTER_GUARD		= 394,
145	SHAPE_MONSTER_GUARD2	= 806,
146	SHAPE_MONSTER_GUARD3	= 946,	//Certainly laying it on with the duplicate guards.
147									//(Presumably they each have different appearances and abilities.)
148	SHAPE_MONSTER_PIRATE	= 401,
149	SHAPE_MONSTER_EMP		= 784,	//Not sure why this is a monster?
150	SHAPE_MONSTER_GARGOYLE	= 883,	//Of the Wingless variety
151	SHAPE_FELLOWSHIP_MALE	= 884,	//Found on Isle of the Avatar
152	SHAPE_FELLOWSHIP_FEMALE	= 929,	//Found on Isle of the Avatar
153
154	SHAPE_GHOST				= 299,	//Your generic white-sheet jobbie
155
156	//Both of these are monsters - one has a crown, the other is more tatty. Not sure which is Horance.
157	SHAPE_LICHE				= 354,
158	SHAPE_LICHE2			= 519,
159
160	SHAPE_ACID_SLUG			= 491,
161	SHAPE_ALLIGATOR			= 492,
162	SHAPE_BAT				= 493,
163	SHAPE_CORPSER			= 499,
164
165	SHAPE_MONSTER_CYCLOPS	= 501,	//Not to be confused with SHAPE_CYCLOPS, which is the friendly NPC version
166
167	SHAPE_DRAGON			= 504,
168	SHAPE_DRAKE				= 505,
169
170	SHAPE_GAZER				= 511,
171	SHAPE_GREMLIN			= 513,
172	SHAPE_HEADLESS			= 514,
173
174	SHAPE_REAPER			= 524,
175	SHAPE_SEA_SERPENT		= 525,
176
177	SHAPE_SKELETON			= 528,
178	SHAPE_SLIME				= 529,
179
180	SHAPE_HARPIE			= 532,
181	SHAPE_MONSTER_TROLL		= 533,	//There's also an NPC troll, SHAPE_TROLL
182
183	SHAPE_TENTACLES			= 536,
184	SHAPE_MONGBAT			= 661
185};
186
187//Shapes used by 'normal' animals (i.e., real-life ones, whether friendly or hostile)
188enum animal_shapes
189{
190	SHAPE_BEE		= 494,
191	SHAPE_CAT		= 495,
192	SHAPE_DOG		= 496,
193	SHAPE_CHICKEN	= 498,
194	SHAPE_COW		= 500,
195	SHAPE_DEER		= 502,
196	SHAPE_FISH		= 509,	//live fish in the water, not dead ones on your plate (those are frames of SHAPE_FOOD, see food_frames below)
197	SHAPE_FOX		= 510,	//Not to be confused with Frank the Fox, who is SHAPE_FRANK
198	SHAPE_FLY		= 517,
199	SHAPE_MOUSE		= 521,	//Not to be confused with Sherry the Mouse, who is SHAPE_SHERRY
200	SHAPE_RAT		= 523,
201	SHAPE_SNAKE		= 530,
202	SHAPE_WOLF		= 537,
203	SHAPE_SCORPION	= 706,
204	SHAPE_BIRD		= 716,
205	SHAPE_HORSE		= 727,		//Not to be confused with Smith the Horse, who is SHAPE_SMITH
206	SHAPE_DRAFT_HORSE	= 796,	//These hardly count as an animal, poor things
207	SHAPE_RABBIT	= 811,
208	SHAPE_SPIDER	= 865,
209	SHAPE_SHEEP		= 970
210};
211
212const int SHAPE_KEY				= 641;
213const int SHAPE_GOLD			= 644;	//Filthy lucre
214const int SHAPE_SCROLL			= 797;
215const int SHAPE_EGG				= 275;
216const int SHAPE_FISHING_ROD		= 662;	//fishing rod (quel surprise)
217
218const int SHAPE_RUNE			= 877;
219const int SHAPE_ORB				= 785;	//Orb of the Moons
220
221const int SHAPE_PRISM			= 981;	//The Guardian's three prisms
222
223const int SHAPE_FOOD			= 377;
224const int SHAPE_BOTTLE			= 616;
225const int SHAPE_REAGENT			= 842;
226const int SHAPE_KITCHEN_ITEM	= 863;
227const int SHAPE_BUCKET			= 810;
228const int SHAPE_POWDER_KEG		= 704;
229
230const int SHAPE_DOUGH			= 658;
231const int SHAPE_HEARTH			= 831;
232
233const int SHAPE_WHEAT			= 677;
234const int SHAPE_MILLSTONE		= 711;
235
236const int SHAPE_WELL			= 740;
237const int SHAPE_WELLBASE		= 470;
238const int SHAPE_ROCK			= 331;
239
240const int SHAPE_WORKTABLE_VERTICAL		= 1003;
241const int SHAPE_WORKTABLE_HORIZONTAL	= 1018;
242
243const int SHAPE_EMPTY_CRADLE	= 992;
244const int SHAPE_FULL_CRADLE		= 987;
245
246const int SHAPE_SPILL = 912;
247
248enum light_sources
249{
250	SHAPE_LIGHTSOURCE		= 336,
251	SHAPE_SCONCE			= 481,
252	SHAPE_TORCH				= 595,
253	SHAPE_LIGHTSOURCE_LIT	= 338,
254	SHAPE_SCONCE_LIT		= 435,
255	SHAPE_TORCH_LIT			= 701,
256	SHAPE_CAMPFIRE			= 825
257	//SHAPE_FIREPIT lives in forging_shapes below
258};
259
260enum cloth_shapes
261{
262	SHAPE_THREAD	= 654,
263	SHAPE_LOOM		= 261,
264	SHAPE_CLOTH		= 851,
265	SHAPE_BANDAGE	= 827,
266	SHAPE_TOP		= 249,
267	SHAPE_PANTS		= 738,
268	SHAPE_TOY		= 742,
269	SHAPE_CLOAK		= 285,
270	SHAPE_COSTUME	= 838,
271	SHAPE_HOOD		= 444,
272	SHAPE_SHEARS	= 698,
273	SHAPE_WOOL		= 653
274};
275
276//Door shapes
277enum door_shapes
278{
279	SHAPE_DOOR_HORIZONTAL		= 270,
280	SHAPE_DOOR_VERTICAL			= 376,
281	SHAPE_DOOR2_HORIZONTAL		= 432,
282	SHAPE_DOOR2_VERTICAL		= 433,
283
284	SHAPE_ABBEY_DOOR_LEFT_HORIZONTAL	= 246,
285	SHAPE_ABBEY_DOOR_RIGHT_HORIZONTAL	= 225,
286
287	SHAPE_ABBEY_DOOR_LEFT_VERTICAL	= 250,
288	SHAPE_ABBEY_DOOR_RIGHT_VERICAL	= 392	//Note: This is actually a copy of ABBEY_DOOR_LEFT_VERTICAL. Maybe they screwed up but never used them anyway.
289};
290
291//Chest shapes
292enum chest_shapes
293{
294	SHAPE_CHEST			= 800,
295	SHAPE_LOCKED_CHEST	= 522
296};
297
298//Shapes used in mining
299enum mining_shapes
300{
301	SHAPE_MINING_MACHINE	= 410,
302	SHAPE_CONVEYOR_BELT		= 411,
303	SHAPE_BLACKROCK			= 914,
304	SHAPE_LEAD_ORE			= 915,
305	SHAPE_IRON_ORE			= 916,
306	SHAPE_STONE_CHIPS		= 815
307};
308
309//Shapes used in weaponsmithing (e.g. Forge of Virtue)
310enum forging_shapes
311{
312	SHAPE_SWORDBLANK		= 668,
313	SHAPE_ANVIL				= 991,
314	SHAPE_TROUGH_VERTICAL	= 719,
315	SHAPE_TROUGH_HORIZONTAL	= 741,
316	SHAPE_FIREPIT			= 739
317};
318
319enum moongate_shapes
320{
321	SHAPE_ORB_MOONGATE_HORIZONTAL	= 779,
322	SHAPE_ORB_MOONGATE_VERTICAL		= 157,
323	SHAPE_STANDING_RED_MOONGATE		= 776,
324	SHAPE_STANDING_BLUE_MOONGATE	= 777
325};
326
327enum weapon_shapes
328{
329	SHAPE_HAMMER		= 623,
330	SHAPE_CUSTOM_SWORD	= 635,
331	SHAPE_BLACK_SWORD	= 707
332};
333
334//Frames
335//------
336
337//these are frames of SHAPE_TOP
338const int FRAME_SHIRT	= 0;
339const int FRAME_DRESS1	= 1;
340const int FRAME_DRESS2	= 2;
341
342const int FRAME_CUBE			= 1;	//the cube prism
343
344const int FRAME_RUNE_HONOR		= 6;
345
346enum kitchen_item_frames
347{
348	FRAME_FLOURSACK_OPEN	= 0,
349	FRAME_PITCHER			= 2,
350
351	FRAME_ROLLINGPIN	= 8,
352	FRAME_ROLLINGPIN_2	= 9,
353	FRAME_FLOURSACK		= 13,
354	FRAME_FLOURSACK_2	= 14,
355	FRAME_CHURN			= 15
356};
357
358enum food_frames
359{
360	FRAME_BREAD			= 0,
361	FRAME_ROLLS			= 1,
362	FRAME_BAGUETTE		= 2,
363	FRAME_BREAD_LONG	= 2,	//for you Francophobes (or should I call it "FRAME_BREAD_FREEDOM"?)
364	FRAME_FRUITCAKE		= 3,
365	FRAME_CAKE			= 4,
366	FRAME_PIE			= 5,
367	FRAME_PASTRY		= 6,
368
369	FRAME_SAUSAGES		= 7,
370	FRAME_MUTTON		= 8,
371	FRAME_BEEF			= 9,
372	FRAME_CHICKEN		= 10,
373	FRAME_HAM			= 11,
374	FRAME_TROUT			= 12,
375	FRAME_FLOUNDER		= 13,
376	FRAME_VENISON		= 14,
377	FRAME_JERKY			= 15,
378
379	FRAME_APPLE			= 16,
380	FRAME_BANANA		= 17,
381	FRAME_CARROTS		= 18,
382	FRAME_CARROT		= 18,
383	FRAME_GRAPES		= 19,
384	FRAME_PUMPKIN1		= 20,
385	FRAME_PUMPKIN_LARGE	= 20,
386	FRAME_PUMPKIN2		= 21,
387	FRAME_PUMPKIN_SMALL	= 21,
388	FRAME_LEEK			= 22,
389
390	FRAME_RIBS			= 23,
391	FRAME_EGG			= 24,
392
393	FRAME_BUTTER		= 25,
394	FRAME_CHEESE1		= 26,
395	FRAME_CHEESE_WHEEL	= 26,
396	FRAME_CHEESE2		= 27,
397	FRAME_CHEESE_WEDGE	= 27,
398	FRAME_CHEESE3		= 28,
399	FRAME_CHEESE_GREEN	= 28,
400
401	FRAME_POTATO			= 29,
402	FRAME_FISH_AND_CHIPS	= 30,
403	FRAME_SILVERLEAF		= 31
404};
405
406enum bottle_frames
407{
408	FRAME_MILK				= 7
409};
410
411enum dough_frames	//used in baking.uc
412{
413	FRAME_FLOUR			= 0,
414	FRAME_DOUGH_FLAT	= 1,	//this will now create a pastry when cooked in the oven
415	FRAME_DOUGH_BALL	= 2
416};
417
418enum bucket_frames
419{
420	FRAME_BUCKET_EMPTY	= 0,
421	FRAME_BUCKET_WATER	= 1,
422	FRAME_BUCKET_BLOOD	= 2,
423	FRAME_BUCKET_WINE	= 3,
424	FRAME_BUCKET_BEER	= 4,
425	FRAME_BUCKET_BEER2	= 5,
426	FRAME_WATERINGCAN	= 6
427};
428