A player may execute a command when his player->nstat has all the bits
in the command's c_permit.
Normal player commands require bit(2). Command break requires bit(1),
and execute requires bit(5). Deity commands require both bit(2) and
bit(3). Works, because deities always have both bits set in nstat, as
they may execute normal player commands, too. But it's a bit
confusing. Change them to only require their own bit(3).
int c_cost; /* btu cost of command */
int (*c_addr)(void); /* core addr of appropriate routine */
int c_flags; /* command flags */
- int c_permit; /* who is allowed to "do" this command */
+ int c_permit; /* command capabilities required */
};
/* Command flag bits */
#include "queue.h"
#include "types.h"
- /* nstat values */
-#define SANCT bit(1)
-#define NORM bit(2)
-#define GOD (bit(3) | NORM)
-#define EXEC bit(5)
-#define CAP bit(6)
-#define MONEY bit(7)
+ /* player command capabilities */
+#define SANCT bit(1) /* can execute commands available in sanctuary */
+#define NORM bit(2) /* can execute active player commands */
+#define GOD bit(3) /* can execute deity commands */
+#define EXEC bit(5) /* can execute the execute command */
+#define CAP bit(6) /* has capital */
+#define MONEY bit(7) /* isn't broke */
enum player_sleep {
PLAYER_SLEEP_NEVER, PLAYER_SLEEP_ON_INPUT, PLAYER_SLEEP_FREELY
{
static int nstat[] = {
/* must match nat_status */
- 0, 0, 0, SANCT, NORM, GOD | CAP | MONEY
+ 0, 0, 0, SANCT, NORM, GOD | NORM | CAP | MONEY
};
if (CANT_HAPPEN(pl->cnum != np->nat_cnum))