Crossfire Server, Trunk
|
#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) |
static void | eat_common (object *applier, object *food) |
static void | eat_special_food (object *who, object *food) |
static method_ret | food_type_apply (object *food, object *applier, int aflags) |
void | init_type_food (void) |
The implementation of the Food class of objects.
Definition in file food.c.
Definition at line 43 of file food.c.
References AT_POISON, draw_ext_info(), FLAG_CURSED, hit_player(), liv::hp, is_wraith_pl(), MSG_TYPE_APPLY, MSG_TYPE_APPLY_CURSED, MSG_TYPE_APPLY_SUCCESS, obj::name, NDI_UNIQUE, QUERY_FLAG, safe_strncpy, liv::sp, obj::stats, and autojail::who.
Referenced by food_type_apply().
A dragon is eating some flesh. If the flesh contains resistances, there is a chance for the dragon's skin to get improved.
op | object (dragon player) eating the flesh. |
meal | flesh item, getting chewed in dragon's mouth. |
Definition at line 257 of file food.c.
References atnr_is_dragon_enabled(), buf, change_resist_msg, draw_ext_info(), draw_ext_info_format(), liv::exp, fix_object(), FLESH, FORCE, is_dragon_pl(), obj::last_eat, obj::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, obj::name, NDI_RED, NDI_UNIQUE, NROFATTACKS, object_find_by_type_and_arch_name(), give::op, RANDOM, obj::resist, settings, obj::stats, and obj::type.
Referenced by food_type_apply().
Definition at line 78 of file food.c.
References buf, draw_ext_info(), DRINK, liv::food, liv::hp, MAX_BUF, MAX_FOOD, liv::maxhp, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_START, obj::name, NDI_UNIQUE, slow_living_by(), obj::stats, and obj::type.
Referenced by food_type_apply().
Handles player eating food that temporarily changes status (resistances, stats). This used to call cast_change_attr(), but that doesn't work with the new spell code. Since we know what the food changes, just grab a force and use that instead.
who | living eating food. |
food | eaten food. |
Definition at line 203 of file food.c.
References arch_to_object(), change_abil(), create_archetype(), fix_object(), FLAG_APPLIED, FLAG_IS_USED_UP, liv::food, dragon_attune::force, FORCE_NAME, get_attr_value(), INS_ON_TOP, MOVE_PER_SECOND, NROFATTACKS, NUM_STATS, object_free_drop_inventory(), object_insert_in_map_at(), object_insert_in_ob(), object_update_speed(), obj::other_arch, obj::resist, set_attr_value(), SET_FLAG, obj::stats, and autojail::who.
Referenced by food_type_apply().
|
static |
Handles applying food. If player is applying, takes care of messages and dragon special food.
food | The food to apply |
applier | The object attempting to apply the food |
aflags | Special flags (always apply/unapply) |
Definition at line 121 of file food.c.
References apply_handle_yield(), buf, check_heal_and_mana(), 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(), liv::hp, is_dragon_pl(), is_old_wraith_pl(), is_wraith_pl(), link_player_skills(), llevError, LOG(), MAX_BUF, liv::maxhp, METHOD_OK, MSG_TYPE_APPLY, MSG_TYPE_APPLY_FAILURE, MSG_TYPE_APPLY_SUCCESS, obj::name, NDI_UNIQUE, object_decrease_nrof_by_one, play_sound_map(), PLAYER, QUERY_FLAG, SET_FLAG, SOUND_TYPE_ITEM, obj::stats, obj::title, obj::type, and nlohmann::detail::void().
Referenced by init_type_food().
void init_type_food | ( | void | ) |
Initializer for the food object type.
Definition at line 37 of file food.c.
References DRINK, FLESH, FOOD, food_type_apply(), and register_apply().
Referenced by register_all_ob_types().