Mercurial > hg > early-roguelike
view arogue7/eat.c @ 235:2dcf10d45d5b
Rogue V4: add two more function declarations.
Though it was called with different numbers of arguments, add_line()
does not need to be a variadic function. Making the second argument
mandatory is a better solution.
author | John "Elwin" Edwards |
---|---|
date | Mon, 07 Mar 2016 19:26:08 -0500 |
parents | f9ef86cf22b2 |
children |
line wrap: on
line source
/* * eat.c - Functions for dealing with digestion * * Advanced Rogue * Copyright (C) 1984, 1985, 1986 Michael Morgan, Ken Dalka and AT&T * All rights reserved. * * Based on "Rogue: Exploring the Dungeons of Doom" * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman * All rights reserved. * * See the file LICENSE.TXT for full copyright and licensing information. */ #include "curses.h" #include "rogue.h" /* * eat: * He wants to eat something, so let him try */ void eat(void) { register struct linked_list *item; int which; unsigned long temp; if (player.t_action != C_EAT) { if ((item = get_item(pack, "eat", FOOD, FALSE, FALSE)) == NULL) return; player.t_using = item; /* Remember what it is */ player.t_action = C_EAT; /* We are eating */ which = (OBJPTR(item))->o_which; player.t_no_move = max(foods[which].mi_food/100, 1) * movement(&player); return; } /* We have waited our time, let's eat the food */ item = player.t_using; player.t_using = NULL; player.t_action = A_NIL; which = (OBJPTR(item))->o_which; if ((food_left += foods[which].mi_food) > STOMACHSIZE) food_left = STOMACHSIZE; del_pack(item); if (hungry_state == F_SATIATED && food_left == STOMACHSIZE && rnd(4) == 1) { pstats.s_hpt = 0; msg ("You choke on all that food and die! -- More --"); wait_for(' '); death(D_FOOD_CHOKE); } if (food_left >= STOMACHSIZE-MORETIME) { hungry_state = F_SATIATED; msg ("You have trouble getting all that food down."); msg ("Your stomach feels like its about to burst!"); } else { hungry_state = F_OKAY; switch (rnd(3)) { case 0: msg("My, that was a yummy %s", foods[which].mi_name); when 1: msg("Mmmm, that was a tasty %s", foods[which].mi_name); when 2: msg("Wow, that was a scrumptious %s", foods[which].mi_name); } } updpack(TRUE, &player); switch(which) { case E_WHORTLEBERRY: add_abil[A_INTELLIGENCE](1); when E_SWEETSOP: add_abil[A_DEXTERITY](1); when E_SOURSOP: add_abil[A_STRENGTH](1); when E_SAPODILLA: add_abil[A_WISDOM](1); when E_RAMBUTAN: add_abil[A_CONSTITUTION](1); when E_PEACH: add_abil[A_CHARISMA](1); when E_STRAWBERRY: temp = pstats.s_exp/100; pstats.s_exp += temp; if (temp > 0) msg("You feel slightly more experienced now"); check_level(); when E_PITANGA: max_stats.s_hpt++; pstats.s_hpt++; if (terse) msg("You feel a bit tougher now"); else msg("You feel a bit tougher now. Go get 'em!"); when E_HAGBERRY: pstats.s_arm--; msg("Your skin feels more resilient now"); when E_DEWBERRY: if (chant_time > 0) { chant_time -= 50; if (chant_time < 0) chant_time = 0; msg("You feel you have more chant ability"); } if (pray_time > 0) { pray_time -= 50; if (pray_time < 0) pray_time = 0; msg("You feel you have more prayer ability"); } if (spell_power > 0) { spell_power -= 50; if (spell_power < 0) spell_power = 0; msg("You feel you have more spell casting ability"); } otherwise: /* all the foods don't have to do something */ break; } }