File: plugin_common.h

package info (click to toggle)
crossfire 1.75.0-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,168 kB
  • sloc: ansic: 83,169; sh: 4,659; perl: 1,736; lex: 1,443; makefile: 1,199; python: 43
file content (241 lines) | stat: -rw-r--r-- 14,899 bytes parent folder | download | duplicates (4)
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 */