From ea8f9253ccd1ef933d166a19e9b9909c78592168 Mon Sep 17 00:00:00 2001 From: Howard Abrams Date: Sat, 14 Jun 2025 22:19:35 -0700 Subject: [PATCH] Create an IceBreaker hat Which slips of papers for conversations. --- commands/everyone.py | 2 +- typeclasses/things.py | 106 ++++++++++++++++++++++++------------------ 2 files changed, 62 insertions(+), 46 deletions(-) diff --git a/commands/everyone.py b/commands/everyone.py index d59866a..ae598f0 100755 --- a/commands/everyone.py +++ b/commands/everyone.py @@ -292,7 +292,7 @@ class CmdRead(Command): searcher.msg(f"You can't find anything readable on {readable_str}.") else: searcher.msg(f"Too many things match, '{readable_str}'. " - "Can you narrow it down with a title?") + "Can you narrow it down with a title, or preface with a number, like '2-paper'?") def func(self): """Return the 'inside' attribute.""" diff --git a/typeclasses/things.py b/typeclasses/things.py index 958619c..82ef30a 100755 --- a/typeclasses/things.py +++ b/typeclasses/things.py @@ -12,6 +12,7 @@ from commands.misc import (CmdSetPuddle, CmdSetKnock, CmdSetSmoke, CmdSetRummage) +from commands.consumables import CmdSetMakeConsumable from commands.wizards import CmdSetWand from utils.word_list import routput, choices from .scripts import KnockScript @@ -684,7 +685,6 @@ class BagofJunk(Object): "a small bottle of olive oil", "a reusable shopping bag", "a small notebook for journaling", - "a small calendar", "a small bottle of hot sauce", "a small bottle of soy sauce", "a small bottle of ketchup", @@ -711,17 +711,14 @@ class BagofJunk(Object): "a small bottle of cider", "a small bottle of soda", "a small bottle of juice", - "a small bottle of water", ] fey_stuff = [ "pan flute", "an acorn cap", "dried leaves", - "a small bottle of wine", "a sprig of thyme", "a tiny bell", "a piece of string", - "a small mirror", "a handful of wildflower seeds", "a feather", "a small pouch of herbs", @@ -744,11 +741,10 @@ class BagofJunk(Object): "a small pouch of glitter", "a tiny drum", "a handful of nuts", - "a small mirror", "a piece of flint", "a small bellflower", "a tiny painting", - "a small vial of potion", + "a small vial of a potion", "a piece of candy", "a small twig flute", "a dried flower", @@ -762,57 +758,18 @@ class BagofJunk(Object): "a small wooden spoon", "a piece of fabric", "a small bell", - "a tiny lantern", - "a small mirror", - "a piece of candy", "a small bottle of perfume", "a tiny flower crown", - "a small pouch of glitter", "a tiny compass", "a small wooden flute", "a piece of dried fruit", "a small jar of fireflies", "a tiny drumstick", "a small pouch of spices", - "a piece of string", "a small bottle of potion", - "a tiny scroll", "a small wooden toy", - "a piece of bark", "a small feather", - "a tiny bell", "a small pouch of seeds", - "a piece of candy", - "a small mirror", - "a tiny lantern", - "a small bottle of honey", - "a piece of flint", - "a small wooden carving", - "a tiny drum", - "a small pouch of herbs", - "a piece of fabric", - "a small bottle of ink", - "a feather quill", - "a tiny map of the forest", - "a small pouch of coins", - "a tiny key", - "a small wooden spoon", - "a piece of dried fruit", - "a small jar of fireflies", - "a tiny flower crown", - "a small pouch of glitter", - "a tiny compass", - "a small wooden flute", - "a piece of bark", - "a small mirror", - "a piece of candy", - "a small bottle of perfume", - "a tiny scroll", - "a small wooden toy", - "a piece of string", - "a small bottle of potion", - "a tiny drumstick", - "a small pouch of spices", "a tiny bellflower", ] @@ -855,3 +812,62 @@ class BagofJunk(Object): self.db.latest_item = None else: self.location.msg("You must |grummage|n first.") + + +class IceBreakerHat(Object): + def at_object_creation(self): + self.cmdset.add_default(CmdSetMakeConsumable) + + def at_pre_get(self, getter, **kwargs): + """ + Can't get a producer. + """ + self.do_make(getter) + return False + + def do_make(self, picker, **kwargs): + """ + Create a configurable consumable, given to picker. + """ + paper = spawn({ + "typeclass": self.db.make_class or kwargs['type'] + if 'type' in kwargs else "typeclasses.readables.Letter", + "key": self.db.make_name, + "aliases": self.db.make_aliases, + "desc": routput(self.db.make_desc), + })[0] + + paper.db.inside = \ + "The slip of paper reads...\n\n " + \ + choice([ + "Slide the answer to the following question into the flow of conversation:", + "Smoothly find out the answer to the following question from another character here:", + "Tell a short story about yourself that answers the following question:", + ]) + "\n\n " + \ + choice([ + "Do you have a nickname? Why were you given it, and what does it mean?", + "Where is your homeland? What are it's people like?", + "What do you do in your free time?", + "What is your hobby?", + "What is something you carry around constantly? Why?", + "Do you have a romantic partner? Any exes?", + "If you inherited a massive pile of gold, how would you spend it?", + "What do you think about a lot?", + "What sort of pet would you want to have?", + "If you could write a book, what would it be about?", + "Do you have a rival?", + "What really annoys you?", + "What are you really passionate about?", + "What are you afraid of?", + "What is the most interesting about you?", + "What is the most embarrassing thing that has happened to you?", + "If you woke up in jail, why would you be there?", + "If you could be an animal, which animal would you be and why?", + # "Describe your personality in ten words or less.", + "Have you passed up any chances that you now regret? What were they?", + "What accomplishment are you most proud of?", + "What was the greatest adventure in your life so far?", + ]) + + paper.location = picker + picker.announce_action(f"$You() $conj({self.db.make_verb or 'get'}) {self.db.make_name}.")