Go to the documentation of this file.
37 fprintf(stderr,
"Reading parameters from stdin...\n");
40 memset(&rp, 0,
sizeof(
RMParms));
63 for (j = 0; j < height; ++j) {
64 for (i = 0; i < width; ++i) {
66 display_char =
layout[i][j];
68 switch (display_char) {
77 putchar(display_char);
113 static void test_layout(
int width,
int height,
char **(*layout_func)(
int,
int,
int,
int)) {
118 if (layout_func == NULL)
121 layout = layout_func(width, height, 0, 0);
129 fprintf(stderr,
"Type 'random_map -h' for usage instructions.\n");
135 "Usage: random_map [options]\n"
138 " -h display this help message\n"
139 " -g <file> randomly generate the specified map file\n"
140 " -l <layout> layout to use. See Layouts for valid layouts.\n"
141 " (overridden by -g)\n"
142 " -t test map layout (overriden by -g)\n"
143 " -x <width> specify map width\n"
144 " -y <height> specify map height\n"
147 " rogue -- roguelike map generator\n"
148 " snake -- snake map generator\n"
149 " sspiral -- square spiral map generator\n"
150 " spiral -- spiral map generator\n"
151 " maze -- maze map generator\n"
152 " onion -- onion map generator\n"
156 int main(
int argc,
char *argv[]) {
157 int flag,
mode = 0, width = 80, height = 23;
158 char *filename_out=NULL;
164 while ((flag = getopt(argc, argv,
"g:hl:tx:y:")) != -1) {
168 filename_out = optarg;
185 width = atoi(optarg);
188 height = atoi(optarg);
200 }
else if (
mode == 2) {
242 while ((
op->stats.hp--) > 0) {
269 while ((
tmp->stats.hp--) > 0) {
276 &&
tmp->randomitems) {
279 while ((
tmp->stats.hp--) > 0) {
309 uint8_t subtype,
const char *
message) {
319 uint8_t subtype,
const char *
format, ...) {
340 fprintf(
logfile,
"ext_info_map: %s\n", str1);
char ** map_gen_onion(int xsize, int ysize, int option, int layers)
#define HAS_RANDOM_ITEMS(op)
#define SAVE_MODE_INPLACE
char **(* func)(int, int, int, int)
int apply_auto(object *op)
char ** roguelike_layout_gen(int xsize, int ysize, int options, int _unused_layers)
#define QUERY_FLAG(xyz, p)
static void print_usage(void)
char ** make_square_spiral_layout(int xsize, int ysize, int _unused_options, int _unused_layers)
non standard information is not specified or uptime this means how long since the executable has been started A particular host may have been running a server for quite a long time
char ** maze_gen(int xsize, int ysize, int option, int _unused_layers)
static const flag_definition flags[]
linux kernel c mode(defun linux-c-mode() "C mode with adjusted defaults for use with the Linux kernel."(interactive)(c-mode)(c-set-style "K&R")(setq c-basic-offset 8))
mapstruct * generate_random_map(const char *OutFileName, RMParms *RP, char **use_layout, sstring reset_group)
static void test_layout(int width, int height, char **(*layout_func)(int, int, int, int))
void create_treasure(treasurelist *t, object *op, int flag, int difficulty, int tries)
char ** map_gen_spiral(int xsize, int ysize, int option, int _unused_layers)
void esrv_update_spells(player *pl)
void set_map_timeout(mapstruct *oldmap)
Plugin animator file specs[Config] name
void set_darkness_map(mapstruct *m)
void esrv_del_item(player *pl, object *ob)
static event_registration m
void object_free_drop_inventory(object *ob)
int load_parameters(FILE *fp, int bufstate, RMParms *RP)
void ext_info_map(int color, const mapstruct *map, uint8_t type, uint8_t subtype, const char *str1)
static layout layout_list[NROFLAYOUTS]
void draw_ext_info_format(int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *format,...)
void rod_adjust(object *rod)
void move_firewall(object *ob)
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
void apply_auto_fix(mapstruct *m)
void emergency_save(int x)
object * object_insert_in_map_at(object *op, mapstruct *m, object *originator, int flag, int x, int y)
void esrv_update_item(int flags, object *pl, object *op)
void esrv_send_item(object *ob, object *obx)
#define FOR_MAP_PREPARE(map_, mx_, my_, it_)
void dragon_ability_gain(object *ob, int x, int y)
static void print_map(char **layout, int width, int height)
object * find_skill_by_number(object *who, int skillno)
int main(int argc, char *argv[])
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
Install Bug reporting Credits but rather whatever guild name you are using *With the current map and server there are three they and GreenGoblin *Whatever name you give the folder should but it will still use GUILD_TEMPLATE *You can change what guild it uses by editing the map files Modify Map or objects if you want to use the optional Python based Guild Storage hall The first three are on the main the next two are in the guild_hq and the final one is in hallofjoining Withe the Storage three objects are found on the main floor and the last two are in the basement It s not that but you will need a map editor You find the object that has the click edit and change the line script options(which currently is "GUILD_TEMPALTE") to the guild you wish to use. And make sure you use the same one for all of them or it won 't work. Here 's a quick HOWTO for using the map editor to make these changes edit the mainfloor map exit(x15, y29 - set to/Edit/This/Exit/Path in the template) back to the world map as well. If you are using the Storage Hall map(storage_hall)
#define CLEAR_FLAG(xyz, p)
char ** make_snake_layout(int xsize, int ysize, int _unused_options, int _unused_layers)
void object_remove(object *op)
void clean_tmp_files(void)
object * generate_treasure(treasurelist *t, int difficulty)
void draw_ext_info(int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *message)
int save_map(mapstruct *m, int flag)
static void generate_map(char *OutFileName)
static void print_quickhelp(void)
object * identify(object *op)