Dream Code v 1.0 by Andrew Tolmasoff (Belgarath/Phate131) This code is pretty much self explanitory, it is rather basic right now, but I will improve on it as time progresses. It's pretty much self explanitory...You go to sleep...and it has 5 dreams to pick from with 5 events in each, when one finishes It randomly generates which dream will come up next. There are 2 nightmares which will cause you to wake up, but this code is clean and rather simple once again. Feel free to improve on it and please email me at bmudmrc@hotmail.com if you liked this code! This was put in my Rom2.4 (QuickMUD Advanced code) so it should work on most Rom/Rot codes. -[Merc.h]- In struct char_data: Under: sh_int trust; Add: sh_int dreamp; sh_int dreamn; End char_data; Under: #define PULSE_AREA (120 * PULSE_PER_SECOND) Add: #define PULSE_DREAM (45 * PULSE_PER_SECOND) -[End merc.h]- -[Save.c]- in fwrite_char(): Under: fprintf (fp, "Sec %d\n", ch->pcdata->security); /* OLC */ Add: fprintf (fp, "Drep %d\n", ch->dreamp); fprintf (fp, "Dren %d\n", ch->dreamn); in fread_char(); Under: KEY ("Desc", ch->description, fread_string (fp)); Add: KEY ("Drep", ch->dreamp, fread_number( fp ) ); KEY ("Dren", ch->dreamn, fread_number( fp ) ); -[End Save.c]- -[Update.c]- With all the other defines, add: #include "dream.h" At the top with all the other declarations: Under: void aggr_update args ((void)); Add: void dream_update( void ); in update_handler: Under: static int pulse_music; Add: static int pulse_dream; Anywhere in Update Handler before aggr_update ();: Add: if ( --pulse_dream <= 0 ) { pulse_dream = PULSE_DREAM; dream_update(); } -[End Update.c]- -[act_move.c]- With all the other defines, add: #include "dream.h" In do_sleep: Replace: if (IS_SET (obj->value[2], SLEEP_AT)) { act ("You go to sleep at $p.", ch, obj, NULL, TO_CHAR); act ("$n goes to sleep at $p.", ch, obj, NULL, TO_ROOM); } else if (IS_SET (obj->value[2], SLEEP_ON)) { act ("You go to sleep on $p.", ch, obj, NULL, TO_CHAR); act ("$n goes to sleep on $p.", ch, obj, NULL, TO_ROOM); } else { act ("You go to sleep in $p.", ch, obj, NULL, TO_CHAR); act ("$n goes to sleep in $p.", ch, obj, NULL, TO_ROOM); } With: if (IS_SET (obj->value[2], SLEEP_AT)) { act ("You go to sleep at $p.", ch, obj, NULL, TO_CHAR); act ("$n goes to sleep at $p.", ch, obj, NULL, TO_ROOM); dream_reset(ch); } else if (IS_SET (obj->value[2], SLEEP_ON)) { act ("You go to sleep on $p.", ch, obj, NULL, TO_CHAR); act ("$n goes to sleep on $p.", ch, obj, NULL, TO_ROOM); dream_reset(ch); } else { act ("You go to sleep in $p.", ch, obj, NULL, TO_CHAR); act ("$n goes to sleep in $p.", ch, obj, NULL, TO_ROOM); dream_reset(ch); } end Do_sleep(); In do_stand: Replace: if (obj == NULL) { send_to_char ("You wake and stand up.\n\r", ch); act ("$n wakes and stands up.", ch, NULL, NULL, TO_ROOM); ch->on = NULL; } else if (IS_SET (obj->value[2], STAND_AT)) { act_new ("You wake and stand at $p.", ch, obj, NULL, TO_CHAR, POS_DEAD); act ("$n wakes and stands at $p.", ch, obj, NULL, TO_ROOM); } else if (IS_SET (obj->value[2], STAND_ON)) { act_new ("You wake and stand on $p.", ch, obj, NULL, TO_CHAR, POS_DEAD); act ("$n wakes and stands on $p.", ch, obj, NULL, TO_ROOM); } else { act_new ("You wake and stand in $p.", ch, obj, NULL, TO_CHAR, POS_DEAD); act ("$n wakes and stands in $p.", ch, obj, NULL, TO_ROOM); } With: if (obj == NULL) { send_to_char ("You wake and stand up.\n\r", ch); act ("$n wakes and stands up.", ch, NULL, NULL, TO_ROOM); dream_kill(ch); ch->on = NULL; } else if (IS_SET (obj->value[2], STAND_AT)) { act_new ("You wake and stand at $p.", ch, obj, NULL, TO_CHAR, POS_DEAD); act ("$n wakes and stands at $p.", ch, obj, NULL, TO_ROOM); dream_kill(ch); } else if (IS_SET (obj->value[2], STAND_ON)) { act_new ("You wake and stand on $p.", ch, obj, NULL, TO_CHAR, POS_DEAD); act ("$n wakes and stands on $p.", ch, obj, NULL, TO_ROOM); dream_kill(ch); } else { act_new ("You wake and stand in $p.", ch, obj, NULL, TO_CHAR, POS_DEAD); act ("$n wakes and stands in $p.", ch, obj, NULL, TO_ROOM); dream_kill(ch); } -[End act_move.c]- -[Place this for dream.c]- /*************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik Strfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefitting. We hope that you share your changes too. What goes * * around, comes around. * **************************************************************************/ /*************************************************************************** * ROM 2.4 is copyright 1993-1998 Russ Taylor * * ROM has been brought to you by the ROM consortium * * Russ Taylor (rtaylor@hypercube.org) * * Gabrielle Taylor (gtaylor@hypercube.org) * * Brian Moore (zump@rom.org) * * By using this code, you have agreed to follow the terms of the * * ROM license, in the file Rom24/doc/rom.license * **************************************************************************/ /*************************************************************************** * DREAM.C BY ANDREW TOLMASOFF 2004 (C) QuickMUD Advanced * ***************************************************************************/ /* QuickMUD - The Lazy Man's ROM - $Id: act_info.c,v 1.3 2000/12/01 10:48:33 ring0 Exp $ */ #if defined(macintosh) #include #else #include #include #endif #include #include #include #include #include #include "merc.h" #include "interp.h" #include "magic.h" #include "recycle.h" #include "tables.h" #include "lookup.h" #include "dream.h" void dream_update(void) { DESCRIPTOR_DATA *d; CHAR_DATA *ch; for ( d = descriptor_list; d != NULL; d = d->next ) { if (d->character != NULL && d->connected == CON_PLAYING) { ch = d->character; if(IS_NPC(ch)) return; // If the character is asleep. if(!IS_AWAKE(ch)) { if(ch->dreamn == 0) { switch(ch->dreamp) { case 0: send_to_char("You are having Dream #1, Part #1.\n\r", ch); ch->dreamp++; break; case 1: send_to_char("You are having Dream #1, Part #2.\n\r", ch); ch->dreamp++; break; case 2: send_to_char("You are having Dream #1, Part #3.\n\r", ch); ch->dreamp++; break; case 3: send_to_char("You are having Dream #1, Part #4.\n\r", ch); ch->dreamp++; break; case 4: send_to_char("You are having Dream #1, Part #5.\n\r", ch); dream_reset(ch); break; } } else if(ch->dreamn == 1) { switch(ch->dreamp) { case 0: send_to_char("You are having Dream #2, Part #1.\n\r", ch); ch->dreamp++; break; case 1: send_to_char("You are having Dream #2, Part #2.\n\r", ch); ch->dreamp++; break; case 2: send_to_char("You are having Dream #2, Part #3.\n\r", ch); ch->dreamp++; break; case 3: send_to_char("You are having Dream #2, Part #4.\n\r", ch); ch->dreamp++; break; case 4: send_to_char("You are having Dream #2, Part #5.\n\r", ch); dream_reset(ch); break; } } // This dream is a Nightmare! else if(ch->dreamn == 2) { switch(ch->dreamp) { case 0: send_to_char("You are having Dream #3, Part #1.\n\r", ch); ch->dreamp++; break; case 1: send_to_char("You are having Dream #3, Part #2.\n\r", ch); ch->dreamp++; break; case 2: send_to_char("You are having Dream #3, Part #3.\n\r", ch); ch->dreamp++; break; case 3: send_to_char("You are having Dream #3, Part #4.\n\r", ch); ch->dreamp++; break; case 4: send_to_char("You are having Dream #3, Part #5.\n\r", ch); send_to_char("\n\r\n\r{RYou wake up in a cold sweat, breathing deeply.{x\n\r", ch); do_function(ch, &do_wake, ""); dream_kill(ch); break; } } else if(ch->dreamn == 3) { switch(ch->dreamp) { case 0: send_to_char("You are having Dream #4, Part #1.\n\r", ch); ch->dreamp++; break; case 1: send_to_char("You are having Dream #4, Part #2.\n\r", ch); ch->dreamp++; break; case 2: send_to_char("You are having Dream #4, Part #3.\n\r", ch); ch->dreamp++; break; case 3: send_to_char("You are having Dream #4, Part #4.\n\r", ch); ch->dreamp++; break; case 4: send_to_char("You are having Dream #4, Part #5.\n\r", ch); dream_reset(ch); break; } } // Also a Nightmare! else if(ch->dreamn == 4) { switch(ch->dreamp) { case 0: send_to_char("You are having Dream #5, Part #1.\n\r", ch); ch->dreamp++; break; case 1: send_to_char("You are having Dream #5, Part #2.\n\r", ch); ch->dreamp++; break; case 2: send_to_char("You are having Dream #5, Part #3.\n\r", ch); ch->dreamp++; break; case 3: send_to_char("You are having Dream #5, Part #4.\n\r", ch); ch->dreamp++; break; case 4: send_to_char("You are having Dream #5, Part #5.\n\r", ch); send_to_char("\n\r\n\r{RYou wake up in a cold sweat, breathing deeply.{x\n\r", ch); do_function(ch, &do_wake, ""); dream_kill(ch); break; } } } else { } } } return; } void dream_reset(CHAR_DATA *ch) { ch->dreamp = 0; ch->dreamn = number_range(0,4); save_char_obj(ch); return; } void dream_kill(CHAR_DATA *ch) { ch->dreamp = 0; ch->dreamn = 0; save_char_obj(ch); return; } -[End Dream.c]- -[Put this for Dream.h]- void dream_updade(void); void dream_reset(CHAR_DATA *ch); void dream_kill(CHAR_DATA *ch); -[End dream.h]- Now, make clean and that should be all you need. If you have any problems, please email me and I will fix them RIGHT away! Belgarath