Added @poll/clear and changed @poll with no argument to display the current poll
authorAri Johnson <ari@theari.com>
Thu, 7 Jun 2007 22:58:41 +0000 (22:58 +0000)
committerAri Johnson <ari@theari.com>
Thu, 7 Jun 2007 22:58:41 +0000 (22:58 +0000)
game/txt/hlp/cobra_cmd.hlp
hdrs/game.h
src/bsd.c
src/cmds.c
src/command.c

index 16f59d36586dd4fbcee3f79b0ffc9862aa2a5195..cc6cd55be0ab1b793943881f96019d333f93a2c3 100644 (file)
@@ -2652,11 +2652,14 @@ See also: give
 
 See also @emit, @oemit, @remit, NOSPOOF, and SPOOFING.
 & @poll
-  @poll [<poll question>]
-
-  This command requiring the poll power sets the "poll", the Doing
-  question on the WHO, the poll questoin can also be reset to the 
-  string "Doing" by simply typing the command with no argument attached.
+  @poll
+  @poll <poll question>
+  @poll/clear
+
+  This command manipulates the message at the top of WHO/DOING. By itself,
+  it displays the current poll. Those with sufficient power can set
+  or clear the message by using the second or third forms, respectively.
+  Clearing the message sets it to the default, 'Doing'.
 
 See also: @doing, WHO, DOING
 & @poor
index f84a64e5b98d169aa225b648b310346b78920720..abf45a365b5e017a0870e395b6dfa850b4cca763 100644 (file)
@@ -27,7 +27,7 @@ extern void fcache_load(dbref player);
 extern void hide_player(dbref player, int hide);
 enum motd_type { MOTD_MOTD, MOTD_DOWN, MOTD_FULL, MOTD_LIST };
 extern void do_motd(dbref player, enum motd_type key, const char *message);
-extern void do_poll(dbref player, const char *message);
+extern void do_poll(dbref player, const char *message, int clear);
 /* From cque.c */
 extern int do_wait
   (dbref player, dbref cause, char *arg1, char *cmd, int until, char finvoc);
index b3ea2d1f6645882ccc4eacfc422a90068302f02a..50125175f7970d90cc4f4793d629a133c569e844 100644 (file)
--- a/src/bsd.c
+++ b/src/bsd.c
@@ -3999,16 +3999,30 @@ do_doing(dbref player, const char *message)
  * \endverbatim
  * \param player the enactor.
  * \param message the message to set.
+ * \param clear true if the poll should be reset to the default 'Doing'
  */
 void
-do_poll(dbref player, const char *message)
+do_poll(dbref player, const char *message, int clear)
 {
   int i;
 
+  if ((!message || !*message) && !clear) {
+    /* Just display the poll. */
+    notify_format(player, T("The current poll is: %s"), poll_msg);
+    return;
+  }
+
   if (!Change_Poll(player)) {
     notify(player, T("Who do you think you are, Gallup?"));
     return;
   }
+
+  if (clear) {
+    strcpy(poll_msg, "Doing");
+    notify(player, T("Poll reset."));
+    return;
+  }
+
   strncpy(poll_msg, remove_markup(message, NULL), DOING_LEN - 1);
   for (i = 0; i < DOING_LEN; i++) {
     if ((poll_msg[i] == '\r') || (poll_msg[i] == '\n') ||
@@ -4020,10 +4034,10 @@ do_poll(dbref player, const char *message)
   if (strlen(message) >= DOING_LEN) {
     poll_msg[DOING_LEN - 1] = 0;
     notify_format(player,
-                 T("Poll set. %zu characters lost."),
+                 T("Poll set to '%s'. %zu characters lost."), poll_msg,
                  strlen(message) - (DOING_LEN - 1));
   } else
-    notify(player, T("Poll set."));
+    notify_format(player, T("Poll set to: %s"), poll_msg);
   do_log(LT_WIZ, player, NOTHING, T("Poll Set to '%s'."), poll_msg);
 }
 
index 669a648b13c908dc3f355b8452272daeadfb0ec0..71912aec276bf653b7f28d64acd14c1884d7d9f4 100644 (file)
@@ -301,7 +301,7 @@ COMMAND (cmd_disable) {
 
 COMMAND (cmd_doing) {
   if (SW_ISSET(sw, SWITCH_HEADER))
-    do_poll(player, arg_left);
+    do_poll(player, arg_left, 0);
   else
     do_doing(player, arg_left);
 }
@@ -745,7 +745,7 @@ COMMAND (cmd_pemit) {
 }
 
 COMMAND (cmd_poll) {
-  do_poll(player, arg_left);
+  do_poll(player, arg_left, SW_ISSET(sw, SWITCH_CLEAR));
 }
 
 COMMAND (cmd_poor) {
index e3840de5ec73fcc227185b2b64f3a67f53dc0474..1f70c1e815f8041b78db8ccb40f07d049fbcc48c 100644 (file)
@@ -229,7 +229,7 @@ COMLIST commands[] = {
 
   {"@PEMIT", "LIST CONTENTS SILENT NOISY NOEVAL SPOOF", cmd_pemit,
    CMD_T_ANY | CMD_T_EQSPLIT | CMD_T_NOGAGGED, NULL},
-  {"@POLL", NULL, cmd_poll, CMD_T_ANY, NULL},
+  {"@POLL", "CLEAR", cmd_poll, CMD_T_ANY, NULL},
   {"@POOR", NULL, cmd_poor, CMD_T_ANY, NULL},
   {"@POWER", "ALIAS LIST ADD DELETE", cmd_power, CMD_T_ANY | CMD_T_EQSPLIT , NULL},
   {"@POWERGROUP", "AUTO MAX ADD DELETE LIST RAW", cmd_powergroup, CMD_T_ANY | CMD_T_EQSPLIT, NULL},