Welcome to the Builder Academy

Question room no fly death

More
01 May 2013 02:02 #2040 by Nerian
Replied by Nerian on topic room no fly death
While searching for my range snippet I found this and thought you or somebody else may have need of it.


Code:
Flydeath Room Flag by: Cathy Gore Little note: For use with OasisOLC, tested on a CircleMUD 3.0 bpl17. This room flag adds a little twist to the ROOM_DEATH flag. It is still a death trap, but with this flag, if the character is flying, the room will just be a normal room. For example, your death trap is something to the effect of falling out of a window. A person who is flying obviously isn't going to fall to their death, cuz they'll just kinda float out. So, here's the snippet: ---------------------------------- To find the spots, search for ROOM_DEATH... in act.informative.c, void look_at_room: - if ((!IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_BRIEF)) || ignore_brief || - ROOM_FLAGGED(ch->in_room, ROOM_DEATH)) { + if ((!IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_BRIEF)) || ignore_brief) { and after the desc is sent to the char: + if (GET_LEVEL(ch) < LVL_IMMORT && (ROOM_FLAGGED(ch->in_room, ROOM_DEATH) || (ROOM_FLAGGED(ch->in_room, ROOM_FLYDEATH) && + !IS_AFFECTED(ch, AFF_FLYING)))) { + send_to_char("You have DIED!\r\n", ch); + return; + } ---- in act.movement.c, do_simple_move: - if (ROOM_FLAGGED(ch->in_room, ROOM_DEATH) && GET_LEVEL(ch) < LVL_IMMORT) { + if ((ROOM_FLAGGED(ch->in_room, ROOM_DEATH) || (ROOM_FLAGGED(ch->in_room, ROOM_FLYDEATH) && + !IS_AFFECTED(ch, AFF_FLYING))) && GET_LEVEL(ch) < LVL_IMMORT) { ---- in act.offensive.c, ACMD(do_flee): - !ROOM_FLAGGED(EXIT(ch, attempt)->to_room, ROOM_DEATH)) { + !ROOM_FLAGGED(EXIT(ch, attempt)->to_room, ROOM_DEATH) && + !ROOM_FLAGGED(EXIT(ch, attempt)->to_room, ROOM_FLYDEATH)) { ---- in act.wizard.c, ACMD(do_show): if (ROOM_FLAGGED(i, ROOM_DEATH)) sprintf(buf + strlen(buf), "%2d: [%5d] %s\r\n", ++j, GET_ROOM_VNUM(i), world[i].name); + if (ROOM_FLAGGED(i, ROOM_FLYDEATH)) + sprintf(buf + strlen(buf), "%2d: [%5d] %s (fly)\r\n", ++j, + GET_ROOM_VNUM(i), world[i].name); ---- in mobact.c, mobile_activity: - !ROOM_FLAGGED(EXIT(ch, door)->to_room, ROOM_NOMOB | ROOM_DEATH) && + !ROOM_FLAGGED(EXIT(ch, door)->to_room, ROOM_NOMOB | ROOM_DEATH | ROOM_FLYDEATH) && ---- in spec_assign.c, assign_rooms: - if (ROOM_FLAGGED(i, ROOM_DEATH)) + if (ROOM_FLAGGED(i, ROOM_DEATH | ROOM_FLYDEATH)) ---- in structs.h, where the roomflags are defined: +#define ROOM_FLYDEATH (1 << 20) /* Death trap for those not flying */ //or whatever number is next for you ---- in oasis.h: add one to your NUM_ROOM_FLAGS ---- in constants.c: add "FLYDEATH", to the end of *const char *room_bits[] (but before the "\n") ---- And that's it! Recompile and reboot, and save away! As per the standard disclaimer, I am not responsible if this messes up your mud. Always backup any file that is changed before adding any snippet. But you knew that already. And as usual, if you have any problems or find a way to make this better, email me at cheron98@hotmail.com. If you use this, please email me. I don't care if you put me in the credits or not, I'd just like to know who's usin it. Other snippets by me: Look for my score and wizupdate snippets on the CircleMUD ftp site! Patches by me: Look for my Ascii-pfile compatible clan package, and metaphysician patch! Cathy Gore aka Cheron, DarkonMUD

Please Log in or Create an account to join the conversation.

Time to create page: 0.169 seconds