I was surprised that I couldn't find a fly spell anywhere in the archives, snippets, or patches. So I wrote my own and here it is. Thanks go to Alex for running this list and correcting my first attempt at submitting this. The whole positions idea for my first attempt was a failure. So now I just made fly into an affection. Please respond if you see any errors or improvements. This was made for bpl16. ---snip--- spells.h /* PLAYER SPELLS -- Numbered from 1 to MAX_SPELLS */ #define SPELL_WATERWALK 51 /* Reserved Skill[] DO NOT CHANGE */ Add:90 #define SPELL_FLY 52 structs.h add:246 #define AFF_FLYING (1 << 22) constants.c spell_wear_off_msg[] "Your feet seem less buoyant.", /* 51 */ Add:783 "You slowly float to the ground.", class.c INIT_SPELL_LEVELS(). /*Mages*/ Add:2147 50 = the level of required to learn the spell... spell_level(SPELL_FLY, CLASS_MAGIC_USER, 50); magic.c MAG_DAMAGE() Add:512 case SPELL_FLY: af[0].duration = 1 + (GET_LEVEL(ch) / 10); af[0].bitvector = AFF_FLYING; accum_duration = TRUE; to_vict = "Your feet lift up off of the ground."; to_room = "$n starts to fly."; break; Act.informative.c Add:304 if(AFF_FLAGGED(i, AFF_FLYING)) strcat(buf, " (flying)"); Add in score: 779 if (IS_AFFECTED(ch, AFF_FLYING)) strcat(buf, "flying "); constants.c /* AFF_x */ const char *affected_bits[] = Add:222 "FLY", act.movement.c Add:70 in has_boat if ((IS_AFFECTED(ch, AFF_WATERWALK)) || (GET_LEVEL(ch) >= LVL_IMMORT) || (IS_AFFECTED(ch, AFF_FLYING))) return 1; need_movement = (movement_loss[SECT(ch->in_room)] + movement_loss[SECT(EXIT(ch, dir)->to_room)]) / 2; Add:126 if (IS_AFFECTED(ch,AFF_FLYING)) need_movement = 1; Change:158 if (!AFF_FLAGGED(ch, AFF_SNEAK)) { sprintf(buf2, "$n leaves %s.", dirs[dir]); act(buf2, TRUE, ch, 0, 0, TO_ROOM); } To: if (AFF_FLAGGED(ch, AFF_FLYING)) { sprintf(buf2, "$n flies %s.", dirs[dir]); act(buf2, TRUE, ch, 0, 0, TO_ROOM); } else if (!AFF_FLAGGED(ch, AFF_SNEAK)) { sprintf(buf2, "$n leaves %s.", dirs[dir]); act(buf2, TRUE, ch, 0, 0, TO_ROOM); } spell_parser.c spello(SPELL_WORD_OF_RECALL, "word of recall", 20, 10, 2, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_MANUAL); Add:918 spello(SPELL_FLY, "fly", 40, 20, 2, POS_STANDING, TAR_CHAR_ROOM, FALSE, MAG_AFFECTS); ---snip--- That's it rather simple, but it works for what I wanted. Rumble +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/10/01 PDT