Crossfire Server  1.75.0
food.cpp File Reference

The implementation of the Food class of objects. More...

#include "global.h"
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include "ob_methods.h"
#include "ob_types.h"
#include "sounds.h"
#include "sproto.h"

Go to the source code of this file.

Functions

static void check_heal_and_mana (object *who, object *food)
 
static int dragon_eat_flesh (object *op, object *meal)
 A dragon is eating some flesh. More...
 
static void eat_common (object *applier, object *food)
 
static void eat_special_food (object *who, object *food)
 Handles player eating food that temporarily changes status (resistances, stats). More...
 
static method_ret food_type_apply (object *food, object *applier, int aflags)
 Handles applying food. More...
 
void init_type_food (void)
 Initializer for the food object type. More...
 

Detailed Description

The implementation of the Food class of objects.

Definition in file food.cpp.

Function Documentation

◆ check_heal_and_mana()

◆ dragon_eat_flesh()

static int dragon_eat_flesh ( object op,
object meal 
)
static

A dragon is eating some flesh.

If the flesh contains resistances, there is a chance for the dragon's skin to get improved.

Parameters
opobject (dragon player) eating the flesh.
mealflesh item, getting chewed in dragon's mouth.
Returns
1 if meal was eaten, 0 else.
Note
meal's nrof isn't decreased, caller is responsible for that.

Definition at line 362 of file food.cpp.

References atnr_is_dragon_enabled(), buf, chance(), change_resist_msg, draw_ext_info(), draw_ext_info_format(), living::exp, fix_object(), FLESH, FORCE, is_dragon_pl(), object::last_eat, object::level, MAX_BUF, Settings::max_level, MIN, MSG_TYPE_APPLY, MSG_TYPE_APPLY_SUCCESS, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_PROTECTION_GAIN, MSG_TYPE_ATTRIBUTE_RACE, object::name, NDI_RED, NDI_UNIQUE, NROFATTACKS, object_find_by_type_and_arch_name(), RANDOM, object::resist, settings, object::stats, and object::type.

Referenced by food_type_apply().

◆ eat_common()

static void eat_common ( object applier,
object food 
)
static

◆ eat_special_food()

static void eat_special_food ( object who,
object food 
)
static

◆ food_type_apply()

static method_ret food_type_apply ( object food,
object applier,
int  aflags 
)
static

Handles applying food.

If player is applying, takes care of messages and dragon special food.

Parameters
foodThe food to apply
applierThe object attempting to apply the food
aflagsSpecial flags (always apply/unapply)
Returns
METHOD_OK unless failure for some reason.

Definition at line 125 of file food.cpp.

References apply_handle_yield(), buf, check_heal_and_mana(), object::contr, dragon_eat_flesh(), draw_ext_info(), draw_ext_info_format(), DRINK, eat_common(), eat_special_food(), FLAG_CAN_USE_SKILL, FLAG_CURSED, FLAG_NO_PICK, FLESH, give_skill_by_name(), living::hp, is_dragon_pl(), is_old_wraith_pl(), player::is_wraith, is_wraith_pl(), link_player_skills(), llevError, LOG(), MAX_BUF, living::maxhp, METHOD_OK, MSG_TYPE_APPLY, MSG_TYPE_APPLY_FAILURE, MSG_TYPE_APPLY_SUCCESS, object::name, NDI_UNIQUE, object_decrease_nrof_by_one, play_sound_map(), PLAYER, QUERY_FLAG, SET_FLAG, SOUND_TYPE_ITEM, object::stats, object::title, and object::type.

Referenced by init_type_food().

◆ init_type_food()

void init_type_food ( void  )

Initializer for the food object type.

Definition at line 37 of file food.cpp.

References DRINK, FLESH, FOOD, food_type_apply(), and register_apply().

Referenced by register_all_ob_types().