#include "special.h" #include "exits.h" #include "undef.h" Zone = "start" Author = "Unknown" EndZone = "start" Mobile = puff Location = church@start Strength = 1500 Damage = 32 Aggression = 0 Armor = 0 MFlags = NegFireball SFlags = Female Desc = " &+RPuff&* The Fractal Dragon is here with a faraway look in her eyes." Trap = all @ static char *m[] = { "&+CI love this mud. So many weird people! I get hit on all the time.&*", "&+CLook at the pretty &+Gc&+Bo&+Wl&+Mo&+Rr&+Ys&+C!&*", "&+CTo iterate is human. To recurse, divine.&*", "&+CHow'd those fish get up there?&*", "&+CAnd NO you CANNOT use my scales to weigh that...&*", "&+CMy, don't you look handsome!&*", "&+CBarney must die! But then again... We could enslave him...&*", "&+CFree donuts at Warm Haven! What! No glazed!?&*", "&+CWhat? Did you say TORCH!?&*", "&+CI'm walking here!&*", "&+CI'm not only the president of scales club for women, I'm also a client.&*", "&+CLife is like a box of chocolates, you never know what you're gonna get.&*", "&+CYou think I'm pointless? Go ahead. Try to light that torch with your breath.&*", "&+CElvis has left the building!&*", "&+CHey, can I have some of that? Im HUNGRY!&*", "&+CHey! Keep those comments to your self!&*", "&+CNice weather we are having, isnt it.&*", "&+CHi!&*", "&+CYou are ugly. And you smell.&*" }; static char *puffshouts[] = { "Where'd all my pals go?", "Hey, did you hear the one about Guxx and the treehouse?", "Who stole my towel?", "Why is everyone so quiet?", "I'm hungry!", "Anyone need a... LIGHT?", "Elvis lives!", "I love you!", "I hate being perfect", "Anyone have a breath mint?", "Hey, who forgot to feed the dragon?", "Who turned out the lights?", "Swing your partner do-see-do, and be sure not to crush his toe!", "I Want my mommy!!", "Say Marty, when will you give me the Zap command?", "Hey Delphina, can I play with my best friend the IcePrincess?" }; static char *puffactions[] = { "%s blinks, then wanders off aimlessly.\n", "%s coughs noisily.\n", "%s laughs at some private joke.\n", "%s dances around in circles and trips over her own tail.\n", "%s knocks you over and gives you a big hug.\n", "%s's stomach growls alarmingly.\n", "%s giggles insanely.\n", "%s wiggles her tail.\n", "%s looks at you and grins evilly.\n", "%s hugs you closely.\n", "%s hides behind a blanket.\n", "%s gives you a big sloppy kiss on your cheek.\n", "%s hiccups and blushes as a gout of flame spurts out her nostrils.\n" }; /* Puff's Assorted Yammerings */ static char *pufftells[] = { "I'm Puff the Fractal Dragon. Who are you?", "Did you steal my towel?", "Why does everyone ignore me?", "Don't forget to feed me!", "Is it just me or has someone forgot to flush the toilet?", "Don't mind me, I'm just imagining you on a platter with a cream sauce.", "Why is the earth round?", "Never annoy a dragon, for thou art crunchy and good tasting.", "Can i have your autograph?", "Hmm. I think you'd be a bit too salty for my tastes.", "Do you think I'm pretty?", "Have you seen my friend Marty?", "Want to earn some quick score points?", "The world is to big for the two of us.", "I'm Puff the cookymonster, have some cookies?" }; static char *puffpersonshouts[] = { "Why won't %s talk with me?", "I think %s stole my towel!", "Hey %s! Wheres my food?", "I'm sorry %s, was that *your* foot!?", "%s, wanna dance?", "I love you %s!", "Why does %s think I'm annoying? I'm not annoying, am I?", "%s, can i have your autograph?", "Don't listen to %s!", "Yo %s, when will you learn how to fight?", "Hey Ultima, %s is cheating!", "Will you marry me %s?" }; int i = param_s.plx; char blob[MAX_COM_LEN]; int puffrand; switch (event) { case E_ONTIMER: /* Puffs communications and actions */ puffrand = randperc(); if (!(is_in_game(MOB_START_PUFF+max_players) || alive((MOB_START_PUFF+max_players)) < 0) ) return; /* Stop puff from shouting when dead */ if (puffrand < 5) { puffrand = randperc(); if ((puffrand < 10) && (pvis(i) == 0) && (!ststflg(MOB_START_PUFF+max_players, SFL_NOSHOUT))) { sprintf(blob, puffpersonshouts[MY_RANDOM () % ARRAYSIZE (puffpersonshouts)], pname(i)); send_g_msg (DEST_ALL, puff_shout_test, MOB_START_PUFF+max_players, blob); } else if ((puffrand <15) && (!ststflg(i, SFL_DEAF)) && (!ltstflg(ploc(i),LFL_SOUNDPROOF) && ploc(MOB_START_PUFF+max_players) != ploc(i)) && (!ststflg(MOB_START_PUFF+max_players, SFL_DUMB)) && (!ststflg(i,SFL_NOPUFF)) ) { sendf(i, "Puff tells you '&+C%s&*'\n", pufftells[MY_RANDOM () % ARRAYSIZE (pufftells)]); } } else if (puffrand > 7 && puffrand <10) { puffrand = randperc (); if (puffrand <= 15 && !ststflg(param_s.pl, SFL_DUMB) && !ststflg(param_s.pl, SFL_NOPUFF)) send_msg (param_s.loc,MODE_NSFLAG|MS(SFL_NOPUFF),LVL_MIN,LVL_MAX,NOBODY,NOBODY, "\001p%s\003 says '%s'\n", pname (param_s.pl), m[MY_RANDOM () % ARRAYSIZE (m)]); else if (puffrand <= 23 && !ststflg(param_s.pl, SFL_NOSHOUT) && !ststflg(param_s.pl,SFL_NOPUFF)) send_g_msg (DEST_ALL, puff_shout_test, param_s.pl, puffshouts[MY_RANDOM() % ARRAYSIZE(puffshouts)]); else if (puffrand <38 && ststflg(param_s.pl,SFL_NOPUFF)) sendf (param_s.loc, puffactions[MY_RANDOM () % ARRAYSIZE (puffactions)], pname(param_s.pl)); } break; case E_ONMISC: if (param_s.misc == VERB_PUNT) { send_player("Puff scowls, spins, and kicks you!\n"); send_player("Puff tells you 'Never annoy a dragon, for thou art crunchy good tasting.'\n"); setup_globals(param_s.pl); param_s.misc = param_s.pl; param_s.pl = param_s.plx; param_s.plx = param_s.misc; } break; case E_ONCOMM: if (alive(mobile(MOB_START_PUFF)) >= 0) { send_msg(DEST_ALL,MODE_NSFLAG|MS(SFL_NOPUFF),LVL_MIN,LVL_MAX,NOBODY,NOBODY, "Puff shouts &+C'Hey %s, %s'\n", pname(param_s.plx),param_s.buf); sendf(ploc(mobile(MOB_START_PUFF)),"Puff bounces with joy.\n"); } else erreval(); do_not_continue; break; default: break; } @ EndTrap EndMobile = puff Mobile = ResetMaster MFlags = BarNorth, BarWest, BarSouth, BarEast, BarUp, BarDown PFlags = NoHassle, NoExor, NoSteal Damage = 100 Strength = 1000000 Aggression = 0 Speed = 0 Location = limbo@limbo Desc = "The Reset Master is here to make sure everything goes as planned." EndMobile = ResetMaster Object = umbrella Location = IN_ROOM:temple@start OFlags = Weapon MaxState = 1 Damage = 5 BaseValue = 30 Size = 20 Weight = 15 Desc0 = "A furled umbrella lies here." Desc1 = "An unfurled umbrella lies here." Examine = " It is a large, black umbrella, somewhat battered. The initials 'M.Poppins' are engraved on the handle." Trap = all @ switch (event) { case E_ONOPEN: send_player("You open the umbrella.\n"); setobjstate(OBJ_START_UMBRELLA, 1); do_not_continue; break; case E_ONCLOSE: send_player("You close the umbrella.\n"); setobjstate(OBJ_START_UMBRELLA, 0); do_not_continue; break; default: break; } @ EndTrap EndObject = umbrella Object = fire Location = IN_ROOM:temple@start OFlags = Extinguish, Lit, NoGet Desc0 = " A roaring &+Rfire&* burns here. Its flames make the temple sparkle and glitter." Examine = " In the fire you see faint images of the ghosts of dead players. The sparkles fly up and away, disappearing amongst the pillars of the temple." EndObject = fire Object = pit Location = IN_ROOM:temple@start OFlags = NoGet Desc0 = "There is a huge sacrificial pit at your feet." Examine = " The pit allows you to sacrifice valuables to the gods for a small reward." EndObject = pit Object = Church_Pit Name = "pit" Location = IN_ROOM:church@start OFlags = NoGet Desc0 = "There is a huge sacrificial pit at your feet." Examine = " The pit allows you to sacrifice valuables to the gods for a small reward." EndObject = Church_Pit Location = "temple" Down = Ftrack@Valley South = Ftrack@Valley West = Welcome@intro LFlags = Peace Title = "&+WThe Temple Of Paradise&*" Desc = ^ You stand in the Temple of Paradise, a huge stone structure whose walls are decorated with ancient carvings and runes, some so old that even the priests no longer know their meanings. A single set of steps lead south, descending the huge mound upon which the temple is built and ending in the forests below. ^ EndLocation = "temple" Location = "church" South = Green@Village East = Welcome@intro /*West = donations1@start*/ LFlags = Peace Title = "&+WThe Village Church&*" Desc = ^ You are in the village's small wooden church. A gentle breeze blows into the church disturbing the dust which dances in the sunbeams that shine faintly through the windows. A doorway leads south. A small archway to the East leads into the introduction area. ^ EndLocation = "church" Location = "EntryPoint" Down = SteepPath@TheNewWorld LFlags = NoMobiles, Peaceful, Outdoors, RealTime Title = "&+WThe Stone Circle&*" Desc = ^ You are on a hilltop that is covered with tough grass, surrounded by large stone boulders. In the middle of the circle lies a large flat stone. You can see some old bloodstains in the middle of the stone. From the hilltop you can see that you are on a small island, not more than a mile across. To the north you can see another small island. In the western sky you can see some darks clouds. A steep path leads down to the base of the hill. ^ EndLocation = "EntryPoint" Location = "Donations1" East = church@start LFlags = Peace, Donations Title = "&+WThe donations room&*" Desc = ^ You're standing in a sacrifical donations room. You can donate objects here for other players without loosing the credit for finding them. Please beware that not all objects will be allowed in here! ^ EndLocation = "Donations1"