/****************************************************************************** Snippet: Wilderness system (v1.0). Author: Richard Woolcock (aka KaVir). Date: 2nd September 1998. ****************************************************************************** File: wild_info.c Purpose: Deals with wilderness display information. ****************************************************************************** This code is copyright (C) 1998 by Richard Woolcock. It may be used and distributed freely, as long as you do not remove this copyright notice. ******************************************************************************/ /****************************************************************************** Required libraries ******************************************************************************/ #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" #include "wild.h" /****************************************************************************** Global variables ******************************************************************************/ /* None. */ /****************************************************************************** Local operation prototypes ******************************************************************************/ void draw_room args( ( CHAR_DATA *ch, int x, int y ) ); /****************************************************************************** Global operations ******************************************************************************/ void draw_map( CHAR_DATA *ch ) { int loopx, loopy; bool is_inside = FALSE; if ( ch->x < 0 || ch->x >= WILDERNESS_SIZE || ch->y < 0 || ch->y >= WILDERNESS_SIZE ) { send_to_char("Bug!\n\r",ch); return; } switch (map_data(ch->x,ch->y)) { default: send_to_char("You are standing in the middle of nowhere.\n\r", ch); break; case WILD_ROAD: send_to_char("You are standing on a road.\n\r", ch); break; case WILD_BUILDING_BURNED: send_to_char("You are standing in the burned remains of a building.\n\r", ch); break; case WILD_BUILDING_DESTROYED: send_to_char("You are standing on the remains of a destroyed building.\n\r", ch); break; case WILD_BUILDING_CONSTRUCTION: send_to_char("You are standing in a partly constructed building.\n\r", ch); break; case WILD_SCORCHED_GROUND: send_to_char("You are standing on scorched ground.\n\r", ch); break; case WILD_WATER_DEEP_1: case WILD_WATER_DEEP_2: send_to_char("You are swimming in water.\n\r", ch); break; case WILD_FOREST_1: case WILD_FOREST_2: send_to_char("You are standing in a light forest.\n\r", ch); break; case WILD_FOREST_3: case WILD_FOREST_4: send_to_char("You are standing in a thick forest.\n\r", ch); break; case WILD_HUT: case WILD_HUT_OWNED: case WILD_HUT_LOCKED: send_to_char("You are standing in a hut.\n\r", ch); is_inside = TRUE; break; case WILD_CABIN: case WILD_CABIN_OWNED: case WILD_CABIN_LOCKED: send_to_char("You are standing in a cabin.\n\r", ch); is_inside = TRUE; break; case WILD_COTTAGE: case WILD_COTTAGE_OWNED: case WILD_COTTAGE_LOCKED: send_to_char("You are standing in a cottage.\n\r", ch); is_inside = TRUE; break; case WILD_HOUSE: case WILD_HOUSE_OWNED: case WILD_HOUSE_LOCKED: send_to_char("You are standing in a house.\n\r", ch); is_inside = TRUE; break; case WILD_MINE_STRUCTURE_EMPTY: case WILD_MINE_STRUCTURE_STONE: case WILD_MINE_STRUCTURE_IRON: case WILD_MINE_STRUCTURE_GOLD: case WILD_MINE_STRUCTURE_OIL: send_to_char("You are standing inside a wooden structure.\n\r", ch); is_inside = TRUE; break; case WILD_MINE_EMPTY: case WILD_MINE_STONE_1: case WILD_MINE_STONE_2: case WILD_MINE_IRON_1: case WILD_MINE_IRON_2: case WILD_MINE_GOLD_1: case WILD_MINE_GOLD_2: case WILD_MINE_OIL_1: case WILD_MINE_OIL_2: send_to_char("You are standing in a mine.\n\r", ch); is_inside = TRUE; break; case WILD_MOUNTAINS_NONE: case WILD_MOUNTAINS_STONE: case WILD_MOUNTAINS_IRON: case WILD_MOUNTAINS_GOLD: case WILD_MOUNTAINS_OIL: send_to_char("You are standing on a mountain range.\n\r", ch); break; case WILD_PLAINS: send_to_char("You are standing on a plain.\n\r", ch); break; case WILD_FIELD_HOED: send_to_char("You are standing in a hoed field.\n\r", ch); break; case WILD_FIELD_SEEDED: send_to_char("You are standing in a seeded field.\n\r", ch); break; case WILD_FIELD_WHEAT: send_to_char("You are standing in a wheat field.\n\r", ch); break; case WILD_WATER_1: case WILD_WATER_2: send_to_char("You are standing knee-deep in water.\n\r", ch); break; } if (is_inside) { switch (map_data(ch->x,ch->y)) { default: break; case WILD_MINE_STRUCTURE_EMPTY: case WILD_MINE_STRUCTURE_STONE: case WILD_MINE_STRUCTURE_IRON: case WILD_MINE_STRUCTURE_GOLD: case WILD_MINE_STRUCTURE_OIL: switch (ch->room) { default: case 0: send_to_char("[Exits: north]\n\r",ch); send_to_char("You are standing in the entrance of a small wooden structure. To your north\n\r",ch); send_to_char("lies a single empty chamber.\n\r",ch); break; case 1: send_to_char("[Exits: south]\n\r",ch); send_to_char("You are standing in the central chamber. The room is completely empty.\n\r",ch); break; } break; case WILD_MINE_STONE_1: case WILD_MINE_STONE_2: case WILD_MINE_IRON_1: case WILD_MINE_IRON_2: case WILD_MINE_GOLD_1: case WILD_MINE_GOLD_2: case WILD_MINE_OIL_1: case WILD_MINE_OIL_2: case WILD_MINE_EMPTY: switch (ch->room) { default: case 0: send_to_char("[Exits: north]\n\r",ch); send_to_char("You are standing in the entrance of a mine. To your north lies the\n\r",ch); send_to_char("entrance to the mine shaft itself.\n\r",ch); break; case 1: send_to_char("[Exits: south down]\n\r",ch); send_to_char("You are standing at the edge of the mine shaft, which leads further down.\n\r",ch); send_to_char("To your south lies the entrance to the mine.\n\r",ch); break; case 2: send_to_char("[Exits: north south east west up]\n\r",ch); send_to_char("You are standing in the central mining chamber. Mining work takes place \n\r",ch); send_to_char("on all sides.\n\r",ch); break; case 3: send_to_char("[Exits: south]\n\r",ch); send_to_char("You are standing in a small chamber. This is where the actual mining takes\n\r",ch); send_to_char("place.\n\r",ch); break; case 4: send_to_char("[Exits: east]\n\r",ch); send_to_char("You are standing in a small chamber. This is where the actual mining takes\n\r",ch); send_to_char("place.\n\r",ch); break; case 5: send_to_char("[Exits: west]\n\r",ch); send_to_char("You are standing in a small chamber. This is where the actual mining takes\n\r",ch); send_to_char("place.\n\r",ch); break; case 6: send_to_char("[Exits: north]\n\r",ch); send_to_char("You are standing in a small chamber. This is where the actual mining takes\n\r",ch); send_to_char("place.\n\r",ch); break; } break; case WILD_HUT: case WILD_HUT_OWNED: case WILD_HUT_LOCKED: switch (ch->room) { default: case 0: send_to_char("[Exits: north]\n\r",ch); send_to_char("You are standing in the entrance of a small wooden hut. To your north\n\r",ch); send_to_char("is a single room.\n\r",ch); break; case 1: send_to_char("[Exits: south]\n\r",ch); send_to_char("You are standing in the centre of a small wooden hut. To your south lies the\n\r",ch); send_to_char("entrance.\n\r",ch); break; } break; case WILD_CABIN: case WILD_CABIN_OWNED: case WILD_CABIN_LOCKED: switch (ch->room) { default: case 0: send_to_char("[Exits: north]\n\r",ch); send_to_char("You are standing in the entrance of a wooden cabin. To your north lies the\n\r",ch); send_to_char("central room, and beyond that a bedroom.\n\r",ch); break; case 1: send_to_char("[Exits: north south]\n\r",ch); send_to_char("You are standing in the centre of a wooden cabin. To your north lies a \n\r",ch); send_to_char("bedroom, and to your south is the entrance to the cabin.\n\r",ch); break; case 2: send_to_char("[Exits: south]\n\r",ch); send_to_char("You are standing in the bedroom of a wooden cabin. To your south lies the\n\r",ch); send_to_char("centre room, and beyond that the cabin entrance.\n\r",ch); break; } break; case WILD_COTTAGE: case WILD_COTTAGE_OWNED: case WILD_COTTAGE_LOCKED: switch (ch->room) { default: case 0: send_to_char("[Exits: north]\n\r",ch); send_to_char("You are standing in the entrance of a small cottage. To your north lies the\n\r",ch); send_to_char("main hallway, which leads eventually to a small kitchen.\n\r",ch); break; case 1: send_to_char("[Exits: north south east west]\n\r",ch); send_to_char("You are standing in the main hallway. To your south lies the entrance to the\n\r",ch); send_to_char("cottage, while further to your north the hallway opens up into a kitchen. To\n\r",ch); send_to_char("your east and west are small bedrooms.\n\r",ch); break; case 2: send_to_char("[Exits: east]\n\r",ch); send_to_char("You are standing in a small bedroom. To your east lies the main hallway, \n\r",ch); send_to_char("and beyond that is another bedroom.\n\r",ch); break; case 3: send_to_char("[Exits: west]\n\r",ch); send_to_char("You are standing in a small bedroom. To your west lies the main hallway, \n\r",ch); send_to_char("and beyond that is another bedroom.\n\r",ch); break; case 4: send_to_char("[Exits: north south east west]\n\r",ch); send_to_char("You are standing in the main hallway. To your north lies a small kitchen,\n\r",ch); send_to_char("while further to your south lies the entrance to the cottage. To your east\n\r",ch); send_to_char("is a small washroom, while to your west is a cosy living room.\n\r",ch); break; case 5: send_to_char("[Exits: east]\n\r",ch); send_to_char("You are standing in a rather cosy living room. To your east lies the main\n\r",ch); send_to_char("hallway, and beyond that is a small washroom.\n\r",ch); break; case 6: send_to_char("[Exits: west]\n\r",ch); send_to_char("You are standing in a small washroom. To your east lies the main hallway, \n\r",ch); send_to_char("and beyond that is a cosy living room.\n\r",ch); break; case 7: send_to_char("[Exits: south]\n\r",ch); send_to_char("You are standing in a small kitchen. To your south, the hallway continues\n\r",ch); send_to_char("for some way, eventually leading to the entrance of the cottage.\n\r",ch); break; } break; case WILD_HOUSE: case WILD_HOUSE_OWNED: case WILD_HOUSE_LOCKED: switch (ch->room) { default: case 0: send_to_char("[Exits: north]\n\r",ch); send_to_char("You are standing in the entrance to a large house. To your north lies the\n\r",ch); send_to_char("main hallway. Beyond that lies a kitchen.\n\r",ch); break; case 1: send_to_char("[Exits: north east]\n\r",ch); send_to_char("You are standing in a living room. To your east lies the main hallway, with\n\r",ch); send_to_char("a bathroom beyond that. To your north, through an archway, is the dining\n\r",ch); send_to_char("room.\n\r",ch); break; case 2: send_to_char("[Exits: north south east west]\n\r",ch); send_to_char("You are standing in the main hallway. To your south lies the entrance to\n\r",ch); send_to_char("the house, while further to your north the hallway opens up into a kitchen.\n\r",ch); send_to_char("To your east in a bathroom, while to your west you see a comfortable looking\n\r",ch); send_to_char("living room.\n\r",ch); break; case 3: send_to_char("[Exits: west]\n\r",ch); send_to_char("You are standing in a bathroom. To your west lies the main hallway, and\n\r",ch); send_to_char("beyond that is a comfortable looking living room.\n\r",ch); break; case 4: send_to_char("[Exits: north south east]\n\r",ch); send_to_char("You are standing at the southern end of the dining room. To your north the\n\r",ch); send_to_char("dining room continues, while to your south beyond the archway lies the living\n\r",ch); send_to_char("room. To your east you see the main hallway.\n\r",ch); break; case 5: send_to_char("[Exits: north south east west]\n\r",ch); send_to_char("You are standing in the main hallway. To your east lies the bottom of a\n\r",ch); send_to_char("large staircase, while to your west you see the southern end of the dining\n\r",ch); send_to_char("room. To your south, further down the main hallway, you see the entrance\n\r",ch); send_to_char("to the south, and north of you is the kitchen.\n\r",ch); break; case 6: send_to_char("[Exits: west up]\n\r",ch); send_to_char("You are standing at the bottom of a large staircase, which leads upstairs.\n\r",ch); send_to_char("To your west lies the main hallway.\n\r",ch); break; case 7: send_to_char("[Exits: south east]\n\r",ch); send_to_char("You are standing at the northern end of the dining room. To your south, the\n\r",ch); send_to_char("dining room continues. To your east lies the kitchen.\n\r",ch); break; case 8: send_to_char("[Exits: south west]\n\r",ch); send_to_char("You are standing in the kitchen. To your south lies the main hallway, while\n\r",ch); send_to_char("to your west is the northern end of the dining room.\n\r",ch); break; case 9: send_to_char("[Exits: south]\n\r",ch); send_to_char("You are standing in the upstairs bathroom. To your south lies the main\n\r",ch); send_to_char("hallway.\n\r",ch); break; case 10: send_to_char("[Exits: east]\n\r",ch); send_to_char("You are standing in a bedroom. To your east lies the main hallway.\n\r",ch); break; case 11: send_to_char("[Exits: north south east west]\n\r",ch); send_to_char("You are standing in the main hallway. To your north lies the bathroom, while\n\r",ch); send_to_char("to your west you see a bedroom. The hallway continues south, and to your\n\r",ch); send_to_char("east you see a staircase leading downstairs.\n\r",ch); break; case 12: send_to_char("[Exits: west down]\n\r",ch); send_to_char("You are standing at the top of a large staircase. To your west lies the \n\r",ch); send_to_char("main hallway, and beyond that you see a bedroom.\n\r",ch); break; case 13: send_to_char("[Exits: east]\n\r",ch); send_to_char("You are standing in a bedroom. To your east lies the main hallway.\n\r",ch); break; case 14: send_to_char("[Exits: north south east west]\n\r",ch); send_to_char("You are standing in the main hallway. To your north, the hallway continues,\n\r",ch); send_to_char("while to your east, west and south lie bedrooms.\n\r",ch); break; case 15: send_to_char("[Exits: west]\n\r",ch); send_to_char("You are standing in a bedroom. To your west lies the main hallway.\n\r",ch); break; case 16: send_to_char("[Exits: north]\n\r",ch); send_to_char("You are standing in a bedroom. To your north lies the main hallway.\n\r",ch); break; } break; } } else { for ( loopy = ch->y + 5; loopy >= ch->y - 5; loopy-- ) { for ( loopx = ch->x - 5; loopx <= ch->x + 5; loopx++ ) { draw_room(ch, loopx, loopy); } send_to_char("\n\r",ch); } } return; } /****************************************************************************** Local operations ******************************************************************************/ void draw_room( CHAR_DATA *ch, int x, int y ) { char buf[MAX_INPUT_LENGTH]; while (x < 0 ) x += 1000; while (y < 0 ) y += 1000; while (x > 999) x -= 1000; while (y > 999) y -= 1000; if (ch->x == x && ch->y == y) { strcpy(buf,"<oo>"); } else switch ( map_data(x,y) ) { default: strcpy(buf," "); break; case WILD_AREA_LINK: strcpy(buf,"#7[??]#n"); break; case WILD_ROAD: strcpy(buf,"#0____#n"); break; case WILD_BUILDING_BURNED: case WILD_BUILDING_DESTROYED: strcpy(buf,"#r{~~}#n"); break; case WILD_BUILDING_CONSTRUCTION: strcpy(buf,"#o{^^}#n"); break; case WILD_WATER_DEEP_1: case WILD_WATER_DEEP_2: strcpy(buf,"#L~~~~#n"); break; case WILD_FOREST_1: strcpy(buf,"#G.^..#n"); break; case WILD_FOREST_2: strcpy(buf,"#G.^.^#n"); break; case WILD_FOREST_3: strcpy(buf,"#G^^.^#n"); break; case WILD_FOREST_4: strcpy(buf,"#G^^^^#n"); break; case WILD_HUT: case WILD_HUT_OWNED: case WILD_HUT_LOCKED: strcpy(buf," #o()#n "); break; case WILD_CABIN: case WILD_CABIN_OWNED: case WILD_CABIN_LOCKED: strcpy(buf," #o[]#n "); break; case WILD_COTTAGE: case WILD_COTTAGE_OWNED: case WILD_COTTAGE_LOCKED: strcpy(buf,"#o(^^)#n"); break; case WILD_HOUSE: case WILD_HOUSE_OWNED: case WILD_HOUSE_LOCKED: strcpy(buf,"#o[^^]#n"); break; case WILD_MINE_STRUCTURE_EMPTY: case WILD_MINE_STRUCTURE_STONE: case WILD_MINE_STRUCTURE_IRON: case WILD_MINE_STRUCTURE_GOLD: case WILD_MINE_STRUCTURE_OIL: strcpy(buf,"#0[/\\]#n"); break; case WILD_MINE_STONE_1: case WILD_MINE_STONE_2: case WILD_MINE_IRON_1: case WILD_MINE_IRON_2: case WILD_MINE_GOLD_1: case WILD_MINE_GOLD_2: case WILD_MINE_OIL_1: case WILD_MINE_OIL_2: case WILD_MINE_EMPTY: strcpy(buf,"#0[\\/]#n"); break; case WILD_MOUNTAINS_NONE: case WILD_MOUNTAINS_STONE: case WILD_MOUNTAINS_IRON: case WILD_MOUNTAINS_GOLD: case WILD_MOUNTAINS_OIL: strcpy(buf,"#0/\\/\\#n"); break; case WILD_FIELD_HOED: strcpy(buf,"#o....#n"); break; case WILD_FIELD_SEEDED: strcpy(buf,"#y....#n"); break; case WILD_FIELD_WHEAT: strcpy(buf,"#Y::::#n"); break; case WILD_PLAINS: strcpy(buf,"#g....#n"); break; case WILD_WATER_1: case WILD_WATER_2: strcpy(buf,"#L~~~~#n"); break; } send_to_char(buf,ch); return; }