Mercurial > hg > early-roguelike
annotate xrogue/eat.c @ 136:1fbdefa82533
xrogue: initial support for the -n option.
The scorefile location is also configurable now.
| author | John "Elwin" Edwards | 
|---|---|
| date | Wed, 22 Apr 2015 16:03:00 -0400 | 
| parents | e6179860cb76 | 
| children | f54901b9c39b | 
| rev | line source | 
|---|---|
| 
133
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
2 eat.c - Functions for dealing with digestion | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
3 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
4 XRogue: Expeditions into the Dungeons of Doom | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
5 Copyright (C) 1991 Robert Pietkivitch | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
6 All rights reserved. | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
7 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
8 Based on "Advanced Rogue" | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
9 Copyright (C) 1984, 1985 Michael Morgan, Ken Dalka and AT&T | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
10 All rights reserved. | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
11 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
12 Based on "Rogue: Exploring the Dungeons of Doom" | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
13 Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
14 All rights reserved. | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
15 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
16 See the file LICENSE.TXT for full copyright and licensing information. | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
17 */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
18 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
19 #include <curses.h> | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
20 #include "rogue.h" | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
21 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
22 /* | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
23 * eat: | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
24 * He wants to eat something, so let him try | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
25 */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
26 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
27 eat() | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
28 { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
29 register struct linked_list *item; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
30 int which; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
31 unsigned long temp; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
32 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
33 if (player.t_action != C_EAT) { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
34 if ((item = get_item(pack, "eat", FOOD, FALSE, FALSE)) == NULL) | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
35 return; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
36 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
37 player.t_using = item; /* Remember what it is */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
38 player.t_action = C_EAT; /* We are eating */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
39 which = (OBJPTR(item))->o_which; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
40 player.t_no_move = max(foods[which].mi_food/100, 1) * movement(&player); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
41 return; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
42 } | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
43 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
44 /* We have waited our time, let's eat the food */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
45 item = player.t_using; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
46 player.t_using = NULL; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
47 player.t_action = A_NIL; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
48 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
49 which = (OBJPTR(item))->o_which; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
50 if ((food_left += foods[which].mi_food) > STOMACHSIZE) | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
51 food_left = STOMACHSIZE; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
52 del_pack(item); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
53 if (hungry_state == F_SATIATED && food_left == STOMACHSIZE && rnd(4) == 1) { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
54 pstats.s_hpt = -1; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
55 msg ("Cough! Ack! You choke on all that food and die! --More--"); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
56 wait_for(' '); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
57 death(D_FOOD_CHOKE); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
58 } | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
59 if (food_left >= STOMACHSIZE-MORETIME) { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
60 hungry_state = F_SATIATED; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
61 msg ("You have trouble getting that food down!"); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
62 msg ("Your stomach feels like it's about to burst!"); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
63 } | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
64 else if (which != E_SLIMEMOLD) { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
65 hungry_state = F_OKAY; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
66 switch (rnd(10)) { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
67 case 0: msg("Yuck, what a foul tasting %s! ", foods[which].mi_name); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
68 when 1: msg("Mmmm, what a tasty %s. ", foods[which].mi_name); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
69 when 2: msg("Wow, what a scrumptious %s! ", foods[which].mi_name); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
70 when 3: msg("Hmmm, %s heaven! ", foods[which].mi_name); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
71 when 4: msg("You've eaten better %s. ", foods[which].mi_name); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
72 when 5: msg("You smack your lips "); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
73 when 6: msg("Yum-yum-yum "); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
74 when 7: msg("Gulp! "); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
75 when 8: msg("Your tongue flips out! "); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
76 when 9: msg("You lick your chin "); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
77 } | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
78 } | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
79 updpack(TRUE, &player); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
80 switch(which) { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
81 case E_WHORTLEBERRY: /* add 1 to intelligence */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
82 (*add_abil[A_INTELLIGENCE])(1); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
83 when E_SWEETSOP: /* add 1 to strength */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
84 case E_SOURSOP: /* add 1 to strength */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
85 (*add_abil[A_STRENGTH])(1); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
86 when E_SAPODILLA: /* add 1 to wisdom */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
87 (*add_abil[A_WISDOM])(1); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
88 when E_APPLE: /* add 1 to dexterity */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
89 (*add_abil[A_DEXTERITY])(1); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
90 when E_PRICKLEY: /* add 1 to constitution */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
91 (*add_abil[A_CONSTITUTION])(1); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
92 when E_PEACH: /* add 1 to charisma */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
93 (*add_abil[A_CHARISMA])(1); | 
