moss-n-puddles/world/version1.ev
Howard Abrams 14c8385589 Create a Secret Room under the Cozy House
A sconce, both a producer of long-lasting candles, as well as an
"opener" that when pulled opens a secret passage.
2025-07-11 22:06:50 -07:00

2583 lines
83 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Create an Avatar
# An avatar in the original sense of a housing for a god-like entity.
# [[file:../../../projects/mud.org::*Create an Avatar][Create an Avatar:1]]
@name self = The Avatar;avatar
# Create an Avatar:1 ends here
# [[file:../../../projects/mud.org::*Create an Avatar][Create an Avatar:2]]
@setdesc A translucent being of light and energy. The surrounding world seems vivid and vibrant as it basks in the radience.
# Create an Avatar:2 ends here
# [[file:../../../projects/mud.org::*Create an Avatar][Create an Avatar:3]]
@sdesc glowing, angelic being
# Create an Avatar:3 ends here
# And to pose:
# [[file:../../../projects/mud.org::*Create an Avatar][Create an Avatar:4]]
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 *Forest*. Note the term =mp01= as a global label that matches my map.
# [[file:../../../projects/mud.org::*The Forest][The Forest:1]]
@name here = Grove of the Matriarchs;mp01
# The Forest:1 ends here
# The description will take advantage of the /seasons/ and /times/ of the day:
# [[file:../../../projects/mud.org::*The Forest][The Forest:2]]
@desc here = A giant, moss-covered |Yboulder|n stands among immense |Ytrees|n that etch the sky and slice the clouds in the <evening>darkening twilight</evening><morning>awakening dawn</morning><afternoon>lazy afternoon</afternoon><night>night sky</night>. As <morning>morning, you can hear the dawn chorus of birds</morning><afternoon>afternoon, you can hear the buzzing of insects around giant colorful |Yflowers|n</afternoon><evening>evening, you can't hear much as most of the forest creatures are settling down for the night</evening><night>night, you can hear crickets and an occassional owl</night>. A footpath winds around the giant, moss-covered tree roots to the East and West. To the south, a dock juts into a lavender sea.
# The Forest:2 ends here
# Need to add weather and time data to this:
# [[file:../../../projects/mud.org::*The Forest][The Forest:3]]
@update here = typeclasses.rooms_weather.TimeWeatherRoom
# The Forest:3 ends here
# Derived from the original [[~/src/moss-n-puddles/.venv/lib/python3.12/site-packages/evennia/contrib/tutorials/tutorial_world/rooms.py][rooms.py]], but now stored in [[file:~/src/moss-n-puddles/typeclasses/rooms_weather.py][rooms_weather.py]].
# Describe the trees:
# [[file:../../../projects/mud.org::*The Forest][The Forest:4]]
@detail tree;trees = You feel dwarfed by colossal trees whose moss-covered roots are difficult to peer over. An occassional breeze often smells of flowers and other times earthy. While the leafy canopy hides the sky, you certainly can |wfeel|n the weather.
# The Forest:4 ends here
# And the flowers:
# [[file:../../../projects/mud.org::*The Forest][The Forest:5]]
@detail flower;flowers = Beautiful, but giant flowers look down on you and nod a friendly greeting.
# The Forest:5 ends here
# Puddles
# With my name, I need to have an object to go with it.
# [[file:../../../projects/mud.org::*Puddles][Puddles:1]]
@create/drop puddle : typeclasses.things.Puddle
# Puddles:1 ends here
# And an elusive description:
# [[file:../../../projects/mud.org::*Puddles][Puddles:2]]
@desc puddle = A large puddle, formed from a recent rain shower, invites you to shed your years and jump in and splash around to reconnect with your youth.
# Puddles:2 ends here
# And keep it locked down:
# [[file:../../../projects/mud.org::*Puddles][Puddles:3]]
@lock puddle = get:false()
#
@set puddle/get_err_msg = "As the water slips through your fingers, you realize the apt metaphor of attempting to grasp at your youth."
# Puddles:3 ends here
# Sticks
# I will have a script auto generate the sticks on a regular basis, but for now, lets just make one that I can drop.
# [[file:../../../projects/mud.org::*Sticks][Sticks:1]]
py timed_script = evennia.create_script(key="Create Sticks",
typeclass='typeclasses.scripts.CreateSticks',
interval=86800, # more than a day
start_delay=False, # wait interval before first call
autostart=True,
attributes=[("destination", here)] )
# Sticks:1 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]]
@detail symbol = You move an ivy runner to see three curves join together as if it were three legs.
# Boulder:1 ends here
# The moss is purdy:
# [[file:../../../projects/mud.org::*Boulder][Boulder:2]]
@detail moss = "Even in this light, the moss radiates a surreal color of green."
# Boulder:2 ends here
# And the ivy is … uh.
# [[file:../../../projects/mud.org::*Boulder][Boulder:3]]
@detail ivy = "You see...well, ivy. Uhm, it's green, and..."
# Boulder:3 ends here
# The runes use multibyte unicode which screws up the =telnet= client.
# [[file:../../../projects/mud.org::*Boulder][Boulder:4]]
@detail runes;rune = The runes read ᛞ ᚪ ᛒ ᛚ ᚱ
# Boulder:4 ends here
# The top of the boulder should be another room, accessible by the =climb=, but maybe it isnt “seen” until the boulder has been looked? First, we put some weather at the top of the boulder:
# [[file:../../../projects/mud.org::*Boulder][Boulder:5]]
@dig Boulder Top;mp02 : typeclasses.rooms_weather.TimeWeatherRoom = boulder;climb,climb down;climb;down
# Boulder:5 ends here
# The ability to /climb/ the boulder isnt immediately obvious, so lets make it a bit of a secret:
# [[file:../../../projects/mud.org::*Boulder][Boulder:6]]
@desc boulder = A boulder with patches of |Ymoss|n and delicate clover. A carved |Ysymbol|n and even some |Yrunes|n try to hide behind rope-like vines and tendrils of |Yivy|n as if keeping a secret.|/|/You notice a foot hold, and then another. You can |Gclimb|n this boulder!
# Boulder:6 ends here
# To take advantage of our [[Hidden Things]], we put the right tag on it:
# [[file:../../../projects/mud.org::*Boulder][Boulder:7]]
@set boulder/hidden_tag = "hidden_boulder"
#
@lock boulder = view:tag(hidden_boulder)
# Boulder:7 ends here
# And give it some aliases:
# [[file:../../../projects/mud.org::*Boulder][Boulder:8]]
@name boulder = climb the boulder;boulder;climb;climb up
# Boulder:8 ends here
# And a description:
# [[file:../../../projects/mud.org::*Boulder][Boulder:9]]
@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
# In case they attempt to get vines here:
# Lets make a nice spot to sit down on:
# [[file:../../../projects/mud.org::*Boulder][Boulder:10]]
@create/drop dangling vines;vines;vine
# Boulder:10 ends here
# With a nice description:
# [[file:../../../projects/mud.org::*Boulder][Boulder:11]]
@desc vines = Strong vines twisted to look like rope. This could be helpful.
# Boulder:11 ends here
# Cant take it here, you have to climb the boulder first:
# [[file:../../../projects/mud.org::*Boulder][Boulder:12]]
@lock vines = get:false()
#
@set vines/get_err_msg = "The vines are too strong to break or cut. Perhaps they could be detached from on top of the |Yboulder|n?"
# Boulder:12 ends here
# Can we hide it too?
# [[file:../../../projects/mud.org::*Boulder][Boulder:13]]
@lock vines = view:tag(hidden_vines)
#
@set vines/hidden_tag = "hidden_vines"
# Boulder:13 ends here
# Top of Boulder
# Lets jump to the top of the boulder to proceed:
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:1]]
@teleport mp02
# Top of Boulder:1 ends here
# And the description:
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:2]]
@desc here = While high, the |Ytrees|n still tower over you. Still, a nice view. Lots of patches of |Ymoss|n to |gsit|n down and relax.
# Top of Boulder:2 ends here
# More details:
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:3]]
@detail tree;trees = You feel dwarfed by colossal trees whose moss-covered roots are difficult to peer over. An occassional breeze often smells of flowers and other times earthy. While the leafy canopy hides the sky, you certainly can |wfeel|n the weather.
# Top of Boulder:3 ends here
# Describe the climb down:
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:4]]
@name climb = climb down;climb;down
# Top of Boulder:4 ends here
# And a description of the climb:
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:5]]
@desc climb = The climb seemed easy, but you're not sure you can handle the footholds going the other way around.
# Top of Boulder:5 ends here
# And describe the journey:
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:6]]
@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
# Lets make a nice spot to sit down on:
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:7]]
@create/drop patch of moss;moss:typeclasses.sittables.Sittable
# Top of Boulder:7 ends here
# With a nice description:
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:8]]
@desc patch of moss = A cushioned patch of moss of the most vibrant green.
# Top of Boulder:8 ends here
# Cant take the moss with you:
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:9]]
@lock patch of moss = get:false()
# Top of Boulder:9 ends here
# Can we hide it too?
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:10]]
@lock patch of moss = view:tag(hidden_moss)
#
@set patch of moss/hidden_tag = "hidden_moss"
# Top of Boulder:10 ends here
# And a lovely message about why you cant steal moss:
# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:11]]
@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
# Lets 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 = "$conj(yank) and $conj(shape) a"
# Vines:4 ends here
# And a commentary:
# [[file:../../../projects/mud.org::*Vines][Vines:5]]
@set vines/make_note = " from the vines"
# Vines:5 ends here
# This one is optional as it defaults to Consumable:
# [[file:../../../projects/mud.org::*Vines][Vines:6]]
@set vines/make_class = "typeclasses.things.Rope"
# Vines:6 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:7]]
@set vines/make_desc = "Made from vines, but could be a good lasso."
# Vines:7 ends here
# How much is there when you pick them?
# [[file:../../../projects/mud.org::*Vines][Vines:8]]
@set vines/make_amount = 1
# Vines:8 ends here
# Field
# To the east, lets make a nice meadow. Start at the Forest:
# [[file:../../../projects/mud.org::*Field][Field:1]]
@teleport mp01
# Field:1 ends here
# And we use the =tunnel= command this time:
# [[file:../../../projects/mud.org::*Field][Field:2]]
@dig Frog Meadow;mp05 : typeclasses.rooms_weather.TimeWeatherRoom = east;e;path;footpath,footpath;west;w;path
# Field:2 ends here
# A description if they look east:
# [[file:../../../projects/mud.org::*Field][Field:3]]
@desc east = A winding footpath that may lead out of the forest... Is that a meadow?
# Field:3 ends here
# And a nice journey message to go east out of the forest:
# [[file:../../../projects/mud.org::*Field][Field:4]]
@set east/traverse_msg = "The mossy tree roots that borders this footpath begin to thin out to clover and flowers..."
# Field:4 ends here
# Before we label it, we follow =east=:
# [[file:../../../projects/mud.org::*Field][Field:5]]
@teleport mp05
# Field:5 ends here
# And a description that takes advantage of the time of day. We should get busy and get some seasonal description here.
# [[file:../../../projects/mud.org::*Field][Field:6]]
@desc here = A large |Ywaterfall|n cascades on the far side of this meadow creating a |Ystream|n that meanders through the tall grass and large yellow flowers. They nod their <night>sleepy </night>heads to you as you pass by in the <evening>darkening twilight</evening><morning>awakening dawn</morning><afternoon>lazy afternoon</afternoon><night>dark night</night>. A gap in the trees show how you can return to the footpath in the forest.
# Field:6 ends here
# Along with a mesage:
# [[file:../../../projects/mud.org::*Field][Field:7]]
@set footpath/traverse_msg = "You leave the open meadow for the footpath through the giant trees. The yellow flowers nod goodbye to you..."
# Field:7 ends here
# And a description:
# [[file:../../../projects/mud.org::*Field][Field:8]]
@desc footpath = This footpath goes in a forest of immense trees.
# Field:8 ends here
# Can the waterfall be a detail or an actual object?
# [[file:../../../projects/mud.org::*Field][Field:9]]
@detail stream;field = A slow-moving stream meanders like a snake in the grassy field. Little green |Yfrogs|n cling to grass stems hanging over the water.
# Field:9 ends here
# And detail the frogs:
# [[file:../../../projects/mud.org::*Field][Field:10]]
@detail frog;frogs = Cute little guys with their big black eyes and tiny gold crowns. Too quick to catch.
# Field:10 ends here
# Waterfall
# This is special, in that it should be hidden:
# [[file:../../../projects/mud.org::*Waterfall][Waterfall:1]]
@create/drop waterfall;water
# Waterfall:1 ends here
# And the description:
# [[file:../../../projects/mud.org::*Waterfall][Waterfall:2]]
@desc waterfall = Cascading down the cliff in three sections, each section of this giant waterfall widens ending in a large |Ypool|n.|/|/Wait! Is there a large |Ycave|n entrance hidden behind the water?
# Waterfall:2 ends here
# Looking at the waterfall, shows the cave entrance:
# [[file:../../../projects/mud.org::*Waterfall][Waterfall:3]]
@set waterfall/hidden_tag = "hidden_cave"
#
@set waterfall/hidden_tag = "hidden_waterfall"
#
@lock waterfall = view:tag(hidden_waterfall)
# Waterfall:3 ends here
# [[file:../../../projects/mud.org::*Waterfall][Waterfall:4]]
@detail pool = A pool of cool, clear water.
# Waterfall:4 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]]
@teleport mp05
# The Lair of the Beast:1 ends here
# From the Meadow, we create a lair /behind/ the water.
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:2]]
@dig Lair;mp07 = cave entrance;cave;inside,outside;leave
# The Lair of the Beast:2 ends here
# And we make it hidden:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:3]]
@set cave/hidden_tag = "hidden_cave"
#
@lock cave = view:tag(hidden_cave)
# The Lair of the Beast:3 ends here
# And a description if they look:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:4]]
@desc cave = A large entrance to a dark, and foul-smelling cave. The waterfall is so loud, you can't hear anything that may live there.
# The Lair of the Beast:4 ends here
# And a description when entering …
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:5]]
@set cave/traverse_msg = "You venture inside the dark cave."
# The Lair of the Beast:5 ends here
# Lets step inside to finish this:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:6]]
@teleport mp07
# The Lair of the Beast:6 ends here
# And a description:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:7]]
@desc here = Vaulted stone ceiling harbors the darkness that hovers over a large |Ymattress|n.
# The Lair of the Beast:7 ends here
# And a description of leaving:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:8]]
@desc leave = You can see the waterfall cascading outside the cave entrance.
# The Lair of the Beast:8 ends here
# And the leaving message:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:9]]
@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
# And a description of the mattress you can sit on:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:10]]
@create/drop mattress:typeclasses.sittables.Sittables
# The Lair of the Beast:10 ends here
# And the description:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:11]]
@desc mattress = Looks comfortable, albeit tall, but it does not smell very good.
# The Lair of the Beast:11 ends here
# Cant steal it:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:12]]
@lock mattress = get:false()
#
@set mattress/get_err_msg = "It's way too heavy for you to lift."
# The Lair of the Beast:12 ends here
# And textual descriptions the object can use:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:13]]
@set mattress/adjective = "on"
#
@set mattress/article = "the"
#
@set mattress/singular = "the mattress"
#
@set mattress/extra = "This feels << ^ very ^ quite>> <<nice ^ cozy ^ comfortable>>.|n"
# The Lair of the Beast:13 ends here
# And a trim on the things to see:
# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:14]]
@lock mattress = view:tag(hidden_mattress)
#
@set mattress/hidden_tag = "hidden_mattress"
# The Lair of the Beast:14 ends here
# Beast
# And we create the Big, Hairy Beast:
# [[file:../../../projects/mud.org::*Beast][Beast:1]]
@create/drop big hairy beast;bhb;beast;hairy beast;monster;shadow: typeclasses.pets.BHB
# Beast:1 ends here
# And lets hide it until we are ready:
# [[file:../../../projects/mud.org::*Beast][Beast:2]]
@set beast/hidden_tag = "hidden_beast"
#
@lock beast = view:tag(hidden_beast)
# Beast:2 ends here
# And a general description that will be /expanded/ with its current reaction.
# [[file:../../../projects/mud.org::*Beast][Beast:3]]
@desc beast = A big, hairy beast with long claws and teeth.
# Beast:3 ends here
# Cant get this:
# [[file:../../../projects/mud.org::*Beast][Beast:4]]
@lock beast = get:false()
#
@set beast/get_err_msg = "You can't pick that up, as that beast is far larger than you."
# Beast:4 ends here
# And set its sleepy time at 8pm …
# [[file:../../../projects/mud.org::*Beast][Beast:5]]
@set beast/sleep_hour = 21
# Beast:5 ends here
# It will wake at 8am …
# [[file:../../../projects/mud.org::*Beast][Beast:6]]
@set beast/wake_hour = 8
# Beast:6 ends here
# Lets set some behavior levels. For instance, the beast is sad when he doesnt see its friends:
# [[file:../../../projects/mud.org::*Beast][Beast:7]]
@set beast/loneliness_amount = -2
# Beast:7 ends here
# It seem to warm up the to new characters hanging around the area, but not as much as those that would interact with it:
# [[file:../../../projects/mud.org::*Beast][Beast:8]]
@set beast/shyness_amount = 3
# Beast:8 ends here
# How active should this pet be? Seems like at the moment, it shouldnt be too obnoxious. This setting is a percentage, so 12 is /12%/, which returns a message only 12% of the /ticks/ (where a tick is about a minute).
# [[file:../../../projects/mud.org::*Beast][Beast:9]]
@set beast/active_amount = 10
# Beast:9 ends here
# It isnt that scared of new people, as it will ignore them when someone it knows is around.
# [[file:../../../projects/mud.org::*Beast][Beast:10]]
@set beast/new_character_reaction = 'ignores'
# Beast:10 ends here
# Seems we should make descriptions for all the states that happen when you look at them. These are appended to the standard description.
# [[file:../../../projects/mud.org::*Beast][Beast:11]]
@set beast/scared_msg = "It seems <<skiddish ^ afraid ^ skiddish and afraid>> as it tries to hide behind a tall clump of grass. Yeah, it doesn't do a good job of hiding."
# Beast:11 ends here
# Concerned level:
# [[file:../../../projects/mud.org::*Beast][Beast:12]]
@set beast/concerned_msg = "Its large, yellow eyes stare at you from a safe distance."
# Beast:12 ends here
# Interested level:
# [[file:../../../projects/mud.org::*Beast][Beast:13]]
@set beast/interested_msg = "It seems <<curious ^ interested>> in what you are doing <<here ^ >>. ;; Its << ^ large, ^ big,>> yellow eyes watch your every move."
# Beast:13 ends here
# Friendly level:
# [[file:../../../projects/mud.org::*Beast][Beast:14]]
@set beast/friendly_msg = "It sits next to you, as its big, friendly eyes gaze as you. ;; It <<leaps over ^ runs up ^ bounces up ^ >> to you, wagging its tail-less behind. ;; It lays down next to you."
# Beast:14 ends here
# When the beast is sleeping, we can some times spam the room with the snores:
# [[file:../../../projects/mud.org::*Beast][Beast:15]]
@set beast/sleeping_actions = "The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> lets loose a <<big, ^ huge, ^ large, ^ tremendous, ^ >> snore. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> growls in its sleep. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> twitches its <<leg ^ legs ^ paw ^ nose>>. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> <<shifts ^ rolls>> on its <<big, ^ huge, ^ large, ^ tremendous, ^ >> mattress."
# Beast:15 ends here
# We base the actions of the beast on the most friendly person in the area.
# The scared level doesnt last long, so lets just leave one message:
# [[file:../../../projects/mud.org::*Beast][Beast:16]]
@set beast/scared_actions = "A shadow hovers at the edge of the meadow.."
# Beast:16 ends here
# Concerned actions:
# [[file:../../../projects/mud.org::*Beast][Beast:17]]
@set beast/concerned_actions = "The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> <<is ^ seems>> concerned by your presence in the <<meadow ^ field>>. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> seems concerned. Maybe it's hungry. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> seems concerned and keeps its distance."
# Beast:17 ends here
# Interested actions:
# [[file:../../../projects/mud.org::*Beast][Beast:18]]
@set beast/interested_actions = "The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> seems <<curious ^ interested>> in $you(). ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> seems curious about $you(). ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> stands on its hind legs. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> <<stares at ^ watches ^ follows>> $you() with its <<large, ^ big, ^ >> yellow eyes."
# Beast:18 ends here
# Friendly actions:
# [[file:../../../projects/mud.org::*Beast][Beast:19]]
@set beast/friendly_actions = "The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> <<thunders ^ stomps ^ tramps ^ clomps ^ rumbles ^ rolls>> <<across the field ^ across the meadow ^ over>> wagging its backend<<, ^ as it seems>> happy to see $you(). ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> <<thunders ^ stomps ^ tramps ^ clomps ^ rumbles ^ rolls>> <<across the field ^ across the meadow ^ over>> hoping to play with $you(). ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> flops over in front of $you() wriggling <<its back ^ >> on the ground. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> <<thunders ^ stomps ^ tramps ^ clomps ^ rumbles ^ rolls>> <<across the field ^ across the meadow ^ over>> next to $you(). ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> chases butterflies around the <<field ^ meadow ^ grass ^ flowers>>."
# Beast:19 ends here
# The ecstatic states are just a bit more than friendly.
# [[file:../../../projects/mud.org::*Beast][Beast:20]]
@set beast/ecstatic_actions = "The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> <<thunders ^ stomps ^ tramps ^ clomps ^ rumbles ^ rolls>> <<across the field ^ across the meadow ^ over>> to give $you() a sloppy <<kiss ^ lick>>. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> <<thunders ^ stomps ^ tramps ^ clomps ^ rumbles ^ rolls>> <<across the field ^ across the meadow ^ over>> wagging its backend as it seems <<very ^ >> excited to see $you(). ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> <<thunders ^ stomps ^ tramps ^ clomps ^ rumbles ^ rolls>> <<across the field ^ across the meadow ^ over>> hoping to play with $you(). ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> flops over in front of $you() happily wriggling on the ground. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> excitedly <<thunders ^ stomps ^ tramps ^ clomps ^ rumbles ^ rolls>> <<across the field ^ across the meadow ^ over>> next to you. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> <<happily ^ joyfully>> leaps into air. ;; The <<big, ^ huge, ^ large, ^ tremendous, ^ >> <<hairy ^ slobbery ^ horned ^ clawed ^ >> <<brute ^ beast ^ monster>> chases butterflies around the <<field ^ meadow ^ grass ^ flowers>>."
# Beast:20 ends here
# And the responses to being /pet/:
# [[file:../../../projects/mud.org::*Beast][Beast:21]]
@set beast/pet_scared_response = "$You() can't get near the wild beast to pet it. It seems scared."
#
@set beast/pet_concerned_response = "$You can't get near the big, hairy beast to pet it. It seems concerned."
#
@set beast/pet_interested_response = "The big hairy beastie keeps its distance, but seems curious about $you()."
#
@set beast/pet_friendly_response = "The << big, ^ huge, ^ large, ^ tremendous, ^ >> << hairy ^ slobbery ^ horned ^ clawed ^ >> << brute ^ beast ^ monster>> << flops ^ rolls >> over << in the grass ^>> as $you() $conj(give) it belly rubs. ;; The << big, ^ huge, ^ large, ^ tremendous, ^ >> << hairy ^ slobbery ^ horned ^ clawed ^ >> << brute ^ beast ^ monster>> << flops ^ rolls >> over << in the grass ^>> as $you() $conj(rub) its belly. ;; $You() $conj(pet) the << big, ^ huge, ^ large, ^ tremendous, ^ >> << hairy ^ slobbery ^ horned ^ clawed ^ >> << brute ^ beast ^ monster>> . ;; $You() $conj(scratch) the << nose ^ ears >> of the << big, ^ huge, ^ large, ^ tremendous, ^ >> << hairy ^ slobbery ^ horned ^ clawed ^ >> << brute ^ beast ^ monster>>. ;; The << big, ^ huge, ^ large, ^ tremendous, ^ >> << hairy ^ slobbery ^ horned ^ clawed ^ >> << brute ^ beast ^ monster>> leans forward as $you() $conj(scratch) its nose."
#
@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. <morning>Colorful |Ybirds|n in the sparse tree surrounding the marsh yell out a loud chorus.</morning> <afternoon>Purple herons and other marsh |Ybirds|n hunt in the tall swamp grass.</afternoon> <evening>Glowing |Yfireflies|n create a synchronized light show over the swamp grass in the deepening dusk.</evening> <night>Giant pink and purple |Ymoths|n flutter over the dark flowers.</night>|/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. <morning>Colorful |Ybirds|n in the sparse tree surrounding the marsh yell out a loud chorus.</morning> <afternoon>Purple herons and other marsh |Ybirds|n hunt in the tall swamp grass.</afternoon> <evening>Glowing |Yfireflies|n create a synchronized light show over the swamp grass in the deepening dusk.</evening> <night>Giant pink and purple |Ymoths|n flutter over the dark flowers.</night>|/|/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:
# [[file:../../../projects/mud.org::*Ten-foot Poles][Ten-foot Poles:2]]
@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 = "$conj(pluck) and $conj(shape) a"
# Ten-foot Poles:4 ends here
# And a commentary:
# [[file:../../../projects/mud.org::*Ten-foot Poles][Ten-foot Poles:5]]
@set reeds/make_note = " from a marsh reed."
# Ten-foot Poles:5 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:7]]
@set reeds/make_desc = "A long pole shaved from a marsh reed."
# Ten-foot Poles:7 ends here
# How much is there when you pick them?
# [[file:../../../projects/mud.org::*Ten-foot Poles][Ten-foot Poles:8]]
@set reeds/make_amount = 1
# Ten-foot Poles:8 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
# Trampolis Hut on Stilts
# [[file:../../../projects/mud.org::*Trampolis Hut on Stilts][Trampolis Hut on Stilts:1]]
@teleport mp08
#
@dig Homey Hut;mp09 = hut on stilts,leave;outside;marsh
# Trampolis Hut on Stilts:1 ends here
# And describe it as =hut=:
# [[file:../../../projects/mud.org::*Trampolis Hut on Stilts][Trampolis 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.
# Trampolis Hut on Stilts:2 ends here
# Lets 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::*Trampolis Hut on Stilts][Trampolis Hut on Stilts:3]]
@lock hut on stilts = traverse:tag(enter_hut_nope, mp)
# Trampolis Hut on Stilts:3 ends here
# Lets add an alias:
# [[file:../../../projects/mud.org::*Trampolis Hut on Stilts][Trampolis Hut on Stilts:4]]
@alias hut on stilts = hut
# Trampolis Hut on Stilts:4 ends here
# [[file:../../../projects/mud.org::*Trampolis Hut on Stilts][Trampolis Hut on Stilts:5]]
@set hut on stilts/err_traverse = "Upon approaching the hut, the hut scurries away on its stilt-like legs."
# Trampolis Hut on Stilts:5 ends here
# And we need to create a second exit:
# [[file:../../../projects/mud.org::*Trampolis Hut on Stilts][Trampolis Hut on Stilts:6]]
@open rope-bound hut = Homey Hut
# Trampolis Hut on Stilts:6 ends here
# Lets add an alias:
# [[file:../../../projects/mud.org::*Trampolis Hut on Stilts][Trampolis Hut on Stilts:7]]
@alias rope-bound hut = hut
# Trampolis Hut on Stilts:7 ends here
# And describe it:
# [[file:../../../projects/mud.org::*Trampolis Hut on Stilts][Trampolis 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.
# Trampolis Hut on Stilts:8 ends here
# If the other exit is here, you just need the pole:
# [[file:../../../projects/mud.org::*Trampolis Hut on Stilts][Trampolis Hut on Stilts:9]]
@lock rope-bound hut = traverse:holds('ten-foot pole')
# Trampolis Hut on Stilts:9 ends here
# And a good reason why you need the pole:
# [[file:../../../projects/mud.org::*Trampolis Hut on Stilts][Trampolis 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."
# Trampolis Hut on Stilts:10 ends here
# If you do figure out how to get through the hut:
# [[file:../../../projects/mud.org::*Trampolis Hut on Stilts][Trampolis Hut on Stilts:11]]
@set rope-bound hut/traverse_msg = "You use your pole to vault yourself up through the door of the hut..."
# Trampolis Hut on Stilts:11 ends here
# Lets 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::*Trampolis Hut on Stilts][Trampolis Hut on Stilts:12]]
@teleport/tonone rope-bound hut
# Trampolis Hut on Stilts:12 ends here
# Inside Trampolis Hut
# Lets go inside to decorate:
# [[file:../../../projects/mud.org::*Inside Trampolis Hut][Inside Trampolis 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 Trampolis Hut:1 ends here
# And describe leaving:
# [[file:../../../projects/mud.org::*Inside Trampolis Hut][Inside Trampolis Hut:2]]
@desc leave = From the doorway, you see the marshland below.
# Inside Trampolis Hut:2 ends here
# [[file:../../../projects/mud.org::*Inside Trampolis Hut][Inside Trampolis 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 Trampolis Hut:3 ends here
# And the details:
# [[file:../../../projects/mud.org::*Inside Trampolis Hut][Inside Trampolis 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 Trampolis Hut:4 ends here
# [[file:../../../projects/mud.org::*Inside Trampolis Hut][Inside Trampolis Hut:5]]
@detail jars = Sealed jars of fruits, vegetables, herbs and spices.
# Inside Trampolis Hut:5 ends here
# [[file:../../../projects/mud.org::*Inside Trampolis Hut][Inside Trampolis 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 Trampolis Hut:6 ends here
# For each talisman, we could create an object, but it wouldnt be able to be taken, and instead of “cant find skull”, we could give a better error message.
# [[file:../../../projects/mud.org::*Inside Trampolis Hut][Inside Trampolis 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 Trampolis Hut:7 ends here
# Perhaps the carving is actually the maid.
# [[file:../../../projects/mud.org::*Inside Trampolis Hut][Inside Trampolis 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 Trampolis Hut:8 ends here
# The reeds should give a subtle hint to something that could be /spoken/ aloud.
# [[file:../../../projects/mud.org::*Inside Trampolis Hut][Inside Trampolis 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 Trampolis 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 = "$conj(take) a"
# Torches:4 ends here
# And a commentary:
# [[file:../../../projects/mud.org::*Torches][Torches:5]]
@set bucket/make_note = " from the bucket"
# Torches:5 ends here
# The torches are special in that they last longer.
# [[file:../../../projects/mud.org::*Torches][Torches:6]]
@set bucket/make_class = "typeclasses.lightables.Torch"
# Torches:6 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:7]]
@set bucket/make_desc = "Made from marsh grass and reeds."
# Torches:7 ends here
# How much is there when you pick them?
# [[file:../../../projects/mud.org::*Torches][Torches:8]]
@set bucket/make_amount = 1
# Torches:8 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.
# Return to the Forest:
# [[file:../../../projects/mud.org::*The Dock][The Dock:1]]
@teleport mp01
# The Dock:1 ends here
# And tunnel to the dock:
# [[file:../../../projects/mud.org::*The Dock][The Dock:2]]
@dig Lazy Dock;mp06 :typeclasses.rooms_weather.TimeWeatherRoom = south;s,north;n;footpath
# The Dock:2 ends here
# With a mesage about leaving the trees so that I dont have to repeat that in the room description:
# [[file:../../../projects/mud.org::*The Dock][The Dock:3]]
@set south/traverse_msg = "You follow a path down and step out from under giant trees to see the sky."
# The Dock:3 ends here
# And a description:
# [[file:../../../projects/mud.org::*The Dock][The Dock:4]]
@desc south = You see a dock on a lavender sea... Is that a comfortable-looking chair you can |gsit|n on?
# The Dock:4 ends here
# And move ourselves there:
# [[file:../../../projects/mud.org::*The Dock][The Dock:5]]
@teleport mp06
# The Dock:5 ends here
# And describe this.
# [[file:../../../projects/mud.org::*The Dock][The Dock:6]]
@desc here = The dock you stand on juts into a bay of water the color of lavender flowers. Mesmerizing and calming from the way the sound of the waves lap along the shore.
Someone has set a nice chair for viewing.
# The Dock:6 ends here
# And details?
# [[file:../../../projects/mud.org::*The Dock][The Dock:7]]
@detail water;waves = Despite the inclement weather, the waves ripple softly against the shore. Seems nice for fishing.
#
@detail lavender;flowers;flower = The water is the |wcolor|n of lavender, not actually lavender. Hrm. Could it possibly be |wlavender tea|n?
#
@detail shore = The roots of trees make most of the bay's shoreline.
# The Dock:7 ends here
# And describe the walk back into the forest:
# [[file:../../../projects/mud.org::*The Dock][The Dock:8]]
@set north/traverse_msg = "You walk up a path and back into the forest of giant trees."
# The Dock:8 ends here
# And a description:
# [[file:../../../projects/mud.org::*The Dock][The Dock:9]]
@desc north = This path leads into the forest of collosal trees.
# The Dock:9 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]]
@create/drop chair;lounge chair:typeclasses.sittables.Sittable
# Chair:1 ends here
# 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.
# Chair:2 ends here
# Cant steal this chair either:
# [[file:../../../projects/mud.org::*Chair][Chair:3]]
@lock chair = get:false()
# Chair:3 ends here
# [[file:../../../projects/mud.org::*Chair][Chair:4]]
@set chair/get_err_msg = "It's way too heavy for you to lift."
# Chair:4 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]]
@create/drop fishing pole;pole:typeclasses.fishing.FishingPole
# Fishing Pole:1 ends here
# With a description:
# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:2]]
@desc pole = A nice pole for catching fish. It even has a hook, and is ready to go!
# Fishing Pole:2 ends here
# And tether it to the Dock, which we need to reset if the ID numbers ever change.
# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:3]]
@lock pole = tethered:id(Lazy Dock)
#
@set pole/tethered_msg = "Let's leave the fishing pole here at the dock for others to fish...besides, where else are you going to go fishing around here?"
# Fishing Pole:3 ends here
# What about some details:
# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:5]]
@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
# Need to make the fishing pole “stay” at the Dock. Maybe with a message about sticking around for the next person.
# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:6]]
@create/drop sign:typeclasses.readables.Readable
# Fishing Pole:6 ends here
# Should the description also be the message?
# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:7]]
@desc sign = You see a wood sign tied with a rope around the back of the chair. It reads, |wFish at your own annoyance. Please return pole when finished.|n
# Fishing Pole:7 ends here
# Might as well allow the user to read it:
# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:8]]
@set sign/inside = "Fish at your own annoyance. Please return pole when finished."
# Fishing Pole:8 ends here
# And lock down the sign:
# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:9]]
@lock sign = get:false()
#
@set sign/get_err_msg = "This granny knot holding the sign to the chair is serious. You can't take it."
# Fishing Pole:9 ends here
# Grotto
# Return to the forest:
# [[file:../../../projects/mud.org::*Grotto][Grotto:1]]
@teleport mp01
# Grotto:1 ends here
# Lets travel west along the path in the forest:
# [[file:../../../projects/mud.org::*Grotto][Grotto:2]]
@dig Grotto;mp04 :typeclasses.rooms_weather.TimeWeatherRoom = west;w,east;e;path;footpath
# Grotto:2 ends here
# With a nice message about wandering:
# [[file:../../../projects/mud.org::*Grotto][Grotto:3]]
@set west/traverse_msg = "You meander between mossy tree roots along a footpath for a while until it ends in a grotto."
# Grotto:3 ends here
# And a description:
# [[file:../../../projects/mud.org::*Grotto][Grotto:4]]
@desc west = A footpath winds between the roots of a tree. You try to jump to look over the roots, and something red catches your eye.
# Grotto:4 ends here
# Jump into the new room:
# [[file:../../../projects/mud.org::*Grotto][Grotto:5]]
@teleport mp04
# Grotto:5 ends here
# And describe the tree and the door:
# [[file:../../../projects/mud.org::*Grotto][Grotto:6]]
@desc here = The trickling sound of a small stream drops down a lush hill between ferns and brambleberry bushes. The path ends at a small bridge that leads to a red door embedded at the base of a giant tree. A carved sign over the door reads, |wDabblers|n.
# Grotto:6 ends here
# A description if they look east:
# [[file:../../../projects/mud.org::*Grotto][Grotto:7]]
@desc east = A winding footpath leads through the forest of giant trees.
# Grotto:7 ends here
# And a nice journey message to go east in of the forest:
# [[file:../../../projects/mud.org::*Grotto][Grotto:8]]
@set east/traverse_msg = "The mossy tree roots makes for an interesting path..."
# Grotto:8 ends here
# And extra things to see:
# [[file:../../../projects/mud.org::*Grotto][Grotto:9]]
@detail trees;tree = The trees in this forest are massive, but a smaller tree has a red door. Must lead to a closet!
# Grotto:9 ends here
# And the bridge:
# [[file:../../../projects/mud.org::*Grotto][Grotto:10]]
@detail bridge = A small wooden bridge leads over a tiny stream. Hard to see the water on account of the giant leafed skunk cabbages.
# Grotto:10 ends here
# And the cabbages? And ferns?
# [[file:../../../projects/mud.org::*Grotto][Grotto:11]]
@detail cabbage;cabbages;skunk cabbage;skunk cabbages = Large glossy green leaves with big yellow flowers that looks like cobras in drag. They hiss as you cross the bridge.
#
@detail fern;ferns = Mostly Sword ferns interrupted by Maiden Hair ferns that sing to the stream.
# 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.
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:1]]
@create/drop berry bush;bush : typeclasses.consumables.Producer
# Berry Bush:1 ends here
# With a description:
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:2]]
@desc bush = A bush laden with bright red brambleberries. You've heard that they are good.
# Berry Bush:2 ends here
# The bush shouldnt be stealable:
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:3]]
@lock bush = get:true()
#
@set bush/get_err_msg = "It appears firmly attached to the ground. Perhaps you want to |gpick|n a berry?"
# Berry Bush:3 ends here
# We have to have the bush describe what it /makes/:
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:4]]
@set bush/make_name = "berry"
# Berry Bush:4 ends here
# Including some plural aliases:
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:5]]
@set bush/make_aliases = ["berries", "brambleberry", "brambleberries"]
# Berry Bush:5 ends here
# And a verb when they /get/ the consumable:
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:6]]
@set bush/make_verb = "$conj(pick) a"
# Berry Bush:6 ends here
# And the bush needs to know the /description/ of the Consumable, so that it can attach that:
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:8]]
@set bush/make_desc = "Bright red with flecks of orange, about grape-sized"
# Berry Bush:8 ends here
# How many berries are there when you pick them?
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:9]]
@set bush/make_amount = 1
# Berry Bush:9 ends here
# How many berries do you eat at a time:
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:10]]
@set bush/make_eat_amount = 1
# Berry Bush:10 ends here
# We can either have a single /eat/ message:
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:11]]
@set bush/make_eat_msg = "Sweet and slightly tart. <<Delicious ^ Tangy ^ Mmmm>>."
# Berry Bush:11 ends here
# Or many messages that can be randomly selected:
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:12]]
@set bush/make_eat_msgs = [ "Sweet and slightly tart.", "<<Delicious ^ Tangy ^ Mmmm>>.", "Ooo...quite sour.", "A bit ripe, but still good.", "So sweet with a hint of <<orange ^ maple>>." ]
# Berry Bush:12 ends here
# Let the user know when they consumed them all.
# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:13]]
@set bush/make_finish_msg =
#"Those were <<delicious ^ great>>."
# Berry Bush:13 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:
# [[file:../../../projects/mud.org::*Knocker][Knocker:1]]
@create/drop knocker: typeclasses.things.Knocker
# Knocker:1 ends here
# Lets make the knocker be a surprise.
# [[file:../../../projects/mud.org::*Knocker][Knocker:2]]
@set knocker/hidden_tag = "hidden_knocker"
#
@lock knocker = view:tag(hidden_knocker)
# Knocker:2 ends here
# The knocker shouldnt be stealable:
# [[file:../../../projects/mud.org::*Knocker][Knocker:3]]
@lock knocker = get:false()
#
@set knocker/get_err_msg = "It appears firmly attached to the door."
# Knocker:3 ends here
# Since we can remove the ring, lets create it:
# [[file:../../../projects/mud.org::*Knocker][Knocker:4]]
@create ring: typeclasses.things.Ring
# Knocker:4 ends here
# And give it an alias:
# [[file:../../../projects/mud.org::*Knocker][Knocker:5]]
@name ring = brass ring;ring
# Knocker:5 ends here
# And a description:
# [[file:../../../projects/mud.org::*Knocker][Knocker:6]]
@desc ring = A brass ring that should be in the door knocker's mouth. How else are you going to knock on a door?
# Knocker:6 ends here
# Although we can interact with it, lets not make it obvious that it is an object:
# [[file:../../../projects/mud.org::*Knocker][Knocker:7]]
@set ring/hidden_tag = "hidden_ring"
#
@lock ring = view:tag(hidden_ring)
# Knocker:7 ends here
# And lets make it so we can take that:
# [[file:../../../projects/mud.org::*Knocker][Knocker:8]]
@set ring/can_take = True
# Knocker:8 ends here
# Lets tether the ring to the knocker …
# [[file:../../../projects/mud.org::*Knocker][Knocker:9]]
@lock ring = tethered:id(knocker)
#
@set ring/tethered_msg = "You put the ring back in the knocker's mouth. \"Mmmuufffmm,\" says the door knocker."
# Knocker:9 ends here
# And put the ring in the knockers mouth:
# [[file:../../../projects/mud.org::*Knocker][Knocker:10]]
@teleport/quiet ring = knocker
# Knocker:10 ends here
# The description is dynamic from the Python code, so we dont need this statement:
# [[file:../../../projects/mud.org::*Knocker][Knocker:11]]
@desc knocker = The brass face looks at you and winks.
# Knocker:11 ends here
# In order for us to /knock/ on the door, we have to give a =knock= command to the /room/.
# [[file:../../../projects/mud.org::*Knocker][Knocker:12]]
@set knocker/room_to_msg = "mp03"
# Knocker:12 ends here
# The python object has all the knowledge about knocking and whatnot, but we should have the descriptions here. First, what the knocker reads:
# [[file:../../../projects/mud.org::*Knocker][Knocker:13]]
@set here/knock_msg = "You grab the ring and knock firmly on the door."
# Knocker:13 ends here
# Then, what the others in the room read:
# [[file:../../../projects/mud.org::*Knocker][Knocker:14]]
@set here/knock_other_msg = "grabs the ring and knocks firmly on the door."
# Knocker:14 ends here
# And an error message if the ring is not with the goblin:
# [[file:../../../projects/mud.org::*Knocker][Knocker:15]]
@set here/knock_err_msg = "This door knocker is defective, as it doesn't have a ring to...er, do the knockin'."
# Knocker:15 ends here
# Cozy Tea House
# Add the Python /special-ness/ for [[file:~/src/moss-n-puddles/typeclasses/rooms.py::class DabblersRoom(Room):][this room]]:
# [[file:../../../projects/mud.org::*Cozy Tea House][Cozy Tea House:1]]
@dig Cozy House;mp03: typeclasses.rooms.DabblersRoom = red door;door;inside,outside;leave
# Cozy Tea 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]]
@desc red door = A painted red door where the round top of the door fits snugly in the bark of the tree. Along with a large brass doorknob, the door sports the most curious door knocker in the shape of a goblin's face.
# Red Door:1 ends here
# This exit should be special. First, it is locked unless a character has the =open_red_door= tag.
# [[file:../../../projects/mud.org::*Red Door][Red Door:2]]
@lock door = traverse:tag(open_red_door, mp)
# Red Door:2 ends here
# Needs a message why one cant walk through:
# [[file:../../../projects/mud.org::*Red Door][Red Door:3]]
@set door/err_traverse = "The door seems locked."
# Red Door:3 ends here
# If you do figure out how to get through the door:
# [[file:../../../projects/mud.org::*Red Door][Red Door:4]]
@set door/traverse_msg = "You stoop as you step through the doorway..."
# Red Door:4 ends here
# We described [[Knocker][the knocker]] earlier, as it holds the /virtual key/ for unlocking the door. But looking at the door, should show the knocker too.
# [[file:../../../projects/mud.org::*Red Door][Red Door:5]]
@set door/hidden_tag = "hidden_knocker"
# Red Door:5 ends here
# Inside
# Fix the inside of the “House”:
# [[file:../../../projects/mud.org::*Inside][Inside:1]]
@teleport mp03
# Inside:1 ends here
# Might as well stay a while:
# [[file:../../../projects/mud.org::*Inside][Inside:2]]
@sethome me = here
# Inside:2 ends here
# And the best description ever:
# [[file:../../../projects/mud.org::*Inside][Inside:3]]
@desc here = An enormous stone hearth overshadows this round room with dark paneling. A subtle smell of tea and incense. Large, overstuffed chairs sit invitingly by the fireplace. Oddly angled shelves with books and knickknackery adorn the walls while a trolley supports a large kettle, cups and scones.
# Inside:3 ends here
# Since we want the description to include the state of the fire, we need some /parts/ to assemble. Still not sure how this should be done.
# [[file:../../../projects/mud.org::*Inside][Inside:4]]
@set here/initial_desc = "You found a cozy, cornerless room."
# Ravenous State
@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."
# Fed State
@set here/fire_on = "Large, overstuffed chairs sit invitingly by a fire casting shadows that dance on the dark paneling."
# Full State
@set here/fire_full = "Large, overstuffed chairs slightly shield you from the bright light of the roaring fire in the fireplace of a stone hearth."
# And a final description:
@set here/final_desc = "Oddly angled shelves with books and knickknackery adorn the walls around a tapestry. The subtle smell of wood smoke, incense and tea leads you to a trolley supporting a large teapot, cups and freshly baked scones."
# Inside:4 ends here
# Granted, none of the dynamic description will work until we create the [[Fire]].
# Lets come up with a lot of descriptions:
# [[file:../../../projects/mud.org::*Inside][Inside:5]]
@detail tapestry = The muted colors of the tapestry either show its age or its location over the sometimes smokey hearth. It shows a gallant stag surrounded by woodland creatures. A racoon holds aloft a gold box while a wolf has a gnarled staff. A raven perched on the stag's antlers grips a blue ball in its beak.
# Inside:5 ends here
# We should describe all the objects in the tapestry, eh?
# [[file:../../../projects/mud.org::*Inside][Inside:6]]
@detail raven;ball;blue ball = The raven in the tapestry winks at you, and says, “Nevermore.” Really? It probably didn't. Your eyes must be playing trickster.
# Inside:6 ends here
# And the other animals:
# [[file:../../../projects/mud.org::*Inside][Inside:7]]
@detail wolf = The gnarled staff the wolf in the tapestry holds looks a lot like the staff the gnome, Dabbler, has.
#
@detail stag;deer = The majestic looking deer in the tapestry with gold fur and antlers that look more like tree branches.
#
@detail raccoon;box;gold box = The box the raccoon in the tapestry is holding seems to be a distraction, for he's pocketing a gold coin with his other paw.
# Inside:7 ends here
# Will this staff get confused at some point?
# [[file:../../../projects/mud.org::*Inside][Inside:8]]
@detail staff;gnarled staff = The gnarled staff in the tapestry that the wolf is holding seems to be made of oak with a dark petina from age. Three small leaves has sprouted from the side.
# Inside:8 ends here
# Touch up the exit:
# [[file:../../../projects/mud.org::*Inside][Inside:9]]
@desc leave = A wood door with a large brass knob leads to the outside.
#
@set leave/traverse_msg = "You open the door and step outside..."
# Inside:9 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]]
@create/drop fireplace;fire;embers : typeclasses.pets.Fire
# Fireplace:1 ends here
# How about some aliases:
# [[file:../../../projects/mud.org::*Fireplace][Fireplace:2]]
@lock fire = get:false()
# Fireplace:2 ends here
# And a description that will be overridden:
# [[file:../../../projects/mud.org::*Fireplace][Fireplace:3]]
@desc fireplace = A stone fireplace with a carved wooden mantel supporting small pictures, some books and a black statue.
# Fireplace:3 ends here
# Since we mentioned some details, we better mention them:
# [[file:../../../projects/mud.org::*Fireplace][Fireplace:4]]
@detail pictures = Two small framed pictures perch above the fireplace mantle. One is of a satyr playing a saxophone, and the other is of a fish with a big smile.
# Fireplace:4 ends here
# This reference in this detail is obviously, only for me:
# [[file:../../../projects/mud.org::*Fireplace][Fireplace:5]]
@detail statue = A small, black statue of a salamander curled around a book, engraved with a title, "Seeing Stones".
# Fireplace:5 ends here
# I imagine a giant picture over the fireplace … need to do something interesting with it.
# [[file:../../../projects/mud.org::*Fireplace][Fireplace:6]]
@detail picture = Above the fireplace is a large, somewhat abstract painting stretching its arm-like branches with shadowing that looks like a yawn.
# Fireplace:6 ends here
# Knickknacks
# What sort of non-books do we want to look at?
# [[file:../../../projects/mud.org::*Knickknacks][Knickknacks:1]]
@create/drop few trinkets;trinkets;trinket;knickknacks;knickknackery;doodads;doodad;knick-knacks: typeclasses.things.Trinket
# Knickknacks:1 ends here
# Lets not let anything of this sort be picked up:
# [[file:../../../projects/mud.org::*Knickknacks][Knickknacks:2]]
@lock trinkets = get:false()
#
@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.
# [[file:../../../projects/mud.org::*Magic 8 Ball][Magic 8 Ball:1]]
@create crystal ball;ball;magic ball: typeclasses.things.CrystalBall
# Magic 8 Ball:1 ends here
# And its description:
# [[file:../../../projects/mud.org::*Magic 8 Ball][Magic 8 Ball:2]]
@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
# And we should hide it:
# [[file:../../../projects/mud.org::*Magic 8 Ball][Magic 8 Ball:3]]
@set ball/hidden_tag = "hidden_ball"
#
@lock ball = view:tag(hidden_ball)
#
drop ball
# Magic 8 Ball:3 ends here
# Books
# We mentioned shelves of books:
# [[file:../../../projects/mud.org::*Books][Books:1]]
@detail shelves;bookshelf;bookshelves = Shelves at various angles embellish the walls of this small, cozy room. Leatherbound books weigh each shelf, while some stacks of books support other shelves. Dabbler has decorated some shelves with odd trinkets.
# Books:1 ends here
# This should be an object of “books”, but looking should pull up a random list of books.
# [[file:../../../projects/mud.org::*Books][Books:2]]
@create/drop books:typeclasses.readables.Books
# Books:2 ends here
# I start with the name, =books=, but when we look in the room, I want to see /collection/:
# [[file:../../../projects/mud.org::*Books][Books:3]]
@name books = collection of books;books
# Books:3 ends here
# With a good description:
# [[file:../../../projects/mud.org::*Books][Books:4]]
@desc books = Books of different sizes and colors. So many books. Perhaps you want to |glook|n at a single |gbook|n at random?
# Books:4 ends here
# Trolley of Scones
# The trolley [[file:~/src/moss-n-puddles/typeclasses/consumables.py::class Producer(Object):][produces]] random scones, which, like the [[Berry Trolley][berries]] can be eaten or fed to the wildlife.
# [[file:../../../projects/mud.org::*Trolley of Scones][Trolley of Scones:1]]
@create/drop trolley;trolly : typeclasses.consumables.Trolley
# Trolley of Scones:1 ends here
# We mentioned a /trolley/ with tea, cups and scones:
# [[file:../../../projects/mud.org::*Trolley of Scones][Trolley of Scones:2]]
@desc trolley = A tea trolley, complete with a small collection of teacups, a magical teapot, as well as a daily assortment of scones.
# Trolley of Scones:2 ends here
# We have to have the trolley bake something with the Python command:
# [[file:../../../projects/mud.org::*Trolley of Scones][Trolley of Scones:3]]
py here.search("trolley").do_bake()
# Trolley of Scones:3 ends here
# And lets not clutter up the scene too much:
# [[file:../../../projects/mud.org::*Trolley of Scones][Trolley of Scones:4]]
@lock trolley = view:tag(hidden_trolley)
# Trolley of Scones:4 ends here
# Tea Service
# The “room” gives the teacups, and the “teapot” fills the cups, so we just need descriptions:
# [[file:../../../projects/mud.org::*Tea Service][Tea Service:1]]
@detail teacups = An odd, yet interesting assortment of teacups. Take one.
#
@detail teacup = Each cup is unique. Take one to look further.
# Tea Service:1 ends here
# A [[file:~/src/moss-n-puddles/typeclasses/drinkables.py::class Teapot(Object):][teapot]] will contain a type of tea … either given or randomly chosen.
# A teapot will “fill” a teacup forever, until it is “remade”.
# [[file:../../../projects/mud.org::*Tea Service][Tea Service:2]]
@create/drop teapot;pot;tea pot:typeclasses.drinkables.Teapot
#
@desc teapot = An adorable brown teapot, waiting for you to |gmake|n some tea.
# Tea Service:2 ends here
# And of course, you cant steal the tea pot:
# [[file:../../../projects/mud.org::*Tea Service][Tea Service:3]]
@lock teapot = get:false()
#
@set teapot/get_err_msg = "You don't need to carry it around to make tea."
# Tea Service:3 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.
# [[file:../../../projects/mud.org::*Chairs][Chairs:1]]
@create/drop chairs:typeclasses.sittables.Sittables
# Chairs:1 ends here
# Add aliases afterwards:
# [[file:../../../projects/mud.org::*Chairs][Chairs:2]]
@name chairs = few overstuffed chairs;overstuffed chairs;chairs;chair
# Chairs:2 ends here
# And the description:
# [[file:../../../projects/mud.org::*Chairs][Chairs:3]]
@desc chairs = A few, dark leather, overstuffed chairs, each with a soft, colorful blanket and pillow. An invitation for a cozy nap.
# Chairs:3 ends here
# Cant steal em:
# [[file:../../../projects/mud.org::*Chairs][Chairs:4]]
@lock chairs = get:false()
#
@set chairs/get_err_msg = "It's way too heavy for you to lift."
# Chairs:4 ends here
# And textual descriptions the object can use:
# [[file:../../../projects/mud.org::*Chairs][Chairs:5]]
@set chairs/adjective = "in"
#
@set chairs/article = "the"
#
@set chairs/singular = "an overstuffed chair"
#
@set chairs/extra = "This feels << ^ very ^ quite>> <<nice ^ cozy ^ comfortable>>.|n"
# Chairs:5 ends here
# Character: Dabbler
# My characters should be NPCs, so they can stick around if Im 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 = "<<White ^ Light blue ^ Gray>> mist appears...along with the smell of sulphur... ;; When the smoke clears, an old gnome <<emerges ^ materializes ^ shows up, looking a bit confused>>."
#
@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:typeclasses.rooms_dark.DarkRoom = 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 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).
# [[file:../../../projects/mud.org::*Sconce][Sconce:1]]
@create/drop sconce;candle holder: typeclasses.consumables.Sconce
# 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
# Connect the exit:
# [[file:../../../projects/mud.org::*Sconce][Sconce:3]]
@set sconce/exit = $search(stairs behind bookcase)
#
@set sconce/room = $search(Cozy House)
# Sconce:3 ends here
# Hide it a bit?
# [[file:../../../projects/mud.org::*Sconce][Sconce:4]]
@set sconce/hidden_tag = "hidden_sconce"
#
@lock sconce = view:tag(hidden_sconce)
# Sconce:4 ends here
# We can =get= an endless supply of candles here:
# [[file:../../../projects/mud.org::*Sconce][Sconce:5]]
@set sconce/make_name = "candle"
# Sconce:5 ends here
# And a verb when they /get/ the consumable:
# [[file:../../../projects/mud.org::*Sconce][Sconce:6]]
@set sconce/make_verb = "$conj(take) the"
#
@set sconce/make_note = ", but another magically appears in its place"
# Sconce:6 ends here
# This one is optional as it defaults to Consumable:
# [[file:../../../projects/mud.org::*Sconce][Sconce:7]]
@set sconce/make_class = "typeclasses.lightables.Candle"
# Sconce:7 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:8]]
@set sconce/make_desc = "Curiously shaped taper with scales like a snake."
# Sconce:8 ends here
# How much is there when you pick them?
# [[file:../../../projects/mud.org::*Sconce][Sconce:9]]
@set sconce/make_amount = 1
# Sconce:9 ends here
# Pulling Sconce
# Temporarily move the exit into the room.
# Reset things:
# [[file:../../../projects/mud.org::*Pulling Sconce][Pulling Sconce:1]]
@set sconce/pull_msg = "You hear a click, and the bookcase next to the candle swings forward revealing a secret passage."
# 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
# Add aliases that make sense:
# [[file:../../../projects/mud.org::*Inside the Secret Room][Inside the Secret Room:2]]
@alias up the stairs = up
#
@set stairs/traverse_msg = "You climb the stone stairs back to the cozy room."
# Inside the Secret Room:2 ends here
# And details to make this room feel intentional as well.
# [[file:../../../projects/mud.org::*Inside the Secret Room][Inside the Secret Room:3]]
@detail table = Made from a black wood. Dusty on the edges.
# Inside the Secret Room:3 ends here
# Are the equipment stuff we could =use=?
# [[file:../../../projects/mud.org::*Inside the Secret Room][Inside the Secret Room:4]]
@detail equipment = pipes, beakers, tubes ...
# Inside the Secret Room:4 ends here
# Should the jars be objects that could be picked up?
# [[file:../../../projects/mud.org::*Inside the Secret Room][Inside the Secret Room:5]]
@detail jars = Hrm. Newt eyes, bat wings... interesting contents.
# Inside the Secret Room:5 ends here
# Bottles same as jars?
# [[file:../../../projects/mud.org::*Inside the Secret Room][Inside the Secret Room:6]]
@detail bottles = Four bottles contain clear liquids and are labeled: DA, KI, ON, and SU
# Inside the Secret Room:6 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
# Cant 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 now that we are done, say it:
# [[file:../../../projects/mud.org::*Bugs][Bugs:1]]
say I have finished this, the first version, of my creation.
# Bugs:1 ends here