Go to the documentation of this file.
99 uint8_t subtype,
const char *
message) {
120 if (pri >=
pl->contr->listening)
175 else if (*
buf ==
'\0')
199 if (
pl->ob != NULL &&
pl->ob->map ==
map) {
223 if (
pl->ob != NULL &&
pl->ob->map ==
map &&
pl->ob !=
op) {
249 if (
pl->ob != NULL &&
pl->ob->map ==
map
250 &&
pl->ob != op1 &&
pl->ob != op2) {
267 switch (
pl->contr->shoottype) {
269 strncpy(obuf,
"Range: nothing", len);
282 snprintf(obuf, len,
"Range: %s (%s)",
name,
op->race ?
op->race :
"nothing");
288 if (
pl->casting_time == 0)
289 snprintf(obuf, len,
"Range: Holding spell (%s)",
pl->spell->name);
291 snprintf(obuf, len,
"Range: Casting spell (%s)",
pl->spell->name);
294 snprintf(obuf, len,
"Range: spell (%s)",
pl->contr->ranges[
range_magic]->name);
302 snprintf(obuf, len,
"Range: %s",
name);
310 snprintf(obuf, len,
"Range: golem (%s)",
pl->contr->ranges[
range_golem]->name);
313 strncpy(obuf,
"Range: nothing", len);
318 snprintf(obuf, len,
"Skill: %s",
pl->chosen_skill != NULL ?
pl->chosen_skill->name :
"none");
323 snprintf(obuf, len,
"Builder: %s",
name);
327 strncpy(obuf,
"Range: illegal", len);
337 snprintf(
buf, len,
"Player: %s ",
pl->name);
338 p = strchr(
buf,
'\0');
360 int x,
y, dx, dy, mflags,
l;
366 for (dx = -1; dx <= 1; dx++) {
367 for (dy = -1; dy <= 1; dy++) {
434 for (
x = -strength;
x < strength;
x++) {
435 for (
y = -strength;
y < strength;
y++) {
477 int xmin, xmax, ymin, ymax;
512 for (
y = ymin;
y <= ymax;
y++) {
513 for (
x = xmin;
x <= xmax;
x++) {
void LOG(LogLevel logLevel, const char *format,...)
void ext_info_map_except(int color, const mapstruct *map, const object *op, uint8_t type, uint8_t subtype, const char *str1)
#define QUERY_FLAG(xyz, p)
static const flag_definition flags[]
Plugin animator file specs[Config] name
static void magic_mapping_mark_recursive(object *pl, char *map_mark, int px, int py)
void print_ext_msg(socket_struct *ns, int color, uint8_t type, uint8_t subtype, const char *message)
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert py
void magic_mapping_mark(object *pl, char *map_mark, int strength)
void SockList_AddChar(SockList *sl, unsigned char c)
#define GET_MAP_FACE_OBJ(M, X, Y, L)
TIPS on SURVIVING Crossfire is populated with a wealth of different monsters These monsters can have varying immunities and attack types In some of them can be quite a bit smarter than others It will be important for new players to learn the abilities of different monsters and learn just how much it will take to kill them This section discusses how monsters can interact with players Most monsters in the game are out to mindlessly kill and destroy the players These monsters will help boost a player s after he kills them When fighting a large amount of monsters in a single attempt to find a narrower hallway so that you are not being attacked from all sides Charging into a room full of Beholders for instance would not be open the door and fight them one at a time For there are several maps designed for them Find these areas and clear them out All throughout these a player can find signs and books which they can read by stepping onto them and hitting A to apply the book sign These messages will help the player to learn the system One more always keep an eye on your food If your food drops to your character will soon so BE CAREFUL ! NPCs Non Player Character are special monsters which have intelligence Players may be able to interact with these monsters to help solve puzzles and find items of interest To speak with a monster you suspect to be a simply move to an adjacent square to them and push the double ie Enter your message
static void do_print_ext(SockList *sl, int color, uint8_t type, uint8_t subtype, const char *message)
void SockList_Init(SockList *sl)
void ext_info_map_except2(int color, const mapstruct *map, const object *op1, const object *op2, int type, int subtype, const char *str1)
void SockList_Term(SockList *sl)
void set_title(const object *pl, char *buf, size_t len)
void draw_ext_info(int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *message)
int get_map_flags(mapstruct *oldmap, mapstruct **newmap, int16_t x, int16_t y, int16_t *nx, int16_t *ny)
void rangetostring(const object *pl, char *obuf, size_t len)
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate but it will be accessable for testing and to DMs to play with Like I said lots still to do with the especially comingt up with quest items for buying things like the new workshops and stuff One of the things I would like some input on would be proposals for additional fields for either the guildhouses or guild datafiles to play with Currently the Guildhouse but there is no reason we can t have more than one measure of a guild perhaps have dues relate to Dues and use points for some other suspended or inactive or when a guild is founded inactive active Guilds have the format
void draw_magic_map(object *pl)
SockList * player_get_delayed_buffer(player *pl)
void query_base_name(const object *op, int plural, char *buf, size_t size)
void draw_ext_info_format(int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *format,...)
void Send_With_Handling(socket_struct *ns, SockList *sl)
void SockList_AddPrintf(SockList *sl, const char *format,...)
const char * i18n(const object *who, const char *code)
void ext_info_map(int color, const mapstruct *map, uint8_t type, uint8_t subtype, const char *str1)
void player_get_title(const player *pl, char *buf, size_t bufsize)