btmux/autom4te.cache/
btmux/doc/.svn/
btmux/event/.svn/
btmux/game/.svn/
btmux/game/bin/.svn/
btmux/game/data/.svn/
btmux/game/logs/.svn/
btmux/game/maps/
btmux/game/maps/.svn/
btmux/game/maps/.svn/prop-base/
btmux/game/maps/.svn/props/
btmux/game/maps/.svn/text-base/
btmux/game/maps/.svn/wcprops/
btmux/game/mechs/
btmux/game/mechs/.svn/
btmux/game/mechs/.svn/prop-base/
btmux/game/mechs/.svn/props/
btmux/game/mechs/.svn/text-base/
btmux/game/mechs/.svn/wcprops/
btmux/game/text/.svn/
btmux/include/.svn/
btmux/misc/
btmux/misc/.svn/
btmux/misc/.svn/prop-base/
btmux/misc/.svn/props/
btmux/misc/.svn/text-base/
btmux/misc/.svn/wcprops/
btmux/python/
btmux/python/.svn/
btmux/python/.svn/prop-base/
btmux/python/.svn/props/
btmux/python/.svn/text-base/
btmux/python/.svn/wcprops/
btmux/src/.svn/prop-base/
btmux/src/.svn/props/
btmux/src/.svn/text-base/
btmux/src/.svn/wcprops/
btmux/src/hcode/.svn/
btmux/src/hcode/btech/
btmux/src/hcode/btech/.svn/
btmux/src/hcode/btech/.svn/prop-base/
btmux/src/hcode/btech/.svn/props/
btmux/src/hcode/btech/.svn/text-base/
btmux/src/hcode/btech/.svn/wcprops/
btmux/src/hcode/include/.svn/
/* powers.h - object powers */

/* $Id: powers.h,v 1.3 2005/06/23 02:59:58 murrayma Exp $ */

#include "copyright.h"

#ifndef __POWERS_H
#define	__POWERS_H

#include "htab.h"
#include "db.h"



#define	POWER_EXT	0x1	/* Lives in extended powers word */


/* First word of powers */
#define	POW_CHG_QUOTAS	0x00000001	/* May change and see quotas */
#define	POW_CHOWN_ANY	0x00000002	/* Can @chown anything or to anyone */
#define	POW_ANNOUNCE	0x00000004	/* May use @wall */
#define	POW_BOOT	0x00000008	/* May use @boot */
#define	POW_HALT	0x00000010	/* May @halt on other's objects */
#define	POW_CONTROL_ALL	0x00000020	/* I control everything */
#define	POW_WIZARD_WHO	0x00000040	/* See extra WHO information */
#define	POW_EXAM_ALL	0x00000080	/* I can examine everything */
#define	POW_FIND_UNFIND	0x00000100	/* Can find unfindable players */
#define	POW_FREE_MONEY	0x00000200	/* I have infinite money */
#define	POW_FREE_QUOTA	0x00000400	/* I have infinite quota */
#define	POW_HIDE	0x00000800	/* Can set themselves DARK */
#define	POW_IDLE	0x00001000	/* No idle limit */
#define	POW_SEARCH	0x00002000	/* Can @search anyone */
#define	POW_LONGFINGERS	0x00004000	/* Can get/whisper/etc from a distance */
#define POW_PROG	0x00008000	/* Can use the @prog command */

/* FREE FREE FREE FREE */

#define	POW_COMM_ALL	0x00080000	/* Channel wiz */
#define	POW_SEE_QUEUE	0x00100000	/* Player can see the entire queue */
#define	POW_SEE_HIDDEN	0x00200000	/* Player can see hidden players on WHO list */
#define	POW_MONITOR	0x00400000	/* Player can set or clear MONITOR */
#define	POW_POLL	0x00800000	/* Player can set the doing poll */
#define	POW_NO_DESTROY	0x01000000	/* Cannot be destroyed */
#define POW_GUEST	0x02000000	/* Player is a guest */
#define	POW_PASS_LOCKS	0x04000000	/* Player can pass any lock */
#define	POW_STAT_ANY	0x08000000	/* Can @stat anyone */
#define	POW_STEAL	0x10000000	/* Can give negative money */
#define	POW_TEL_ANYWHR	0x20000000	/* Teleport anywhere */
#define	POW_TEL_UNRST	0x40000000	/* Teleport anything */
#define	POW_UNKILLABLE	0x80000000	/* Can't be killed */

/* Second word of powers */
#define POW_BUILDER	0x00000001	/* Can build */

/* Mech stuff: */
#define POW_MECH        0x00000002	/* access to mech cmd set */
#define POW_SECURITY    0x00000004	/* 'admin' - debug/comp */
#define POW_MECHREP     0x00000008	/* access to mechrep cmd set */
#define POW_MAP         0x00000010	/* map modifying powers */
#define POW_TEMPLATE    0x00000020	/* templating powers */
#define POW_TECH        0x00000040	/* can do the IC tech commands */

/* end of mech stuff */

/* ---------------------------------------------------------------------------
 * POWERENT: Information about object powers.
 */

typedef struct power_entry {
    const char *powername;	/* Name of the flag */
    int powervalue;		/* Which bit in the object is the flag */
    int powerpower;		/* Ctrl flags for this power (recursive? :-) */
    int listperm;		/* Who sees this flag when set */
    int (*handler) ();		/* Handler for setting/clearing this flag */
} POWERENT;

typedef struct powerset {
    POWER word1;
    POWER word2;
} POWERSET;

extern void init_powertab(void);
extern void display_powertab(dbref);
extern void power_set(dbref, dbref, char *, int);
extern char *power_description(dbref, dbref);
extern POWERENT *find_power(dbref, char *);
extern int has_power(dbref, dbref, char *);
extern void decompile_powers(dbref, dbref, char *);
extern int decode_power(dbref, char *, POWERSET *);



#define s_Change_Quotas(c)	s_Powers((c), Powers(c) | POW_CHG_QUOTAS)
#define s_Chown_Any(c)		s_Powers((c), Powers(c) | POW_CHOWN_ANY)
#define s_Announce(c)		s_Powers((c), Powers(c) | POW_ANNOUNCE)
#define s_Can_Boot(c)		s_Powers((c), Powers(c) | POW_BOOT)
#define s_Can_Halt(c)		s_Powers((c), Powers(c) | POW_HALT)
#define s_Control_All(c)	s_Powers((c), Powers(c) | POW_CONTROL_ALL)
#define s_Wizard_Who(c)		s_Powers((c), Powers(c) | POW_WIZARD_WHO)
#define s_See_All(c)		s_Powers((c), Powers(c) | POW_EXAM_ALL)
#define s_Find_Unfindable(c)	s_Powers((c), Powers(c) | POW_FIND_UNFIND)
#define s_Free_Money(c)		s_Powers((c), Powers(c) | POW_FREE_MONEY)
#define s_Free_Quota(c)		s_Powers((c), Powers(c) | POW_FREE_QUOTA)
#define s_Can_Hide(c)		s_Powers((c), Powers(c) | POW_HIDE)
#define s_Can_Idle(c)		s_Powers((c), Powers(c) | POW_IDLE)
#define s_Search(c)		s_Powers((c), Powers(c) | POW_SEARCH)
#define s_Long_Fingers(c)	s_Powers((c), Powers(c) | POW_LONGFINGERS)
#define s_Prog(c)		s_Powers((c), Powers(c) | POW_PROG)
#define s_Comm_All(c)		s_Powers((c), Powers(c) | POW_COMM_ALL)
#define s_See_Queue(c)		s_Powers((c), Powers(c) | POW_SEE_QUEUE)
#define s_See_Hidden(c)		s_Powers((c), Powers(c) | POW_SEE_HIDDEN)
#define s_Can_Monitor(c)	s_Powers((c), Powers(c) | POW_MONITOR)
#define s_Can_Poll(c)		s_Powers((c), Powers(c) | POW_POLL)
#define s_No_Destroy(c)		s_Powers((c), Powers(c) | POW_NO_DESTROY)
#define s_Guest(c)		s_Powers((c), Powers(c) | POW_GUEST)
#define s_Set_Maint_Flags(c)	s_Powers((c), Powers(c) | POW_SET_MFLAGS)
#define s_Stat_Any(c)		s_Powers((c), Powers(c) | POW_STAT_ANY)
#define s_Steal(c)		s_Powers((c), Powers(c) | POW_STEAL)
#define s_Tel_Anywhere(c)	s_Powers((c), Powers(c) | POW_TEL_ANYWHR)
#define s_Tel_Anything(c)	s_Powers((c), Powers(c) | POW_TEL_UNRST)
#define s_Unkillable(c)		s_Powers((c), Powers(c) | POW_UNKILLABLE)
#define s_Builder(c)		s_Powers2((c), Powers2(c) | POW_BUILDER)

/* 'mech set-on macros */

#define s_Mech(c)		s_Powers2((c), Powers2(c) | POW_MECH)
#define s_Security(c)		s_Powers2((c), Powers2(c) | POW_SECURITY)
#define s_Mechrep(c)		s_Powers2((c), Powers2(c) | POW_MECHREP)
#define s_Map(c)		s_Powers2((c), Powers2(c) | POW_MAP)
#define s_Template(c)		s_Powers2((c), Powers2(c) | POW_TEMPLATE)
#define s_Tech(c)		s_Powers2((c), Powers2(c) | POW_TECH)

/* end of 'mech stuff */

#define Quota(c)		(((Powers(c) & POW_CHG_QUOTAS) != 0) || Wizard(c))
#define Chown_Any(c)		(((Powers(c) & POW_CHOWN_ANY) != 0) || Wizard(c))
#define Announce(c)		(((Powers(c) & POW_ANNOUNCE) != 0) || Wizard(c))
#define Can_Boot(c)		(((Powers(c) & POW_BOOT) != 0) || Wizard(c))
#define Can_Halt(c)		(((Powers(c) & POW_HALT) != 0) || Wizard(c))
#define Control_All(c)		(((Powers(c) & POW_CONTROL_ALL) != 0) || Wizard(c))
#define Wizard_Who(c)		(((Powers(c) & POW_WIZARD_WHO) != 0) || WizRoy(c))
#define See_All(c)		(((Powers(c) & POW_EXAM_ALL) != 0) || WizRoy(c))
#define Find_Unfindable(c)	((Powers(c) & POW_FIND_UNFIND) != 0)
#define Free_Money(c)		(((Powers(c) & POW_FREE_MONEY) != 0) || Immortal(c))
#define Free_Quota(c)		(((Powers(c) & POW_FREE_QUOTA) != 0) || Wizard(c))
#define Can_Hide(c)		((Powers(c) & POW_HIDE) != 0)
#define Can_Idle(c)		(((Powers(c) & POW_IDLE) != 0) || Wizard(c))
#define Search(c)		(((Powers(c) & POW_SEARCH) != 0) || WizRoy(c))
#define Long_Fingers(c)		(((Powers(c) & POW_LONGFINGERS) != 0) || Wizard(c))
#define Comm_All(c)		(((Powers(c) & POW_COMM_ALL) != 0) || Wizard(c))
#define See_Queue(c)		(((Powers(c) & POW_SEE_QUEUE) != 0) || WizRoy(c))
#define See_Hidden(c)		((Powers(c) & POW_SEE_HIDDEN) != 0)
#define Can_Monitor(c)		(((Powers(c) & POW_MONITOR) != 0) || Wizard(c))
#define Can_Poll(c)		(((Powers(c) & POW_POLL) != 0) || Wizard(c))
#define No_Destroy(c)		(((Powers(c) & POW_NO_DESTROY) != 0) || Wizard(c))
#define Guest(c)		((Powers(c) & POW_GUEST) != 0)
#define Set_Maint_Flags(c)	((Powers(c) & POW_SET_MFLAGS) != 0)
#define Stat_Any(c)		((Powers(c) & POW_STAT_ANY) != 0)
#define Steal(c)		(((Powers(c) & POW_STEAL) != 0) || Wizard(c))
#define Tel_Anywhere(c)		(((Powers(c) & POW_TEL_ANYWHR) != 0) || Tel_Anything(c))
#define Tel_Anything(c)		(((Powers(c) & POW_TEL_UNRST) != 0) || WizRoy(c))
#define Unkillable(c)		(((Powers(c) & POW_UNKILLABLE) != 0) || Immortal(c))
#define Prog(c)			(((Powers(c) & POW_PROG) != 0) || Wizard(c))
#define Pass_Locks(c)		((Powers(c) & POW_PASS_LOCKS) != 0)
#define Builder(c)		(((Powers2(c) & POW_BUILDER) != 0) || WizRoy(c))

/* Mecha */
#define Mech(c)                 (((Powers2(c) & POW_MECH) != 0) || WizRoy(c))
#define Security(c)             (((Powers2(c) & POW_SECURITY) != 0) || WizRoy(c))
#define Tech(c)                 (((Powers2(c) & POW_TECH) != 0) || WizRoy(c))
#define Mechrep(c)              (((Powers2(c) & POW_MECHREP) != 0) || WizRoy(c))
#define Map(c)                  (((Powers2(c) & POW_MAP) != 0) || WizRoy(c))
#define Template(c)             (((Powers2(c) & POW_TEMPLATE) != 0) || WizRoy(c))

/* End Mecha */
#endif				/* POWERS_H */