diff --git a/typeclasses/characters.py b/typeclasses/characters.py index 46ad240..228aa7a 100644 --- a/typeclasses/characters.py +++ b/typeclasses/characters.py @@ -164,11 +164,11 @@ class Character(Object, GenderCharacter, ContribRPCharacter): def how_many_coins(self): "Return the amount of money in the coin purse." - self.get_pouch().how_much() + return self.get_pouch().how_much() def adjust_coins(self, amount): "Increase or decrease the amount of money in the coin purse." - self.get_pouch().adjust_amount(amount) + return self.get_pouch().adjust_amount(amount) def has_coins(self, at_least=1): "Return True if character has 'at_least' that many coins." diff --git a/world/adventure1.ev b/world/adventure1.ev index 4f55c03..08926dd 100644 --- a/world/adventure1.ev +++ b/world/adventure1.ev @@ -1,3 +1,5 @@ +# The Mist Horn + # [[file:../../../projects/mud-adventure.org::*The Mist Horn][The Mist Horn:1]] @create Mist Horn:typeclasses.sailing.CallingHorn # The Mist Horn:1 ends here @@ -74,7 +76,7 @@ py me.search('mp06ctl').cleanup() # The Mist Horn:8 ends here - +# The Boat # When the boat is docked, we should have a special /state/ to describe it: @@ -202,7 +204,7 @@ desc dock = A lazy dock with a comfortable-looking chair and a forest of colossa @teleport/tonone boat # The Boat:14 ends here - +# Throne Island # The boat should land on a distant island. # We should come up with a *theme* for the entire island, from the “statue” to the puzzles and answers. @@ -290,7 +292,7 @@ $state(boat, A large leaf bobs invitingly in the surf.) @roomstate shore # Throne Island:10 ends here - +# First Puzzle # Details on the throne and the statues and maybe moss? What about sitting on the throne? @@ -358,7 +360,7 @@ $state(boat, A large leaf bobs invitingly in the surf.) # First Puzzle:7 ends here - +# @teleport arched opening = here # And we need to get rid of it when any one leaves: @@ -399,7 +401,7 @@ $state(boat, A large leaf bobs invitingly in the surf.) @lock arched opening = view:tag(hidden_archway) # First Puzzle:12 ends here - +# Puzzle Two # Let’s make this a dark room where one has to have two feel around for a splinter to light, or bring a torch. @@ -448,7 +450,7 @@ A overly ornate |Ydoor|n with letters in rows and columns in a grid matrix indic @detail dome = Perhaps 30 feet high, but as shadows from the flame dance above you, you find it difficult to tell. # Puzzle Two:5 ends here - +# Puzzle Three # Each time this is “seen”, the response is different, so we use a [[file:~/src/moss-n-puddles/typeclasses/puzzles.py::class Changling(Object):][Changling]]: @@ -531,7 +533,7 @@ A overly ornate |Ydoor|n with letters in rows and columns in a grid matrix indic py me.search('obelisk').cleanup() # Puzzle Three:9 ends here - +# Puzzle Four # We need another door in order to escape. diff --git a/world/version1.ev b/world/version1.ev index f413001..efebee4 100644 --- a/world/version1.ev +++ b/world/version1.ev @@ -1,7 +1,3 @@ -# [[file:../../../projects/mud.org::*Shell][Shell:4]] -# # -*- mode:ruby; -*-says, -# Shell:4 ends here - # Create an Avatar # An avatar in the original sense of a housing for a god-like entity. @@ -309,6 +305,67 @@ py timed_script = evennia.create_script(key="Create Sticks", @set moss/get_err_msg = "The moss is a bryophyte, and as such, has attached itself to boulder by rhizoids, which are one cell thick root structures. While this helps with water absorption, you didn't think you were going to get a biology lesson, did you? tl;dr You can't get it." # Top of Boulder:11 ends here +# Vines +# Let’s cover top of the boulder with rope-like vines. The vine can be a [[file:~/src/moss-n-puddles/typeclasses/consumables.py::class Producer(Object):][producer]] that makes ropes … needed to get into the hut. + + +# [[file:../../../projects/mud.org::*Vines][Vines:1]] +@teleport mp02 +# +@create/drop lot of vines;vine;rope: typeclasses.consumables.Producer +# Vines:1 ends here + + + +# With a description: + + +# [[file:../../../projects/mud.org::*Vines][Vines:2]] +@desc vines = While difficult to cut, the study and tough vines are easy to pull from this point on the boulder. You could probably make a sturdy rope from them. +# Vines:2 ends here + + + +# We have to have the vines describe what it /makes/: + + +# [[file:../../../projects/mud.org::*Vines][Vines:3]] +@set vines/make_name = "coil of rope" +# Vines:3 ends here + + + +# And a verb when they /get/ the consumable: + + +# [[file:../../../projects/mud.org::*Vines][Vines:4]] +@set vines/make_verb = "yank and shape a" +# Vines:4 ends here + + + +# This one is optional as it defaults to Consumable: + +# [[file:../../../projects/mud.org::*Vines][Vines:5]] +@set vines/make_class = "typeclasses.things.Rope" +# Vines:5 ends here + + + +# And the vines needs to know the /description/ of the Consumable, so that it can attach that: + +# [[file:../../../projects/mud.org::*Vines][Vines:6]] +@set vines/make_desc = "Made from vines, but could be a good lasso." +# Vines:6 ends here + + + +# How much is there when you pick them? + +# [[file:../../../projects/mud.org::*Vines][Vines:7]] +@set vines/make_amount = 1 +# Vines:7 ends here + # Field # To the east, let’s make a nice meadow. Start at the Forest: @@ -755,6 +812,114 @@ py timed_script = evennia.create_script(key="Create Sticks", @set beast/pet_ecstatic_response = "While << excited ^ ecstatic ^ squirmy >>, the << big, ^ huge, ^ large, ^ tremendous, ^ >> << hairy ^ slobbery ^ horned ^ clawed ^ >> << brute ^ beast ^ monster>> << lays ^ gets >> down so $you() can << pet ^ scratch >> << the top of its head ^ the back of its neck ^ its nose ^ the sides of its face >>. It closes its eyes and purrs. ;; << The squirmy little devil. ^ >> $conj(You) << can ^ >> << barely ^ hardly >> scratch the << nose ^ ears ^ neck ^ top of the head >> of the << big, ^ huge, ^ large, ^ tremendous, ^ >> << hairy ^ slobbery ^ horned ^ clawed ^ >> << brute ^ beast ^ monster>> as it << squirms around ^ wriggles it backend >>. It << can hardly ^ can't >> contain its excitement. ;; The << big, ^ huge, ^ large, ^ tremendous, ^ >> << hairy ^ slobbery ^ horned ^ clawed ^ >> << brute ^ beast ^ monster>> wriggles around before << flopping ^ rolling >> over << in the grass ^>> as $you() $conj(give) it belly rubs. ;; The << big, ^ huge, ^ large, ^ tremendous, ^ >> << hairy ^ slobbery ^ horned ^ clawed ^ >> << brute ^ beast ^ monster>> wriggles and squirms excitedly before it << flops ^ rolls >> over << in the grass ^>> as $you() $conj(rub) its belly." # Beast:21 ends here +# Mellow Marsh +# The river from the [[Field]] flows into a marsh: + + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:1]] +@teleport mp05 +# +@dig Mellow Marsh;mp08 :typeclasses.rooms_weather.TimeWeatherRoom = south to marsh;s,north to meadow;n +# Mellow Marsh:1 ends here + + + +# Started with #279 +# And =look south= should show: + + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:2]] +@desc south = Looks like the river spreads into a marsh. Is that a hut you can see? +# Mellow Marsh:2 ends here + + + +# Describe the muddy marsh: + + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:3]] +@set south/traverse_msg = "The ground gets muddier and harder to walk the further into the marsh you go..." +# Mellow Marsh:3 ends here + + + +# And a description of the marsh: + + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:4]] +@teleport mp08 +# +@desc here = The river spreads into a muddy marsh full of |Ygrass|n and tall, white-topped |Yreeds|n. Colorful |Ybirds|n in the sparse tree surrounding the marsh yell out a loud chorus. Purple herons and other marsh |Ybirds|n hunt in the tall swamp grass. Glowing |Yfireflies|n create a synchronized light show over the swamp grass in the deepening dusk. Giant pink and purple |Ymoths|n flutter over the dark flowers.|/A small |Yhut|n, perched on three stilts to keep it dry, stands in middle of the slough. +# Mellow Marsh:4 ends here + + + +# And a new state when the house is bound: + + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:5]] +@desc/bound here = The river spreads into a muddy marsh full of |Ygrass|n and tall, white-topped |Yreeds|n. Colorful |Ybirds|n in the sparse tree surrounding the marsh yell out a loud chorus. Purple herons and other marsh |Ybirds|n hunt in the tall swamp grass. Glowing |Yfireflies|n create a synchronized light show over the swamp grass in the deepening dusk. Giant pink and purple |Ymoths|n flutter over the dark flowers.|/|/A pissed-off looking |Yhut|n, with its lasso'd stilt-like legs, struggles against its bounds in middle of the slough. +# Mellow Marsh:5 ends here + + + +# And =look north= should show: + + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:6]] +@desc north = The meadow to the north looks easier to walk around. +# Mellow Marsh:6 ends here + + + +# Describe the muddy marsh: + + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:7]] +@set north/traverse_msg = "The ground gets drier and easier to walk as you approach the meadow..." +# Mellow Marsh:7 ends here + + + +# Details for a more immersive experience: + + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:8]] +@detail birds = Birds of every color on the rainbow and beyond fly and squawk around you, but keep their distance. +# Mellow Marsh:8 ends here + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:9]] +@detail moths;moth = On closer inspection, the moths are really |Ysprites|n playing a strange chasing game. +# Mellow Marsh:9 ends here + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:10]] +@detail sprites;sprite = Seems that sprites with pink wings are on one team, and purple winged sprits on the other. The game became exciting as one sprite, holding aloft a flag is trying to avoid others as it streaks to the far side of the marsh. +# Mellow Marsh:10 ends here + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:11]] +@detail fireflies = A passing firefly shows it to actually be a |Ypixie|n holding two colorful lanterns. +# Mellow Marsh:11 ends here + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:12]] +@detail pixie;pixies = The pixies ignore you as their coreography keeps them focused on their dance. +# Mellow Marsh:12 ends here + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:13]] +@detail grass = Guess this kind of grass doesn't mind the wet environment. +# Mellow Marsh:13 ends here + +# [[file:../../../projects/mud.org::*Mellow Marsh][Mellow Marsh:14]] +@detail mud = Pretty brown and sticky. +# Mellow Marsh:14 ends here + +# Ten-foot Poles +# The reed can be a [[file:~/src/moss-n-puddles/typeclasses/consumables.py::class Producer(Object):][producer]] that makes ten foot poles … needed to get into the hut. + + +# [[file:../../../projects/mud.org::*Ten-foot Poles][Ten-foot Poles:1]] +@create/drop lot of tall white reeds;reeds: typeclasses.consumables.Producer +# Ten-foot Poles:1 ends here + # With a description: @@ -763,6 +928,444 @@ py timed_script = evennia.create_script(key="Create Sticks", @desc reeds = Extremely tall, white reeds tipped with white gooey clumps. One could hazzard a guess that with a little manipulation, one could make something from them. # Ten-foot Poles:2 ends here + + +# We have to have the reeds describe what it /makes/: + +# [[file:../../../projects/mud.org::*Ten-foot Poles][Ten-foot Poles:3]] +@set reeds/make_name = "ten-foot pole" +# Ten-foot Poles:3 ends here + + + +# And a verb when they /get/ the consumable: + +# [[file:../../../projects/mud.org::*Ten-foot Poles][Ten-foot Poles:4]] +@set reeds/make_verb = "pluck and shape a" +# Ten-foot Poles:4 ends here + + + +# And the reeds needs to know the /description/ of the Consumable, so that it can attach that: + +# [[file:../../../projects/mud.org::*Ten-foot Poles][Ten-foot Poles:6]] +@set reeds/make_desc = "A long pole shaved from a marsh reed." +# Ten-foot Poles:6 ends here + + + +# How much is there when you pick them? + +# [[file:../../../projects/mud.org::*Ten-foot Poles][Ten-foot Poles:7]] +@set reeds/make_amount = 1 +# Ten-foot Poles:7 ends here + +# Purple Heron +# Create a puppet of the bird hunting frogs and pixies. :-D + + +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:1]] +@create/drop purple heron: typeclasses.npcs.Eliza +# Purple Heron:1 ends here + + + +# What data file of responses should we use? + + +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:2]] +@set heron/data_file = "npcs.txt" +# +@set heron/speech_vocalizations = ["says", "croaks", "squawks"] +# Purple Heron:2 ends here + + + +# Note that we give him a male gender: + + +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:3]] +@set heron/gender = "neutral" +# Purple Heron:3 ends here + + + +# Work around the =pose= bug: + + +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:4]] +@set heron/_sdesc = "purple-feathered heron" +# Purple Heron:4 ends here + + + +# Prefix article? + + +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:5]] +@set heron/article = "The" +# Purple Heron:5 ends here + + + +# And a good description that I can rework: + + +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:6]] +@desc heron = Shades of violet and purple adorn the feathers of this majestically tall heron, that stalks the marsh |Ygrass|n, hunting small critters. +# Purple Heron:6 ends here + + + +# Since it is an NPC it has certain mutterings it can do: + + +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:7]] +@set heron/muttering_file = "jethro_tull_songs.txt" +# +@set heron/muttering_gap = 7 +# +@set heron/muttering_interval = 360 # Little over 3 minutes +# Purple Heron:7 ends here + +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:8]] +@set heron/muttering_formats = [ + "sings to |oself as if no one is listening, \"{0}\"", + "continues to sing to |oself, \"{0}\"", + "croons to |oself, \"{0}\"", + "finishes |p verse, \"{0}\"|/", + ] +# Purple Heron:8 ends here + + + +# And add the absent-minded singing script: + + +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:9]] +@script heron = typeclasses.scripts.Muttering +# Purple Heron:9 ends here + +# Trampoli’s Hut on Stilts + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:1]] +@teleport mp08 +# +@dig Homey Hut;mp09 = hut on stilts,leave;outside;marsh +# Trampoli’s Hut on Stilts:1 ends here + + + +# And describe it as =hut=: + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:2]] +@desc hut on stilts = Apparently made from swamp |Ygrass|n, the homey-looking hut has a wood door high above ground. Baskets of potted flowers and herbs garnish every window. +# Trampoli’s Hut on Stilts:2 ends here + + + +# Let’s keep most characters out of the hut. The idea is you need to fly to get in. But we have a sequence For the initial exit, it is just always impossible to use: + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:3]] +@lock hut on stilts = traverse:tag(enter_hut_nope, mp) +# Trampoli’s Hut on Stilts:3 ends here + + + +# Let’s add an alias: + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:4]] +@alias hut on stilts = hut +# Trampoli’s Hut on Stilts:4 ends here + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:5]] +@set hut on stilts/err_traverse = "Upon approaching the hut, the hut scurries away on its stilt-like legs." +# Trampoli’s Hut on Stilts:5 ends here + + + +# And we need to create a second exit: + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:6]] +@open rope-bound hut = Homey Hut +# Trampoli’s Hut on Stilts:6 ends here + + + +# Let’s add an alias: + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:7]] +@alias rope-bound hut = hut +# Trampoli’s Hut on Stilts:7 ends here + + + +# And describe it: + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:8]] +@desc rope-bound hut = The hut doesn't look happy, straining at its bonds that keep somewhat in place. The wood door to the hut, and its landing, continue to be too hign and out of your reach. +# Trampoli’s Hut on Stilts:8 ends here + + + +# If the other exit is here, you just need the pole: + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:9]] +@lock rope-bound hut = traverse:holds('ten-foot pole') +# Trampoli’s Hut on Stilts:9 ends here + + + +# And a good reason why you need the pole: + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:10]] +@set rope-bound hut/err_traverse = "The door, and its landing, are still too high and out of reach, and riding a bucking owlbear may be easier than climbing the stilt-legs that immediately throw you to the ground." +# Trampoli’s Hut on Stilts:10 ends here + + + +# If you do figure out how to get through the hut: + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:11]] +@set rope-bound hut/traverse_msg = "You use your pole to vault yourself up through the door of the hut..." +# Trampoli’s Hut on Stilts:11 ends here + + + +# Let’s put this second exit away until the [[file:~/src/moss-n-puddles/typeclasses/things.py::class Rope(Object):][rope calls]] it: + + +# [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:12]] +@teleport/tonone rope-bound hut +# Trampoli’s Hut on Stilts:12 ends here + +# Inside Trampoli’s Hut +# Let’s go inside to decorate: + + +# [[file:../../../projects/mud.org::*Inside Trampoli’s Hut][Inside Trampoli’s Hut:1]] +@teleport mp09 +# +@desc here = A homey room cluttered with drying |Yherbs|n, |Yjars|n of preserves, and natural made |Ytalismans|n. Even the table and chairs, covered in jars, bags and boxes, indicate the owner doesn't entertain much. Stairs lead up to a spacious loft with a bed. +# Inside Trampoli’s Hut:1 ends here + + + +# And describe leaving: + + +# [[file:../../../projects/mud.org::*Inside Trampoli’s Hut][Inside Trampoli’s Hut:2]] +@desc leave = From the doorway, you see the marshland below. +# Inside Trampoli’s Hut:2 ends here + +# [[file:../../../projects/mud.org::*Inside Trampoli’s Hut][Inside Trampoli’s Hut:3]] +@set leave/traverse_msg = "You open the door of the hut, and scramble down to the marsh below. Surely the ground the moist and soft to break your fall." +# Inside Trampoli’s Hut:3 ends here + + + +# And the details: + + +# [[file:../../../projects/mud.org::*Inside Trampoli’s Hut][Inside Trampoli’s Hut:4]] +@detail herbs = Clusters plants, a mixture of flowers and herbal leaves, all bound with twine and reeds, hang from spots around the room, fragranting the air. +# Inside Trampoli’s Hut:4 ends here + +# [[file:../../../projects/mud.org::*Inside Trampoli’s Hut][Inside Trampoli’s Hut:5]] +@detail jars = Sealed jars of fruits, vegetables, herbs and spices. +# Inside Trampoli’s Hut:5 ends here + +# [[file:../../../projects/mud.org::*Inside Trampoli’s Hut][Inside Trampoli’s Hut:6]] +@detail talismans = A wood |Ycarving|n, a painted |Yskull|n, and curiously shaped |Ysculpture|n made from bundles of reeds, give the impression of inducing luck while showing a level of respect for the land. +# Inside Trampoli’s Hut:6 ends here + + + +# For each talisman, we could create an object, but it wouldn’t be able to be taken, and instead of “can’t find skull”, we could give a better error message. + + +# [[file:../../../projects/mud.org::*Inside Trampoli’s Hut][Inside Trampoli’s Hut:7]] +@create/drop painted skull +#ve +@desc skull = Painted with arcane symbols, a wolf skull sports curving, corrugated goat horns. +# +@lock skull = get:false() +# +@set skull/get_err_msg = "It appears firmly attached to the wall where it hangs." +# +@set skull/hidden_tag = "hidden_skull" +# +@lock skull = view:tag(hidden_skull) +# Inside Trampoli’s Hut:7 ends here + + + +# Perhaps the carving is actually the maid. + + +# [[file:../../../projects/mud.org::*Inside Trampoli’s Hut][Inside Trampoli’s Hut:8]] +@create/drop wood carving;carvings;daemon;imp +# +@desc carving = While rustic, the carving shows exquisite craftsmanship and artistry in its rendering of an daemon creature, less sinister and more impish. +# +@lock carving = get:false() +# +@set carving/get_err_msg = "As you reach for the carving, it promptly runs away." +# +@set carving/hidden_tag = "hidden_carving" +# +@set carving/hidden_tag = "hidden_carving" +# +@lock carving = view:tag(hidden_carving) +# Inside Trampoli’s Hut:8 ends here + + + +# The reeds should give a subtle hint to something that could be /spoken/ aloud. + + +# [[file:../../../projects/mud.org::*Inside Trampoli’s Hut][Inside Trampoli’s Hut:9]] +@create/drop reed sculpture +# +@desc reed = The reed bundle, twisted and shaped in a six-spoke star, sports a blue tie. +# +@lock reed = get:false() +# +@set reed/get_err_msg = "It appears firmly attached to the wall where it hangs." +# +@detail tie = A blue ribbon with gold embroidery that spells: B U I O +# +@set reed/hidden_tag = "hidden_reed" +# +@lock reed = view:tag(hidden_reed) +# Inside Trampoli’s Hut:9 ends here + +# Torches +# The reed can be a [[file:~/src/moss-n-puddles/typeclasses/consumables.py::class Producer(Object):][producer]] that makes ten foot poles … needed to get into the hut. + + +# [[file:../../../projects/mud.org::*Torches][Torches:1]] +@create/drop a bucket of torches: typeclasses.consumables.Producer +# Torches:1 ends here + + + +# With a description: + + +# [[file:../../../projects/mud.org::*Torches][Torches:2]] +@desc bucket = A tall wood bucket full of resin-coated torches. +# Torches:2 ends here + + + +# We have to have the bucket describe what it /makes/: + + +# [[file:../../../projects/mud.org::*Torches][Torches:3]] +@set bucket/make_name = "torch" +# Torches:3 ends here + + + +# And a verb when they /get/ the consumable: + + +# [[file:../../../projects/mud.org::*Torches][Torches:4]] +@set bucket/make_verb = "take a" +# Torches:4 ends here + + + +# This one is optional as it defaults to Consumable: + +# [[file:../../../projects/mud.org::*Torches][Torches:5]] +@set bucket/make_class = "typeclasses.lightables.LightSource" +# Torches:5 ends here + + + +# And the bucket needs to know the /description/ of the Consumable, so that it can attach that: + + +# [[file:../../../projects/mud.org::*Torches][Torches:6]] +@set bucket/make_desc = "Made from marsh grass and reeds." +# Torches:6 ends here + + + +# How much is there when you pick them? + +# [[file:../../../projects/mud.org::*Torches][Torches:7]] +@set bucket/make_amount = 1 +# Torches:7 ends here + +# Trampoli the Witch +# Create a puppet of the lady that owns the hut. + + +# [[file:../../../projects/mud.org::*Trampoli the Witch][Trampoli the Witch:1]] +@create/drop Trampoli;old lady: typeclasses.puppets.Puppet +# Trampoli the Witch:1 ends here + + + +# Note that we give him a male gender: + + +# [[file:../../../projects/mud.org::*Trampoli the Witch][Trampoli the Witch:2]] +@set old lady/gender = 'female' +# Trampoli the Witch:2 ends here + + + +# Work around the =pose= bug: + + +# [[file:../../../projects/mud.org::*Trampoli the Witch][Trampoli the Witch:3]] +py bt = self.search('old lady'); bt.db.pose = 'playing with a deck of cards' +# Trampoli the Witch:3 ends here + +# [[file:../../../projects/mud.org::*Trampoli the Witch][Trampoli the Witch:5]] +@set old lady/_sdesc = "old lady" +# +@set old lady/pose_sleep = "napping soundly in bed on the upstairs loft" +# +@pose default old lady = playing with a deck of cards +# Trampoli the Witch:5 ends here + + + +# And a good description that I can rework: + + +# [[file:../../../projects/mud.org::*Trampoli the Witch][Trampoli the Witch:6]] +@desc old lady = A blue shawl, adorned with arcane symbols in gold embroidery, covers the head of this small woman. Her large nose protruding from under the shawl, gives the appearance of a blue bird with bright green eyes. +# Trampoli the Witch:6 ends here + + + +# And an unpuppeted, sleeping, description: + + +# [[file:../../../projects/mud.org::*Trampoli the Witch][Trampoli the Witch:7]] +@set old lady/desc_unpuppeted = "A blue shawl, adorned with arcane symbols in gold embroidery, covers the head of this small, napping woman. Her large nose protruding from under the shawl, as she snores loudly." +# Trampoli the Witch:7 ends here + +# [[file:../../../projects/mud.org::*Trampoli the Witch][Trampoli the Witch:8]] +@set old lady/arrive = "15 ;; gm You hear someone in the loft up the stairs stirring in their bed. ;; 15 ;; pose looking confused ;; emote The /me wakes up and says, \"What's all this then?\" ;; 5 ;; say Who are you, dearie? ;; 10 ;; say I'd think I have intruders in my home! ;; 1 ;; emote grabs her broom and with a sweeping motion from the stairs, you find yourself flying out the door! ;; teleport {3} = Mellow Marsh ;; 3 ;; gm/#457 You hear a voice coming from the hut, \"Scat!\" ;; pose sleeping in a bed up in the loft" +# Trampoli the Witch:8 ends here + # The Dock # The dock leads out into a strange sea. The break in the trees lets you see the sky. Looks like a nice place to relax. @@ -853,8 +1456,7 @@ Someone has set a nice chair for viewing. # How descriptive: # [[file:../../../projects/mud.org::*Chair][Chair:2]] -@desc chair = A cushioned wood chair of craftsmanship. -Looks good for being out in the weather. +@desc chair = A cushioned wood chair of craftsmanship.|/Looks good for being out in the weather. # Chair:2 ends here @@ -1341,7 +1943,7 @@ Looks good for being out in the weather. @set here/initial_desc = "You found a cozy, cornerless room." # Ravenous State -@set here/fire_out = "The room is dim, but you see large, overstuffed chairs placed by a dark fireplace in a large stone hearth. Perhaps you could light a fire?" +@set here/fire_out = "The room is dim, lit by a single candle in a sconce attached to the wall. You see large, overstuffed chairs placed by a dark fireplace in a large stone hearth. Perhaps you could light a fire?" # Hungry State @set here/fire_dim = "Large, overstuffed chairs sit invitingly close to the dimly glowing embers in the fireplace of a stone hearth." @@ -1404,138 +2006,6 @@ Looks good for being out in the weather. @set leave/traverse_msg = "You open the door and step outside..." # Inside:9 ends here -# Character: Dabbler -# My characters should be NPCs, so they can stick around if I’m not logged in. - - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:1]] -@create/drop Dabbler;gnome;old gnome: typeclasses.puppets.Puppet -# Character: Dabbler:1 ends here - - - -# Note that we give him a male gender: - - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:2]] -@set gnome/gender = 'male' -# Character: Dabbler:2 ends here - - - -# Work around the =pose= bug: - - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:3]] -py bt = self.search('gnome'); bt.db.pose = 'smiling at you' -# Character: Dabbler:3 ends here - - - -# And give him the powers he deserves: - - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:4]] -@perm gnome = Admin -# Character: Dabbler:4 ends here - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:5]] -@set gnome/_sdesc = "old gnome" -# -@set gnome/pose_default = "sleeping soundly in a large, overstuffed chair" -# Character: Dabbler:5 ends here - - - -# And a good description that I can rework: - - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:6]] -@desc gnome = A small, hunched old man with a gray vandyke and an eye twinkle. - -Spectacles perched precariously on the end of his hooked nose, wobble with his head. A jaunty crimson cap contrasts with his dark brown cloak. -# Character: Dabbler:6 ends here - - - -# And an unpuppeted, sleeping, description: - - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:7]] -@set gnome/desc_unpuppeted = "A small, hunched old man with a gray vandyke snoring soundly in one of the overstuffed chairs.\n\nSpectacles perched precariously on the end of his hooked nose, wobble with each breath. A jaunty crimson cap contrasts with his dark brown blanket covering his legs." -# Character: Dabbler:7 ends here - - - -# And we create a couple of objects, like a cap: - - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:8]] -@create cap -# -@desc cap = It's crimson. It's jaunty. -# -@give cap = gnome -# Character: Dabbler:8 ends here - - - -# And my staff: - - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:9]] -@create gnarled staff;staff: typeclasses.things.Wand -# -@desc staff = An oaken staff with a sprig of two leaves next to a swirling ball of crystal embedded near the top. -# -@give staff = gnome -# Character: Dabbler:9 ends here - - - -# And his special teacup: - - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:10]] -@create teacup;cup : typeclasses.drinkables.TeaCup -# -@desc teacup = A rustic teacup crafted from clay etched with leaves and runes, with an olive green and brown glaze. -# -@give teacup = gnome -# Character: Dabbler:10 ends here - - - -# And his spells: - - -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:11]] -@set gnome/disappear_msg = "After a raspberry sound, the gnome, Dabbler, disappears in a wisp of smoke." -# -@set gnome/reappear_msg = "<> mist appears...along with the smell of sulphur... ;; When the smoke clears, an old gnome <>." -# -@set gnome/magic_msg = "$You() $conj(<< strike ^ tap ^ hit ^ whack >>) the << floor ^ ground >> with $pron(your) << gnarled ^ old ^ magic ^ >> staff. ;; << Sparks ^ Colored lights ^ Flashes ^ Flares >> of |moctarine|n << appear ^ emerge ^ materialize >> as << the ^ >> magic << coalesces ^ blends >>..." -# Character: Dabbler:11 ends here - -# Pipe -# The pipe is little more than messages to the smoker and everyone else in the room. - - -# [[file:../../../projects/mud.org::*Pipe][Pipe:1]] -@create pipe: typeclasses.things.Pipe -# Pipe:1 ends here - - - -# And a description: - - -# [[file:../../../projects/mud.org::*Pipe][Pipe:2]] -@desc pipe = As tall as its owner with etchings of birds, leaves and magical symbols. -# -@give pipe = gnome -# Pipe:2 ends here - # Fireplace # And a fire in the fireplace is a type of /pet/, since we can feed it: @@ -1615,7 +2085,7 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # [[file:../../../projects/mud.org::*Magic 8 Ball][Magic 8 Ball:2]] -@desc ball = A glass orb with swirling mists << ^ of blue ^ the color of octarine ^ and stars>>; when clear, the glass reads, +@desc ball = A glass orb of billowing mist and patterns. |/When the << ^ swirling blue patterns ^ spinning octarine swirls ^ revolving stars>> clear, the glass reads, # Magic 8 Ball:2 ends here @@ -1627,6 +2097,8 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h @set ball/hidden_tag = "hidden_ball" # @lock ball = view:tag(hidden_ball) +# +drop ball # Magic 8 Ball:3 ends here # Books @@ -1770,20 +2242,273 @@ py here.search("trolley").do_bake() @set chairs/extra = "This feels << ^ very ^ quite>> <>.|n" # Chairs:5 ends here +# Character: Dabbler +# My characters should be NPCs, so they can stick around if I’m not logged in. + + +# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:1]] +@create/drop Dabbler;gnome;old gnome: typeclasses.puppets.Puppet +# Character: Dabbler:1 ends here + + + +# Note that we give him a male gender: + + +# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:2]] +@set gnome/gender = 'male' +# Character: Dabbler:2 ends here + + + +# Work around the =pose= bug: + + +# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:3]] +py bt = self.search('gnome'); bt.db.pose = 'smiling at you' +# Character: Dabbler:3 ends here + +# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:5]] +@set gnome/_sdesc = "old gnome" +# +@set gnome/pose_sleep = "sleeping soundly in a large, overstuffed chair" +# +pose gnome/default = smoking his pipe +# Character: Dabbler:5 ends here + + + +# And a good description that I can rework: + + +# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:6]] +@desc gnome = A small, hunched old man with messy blue hair, a gray vandyke and an eye twinkle.|/|/Spectacles perched precariously on the end of his hooked nose, wobble with his head. His bright crimson jacket contrasts with his dark brown cloak. +# Character: Dabbler:6 ends here + + + +# And an unpuppeted, sleeping, description: + + +# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:7]] +@set gnome/desc_unpuppeted = "A small, hunched old man with messy blue hair and a gray vandyke snoring soundly in one of the overstuffed chairs.|/|/Spectacles perched precariously on the end of his hooked nose, wobble with each breath. His bright crimson jacket contrasts with the dark brown blanket covering his legs." +# Character: Dabbler:7 ends here + + + +# And we create a couple of objects: + +# Like his special teacup: + + +# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:8]] +@create teacup;cup : typeclasses.drinkables.TeaCup +# +@desc teacup = A rustic teacup crafted from clay etched with leaves and runes, with an olive green and brown glaze. +# +@give teacup = gnome +# Character: Dabbler:8 ends here + +# Staff +# And my staff: + + +# [[file:../../../projects/mud.org::*Staff][Staff:1]] +@create gnarled staff;staff: typeclasses.things.Wand +# +@desc staff = An oaken staff with a sprig of two leaves next to a swirling ball of crystal embedded near the top. +# +@give staff = gnome +# Staff:1 ends here + + + +# And his spells that go with the staff: + + +# [[file:../../../projects/mud.org::*Staff][Staff:2]] +@set gnome/disappear_msg = "After a raspberry sound, the gnome, Dabbler, disappears in a wisp of smoke." +# +@set gnome/reappear_msg = "<> mist appears...along with the smell of sulphur... ;; When the smoke clears, an old gnome <>." +# +@set gnome/magic_msg = "$You() $conj(<< strike ^ tap ^ hit ^ whack >>) the << floor ^ ground >> with $pron(your) << gnarled ^ old ^ magic ^ >> staff. ;; << Sparks ^ Colored lights ^ Flashes ^ Flares >> of |moctarine|n << appear ^ emerge ^ materialize >> as << the ^ >> magic << coalesces ^ blends >>..." +# Staff:2 ends here + +# Pipe +# The pipe is little more than messages to the smoker and everyone else in the room. + + +# [[file:../../../projects/mud.org::*Pipe][Pipe:1]] +@create pipe: typeclasses.things.Pipe +# Pipe:1 ends here + + + +# And a description: + + +# [[file:../../../projects/mud.org::*Pipe][Pipe:2]] +@desc pipe = As tall as its owner with etchings of birds, leaves and magical symbols. +# +@give pipe = gnome +# Pipe:2 ends here + +# Secret Room +# Pulling on a candle opens a secret staircase! + + +# [[file:../../../projects/mud.org::*Secret Room][Secret Room:1]] +@dig Secret Room;mp10:typeclases.rooms_dark.DarkRoom = dark stairs behind bookcase;stairs,up the stairs;stairs +# Secret Room:1 ends here + + + +# Look and traverse: + + +# [[file:../../../projects/mud.org::*Secret Room][Secret Room:2]] +@desc stairs = Behind the protruding bookcase, you see a staircase leading down into the darkness. +# +@set stairs/traverse_msg = "You carefully creep down the stairs behind the bookcase, lit by the candle in its holder. You hear the bookcase shut, leaving you in darkness..." +# Secret Room:2 ends here + +# Sconce +# The Candle holder must be both an Opener (with a =do_pull= method) and a Producer (making long-lasting candles). + + +# [[file:../../../projects/mud.org::*Sconce][Sconce:1]] +@create/drop sconce;candle holder: typeclasses.consumables.Producer +# Sconce:1 ends here + +# [[file:../../../projects/mud.org::*Sconce][Sconce:2]] +@desc sconce = A black iron sconce holding a single lit candle. On closer examination, the bottom of this fixture appears to have a hinge? +# Sconce:2 ends here + +# [[file:../../../projects/mud.org::*Sconce][Sconce:3]] +@set sconce/make_name = "candle" +# Sconce:3 ends here + + + +# And a verb when they /get/ the consumable: + + +# [[file:../../../projects/mud.org::*Sconce][Sconce:4]] +@set sconce/make_verb = "take the candle, but another appears in its place!" +# Sconce:4 ends here + + + +# This one is optional as it defaults to Consumable: + +# [[file:../../../projects/mud.org::*Sconce][Sconce:5]] +@set sconce/make_class = "typeclasses.lightables.LightSource" +# Sconce:5 ends here + + + +# And the sconce needs to know the /description/ of the Consumable, so that it can attach that: + + +# [[file:../../../projects/mud.org::*Sconce][Sconce:6]] +@set sconce/make_desc = "Curious." +# Sconce:6 ends here + + + +# How much is there when you pick them? + +# [[file:../../../projects/mud.org::*Sconce][Sconce:7]] +@set sconce/make_amount = 1 +# Sconce:7 ends here + +# Pulling Sconce +# Temporarily move the exit into the room. + +# Reset things: + + +# [[file:../../../projects/mud.org::*Pulling Sconce][Pulling Sconce:1]] +@teleport/tonone stairs +# Pulling Sconce:1 ends here + +# Inside the Secret Room + + +# [[file:../../../projects/mud.org::*Inside the Secret Room][Inside the Secret Room:1]] +@teleport mp10 +# +@desc here = A curious little room containing a stool next to a table covered with jars, bottles, glass pipes and other alchemical equipment. +# Inside the Secret Room:1 ends here + + + +# And details to make this room feel intentional as well. + + +# [[file:../../../projects/mud.org::*Inside the Secret Room][Inside the Secret Room:2]] +@detail table = Made from a black wood. Dusty on the edges. +# Inside the Secret Room:2 ends here + + + +# Are the equipment stuff we could =use=? + + +# [[file:../../../projects/mud.org::*Inside the Secret Room][Inside the Secret Room:3]] +@detail equipment = pipes, beakers, tubes ... +# Inside the Secret Room:3 ends here + + + +# Should the jars be objects that could be picked up? + + +# [[file:../../../projects/mud.org::*Inside the Secret Room][Inside the Secret Room:4]] +@detail jars = Hrm. Newt eyes, bat wings... interesting contents. +# Inside the Secret Room:4 ends here + + + +# Bottles same as jars? + + +# [[file:../../../projects/mud.org::*Inside the Secret Room][Inside the Secret Room:5]] +@detail bottles = Four bottles contain clear liquids and are labeled: DA, KI, ON, and SU +# Inside the Secret Room:5 ends here + +# Stool +# A stool to sit while working + +# [[file:../../../projects/mud.org::*Stool][Stool:1]] +@create/drop stool:typeclasses.sittables.Sittable +# Stool:1 ends here + + + +# How descriptive: + +# [[file:../../../projects/mud.org::*Stool][Stool:2]] +@desc stool = A place to sit while synthesizing experiments. +# Stool:2 ends here + + + +# Can’t steal this stool either: + +# [[file:../../../projects/mud.org::*Stool][Stool:3]] +@lock stool = get:false() +# Stool:3 ends here + +# [[file:../../../projects/mud.org::*Stool][Stool:4]] +@set stool/get_err_msg = "Stop try to steal everything not nailed down." +# Stool:4 ends here + # Bugs -# And we need to update the Knocker to get the “knock” command going: - - -# [[file:../../../projects/mud.org::*Bugs][Bugs:1]] -@update knocker = typeclasses.things.Knocker -# Bugs:1 ends here - - - # And now that we are done, say it: -# [[file:../../../projects/mud.org::*Bugs][Bugs:2]] +# [[file:../../../projects/mud.org::*Bugs][Bugs:1]] say I have finished this, the first version, of my creation. -# Bugs:2 ends here +# Bugs:1 ends here