/****************************************************************************** Snippet: Wilderness system (v1.0). Author: Richard Woolcock (aka KaVir). Date: 2nd September 1998. ****************************************************************************** File: wild.h Purpose: Header file for the wilderness code. ****************************************************************************** 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. ******************************************************************************/ /****************************************************************************** Local literals ******************************************************************************/ #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <time.h> /* Shortened type names */ #define RID_T ROOM_INDEX_DATA #define MAP_T MAP_TYPE #define RES_T RESOURCE_TYPE #define MOB_VNUM_SHARK 20000 #define MOB_VNUM_BEAR 20001 #define MOB_VNUM_WOLF 20002 #define MOB_VNUM_LUMBERJACK 20003 #define MOB_VNUM_FISH 20004 #define OBJ_VNUM_PROTOPLASM 20000 #define OBJ_VNUM_AXE 20001 #define OBJ_VNUM_FISH 20004 /* Wilderness update speed. */ #define PULSE_WILDERNESS ( 5 * PULSE_PER_SECOND) #define WILDERNESS_LOW_VNUM 20000 /* Beginning of wilderness zone. */ #define WILDERNESS_HIGH_VNUM 20999 /* End of wilderness zone. */ #define WILDERNESS_SIZE 1000 /* Size of wilderness. */ /* Wilderness actions. */ #define WA_NONE 0 #define WA_CHOPPING_SWING 1 /* Chopping a tree */ #define WA_CHOPPING_CHOP 2 /* Chopping a tree */ #define WA_TRIM 3 /* Trimming a tree */ #define WA_FISHING_MENDING 4 /* Putting on a new line */ #define WA_FISHING_CASTING 5 /* Casting the line out */ #define WA_FISHING_WAITING 6 /* Waiting for a bite */ #define WA_FISHING_REELING 7 /* Reeling in a bite */ #define WA_BUILDING_FOUNDATION 8 /* Building hut/cabin/etc */ #define WA_BUILDING_FLOOR_1 9 /* Building hut/cabin/etc */ #define WA_BUILDING_FLOOR_2 10 /* Building hut/cabin/etc */ #define WA_BUILDING_FLOOR_3 11 /* Building hut/cabin/etc */ #define WA_BUILDING_ROOF_1 12 /* Building hut/cabin/etc */ #define WA_BUILDING_ROOF_2 13 /* Building hut/cabin/etc */ #define WA_BUILDING_ROOF_3 14 /* Building hut/cabin/etc */ #define WA_BUILDING_1 15 /* Building hut/cabin/etc */ #define WA_BUILDING_2 16 /* Building hut/cabin/etc */ #define WA_BUILDING_3 17 /* Building hut/cabin/etc */ #define WA_BUILDING_COMPLETE 18 /* Building hut/cabin/etc */ #define WA_DIGGING_SWING 19 /* Digging the inside mine */ #define WA_DIGGING_CHOP 20 /* Digging the inside mine */ #define WA_SAW 21 /* Sawing up a log */ #define WA_MINING_SWING 22 /* Mining */ #define WA_MINING_CHOP 23 /* Mining */ #define WA_HOE 24 /* Hoeing a field */ #define WA_SEED 25 /* Seeding a field */ #define WA_SCYTHE 26 /* Scything a field */ #define WA_ROAD 27 /* Laying a road */ /* Tool types. */ #define TOOL_PEN 1 #define TOOL_PLIERS 2 #define TOOL_SCALPEL 3 #define TOOL_FISHING_ROD 4 #define TOOL_SHOVEL 5 #define TOOL_PICK 6 #define TOOL_HAMMER 7 #define TOOL_NAILS 8 #define TOOL_SAW 9 #define TOOL_HOE 10 #define TOOL_SEEDS 11 #define TOOL_SCYTHE 12 /* Wilderness room types. */ #define WILD_AREA_LINK '@' #define WILD_ROAD '_' #define WILD_HUT_OWNED 'a' #define WILD_CABIN_OWNED 'A' #define WILD_BUILDING_BURNED 'b' #define WILD_BUILDING_DESTROYED 'B' #define WILD_BUILDING_CONSTRUCTION 'c' #define WILD_SCORCHED_GROUND 'C' #define WILD_WATER_DEEP_1 'd' #define WILD_WATER_DEEP_2 'D' #define WILD_FOREST_1 'e' #define WILD_FOREST_2 'E' #define WILD_FOREST_3 'f' #define WILD_FOREST_4 'F' #define WILD_HUT 'g' #define WILD_HUT_LOCKED 'G' #define WILD_CABIN 'h' #define WILD_CABIN_LOCKED 'H' #define WILD_COTTAGE 'i' #define WILD_COTTAGE_LOCKED 'I' #define WILD_HOUSE 'j' #define WILD_HOUSE_LOCKED 'J' #define WILD_FIELD_HOED 'k' #define WILD_FIELD_SEEDED 'K' #define WILD_FIELD_WHEAT 'l' #define WILD_MOUNTAINS_NONE 'm' #define WILD_MOUNTAINS_STONE 'M' #define WILD_MOUNTAINS_IRON 'n' #define WILD_MOUNTAINS_GOLD 'N' #define WILD_MOUNTAINS_OIL 'o' #define WILD_MINE_STRUCTURE_EMPTY 'O' #define WILD_PLAINS 'p' #define WILD_MINE_STONE_1 'P' #define WILD_MINE_STONE_2 'q' #define WILD_MINE_IRON_1 'Q' #define WILD_MINE_IRON_2 'r' #define WILD_MINE_GOLD_1 'R' #define WILD_MINE_GOLD_2 's' #define WILD_MINE_OIL_1 'S' #define WILD_MINE_OIL_2 't' #define WILD_MINE_EMPTY 'T' #define WILD_MINE_STRUCTURE_STONE 'u' #define WILD_MINE_STRUCTURE_IRON 'U' #define WILD_MINE_STRUCTURE_GOLD 'v' #define WILD_MINE_STRUCTURE_OIL 'V' #define WILD_WATER_1 'w' #define WILD_WATER_2 'W' #define WILD_MOUNTAINS_COAL 'x' #define WILD_MINE_COAL_1 'X' #define WILD_MINE_COAL_2 'y' #define WILD_MINE_STRUCTURE_COAL 'Y' #define WILD_COTTAGE_OWNED 'z' #define WILD_HOUSE_OWNED 'Z' /****************************************************************************** Local enumerated types ******************************************************************************/ /* Resource types. */ typedef enum { RESOURCE_TREE, /* A chopped down tree. */ RESOURCE_LOG, /* A tree with the bits cut off. */ RESOURCE_ROCK, /* A piece of rock. */ RESOURCE_IRON, /* A piece of iron ore. */ RESOURCE_GOLD, /* A piece of iron ore. */ RESOURCE_OIL, /* A pool of oil. */ RESOURCE_WHEAT, /* A bundle of wheat. */ } RESOURCE_TYPE; /* Large wilderness map location types. */ typedef enum { SEA = WILD_PLAINS, LAND = WILD_WATER_1 } MAP_TYPE; /****************************************************************************** Required macros ******************************************************************************/ /* Checks if the room is within the wilderness */ #define IN_WILDERNESS(v) ((v) >= WILDERNESS_LOW_VNUM && \ (v) <= WILDERNESS_HIGH_VNUM) #define CHAR_IN_WILDERNESS(ch) ((ch->in_room->vnum) >= WILDERNESS_LOW_VNUM && (ch->in_room->vnum) <= WILDERNESS_HIGH_VNUM) /****************************************************************************** Required operation prototypes for wild_data.c ******************************************************************************/ char map_data args( ( int x, int y ) ); void set_map_data args( ( int x, int y, char room_type ) ); bool map_changed args( ( int x, int y ) ); void set_map_changed args( ( int x, int y, bool changed ) ); MAP_T map_big args( ( int x, int y ) ); void set_world_saving args( ( bool save_world ) ); bool check_world_saving args( ( void ) ); /****************************************************************************** Required operation prototypes for wild_io.c ******************************************************************************/ void wild_write args( ( int x, int y ) ); void wild_read args( ( int x, int y ) ); void world_read args( ( void ) ); /****************************************************************************** Required operation prototypes for wild_move.c ******************************************************************************/ void put_area_vnum args( ( int vnum ) ); int next_home args( ( CHAR_DATA *ch, int door ) ); RID_T * next_room args( ( int x, int y, int room ) ); void char_from_wilderness args( ( CHAR_DATA *ch ) ); RID_T * wilderness_room args( ( CHAR_DATA *ch, RID_T *room ) ); /****************************************************************************** Required operation prototypes for wild_info.c ******************************************************************************/ void draw_map args( ( CHAR_DATA *ch ) ); /****************************************************************************** Required operation prototypes for wild_spec.c ******************************************************************************/ DECLARE_SPEC_FUN( spec_wildmob ); DECLARE_SPEC_FUN( spec_lumberjack ); /****************************************************************************** Required operation prototypes for wild_update.c ******************************************************************************/ void wilderness_update args( ( void ) );