home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
games
/
tinymud2.zip
/
DUMP.C
< prev
next >
Wrap
C/C++ Source or Header
|
1990-09-02
|
3KB
|
147 lines
#include "copyright.h"
#include <stdio.h>
#include "db.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;
}
void main(int argc, char **argv)
{
struct object *o;
dbref owner;
dbref thing;
if(argc < 1) {
fprintf(stderr, "Usage: %s [owner]\n", *argv);
exit(1);
}
if(argc >= 2) {
owner = atol(argv[1]);
} else {
owner = NOTHING;
}
if(db_read(stdin) < 0) {
fprintf(stderr, "%s: bad input\n", argv[0]);
exit(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');
}
exit(0);
}