src/powers.h

Go to the documentation of this file.
00001 
00002 /* powers.h - object powers */
00003 
00004 /* $Id: powers.h,v 1.3 2005/06/23 02:59:58 murrayma Exp $ */
00005 
00006 #include "copyright.h"
00007 
00008 #ifndef __POWERS_H
00009 #define __POWERS_H
00010 
00011 #include "htab.h"
00012 #include "db.h"
00013 
00014 
00015 
00016 #define POWER_EXT       0x1     /* Lives in extended powers word */
00017 
00018 
00019 /* First word of powers */
00020 #define POW_CHG_QUOTAS  0x00000001      /* May change and see quotas */
00021 #define POW_CHOWN_ANY   0x00000002      /* Can @chown anything or to anyone */
00022 #define POW_ANNOUNCE    0x00000004      /* May use @wall */
00023 #define POW_BOOT        0x00000008      /* May use @boot */
00024 #define POW_HALT        0x00000010      /* May @halt on other's objects */
00025 #define POW_CONTROL_ALL 0x00000020      /* I control everything */
00026 #define POW_WIZARD_WHO  0x00000040      /* See extra WHO information */
00027 #define POW_EXAM_ALL    0x00000080      /* I can examine everything */
00028 #define POW_FIND_UNFIND 0x00000100      /* Can find unfindable players */
00029 #define POW_FREE_MONEY  0x00000200      /* I have infinite money */
00030 #define POW_FREE_QUOTA  0x00000400      /* I have infinite quota */
00031 #define POW_HIDE        0x00000800      /* Can set themselves DARK */
00032 #define POW_IDLE        0x00001000      /* No idle limit */
00033 #define POW_SEARCH      0x00002000      /* Can @search anyone */
00034 #define POW_LONGFINGERS 0x00004000      /* Can get/whisper/etc from a distance */
00035 #define POW_PROG        0x00008000      /* Can use the @prog command */
00036 
00037 /* FREE FREE FREE FREE */
00038 
00039 #define POW_COMM_ALL    0x00080000      /* Channel wiz */
00040 #define POW_SEE_QUEUE   0x00100000      /* Player can see the entire queue */
00041 #define POW_SEE_HIDDEN  0x00200000      /* Player can see hidden players on WHO list */
00042 #define POW_MONITOR     0x00400000      /* Player can set or clear MONITOR */
00043 #define POW_POLL        0x00800000      /* Player can set the doing poll */
00044 #define POW_NO_DESTROY  0x01000000      /* Cannot be destroyed */
00045 #define POW_GUEST       0x02000000      /* Player is a guest */
00046 #define POW_PASS_LOCKS  0x04000000      /* Player can pass any lock */
00047 #define POW_STAT_ANY    0x08000000      /* Can @stat anyone */
00048 #define POW_STEAL       0x10000000      /* Can give negative money */
00049 #define POW_TEL_ANYWHR  0x20000000      /* Teleport anywhere */
00050 #define POW_TEL_UNRST   0x40000000      /* Teleport anything */
00051 #define POW_UNKILLABLE  0x80000000      /* Can't be killed */
00052 
00053 /* Second word of powers */
00054 #define POW_BUILDER     0x00000001      /* Can build */
00055 
00056 /* Mech stuff: */
00057 #define POW_MECH        0x00000002      /* access to mech cmd set */
00058 #define POW_SECURITY    0x00000004      /* 'admin' - debug/comp */
00059 #define POW_MECHREP     0x00000008      /* access to mechrep cmd set */
00060 #define POW_MAP         0x00000010      /* map modifying powers */
00061 #define POW_TEMPLATE    0x00000020      /* templating powers */
00062 #define POW_TECH        0x00000040      /* can do the IC tech commands */
00063 
00064 /* end of mech stuff */
00065 
00066 /* ---------------------------------------------------------------------------
00067  * POWERENT: Information about object powers.
00068  */
00069 
00070 typedef struct power_entry {
00071     const char *powername;      /* Name of the flag */
00072     int powervalue;             /* Which bit in the object is the flag */
00073     int powerpower;             /* Ctrl flags for this power (recursive? :-) */
00074     int listperm;               /* Who sees this flag when set */
00075     int (*handler) ();          /* Handler for setting/clearing this flag */
00076 } POWERENT;
00077 
00078 typedef struct powerset {
00079     POWER word1;
00080     POWER word2;
00081 } POWERSET;
00082 
00083 extern void init_powertab(void);
00084 extern void display_powertab(dbref);
00085 extern void power_set(dbref, dbref, char *, int);
00086 extern char *power_description(dbref, dbref);
00087 extern POWERENT *find_power(dbref, char *);
00088 extern int has_power(dbref, dbref, char *);
00089 extern void decompile_powers(dbref, dbref, char *);
00090 extern int decode_power(dbref, char *, POWERSET *);
00091 
00092 
00093 
00094 #define s_Change_Quotas(c)      s_Powers((c), Powers(c) | POW_CHG_QUOTAS)
00095 #define s_Chown_Any(c)          s_Powers((c), Powers(c) | POW_CHOWN_ANY)
00096 #define s_Announce(c)           s_Powers((c), Powers(c) | POW_ANNOUNCE)
00097 #define s_Can_Boot(c)           s_Powers((c), Powers(c) | POW_BOOT)
00098 #define s_Can_Halt(c)           s_Powers((c), Powers(c) | POW_HALT)
00099 #define s_Control_All(c)        s_Powers((c), Powers(c) | POW_CONTROL_ALL)
00100 #define s_Wizard_Who(c)         s_Powers((c), Powers(c) | POW_WIZARD_WHO)
00101 #define s_See_All(c)            s_Powers((c), Powers(c) | POW_EXAM_ALL)
00102 #define s_Find_Unfindable(c)    s_Powers((c), Powers(c) | POW_FIND_UNFIND)
00103 #define s_Free_Money(c)         s_Powers((c), Powers(c) | POW_FREE_MONEY)
00104 #define s_Free_Quota(c)         s_Powers((c), Powers(c) | POW_FREE_QUOTA)
00105 #define s_Can_Hide(c)           s_Powers((c), Powers(c) | POW_HIDE)
00106 #define s_Can_Idle(c)           s_Powers((c), Powers(c) | POW_IDLE)
00107 #define s_Search(c)             s_Powers((c), Powers(c) | POW_SEARCH)
00108 #define s_Long_Fingers(c)       s_Powers((c), Powers(c) | POW_LONGFINGERS)
00109 #define s_Prog(c)               s_Powers((c), Powers(c) | POW_PROG)
00110 #define s_Comm_All(c)           s_Powers((c), Powers(c) | POW_COMM_ALL)
00111 #define s_See_Queue(c)          s_Powers((c), Powers(c) | POW_SEE_QUEUE)
00112 #define s_See_Hidden(c)         s_Powers((c), Powers(c) | POW_SEE_HIDDEN)
00113 #define s_Can_Monitor(c)        s_Powers((c), Powers(c) | POW_MONITOR)
00114 #define s_Can_Poll(c)           s_Powers((c), Powers(c) | POW_POLL)
00115 #define s_No_Destroy(c)         s_Powers((c), Powers(c) | POW_NO_DESTROY)
00116 #define s_Guest(c)              s_Powers((c), Powers(c) | POW_GUEST)
00117 #define s_Set_Maint_Flags(c)    s_Powers((c), Powers(c) | POW_SET_MFLAGS)
00118 #define s_Stat_Any(c)           s_Powers((c), Powers(c) | POW_STAT_ANY)
00119 #define s_Steal(c)              s_Powers((c), Powers(c) | POW_STEAL)
00120 #define s_Tel_Anywhere(c)       s_Powers((c), Powers(c) | POW_TEL_ANYWHR)
00121 #define s_Tel_Anything(c)       s_Powers((c), Powers(c) | POW_TEL_UNRST)
00122 #define s_Unkillable(c)         s_Powers((c), Powers(c) | POW_UNKILLABLE)
00123 #define s_Builder(c)            s_Powers2((c), Powers2(c) | POW_BUILDER)
00124 
00125 /* 'mech set-on macros */
00126 
00127 #define s_Mech(c)               s_Powers2((c), Powers2(c) | POW_MECH)
00128 #define s_Security(c)           s_Powers2((c), Powers2(c) | POW_SECURITY)
00129 #define s_Mechrep(c)            s_Powers2((c), Powers2(c) | POW_MECHREP)
00130 #define s_Map(c)                s_Powers2((c), Powers2(c) | POW_MAP)
00131 #define s_Template(c)           s_Powers2((c), Powers2(c) | POW_TEMPLATE)
00132 #define s_Tech(c)               s_Powers2((c), Powers2(c) | POW_TECH)
00133 
00134 /* end of 'mech stuff */
00135 
00136 #define Quota(c)                (((Powers(c) & POW_CHG_QUOTAS) != 0) || Wizard(c))
00137 #define Chown_Any(c)            (((Powers(c) & POW_CHOWN_ANY) != 0) || Wizard(c))
00138 #define Announce(c)             (((Powers(c) & POW_ANNOUNCE) != 0) || Wizard(c))
00139 #define Can_Boot(c)             (((Powers(c) & POW_BOOT) != 0) || Wizard(c))
00140 #define Can_Halt(c)             (((Powers(c) & POW_HALT) != 0) || Wizard(c))
00141 #define Control_All(c)          (((Powers(c) & POW_CONTROL_ALL) != 0) || Wizard(c))
00142 #define Wizard_Who(c)           (((Powers(c) & POW_WIZARD_WHO) != 0) || WizRoy(c))
00143 #define See_All(c)              (((Powers(c) & POW_EXAM_ALL) != 0) || WizRoy(c))
00144 #define Find_Unfindable(c)      ((Powers(c) & POW_FIND_UNFIND) != 0)
00145 #define Free_Money(c)           (((Powers(c) & POW_FREE_MONEY) != 0) || Immortal(c))
00146 #define Free_Quota(c)           (((Powers(c) & POW_FREE_QUOTA) != 0) || Wizard(c))
00147 #define Can_Hide(c)             ((Powers(c) & POW_HIDE) != 0)
00148 #define Can_Idle(c)             (((Powers(c) & POW_IDLE) != 0) || Wizard(c))
00149 #define Search(c)               (((Powers(c) & POW_SEARCH) != 0) || WizRoy(c))
00150 #define Long_Fingers(c)         (((Powers(c) & POW_LONGFINGERS) != 0) || Wizard(c))
00151 #define Comm_All(c)             (((Powers(c) & POW_COMM_ALL) != 0) || Wizard(c))
00152 #define See_Queue(c)            (((Powers(c) & POW_SEE_QUEUE) != 0) || WizRoy(c))
00153 #define See_Hidden(c)           ((Powers(c) & POW_SEE_HIDDEN) != 0)
00154 #define Can_Monitor(c)          (((Powers(c) & POW_MONITOR) != 0) || Wizard(c))
00155 #define Can_Poll(c)             (((Powers(c) & POW_POLL) != 0) || Wizard(c))
00156 #define No_Destroy(c)           (((Powers(c) & POW_NO_DESTROY) != 0) || Wizard(c))
00157 #define Guest(c)                ((Powers(c) & POW_GUEST) != 0)
00158 #define Set_Maint_Flags(c)      ((Powers(c) & POW_SET_MFLAGS) != 0)
00159 #define Stat_Any(c)             ((Powers(c) & POW_STAT_ANY) != 0)
00160 #define Steal(c)                (((Powers(c) & POW_STEAL) != 0) || Wizard(c))
00161 #define Tel_Anywhere(c)         (((Powers(c) & POW_TEL_ANYWHR) != 0) || Tel_Anything(c))
00162 #define Tel_Anything(c)         (((Powers(c) & POW_TEL_UNRST) != 0) || WizRoy(c))
00163 #define Unkillable(c)           (((Powers(c) & POW_UNKILLABLE) != 0) || Immortal(c))
00164 #define Prog(c)                 (((Powers(c) & POW_PROG) != 0) || Wizard(c))
00165 #define Pass_Locks(c)           ((Powers(c) & POW_PASS_LOCKS) != 0)
00166 #define Builder(c)              (((Powers2(c) & POW_BUILDER) != 0) || WizRoy(c))
00167 
00168 /* Mecha */
00169 #define Mech(c)                 (((Powers2(c) & POW_MECH) != 0) || WizRoy(c))
00170 #define Security(c)             (((Powers2(c) & POW_SECURITY) != 0) || WizRoy(c))
00171 #define Tech(c)                 (((Powers2(c) & POW_TECH) != 0) || WizRoy(c))
00172 #define Mechrep(c)              (((Powers2(c) & POW_MECHREP) != 0) || WizRoy(c))
00173 #define Map(c)                  (((Powers2(c) & POW_MAP) != 0) || WizRoy(c))
00174 #define Template(c)             (((Powers2(c) & POW_TEMPLATE) != 0) || WizRoy(c))
00175 
00176 /* End Mecha */
00177 #endif                          /* POWERS_H */

Generated on Mon May 28 04:25:25 2007 for BattletechMUX by  doxygen 1.4.7