/* powerlist.c */ /* $Id: powerlist.c,v 1.13 1993/05/27 23:17:43 nils Exp $ */ #include "db.h" #include "powers.h" #include "externs.h" #define NO PW_NO #define YES PW_YES #define YESLT PW_YESLT #define YESEQ PW_YESEQ /* Drctr Admin Cnstctr Offcil Citzen Vistr Guest Jroff Corp Robot */ struct pow_list powers[]={ { "Allquota", POW_ALLQUOTA, "Ability to alter everyone's quota at once", {NO, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, NO, NO, NO, NO, NO, NO, NO, NO, NO }}, { "Announce", POW_ANNOUNCE, "Ability to @announce for free", {YES, YES, YES, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, YES, NO, NO, NO, YES, YES, NO }}, { "Boot", POW_BOOT, "Ability to @boot players off the game", {YES, YESLT, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YESLT, YESLT, YESLT, NO, NO, NO, NO, YESLT,NO }}, { "Broadcast", POW_BROADCAST, "Ability to @broadcast a message", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }}, { "Chown", POW_CHOWN, "Ability to change ownership of an object", {YESEQ, YESEQ, YESEQ, NO, NO, NO, NO, NO, NO, NO }, {YESEQ, YESEQ, YESEQ, YESLT, NO, NO, NO, NO, YES, NO }}, { "Class", POW_CLASS, "Ability to re@classify somebody", {YESLT, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YESLT, NO, NO, NO, NO, NO, NO, NO, NO, NO }}, { "Database", POW_DB, "Ability to use @dbck and other database utilities", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, NO, NO, NO, NO, NO, NO, YES, NO }}, { "Examine", POW_EXAMINE, "Ability to see people's homes and locations", {YES, YESEQ, YESEQ, YESEQ, NO, NO, NO, NO, NO, NO }, {YES, YESEQ, YESEQ, YESEQ, NO, NO, NO, YESLT,YES, YES}}, { "Free", POW_FREE, "Ability to build, etc. for free (currently unused)", {YES, YES, YES, NO, NO, NO, YES, NO, NO, NO }, {YES, YES, YES, NO, NO, NO, YES, NO, YES, NO }}, { "Who", POW_WHO, "Ability to see classes and hidden players on the WHO list", {YES, YES, YESLT, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, YES, NO, NO, NO, NO, YES, YES}}, { "Hostnames", POW_HOST, "Ability to see hostnames on the WHO list", {YES, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, NO, YES, NO, NO, NO, NO, NO, NO }}, { "Join", POW_JOIN, "Ability to 'join' players", {YES, YES, YES, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, YES, NO, NO, NO, YES, YES, YES}}, { "Member", POW_MEMBER, "Ability to change your name and password", {YES, YES, YES, YES, YES, NO, NO, YES, YES, YES}, {YES, YES, YES, YES, YES, NO, NO, YES, YES, YES}}, { "Modify", POW_MODIFY, "Ability to modify other people's objects", {YESEQ, YESEQ, YESEQ, NO, NO, NO, NO, NO, NO, NO }, {YESEQ, YESEQ, YESEQ, YESEQ, NO, NO, NO, NO, YESEQ,NO }}, { "Money", POW_MONEY, "Power to have INFINITE money", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, NO, NO, NO, NO, NO, YES, YES}}, { "Newpassword", POW_NEWPASS, "Ability to use the @newpassword command", {YESLT, YESLT, NO, NO, NO, NO, NO, NO, NO, NO }, {YESLT, YESLT, NO, NO, NO, NO, NO, NO, NO, NO }}, { "Noslay", POW_NOSLAY, "Power to not be killed (currently unused)", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, NO, NO, NO, NO, NO, NO, YES, YES}}, { "Noquota", POW_NOQUOTA, "Power to have INFINITE quota", {YES, YES, YES, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, NO, NO, NO, NO, NO, YES, NO }}, { "Nuke", POW_NUKE, "Power to @nuke other characters", {YESLT, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YESLT, YESLT, NO, NO, NO, NO, NO, NO, NO, NO }}, { "Pcreate", POW_PCREATE, "Power to create new characters", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, NO, NO, NO, NO, NO, NO, YES, NO }}, { "Poor", POW_POOR, "Power to use the @poor command", {NO, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, NO, NO, NO, NO, NO, NO, NO, NO, NO }}, { "Queue", POW_QUEUE, "Power to see everyone's commands in the queue", {YES, YES, YES, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, YES, NO, NO, NO, NO, YES, YES}}, { #ifdef EXEC "Exec", POW_EXEC, "Power to execute external programs", #else "Exec", POW_EXEC, "<not available>", #endif {NO, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, NO, NO, NO, NO, NO, YES, NO }}, { "Seeatr", POW_SEEATR, "Ability to see attributes on other people's things", {YESEQ, YESEQ, NO, NO, NO, NO, NO, NO, NO, NO }, {YESEQ, YESEQ, YESEQ, YESEQ, NO, NO, NO, YESEQ,YES, YES}}, { "Setpow", POW_SETPOW, "Ability to alter people's powers", {YESLT, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YESLT, NO, NO, NO, NO, NO, NO, NO, NO, NO }}, { "Slay", POW_SLAY, "Ability to use the 'slay' command", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, NO, NO, NO, NO, NO, YES, NO }}, { "Shutdown", POW_SHUTDOWN, "Ability to @shutdown the game", {YES, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }}, { "Summon", POW_SUMMON, "Ability to 'summon' other players", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, YESEQ, NO, NO, NO, NO, YES, YES}}, { "Slave", POW_SLAVE, "Ability to set the SLAVE flag.", {YESLT, YESLT, NO, NO, NO, NO, NO, NO, NO, NO }, {YESLT, YESLT, YESLT, YESLT, NO, NO, NO, YESLT,YESLT,NO }}, { "Spoof", POW_SPOOF, "Ability to do unlimited @emit etc", {YES, YES, YES, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, NO, NO, NO, NO, NO, YES, YES}}, { "Stats", POW_STATS, "Ability to @stat other ppl", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, YES, NO, NO, NO, NO, YES, YES}}, { "Steal", POW_STEAL, "Ability to give negative amounts of credits", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, NO, NO, NO, NO, NO, YES, YES}}, { "Teleport", POW_TELEPORT, "Ability to use unlimited @tel", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, NO, NO, NO, NO, NO, YES, YES}}, { "WizAttributes", POW_WATTR, "Ability to set Last, Queue, etc", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, NO, NO, NO, NO, NO, YES, NO }}, { "WizFlags", POW_WFLAGS, "Ability to set Temple, etc", {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, NO, NO, NO, NO, NO, NO, YES, NO }}, { "Remote", POW_REMOTE, "Ability to do remote whisper, @pemit, etc.", {YES, YES, YES, YES, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, YES, NO, NO, NO, YES, YES, YES}}, { "Security", POW_SECURITY, "Ability to do various security-related things", {YES, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, NO, NO, NO, NO, NO, NO, NO, NO, NO }}, { "Backstage", POW_BACKSTAGE, "Ability to see numbers on all objects", {YES, YES, YES, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, YES, NO, NO, NO, YES, YES, YES}}, { "Functions", POW_FUNCTIONS, "Ability to get correct results from all functions", {YES, YES, YES, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, YES, YES, NO, NO, NO, NO, YES, YES}}, { "Dbtop", POW_DBTOP, "Abililty to do a @dbtop", {YES, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YES, NO, YES, NO, NO, NO, NO, YES, NO }}, { "Setquota", POW_SETQUOTA, "Ability to change people's quotas", {YES, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, YESLT, YESLT, NO, NO, NO, NO, NO, NO, NO }}, { #ifdef USE_SPACE /* Power added by Michael Majere */ "Space", POW_SPACE, "Overlord of time and space!", #else "Space", POW_SPACE, "<not available>", #endif {NO, NO, NO, NO, NO, NO, NO, NO, NO, NO }, {YES, NO, NO, NO, NO, NO, NO, NO, YES, NO }}, { #ifdef USE_RWHO "Rwho", POW_RWHO, "Ability to start/stop and do free rwho", {YES, NO, NO, NO, NO, NO, NO, NO, NO, NO }, #else "Rwho", POW_RWHO, "<not available>", {NO, NO, NO, NO, NO, NO, NO, NO, NO, NO }, #endif {YES, YES, NO, NO, NO, NO, NO, NO, NO, NO }}, }; char *classnames[] ={ " ?", "Guest", "Visitor", "Group", "Citizen", "pCitizen", "Guide", "Official", "Constructor", "Administrator", "Director", NULL }; char *public_classnames[]={ " ?", "Visitor", "Visitor", "Group", "Citizen", "pCitizen", "Guide", "Official", "Constructor", "Administrator", "Director", NULL }; char *short_classnames[]={ " ?", "Guest", "Vstor", "Group", "Ctzen", "pCtzn", "Guide", "Offcl", "Cnstr", "Admin", "Drctr", NULL }; char *short_public_classnames[]={ " ?", "Vstor", "Vstor", "Group", "Ctzen", "pCtzn", "Guide", "Offcl", "Cnstr", "Admin", "Drctr", NULL }; char *typenames[] ={ "Room", "Thing", "Exit", " 0x3", " 0x4", " 0x5", " 0x6", " 0x7", "Player" }; char hierarchy[] ={ /* class hierarchy.. the sooner it comes the further down, less powerful. */ CLASS_DIR, CLASS_ADMIN, CLASS_BUILDER, CLASS_OFFICIAL, CLASS_JUNOFF, CLASS_PCITIZEN, CLASS_CITIZEN, CLASS_GROUP, CLASS_VISITOR, CLASS_GUEST, 0 }; char *class_to_name(class) int class; { if(class >= NUM_CLASSES || class <=0) return NULL; return classnames[class]; } char *public_class_to_name(class) int class; { return public_classnames[class]; } char *short_class_to_name(class) int class; { return short_classnames[class]; } char *short_public_class_to_name(class) int class; { return short_public_classnames[class]; } int name_to_class(name) char *name; { int k; for(k=0;classnames[k];k++) if(!string_compare(name,classnames[k])) return k; return 0; } char *type_to_name(type) int type; { if(type>=0 && type<9) return typenames[type]; else return NULL; } int class_to_list_pos(type) int type; { switch(type) { case CLASS_DIR: return 0; case CLASS_ADMIN: return 1; case CLASS_BUILDER: return 2; case CLASS_OFFICIAL: return 3; case CLASS_CITIZEN: return 4; case CLASS_VISITOR: return 5; case CLASS_GUEST: return 6; case CLASS_JUNOFF: return 7; case CLASS_PCITIZEN: case CLASS_GROUP: return 8; default: return 5; } }