Crossfire Server, Trunk  R22010
global.h File Reference
#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"
+ Include dependency graph for global.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
 

Variables

EXTERN archetype * amulet_arch
 
const Faceblank_face
 
EXTERN archetype * crown_arch
 
EXTERN archetype * empty_archetype
 
const Faceempty_face
 
EXTERN int exiting
 
EXTERN artifactlistfirst_artifactlist
 
EXTERN objectlink * first_friendly_object
 
EXTERN godlinkfirst_god
 
EXTERN mapstructfirst_map
 
EXTERN char first_map_ext_path [MAX_BUF]
 
EXTERN char first_map_path [MAX_BUF]
 
EXTERN playerfirst_player
 
EXTERN racelinkfirst_race
 
EXTERN regionfirst_region
 
short freearr_x [SIZEOFFREE]
 
short freearr_y [SIZEOFFREE]
 
int freedir [SIZEOFFREE]
 
socket_structinit_sockets
 
int leftof_x [9]
 
int leftof_y [9]
 
EXTERN FILE * logfile
 
EXTERN archetype * map_archeytpe
 
uint32_t max_time
 
int maxfree [SIZEOFFREE]
 
EXTERN long nrofallowedstr
 
EXTERN long nrofartifacts
 
EXTERN long nroferrors
 
EXTERN long ob_count
 
uint32_t pticks
 
int reopen_logfile
 
int rightof_x [9]
 
int rightof_y [9]
 
EXTERN archetype * ring_arch
 
Settings settings
 
const Facesmooth_face
 
Statistics statistics
 
EXTERN long trying_emergency_save
 
EXTERN const char * undead_name
 

Detailed Description

Global type definitions and header inclusions.

Definition in file global.h.

Macro Definition Documentation

◆ dirent

#define dirent   direct

Definition at line 213 of file global.h.

◆ EXTERN

#define EXTERN   extern

Define external variables. This is used in an ugly hack where EXTERN is re-defined to "" in 'init.c' in order to resolve missing symbols. Do not use this macro in new code.

Definition at line 15 of file global.h.

◆ FREE_AND_CLEAR

#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().

◆ FREE_AND_CLEAR_STR

◆ FREE_AND_CLEAR_STR_IF

#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().

◆ FREE_AND_COPY

◆ FREE_AND_COPY_IF

#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().

◆ GET_ANIM

#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().

◆ GET_ANIM_ID

#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().

◆ GET_ANIMATION

#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().

◆ MAX_TOTAL_EXPERIENCE

#define MAX_TOTAL_EXPERIENCE   (settings.permanent_exp_ratio ? (MAX_EXPERIENCE * 100 / settings.permanent_exp_ratio) : 0)

Definition at line 231 of file global.h.

◆ NAMLEN

#define NAMLEN (   dirent)    (dirent)->d_namlen

Definition at line 214 of file global.h.

Referenced by help_topics().

◆ NUM_ANIMATIONS

#define NUM_ANIMATIONS (   ob)    ((ob->temp_animation ? ob->temp_animation : ob->animation)->num_animations)

◆ NUM_FACINGS

#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().

◆ PERM_EXP

#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().

◆ ROTATE_RIGHT

#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().

◆ SCRIPT_FIX_ACTIVATOR

#define SCRIPT_FIX_ACTIVATOR   2

Definition at line 369 of file global.h.

Referenced by do_throw().

◆ SCRIPT_FIX_ALL

◆ SCRIPT_FIX_NOTHING

#define SCRIPT_FIX_NOTHING   0

◆ SET_ANIMATION

#define SET_ANIMATION (   ob,
  newanim 
)    { ob->face = (ob->temp_animation ? ob->temp_animation : ob->animation)->faces[newanim]; }

Typedef Documentation

◆ collectorHook

typedef void(* collectorHook) (FILE *, const char *)

Definition at line 233 of file global.h.

◆ linked_char

typedef struct linked_char linked_char

◆ Settings

typedef struct Settings Settings

Server settings.

◆ sstring

typedef const char* sstring

Strings that should be manipulated through add_string() and free_string().

Definition at line 40 of file global.h.

◆ Statistics

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.

Variable Documentation

◆ amulet_arch

EXTERN archetype * amulet_arch

Definition at line 154 of file global.h.

Referenced by fix_generated_item(), init_archetype_pointers(), and init_globals().

◆ blank_face

const Face* blank_face

◆ crown_arch

EXTERN archetype * crown_arch

Definition at line 154 of file global.h.

Referenced by fix_generated_item(), and init_archetype_pointers().

◆ empty_face

const Face * empty_face

Definition at line 35 of file image.c.

Referenced by esrv_draw_look(), esrv_send_inventory(), and Faces::Faces().

◆ freearr_x

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().

◆ freearr_y

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().

◆ freedir

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().

◆ init_sockets

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().

◆ leftof_x

int leftof_x[9]

◆ leftof_y

int leftof_y[9]

◆ max_time

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().

◆ maxfree

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().

◆ nroferrors

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().

◆ pticks

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().

◆ rightof_x

int rightof_x[9]

◆ rightof_y

int rightof_y[9]

◆ ring_arch

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 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().

◆ smooth_face

const Face* smooth_face

Definition at line 35 of file image.c.

Referenced by Faces::Faces(), and send_smooth().

◆ statistics

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().

◆ trying_emergency_save

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().

◆ undead_name

EXTERN const char* undead_name