#include "copyright.h" #include "os.h" #include "db.h" #include "externs.h" #ifndef COMPRESS #define uncompress(x) (x) #else const char *uncompress (const char *s); #endif /* COMPRESS */ const char *unparse_object (dbref player, dbref loc); /* in a dump, you can see everything */ int can_link_to (dbref who, object_flag_type what, dbref where) { return 1; } int controls (dbref who, dbref what) { return 1; } int main (int argc, char **argv) { struct object *o; dbref owner; dbref thing; if (argc < 1) { fprintf (stderr, "Usage: %s [owner]\n", *argv); return (1); } if (argc >= 2) { owner = atol (argv[1]); } else { owner = NOTHING; } if (db_read (stdin) < 0) { fprintf (stderr, "%s: bad input\n", argv[0]); return (5); } for (o = db; o < db + db_top; o++) { /* don't show exits separately */ if ((o->flags & TYPE_MASK) == TYPE_EXIT) continue; /* don't show it if it isn't owned by the right player */ if (owner != NOTHING && o->owner != owner) continue; printf ("#%d: %s [%s] at %s Pennies: %d Type: ", o - db, o->name, db[o->owner].name, unparse_object (owner, o->location), o->pennies); switch (o->flags & TYPE_MASK) { case TYPE_ROOM: printf ("Room"); break; case TYPE_EXIT: printf ("Exit"); break; case TYPE_THING: printf ("Thing"); break; case TYPE_PLAYER: printf ("Player"); break; default: printf ("***UNKNOWN TYPE***"); break; } /* handle flags */ putchar (' '); if (o->flags & ~TYPE_MASK) { printf ("Flags: "); if (o->flags & LINK_OK) printf ("LINK_OK "); if (o->flags & DARK) printf ("DARK "); if (o->flags & STICKY) printf ("STICKY "); if (o->flags & WIZARD) printf ("WIZARD "); if (o->flags & TEMPLE) printf ("TEMPLE "); #ifdef RESTRICTED_BUILDING if (o->flags & BUILDER) printf ("BUILDER "); #endif /* RESTRICTED_BUILDING */ } putchar ('\n'); if (o->key != TRUE_BOOLEXP) printf ("KEY: %s\n", unparse_boolexp (owner, o->key)); if (o->description) { puts ("Description:"); puts (uncompress (o->description)); } if (o->succ_message) { puts ("Success Message:"); puts (uncompress (o->succ_message)); } if (o->fail_message) { puts ("Fail Message:"); puts (uncompress (o->fail_message)); } if (o->ofail) { puts ("Other Fail Message:"); puts (uncompress (o->ofail)); } if (o->osuccess) { puts ("Other Success Message:"); puts (uncompress (o->osuccess)); } if (o->contents != NOTHING) { puts ("Contents:"); DOLIST (thing, o->contents) { /* dump thing description */ putchar (' '); puts (unparse_object (owner, thing)); } } if (o->exits != NOTHING) { if ((o->flags & TYPE_MASK) == TYPE_ROOM) { puts ("Exits:"); DOLIST (thing, o->exits) { printf (" %s", unparse_object (owner, thing)); if (db[thing].key != TRUE_BOOLEXP) { printf (" KEY: %s", unparse_boolexp (owner, db[thing].key)); } if (db[thing].location != NOTHING) { printf (" => %s\n", unparse_object (owner, db[thing].location)); } else { puts (" ***OPEN***"); } } } else { printf ("Home: %s\n", unparse_object (owner, o->exits)); } } putchar ('\n'); } return (0); }