1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241
|
/*****************************************************************************/
/* Crossfire Plugin Interface Common Parts */
/* Version: 2.0beta8 (also known as "Alexander") */
/* Contact: yann.chachkoff@myrealbox.com */
/*****************************************************************************/
/* That code is placed under the GNU General Public Licence (GPL) */
/* (C)2001-2005 by Chachkoff Yann (Feel free to deliver your complaints) */
/*****************************************************************************/
/* CrossFire, A Multiplayer game for X-windows */
/* */
/* Copyright (C) 2000 Mark Wedel */
/* Copyright (C) 1992 Frank Tore Johansen */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License, or */
/* (at your option) any later version. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program; if not, write to the Free Software */
/* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* */
/*****************************************************************************/
#ifndef PLUGIN_COMMON_H
#define PLUGIN_COMMON_H
#ifdef WIN32
#define CF_PLUGIN __declspec(dllexport)
#else
#ifdef HAVE_VISIBILITY
#define CF_PLUGIN __attribute__((visibility("default")))
#else
#define CF_PLUGIN
#endif
#endif
#include <plugin.h>
#define PLUGIN_ERROR_INT 0x0FFFFF
extern int cf_init_plugin(f_plug_api getHooks);
extern void cf_system_register_global_event(int event, const char *name, f_plug_event hook);
extern void cf_system_unregister_global_event(int event, const char *name);
/* General functions */
extern sstring cf_add_string(const char *str);
extern void cf_free_string(sstring str);
extern sstring cf_find_string(const char *str);
extern char *cf_strdup_local(const char *str);
extern char *cf_get_maps_directory(const char *name, char *buf, int size);
extern int cf_find_animation(const char *txt);
extern int cf_find_face(const char *name, int error);
extern void cf_log(LogLevel logLevel, const char *format, ...);
extern void cf_log_plain(LogLevel logLevel, const char *message);
extern void cf_get_time(timeofday_t *tod);
extern int cf_timer_create(object *ob, long delay, int mode);
extern int cf_timer_destroy(int id);
extern const char *cf_get_directory(int id);
extern const char *cf_re_cmp(const char *str, const char *regexp);
extern const char *cf_get_season_name(int index);
extern const char *cf_get_month_name(int index);
extern const char *cf_get_weekday_name(int index);
extern const char *cf_get_periodofday_name(int index);
extern void cf_cost_string_from_value(uint64_t cost, int largest_coin, char *buffer, int length);
/* Objects */
extern void cf_object_set_int_property(object *op, int propcode, int value);
extern int cf_object_get_int_property(object *op, int propcode);
extern long cf_object_get_long_property(object *op, long propcode);
extern void cf_object_set_movetype_property(object *op, int propcode, MoveType value);
extern MoveType cf_object_get_movetype_property(object *op, int propcode);
extern object *cf_object_get_object_property(object *op, int propcode);
extern void cf_object_set_object_property(object *op, int propcode, object *value);
extern float cf_object_get_float_property(object *op, int propcode);
extern void cf_object_set_float_property(object *op, int propcode, float value);
extern mapstruct *cf_object_get_map_property(object *op, int propcode);
extern archetype *cf_object_get_archetype_property(object *op, int propcode);
extern partylist *cf_object_get_partylist_property(object *op, int propcode);
extern int64_t cf_object_get_int64_property(object *op, int propcode);
extern void cf_object_set_int64_property(object *op, int propcode, int64_t value);
extern double cf_object_get_double_property(object *op, int propcode);
extern sstring cf_object_get_sstring_property(object *op, int propcode);
extern char *cf_object_get_string_property(object *op, int propcode, char *buf, int size);
extern void cf_fix_object(object *op);
extern char *cf_query_name(object *ob, char *name, int size);
extern sstring cf_query_name_pl(object *ob);
extern char *cf_query_base_name(object *ob, int plural, char *name, int size);
extern const char *cf_object_get_msg(object *);
extern void cf_object_set_weight(object *ob, int weight);
extern int cf_object_get_weight(object *ob);
extern void cf_object_set_weight_limit(object *ob, int weight);
extern int cf_object_get_weight_limit(object *ob);
extern int cf_object_set_nrof(object *, int nrof);
extern int cf_object_get_nrof(object *);
extern int cf_object_get_flag(object *ob, int flag);
extern void cf_object_set_flag(object *ob, int flag, int value);
extern object *cf_object_insert_in_ob(object *op, object *where);
extern void cf_object_set_string_property(object *op, int propcode, const char *value);
extern void cf_spring_trap(object *trap, object *victim);
extern int cf_object_check_trigger(object *op, object *cause);
extern int cf_object_query_money(const object *op);
extern int cf_object_query_cost(const object *tmp, object *who, int flag);
extern void cf_object_query_cost_string(const object *tmp, object *who, int flag, char *buffer, int length);
extern int cf_object_cast_spell(object *op, object *caster, int dir, object *spell_ob, char *stringarg);
extern void cf_object_learn_spell(object *op, object *spell, int special_prayer);
extern void cf_object_forget_spell(object *op, object *sp);
extern object *cf_object_check_for_spell(object *op, const char *name);
extern int cf_object_pay_amount(object *pl, uint64_t to_pay);
extern int cf_object_pay_item(object *op, object *pl);
extern void cf_object_set_long_property(object *op, int propcode, long value);
extern int cf_object_transfer(object *op, int x, int y, int randomly, object *originator);
extern int cf_object_move_to(object *op, int x, int y);
extern int cf_object_out_of_map(object *op, int x, int y);
extern void cf_object_drop(object *op, object *author);
extern void cf_object_say(object *op, char *msg);
extern object *cf_object_insert_object(object *op, object *container);
extern object *cf_object_present_archname_inside(object *op, char *whatstr);
extern int cf_object_apply(object *op, object *author, int flags);
extern void cf_object_remove(object *op);
extern void cf_object_free_drop_inventory(object *ob);
extern object *cf_create_object(void);
extern object *cf_create_object_by_name(const char *name);
extern object *cf_object_change_map(object *op, mapstruct *m, object *originator, int flag, int x, int y);
extern int cf_object_teleport(object *ob, mapstruct *map, int x, int y);
extern void cf_object_update(object *op, int flags);
extern void cf_object_pickup(object *op, object *what);
extern const char *cf_object_get_key(object *op, const char *keyname);
extern int cf_object_set_key(object *op, const char *keyname, const char *value, int add_key);
extern int16_t cf_object_get_resistance(object *op, int rtype);
extern void cf_object_set_resistance(object *op, int rtype, int16_t value);
extern int cf_object_move(object *op, int dir, object*originator);
extern void cf_object_apply_below(object *pl);
extern object *cf_object_clone(object *op, int clonetype);
extern void cf_object_change_exp(object *op, int64_t exp, const char *skill_name, int flag);
extern int cf_object_change_abil(object *op, object *tmp);
extern int cf_object_user_event(object *op, object *activator, object *third, const char *message, int fix);
extern int cf_object_remove_depletion(object *op, int level);
extern object *cf_object_find_by_arch_name(const object *who, const char *name);
extern object *cf_object_find_by_name(const object *who, const char *name);
extern object *cf_object_split(object *orig_ob, uint32_t nr, char *err, size_t size);
extern object *cf_object_clone(object *op, int clonetype);
extern int cf_object_set_face(object *op, const char *face);
extern int cf_object_set_animation(object *op, const char *animation);
extern object *cf_identify(object *op);
extern int64_t cf_object_perm_exp(object *op);
/* Maps */
/*extern void *cf_map_get_property(mapstruct *map, int propcode);*/
extern sstring cf_map_get_sstring_property(mapstruct *map, int propcode);
extern mapstruct *cf_map_get_map_property(mapstruct *map, int propcode);
extern region *cf_map_get_region_property(mapstruct *map, int propcode);
extern int cf_map_get_int_property(mapstruct *map, int property);
extern void cf_map_set_int_property(mapstruct *map, int propcode, int value);
extern void cf_map_set_string_property(mapstruct *map, int propcode, const char *value);
extern mapstruct *cf_map_get_map(const char *name, int flags);
extern mapstruct *cf_get_empty_map(int sizex, int sizey);
extern mapstruct *cf_map_get_first(void);
extern mapstruct *cf_map_has_been_loaded(const char *name);
extern void cf_map_message(mapstruct *m, const char *msg, int color);
extern object *cf_map_get_object_at(mapstruct *m, int x, int y);
extern object *cf_map_insert_object(mapstruct *where, object *op, int x, int y);
extern object *cf_map_insert_object_around(mapstruct *where, object *op, int x, int y);
extern object *cf_map_find_by_archetype_name(const char *str, mapstruct *map, int nx, int ny);
extern int cf_map_get_flags(mapstruct *oldmap, mapstruct **newmap, int16_t x, int16_t y, int16_t *nx, int16_t *ny);
extern object *cf_map_insert_object_there(object *op, mapstruct *m, object *originator, int flag);
extern int cf_map_get_difficulty(mapstruct *map);
extern int cf_map_get_reset_time(mapstruct *map);
extern int cf_map_get_reset_timeout(mapstruct *map);
extern int cf_map_get_players(mapstruct *map);
extern int cf_map_get_darkness(mapstruct *map);
extern int cf_map_get_light(mapstruct *map);
extern int cf_map_get_width(mapstruct *map);
extern int cf_map_get_height(mapstruct *map);
extern int cf_map_get_enter_x(mapstruct *map);
extern int cf_map_get_enter_y(mapstruct *map);
extern int cf_map_change_light(mapstruct *m, int change);
extern void cf_map_trigger_connected(objectlink *ol, object *cause, int state);
/* Random maps */
extern int cf_random_map_set_variable(RMParms *rp, const char *buf);
extern mapstruct *cf_random_map_generate(const char *OutFileName, RMParms *RP, char **use_layout);
/* Players */
extern char *cf_player_get_title(object *op, char *title, int size);
extern void cf_player_set_title(object *op, const char *title);
extern sstring cf_player_get_ip(object *op);
extern object *cf_player_get_marked_item(object *op);
extern void cf_player_set_marked_item(object *op, object *ob);
extern player *cf_player_find(const char *plname);
extern void cf_player_message(object *op, char *txt, int flags);
extern int cf_player_move(player *pl, int dir);
extern partylist *cf_player_get_party(object *op);
extern void cf_player_set_party(object *op, partylist *party);
extern int cf_player_can_pay(object *op);
extern int cf_player_knowledge_has(object *op, const char *knowledge);
extern void cf_player_knowledge_give(object *op, const char *knowledge);
extern int cf_player_arrest(object *who);
/* Archetypes */
extern archetype *cf_archetype_get_first(void);
extern sstring cf_archetype_get_name(archetype *arch);
extern archetype *cf_archetype_get_next(archetype *arch);
extern archetype *cf_archetype_get_more(archetype *arch);
extern archetype *cf_archetype_get_head(archetype *arch);
extern object *cf_archetype_get_clone(archetype *arch);
/* Parties */
extern partylist *cf_party_get_first(void);
extern const char *cf_party_get_name(partylist *party);
extern partylist *cf_party_get_next(partylist *party);
extern const char *cf_party_get_password(partylist *party);
extern player *cf_party_get_first_player(partylist *party);
extern player *cf_party_get_next_player(partylist *party, player *op);
/* Regions */
extern region *cf_region_get_first(void);
extern const char *cf_region_get_name(region *reg);
extern region *cf_region_get_next(region *reg);
extern region *cf_region_get_parent(region *reg);
extern const char *cf_region_get_longname(region *reg);
extern const char *cf_region_get_message(region *reg);
extern int cf_region_get_jail_x(region *reg);
extern int cf_region_get_jail_y(region *reg);
extern const char *cf_region_get_jail_path(region *reg);
/* Friendly list */
extern object *cf_friendlylist_get_first(void);
extern object *cf_friendlylist_get_next(object *ob);
/* Quest-related functions */
extern int cf_quest_get_player_state(object *pl, sstring quest_code);
extern void cf_quest_start(object *pl, sstring quest_code, int state);
extern void cf_quest_set_player_state(object *pl, sstring quest_code, int state);
extern int cf_quest_was_completed(object *pl, sstring quest_code);
#endif /* PLUGIN_COMMON_H */
|