Mercurial > hg > early-roguelike
comparison arogue7/eat.c @ 125:adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
author | John "Elwin" Edwards |
---|---|
date | Fri, 08 May 2015 15:24:40 -0400 |
parents | |
children | f9ef86cf22b2 |
comparison
equal
deleted
inserted
replaced
124:d10fc4a065ac | 125:adfa37e67084 |
---|---|
1 /* | |
2 * eat.c - Functions for dealing with digestion | |
3 * | |
4 * Advanced Rogue | |
5 * Copyright (C) 1984, 1985, 1986 Michael Morgan, Ken Dalka and AT&T | |
6 * All rights reserved. | |
7 * | |
8 * Based on "Rogue: Exploring the Dungeons of Doom" | |
9 * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman | |
10 * All rights reserved. | |
11 * | |
12 * See the file LICENSE.TXT for full copyright and licensing information. | |
13 */ | |
14 | |
15 #include "curses.h" | |
16 #include "rogue.h" | |
17 | |
18 /* | |
19 * eat: | |
20 * He wants to eat something, so let him try | |
21 */ | |
22 | |
23 eat() | |
24 { | |
25 register struct linked_list *item; | |
26 int which; | |
27 unsigned long temp; | |
28 | |
29 if (player.t_action != C_EAT) { | |
30 if ((item = get_item(pack, "eat", FOOD, FALSE, FALSE)) == NULL) | |
31 return; | |
32 | |
33 player.t_using = item; /* Remember what it is */ | |
34 player.t_action = C_EAT; /* We are eating */ | |
35 which = (OBJPTR(item))->o_which; | |
36 player.t_no_move = max(foods[which].mi_food/100, 1) * movement(&player); | |
37 return; | |
38 } | |
39 | |
40 /* We have waited our time, let's eat the food */ | |
41 item = player.t_using; | |
42 player.t_using = NULL; | |
43 player.t_action = A_NIL; | |
44 | |
45 which = (OBJPTR(item))->o_which; | |
46 if ((food_left += foods[which].mi_food) > STOMACHSIZE) | |
47 food_left = STOMACHSIZE; | |
48 del_pack(item); | |
49 if (hungry_state == F_SATIATED && food_left == STOMACHSIZE && rnd(4) == 1) { | |
50 pstats.s_hpt = 0; | |
51 msg ("You choke on all that food and die! -- More --"); | |
52 wait_for(' '); | |
53 death(D_FOOD_CHOKE); | |
54 } | |
55 if (food_left >= STOMACHSIZE-MORETIME) { | |
56 hungry_state = F_SATIATED; | |
57 msg ("You have trouble getting all that food down."); | |
58 msg ("Your stomach feels like its about to burst!"); | |
59 } | |
60 else { | |
61 hungry_state = F_OKAY; | |
62 switch (rnd(3)) { | |
63 case 0: msg("My, that was a yummy %s", foods[which].mi_name); | |
64 when 1: msg("Mmmm, that was a tasty %s", foods[which].mi_name); | |
65 when 2: msg("Wow, that was a scrumptious %s", foods[which].mi_name); | |
66 } | |
67 } | |
68 updpack(TRUE, &player); | |
69 switch(which) { | |
70 case E_WHORTLEBERRY: | |
71 add_abil[A_INTELLIGENCE](1); | |
72 | |
73 when E_SWEETSOP: | |
74 add_abil[A_DEXTERITY](1); | |
75 | |
76 when E_SOURSOP: | |
77 add_abil[A_STRENGTH](1); | |
78 | |
79 when E_SAPODILLA: | |
80 add_abil[A_WISDOM](1); | |
81 | |
82 when E_RAMBUTAN: | |
83 add_abil[A_CONSTITUTION](1); | |
84 | |
85 when E_PEACH: | |
86 add_abil[A_CHARISMA](1); | |
87 | |
88 when E_STRAWBERRY: | |
89 temp = pstats.s_exp/100; | |
90 pstats.s_exp += temp; | |
91 if (temp > 0) | |
92 msg("You feel slightly more experienced now"); | |
93 check_level(); | |
94 | |
95 when E_PITANGA: | |
96 max_stats.s_hpt++; | |
97 pstats.s_hpt++; | |
98 if (terse) | |
99 msg("You feel a bit tougher now"); | |
100 else | |
101 msg("You feel a bit tougher now. Go get 'em!"); | |
102 | |
103 when E_HAGBERRY: | |
104 pstats.s_arm--; | |
105 msg("Your skin feels more resilient now"); | |
106 | |
107 when E_DEWBERRY: | |
108 if (chant_time > 0) { | |
109 chant_time -= 50; | |
110 if (chant_time < 0) | |
111 chant_time = 0; | |
112 msg("You feel you have more chant ability"); | |
113 } | |
114 if (pray_time > 0) { | |
115 pray_time -= 50; | |
116 if (pray_time < 0) | |
117 pray_time = 0; | |
118 msg("You feel you have more prayer ability"); | |
119 } | |
120 if (spell_power > 0) { | |
121 spell_power -= 50; | |
122 if (spell_power < 0) | |
123 spell_power = 0; | |
124 msg("You feel you have more spell casting ability"); | |
125 } | |
126 | |
127 otherwise: /* all the foods don't have to do something */ | |
128 break; | |
129 } | |
130 } |