Crossfire Server, Trunk
R22010
|
#include "autoconf.h"
#include <sys/socket.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdio.h>
#include <unistd.h>
#include "compat.h"
#include "config.h"
#include "define.h"
#include "logger.h"
#include "shared/newclient.h"
#include "face.h"
#include "attack.h"
#include "material.h"
#include "living.h"
#include "object.h"
#include "map.h"
#include "tod.h"
#include "skills.h"
#include "account_char.h"
#include "newserver.h"
#include "party.h"
#include "player.h"
#include "treasure.h"
#include "commands.h"
#include "book.h"
#include "ob_methods.h"
#include "ob_types.h"
#include "artifact.h"
#include "god.h"
#include "race.h"
#include "recipe.h"
#include "spells.h"
#include "stringbuffer.h"
#include "libproto.h"
#include "sockproto.h"
#include "typesproto.h"
#include "plugin.h"
Go to the source code of this file.
Data Structures | |
struct | linked_char |
struct | Settings |
struct | Statistics |
Macros | |
#define | dirent direct |
#define | EXTERN extern |
#define | FREE_AND_CLEAR(xyz) { free(xyz); xyz = NULL; } |
#define | FREE_AND_CLEAR_STR(xyz) { free_string(xyz); xyz = NULL; } |
#define | FREE_AND_CLEAR_STR_IF(xyz) { if (xyz) { free_string(xyz); xyz = NULL; } } |
#define | FREE_AND_COPY(sv, nv) { if (sv) free_string(sv); sv = add_string(nv); } |
#define | FREE_AND_COPY_IF(sv, nv) { if (sv) free_string(sv); sv = nv ? add_string(nv) : NULL; } |
#define | GET_ANIM(ob) (ob->temp_animation ? ob->temp_animation : ob->animation) |
#define | GET_ANIM_ID(ob) (ob->temp_animation ? ob->temp_animation->num : (ob->animation ? ob->animation->num : 0)) |
#define | GET_ANIMATION(ob, anim) ((ob->temp_animation ? ob->temp_animation : ob->animation)->faces[anim]) |
#define | MAX_TOTAL_EXPERIENCE (settings.permanent_exp_ratio ? (MAX_EXPERIENCE * 100 / settings.permanent_exp_ratio) : 0) |
#define | NAMLEN(dirent) (dirent)->d_namlen |
#define | NUM_ANIMATIONS(ob) ((ob->temp_animation ? ob->temp_animation : ob->animation)->num_animations) |
#define | NUM_FACINGS(ob) ((ob->temp_animation ? ob->temp_animation : ob->animation)->facings) |
#define | PERM_EXP(exptotal) (exptotal * settings.permanent_exp_ratio / 100 ) |
#define | ROTATE_RIGHT(c) if ((c)&01) (c) = ((c)>>1)+0x80000000; else (c) >>= 1; |
#define | SCRIPT_FIX_ACTIVATOR 2 |
#define | SCRIPT_FIX_ALL 1 |
#define | SCRIPT_FIX_NOTHING 0 |
#define | SET_ANIMATION(ob, newanim) { ob->face = (ob->temp_animation ? ob->temp_animation : ob->animation)->faces[newanim]; } |
Typedefs | |
typedef void(* | collectorHook) (FILE *, const char *) |
typedef struct linked_char | linked_char |
typedef struct Settings | Settings |
typedef const char * | sstring |
typedef struct Statistics | Statistics |
Global type definitions and header inclusions.
Definition in file global.h.
#define EXTERN extern |
#define FREE_AND_CLEAR | ( | xyz | ) | { free(xyz); xyz = NULL; } |
Free the pointer and then set it to NULL. This is generally done as a safety, and having this macro makes the code a bit cleaner when doing so.
Definition at line 193 of file global.h.
Referenced by free_experience(), free_globals(), free_map(), free_newsocket(), include_map_in_map(), init_stats(), metaserver2_init(), object_copy(), object_free(), and object_merge_spell().
#define FREE_AND_CLEAR_STR | ( | xyz | ) | { free_string(xyz); xyz = NULL; } |
Release the shared string, and set it to NULL. Must not be NULL.
Definition at line 198 of file global.h.
Referenced by cast_invisible(), clear_player(), command_follow(), command_nowiz(), command_rename_item(), explode_bullet(), fix_stopped_arrow(), free_globals(), make_visible(), move_creator(), object_clear(), object_free(), object_free_key_values(), object_set_value_s(), pets_summon_golem(), place_fountain_with_specials(), process_players1(), receive_play_again(), sell_item(), and set_spell_skill().
#define FREE_AND_CLEAR_STR_IF | ( | xyz | ) | { if (xyz) { free_string(xyz); xyz = NULL; } } |
Definition at line 200 of file global.h.
Referenced by Messages::destroy().
#define FREE_AND_COPY | ( | sv, | |
nv | |||
) | { if (sv) free_string(sv); sv = add_string(nv); } |
Release the shared string if not NULL, and make it a reference to nv.
Definition at line 204 of file global.h.
Referenced by cast_create_town_portal(), cast_detection(), cfapi_object_set_property(), change_treasure(), command_rename_item(), create_player_cmd(), do_symptoms(), fix_flesh_item(), fix_generated_item(), kill_player_not_permadeath(), kill_player_permadeath(), mimic_type_apply(), move_creator(), move_symptom(), msgfile_msg(), object_give_identified_properties(), place_fountain_with_specials(), prepare_weapon(), receive_player_name(), START_TEST(), tailor_god_spell(), use_oratory(), and wrong_password().
#define FREE_AND_COPY_IF | ( | sv, | |
nv | |||
) | { if (sv) free_string(sv); sv = nv ? add_string(nv) : NULL; } |
Definition at line 206 of file global.h.
Referenced by Messages::replace().
#define GET_ANIM | ( | ob | ) | (ob->temp_animation ? ob->temp_animation : ob->animation) |
Definition at line 162 of file global.h.
Referenced by apply_changes_to_player().
#define GET_ANIM_ID | ( | ob | ) | (ob->temp_animation ? ob->temp_animation->num : (ob->animation ? ob->animation->num : 0)) |
Definition at line 163 of file global.h.
Referenced by common_process_projectile(), do_throw(), fix_generated_item(), and tear_down_wall().
#define GET_ANIMATION | ( | ob, | |
anim | |||
) | ((ob->temp_animation ? ob->temp_animation : ob->animation)->faces[anim]) |
Definition at line 161 of file global.h.
Referenced by trap_show().
#define MAX_TOTAL_EXPERIENCE (settings.permanent_exp_ratio ? (MAX_EXPERIENCE * 100 / settings.permanent_exp_ratio) : 0) |
Definition at line 214 of file global.h.
Referenced by help_topics().
#define NUM_ANIMATIONS | ( | ob | ) | ((ob->temp_animation ? ob->temp_animation : ob->animation)->num_animations) |
Definition at line 169 of file global.h.
Referenced by animate_bomb(), animate_object(), animate_trigger(), animate_turning(), check_trigger(), do_throw(), fix_generated_item(), gate_type_process(), map2_add_ob(), move_hole(), tear_down_wall(), and trigger_type_process().
#define NUM_FACINGS | ( | ob | ) | ((ob->temp_animation ? ob->temp_animation : ob->animation)->facings) |
Definition at line 170 of file global.h.
Referenced by animate_object().
#define PERM_EXP | ( | exptotal | ) | (exptotal * settings.permanent_exp_ratio / 100 ) |
Convert saved total experience into permanent experience
Definition at line 230 of file global.h.
Referenced by cfapi_object_perm_exp(), check_exp_loss(), and show_skills().
#define ROTATE_RIGHT | ( | c | ) | if ((c)&01) (c) = ((c)>>1)+0x80000000; else (c) >>= 1; |
Definition at line 158 of file global.h.
Referenced by Faces::added(), and PngLoader::processData().
#define SCRIPT_FIX_ACTIVATOR 2 |
Definition at line 369 of file global.h.
Referenced by do_throw().
#define SCRIPT_FIX_ALL 1 |
Definition at line 370 of file global.h.
Referenced by apply_container(), attack_ob_simple(), cftimer_process_event(), common_pre_ob_move_on(), drop_object(), events_execute_object_say(), hit_player(), hit_with_arrow(), kill_object(), kill_player(), move_teleporter(), ob_apply(), pick_lock(), pick_up_object(), pray_at_altar(), sell_item(), shop_pay_unpaid(), trigger_connected(), and write_note().
#define SCRIPT_FIX_NOTHING 0 |
Definition at line 371 of file global.h.
Referenced by object_free(), player_changer_type_process(), process_object(), and stop_projectile().
#define SET_ANIMATION | ( | ob, | |
newanim | |||
) | { ob->face = (ob->temp_animation ? ob->temp_animation : ob->animation)->faces[newanim]; } |
Definition at line 160 of file global.h.
Referenced by animate_object(), animate_trigger(), animate_turning(), apply_race_and_class(), cf_handle_type_apply(), cfapi_object_set_property(), check_trigger(), fix_generated_item(), gate_type_process(), key_change_class(), key_roll_stat(), shuffle_attack(), tear_down_wall(), trapdoor_type_move_on(), trigger_connected(), trigger_type_process(), and update_button().
typedef struct linked_char linked_char |
typedef const char* sstring |
Strings that should be manipulated through add_string() and free_string().
typedef struct Statistics Statistics |
This is used for various performance tracking statistics, or just how often certain events are done. It is much better to use a common structure then variables about. Note that since these are often counters, I'm using uint64s - this may be overkill, but it is just a couple extra bytes. This is initialized/declared in common/init.c. Note that if it only contains integer values, very easy to initialize/clear it - just a memset.
EXTERN archetype * amulet_arch |
Definition at line 154 of file global.h.
Referenced by fix_generated_item(), init_archetype_pointers(), and init_globals().
const Face* blank_face |
Following can just as easily be pointers, but it is easier to keep them like this.
Definition at line 35 of file image.c.
Referenced by add_abilities(), animate_object(), artifact_get_face(), CREUtils::artifactNode(), Faces::Faces(), knowledge_alchemy_face(), knowledge_monster_face(), magic_mapping_mark(), magic_mapping_mark_recursive(), object_clear(), tear_down_wall(), update_position(), and write_rune().
EXTERN archetype * crown_arch |
Definition at line 154 of file global.h.
Referenced by fix_generated_item(), and init_archetype_pointers().
const Face * empty_face |
Definition at line 35 of file image.c.
Referenced by esrv_draw_look(), esrv_send_inventory(), and Faces::Faces().
short freearr_x[SIZEOFFREE] |
X offset when searching around a spot.
Definition at line 65 of file object.c.
Referenced by animate_bomb(), animate_weapon(), apply_builder_floor(), apply_builder_remove(), apply_map_builder(), attempt_jump(), can_see_monsterP(), cast_cause_disease(), cast_cone(), cast_create_obj(), cast_light(), cast_polymorph(), cast_raise_dead_spell(), cast_spell(), cast_transfer(), cfapi_object_insert(), command_summon(), command_teleport(), common_process_projectile(), counterspell(), CREAnimationControl::CREAnimationControl(), create_bomb(), dimension_door(), dispel_rune(), do_harvest(), do_skill_ident(), do_throw(), enter_map(), expand_sight(), explosion(), find_closest_monster(), find_doors_in_room_recursive(), find_enclosed_spot(), find_monster_in_room_recursive(), find_spot_in_room_recursive(), find_target_for_friendly_spell(), find_traps(), fix_summon_pet(), forklightning(), gate_type_process(), get_pointed_target(), hideability(), hit_map(), keyplace(), magic_wall(), map_find_dir(), monster_communicate(), monster_compute_path(), monster_find_nearest_living_creature(), monster_use_bow(), move_aura(), move_ball_spell(), move_bolt(), move_cone(), move_ob(), move_player_attack(), move_player_mover(), move_swarm_spell(), object_find_first_free_spot(), object_find_free_spot(), object_insert_to_free_spot_or_free(), path_to_player(), pets_follow_owner(), pets_get_enemy(), pets_move(), pets_summon_golem(), pets_summon_object(), pick_arrow_target(), pick_lock(), place_chest(), place_exits(), place_fountain_with_specials(), place_monsters(), place_special_exit(), player_fire_bow(), probe(), process_players1(), push_ob(), put_a_monster(), remove_adjacent_doors(), remove_door(), remove_locked_door(), remove_trap(), roll_ob(), shop_mat_type_move_on(), singing(), skill_attack(), spell_find_dir(), stand_near_hostile(), steal(), surround_by_doors(), teleport(), transfer_ob(), turn_one_transport(), use_oratory(), and write_rune().
short freearr_y[SIZEOFFREE] |
Y offset when searching around a spot.
Definition at line 71 of file object.c.
Referenced by animate_weapon(), apply_builder_floor(), apply_builder_remove(), apply_map_builder(), attempt_jump(), can_see_monsterP(), cast_cause_disease(), cast_cone(), cast_create_obj(), cast_light(), cast_polymorph(), cast_raise_dead_spell(), cast_spell(), cast_transfer(), cfapi_object_insert(), command_summon(), command_teleport(), common_process_projectile(), counterspell(), CREAnimationControl::CREAnimationControl(), create_bomb(), dimension_door(), dispel_rune(), do_harvest(), do_skill_ident(), do_throw(), enter_map(), expand_sight(), explosion(), find_closest_monster(), find_doors_in_room_recursive(), find_enclosed_spot(), find_monster_in_room_recursive(), find_spot_in_room_recursive(), find_target_for_friendly_spell(), find_traps(), fix_summon_pet(), forklightning(), gate_type_process(), get_pointed_target(), hideability(), hit_map(), keyplace(), magic_wall(), map_find_dir(), monster_communicate(), monster_compute_path(), monster_find_nearest_living_creature(), monster_use_bow(), move_aura(), move_ball_spell(), move_bolt(), move_cone(), move_ob(), move_player_attack(), move_player_mover(), move_swarm_spell(), object_find_first_free_spot(), object_find_free_spot(), object_insert_to_free_spot_or_free(), path_to_player(), pets_follow_owner(), pets_get_enemy(), pets_move(), pets_summon_golem(), pets_summon_object(), pick_arrow_target(), pick_lock(), place_chest(), place_exits(), place_fountain_with_specials(), place_monsters(), place_special_exit(), player_fire_bow(), probe(), process_players1(), push_ob(), put_a_monster(), remove_adjacent_doors(), remove_door(), remove_locked_door(), remove_trap(), roll_ob(), shop_mat_type_move_on(), singing(), skill_attack(), spell_find_dir(), stand_near_hostile(), steal(), surround_by_doors(), teleport(), transfer_ob(), turn_one_transport(), use_oratory(), and write_rune().
int freedir[SIZEOFFREE] |
Direction we're pointing on this spot.
Definition at line 83 of file object.c.
Referenced by map_find_dir(), pets_summon_object(), and spell_find_dir().
socket_struct* init_sockets |
Established connections for clients not yet playing. See the page on the login process for a description of its use. Socket at index 0 is the socket listening for connections, and must not be freed. If this socket becomes invalid, then the server will try to reopen it.
Definition at line 56 of file init.c.
Referenced by account_get_logged_in_init_socket(), block_until_new_connection(), do_server(), and new_connection().
int leftof_x[9] |
int leftof_y[9] |
uint32_t max_time |
Gloabal variables:
Definition at line 35 of file time.c.
Referenced by command_speed(), command_statistics(), get_sleep_remaining(), set_max_time(), tick_game_time(), tick_length(), and time_info().
int maxfree[SIZEOFFREE] |
Number of spots around a location, including that location (except for 0)
Definition at line 77 of file object.c.
Referenced by map_find_dir(), and object_find_free_spot().
EXTERN long nroferrors |
If it exceeds MAX_ERRORS, call fatal()
Definition at line 129 of file global.h.
Referenced by init_defaults(), LOG(), and server_main().
uint32_t pticks |
Used by various function to determine how often to save the character
?
Definition at line 45 of file time.c.
Referenced by apply_race_and_class(), check_login(), do_specials(), get_tod(), handle_newcs_player(), key_change_class(), log_time(), process_players1(), reset_sleep(), send_tick(), and time_info().
int rightof_x[9] |
int rightof_y[9] |
EXTERN archetype* ring_arch |
Definition at line 154 of file global.h.
Referenced by fix_generated_item(), init_archetype_pointers(), and init_globals().
Settings settings |
Server settings.
Definition at line 39 of file init.c.
Referenced by CREFilterDialog::accept(), CREReportDialog::accept(), account_block_create(), account_char_load(), account_char_save(), account_new_cmd(), accounts_load(), accounts_save(), add_me_cmd(), add_player_exp(), add_server_collect_hooks(), apply_check_item_power(), apply_check_personalized_blessings(), apply_death_exp_penalty(), apply_race_and_class(), assets_collect(), attack_ob_simple(), attempt_steal(), block_until_new_connection(), calc_perm_exp(), calc_skill_exp(), cast_create_town_portal(), cast_spell(), cctk_init_std_archetypes(), cctk_setdatadir(), cctk_setlog(), cfapi_system_directory(), change_abil(), check_exp_loss(), check_login(), check_pick(), check_probe(), check_race_and_class(), checkbanned(), checkdm(), clean_tmp_files(), CREMapInformationManager::clearCache(), command_abil(), command_addexp(), command_banish(), command_create(), command_debug(), command_help(), command_loadtest(), command_nowiz(), command_patch(), command_players(), command_search_items(), command_settings(), command_title(), compute_price_variation_with_bargaining(), convert_item(), create_items_path(), create_overlay_pathname(), create_pathname(), create_player_cmd(), create_template_pathname(), CREExperienceWindow::CREExperienceWindow(), CREFilterDialog::CREFilterDialog(), CREReportDialog::CREReportDialog(), crypt_string(), dead_player(), delete_character(), display_motd(), do_symptoms(), do_throw(), dragon_eat_flesh(), dump_experience(), enter_exit(), enter_player_maplevel(), enter_player_savebed(), exp_level(), FaceMakerDialog::FaceMakerDialog(), find_help_file(), find_maps(), find_spot_for_submap(), find_style(), MessageManager::findPrePost(), fix_object(), fix_player(), forbid_play(), free_server(), get_cha_bonus(), get_cleric_chance(), get_con_bonus(), get_dam_bonus(), get_dex_bonus(), get_fear_bonus(), get_grace_bonus(), get_learn_spell(), get_sp_bonus(), get_speed_bonus(), get_thaco_bonus(), get_turn_bonus(), get_weight_limit(), god_enchants_weapon(), help_topics(), hiscore_init(), hit_player(), i18n_init(), improve_armour(), improve_weapon(), init_beforeplay(), init_book_archive(), init_experience(), init_regions(), init_server(), init_startup(), init_stats(), initPlugins(), is_legal_2ways_exit(), key_change_class(), key_confirm_quit(), kill_object(), kill_player(), kill_player_not_permadeath(), kill_player_permadeath(), knowledge_read_player_data(), knowledge_write_player_data(), level_exp(), list_players(), ResourcesManager::load(), load_quests_from_file(), load_settings(), load_table_float(), load_table_int(), CREMapInformationManager::loadCache(), MessageManager::loadDirectory(), QuestManager::loadQuestFile(), LOG(), main(), map_remove_unique_files(), mapfile_load(), metaserver2_init(), monsterFight(), object_clear(), CREMainWindow::onReportQuests(), CREMainWindow::onReportSpellDamage(), MessageFile::parseFile(), pay_for_item(), pick_up_object(), player_lvl_adj(), plugins_init_plugin(), process_events(), process_players1(), quest_read_player_data(), quest_write_player_data(), rangetostring(), read_map_log(), ready_map_name(), resurrect_player(), roll_stats(), MessageFile::save(), save_map(), save_player(), QuestManager::saveQuestFile(), scroll_failure(), scroll_type_apply(), send_exp_table(), send_file(), send_new_char_info(), send_news(), send_rules(), set_abs_magic(), set_archetypes(), set_confdir(), set_csport(), set_datadir(), set_debug(), set_disable_plugin(), set_dumpmon1(), set_dumpmon2(), set_dumpmon3(), set_dumpmon4(), set_dumpmon5(), set_dumpmon6(), set_dumpmon7(), set_dumpmon8(), set_dumpmon9(), set_dumpmont(), set_ignore_assets_errors(), set_localdir(), set_logfile(), set_mapdir(), set_mondebug(), set_playerdir(), set_regions(), set_templatedir(), set_tmpdir(), set_treasures(), set_uniquedir(), show_skills(), SP_level_spellpoint_cost(), spell_failure(), spellbook_type_apply(), START_TEST(), CREMapInformationManager::storeCache(), swap_map(), town_portal_destroy_existing(), unset_debug(), CREResourcesWindow::updateFilters(), CREResourcesWindow::updateReports(), verify_player(), write_book_archive(), write_map_log(), and write_scroll().
const Face* smooth_face |
Definition at line 35 of file image.c.
Referenced by Faces::Faces(), and send_smooth().
Statistics statistics |
Merged spell statistics.
Definition at line 101 of file init.c.
Referenced by init_globals(), main(), object_merge_spell(), and ok_to_put_more().
EXTERN long trying_emergency_save |
True when emergency_save() is reached.
Definition at line 128 of file global.h.
Referenced by emergency_save(), init_globals(), and LOG().
EXTERN const char* undead_name |
Definition at line 155 of file global.h.
Referenced by deathstrike_living(), free_globals(), hit_player(), hit_with_one_attacktype(), init_globals(), and is_susceptible_to_disease().