diff --git a/typeclasses/objects.py b/typeclasses/objects.py index 9f0c081..a64b8e3 100755 --- a/typeclasses/objects.py +++ b/typeclasses/objects.py @@ -563,14 +563,14 @@ class Listener: c.adjust_coins(int(m.group(1))) return - m = match(r"score_all ([a-z_]+)", cmd) + m = match(r"scoring_all ([a-z_]+)", cmd) if m: tick = Scores[m.group(1)] for c in self.characters_here(puppets=True): c.score(tick) return - m = match(r"score ([a-z_]+) *?( to|=)? *([a-z_]+)", cmd) + m = match(r"scoring ([a-z_]+) *?( to|=)? *([a-z_]+)", cmd) if m: tick = Scores[m.group(1)] c = self.search(m.group(3)) diff --git a/world/adventure1.ev b/world/adventure1.ev index 6af1e0e..4779d8a 100644 --- a/world/adventure1.ev +++ b/world/adventure1.ev @@ -1,4 +1,4 @@ -# The Mist Horn + # The mist horn calls the boat to the character, no matter where they are. We create one regularly in the witch’s hut: @@ -23,7 +23,7 @@ py timed_script = evennia.create_script(key="Create Horns", @set mp06/arrive = "30 ;; gm Did you hear that? Sounds like a distant horn ... Perhaps the wind. ;; gm You think you saw a boat out on the sea ... but maybe not. " # The Mist Horn:2 ends here -# The Boat + # When the boat is docked, we should have a special /state/ to describe it: @@ -164,7 +164,7 @@ py timed_script = evennia.create_script(key="boat reset", autostart=True) # The Boat:15 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. @@ -252,7 +252,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? @@ -361,7 +361,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. @@ -409,7 +409,7 @@ light torch @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]]: @@ -469,10 +469,10 @@ light torch # [[file:../../../projects/mud-adventure.org::*Puzzle Three][Puzzle Three:6]] -@set obelisk/say = { r".*\b[Ww]ater\b": "gm Upon uttering that phrase, sparks of octarine magic and mist appear on the opening on the obelisk. ;; gm A blue medal materializes in the opening. You inspect it, wondering if this is the great prize you've heard about. ;; gift_all blue ;; gm You also notice a secret door! ;; tag_all hidden_antechamber_door" } +@set obelisk/say = { r".*\b[Ww]ater\b": "gm Upon uttering that phrase, sparks of octarine magic and mist appear on the opening on the obelisk. ;; scoring_all blue_medal ;; gm A blue medal materializes in the opening. You inspect it, wondering if this is the great prize you've heard about. ;; gift_all blue ;; gm You also notice a secret door! ;; tag_all hidden_antechamber_door" } # Puzzle Three:6 ends here -# Puzzle Four + # Another puzzle, another room: @@ -526,7 +526,7 @@ light torch # [[file:../../../projects/mud-adventure.org::*Puzzle Four][Puzzle Four:6]] -@set gr04/arrive = "4 ;; gm ... You hear a distant dice roll ... ;; gm With your excellent perception, you notice some gold coins hidden in the floor's dust. ;; gm You don't hesitate to relocate those to your pouch. ;; coin_all 10 " +@set here/arrive = "4 ;; gm ... You hear a distant dice roll ... ;; gmm {0} = With your excellent perception, you notice some gold coins hidden in the floor's dust. ;; gma {0} = $You() $conj(relocate) some gold coins on the floor to $pron(your) pouch. ;; coin 10 to {0}" # Puzzle Four:6 ends here @@ -612,3 +612,20 @@ light torch # [[file:../../../projects/mud-adventure.org::*Puzzle Four][Puzzle Four:14]] @set ornate door/traverse_msg = "You open the door, and see that the door exits next to the statue..." # Puzzle Four:14 ends here + + +# Evocative. + +# [[file:../../../projects/mud-adventure.org::*Stone Island][Stone Island:1]] +@dig/teleport Stone Island;gr05:typeclasses.rooms_weather.TimeWeatherRoom +# Stone Island:1 ends here + + + +# Make sure that it can have a boat state: + + +# [[file:../../../projects/mud-adventure.org::*Stone Island][Stone Island:2]] +@desc here = Up from the shore, stands six |Ystones|n arranged in a circle. The fragrant breeze creates eddies of leaves that swirl around the stones...and your feet. +$state(boat, A large leaf bobs invitingly in the surf.) +# Stone Island:2 ends here diff --git a/world/test-run.exp b/world/test-run.exp index 67053ff..9b2e75d 100755 --- a/world/test-run.exp +++ b/world/test-run.exp @@ -969,6 +969,9 @@ set timeout 240 expectit "gives you a pipe" set timeout 20 +send "sit\n" +expectit "You sit on the long log" + send "copse\n" expectit "Bedroom" @@ -1055,6 +1058,9 @@ expectit "The black cauldron is already empty." send "up\n" expectit "Cozy House" +send "score\n" +expectit "Total:" + send "give potion to gnome\n" expectit "You give a potion" diff --git a/world/version1.ev b/world/version1.ev index 56b10d4..1773244 100644 --- a/world/version1.ev +++ b/world/version1.ev @@ -1,4 +1,4 @@ -# Create an Avatar + # The first character is special, as it can really /own/ the server. I don’t use it except to build the world, otherwise, I will puppet a creation. # An avatar in the original sense of a housing for a god-like entity. @@ -27,7 +27,7 @@ py self.db.pose = True pose looking awesome # Create an Avatar:4 ends here -# The Forest + # Rename the Limbo (or starting place) with the name *Grove of the Matriarchs*. Note the term =mp01= as a global label that matches my map. My original term for “forest” is too general, as it sounds like the place should be /named/ with some sort of title. @@ -70,7 +70,7 @@ pose looking awesome @detail flower;flowers = Beautiful, but giant flowers look down on you and nod a friendly greeting. # The Forest:6 ends here -# Puddle + # With my name, I need to have an object to go with it. @@ -98,7 +98,7 @@ pose looking awesome @set puddle/get_err_msg = "As the water slips through your fingers, you realize the apt metaphor of attempting to grasp at your youth." # Puddle:3 ends here -# Sticks + # I will have a script auto generate the sticks on a regular basis, but for now, let’s just make one that I can drop. @@ -111,7 +111,7 @@ py timed_script = evennia.create_script(key="Create Sticks", attributes=[("destination", here)] ) # Sticks:1 ends here -# Guest Book + # Players can leave messages in this book. We’ll see how long I want to leave this. @@ -156,7 +156,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @detail well;ink well = The well appears to be little more than a depression on the back of the mushroom's cap. # Guest Book:4 ends here -# Boulder + # More details about the room that describes aspects of the boulder in the =desc= above. First, the symbol: # [[file:../../../projects/mud.org::*Boulder][Boulder:1]] @@ -230,7 +230,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @set boulder/traverse_msg = "You grab hold of some the |Yvines|n and ivy and pick your way up the boulder from one hold to another... Hrm, these vines would make a great rope." # Boulder:9 ends here -# Lower Vines + # In case they attempt to get vines here: # Let’s make a nice spot to sit down on: @@ -278,7 +278,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @set vines/push_msg = "That doesn't seem to do much." # Lower Vines:5 ends here -# Top of Boulder + # Let’s jump to the top of the boulder to proceed: @@ -318,7 +318,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @set climb/traverse_msg = "You crawl backwards, feeling with your foot for a hold. Got it! Then another one...hoping the vines and the moss' rhizoids hold..." # Top of Boulder:6 ends here -# Moss + # Let’s make a nice spot to sit down on: # [[file:../../../projects/mud.org::*Moss][Moss:1]] @@ -366,7 +366,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @set moss/pull_msg = "The moss is a bryophyte, and as such, has attached itself firmly to boulder by rhizoids. So pulling on it doesn't do much good." # Moss:6 ends here -# Upper 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. @@ -447,7 +447,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @set vines/push_msg = "You push the vines out of the way showing the rock boulder below. Perhaps you should |gget|n these and make something with them." # Upper Vines:9 ends here -# Gigglecap Mushrooms + # Part of the [[Potions and their Ingredients][Alchemist Path]], we use /gigglecaps/ to create a [[Laughing Potion]]. @@ -476,13 +476,13 @@ py timed_script = evennia.create_script(key="Create Sticks", # @set mushrooms/make_amount = 1 # -@set mushrooms/make_spell_msgs = "10 ;; $You() $conj(<< giggle ^ chuckle ^ chortle >>) out loud." +@set mushrooms/make_spell_msgs = "10 ;; $You() << $conj(giggle) ^ $conj(chuckle) ^ $conj(chortle) >> out loud." # # And we can't see them until we are an alchemist: @lock mushrooms = view:tag(alchemist) # Gigglecap Mushrooms:1 ends here -# Field + # To the east, let’s make a nice meadow. Start at the Forest: # [[file:../../../projects/mud.org::*Field][Field:1]] @@ -566,7 +566,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @detail flowers;yellow flowers = "Aren't daffodils just flowers with big ol' schnozzes?" # Field:10 ends here -# Waterfall + # This is special, in that it should be hidden: @@ -601,7 +601,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @detail pool = A pool of cool, clear water. # Waterfall:5 ends here -# Fizzy Water + # The waterfall causes the water in the stream to be /fizzy/, to be part of the [[Potions and their Ingredients][Alchemist Path]] to create a [[Laughing Potion]]. @@ -620,10 +620,10 @@ py timed_script = evennia.create_script(key="Create Sticks", # @set stream/fill_desc = "sparkling water from waterfall turbulence." # -@set stream/fill_msgs = ["$You() $conj(<< get ^ kneel >>) down, and $conj(fill) $pron(your) {2} with sparkling efforvesence.", "$You() $conj(<< get ^ kneel >>) down, and $conj(put) $pron(your) {2} in the cool water, filling it."] +@set stream/fill_msgs = ["$You() << $conj(get) ^ $conj(kneel) >> down, and $conj(fill) $pron(your) {2} with sparkling efforvesence.", "$You() << $conj(get) ^ $conj(kneel) >> down, and $conj(put) $pron(your) {2} in the cool water, filling it."] # Fizzy Water:1 ends here -# Tickleweed + # Part of the [[Potions and their Ingredients][Alchemist Path]], we use /tickleweed grass/ to create a [[Laughing Potion]]. @@ -656,7 +656,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @lock tickleweed = view:tag(alchemist) # Tickleweed:1 ends here -# The Lair of the Beast + # To create a place for our big, hairy beast to sleep, first jump to the Meadow: # [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:1]] @@ -733,7 +733,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @set leave/traverse_msg = "You leave the dark cave and pass behind the waterfall for the meadow beyond." # The Lair of the Beast:9 ends here -# Mattress + # Create a mattress you can sit on (and maybe /push/ to get to a secret door): @@ -793,7 +793,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @set mattress/hidden_tag = "hidden_mattress" # Mattress:6 ends here -# Dream Mushrooms + # Part of the [[Potions and their Ingredients][Alchemist Path]], we use /dream mushrooms/ to create a [[Trippy Potion]]. # #+begin_quote @@ -824,7 +824,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @lock mushrooms = view:tag(alchemist) # Dream Mushrooms:1 ends here -# Beast + # And we create the Big, Hairy Beast: @@ -1017,7 +1017,7 @@ 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:20 ends here -# Mellow Marsh + # The river from the [[Field]] flows into a marsh: @@ -1120,7 +1120,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @detail mud = Pretty brown and sticky. # Mellow Marsh:15 ends here -# Muddy Water + # As a future idea of making potions, we can collect /muddy water/, which needs to be turned to wine. @@ -1139,10 +1139,10 @@ py timed_script = evennia.create_script(key="Create Sticks", # @set river/fill_desc = "muddy water from the marsh." # -@set river/fill_msgs = ["$You() $conj(<< get ^ kneel >>) down, and $conj(fill) $pron(your) {2} with the muddy water."] +@set river/fill_msgs = ["$You() << $conj(get) ^ $conj(kneel) >> down, and $conj(fill) $pron(your) {2} with the muddy water."] # Muddy Water:1 ends here -# Purple Heron + # Create a puppet of the bird hunting frogs and pixies. :-D @@ -1176,63 +1176,54 @@ py timed_script = evennia.create_script(key="Create Sticks", -# 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]] +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:4]] @set heron/article = "The" -# Purple Heron:5 ends here +# Purple Heron:4 ends here # And a good description that I can rework: -# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:6]] +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:5]] @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 +# Purple Heron:5 ends here # Since it is an NPC it has certain mutterings it can do: -# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:7]] +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:6]] @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 +# Purple Heron:6 ends here -# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:8]] +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:7]] @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 +# Purple Heron:7 ends here # And add the absent-minded singing script: -# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:9]] +# [[file:../../../projects/mud.org::*Purple Heron][Purple Heron:8]] @script heron = typeclasses.scripts.Muttering -# Purple Heron:9 ends here +# Purple Heron:8 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. @@ -1289,7 +1280,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @set reeds/make_amount = 1 # Ten-foot Poles:8 ends here -# Pixie Dust + # Part of the [[Potions and their Ingredients][Alchemist Path]], we use /pixie dust/ to create a [[Trippy Potion]]. # We put this quote in the book: @@ -1321,9 +1312,6 @@ py timed_script = evennia.create_script(key="Create Sticks", @lock pixie dust = view:tag(alchemist) # Pixie Dust:1 ends here -# Trampoli’s Hut on Stilts - - # [[file:../../../projects/mud.org::*Trampoli’s Hut on Stilts][Trampoli’s Hut on Stilts:1]] @teleport mp08 # @@ -1424,7 +1412,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @teleport/tonone rope-bound hut # Trampoli’s Hut on Stilts:12 ends here -# Inside Trampoli’s Hut + # Let’s go inside to decorate: @@ -1460,7 +1448,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @detail jars = Sealed jars of fruits, vegetables, herbs and spices. # Inside Trampoli’s Hut:5 ends here -# Jars + # Every time we look at a jar, we see something else … that we can’t take. This creates ambiance without adding too much complexity? @@ -1520,7 +1508,7 @@ py timed_script = evennia.create_script(key="Create Sticks", ) # Jars:4 ends here -# Herbs + # Like the [[*Jars][Jars]], the herbs return a different response each time they are viewed. @@ -1577,7 +1565,7 @@ py timed_script = evennia.create_script(key="Create Sticks", ) # Herbs:4 ends here -# Talismans + # To give some character, we create some interesting art that decorates this hut. @@ -1585,7 +1573,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @detail talismans;talisman = 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. # Talismans:1 ends here -# Horned Wolf Skull + # 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. @@ -1603,7 +1591,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @lock skull = view:tag(hidden_wolf_skull) # Horned Wolf Skull:1 ends here -# Demon Carving + # Perhaps the carving is actually the maid or something that could give hints. @@ -1621,7 +1609,7 @@ py timed_script = evennia.create_script(key="Create Sticks", @lock carving = view:tag(hidden_demon_carving) # Demon Carving:1 ends here -# Reed Sculpture + # The reeds should give a subtle hint to something that could be /spoken/ aloud. @@ -1655,7 +1643,7 @@ py timed_script = evennia.create_script(key="Create Horns", attributes=[("destination", here)] ) # Reed Sculpture:3 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. @@ -1724,7 +1712,7 @@ py timed_script = evennia.create_script(key="Create Horns", @set bucket/make_amount = 1 # Torches:8 ends here -# Trampoli the Witch + # Create a puppet of the lady that owns the hut. @@ -1747,12 +1735,10 @@ py timed_script = evennia.create_script(key="Create Horns", # [[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' +@py bt = self.search('old lady'); bt.sdesc.add('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 @@ -1785,7 +1771,7 @@ py bt = self.search('old lady'); bt.db.pose = 'playing with a deck of cards' @set old lady/arrive = "45 ;; gm You hear someone in the loft up the stairs stirring in their bed. ;; 55 ;; 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 an intruder in my home! ;; 1 ;; emote grabs her broom and with a sweeping motion from the stairs, sends her intruder flying out the door! ;; teleport {3} = Mellow Marsh ;; 3 ;; gm/#457 You hear a voice coming from the hut, \"Scat!\" ;; emote heads up the stairs to bed. ;; pose sleeping in a bed up in the loft" # Trampoli the Witch:8 ends here -# Lazy 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. # Return to the Forest: @@ -1863,7 +1849,7 @@ Someone has set a nice |Ychair|n for viewing. @desc north = This path leads into the forest of collosal trees. # Lazy Dock:9 ends here -# Lavender Sea + # We’ll get ready for making potions by allowing one to collect water from _all_ the places, like the salty sea: @@ -1885,7 +1871,7 @@ Someone has set a nice |Ychair|n for viewing. @set sea/fill_msgs = ["$You() $conj(reach) down from the dock, and $conj(fill) $pron(your) {2} with the << salty ^ lavender ^ fragrant >> water."] # Lavender Sea:1 ends here -# Chair + # A nice chair to sit on the dock by the bay, watching the clouds as they drift away. # [[file:../../../projects/mud.org::*Chair][Chair:1]] @@ -1910,7 +1896,7 @@ Someone has set a nice |Ychair|n for viewing. @set chair/get_err_msg = "It's way too heavy for you to lift." # Chair:3 ends here -# Fishing Pole + # It we are going to sit on a chair by the dock, why not go fishing? # [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:1]] @@ -1944,7 +1930,7 @@ Someone has set a nice |Ychair|n for viewing. @detail hook;bait = One of those shiny lures, made from gold coins. Curiouser. Seems you don't need to bait this hook. # Fishing Pole:5 ends here -# Sign + # Need to make the fishing pole “stay” at the Dock. Maybe with a message about sticking around for the next person. @@ -1978,14 +1964,14 @@ Someone has set a nice |Ychair|n for viewing. @set sign/get_err_msg = "This granny knot holding the sign to the chair is serious. You can't take it." # Sign:4 ends here -# Sandy Shore + # Could we extend the sea from the [[file:mud.org::*The Dock][The Dock]] down a shore: # [[file:../../../projects/mud.org::*Sandy Shore][Sandy Shore:1]] @teleport/quiet mp06 # -@dig Shore;mp14 :typeclasses.rooms_weather.TimeWeatherRoom = south along shore;shore;south;s,north to dock;north;n;dock +@dig Shore;mp15 :typeclasses.rooms_weather.TimeWeatherRoom = south along shore;shore;south;s,north to dock;north;n;dock # Sandy Shore:1 ends here @@ -2050,7 +2036,7 @@ Someone has set a nice |Ychair|n for viewing. @detail shack = Standing crookedly at the edge of the sandy shore, this shack's weathered planks, bleached by the salty mist, imparts a ghostly appearance. The roof, adorned with seashells and driftwood, appears to be a patchwork of nature's treasures, inviting curious souls to uncover the secrets hidden within. # Sandy Shore:8 ends here -# Sand + # Part of the [[Potions and their Ingredients][Alchemist Path]], we use sand as an ingredient in a potion we want to make. @@ -2068,7 +2054,7 @@ Someone has set a nice |Ychair|n for viewing. @lock sand = view:tag(hidden_sand) # Sand:1 ends here -# Pine Flowers + # Part of the [[Potions and their Ingredients][Alchemist Path]], we use /pine flowers/ to create a potion TBD, and feed the stoat in Dabbler’s House. @@ -2088,7 +2074,7 @@ Someone has set a nice |Ychair|n for viewing. @lock pine = view:tag(alchemist) # We want the user to be able to "look pine" as a detail? # Pine Flowers:1 ends here -# Sign + # We make the sign as an “object” for others to read: @@ -2102,7 +2088,7 @@ Someone has set a nice |Ychair|n for viewing. @lock sign = get:false() # Sign:1 ends here -# Salty Shack + # Let’s keep this pretty empty. @@ -2156,7 +2142,7 @@ Someone has set a nice |Ychair|n for viewing. @set door/traverse_msg = "You open the door and step out on the sand, closing the door behind you." # Salty Shack:5 ends here -# Grotto + # Return to the forest: @@ -2249,7 +2235,7 @@ Someone has set a nice |Ychair|n for viewing. @detail fern;ferns = Sword ferns rattling sabers against the wards from the Maiden Hairs' flailing their fronds. # Grotto:11 ends here -# Berry Bush + # The berry bush is a [[file:~/src/moss-n-puddles/typeclasses/consumables.py::class Producer(Object):][producer]] that makes /berries/, which is something to eat and use to feed the wildlife. @@ -2337,7 +2323,7 @@ Someone has set a nice |Ychair|n for viewing. #"Those were <>." # Berry Bush:12 ends here -# Spring Water + # Part of the [[Potions and their Ingredients][Alchemist Path]], we use spring water to create a [[Trippy Potion]]. @@ -2356,10 +2342,10 @@ Someone has set a nice |Ychair|n for viewing. # @set stream/fill_desc = "fresh spring water." # -@set stream/fill_msgs = ["$You() $conj(<< get ^ kneel >>) down, and $conj(fill) $pron(your) {2} with the << spring ^ fresh ^ refreshing >> water.", "$You() $conj(<< get ^ kneel >>) down, and $conj(put) $pron(your) {2} in the cool water, filling it."] +@set stream/fill_msgs = ["$You() << $conj(get) ^ $conj(kneel) >> down, and $conj(fill) $pron(your) {2} with the << spring ^ fresh ^ refreshing >> water.", "$You() << $conj(get) ^ $conj(kneel) >> down, and $conj(put) $pron(your) {2} in the cool water, filling it."] # Spring Water:1 ends here -# Knocker + # The knocker has the ability to make the door “open” using [[https://www.evennia.com/docs/latest/api/evennia.objects.objects.html][on_traverse]] hooks? # Most of the work of the /knocker/ is in the Python code: @@ -2430,7 +2416,7 @@ Someone has set a nice |Ychair|n for viewing. @set here/knock_err_msg = "This door knocker is defective, as it doesn't have a ring to...er, do the knockin'." # Knocker:8 ends here -# Ring + # Since we can remove the ring, let’s create it: @@ -2492,7 +2478,7 @@ Someone has set a nice |Ychair|n for viewing. @teleport/quiet ring = knocker # Ring:7 ends here -# Cozy House + # Add the Python /special-ness/ for [[file:~/src/moss-n-puddles/typeclasses/rooms.py::class DabblersRoom(Room):][this room]]: @@ -2500,7 +2486,7 @@ Someone has set a nice |Ychair|n for viewing. @dig Cozy House;mp03: typeclasses.rooms.DabblersRoom = red door;door;inside,outside;leave # Cozy House:1 ends here -# Red Door + # The door description should match the artwork on the website: # [[file:../../../projects/mud.org::*Red Door][Red Door:1]] @@ -2539,7 +2525,7 @@ Someone has set a nice |Ychair|n for viewing. @set door/hidden_tag = "hidden_knocker" # Red Door:5 ends here -# Inside + # Fix the inside of the “House”: @@ -2610,7 +2596,7 @@ Someone has set a nice |Ychair|n for viewing. @set here/arrive = "45 ;; gm The rain << patters ^ chatters ^ drums >> against a window << sill ^ pane >>. Nice to be << indoors ^ inside >>." # Inside:6 ends here -# Tapestry Story + # The tapestry should tell our /creation myth/. # [[file:../../../projects/mud.org::*Tapestry Story][Tapestry Story:1]] @@ -2629,7 +2615,7 @@ Someone has set a nice |Ychair|n for viewing. @detail whispering = This curious aspect in the |Ytapestry|n seems ... odd. # Tapestry Story:1 ends here -# Fireplace + # And a fire in the fireplace is a type of /pet/, since we can feed it: # [[file:../../../projects/mud.org::*Fireplace][Fireplace:1]] @@ -2675,7 +2661,7 @@ Someone has set a nice |Ychair|n for viewing. @detail picture = Above the |Yfireplace|n is a large, somewhat abstract |Ypainting|n stretching its arm-like branches with shadowing that looks like a yawn. # Fireplace:6 ends here -# Wood Rack + # Need a way to produce wood for the fireplace. @@ -2750,7 +2736,7 @@ Someone has set a nice |Ychair|n for viewing. @lock wood rack = view:tag(hidden_woodrack) # Wood Rack:9 ends here -# Knickknacks + # What sort of non-books do we want to look at? @@ -2769,7 +2755,7 @@ Someone has set a nice |Ychair|n for viewing. @set trinkets/get_err_msg = "While interesting, perhaps you shouldn't steal Dabbler's personal collection." # Knickknacks:2 ends here -# Magic 8 Ball + # One trinket we might create to give to people as a souvenir. @@ -2799,7 +2785,7 @@ Someone has set a nice |Ychair|n for viewing. drop ball # Magic 8 Ball:3 ends here -# Bookshelf + # Since we mentioned shelves of books, we should create a Producer that makes a random book. @@ -2816,7 +2802,7 @@ drop ball @desc books = Shelves at various angles embellish the walls of this small, cozy room. Leatherbound books weigh down each shelf, while some stacks of books support other shelves. # Bookshelf:2 ends here -# Chairs + # And [[file:~/src/moss-n-puddles/typeclasses/sittables.py::class Sittables(Sittable):][the chairs]] is a /plural/ location to sit, allowing anyone to sit down. @@ -2862,7 +2848,7 @@ drop ball @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. @@ -2885,12 +2871,10 @@ drop ball # [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:3]] -py bt = self.search('gnome'); bt.db.pose = 'smiling at you' +py bt = self.search('gnome'); bt.sdesc.add('old 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 @@ -2929,7 +2913,7 @@ pose gnome/default = smoking his pipe @give teacup = gnome # Character: Dabbler:8 ends here -# Staff + # And my staff: @@ -2951,10 +2935,10 @@ pose gnome/default = smoking his pipe # @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 >>..." +@set gnome/magic_msg = "$You() << $conj(strike) ^ $conj(tap) ^ $conj(hit) ^ $conj(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. @@ -2973,7 +2957,7 @@ pose gnome/default = smoking his pipe @give pipe = gnome # Pipe:2 ends here -# Journal + # The pipe is little more than messages to the smoker and everyone else in the room. @@ -3003,7 +2987,7 @@ pose gnome/default = smoking his pipe @give journal = gnome # Journal:3 ends here -# Stoat + # Need an interesting creature that likes to sleep by the fire, and perhaps give hints to the workings inside. # - feed :: ignores all food. @@ -3164,16 +3148,16 @@ pose gnome/default = smoking his pipe -# Trigger some events: +# Trigger some events … which can’t work at the moment, since a Pet is not a Puppet … yet: # [[file:../../../projects/mud.org::*Stoat][Stoat:18]] -@set stoat/arrive = "5 ;; gm A sleeping << wee ^ >> beastie, opens one curious eye to see who arrived." +@set stoat/arrive = "5 ;; gma {0} = A sleeping << wee ^ >> beastie, opens one curious eye to look at $you()." # # @set stoat/sit = "3 ;; gm A sleeping << wee ^ >> beastie, opens one curious eye to see who arrived." # Stoat:18 ends here -# Kitchen + # Better place to put the tea and scones. @@ -3233,7 +3217,7 @@ pose gnome/default = smoking his pipe @detail scone;scones = A scones look tempting. Perhaps no one will miss one... # Kitchen:7 ends here -# Cabinets and Counter-tops + # The Trolley [[file:~/src/moss-n-puddles/typeclasses/consumables.py::class Producer(Object):][produces]] teacups and random scones, which, like the [[Berry Trolley][berries]] can be eaten or fed to the wildlife. @@ -3257,7 +3241,7 @@ pose gnome/default = smoking his pipe py here.search("cabinet").do_bake() # Cabinets and Counter-tops:3 ends here -# Tea Service + # The “room” gives the teacups, and the “teapot” fills the cups, so we just need descriptions: @@ -3288,7 +3272,7 @@ py here.search("cabinet").do_bake() @set teapot/get_err_msg = "You don't need to carry it around to make tea." # Tea Service:3 ends here -# Secret Room + # Pulling on a candle opens a secret staircase! @@ -3309,7 +3293,7 @@ py here.search("cabinet").do_bake() @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 behind you." # 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). @@ -3388,7 +3372,7 @@ py here.search("cabinet").do_bake() @set sconce/make_amount = 1 # Sconce:9 ends here -# Pulling Sconce + # Temporarily move the exit into the room. @@ -3405,7 +3389,7 @@ py here.search("cabinet").do_bake() @teleport/tonone stairs behind bookcase # Pulling Sconce:2 ends here -# Inside the Secret Room + # Time to create the secret lab, the *Secret Room*. @@ -3465,7 +3449,7 @@ py here.search("cabinet").do_bake() @detail tools = A set of finely crafted tools lies neatly arranged on a velvet cloth: a pair of tweezers for handling delicate ingredients, a small scalpel for precise cutting, and a set of measuring spoons made from silver, each engraved with different symbols representing the elements. # Inside the Secret Room:8 ends here -# Jars + # Can jars be a producer that returns a random jar with a “content”? # Every time we look at a jar, we see something else … that we can’t take. This creates ambiance without adding too much complexity? @@ -3532,7 +3516,7 @@ py here.search("cabinet").do_bake() ) # Jars:4 ends here -# Stool + # A stool to sit while working # [[file:../../../projects/mud.org::*Stool][Stool:1]] @@ -3563,7 +3547,7 @@ py here.search("cabinet").do_bake() @set stool/get_err_msg = "Stop trying to steal everything not nailed down." # Stool:4 ends here -# Grimoire + # A mystic book of potions can add a new dimension to the game. @@ -3612,7 +3596,7 @@ py here.search("cabinet").do_bake() @set grimoire/prefix = "Undoing the brass clasp that bind the old leather book, you open to page one and begin reading the elegant calligraphy..." # Grimoire:5 ends here -# Cauldron + # The cauldron should have a special =look= so a character knows what ingredients they added, and the follow commands: # - =empty= … the imp will empty the contents @@ -3646,7 +3630,7 @@ py here.search("cabinet").do_bake() @lock cauldron = get:false() # Cauldron:3 ends here -# Shelf of Bottles + # The table is a producer of /bottles/. @@ -3685,7 +3669,7 @@ py here.search("cabinet").do_bake() @set shelf/make_amount = 1 # Shelf of Bottles:4 ends here -# Imp + # Every secret alchemical lab should have an Imp familiar. @@ -3708,12 +3692,10 @@ py here.search("cabinet").do_bake() # [[file:../../../projects/mud.org::*Imp][Imp:3]] -py bt = self.search('imp'); bt.db.pose = 'sitting on an ornate perch' +py bt = self.search('imp'); bt.sdesc.add('imp'); bt.db.pose = 'sitting on an ornate perch' # Imp:3 ends here # [[file:../../../projects/mud.org::*Imp][Imp:4]] -@set imp/_sdesc = "imp" -# @set imp/pose_sleep = "sitting on an ornate perch" # @pose default imp = sitting on an ornate perch @@ -3741,7 +3723,7 @@ py bt = self.search('imp'); bt.db.pose = 'sitting on an ornate perch' @set imp/say = "1 ;; emote << nods ^ looks at you quizically ^ stares at you curiously ^ shrugs ^ investigates its fingerclaws ^ winks ^ smirks ^ raises an eyebrow ... well, if it had one, it would ^ stares at you ^ squints its eyes >>." # Imp:8 ends here -# Bedroom + # A bedroom with a wardrobe that goes to another land sounds great. @@ -3813,7 +3795,7 @@ py bt = self.search('imp'); bt.db.pose = 'sitting on an ornate perch' @set slippers/tethered_msg = "The slippers are having none of this adventuring outside of this cozy room, and walk back to the side of the bed." # Bedroom:6 ends here -# Wardrobe + # One needs to open it to go to another world. @@ -3883,7 +3865,7 @@ py bt = self.search('imp'); bt.db.pose = 'sitting on an ornate perch' @set wardrobe/get_err_msg = "The wardrobe is way too big to lift." # Wardrobe:6 ends here -# Southwest Prairie + # What am I doing here? @@ -3917,7 +3899,7 @@ py bt = self.search('imp'); bt.db.pose = 'sitting on an ornate perch' @detail campfire;fire = Only a thin wisp of smoke escapes to the skies; fragrating the air. # Southwest Prairie:3 ends here -# Mare’s Head + # Taken from [[https://en.wikipedia.org/wiki/Mare%27s_Head][Wikipedia]]. @@ -3940,12 +3922,10 @@ py bt = self.search('imp'); bt.db.pose = 'sitting on an ornate perch' # [[file:../../../projects/mud.org::*Mare’s Head][Mare’s Head:3]] -py bt = self.search('head'); bt.db.pose = 'sitting next to a small |Ycampfire|n' +py bt = self.search('head'); bt.sdesc.add('curious figure'); bt.db.pose = 'sitting next to a small |Ycampfire|n' # Mare’s Head:3 ends here # [[file:../../../projects/mud.org::*Mare’s Head][Mare’s Head:4]] -@set mares head/_sdesc = "curious figure" -# @set mares head/pose_sleep = "sitting next to a small |Ycampfire|n" # @set mares head/pose_default = "sitting next to a small |Ycampfire|n" @@ -3972,10 +3952,56 @@ py bt = self.search('head'); bt.db.pose = 'sitting next to a small |Ycampfire|n' # [[file:../../../projects/mud.org::*Mare’s Head][Mare’s Head:7]] -@set mares head/arrive = "5 ;; emote nods its skull in greeting. ;; 30 ;; emote stares at you with its empty sockets. ;; emote reaches into the fire, pulls out a branch, and brushes off the soot. ;; gift pipe to {0}" +@set mares head/arrive = "4 ;; emote nods its skull in greeting. ;; 30 ;; emote stares at you with its empty sockets. ;; emote reaches into the fire, pulls out a branch, and brushes off the soot. ;; scoring get_pipe to {0} ;; gift pipe to {0}" # Mare’s Head:7 ends here -# Bugs + + +# And what if they attempt to interact? + + +# [[file:../../../projects/mud.org::*Mare’s Head][Mare’s Head:8]] +@set mares head/say = "3 ;; emote << nods ^ shakes it head...er, skull ^ looks at you with its empty eye sockets ^ shrugs ^ pokes the fire with a stick ^ raises an eyebrow ... well, if it had one, it would ^ shifts from his log seat. As it does, its black cloak billows ^ squints its eyes ^ A fuzzy ear on the skull of the /me twitches >>." +# Mare’s Head:8 ends here + + + +# Let’s allow anyone here to sit on a log next to the campfire .. + + +# [[file:../../../projects/mud.org::*Pull up a Log][Pull up a Log:1]] +@create/drop couple long log;log:typeclasses.sittables.Sittables +# Pull up a Log:1 ends here + + + +# And the description: + +# [[file:../../../projects/mud.org::*Pull up a Log][Pull up a Log:2]] +@desc log = A long, smooth log rests next to the inviting campfire. +# Pull up a Log:2 ends here + + + +# Can’t steal ‘em: + +# [[file:../../../projects/mud.org::*Pull up a Log][Pull up a Log:3]] +@lock log = get:false() +# +@set chairs/get_err_msg = "It's way too heavy for you to lift. Besides, were you planning on burning it or something?" +# Pull up a Log:3 ends here + + + +# And textual descriptions the object can use: + +# [[file:../../../projects/mud.org::*Pull up a Log][Pull up a Log:4]] +@set log/article = "the" +# +@set log/singular = "the log next to the campfire" +# Pull up a Log:4 ends here + + # And now that we are done, say it: