My first snippet I have release. Please review and if ya find any bugs please let me know so I can fix them. THIS FILE DOES HOPE THAT YOU KNOW WHERE ALL THIS STUFF IS AND THAT YOU HAVE ROT 1.4 W/OLC BUT WOULDN'T BE HARD TO GET TO WORK IN OTHER CODE BASES EITHER. Kizeren---- ALL I ASK IS THAT YOU EMAIL ME AND LET ME KNOW YOU ARE USING IT. AND MAYBE PUT MY NAME IN ALONG WITH THE CODE BUT NOT NESSICARY. EMAIL: SHAUNMCBRIDE@CHARTER.NET OR IF YOU WANT TO SEE IT IN ACTION FIRST DROP BY PRETTY SIMPLE JUST LOOK FOR THE "++++++UNDER" MEANS FIND THE LINE OR SNIP OF CODE IN THE SOURCE FILE "++++++PUT" JUST PUT THE NEXT LINE OF CODE UNDER THE ABOVE. MINDOR.BSD.ST PORT 4000 --------------act_move.c--------------- ++++++UNDER if ( IS_NPC( ch ) && HAS_TRIGGER( ch, TRIG_ENTRY ) ) mp_percent_trigger( ch, NULL, NULL, NULL, TRIG_ENTRY ); if ( !IS_NPC( ch ) ) mp_greet_trigger( ch ); ++++++++PUT /* Room Affects, Kizeren 2003 */ if (!IS_NPC(ch) && (to_room->affect_room_type == AFFECT_SLOW)) { sn = skill_lookup("slow"); level = ch->level; act("$n is moving slower.\n\r",ch, 0, 0, TO_ROOM); stc("You feel slower now.\n\r", ch); af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level/2; af.location = APPLY_DEX; af.modifier = -1 - (level >= 18) - (level >= 25) - (level >= 32); af.bitvector = AFF_SLOW; affect_join (ch, &af); return; } else if (!IS_NPC(ch) && (to_room->affect_room_type == AFFECT_PLAGUE)) { sn1 = skill_lookup("plague"); level = ch->level; stc("You caught the plague.\n\r", ch); af.where = TO_AFFECTS; af.type = sn1; af.level = level; af.duration = level/2; af.location = APPLY_STR; af.modifier = -1 - (level >= 18) - (level >= 25) - (level >= 32); af.bitvector = AFF_PLAGUE; affect_join (ch, &af); return; } else if (!IS_NPC(ch) && (to_room->affect_room_type == AFFECT_TELE)) { pRoomIndex = get_random_room(ch); stc("You have been teleported!!",ch); char_from_room(ch); char_to_room(ch, pRoomIndex); do_look(ch, "auto"); return; } else if (!IS_NPC(ch) && (to_room->affect_room_type == AFFECT_SHOCK)) { value1 = (ch->hit/2); value2 = (ch->move/2); value3 = (ch->mana/2); stc("You have been electrified!!\n\r",ch); ch->hit = value1; ch->move = value2; ch->mana = value3; return; } ------------------BIT.C------------------------- ++++++IN "flag_stat_type" +++++PUT { affect_room_flags, TRUE }, ------------------olc.c------------------------- ++++++++++++++UNDER if ( ( value = flag_value( room_flags, command ) ) != NO_FLAG ) { TOGGLE_BIT(pRoom->room_flags, value); SET_BIT( pArea->area_flags, AREA_CHANGED ); send_to_char( "Room flag toggled.\n\r", ch ); return; } +++++++++++++++PUT if ( ( value = flag_value( affect_room_flags, command ) ) != NO_FLAG ) { pRoom->affect_room_type = value; SET_BIT( pArea->area_flags, AREA_CHANGED ); stc( "Room Affect set.\n\r", ch ); return; } -----------------olc_act.c----------------------- ++++++++++++++++UNDER { "mprog", mprog_flags, "MobProgram flags." }, +++++++++++++++PUT { "affect_room", affect_room_flags, "Affect Room Flags." }, ++++++++++++++++UNDER sprintf( buf, "Vnum: [%5d]\n\rSector: [%s]\n\r", pRoom->vnum, flag_string( sector_flags, pRoom->sector_type ) ); strcat( buf1, buf ); +++++++++++++++PUT sprintf( buf, "Room Aff: [%s]\n\r", flag_string( affect_room_flags, pRoom->affect_room_type )); strcat( buf1, buf ); ++++++++++++++UNDER /* sector flags */ pRoom->sector_type = pRoom2->sector_type; +++++++++++++++PUT /* affect room flags */ pRoom->affect_room_type = pRoom2->affect_room_type; -----------------------OLC_SAVE.C------------------- +++++++++++++UNDER fprintf( fp, "%d\n", pRoomIndex->sector_type ); +++++++++++++++++PUT fprintf( fp, "%d\n", pRoomIndex->affect_room_type); -----------------TABLES.C--------------- ADD THIS WHERE EVER YOU FEEL COMFORTABLE DOING IT. const struct flag_type affect_room_flags[]= { { "None", AFFECT_NONE, TRUE }, { "shock", AFFECT_SHOCK, TRUE }, { "tele", AFFECT_TELE, TRUE }, { "slow", AFFECT_SLOW, TRUE }, { "poison", AFFECT_POISON, TRUE }, { "sleep", AFFECT_SLEEP, TRUE }, { "curse", AFFECT_CURSE, TRUE }, { "blind", AFFECT_BLIND, TRUE }, { "plague", AFFECT_PLAGUE, TRUE }, { "weaken", AFFECT_WEAKEN, TRUE }, { "berserk", AFFECT_BERSERK, TRUE }, { NULL, 0, 0 } }; AFFECT_NONE I USED AS A PLACEHOLDER WHEN I WAS DOING THIS CODE. AFFECT_SHOCK I THINK TAKES AWAY 1/3 OF ALL POINTS "HP/MANA/MOVE" AFFECT_TELE OFCOURSE RANDOMLY TELEPORTS THEM AFFECT_SLOW CASTS THE SLOW SPELL ON THEM AFFECT_POISON CASTS THE POINSON SPELL AFFECT_SLEEP CASTS THE SLEEP SPELL AFFECT_CURSE CASTS THE CURSE SPELL AFFECT_BLIND CASTS THE BLIND SPELL AFFECT_PLAGUE CASTS THE PLAGUE SPELL AFFECT_WEAKEN CASTS THE WEAKEN SPELL AFFECT_BERSERK CASTS THE BERSERK SPELL ------------------MERC.H-------------------------------- +++++++++++++++++UNDER /* * Room type. */ struct room_index_data +++++++++++++++++PUT sh_int affect_room_type; +++++++++++++++++++UNDER /* BIT.C */ +++++++++++++++++++PUT extern const struct flag_type affect_room_flags[]; ADD THESE NEW DEFINES TO THE MERC.H FILE. #define AFFECT_NONE 0 #define AFFECT_SHOCK 1 #define AFFECT_TELE 2 #define AFFECT_SLOW 3 #define AFFECT_POISON 4 #define AFFECT_SLEEP 5 #define AFFECT_CURSE 6 #define AFFECT_BLIND 7 #define AFFECT_PLAGUE 8 #define AFFECT_WEAKEN 9 #define AFFECT_BERSERK 10 ------------------------------------------------------------- OKAY NOW HERE IS THE TRICK. DO ALL THE ABOVE DO A CLEAN COMPILE AND THERE SHOULD BE NO ERRORS. (FINGER CROSSED) AFTER GAME IS UP AND RUNNING. DO AN "ASAVE_WORLD" THIS SHOULD DUMP ALL THE AREAS WITH THE NEW ROOM AFFECTS SET TO ZERO IN THE AREA FILES. BEFORE YOU SHUT DOWN YOU MIGHT WANT TO LOOK AT A SMALL AREA FILE AND LOOK UNDERNEATH THE SECTOR BIT TO SEE IF THERE IS A ZERO IF THAT IS WHERE YOU PUT THE AFFECT_ROOM IN THE OLC_SAVE.C FILE. ONE THAT ALL DONE AT THIS LAST PEACE OF CODE IN DB.C ------------------db.c------------------------- +++++++++++++UNDER SET_BIT(pRoomIndex->room_flags,ROOM_NOWHERE); ++++++++++++++PUT pRoomIndex->affect_room_type = fread_number( fp ); -------------------------------------------------------------- AFTER THIS IS DONE REBOOT AND IT SHOULD READ THE NEW AREA LAYOUT WITH NO PROBLEMS. IF YA FIND SOMETHING MISSING LET ME KNOW I WILL DIG THE CODE BACK UP FROM THE BASEMENT OF THE HARD DRIVE AND REVAMP IT.