From 951d35356d326c18495129ab12fdf54256603216 Mon Sep 17 00:00:00 2001 From: Howard Abrams Date: Sat, 10 May 2025 21:57:12 -0700 Subject: [PATCH] Casting spells ... first, is donkey head Spells can affect a characters speech and their appearance. All spells should create attributes with a 'effect' category, and spell scripts will clean up after they are stopped. --- commands/default_cmdsets.py | 3 +- commands/everyone.py | 35 ++- commands/wizards.py | 40 ++- typeclasses/characters.py | 49 +++- typeclasses/pets.py | 2 +- typeclasses/puppets.py | 2 +- typeclasses/scripts.py | 25 ++ world/version1.ev | 502 +++++++++++++++++++----------------- 8 files changed, 411 insertions(+), 247 deletions(-) diff --git a/commands/default_cmdsets.py b/commands/default_cmdsets.py index aff3516..b56ca72 100644 --- a/commands/default_cmdsets.py +++ b/commands/default_cmdsets.py @@ -21,7 +21,7 @@ from evennia.contrib.rpg.rpsystem import RPSystemCmdSet from evennia.contrib.rpg.character_creator.character_creator import ContribChargenCmdSet from commands.sittables import CmdNoSitStand from commands.everyone import CmdTake, CmdThink, CmdSay, CmdWhisper -from commands.wizards import CmdGM, CmdGMTrigger +from commands.wizards import CmdGM, CmdSpell, CmdGMTrigger class CharacterCmdSet(default_cmds.CharacterCmdSet): """ @@ -46,6 +46,7 @@ class CharacterCmdSet(default_cmds.CharacterCmdSet): self.add(CmdSay) self.add(CmdWhisper) self.add(CmdGM) + self.add(CmdSpell) self.add(CmdGMTrigger) diff --git a/commands/everyone.py b/commands/everyone.py index 51fd127..d311251 100755 --- a/commands/everyone.py +++ b/commands/everyone.py @@ -9,7 +9,29 @@ from evennia.commands.default.muxcommand import MuxCommand from evennia.contrib.rpg.rpsystem import send_emote from evennia.utils import iter_to_str, logger -from utils.word_list import routput, paragraph +from utils.word_list import routput, paragraph, choices + +def speech_effect(speech, verb, target, effects): + """ + Returns a tuple for what a user thinks he said, and what + others actually here. If no effect, just return speech twice. + + Effects: + - mute ... can't talk + - donkied ... target and others hear the value of effect + - sloshed ... slurred speech + + To administer: + + @set woman/donkied:effect = "Heehaw! ;; Heehaw, heehaw!" + """ + for effect in effects: + if effect: + if effect.db_key == 'donkied': + msg = choices(effect.value) + return (msg, msg, "bray") + + return (speech, speech, verb) class CmdWhisper(MuxCommand): @@ -146,12 +168,19 @@ class CmdSay(MuxCommand): else: verb = "say" + for_me, for_others, verb = \ + speech_effect(speech, verb, + self.caller, + self.caller.attributes.get(category="effect", + return_obj=True, + return_list=True)) + # The `send_emote` is _global_, so if we want to say to 'Bob', # 'You say ...', we have to both send him a message with the # 'You' as well as everyone else with the 'send_emote'. to_whom = chars_list(self.lhs, verb, for_rp=False) if 'to' in self.switches else '' - full_speech = f"You {adverb}{verb}{to_whom}, \"{speech}\"" + full_speech = f"You {adverb}{verb}{to_whom}, \"{for_me}\"" self.caller.msg(full_speech, from_obj=self.caller) # English is weird... @@ -160,7 +189,7 @@ class CmdSay(MuxCommand): targets = [item for item in self.caller.location.contents if item != self.caller] to_whom = chars_list(self.lhs, verb) if 'to' in self.switches else '' - full_speech = f"/Me {adverb}{verb}s{to_whom}, \"{speech}\"" + full_speech = f"/Me {adverb}{verb}s{to_whom}, \"{for_others}\"" send_emote(self.caller, targets, full_speech, msg_type="say", anonymous_add=None, quiet=True) diff --git a/commands/wizards.py b/commands/wizards.py index b50ba8a..4eb8235 100755 --- a/commands/wizards.py +++ b/commands/wizards.py @@ -2,11 +2,13 @@ from re import match -from evennia import CmdSet +from evennia import CmdSet, create_script from evennia.utils import delay, logger from evennia.commands.default.muxcommand import MuxCommand +from evennia.contrib.rpg.rpsystem import send_emote from .command import Command +from typeclasses.scripts import DonkeyHeadSpell from utils.word_list import routput class CmdFly(Command): @@ -65,8 +67,42 @@ class CmdGM(MuxCommand): elif o.is_typeclass('typeclasses.characters.Character'): o.msg(self.args) - logger.info(f"switches = {self.switches} lhs={self.lhs} rhs={self.rhs} / args={self.args}") +class CmdSpell(Command): + key = "spell" + aliases = ['cast'] + locks = "cmd:perm(gm) or perm(Admin)" + + def parse(self): + self.spell = None + self.target = None + + m = match(r"([^ ]+)( +on +(.+))?", self.args.strip()) + if m: + self.spell = m.group(1) + self.target = m.group(3) + + def func(self): + caster = self.caller + if not self.spell: + caster.msg('Usage: cast [on ]') + return + + char = None + if self.target: + char = caster.search(self.target) + if not char: + return + + if self.spell == 'donkey' and char: + create_script(key="donkey_head", + typeclass=DonkeyHeadSpell, + interval=130, + start_delay=True, + attributes=[("target", char)]) + caster.msg(f"You cast |wHead of Donkey|n on {char}") + else: + caster.msg(f"You fail to cast {self.spell}") class CmdGMTrigger(Command): """The trigger command kicks off a series of named events. diff --git a/typeclasses/characters.py b/typeclasses/characters.py index 3a45ca6..bceb383 100644 --- a/typeclasses/characters.py +++ b/typeclasses/characters.py @@ -8,7 +8,7 @@ creation commands. """ -from re import match +from re import match, compile from evennia.contrib.game_systems.gendersub import GenderCharacter from evennia.contrib.rpg.rpsystem import ContribRPCharacter @@ -16,7 +16,7 @@ from evennia.contrib.rpg.rpsystem import send_emote from evennia.prototypes.spawner import spawn from evennia.utils import delay # , logger -from utils.word_list import routput +from utils.word_list import routput, choices from .objects import Object from .tutorial import TutorBird, TutorialState @@ -115,6 +115,51 @@ class Character(Object, GenderCharacter, ContribRPCharacter): self.msg(f"{victim.key} doesn't have a {to_take} you can take.") + def pronoun_subjective(self, uppercase=False): + gender = self.attributes.get('gender') + if gender == "male": + results = 'He' + elif gender == "female": + results = 'She' + elif gender == "neutral": + results = 'It' + else: + results = 'They' + + return results if uppercase else results.lower() + + def gendered_text(self, text): + """ + Replace entries, like |s and |p with pronouns. + Like 'he' and 'her' + """ + gender_rx = compile(r"(?darkening twilightawakening dawnlazy afternoonnight sky. As morning, you can hear the dawn chorus of birdsafternoon, you can hear the buzzing of insects around giant colorful flowersevening, you can't hear much as most of the forest creatures are settling down for the nightnight, you can hear crickets and an occassional owl. 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 @@ -50,7 +50,7 @@ pose looking awesome # Need to add weather and time data to this: -# [[file:../../../projects/mud.org::*The Forest][The Forest:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Forest][The Forest:3]] @update here = typeclasses.rooms_weather.TimeWeatherRoom # The Forest:3 ends here @@ -60,7 +60,7 @@ pose looking awesome # Describe the trees: -# [[file:../../../projects/mud.org::*The Forest][The Forest:4]] +# [[file:../../../Dropbox/org/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 @@ -68,15 +68,15 @@ pose looking awesome # And the flowers: -# [[file:../../../projects/mud.org::*The Forest][The Forest:5]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Puddles][Puddles:1]] @create/drop puddle : typeclasses.things.Puddle # Puddles:1 ends here @@ -85,7 +85,7 @@ pose looking awesome # And an elusive description: -# [[file:../../../projects/mud.org::*Puddles][Puddles:2]] +# [[file:../../../Dropbox/org/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 @@ -94,17 +94,17 @@ pose looking awesome # And keep it locked down: -# [[file:../../../projects/mud.org::*Puddles][Puddles:3]] +# [[file:../../../Dropbox/org/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, let’s just make one that I can drop. -# [[file:../../../projects/mud.org::*Sticks][Sticks:1]] +# [[file:../../../Dropbox/org/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 @@ -113,10 +113,10 @@ py timed_script = evennia.create_script(key="Create Sticks", 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]] +# [[file:../../../Dropbox/org/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 @@ -124,7 +124,7 @@ py timed_script = evennia.create_script(key="Create Sticks", # The moss is purdy: -# [[file:../../../projects/mud.org::*Boulder][Boulder:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Boulder][Boulder:2]] @detail moss = "Even in this light, the moss radiates a surreal color of green." # Boulder:2 ends here @@ -132,7 +132,7 @@ py timed_script = evennia.create_script(key="Create Sticks", # And the ivy is … uh. -# [[file:../../../projects/mud.org::*Boulder][Boulder:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Boulder][Boulder:3]] @detail ivy = "You see...well, ivy. Uhm, it's green, and..." # Boulder:3 ends here @@ -140,7 +140,7 @@ py timed_script = evennia.create_script(key="Create Sticks", # The runes use multibyte unicode which screws up the =telnet= client. -# [[file:../../../projects/mud.org::*Boulder][Boulder:4]] +# [[file:../../../Dropbox/org/projects/mud.org::*Boulder][Boulder:4]] @detail runes;rune = The runes read ᛞ ᚪ ᛒ ᛚ ᚱ # Boulder:4 ends here @@ -149,7 +149,7 @@ py timed_script = evennia.create_script(key="Create Sticks", # The top of the boulder should be another room, accessible by the =climb=, but maybe it isn’t “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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Boulder][Boulder:5]] @dig Boulder Top;mp02 : typeclasses.rooms_weather.TimeWeatherRoom = boulder,climb # Boulder:5 ends here @@ -157,7 +157,7 @@ py timed_script = evennia.create_script(key="Create Sticks", # The ability to /climb/ the boulder isn’t immediately obvious, so let’s make it a bit of a secret: -# [[file:../../../projects/mud.org::*Boulder][Boulder:6]] +# [[file:../../../Dropbox/org/projects/mud.org::*Boulder][Boulder:6]] @desc boulder = A boulder with patches of moss and delicate clover. A carved symbol and even some runes try to hide behind tendrils of ivy as if keeping a secret. Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! @@ -167,7 +167,7 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # To take advantage of our [[Hidden Things]], we put the right tag on it: -# [[file:../../../projects/mud.org::*Boulder][Boulder:7]] +# [[file:../../../Dropbox/org/projects/mud.org::*Boulder][Boulder:7]] @set boulder/hidden_tag = "hidden_boulder" # @lock boulder = view:tag(hidden_boulder) @@ -177,19 +177,19 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # And give it some aliases: -# [[file:../../../projects/mud.org::*Boulder][Boulder:8]] +# [[file:../../../Dropbox/org/projects/mud.org::*Boulder][Boulder:8]] @name boulder = climb the boulder;boulder;climb;climb up # Boulder:8 ends here -# [[file:../../../projects/mud.org::*Boulder][Boulder:9]] +# [[file:../../../Dropbox/org/projects/mud.org::*Boulder][Boulder:9]] @set boulder/traverse_msg = "You move some ivy out of the way and pick your way up the boulder from one hold to another..." # Boulder:9 ends here -# Top of Boulder + # Let’s jump to the top of the boulder to proceed: -# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*Top of Boulder][Top of Boulder:1]] @teleport mp02 # Top of Boulder:1 ends here @@ -197,7 +197,7 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # And the description: -# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Top of Boulder][Top of Boulder:2]] @desc here = While high, the trees still tower over you. Still, a nice view. Lots of patches of moss to sit down and relax. # Top of Boulder:2 ends here @@ -205,21 +205,21 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # Describe the climb down: -# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Top of Boulder][Top of Boulder:3]] @name climb = climb down;climb;down # Top of Boulder:3 ends here # And a description of the climb: -# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:4]] +# [[file:../../../Dropbox/org/projects/mud.org::*Top of Boulder][Top of Boulder:4]] @desc climb = The climb seemed easy, but you're not sure you can handle the footholds going the other way around. # Top of Boulder:4 ends here # And describe the journey: -# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*Top of Boulder][Top of Boulder:5]] @set climb/traverse_msg = "You crawl backwards, feeling with your foot for a hold. Got it! Then another one...hoping the moss' rhizoids hold..." # Top of Boulder:5 ends here @@ -227,42 +227,42 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # Let’s make a nice spot to sit down on: -# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:6]] +# [[file:../../../Dropbox/org/projects/mud.org::*Top of Boulder][Top of Boulder:6]] @create/drop moss;patch:typeclasses.sittables.Sittable # Top of Boulder:6 ends here # With a nice description: -# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:7]] +# [[file:../../../Dropbox/org/projects/mud.org::*Top of Boulder][Top of Boulder:7]] @desc moss = A cushioned patch of moss of the most vibrant green. # Top of Boulder:7 ends here # Can’t take the moss with you: -# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:8]] +# [[file:../../../Dropbox/org/projects/mud.org::*Top of Boulder][Top of Boulder:8]] @lock moss = get:false() # Top of Boulder:8 ends here # Can we hide it too? -# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:9]] +# [[file:../../../Dropbox/org/projects/mud.org::*Top of Boulder][Top of Boulder:9]] @lock moss = view:tag(hidden_moss) # Top of Boulder:9 ends here # And a lovely message about why you can’t steal moss: -# [[file:../../../projects/mud.org::*Top of Boulder][Top of Boulder:10]] +# [[file:../../../Dropbox/org/projects/mud.org::*Top of Boulder][Top of Boulder:10]] @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:10 ends here -# Field + # To the east, let’s make a nice meadow. Start at the Forest: -# [[file:../../../projects/mud.org::*Field][Field:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*Field][Field:1]] @teleport mp01 # Field:1 ends here @@ -270,7 +270,7 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # And we use the =tunnel= command this time: -# [[file:../../../projects/mud.org::*Field][Field:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Field][Field:2]] @dig Frog Meadow;mp05 : typeclasses.rooms_weather.TimeWeatherRoom = east;e;path,footpath;west;w # Field:2 ends here @@ -278,7 +278,7 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # A description if they look east: -# [[file:../../../projects/mud.org::*Field][Field:3]] +# [[file:../../../Dropbox/org/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 @@ -286,7 +286,7 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # And a nice journey message to go east out of the forest: -# [[file:../../../projects/mud.org::*Field][Field:4]] +# [[file:../../../Dropbox/org/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 @@ -294,7 +294,7 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # Before we label it, we follow =east=: -# [[file:../../../projects/mud.org::*Field][Field:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*Field][Field:5]] @teleport mp05 # Field:5 ends here @@ -303,15 +303,15 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # 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 waterfall cascades on the far side of this meadow creating a stream that meanders through the tall grass and large yellow flowers. They nod their sleepy heads to you as you pass by in the darkening twilightawakening dawnlazy afternoondark night. A gap in the trees show how you can return to the footpath in the forest. +# [[file:../../../Dropbox/org/projects/mud.org::*Field][Field:6]] +@desc here = A large waterfall cascades on the far side of this meadow creating a stream that meanders through the tall grass and large yellow flowers. They nod their sleepy heads to you as you pass by in the darkening twilightawakening dawnlazy afternoondark 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]] +# [[file:../../../Dropbox/org/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 @@ -319,7 +319,7 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # And a description: -# [[file:../../../projects/mud.org::*Field][Field:8]] +# [[file:../../../Dropbox/org/projects/mud.org::*Field][Field:8]] @desc footpath = This footpath goes in a forest of immense trees. # Field:8 ends here @@ -328,7 +328,7 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # Can the waterfall be a detail or an actual object? -# [[file:../../../projects/mud.org::*Field][Field:9]] +# [[file:../../../Dropbox/org/projects/mud.org::*Field][Field:9]] @detail stream;field = A slow-moving stream meanders like a snake in the grassy field. Little green frogs cling to grass stems hanging over the water. # Field:9 ends here @@ -337,15 +337,15 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # And detail the frogs: -# [[file:../../../projects/mud.org::*Field][Field:10]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Waterfall][Waterfall:1]] @create/drop waterfall;water # Waterfall:1 ends here @@ -354,7 +354,7 @@ Wait! You notice a foot hold, and then another. You can |gclimb|n this boulder! # And the description: -# [[file:../../../projects/mud.org::*Waterfall][Waterfall:2]] +# [[file:../../../Dropbox/org/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 pool. Wait! Is there a large cave entrance hidden behind the water? @@ -364,18 +364,22 @@ Wait! Is there a large cave entrance hidden behind the water? # Looking at the waterfall, shows the cave entrance: -# [[file:../../../projects/mud.org::*Waterfall][Waterfall:3]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Lair of the Beast][The Lair of the Beast:1]] @teleport mp05 # The Lair of the Beast:1 ends here @@ -383,7 +387,7 @@ Wait! Is there a large cave entrance hidden behind the water? # 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]] +# [[file:../../../Dropbox/org/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 @@ -391,7 +395,7 @@ Wait! Is there a large cave entrance hidden behind the water? # And we make it hidden: -# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:3]] +# [[file:../../../Dropbox/org/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) @@ -401,7 +405,7 @@ Wait! Is there a large cave entrance hidden behind the water? # And a description if they look: -# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:4]] +# [[file:../../../Dropbox/org/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 @@ -409,7 +413,7 @@ Wait! Is there a large cave entrance hidden behind the water? # And a description when entering … -# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:5]] +# [[file:../../../Dropbox/org/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 @@ -418,7 +422,7 @@ Wait! Is there a large cave entrance hidden behind the water? # Let’s step inside to finish this: -# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:6]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Lair of the Beast][The Lair of the Beast:6]] @teleport mp07 # The Lair of the Beast:6 ends here @@ -427,7 +431,7 @@ Wait! Is there a large cave entrance hidden behind the water? # And a description: -# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:7]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Lair of the Beast][The Lair of the Beast:7]] @desc here = Vaulted stone ceiling harbors the darkness that hovers a large mattress, so tall, you can barely see what might be resting on it. # The Lair of the Beast:7 ends here @@ -436,7 +440,7 @@ Wait! Is there a large cave entrance hidden behind the water? # And a description of leaving: -# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:8]] +# [[file:../../../Dropbox/org/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 @@ -445,7 +449,7 @@ Wait! Is there a large cave entrance hidden behind the water? # And the leaving message: -# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:9]] +# [[file:../../../Dropbox/org/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 @@ -454,17 +458,17 @@ Wait! Is there a large cave entrance hidden behind the water? # And a description of the mattress: -# [[file:../../../projects/mud.org::*The Lair of the Beast][The Lair of the Beast:10]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Lair of the Beast][The Lair of the Beast:10]] @detail mattress = Looks comfortable, if you could just get a leg up to get on it... Nope. Too tall, and just as well. It does not smell very good. # The Lair of the Beast:10 ends here -# Beast + # And we create the Big, Hairy Beast: -# [[file:../../../projects/mud.org::*Beast][Beast:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:1]] @create/drop big hairy beast;bhb;beast;hairy beast;monster;shadow: typeclasses.pets.BHB # Beast:1 ends here @@ -473,7 +477,7 @@ Nope. Too tall, and just as well. It does not smell very good. # And let’s hide it until we are ready: -# [[file:../../../projects/mud.org::*Beast][Beast:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:2]] @set beast/hidden_tag = "hidden_beast" # @lock beast = view:tag(hidden_beast) @@ -484,7 +488,7 @@ Nope. Too tall, and just as well. It does not smell very good. # And a general description that will be /expanded/ with its current reaction. -# [[file:../../../projects/mud.org::*Beast][Beast:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:3]] @desc beast = A big, hairy beast with long claws and teeth. # Beast:3 ends here @@ -492,7 +496,7 @@ Nope. Too tall, and just as well. It does not smell very good. # Can’t get this: -# [[file:../../../projects/mud.org::*Beast][Beast:4]] +# [[file:../../../Dropbox/org/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." @@ -503,7 +507,7 @@ Nope. Too tall, and just as well. It does not smell very good. # And set its sleepy time at 8pm … -# [[file:../../../projects/mud.org::*Beast][Beast:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:5]] @set beast/sleep_hour = 21 # Beast:5 ends here @@ -512,7 +516,7 @@ Nope. Too tall, and just as well. It does not smell very good. # It will wake at 8am … -# [[file:../../../projects/mud.org::*Beast][Beast:6]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:6]] @set beast/wake_hour = 8 # Beast:6 ends here @@ -521,7 +525,7 @@ Nope. Too tall, and just as well. It does not smell very good. # Let’s set some behavior levels. For instance, the beast is sad when he doesn’t see its friends: -# [[file:../../../projects/mud.org::*Beast][Beast:7]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:7]] @set beast/loneliness_amount = -2 # Beast:7 ends here @@ -530,7 +534,7 @@ Nope. Too tall, and just as well. It does not smell very good. # 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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:8]] @set beast/shyness_amount = 3 # Beast:8 ends here @@ -539,7 +543,7 @@ Nope. Too tall, and just as well. It does not smell very good. # How active should this pet be? Seems like at the moment, it shouldn’t 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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:9]] @set beast/active_amount = 10 # Beast:9 ends here @@ -548,7 +552,7 @@ Nope. Too tall, and just as well. It does not smell very good. # It isn’t that scared of new people, as it will ignore them when someone it knows is around. -# [[file:../../../projects/mud.org::*Beast][Beast:10]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:10]] @set beast/new_character_reaction = 'ignores' # Beast:10 ends here @@ -557,7 +561,7 @@ Nope. Too tall, and just as well. It does not smell very good. # 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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:11]] @set beast/scared_msg = "It seems <> 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 @@ -566,7 +570,7 @@ Nope. Too tall, and just as well. It does not smell very good. # Concerned level: -# [[file:../../../projects/mud.org::*Beast][Beast:12]] +# [[file:../../../Dropbox/org/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 @@ -575,7 +579,7 @@ Nope. Too tall, and just as well. It does not smell very good. # Interested level: -# [[file:../../../projects/mud.org::*Beast][Beast:13]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:13]] @set beast/interested_msg = "It seems <> in what you are doing <>. ;; Its << ^ large, ^ big,>> yellow eyes watch your every move." # Beast:13 ends here @@ -584,7 +588,7 @@ Nope. Too tall, and just as well. It does not smell very good. # Friendly level: -# [[file:../../../projects/mud.org::*Beast][Beast:14]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:14]] @set beast/friendly_msg = "It sits next to you, as its big, friendly eyes gaze as you. ;; It <> to you, wagging its tail-less behind. ;; It lays down next to you." # Beast:14 ends here @@ -593,7 +597,7 @@ Nope. Too tall, and just as well. It does not smell very good. # When the beast is sleeping, we can some times spam the room with the snores: -# [[file:../../../projects/mud.org::*Beast][Beast:15]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:15]] @set beast/sleeping_actions = "The <> <> <> lets loose a <> snore. ;; The <> <> <> growls in its sleep. ;; The <> <> <> twitches its <>. ;; The <> <> <> <> on its <> mattress." # Beast:15 ends here @@ -604,7 +608,7 @@ Nope. Too tall, and just as well. It does not smell very good. # The scared level doesn’t last long, so let’s just leave one message: -# [[file:../../../projects/mud.org::*Beast][Beast:16]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:16]] @set beast/scared_actions = "A shadow hovers at the edge of the meadow.." # Beast:16 ends here @@ -614,7 +618,7 @@ Nope. Too tall, and just as well. It does not smell very good. # Concerned actions: -# [[file:../../../projects/mud.org::*Beast][Beast:17]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:17]] @set beast/concerned_actions = "The <> <> <> <> concerned by your presence in the <>. ;; The <> <> <> seems concerned. Maybe it's hungry.. ;; The <> <> <> seems concerned and keeps its distance.." # Beast:17 ends here @@ -623,7 +627,7 @@ Nope. Too tall, and just as well. It does not smell very good. # Interested actions: -# [[file:../../../projects/mud.org::*Beast][Beast:18]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:18]] @set beast/interested_actions = "The <> <> <> seems <> in what you are doing <>. ;; The <> <> <> seems curious about you. ;; The <> <> <> stands on its hind legs. ;; The <> <> <> <> you with its <> yellow eyes." # Beast:18 ends here @@ -632,7 +636,7 @@ Nope. Too tall, and just as well. It does not smell very good. # Friendly actions: -# [[file:../../../projects/mud.org::*Beast][Beast:19]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:19]] @set beast/friendly_actions = "The <> <> <> <> <> wagging its backend<<, ^ as it seems>> happy to see . ;; The <> <> <> <> <> hoping to play with . ;; The <> <> <> flops over in front of wriggling <> on the ground. ;; The <> <> <> <> <> next to you. ;; The <> <> <> chases butterflies around the <>." # Beast:19 ends here @@ -641,7 +645,7 @@ Nope. Too tall, and just as well. It does not smell very good. # The ecstatic states are just a bit more than friendly. -# [[file:../../../projects/mud.org::*Beast][Beast:20]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:20]] @set beast/ecstatic_actions = "The <> <> <> <> <> to give a sloppy <>. ;; The <> <> <> <> <> wagging its backend as it seems <> excited to see . ;; The <> <> <> <> <> hoping to play with . ;; The <> <> <> flops over in front of happily wriggling on the ground. ;; The <> <> <> excitedly <> <> next to you. ;; The <> <> <> <> leaps into air. ;; The <> <> <> chases butterflies around the <>." # Beast:20 ends here @@ -650,7 +654,7 @@ Nope. Too tall, and just as well. It does not smell very good. # And the responses to being /pet/: -# [[file:../../../projects/mud.org::*Beast][Beast:21]] +# [[file:../../../Dropbox/org/projects/mud.org::*Beast][Beast:21]] @set beast/pet_scared_response = "You can't get near it to pet it. It seems scared of you." # @set beast/pet_concerned_response = "You can't get near it to pet it. It seems concerned by your presence." @@ -662,12 +666,12 @@ Nope. Too tall, and just as well. It does not smell very good. @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. ^ >> <( You ^ {0} )> << 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 ^ {0} )> <( give ^ gives )> 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 ^ {0} )> <( rub ^ rubs )> its belly." # Beast:21 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]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Dock][The Dock:1]] @teleport mp01 # The Dock:1 ends here @@ -675,7 +679,7 @@ Nope. Too tall, and just as well. It does not smell very good. # And tunnel to the dock: -# [[file:../../../projects/mud.org::*The Dock][The Dock:2]] +# [[file:../../../Dropbox/org/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 @@ -683,14 +687,14 @@ Nope. Too tall, and just as well. It does not smell very good. # With a mesage about leaving the trees so that I don’t have to repeat that in the room description: -# [[file:../../../projects/mud.org::*The Dock][The Dock:3]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/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 @@ -698,7 +702,7 @@ Nope. Too tall, and just as well. It does not smell very good. # And move ourselves there: -# [[file:../../../projects/mud.org::*The Dock][The Dock:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Dock][The Dock:5]] @teleport mp06 # The Dock:5 ends here @@ -706,7 +710,7 @@ Nope. Too tall, and just as well. It does not smell very good. # And describe this. -# [[file:../../../projects/mud.org::*The Dock][The Dock:6]] +# [[file:../../../Dropbox/org/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. Mesmorizing and calming the way the sound of the waves lap along the shore. Someone has set a nice chair for viewing. # The Dock:6 ends here @@ -716,7 +720,7 @@ Someone has set a nice chair for viewing. # And details? -# [[file:../../../projects/mud.org::*The Dock][The Dock:7]] +# [[file:../../../Dropbox/org/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? @@ -728,7 +732,7 @@ Someone has set a nice chair for viewing. # And describe the walk back into the forest: -# [[file:../../../projects/mud.org::*The Dock][The Dock:8]] +# [[file:../../../Dropbox/org/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 @@ -736,14 +740,14 @@ Someone has set a nice chair for viewing. # And a description: -# [[file:../../../projects/mud.org::*The Dock][The Dock:9]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Chair][Chair:1]] @create/drop chair;lounge chair:typeclasses.sittables.Sittable # Chair:1 ends here @@ -751,7 +755,7 @@ Someone has set a nice chair for viewing. # How descriptive: -# [[file:../../../projects/mud.org::*Chair][Chair:2]] +# [[file:../../../Dropbox/org/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 @@ -760,18 +764,18 @@ Looks good for being out in the weather. # Can’t steal this chair either: -# [[file:../../../projects/mud.org::*Chair][Chair:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Chair][Chair:3]] @lock chair = get:false() # Chair:3 ends here -# [[file:../../../projects/mud.org::*Chair][Chair:4]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Fishing Pole][Fishing Pole:1]] @create/drop fishing pole;pole:typeclasses.fishing.FishingPole # Fishing Pole:1 ends here @@ -779,7 +783,7 @@ Looks good for being out in the weather. # With a description: -# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:2]] +# [[file:../../../Dropbox/org/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 @@ -788,7 +792,7 @@ Looks good for being out in the weather. # 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]] +# [[file:../../../Dropbox/org/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?" @@ -798,7 +802,7 @@ Looks good for being out in the weather. # What about some details: -# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:4]] +# [[file:../../../Dropbox/org/projects/mud.org::*Fishing Pole][Fishing Pole:4]] @detail hook;bait = One of those shiny lures, made from gold coins. Curiouser. Seems you don't need to bait this hook. # Fishing Pole:4 ends here @@ -807,7 +811,7 @@ Looks good for being out in the weather. # 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:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*Fishing Pole][Fishing Pole:5]] @create/drop sign:typeclasses.readables.Readable # Fishing Pole:5 ends here @@ -815,7 +819,7 @@ Looks good for being out in the weather. # Should the description also be the message? -# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:6]] +# [[file:../../../Dropbox/org/projects/mud.org::*Fishing Pole][Fishing Pole:6]] @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:6 ends here @@ -823,7 +827,7 @@ Looks good for being out in the weather. # Might as well allow the user to read it: -# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:7]] +# [[file:../../../Dropbox/org/projects/mud.org::*Fishing Pole][Fishing Pole:7]] @set sign/inside = "Fish at your own annoyance. Please return pole when finished." # Fishing Pole:7 ends here @@ -831,18 +835,18 @@ Looks good for being out in the weather. # And lock down the sign: -# [[file:../../../projects/mud.org::*Fishing Pole][Fishing Pole:8]] +# [[file:../../../Dropbox/org/projects/mud.org::*Fishing Pole][Fishing Pole:8]] @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:8 ends here -# The Boat + # A boat on the sea is a separate room. -# [[file:../../../projects/mud.org::*The Boat][The Boat:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Boat][The Boat:1]] @dig/teleport Leaf Boat;mp08:typeclasses.rooms_weather.TimeWeatherRoom # The Boat:1 ends here @@ -851,7 +855,7 @@ Looks good for being out in the weather. # And describe sailing on it.: -# [[file:../../../projects/mud.org::*The Boat][The Boat:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Boat][The Boat:2]] @desc here = The lavender sea is tranquil as the giant leaf floats along an invisible current. The morning sun peaks above the collosal trees and the snowcapped mountains beyond. The afternoon sun peaks out briefly from misty clouds. @@ -859,11 +863,11 @@ Looks good for being out in the weather. The moon peaks out from behind wispy clouds. # The Boat:2 ends here -# The Island + # The boat should land on a distant island. -# [[file:../../../projects/mud.org::*The Island][The Island:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Island][The Island:1]] @dig/teleport Lonely Island;mp09:typeclasses.rooms_weather.TimeWeatherRoom # The Island:1 ends here @@ -872,17 +876,17 @@ Looks good for being out in the weather. # And describe it: -# [[file:../../../projects/mud.org::*The Island][The Island:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*The Island][The Island:2]] @teleport mp09 # @desc here = Vibrant green moss covers the island's gray rock. Wandering around the conifers you encounter giant statues of armored knights surrounding a huge, empty throne. An inscription at the base reads, ᚦ ᚮ ᚱ # The Island:2 ends here -# Connecting + # Create an exit for getting /into/ the boat: -# [[file:../../../projects/mud.org::*Connecting][Connecting:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*Connecting][Connecting:1]] @teleport mp06 # @open leaf-like boat;leaf boat;boat;leaf = mp08 @@ -893,11 +897,11 @@ Looks good for being out in the weather. # And describe the boat first: -# [[file:../../../projects/mud.org::*Connecting][Connecting:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Connecting][Connecting:2]] @desc boat = A giant leaf, tipped on all sides look like it could be a boat. Doesn't seem to be an oar, or even a rudder, but... # Connecting:2 ends here -# [[file:../../../projects/mud.org::*Connecting][Connecting:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Connecting][Connecting:3]] @set boat/traverse_msg = "You step into the large leaf shaped like a boat, and push off from the shore into the sea..." # Connecting:3 ends here @@ -906,7 +910,7 @@ Looks good for being out in the weather. # Now jump into the boat, -# [[file:../../../projects/mud.org::*Connecting][Connecting:4]] +# [[file:../../../Dropbox/org/projects/mud.org::*Connecting][Connecting:4]] @teleport mp08 # @open shore;island;dock = mp09 @@ -917,7 +921,7 @@ Looks good for being out in the weather. # And exiting the boat: -# [[file:../../../projects/mud.org::*Connecting][Connecting:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*Connecting][Connecting:5]] @set shore/traverse_msg = "When the boat stops, you step off..." # Connecting:5 ends here @@ -926,22 +930,22 @@ Looks good for being out in the weather. # Are they going to look before getting off? -# [[file:../../../projects/mud.org::*Connecting][Connecting:6]] +# [[file:../../../Dropbox/org/projects/mud.org::*Connecting][Connecting:6]] @desc shore = You seem to have arrived at some island. # Connecting:6 ends here -# Forest Path + # Return to the forest: -# [[file:../../../projects/mud.org::*Forest Path][Forest Path:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*Forest Path][Forest Path:1]] @teleport mp01 # Forest Path:1 ends here # Let’s travel west along the path in the forest: -# [[file:../../../projects/mud.org::*Forest Path][Forest Path:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Forest Path][Forest Path:2]] @dig Grotto;mp04 :typeclasses.rooms_weather.TimeWeatherRoom = west;w,east,e,path # Forest Path:2 ends here @@ -949,7 +953,7 @@ Looks good for being out in the weather. # With a nice message about wandering: -# [[file:../../../projects/mud.org::*Forest Path][Forest Path:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Forest Path][Forest Path:3]] @set west/traverse_msg = "You meander between mossy tree roots along a footpath for a while..." # Forest Path:3 ends here @@ -957,7 +961,7 @@ Looks good for being out in the weather. # And a description: -# [[file:../../../projects/mud.org::*Forest Path][Forest Path:4]] +# [[file:../../../Dropbox/org/projects/mud.org::*Forest Path][Forest Path: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. # Forest Path:4 ends here @@ -965,7 +969,7 @@ Looks good for being out in the weather. # Jump into the new room: -# [[file:../../../projects/mud.org::*Forest Path][Forest Path:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*Forest Path][Forest Path:5]] @teleport mp04 # Forest Path:5 ends here @@ -974,7 +978,7 @@ Looks good for being out in the weather. # And describe the tree and the door: -# [[file:../../../projects/mud.org::*Forest Path][Forest Path:6]] +# [[file:../../../Dropbox/org/projects/mud.org::*Forest Path][Forest Path:6]] @desc here = Moss-covered tree roots border the meandering footpath. A red door with a round top lies at the base of a giant tree, a carved sign over it reads, |wDabblers|n. # Forest Path:6 ends here @@ -982,7 +986,7 @@ Looks good for being out in the weather. # A description if they look east: -# [[file:../../../projects/mud.org::*Forest Path][Forest Path:7]] +# [[file:../../../Dropbox/org/projects/mud.org::*Forest Path][Forest Path:7]] @desc east = A winding footpath that leads through the forest of giant trees. # Forest Path:7 ends here @@ -990,7 +994,7 @@ Looks good for being out in the weather. # And a nice journey message to go east in of the forest: -# [[file:../../../projects/mud.org::*Forest Path][Forest Path:8]] +# [[file:../../../Dropbox/org/projects/mud.org::*Forest Path][Forest Path:8]] @set east/traverse_msg = "The mossy tree roots makes for an interesting path..." # Forest Path:8 ends here @@ -999,15 +1003,15 @@ Looks good for being out in the weather. # And extra things to see: -# [[file:../../../projects/mud.org::*Forest Path][Forest Path:9]] +# [[file:../../../Dropbox/org/projects/mud.org::*Forest Path][Forest Path:9]] @detail trees;tree = The trees in this forest are massive, but a smaller tree has a red door. Must lead to a closet! # Forest Path:9 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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Berry Bush][Berry Bush:1]] @create/drop berry bush;bush : typeclasses.consumables.Producer # Berry Bush:1 ends here @@ -1015,7 +1019,7 @@ Looks good for being out in the weather. # With a description: -# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:2]] +# [[file:../../../Dropbox/org/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 @@ -1023,14 +1027,14 @@ Looks good for being out in the weather. # We have to have the bush describe what it /makes/: -# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Berry Bush][Berry Bush:3]] @set bush/make_name = "berries" # Berry Bush:3 ends here # Including some plural aliases: -# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:4]] +# [[file:../../../Dropbox/org/projects/mud.org::*Berry Bush][Berry Bush:4]] @set bush/make_aliases = ["berry", "brambleberry", "brambleberries"] # Berry Bush:4 ends here @@ -1038,7 +1042,7 @@ Looks good for being out in the weather. # And a verb when they /get/ the consumable: -# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*Berry Bush][Berry Bush:5]] @set bush/make_verb = "pick some" # Berry Bush:5 ends here @@ -1046,7 +1050,7 @@ Looks good for being out in the weather. # 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:7]] +# [[file:../../../Dropbox/org/projects/mud.org::*Berry Bush][Berry Bush:7]] @set bush/make_desc = "Bright red berry with flecks of <>." # Berry Bush:7 ends here @@ -1054,7 +1058,7 @@ Looks good for being out in the weather. # How many berries are there when you pick them? -# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:8]] +# [[file:../../../Dropbox/org/projects/mud.org::*Berry Bush][Berry Bush:8]] @set bush/make_amount = 10 # Berry Bush:8 ends here @@ -1062,7 +1066,7 @@ Looks good for being out in the weather. # How many berries do you eat at a time: -# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:9]] +# [[file:../../../Dropbox/org/projects/mud.org::*Berry Bush][Berry Bush:9]] @set bush/make_eat_amount = 3 # Berry Bush:9 ends here @@ -1070,7 +1074,7 @@ Looks good for being out in the weather. # We can either have a single /eat/ message: -# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:10]] +# [[file:../../../Dropbox/org/projects/mud.org::*Berry Bush][Berry Bush:10]] @set bush/make_eat_msg = "Sweet and slightly tart. <>." # Berry Bush:10 ends here @@ -1078,7 +1082,7 @@ Looks good for being out in the weather. # Or many messages that can be randomly selected: -# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:11]] +# [[file:../../../Dropbox/org/projects/mud.org::*Berry Bush][Berry Bush:11]] @set bush/make_eat_msgs = [ "Sweet and slightly tart.", "<>.", "Ooo...that one was sour.", "That was a bit ripe, but still good.", "So sweet with a hint of <>." ] # Berry Bush:11 ends here @@ -1086,23 +1090,23 @@ Looks good for being out in the weather. # Let the user know when they consumed them all. -# [[file:../../../projects/mud.org::*Berry Bush][Berry Bush:12]] +# [[file:../../../Dropbox/org/projects/mud.org::*Berry Bush][Berry Bush:12]] @set bush/make_finish_msg = "Those were <>." # Berry Bush:12 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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:1]] @create/drop knocker: typeclasses.things.Knocker # Knocker:1 ends here # If it /looks/ like a goblin… -# [[file:../../../projects/mud.org::*Knocker][Knocker:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:2]] @name knocker = door knocker;knocker # Knocker:2 ends here @@ -1110,7 +1114,7 @@ Looks good for being out in the weather. # The knocker shouldn’t be stealable: -# [[file:../../../projects/mud.org::*Knocker][Knocker:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:3]] @lock knocker = get:false() # @set knocker/get_err_msg = "It appears firmly attached to the door." @@ -1120,7 +1124,7 @@ Looks good for being out in the weather. # Since we can remove the ring, let’s create it: -# [[file:../../../projects/mud.org::*Knocker][Knocker:4]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:4]] @create ring: typeclasses.things.Ring # Knocker:4 ends here @@ -1128,7 +1132,7 @@ Looks good for being out in the weather. # And give it an alias: -# [[file:../../../projects/mud.org::*Knocker][Knocker:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:5]] @name ring = brass ring;ring # Knocker:5 ends here @@ -1136,7 +1140,7 @@ Looks good for being out in the weather. # And a description: -# [[file:../../../projects/mud.org::*Knocker][Knocker:6]] +# [[file:../../../Dropbox/org/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 @@ -1144,7 +1148,7 @@ Looks good for being out in the weather. # Although we can interact with it, let’s not make it obvious that it is an object: -# [[file:../../../projects/mud.org::*Knocker][Knocker:7]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:7]] @set ring/hidden_tag = "hidden_ring" # @lock ring = view:tag(hidden_ring) @@ -1155,7 +1159,7 @@ Looks good for being out in the weather. # And let’s make it so we can take that: -# [[file:../../../projects/mud.org::*Knocker][Knocker:8]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:8]] @set ring/can_take = True # Knocker:8 ends here @@ -1164,7 +1168,7 @@ Looks good for being out in the weather. # Let’s tether the ring to the knocker … -# [[file:../../../projects/mud.org::*Knocker][Knocker:9]] +# [[file:../../../Dropbox/org/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." @@ -1174,7 +1178,7 @@ Looks good for being out in the weather. # And put the ring in the knocker’s mouth: -# [[file:../../../projects/mud.org::*Knocker][Knocker:10]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:10]] @give ring to knocker # Knocker:10 ends here @@ -1182,7 +1186,7 @@ Looks good for being out in the weather. # The description is dynamic from the Python code, so we don’t need this statement: -# [[file:../../../projects/mud.org::*Knocker][Knocker:11]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:11]] @desc knocker = The brass face looks at you and winks. # Knocker:11 ends here @@ -1191,7 +1195,7 @@ Looks good for being out in the weather. # 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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:12]] @set knocker/room_to_msg = "mp03" # Knocker:12 ends here @@ -1200,7 +1204,7 @@ Looks good for being out in the weather. # 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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:13]] @set here/knock_msg = "You grab the ring and knock firmly on the door." # Knocker:13 ends here @@ -1208,7 +1212,7 @@ Looks good for being out in the weather. # Then, what the other’s in the room read: -# [[file:../../../projects/mud.org::*Knocker][Knocker:14]] +# [[file:../../../Dropbox/org/projects/mud.org::*Knocker][Knocker:14]] @set here/knock_other_msg = "grabs the ring and knocks firmly on the door." # Knocker:14 ends here @@ -1216,22 +1220,22 @@ Looks good for being out in the weather. # And an error message if the ring is not with the goblin: -# [[file:../../../projects/mud.org::*Knocker][Knocker:15]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Cozy Tea House][Cozy Tea House:1]] @dig Dabbler's 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]] +# [[file:../../../Dropbox/org/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 @@ -1239,14 +1243,14 @@ Looks good for being out in the weather. # 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]] +# [[file:../../../Dropbox/org/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 can’t walk through: -# [[file:../../../projects/mud.org::*Red Door][Red Door:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Red Door][Red Door:3]] @set door/err_traverse = "The door seems locked." # Red Door:3 ends here @@ -1254,15 +1258,15 @@ Looks good for being out in the weather. # If you do figure out how to get through the door: -# [[file:../../../projects/mud.org::*Red Door][Red Door:4]] +# [[file:../../../Dropbox/org/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 -# Inside + # Fix the inside of the “House”: -# [[file:../../../projects/mud.org::*Inside][Inside:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*Inside][Inside:1]] @teleport mp03 # Inside:1 ends here @@ -1270,7 +1274,7 @@ Looks good for being out in the weather. # Might as well stay a while: -# [[file:../../../projects/mud.org::*Inside][Inside:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Inside][Inside:2]] @sethome me = here # Inside:2 ends here @@ -1278,7 +1282,7 @@ Looks good for being out in the weather. # And the best description ever: -# [[file:../../../projects/mud.org::*Inside][Inside:3]] +# [[file:../../../Dropbox/org/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 @@ -1287,7 +1291,7 @@ Looks good for being out in the weather. # 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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Inside][Inside:4]] @set here/initial_desc = "You found a cozy, cornerless room." # Ravenous State @@ -1312,7 +1316,7 @@ Looks good for being out in the weather. # Let’s come up with a lot of descriptions: -# [[file:../../../projects/mud.org::*Inside][Inside:5]] +# [[file:../../../Dropbox/org/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 @@ -1320,7 +1324,7 @@ Looks good for being out in the weather. # We should describe all the objects in the tapestry, eh? -# [[file:../../../projects/mud.org::*Inside][Inside:6]] +# [[file:../../../Dropbox/org/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 @@ -1328,7 +1332,7 @@ Looks good for being out in the weather. # And the other animals: -# [[file:../../../projects/mud.org::*Inside][Inside:7]] +# [[file:../../../Dropbox/org/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. @@ -1340,7 +1344,7 @@ Looks good for being out in the weather. # Will this staff get confused at some point? -# [[file:../../../projects/mud.org::*Inside][Inside:8]] +# [[file:../../../Dropbox/org/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 @@ -1348,17 +1352,17 @@ Looks good for being out in the weather. # Touch up the exit: -# [[file:../../../projects/mud.org::*Inside][Inside:9]] +# [[file:../../../Dropbox/org/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 -# Character: Dabbler + # My characters should be NPCs, so they can stick around if I’m not logged in. -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:1]] @create/drop Dabbler;gnome;old gnome: typeclasses.puppets.Puppet # Character: Dabbler:1 ends here @@ -1367,86 +1371,110 @@ Looks good for being out in the weather. # Note that we give him a male gender: -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:2]] -py bt = self.search('gnome'); bt.db.gender = 'male'; bt.db._sdesc = 'old gnome'; bt.db.default_pose = 'sleeping soundly in a large chair'; bt.db.pose = 'smiling at you' +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:2]] +py bt = self.search('gnome'); bt.db.gender = 'male'; bt.db.pose = 'smiling at you' # Character: Dabbler:2 ends here +# And give him the powers he deserves: + + +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:3]] +@perm gnome = Admin +# Character: Dabbler:3 ends here + +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:4]] +@set gnome/_sdesc = "old gnome" +# +@set gnome/pose_default = "sleeping soundly in a large, overstuffed chair" +# Character: Dabbler:4 ends here + + + # And a good description that I can rework: -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:5]] @desc gnome = A small, hunched old man with a gray vandyke and an eye twinkle. Spectacles perched precariously on the end of his hooked nose, wobble with his head. A jaunty crimson cap contrasts with his dark brown cloak. -# Character: Dabbler:3 ends here +# Character: Dabbler:5 ends here + + + +# And an unpuppeted, sleeping, description: + + +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:6]] +@set gnome/desc_unpuppeted = "A small, hunched old man with a gray vandyke snoring soundly in one of the overstuffed chairs.\n\nSpectacles perched precariously on the end of his hooked nose, wobble with each breath. A jaunty crimson cap contrasts with his dark brown blanket covering his legs." +# Character: Dabbler:6 ends here # And we create a couple of objects, like a cap: -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:4]] +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:7]] @create cap # @desc cap = It's crimson. It's jaunty. # @give cap = gnome -# Character: Dabbler:4 ends here +# Character: Dabbler:7 ends here # And my staff: -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:8]] @create gnarled staff;staff: typeclasses.things.Wand # @desc staff = An oaken staff with a sprig of two leaves next to a swirling ball of crystal embedded near the top. # @give staff = gnome -# Character: Dabbler:5 ends here +# Character: Dabbler:8 ends here # And his special teacup: -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:6]] +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:9]] @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:6 ends here +# Character: Dabbler:9 ends here # And his spells: -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:7]] +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:10]] @set gnome/disappear_msg = "After a raspberry sound, the gnome, Dabbler, disappears in a wisp of smoke." # @set gnome/reappear_msg = "<> mist appears...along with the smell of sulphur... ;; When the smoke clears, an old gnome <>." -# Character: Dabbler:7 ends here +# Character: Dabbler:10 ends here # And help with the =fly= spell: -# [[file:../../../projects/mud.org::*Character: Dabbler][Character: Dabbler:8]] +# [[file:../../../Dropbox/org/projects/mud.org::*Character: Dabbler][Character: Dabbler:11]] # nick/object meadow = Frog Meadow # nick meadow = ^fly Frog Meadow -# Character: Dabbler:8 ends here +# Character: Dabbler:11 ends here + -# Pipe # The pipe is little more than messages to the smoker and everyone else in the room. -# [[file:../../../projects/mud.org::*Pipe][Pipe:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*Pipe][Pipe:1]] @create pipe: typeclasses.things.Pipe # Pipe:1 ends here @@ -1455,23 +1483,23 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # And a description: -# [[file:../../../projects/mud.org::*Pipe][Pipe:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Pipe][Pipe:2]] @desc pipe = As tall as its owner with etchings of birds, leaves and magical symbols. # @give pipe = gnome # Pipe:2 ends here -# Fireplace + # And a fire in the fireplace is a type of /pet/, since we can feed it: -# [[file:../../../projects/mud.org::*Fireplace][Fireplace:1]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Fireplace][Fireplace:2]] @lock fire = get:false() # Fireplace:2 ends here @@ -1479,7 +1507,7 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # And a description that will be overridden: -# [[file:../../../projects/mud.org::*Fireplace][Fireplace:3]] +# [[file:../../../Dropbox/org/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 @@ -1487,7 +1515,7 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # Since we mentioned some details, we better mention them: -# [[file:../../../projects/mud.org::*Fireplace][Fireplace:4]] +# [[file:../../../Dropbox/org/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 @@ -1495,7 +1523,7 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # This reference in this detail is obviously, only for me: -# [[file:../../../projects/mud.org::*Fireplace][Fireplace:5]] +# [[file:../../../Dropbox/org/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 @@ -1503,15 +1531,15 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # I imagine a giant picture over the fireplace … need to do something interesting with it. -# [[file:../../../projects/mud.org::*Fireplace][Fireplace:6]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/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 @@ -1520,17 +1548,17 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # Let’s not let anything of this sort be picked up: -# [[file:../../../projects/mud.org::*Knickknacks][Knickknacks:2]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Magic 8 Ball][Magic 8 Ball:1]] @create/drop crystal ball;ball;magic ball: typeclasses.things.CrystalBall # Magic 8 Ball:1 ends here @@ -1539,7 +1567,7 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # And its description: -# [[file:../../../projects/mud.org::*Magic 8 Ball][Magic 8 Ball:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Magic 8 Ball][Magic 8 Ball:2]] @desc ball = A glass orb with swirling mists << ^ of blue ^ the color of octarine ^ and stars>>; when clear, the glass reads, # Magic 8 Ball:2 ends here @@ -1548,17 +1576,17 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # And we should hide it: -# [[file:../../../projects/mud.org::*Magic 8 Ball][Magic 8 Ball:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Magic 8 Ball][Magic 8 Ball:3]] @set ball/hidden_tag = "hidden_ball" # @lock ball = view:tag(hidden_ball) # Magic 8 Ball:3 ends here -# Books + # We mentioned shelves of books: -# [[file:../../../projects/mud.org::*Books][Books:1]] +# [[file:../../../Dropbox/org/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 @@ -1566,14 +1594,14 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # This should be an object of “books”, but looking should pull up a random list of books. -# [[file:../../../projects/mud.org::*Books][Books:2]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Books][Books:3]] @name books = collection of books;books # Books:3 ends here @@ -1581,15 +1609,15 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # With a good description: -# [[file:../../../projects/mud.org::*Books][Books:4]] +# [[file:../../../Dropbox/org/projects/mud.org::*Books][Books:4]] @desc books = Books of different sizes and colors. So many books. Perhaps you want to simply |glook|n at a |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]] +# [[file:../../../Dropbox/org/projects/mud.org::*Trolley of Scones][Trolley of Scones:1]] @create/drop trolley;trolly : typeclasses.consumables.Trolley # Trolley of Scones:1 ends here @@ -1597,7 +1625,7 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # We mentioned a /trolley/ with tea, cups and scones: -# [[file:../../../projects/mud.org::*Trolley of Scones][Trolley of Scones:2]] +# [[file:../../../Dropbox/org/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 @@ -1605,7 +1633,7 @@ Spectacles perched precariously on the end of his hooked nose, wobble with his h # We have to have the trolley bake something with the Python command: -# [[file:../../../projects/mud.org::*Trolley of Scones][Trolley of Scones:3]] +# [[file:../../../Dropbox/org/projects/mud.org::*Trolley of Scones][Trolley of Scones:3]] py here.search("trolley").do_bake() # Trolley of Scones:3 ends here @@ -1614,15 +1642,15 @@ py here.search("trolley").do_bake() # And let’s not clutter up the scene too much: -# [[file:../../../projects/mud.org::*Trolley of Scones][Trolley of Scones:4]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/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. @@ -1634,7 +1662,7 @@ py here.search("trolley").do_bake() # A teapot will “fill” a teacup forever, until it is “remade”. -# [[file:../../../projects/mud.org::*Tea Service][Tea Service:2]] +# [[file:../../../Dropbox/org/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. @@ -1643,31 +1671,31 @@ py here.search("trolley").do_bake() # And of course, you can’t steal the tea pot: -# [[file:../../../projects/mud.org::*Tea Service][Tea Service:3]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/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]] +# [[file:../../../Dropbox/org/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 @@ -1675,7 +1703,7 @@ py here.search("trolley").do_bake() # Can’t steal ‘em: -# [[file:../../../projects/mud.org::*Chairs][Chairs:4]] +# [[file:../../../Dropbox/org/projects/mud.org::*Chairs][Chairs:4]] @lock chairs = get:false() # @set chairs/get_err_msg = "It's way too heavy for you to lift." @@ -1685,7 +1713,7 @@ py here.search("trolley").do_bake() # And textual descriptions the object can use: -# [[file:../../../projects/mud.org::*Chairs][Chairs:5]] +# [[file:../../../Dropbox/org/projects/mud.org::*Chairs][Chairs:5]] @set chairs/adjective = "in" # @set chairs/article = "the" @@ -1695,12 +1723,12 @@ py here.search("trolley").do_bake() @set chairs/extra = "This feels << ^ very ^ quite>> <>.|n" # Chairs:5 ends here -# Bugs + # And we need to update the Knocker to get the “knock” command going: -# [[file:../../../projects/mud.org::*Bugs][Bugs:1]] +# [[file:../../../Dropbox/org/projects/mud.org::*Bugs][Bugs:1]] @update knocker = typeclasses.things.Knocker # Bugs:1 ends here @@ -1709,6 +1737,6 @@ py here.search("trolley").do_bake() # And now that we are done, say it: -# [[file:../../../projects/mud.org::*Bugs][Bugs:2]] +# [[file:../../../Dropbox/org/projects/mud.org::*Bugs][Bugs:2]] say I have finished this, the first version, of my creation. # Bugs:2 ends here