#ifndef _DUMP_SMAUG_H
#define _DUMP_SMAUG_H
#include "smaug_common.h"
#define SMAUG_ZONE_OFFSET 250
#define SMAUG_VNUM_OFFSET 25000
/*
* This file holds defined values for the diku target.
* They are used in converting the original WileyMUD files into
* the target diku format.
*/
#define SMAUG_AREA_VERSION_WRITE 1
#define SMAUG_AREA_LEVEL_LIMIT_LOWER 0
#define SMAUG_AREA_LEVEL_LIMIT_UPPER 65
#define SMAUG_CLIMATE_TEMP_NORMAL 2
#define SMAUG_CLIMATE_PRECIP_NORMAL 2
#define SMAUG_CLIMATE_WIND_NORMAL 2
/*
* Room flags. Holy cow! Talked about stripped away..
* Used in #ROOMS. Those merc guys know how to strip code down.
* Lets put it all back... ;)
*/
/* Roomflags converted to Extended BV - Samson 8-11-98 */
/* NOTE: If this list grows to 65, raise BFS_MARK in track.c - Samson */
/* Don't forget to add the flag to build.c!!! */
/* Current # of flags: 42 */
typedef enum {
SMAUG_ROOM_DARK, SMAUG_ROOM_DEATH, SMAUG_ROOM_NO_MOB, SMAUG_ROOM_INDOORS, SMAUG_ROOM_LAWFUL,
SMAUG_ROOM_NEUTRAL, SMAUG_ROOM_CHAOTIC,
SMAUG_ROOM_NO_MAGIC, SMAUG_ROOM_TUNNEL, SMAUG_ROOM_PRIVATE, SMAUG_ROOM_SAFE,
SMAUG_ROOM_SOLITARY, SMAUG_ROOM_PET_SHOP,
SMAUG_ROOM_NO_RECALL, SMAUG_ROOM_DONATION, SMAUG_ROOM_NODROPALL, SMAUG_ROOM_SILENCE,
SMAUG_ROOM_LOGSPEECH, SMAUG_ROOM_NODROP,
SMAUG_ROOM_CLANSTOREROOM, SMAUG_ROOM_NO_SUMMON, SMAUG_ROOM_NO_ASTRAL, SMAUG_ROOM_TELEPORT,
SMAUG_ROOM_TELESHOWDESC,
SMAUG_ROOM_NOFLOOR, SMAUG_ROOM_NOSUPPLICATE, SMAUG_ROOM_ARENA, SMAUG_ROOM_NOMISSILE,
SMAUG_ROOM_R4, SMAUG_ROOM_R5,
SMAUG_ROOM_PROTOTYPE, SMAUG_ROOM_DND, SMAUG_ROOM_BFS_MARK, SMAUG_ROOM_MAX
} smaug_room_flags;
/*
* Exit flags. EX_RES# are reserved for use by the
* Used in #ROOMS. SMAUG development team ( No RES flags left, sorry. - Samson )
*/
/* Converted to Extended BV - Samson 7-23-00 */
/* Don't forget to add the flag to build.c!!! */
/* Current # of flags: 35 */
typedef enum {
SMAUG_EX_ISDOOR, SMAUG_EX_CLOSED, SMAUG_EX_LOCKED, SMAUG_EX_SECRET, SMAUG_EX_SWIM,
SMAUG_EX_PICKPROOF, SMAUG_EX_FLY,
SMAUG_EX_CLIMB, SMAUG_EX_DIG, SMAUG_EX_EATKEY, SMAUG_EX_NOPASSDOOR, SMAUG_EX_HIDDEN,
SMAUG_EX_PASSAGE, SMAUG_EX_PORTAL,
SMAUG_EX_RES1, SMAUG_EX_RES2, SMAUG_EX_xCLIMB, SMAUG_EX_xENTER, SMAUG_EX_xLEAVE,
SMAUG_EX_xAUTO, SMAUG_EX_NOFLEE,
SMAUG_EX_xSEARCHABLE, SMAUG_EX_BASHED, SMAUG_EX_BASHPROOF, SMAUG_EX_NOMOB, SMAUG_EX_WINDOW,
SMAUG_EX_xLOOK,
SMAUG_EX_ISBOLT, SMAUG_EX_BOLTED, SMAUG_EXFLAG_MAX
} smaug_exit_flags;
/*
* Sector types.
* Used in #ROOMS and on Overland maps.
*/
/* Current number of types: 34 */
typedef enum {
SMAUG_SECT_INSIDE, SMAUG_SECT_CITY, SMAUG_SECT_FIELD, SMAUG_SECT_FOREST, SMAUG_SECT_HILLS,
SMAUG_SECT_MOUNTAIN,
SMAUG_SECT_WATER_SWIM, SMAUG_SECT_WATER_NOSWIM, SMAUG_SECT_UNDERWATER, SMAUG_SECT_AIR,
SMAUG_SECT_DESERT,
SMAUG_SECT_DUNNO, SMAUG_SECT_OCEANFLOOR, SMAUG_SECT_UNDERGROUND, SMAUG_SECT_LAVA,
SMAUG_SECT_SWAMP, SMAUG_SECT_ICE,
SMAUG_SECT_MAX
} smaug_sector_types;
/*
* Item types.
* Used in #OBJECTS.
*/
/* Don't forget to add the flag to build.c!!! */
/* also don't forget to add new item types to the find_oftype function in afk.c */
/* Current # of types: 68 */
typedef enum {
SMAUG_ITEM_NONE, SMAUG_ITEM_LIGHT, SMAUG_ITEM_SCROLL, SMAUG_ITEM_WAND, SMAUG_ITEM_STAFF,
SMAUG_ITEM_WEAPON,
SMAUG_ITEM_FIREWEAPON, SMAUG_ITEM_MISSILE, SMAUG_ITEM_TREASURE, SMAUG_ITEM_ARMOR,
SMAUG_ITEM_POTION,
SMAUG_ITEM_WORN, SMAUG_ITEM_FURNITURE, SMAUG_ITEM_TRASH, SMAUG_ITEM_OLDTRAP,
SMAUG_ITEM_CONTAINER,
SMAUG_ITEM_NOTE, SMAUG_ITEM_DRINK_CON, SMAUG_ITEM_KEY, SMAUG_ITEM_FOOD, SMAUG_ITEM_MONEY,
SMAUG_ITEM_PEN,
SMAUG_ITEM_BOAT, SMAUG_ITEM_CORPSE_NPC, SMAUG_ITEM_CORPSE_PC, SMAUG_ITEM_FOUNTAIN,
SMAUG_ITEM_PILL,
SMAUG_ITEM_BLOOD, SMAUG_ITEM_BLOODSTAIN, SMAUG_ITEM_SCRAPS, SMAUG_ITEM_PIPE,
SMAUG_ITEM_HERB_CON,
SMAUG_ITEM_HERB, SMAUG_ITEM_INCENSE, SMAUG_ITEM_FIRE, SMAUG_ITEM_BOOK, SMAUG_ITEM_SWITCH,
SMAUG_ITEM_LEVER,
SMAUG_ITEM_PULLCHAIN, SMAUG_ITEM_BUTTON, SMAUG_ITEM_DIAL, SMAUG_ITEM_RUNE,
SMAUG_ITEM_RUNEPOUCH,
SMAUG_ITEM_MATCH, SMAUG_ITEM_TRAP, SMAUG_ITEM_MAP, SMAUG_ITEM_PORTAL, SMAUG_ITEM_PAPER,
SMAUG_ITEM_TINDER, SMAUG_ITEM_LOCKPICK, SMAUG_ITEM_SPIKE, SMAUG_ITEM_DISEASE,
SMAUG_ITEM_OIL, SMAUG_ITEM_FUEL,
SMAUG_ITEM_EMPTY1, SMAUG_ITEM_EMPTY2, SMAUG_ITEM_MISSILE_WEAPON, SMAUG_ITEM_PROJECTILE,
SMAUG_ITEM_QUIVER,
SMAUG_ITEM_SHOVEL, SMAUG_ITEM_SALVE, SMAUG_ITEM_COOK, SMAUG_ITEM_KEYRING, SMAUG_ITEM_ODOR,
SMAUG_ITEM_CHANCE, SMAUG_ITEM_DRINK_MIX
} smaug_item_types;
/*
* Extra flags.
* Used in #OBJECTS. Rearranged for better compatibility with Shard areas - Samson
*/
/* Don't forget to add the flag to o_flags in build.c and handler.c!!! */
/* Current # of flags: 65 */
typedef enum {
SMAUG_ITEM_GLOW, SMAUG_ITEM_HUM, SMAUG_ITEM_DARK, SMAUG_ITEM_LOYAL, SMAUG_ITEM_EVIL,
SMAUG_ITEM_INVIS, SMAUG_ITEM_MAGIC,
SMAUG_ITEM_NODROP, SMAUG_ITEM_BLESS, SMAUG_ITEM_ANTI_GOOD, SMAUG_ITEM_ANTI_EVIL,
SMAUG_ITEM_ANTI_NEUTRAL,
SMAUG_ITEM_NOREMOVE, SMAUG_ITEM_INVENTORY, SMAUG_ITEM_ANTI_MAGE, SMAUG_ITEM_ANTI_THIEF,
SMAUG_ITEM_ANTI_WARRIOR, SMAUG_ITEM_ANTI_CLERIC, SMAUG_ITEM_ORGANIC, SMAUG_ITEM_METAL,
SMAUG_ITEM_DONATION,
SMAUG_ITEM_CLANOBJECT, SMAUG_ITEM_CLANCORPSE, SMAUG_ITEM_ANTI_VAMPIRE,
SMAUG_ITEM_ANTI_DRUID,
SMAUG_ITEM_HIDDEN, SMAUG_ITEM_POISONED, SMAUG_ITEM_COVERING, SMAUG_ITEM_DEATHROT,
SMAUG_ITEM_BURIED,
SMAUG_ITEM_PROTOTYPE, SMAUG_ITEM_NOLOCATE, SMAUG_ITEM_GROUNDROT, SMAUG_ITEM_LOOTABLE,
SMAUG_ITEM_PERSONAL,
SMAUG_ITEM_MULTI_INVOKE, SMAUG_ITEM_ENCHANTED, SMAUG_ITEM_FLAG_MAX
} smaug_item_extra_flags;
void dump_as_smaug(zones *Zones, rooms *Rooms, shops *Shops,
objects *Objects, mobs *Mobs);
int smaug_qcmp_zone_vnum(const void *a, const void *b);
bool smaug_str_cmp(const char *astr, const char *bstr);
int smaug_get_rflag(char *flag);
int smaug_get_exflag(char *flag);
char *smaug_flag_string(int bitvector,
char *const flagarray[]);
char *smaug_ext_flag_string(EXT_BV *bitvector,
char *const flagarray[]);
char *smaug_strip_cr(char *str);
int smaug_convertobjtype(int Type);
EXT_BV smaug_convert_rflags(int OldValue);
EXT_BV smaug_convert_exflags(int OldType);
EXT_BV smaug_convert_oflags(int OldValue);
int smaug_convert_wflags(int OldValue);
int smaug_get_otype(const char *type);
int smaug_get_oflag(char *flag);
int smaug_get_wflag(char *flag);
int smaug_get_magflag(char *flag);
int smaug_convert_spell(int SpellNum);
int smaug_convert_skill(int SkillNum);
int smaug_convert_liquid(int Liquid);
int *smaug_convert_item_values(int Type, int w0, int w1,
int w2, int w3);
EXT_BV smaug_convert_actflags(int OldValue);
EXT_BV smaug_convert_aflags(int OldValue);
int smaug_convertsex(int Sex);
int smaug_convertposition(int Position);
int smaug_get_sex(const char *type);
int smaug_get_npc_race(char *type);
int smaug_get_npc_class(char *type);
int smaug_get_position(const char *type);
int smaug_get_actflag(char *flag);
int smaug_get_aflag(char *flag);
int smaug_get_partflag(char *flag);
int smaug_get_risflag(char *flag);
int smaug_get_attackflag(char *flag);
void smaug_convert_attack(EXT_BV *NewValue, int OldValue);
EXT_BV smaug_convert_imm(int OldValue);
void renumber_for_smaug(zones *Zones, rooms *Rooms,
shops *Shops, objects *Objects,
mobs *Mobs);
#endif