The following Smaug mobprogs have been graciously donated by Shalarra of Edge of Creation. Smaug mobprogs are not that different in structure from ROM mobprogs, so you may wish to use the mobprog guide as a general document.
For those unfamiliar with Smaug, the groupings of three letters (pur, ora, bro and lbl) are colour codes, standing for purple, orange, brown, and light blue. If prefixed by an underscore (_pur), the string will appear purple. If prefixed by an asterisk (*pur), the string will appear purple and blink. The mpsleep command is from a snippet, allowing a mobprog writer to add a pause without having to use delays.
I'm displaying these exactly as they were sent to me, with the exception of indentations to make if-else-endif statements easier to follow.
These first three are simple speech progs; the first two are duplicate progs, telling the player what those tasty-looking blue berries are for. Duplication like this is important sometimes; you wouldn't want someone to miss an important clue about a quest if they ask about "the gold mines", but the trigger is for "the gold mine". Anyway, the third prog is apparently for a flirt.
1>speech_prog 100 berry say Oh, you mean the light blue ones from the garden? mpsleep 3 mpecho _lbl He continues, "Those are sanctuary berries. They will help you stay safe."
2>speech_prog 100 berries say Oh, you mean the light blue ones from the garden? mpsleep 3 mpecho _lbl He continues, "Those are sanctuary berries. They will help you stay safe."
4>speech_prog hello say Hello to you, $n. I like you. lgrin $n wink $n
These next three are more simple ones; the first deals with a dying mob. It loads some objects into the room upon death. The second is a greet prog, and the third is a little prog for a dolphin. No, they're not exciting here, but they make MUDs come alive ^.^
3>death_prog 17 mpoload 210508 100 mpoload 210506 99
1>greet_prog 95 nod tell $n I'll be out of your way soon.
3>rand_prog 1 mpecho The lively dolphin splashes you with water to get your attention.
Shalarra told me that she often uses tells instead of says, and mpechoat instead of mpecho, so that the room isn't spammed for every entry to the room. Good idea, I think, especially for progs like this.
1>act_prog p from the north. growl mpechoat $n The creature looks at you with menacing glee in his eyes. tell $n What fool is this who walks in and volunteers? muhaha tell $n Come here, $n, I have something special for you! wield hook grin $n
Here's an interesting twist: using a roomprog as a mobprog. It can go the other way (mobprog being used as a roomprog), but that requires some fancy maneuvering and mobs with no long desc. This prog is for players who pick up everything - and tries to teach them a lesson. If Jeremy (an NPC) is in the room, he attacks the player. Otherwise, Avalon (I assume that's her name) will just whine a bit.
Name: Master Bedroom. Vnum: 40419.
1>act_prog p gets the rainbow cloak.
if mobinroom(40425)==1
mpforce avalon say Jeremy, that person took my cloak!
mpforce jeremy tell $n First you barge into our private room and now you steal my wife's cloak!
mpforce jeremy tell $n It appears you must be taught a lesson!
mpforce jeremy mpkill $n
else
mpforce avalon say Oh, dear! First my Jeremy is killed, and now that person took my cloak!
mpforce avalon say This is just miserable! Oh, Jacob...Jack! Where are you?
endif
All of these mobprogs revolve around Tilzari, who is a fortune-teller. They are good examples of some complexity and good use of variables. Tilzari's predictions seem to be quite accurate. Unfortunately for those who visit her, the future is based on how much silver she's paid (ouch!).
Tilzari's standard greeting to anyone who enters her place of business; she doesn't let anyone know how much she wants for her services, though. Perhaps it's posted on a sign outside?
1>entry_prog 100 mpechoat $n _pur Tilzari smiles wryly and looks up from her cards at you. mpforce Tilzari tell $n I've been waiting for you, $n. mpforce Tilzari tell $n For a small fee I can tell you things that you want to know. mpforce Tilzari lgrin $n
Oh, a romantic stranger ... not a bad deal for 100 silver.
3>bribe_prog 100 card $n tell $n You will be visited soon by a romantic stranger. lgrin mpforce $n smile
Tilzari is a bit unhappy with a mere 200 silver coins - and predicts illness. I wonder if it'll come true ... ?
2>bribe_prog 200 card $n mpechoat $n Tilzari studies the card that you have drawn. tell $n You will be stricken with an illness soon. tell $n It will be painful and will harm you. tell $n You will need to return to me so I can remove the illness from you. mpforce $n bow Tilzari mpecho Leaving through the door, $n looks as if $e has just wasted $s money.
This one predicts several things about a player. Could be any player. Well, any player who wants to pay 250 silver to hear this.
1>bribe_prog 250 card $n mpechoat $n Tilzari studies the card you have chosen. mpechoat $n She looks at you and ponders for a minute. sigh tell $n You will wander these lands for a very long time. mpsleep 5 tell $n You will meet many new friends and enemies. mpsleep 6 tell $n You will gain great stature and will be equipped with the finest. mpsleep 7 snicker tell $n You will always wonder why you have paid me to tell you this. lgrin $n
The illness that Tilzari predicted strikes with little warning to the player. A warning is flashed in orange (*ora). The damage done is dependent on how many maximum hit points the player has. It is never enough to outright kill the player, fortunately. At the end, the player is forced to kneel (how humbling), and Tilzari calls the act prog to heal the player.
3>act_prog p bows before Tilzari.
mpechoat $n You leave out the door to the east wondering if Tilzari's words are true.
if hps($n) >= 500
mpdamage $n 150
else
if hps($n) >= 100
if hps($n) < 500
mpdamage $n 25
else
if hps($n) <= 25
mpdamage $n 10
endif
endif
endif
endif
mpechoat $n *ora You suddenly feel very ill!
mptrans $n 33221
mpat $n mpforce $n look
mpat $n mpechoat $n You stagger back into the door of Tilzari's house.
mpecho Back into the door staggers $n, looking pretty ill!
mpat $n mptrans $n 33311
mpforce $n look
mpforce $n kneel
A simple act prog, it's how Tilzari cures a player who has become stricken with that illness.
4>act_prog p kneels smile $n mpechoat $n Tilzari waves her hand over you and you feel much better! c heal $n c heal $n
This is the program for the romantic stranger. If the player has a female character, a man will appear; if the player has a male character, a woman will appear. Kisses follow (yay).
2>act_prog p smiles happily.
if sex($n) == 2
mpmload 33117
mpechoat $n Without warning, a mysterious and very handsome stranger appears!
mpforce $n look
mpechoat $n He looks deeply into your eyes.
mpforce stranger kiss $n
mpforce stranger bow $n
mpechoat $n As quickly as he appeared, the stranger disappears through the door.
mppurge stranger
else
if sex($n) == 1
mpmload 33118
mpechoat $n Without warning, a mysterious and very sensual lady appears through the door!
mpforce $n look
mpechoat $n She smiles seductively and looks deeply into your eyes.
mpforce sensual kiss $n
mpechoat $n She touches your face with her fingertips...
mpechoat $n As quickly as she appeared, the beautiful stranger disappears from your life.
mppurge sensual
endif
endif
These mobprogs relate to the Temple of Mal-Hodi. This first one is set to either allow or deny entry to the Temple. If a player is devoted to any deity other than Mal-Hodi or Faelle, he is turned away from the Temple. If no deity has been chosen, or if the player is devoted to Mal-Hodi or Faelle, entry is granted.
if deity($n) == Mal-Hodi
or deity($n) == Faelle
mpforce guard tell $n Welcome to the Temple of Mal-Hodi, $n.
mpforce guard tell $n Those who follow the ways of balance are at home here.
else
if deity($n) != Mal-Hodi
or deity($n) != Faelle
mpforce guard tell $n I am sorry, $n. You do not follow the ways of Balance.
mpforce guard tell $n You will not be allowed in the Temple of Mal-Hodi.
mpechoat $n You feel terribly disoriented...as if you are floating!
mptrans $n 33600
mpat $n mpforce $n look
else
mpforce guard tell $n Welcome, $n. You have not chosen to devote to a god as yet.
mpforce guard tell $n May your visit to the Temple of Mal-Hodi help you decide.
mpforce guard tell $n May your heart find the way of Balance as you explore.
endif
endif
This prog is to determine if the player has proven his devotion to Mal-Hodi or Faelle through the finding of certain tokens in a test. Druids must devote to Faelle, while everyone else is devoted to Mal-Hodi. Once properly devoted, a pair of presumably magical boots are given to the player. Huge number of if-else-endif statements here, but they flow pretty simply. The first two groups of three check hints that the player doesn't have all the requisite tokens, the next group of three rewards the player for having gotten the tokens.
if ovnumhere(33645) < 1
if ovnuminv(33639) == 1
if ovnuminv(33641) < 1
tell $n Do you have another token from your second test, $n?
tell $n If you have not yet obtained the token from the second test please say no.
endif
endif
endif
if ovnumhere(33645) < 1
if ovnuminv(33641) == 1
if ovnuminv(33639) < 1
tell $n Do you have another token from your second test, $n?
tell $n If you have not yet obtained the token from the second test please say no.
endif
endif
endif
smile $n
if ovnumhere(33645) < 1
if ovnuminv(33639) == 1
if ovnuminv(33641) == 1
mpjunk token
mpjunk token
if deity($n) == Mal-Hodi
or deity($n) == Faelle
mpoload 33645 15
give boots $n
tell $n These boots may only be worn by those who have proven themselves as you have.
tell $n Wear them with pride, ever to remind you that the Balance must be preserved.
else
if class($n) == druid
mpforce $n devote Faelle
mpoload 33645 15
give boots $n
tell $n These boots may only be worn by those who have proven themselves as you have.
tell $n Wear them with pride, ever to remind you that the Balance must be preserved.
else
mpforce $n devote Mal-Hodi
mpoload 33645 15
give boots $n
tell $n These boots may only be worn by those who have proven themselves as you have.
tell $n Wear them with pride, ever to remind you that the Balance must be preserved.
endif
endif
endif
endif
endif
Back to Top
This next set of mobprogs is for a frog, who was once a handsome prince. In the first prog, if the player's character is male, the frog simply sighs. Otherwise, he'll tell his short story and ask for a kiss.
1>act_prog p from the east.
say ribbitt
if sex($n)==1
mpechoat $n The large green frog looks at you, sighs deeply, and closes his eyes.
else
mpechoat $n The large green frog looks at you and his eyes open wide.
tell $n I know this is hard to believe, but I'm really a prince.
chuckle
tell $n Will you please kiss me and release me from this frog curse?
mpechoat $n The frog looks at you with pleading eyes.
endif
If the player does decide to kiss the frog, this roomprog fires, and the frog undergoes a miraculous transformation to a handsome prince.
1>act_prog p kisses a large green frog. mpecho The frog seems to be undergoing a marvelous transformation! mpecho He has gotten very handsome and commands admiration! mpecho You are overwhelmed with respect for this ....frog? mpechoat $n You feel humbled in his presence and feel a need to bow. mppurge green mpmload 40402 mpforce $n look
This roomprog is active all the time, checking to see if both the frog and the prince are in the room. If so, the prince is purged away.
2>rand_prog 100 if mobinroom(40402)>=1 if mobinroom(40401)>=1 purge prince endif endif
Once the frog has turned back into the prince, he shows his thanks with a ring, and heads back to his castle.
1>act_prog bows bow $n say Thank you, $n, for freeing me from that tormenting curse. say As a reward, I will give you this ring. mpoload 40401 40 give ring $n smile $n wave $n mpechoat $n The handsome prince quickly leaves to return to his castle. mpgoto 40401
These next progs are for a father, whose wagon has broken down, and for the blacksmith who can fix the wagon's wheel. The father can't leave his family to get the wheel fixed, so the ever-heroic player has the option of helping the family.
1>speech_prog hello tell $n Hello, $n. Would you please help us? Our wagon wheel broke. tell $n My wife isn't feeling well, and my son is not quite right in the head, so I can't send him. tell $n If you would be so kind as to take our wheel with you to the blacksmith at the academy... mpechoat $n he continues, "He knows us and I'm sure he would bring it to us when he's fixed it." tell $n I know it's a lot to ask, but we're in a pretty big mess here, and we sure could use your help. mpechoat $n _lbl He looks at you with pleading eyes. mpechoat $n _pur What will it be? Yes ...or No?
These roomprogs are for the player's answer, and are fairly straightforward.
1>speech_prog no mpsleep 5 mpechoa $n _lbl The man looks down sadly and says, "I understand, and thank you anyway." 2>speech_prog yes mpforce father smile $n mpforce father tell $n Thank you so much! mpforce father mpoload 210517 30 mpforce mother smile $n mpforce father give wheel $n mpforce father tell $n The blacksmith is just inside of the Academy grounds. He has a little shop there. mpforce father tell $n Thank you again, $n!
The blacksmith's progs are here; in the first one, it depends on if the player is the only one in the room with the blacksmith to see if he'll greet the player. Otherwise, he simply smiles (presumably occupied with another customer?).
1>act_prog p from the east.
if ispc($n)
if mortcount(210644)==1
mpecho _bro Karl looks up from his work and smiles at you.
smile $n
tell $n Can I help you?
else
smile $n
endif
endif
Ah ... the wheel. Karl the blacksmith recognises it and willingly fixes it. He then gives the player a hammer. I know why, but I refuse to spoil the surprise (go play the MUD to find out).
2>act_prog p gives you A Broken wagon Wheel. mpecho _bro Karl looks at the broken wheel and his face lights up with recognition. tell $n I know where I've seen this! It belongs to my friends that just left for the market! tell $n Well, it appears they've broken down on the road again.. tell $n That figures...that old wagon is really falling apart! tell $n Thank you, $n, for bringing me the wheel. I'll fix it up and take it to them. smile $n tell $n Let me give you something for your trouble. You never know when you might need it. smile $n mpoload 210554 85 give hammer $n tell $n Good luck to you on your travels! wave $n
This is for the father, and is the first prog triggered - a simple greeting to players who arrive from the southwest. It brings about an interesting thought - if you've an idea for a good prog-made quest, write that first, and worry about the little details later (like actually introducing the quest ^^;).
3>act_prog p from the southwest. mpforce father tell $n Hello, stranger.
This last mobprog is for someone named Morgan, who is a "craftsman" living in a cave in the middle of some dangerous mountains. If the player gives him a certain piece of armour (vnum 400232), he'll offer to change its alignment, if he can have another of the same kind. Otherwise, the player can just say "not yet" and Morgan will return the armour.
if ovnuminv(400232)==1 tell $n Very nice protective device. If ye give me another one I can change its alignment. mpsleep 3 tell $n If you don't have another just say NOT YET and I'll return this one to ye. tell $n If ye DO have another and want it changed just give it to me now and I'll fix it up. endif if ovnuminv(400232)==2 mpjunk armor mpjunk armor tell $n Ah, yes, I can fix ye right up here. Just give me a minute. mpsleep 4 mea $n Morgan chants a few secret words as he works over the item. mpsleep 4 tell $n Yes! This will do just fine! mpsleep 3 smile mpoload 400233 100 give armor $n mpsleep 3 tell $n There ye go, young adventurer. May it serve ye well! endif
Main
About ...
the site
the author
Rant
Muds
Resources
Mobprog FAQ
Mobprog guide
Mobprog examples
Areas
Games
Morrowind
Rogue-likes
Art
Contact
Misc.
Links
Sitemap