On Tue, 6 Aug 1996 goamkows@kirk.geog.sc.edu wrote:
> well, i've got a working wall of fog spell, but i doubt if it is any
> efficient ;) basically, when a player moves into a room or does look,
> it checks all the objects in the room for a "fog" object. if it finds
> one, it obscures their vision:
>
> for (j = world[ch->in_room].contents; j; j = next_thing) {
> next_thing = j->next;
> if (GET_OBJ_VNUM(j) == 32) {
> send_to_char("A cloud of fog obscures your vision", ch);
> return;
> }
> }
>
> but, to have to go through all the objects in a room, every time any
> player moves into any room, seems like a grossly inefficient way to do
> this. anybody have any suggestions on a better way to go about this?
Some time ago I played around with room affections. It is like character
affections but on rooms instead. Add a new field "long room_affections;"
(or whatever you like) in your room structure, and
"#define RAFF_FOG (1 << 0)" in structs.h.
Then set the flag in the room when casting the spell, and check for
it when a player enters the room.
/ Joachim
---------------------------------------------------------------------
The Arrow Moses@PTMUD sargasso.fukt.hk-r.se 4000
Joachim Pileborg Email: pt94jpi@student.hk-r.se
Svarvarevägen 5
37230 Ronneby http://www.rby.hk-r.se/~pt94jpi/pt94jpi.html
SWEDEN
---------------------------------------------------------------------
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://cspo.queensu.ca/~fletcher/Circle/list_faq.html |
+-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/07/00 PST