From: "Jim" <realm@CITLINK.NET> > Am attempting to add a flying spell and was wondering how? In > constants.c, I see in "int movement_loss[] =" a /* Flying*/ entry for > loss of one movement point. And in > "/* SECT_ */ > const char *sector_types[] = {" there is an "In Flight" entry. Is there > somewhere I can go to learn how to "tie" flying in to AFF_FLY? > Thank you for any advice/help and sorry for such a newbie question... In do_simple_move() in act.movement.c find /* move points needed is avg. move loss for src and destination sect type */ need_movement = (movement_loss[SECT(IN_ROOM(ch))] + movement_loss[SECT(EXIT(ch, dir)->to_room)]) / 2; Change to: (add new var: int flying=FALSE;) /* set the flying var - note ; on end */ if ((flying = AFF_FLAGGED(ch, AFF_FLY)) || (flying = affected_by_spell(ch, SPELL_FLY))); if (SECT(EXIT(ch, dir)->to_room) == SECT_FLY) && !flying ) { send_to_char(ch, "Grow some wings first!\r\n"); return; } /* move points needed is avg. move loss for src and destination sect type */ /* unless you're flying */ if (flying) need_movement=1; else need_movement = (movement_loss[SECT(IN_ROOM(ch))] + movement_loss[SECT(EXIT(ch, dir)->to_room)]) / 2; As you see, all computations and limitations regarding movement, sectors etc. happen in do_simple_move(). I'd suggest you learn to use grep. In this case grep would show you that movement_loss is used only in these two lines... Welcor -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/26/03 PDT