Okay, what you need is a function that checks for traps
in the room whenever a player arrives. You can take a look
at the mount.diff file at ftp.circlemud.org for a good
idea of where to put this check.
I've written a quick check for you, but I haven't tried to
compile it, and I may have missed a few things.
***WARNING*** MAILER CODE FOLLOWS!
/* this needs work, will not compile as-is -spl */
void check_traps(struct char_data *ch)
{
struct obj_data *obj, *next_obj;
int found = 0;
for (obj = world[ch->in_room].contents; obj; obj = next_obj) {
next_obj = obj->next_content;
if (IS_TRAP(ch, obj) {
found = 1;
}
}
if (!found) {
/* no traps exist */
return;
} else {
/* move the player, or whatever the trap does here */
}
}
You would want to add this to act.movement.c, and then do a
check_traps(ch); every time a character enters or exits a room,
depending on when you want to call it.
There are several ways a player could enter a room; via goto,
transportation, teleportation, possibly through a portal (if
you have them), or even good old walking.
Hope this helps some, maybe at least give you an idea on where
to start :-)
-FIRE
=====
"Here's something to think about: How come you never see
a headline like `Psychic Wins Lottery'?"
-- Jay Leno
__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - Buy the things you want at great prices.
http://auctions.yahoo.com/
--
+---------------------------------------------------------------+
| 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