After looking at the poofset snippet from Rasdan, I threw this
together. Being a big believer in re-using code, I found the
use of two separate functions to be wasteful. Further, the
original snippet would generate something like "Current Poofin:
Dionysus (null)" if the imm hadn't previously set his poof.
So, I redefined the default poofs as variables so that I
could reuse them. This has the added asvantage of saving a few
bytes in the goto function.
What follows below is a patch against stock bpl17.
Dionysus <darkimage@bigfoot.com>
diff -u src.orig/act.wizard.c src/act.wizard.c
--- src.orig/act.wizard.c Sat Jan 27 18:48:14 2001
+++ src/act.wizard.c Sat Jan 27 19:09:46 2001
@@ -45,6 +45,8 @@
/* for chars */
extern const char *pc_class_types[];
+extern const char *D_POOFIN;
+extern const char *D_POOFOUT;
/* extern functions */
int level_exp(int chclass, int level);
@@ -242,20 +244,14 @@
if ((location = find_target_room(ch, argument)) < 0)
return;
- if (POOFOUT(ch))
- sprintf(buf, "$n %s", POOFOUT(ch));
- else
- strcpy(buf, "$n disappears in a puff of smoke.");
+ sprintf(buf, "$n %s", (POOFOUT(ch)) ? POOFOUT(ch) : D_POOFOUT);
act(buf, TRUE, ch, 0, 0, TO_ROOM);
char_from_room(ch);
char_to_room(ch, location);
- if (POOFIN(ch))
- sprintf(buf, "$n %s", POOFIN(ch));
- else
- strcpy(buf, "$n appears with an ear-splitting bang.");
-
+ sprintf(buf, "$n %s", (POOFIN(ch)) ? POOFIN(ch) : D_POOFIN);
+
act(buf, TRUE, ch, 0, 0, TO_ROOM);
look_at_room(ch, 0);
}
@@ -1440,7 +1436,8 @@
ACMD(do_poofset)
{
char **msg;
+ int is_poofin = (subcmd == SCMD_POOFIN);
switch (subcmd) {
case SCMD_POOFIN: msg = &(POOFIN(ch)); break;
case SCMD_POOFOUT: msg = &(POOFOUT(ch)); break;
@@ -1449,15 +1446,17 @@
skip_spaces(&argument);
- if (*msg)
- free(*msg);
-
- if (!*argument)
- *msg = NULL;
- else
+ if (!*argument) {
+ sprintf(buf, "Current poof%s: %s %s\r\n", (is_poofin) ?
+ "in" : "out", GET_NAME(ch), (*msg != NULL) ? *msg :
+ ((is_poofin) ? D_POOFIN : D_POOFOUT));
+ send_to_char(buf, ch);
+ } else {
+ if (*msg)
+ free(*msg);
*msg = str_dup(argument);
-
- send_to_char(OK, ch);
+ send_to_char(OK, ch);
+ }
}
diff -u src.orig/config.c src/config.c
--- src.orig/config.c Sat Jan 27 18:48:14 2001
+++ src/config.c Sat Jan 27 18:58:40 2001
@@ -290,3 +290,12 @@
/* If yes, what is the lowest level which should be on the wizlist? (All
immort levels below the level you specify will go on the immlist instead.) */
int min_wizlist_lev = LVL_GOD;
+
+/****************************************************************************/
+/****************************************************************************/
+
+/* Default poofs */
+
+const char *D_POOFOUT = "disappears in a puff of smoke.";
+const char *D_POOFIN = "appears with an ear-splitting bang.";
+
--
Anton Graham GPG ID: 0x18F78541
<darkimage@bigfoot.com> RSA key available upon request
"When the going gets weird, the weird turn pro..."
-- Hunter S. Thompson
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/03/01 PST