Welcome to Stim Toy Finder!
(if: (history:)'s length is 0)[(if: (saved-games:) contains "all users")[(loadgame: "all users")]Stim Toy Finder is a tool designed to help you catalogue and filter the stim toys you have available according to your needs. To get started, click [[manage database->Database]] to enter your toys.
If you're looking for more stim toy ideas, perhaps to fill a gap in your repertoire, click [[recommend a new toy->rec finder]].
For more information, disclaimers, and credits, click [[about]].](else-if: $database is a datamap)[(if: (datanames: $database)'s length > 0)[
=><=
[[Find me a stim toy!->Finder]]
[[Recommend a new toy->rec finder]]](else:)[To get started, click [[manage database->Database]] to enter your toys.
[[Recommend a new toy->rec finder]]]](else:)[To get started, click [[manage database->Database]] to enter your toys.
[[Recommend a new toy->rec finder]]]
|=
[[Manage database->Database]]
=|
==>
[[About->about]]
|==|
(if: $database is not a datamap)[(set: $database to (dm:))]\
(link: "Back to start")[(goto: "save screen")]
=><=
[[Add a new toy]]
<==
(if: (datanames: $database)'s length > 0)[(set: $mainsenses to (ds:))(for: each _toy, ...(datanames: $database))[(set: $temptoy to _toy)(set: $mainsenses to it + (ds: "main sense" of $temptoy of $database))]\
(for: each _sense, ...$mainsenses)[(set: $tempsense to _sense)''(upperfirst: $tempsense)''
(for: each _toy where "main sense" of _toy of $database is $tempsense, ...(datanames: $database))[(link: "_toy")[(set: $toy to _toy)(goto: "Database-toy")]
]
]]
=><=
''(upperfirst: $toy)''
<==
|=
[[Back to database->Database]]
=|
==>
(link-repeat: "Delete this toy's entry")[(if: (confirm: "Are you sure you want to delete this toy from the database?"))[(move: $toy of $database into $deleted)(goto: "Database")]]
|==|
(unless: $toy of $database contains "description")[It looks like you were interrupted in the middle of adding this toy to the database.
(link: "Try adding it again")[(move: $toy of $database into $deleted)(goto: "Add a new toy")]](else:)[
''Name:'' $toy (link: "(Edit)")[(goto: "edit name")]
''Main sense:'' (print: "main sense" of $toy of $database) (link: "(Edit)")[(goto: "edit main sense")]
''Senses (positive):'' (for: each _sense, ..."good senses" of $toy of $database)[_sense, ] (link: "(Edit)")[(set: "good senses" of $toy of $database to (ds: "main sense" of $toy of $database))(goto: "edit good senses")]
''Senses (negative):'' (for: each _sense, ..."bad senses" of $toy of $database)[_sense, ] (link: "(Edit)")[(set: "bad senses" of $toy of $database to (ds:))(goto: "edit bad senses")]
''Portable:'' (if: "portable" of $toy of $database is true)[yes](else:)[no] (link: "(Edit)")[(goto: "edit portability")]
''Good when overstimulated:'' (if: "good when overstimulated" of $toy of $database is true)[yes](else:)[no] (link: "(Edit)")[(goto: "edit overstimulation setting")]
''Good when understimulated:'' (if: "good when understimulated" of $toy of $database is true)[yes](else:)[no] (link: "(Edit)")[(goto: "edit understimulation setting")]
''Useable in darkness:'' (if: "dark" of $toy of $database is true)[yes](else:)[no] (link: "(Edit)")[(goto: "edit darkness setting")]
''Emotions:'' (for: each _emotion, ..."emotions" of $toy of $database)[_emotion, ] (link: "(Edit)")[(set: "emotions" of $toy of $database to (ds:))(goto: "edit emotions")]
''Situations:'' (for: each _situation, ..."situations" of $toy of $database)[_situation, ] (link: "(Edit)")[(set: "situations" of $toy of $database to (ds:))(goto: "edit situations")]
''Description:'' (print: "description" of $toy of $database) (link: "(Edit)")[(goto: "edit description")]]''(upperfirst: $toy)''
(print: "description" of $toy of $database)
[[This will work!]]
[[Back to list->filtered list]]
[[Start over->Start]](set: $recommendations to
(dm:
"fidget spinner",
(dm:
"good senses", (ds: "visual", "tactile", "weight"),
"bad senses", (ds: "visual", "auditory"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", true,
"description", "Fidget spinners are cheap and easily available! It's worth spending a little bit extra for a metal spinner, which spins far more easily than the cheap plastic ones, with one potential exception: plastic spinners are available in glow-in-the-dark."),
"bouncy balls",
(dm:
"good senses", (ds: "vestibular", "visual", "auditory"),
"bad senses", (ds: "vestibular", "visual", "auditory", "tactile"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Bouncy balls can be used both indoors and outdoors. Mind the environment: small balls can easily get lost, especially if they aren't brightly coloured. If you're using a bouncy ball indoors, be mindful of anyone you live with who might be bothered by the noise."),
"glitter wand",
(dm:
"good senses", (ds: "visual", "chronometric"),
"bad senses", (ds:),
"portable", false,
"good when overstimulated", true,
"good when understimulated", true,
"dark", false,
"description", "Glass or plastic tubes filled with water, glitter, and little coloured bits of I-don't-know-what. Turn it over and watch the glitter drift down. Fairly easy to find in toy shops and such."),
"magnet balls",
(dm:
"good senses", (ds: "tactile", "visual", "auditory"),
"bad senses", (ds: "auditory", "tactile"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Tiny magnetic spheres, available in various colours and usually sold in sets of 216. Can be used much like a louder, less-sticky variant of putty. Can also be sorted (if multicoloured), or arranged into shapes."),
"bubbles",
(dm:
"good senses", (ds: "visual"),
"bad senses", (ds:),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Go outside and blow some bubbles! Bubble soap is pretty easy to find in toy shops and the like, but I think you can also homemake it with dish detergent."),
"putty",
(dm:
"good senses", (ds: "tactile", "visual", "auditory"),
"bad senses", (ds: "tactile"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", true,
"dark", true,
"description", "Silly putty is of course the most famous putty brand, but I particularly recommend Crazy Aaron's Thinking Putty. It's kind of expensive as putty goes, but it leaves no slimy or greasy residue on the hands, and it comes in a variety of really nice types: sparkly, shimmery, colour-changing, glow-in-the-dark, and so on."),
"kaleidoscope",
(dm:
"good senses", (ds: "visual"),
"bad senses", (ds: "visual", "auditory"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "You can get kaleidoscopes in tiny keychain-sized varieties as well as the larger two-handed versions."),
"candles",
(dm:
"good senses", (ds: "visual"),
"bad senses", (ds: "visual", "olfactory"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", false,
"dark", true,
"description", "Watching a candle flame is a good stim in itself, but candles can also be used to control lighting: a single candle's light is a gentle way to render a room just bright enough to see in. Possibly less good if you're sensitive to flickering."),
"incense",
(dm:
"good senses", (ds: "olfactory", "visual"),
"bad senses", (ds: "olfactory"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", true,
"dark", false,
"description", "Incense has a scent, of course; but it also consists of smoke, which gives it a visual element as well."),
"tangle",
(dm:
"good senses", (ds: "tactile", "visual"),
"bad senses", (ds: "tactile", "auditory"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Tangles come in a variety of colours and textures. They're portable and make excellent fidgets, but wear down fairly quickly with heavy use."),
"jaw harp",
(dm:
"good senses", (ds: "auditory", "tactile"),
"bad senses", (ds: "auditory", "tactile"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Jaw harps are one of humanity's oldest musical instruments, best known today for their role in medieval-inspired folk rock, spaghetti Western soundtracks, and the Sesame Street theme. They make boinga-boinga noises. A ten-minute YouTube tutorial will teach you most everything you need to know about how to make the boinga-boinga noises come out."),
"weighted blanket",
(dm:
"good senses", (ds: "weight", "pressure", "temperature"),
"bad senses", (ds: "pressure"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", false,
"dark", true,
"description", "Weighted blankets are very expensive, and home-making them is only somewhat cheaper, but if you can afford them they're very much worth it. Helpful for sleeping, or for just curling up under when you need the approximation of a hug. Cotton-and-poly-pellet weighted blankets can also help to regulate your temperature in summer by acting as a heat sink. A slightly cheaper alternative is the weighted lap pad, which is essentially the same thing in smaller."),
"Miracle Modus",
(dm:
"good senses", (ds: "visual", "auditory"),
"bad senses", (ds: "visual"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", true,
"dark", false,
"description", "A stim app made by an autistic person for autistic people, available for Android for sure (not sure about other operating systems). Mathematically-based visuals reminiscient of screensavers, with optional sound. Extremely effective both at calming and at energising. Can reverse a shutdown."),
"music videos",
(dm:
"good senses", (ds: "auditory", "visual"),
"bad senses", (ds: "auditory", "visual"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Don't have a convenient stash of music videos to watch? YouTube has got your back, probably."),
"holographic spinning top",
(dm:
"good senses", (ds: "visual"),
"bad senses", (ds: "visual"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Super cheap and super shiny. Much the same effect as a fidget spinner on a flat surface, except you can't hold it in your hand."),
"folding fan",
(dm:
"good senses", (ds: "temperature", "tactile", "vestibular"),
"bad senses", (ds: "vestibular", "tactile"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Handheld folding fans are either a fidget which doubles as a way to cool off, or a way to cool off which doubles as a fidget."),
"chew toy",
(dm:
"good senses", (ds: "chew", "tactile"),
"bad senses", (ds: "chew"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", true,
"dark", true,
"description", "Chew jewellery is kind of expensive, but high-quality and very convenient. ARK and Chewigem are brands to look at. Baby-oriented teething chew toys are less durable than most adults would need, but should work in an emergency; any food-grade silicone is safe to chew on. Most chew toys for dogs are probably too hard for human use, but may also be worth a look if you absolutely can't get anything else."),
"scent bottle",
(dm:
"good senses", (ds: "olfactory", "visual"),
"bad senses", (ds: "olfactory"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", true,
"dark", true,
"description", "Stick some salt and essential oil in a small jar with glitter and food colouring. Cork cap for slow diffusing; screw cap if you don't want the scent to escape until you actively sniff. A small jar can be kept on your desk or around your house, while a tiny bottle can also be worn as a necklace and carried with you."),
"Magic Fluids",
(dm:
"good senses", (ds: "visual"),
"bad senses", (ds: "visual"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Smartphone app, available for Android, but almost certainly it or something like it can also be found for another OS. Swipe to make colours on your screen, then watch them fade."),
"worry stone",
(dm:
"good senses", (ds: "tactile", "weight", "visual"),
"bad senses", (ds:),
"portable", true,
"good when overstimulated", true,
"good when understimulated", false,
"dark", true,
"description", "Carry it with you, hold it in your hand, rub your fingers against it. Almost any small item will work in place of a stone, though it's worth noting that certain crystals (opal, tiger's eye) have also got a strong visual element."),
"Particle Flow",
(dm:
"good senses", (ds: "visual", "tactile"),
"bad senses", (ds: "visual"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Smartphone app on Android. Particles follow your finger. Wheeee!"),
"swing",
(dm:
"good senses", (ds: "vestibular", "tactile"),
"bad senses", (ds: "vestibular", "olfactory"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", true,
"dark", false,
"description", "Swings are really, //really// expensive to acquire, not to mention the difficulty involved in finding a place for them and setting them up. Consider visiting a local playground."),
"music",
(dm:
"good senses", (ds: "auditory"),
"bad senses", (ds: "auditory"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", true,
"dark", true,
"description", "Listen to music as you do something else, or sing and/or dance along."),
"stim .gifs",
(dm:
"good senses", (ds: "visual"),
"bad senses", (ds: "visual"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "The internet is full of animated .gifs, many of which loop smoothly and depict calming or visually stimulating things (moving stars, sparks, and so on). Find them, and save them to your computer (or phone, or whatever) for later."),
"stuffed animal",
(dm:
"good senses", (ds: "tactile", "weight"),
"bad senses", (ds:),
"portable", true,
"good when overstimulated", true,
"good when understimulated", false,
"dark", true,
"description", "Stuffed animals come in two important sizes: huggable and hand/pocket-sized. They can also sometimes be weighted."),
"colouring book",
(dm:
"good senses", (ds: "vestibular", "visual", "tactile"),
"bad senses", (ds: "olfactory", "visual", "tactile"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Colouring books can often be found in bookstores, both in simple varieties marketed at children, and more complex ones marketed at adults. Failing that, you can also find and print out lineart from the internet. (Do not redistribute art without the artist's permission or claim it as your own, even after you've coloured it in.)"),
"rhythm games",
(dm:
"good senses", (ds: "auditory", "visual", "vestibular", "verbal", "logic"),
"bad senses", (ds: "auditory", "visual", "logic"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Rock Band, Guitar Hero, Audiosurf, Dance Dance Revolution, Stepmania, or pretty much anything else within the genre. What senses are stimulated somewhat depends on the game and its inputs."),
"ball maze",
(dm:
"good senses", (ds: "proprioceptive", "visual", "auditory", "logic"),
"bad senses", (ds: "auditory", "visual", "logic"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Guide a ball through a maze by tilting and balancing it, avoiding holes. These exist in various degrees of cheapness, and simulated versions almost certainly exist as Smartphone apps."),
"heat cushion",
(dm:
"good senses", (ds: "temperature", "weight"),
"bad senses", (ds: "temperature"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", true,
"description", "There are chemical and electric heat pads, but you can also just sew a bunch of dry rice or cherry pits into a pillowcase. Pop it into a microwave for a bit to warm it up. Can also double as a pressure/weight stim."),
"prayer beads",
(dm:
"good senses", (ds: "tactile", "verbal"),
"bad senses", (ds:),
"portable", true,
"good when overstimulated", true,
"good when understimulated", true,
"dark", true,
"description", "You don't need to actually pray to use prayer beads as a tactile stim, but chanting as you use them can give it a verbal element."),
"chewing gum",
(dm:
"good senses", (ds: "chew", "taste", "auditory"),
"bad senses", (ds: "chew", "taste", "olfactory"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", true,
"dark", true,
"description", "Among the most socially acceptable chew stims. Also, you can potentially blow bubbles."),
"balance beam",
(dm:
"good senses", (ds: "vestibular", "proprioceptive"),
"bad senses", (ds: "vestibular"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "You can approximate a dedicated balance beam by walking on walls, fences, curbs and so on. Some of these are better suited than others."),
"jigsaw puzzle",
(dm:
"good senses", (ds: "visual", "logic"),
"bad senses", (ds: "logic"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Try to match the number of pieces to the amount of time you have available, unless you're able to leave the puzzle in a partially-finished state for a while while you take a break."),
"tangrams",
(dm:
"good senses", (ds: "visual", "logic"),
"bad senses", (ds: "logic"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Use small shapes to make big shapes!"),
"sand",
(dm:
"good senses", (ds: "tactile"),
"bad senses", (ds:),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "Run it through your hands, bury parts of yourself in it, or just walk on it barefoot."),
"colour-changing LEDs",
(dm:
"good senses", (ds: "visual"),
"bad senses", (ds: "visual"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", false,
"dark", true,
"description", "Sometimes these things change colours slowly, and sometimes quickly. Be aware of this as you buy, and try to try them out if possible."),
"balancing board",
(dm:
"good senses", (ds: "vestibular", "proprioceptive"),
"bad senses", (ds: "vestibular"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "These things are pretty expensive to acquire. Shift your balance while standing in one place."),
"hula hoop",
(dm:
"good senses", (ds: "vestibular", "proprioceptive"),
"bad senses", (ds: "vestibular"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Skilled hula hoop users can do fancy dances with them, but if you're using them as a stim just keeping it going around your waist seems like a good start."),
"cooling vest",
(dm:
"good senses", (ds: "temperature", "weight", "pressure"),
"bad senses", (ds: "temperature", "pressure"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "There are two main types of cooling vest: those where the fabric is directly wettened and those in which there are basically water bottles sewn into the fabric. Both are quite expensive, and both have an additional element of pressure or weight."),
"cooling towel",
(dm:
"good senses", (ds: "temperature"),
"bad senses", (ds: "temperature"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", false,
"dark", true,
"description", "A cheaper, lighter alternative to cooling vests. Made of a fabric that holds water well; thoroughly wetten it and apply to your skin. Especially effective if there's any moving air."),
"jumprope",
(dm:
"good senses", (ds: "vestibular", "auditory"),
"bad senses", (ds: "vestibular", "auditory"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Be sure to check the length when buying: most jumpropes are sized for children."),
"ginger",
(dm:
"good senses", (ds: "taste", "olfactory"),
"bad senses", (ds: "taste", "olfactory"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", false,
"dark", true,
"description", "You can, of course, just chomp into ginger fresh. It is also available pickled or candied (which may be easier to carry around with you)."),
"soft pet",
(dm:
"good senses", (ds: "tactile", "olfactory", "auditory", "visual", "weight", "pressure"),
"bad senses", (ds:),
"portable", false,
"good when overstimulated", true,
"good when understimulated", false,
"dark", false,
"description", "Do you have a furry pet animal? Go and pet them, brush them, bury your nose in their fur, squish their little toe beans, have them sit on your lap, get licked. Don't have a pet? You could try going to a dog park, hoping that you find a neighbour's outdoor cat, or volunteering at an animal shelter. Added bonus: affectionate contact will score you some sweet, sweet oxytocin. (Always acquire consent before cuddling.)"),
"menthol",
(dm:
"good senses", (ds: "taste", "olfactory"),
"bad senses", (ds: "taste", "olfactory"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "Fresh mint, minty gum, breath mints, and so on."),
"bubble wrap",
(dm:
"good senses", (ds: "tactile", "auditory"),
"bad senses", (ds: "tactile", "auditory", "olfactory"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", true,
"description", "Pop those bubbles!"),
"lava lamp",
(dm:
"good senses", (ds: "visual", "temperature"),
"bad senses", (ds: "visual", "temperature"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", false,
"dark", true,
"description", "Lava lamps are extremely amusing to watch once they get going, but it generally takes a while before they warm up. They are also very, very warm."),
"plasma ball",
(dm:
"good senses", (ds: "visual", "tactile", "olfactory"),
"bad senses", (ds: "visual", "olfactory", "auditory"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", true,
"dark", true,
"description", "You can watch the electricity in a plasma ball, but you can also feel it gently tickle your fingers. They also have a very distinctive, possibly ozoney smell."),
"salt lamp",
(dm:
"good senses", (ds: "visual", "temperature"),
"bad senses", (ds: "temperature"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", false,
"dark", true,
"description", "Salt lamps may not actually do the ionising thing they advertise with, but they are nevertheless a source of gentle light and heat."),
"compression shirt",
(dm:
"good senses", (ds: "pressure"),
"bad senses", (ds: "pressure", "weight", "temperature"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", false,
"dark", true,
"description", "Expensive and fiddly to size, but like a hug you can wear all day long."),
"corset",
(dm:
"good senses", (ds: "pressure"),
"bad senses", (ds: "pressure", "weight", "temperature"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", false,
"dark", true,
"description", "//Very// expensive and fiddly to size, but stylish and like a hug you can wear all day long. (Make sure you lace it loose enough that you can still breathe normally.)"),
"garlic",
(dm:
"good senses", (ds: "taste", "olfactory"),
"bad senses", (ds: "taste", "olfactory"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "Shove a clove of garlic into your mouth and chew. Added bonus: you'll be safe from vampires kissing you."),
"trampoline",
(dm:
"good senses", (ds: "vestibular", "auditory"),
"bad senses", (ds: "vestibular", "auditory"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Boing!"),
"weighted vest",
(dm:
"good senses", (ds: "weight", "pressure"),
"bad senses", (ds: "temperature", "weight", "pressure"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", false,
"dark", true,
"description", "Expensive, but you can homemake one by sewing weights into an ordinary vest or loading up the pockets with nuts and bolts."),
"flowing water",
(dm:
"good senses", (ds: "visual", "auditory"),
"bad senses", (ds: "auditory", "vestibular"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", true,
"dark", false,
"description", "Go out and walk to your nearest waterfall, river or fountain. Failing that, you can look up videos or looping .gifs on the internet."),
"singing bowl",
(dm:
"good senses", (ds: "auditory", "tactile"),
"bad senses", (ds: "auditory"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "These things have a complicated history, wherein they're for some reason marketed as culturally appropriative, but actually are a modern invention with no ties to the culture(s) they're marketed as belonging to. Weird, huh? Anyway, they make neat noises."),
"snowglobe",
(dm:
"good senses", (ds: "visual", "vestibular", "chronometric"),
"bad senses", (ds: "vestibular"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "An alternative to snowglobes is the homemade glitter jar. Fill water, glitter, and optionally food colour or another water-soluble dye into a jar with a tight screw cap. Shake and watch the glitter drift and settle."),
"music box",
(dm:
"good senses", (ds: "auditory", "visual", "tactile", "chronometric"),
"bad senses", (ds: "auditory"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Some (but not all) music boxes come with visual elements: dancing figures and the like."),
"yoyo",
(dm:
"good senses", (ds: "vestibular", "proprioceptive", "tactile"),
"bad senses", (ds: "vestibular", "auditory", "tactile"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "You don't have to be great at tricks to amuse yourself by playing with a yoyo."),
"fireplace",
(dm:
"good senses", (ds: "visual", "auditory", "temperature"),
"bad senses", (ds: "temperature", "visual"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", true,
"dark", true,
"description", "Sit down in front of a fire and watch the flames, or find a video of one if you don't have a burning fire readily available."),
"chocolate",
(dm:
"good senses", (ds: "taste"),
"bad senses", (ds: "taste"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "The darker the chocolate, the more endorphins you get free with every nibble."),
"fidget cube",
(dm:
"good senses", (ds: "tactile", "auditory"),
"bad senses", (ds: "tactile"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", true,
"dark", false,
"description", "Fidget cubes come with a different stim on every surface: clicky things, push buttons, rolly balls, joysticks and so on. Small, portable, and relatively discrete."),
"rainstick",
(dm:
"good senses", (ds: "auditory", "tactile", "visual"),
"bad senses", (ds: "auditory"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", true,
"description", "Traditional rainsticks are wooden and opaque, but nowadays you can find transparent ones with coloured balls, which you can watch as they tumble down and mimic the sound of falling rain."),
"baton",
(dm:
"good senses", (ds: "vestibular", "tactile"),
"bad senses", (ds: "vestibular", "tactile"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Twirl it! Toss it! Maybe try to restrict your use to outdoors areas where you don't accidentally launch it through a lamp."),
"fish tank",
(dm:
"good senses", (ds: "visual"),
"bad senses", (ds: "visual"),
"portable", false,
"good when overstimulated", true,
"good when understimulated", true,
"dark", false,
"description", "If you don't have access to an actual aquarium, you can probably find a virtual one."),
"ice cubes",
(dm:
"good senses", (ds: "temperature", "tactile", "chew"),
"bad senses", (ds: "temperature"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "Chew them, suck them, hold them, rub them on your skin."),
"moss",
(dm:
"good senses", (ds: "tactile"),
"bad senses", (ds: "tactile"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "Walk barefoot on moss or touch it with your hands. This is something you either have available or don't."),
"texture vessel",
(dm:
"good senses", (ds: "tactile", "auditory"),
"bad senses", (ds: "tactile"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Get yourself a largeish box or bag and fill it with rice or other grains, poly pellets, marbles, &c. You can mix textures or keep it uniform. Stick your arm in there and let it run through your fingers."),
"silicone straws",
(dm:
"good senses", (ds: "chew", "tactile"),
"bad senses", (ds: "tactile"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", true,
"dark", false,
"description", "You can chew on these reusable straws or use them as a tactile stim. You can also use them to suck beverages into your mouth. Astounding!"),
"Rubik's Cube",
(dm:
"good senses", (ds: "tactile", "visual", "logic"),
"bad senses", (ds: "tactile", "logic"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "A good sorting stim, though potentially also pretty frustrating."),
"star projector",
(dm:
"good senses", (ds: "visual"),
"bad senses", (ds: "visual", "auditory"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "Projects a moving night sky (may or may not be an accurate starmap) onto your ceiling. Commonly found as a children's nightlight."),
"sour candy",
(dm:
"good senses", (ds: "taste"),
"bad senses", (ds: "taste"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "Lemon drops, gummi candies with that sour powder stuff on, and so on."),
"fidget ring",
(dm:
"good senses", (ds: "tactile", "weight"),
"bad senses", (ds: "tactile"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", true,
"dark", true,
"description", "Rings with spinnable moving parts. For a similar effect, try a bracelet which you can twist around your wrist; if steel or similar, this has the added bonus of weight."),
"stress ball",
(dm:
"good senses", (ds: "tactile", "pressure", "visual"),
"bad senses", (ds: "tactile"),
"portable", true,
"good when overstimulated", true,
"good when understimulated", true,
"dark", true,
"description", "Squishy, but with resistance. Kind of like putty that always rebounds to its original shape."),
"fizz",
(dm:
"good senses", (ds: "taste"),
"bad senses", (ds: "taste"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "Sparkling water, carbonated beverages, but also Pop Rocks, sherbet powder, and so on."),
"chilis",
(dm:
"good senses", (ds: "taste"),
"bad senses", (ds: "taste"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "Go bite a habanero or something."),
"scented lotion",
(dm:
"good senses", (ds: "tactile", "olfactory"),
"bad senses", (ds: "tactile"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "If you don't want the scent, you can still get the tactile element with unscented lotion."),
"oobleck",
(dm:
"good senses", (ds: "tactile"),
"bad senses", (ds: "tactile"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Mix corn starch with water for an amusing homemade non-Newtonian fluid! Food colouring will render it more visually interesting."),
"origami",
(dm:
"good senses", (ds: "visual", "tactile", "logic"),
"bad senses", (ds: "tactile", "logic"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Fold some coloured paper together. Maybe you can make a crane, or a star! You can undoubtedly find instructions on the internet."),
"body spray",
(dm:
"good senses", (ds: "olfactory", "temperature"),
"bad senses", (ds: "olfactory", "tactile"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "Spray some smelly stuff around and/or onto your skin! You can probably homemake something with essential oils, but be careful to check toxicity for any pets you may have, and don't apply undiluted oils directly to your skin."),
"scratch and sniff",
(dm:
"good senses", (ds: "olfactory", "tactile"),
"bad senses", (ds: "olfactory", "tactile"),
"portable", true,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "The easiest way to get a hold of scratch-and-sniff surfaces is probably in sticker form. Tactile with the scratching, and relatively unlikely to bother other people if you carry it around with you."),
"Slinky",
(dm:
"good senses", (ds: "visual", "tactile"),
"bad senses", (ds: "visual", "tactile"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", true,
"dark", false,
"description", "There's more you can do with a Slinky than just let it fall down a flight of stairs."),
"crossword",
(dm:
"good senses", (ds: "logic"),
"bad senses", (ds: "logic"),
"portable", false,
"good when overstimulated", false,
"good when understimulated", false,
"dark", false,
"description", "Crosswords, sudoku, word searches, and code word puzzles all fulfill more or less the same purpose."),
)
)(set: $filtered to (datanames: $database))(display: "all emotions")(display: "all situations")\
What do you need?
(if: $emotions's length > 0 and $situations's length > 0)[
* (link-reveal: "I'm overstimulated")[(set: $filtered to it - (find: _toy where "good when overstimulated" of _toy of $database is false, ...$filtered))]
* (link-reveal: "I'm understimulated")[(set: $filtered to it - (find: _toy where "good when understimulated" of _toy of $database is false, ...$filtered))]
* I'm feeling...
* I need help with...
* (link-reveal: "I need something I can take with me")[(set: $filtered to it - (find: _toy where "portable" of _toy of $database is false, ...$filtered))]
* (link-reveal: "I need something that will work in the dark")[(set: $filtered to it - (find: _toy where "dark" of _toy of $database is false, ...$filtered))]
](else-if: $emotions's length > 0)[
* (link-reveal: "I'm overstimulated")[(set: $filtered to it - (find: _toy where "good when overstimulated" of _toy of $database is false, ...$filtered))]
* (link-reveal: "I'm understimulated")[(set: $filtered to it - (find: _toy where "good when understimulated" of _toy of $database is false, ...$filtered))]
* I'm feeling...
* (link-reveal: "I need something I can take with me")[(set: $filtered to it - (find: _toy where "portable" of _toy of $database is false, ...$filtered))]
* (link-reveal: "I need something that will work in the dark")[(set: $filtered to it - (find: _toy where "dark" of _toy of $database is false, ...$filtered))]
](else-if: $situations's length > 0)[
* (link-reveal: "I'm overstimulated")[(set: $filtered to it - (find: _toy where "good when overstimulated" of _toy of $database is false, ...$filtered))]
* (link-reveal: "I'm understimulated")[(set: $filtered to it - (find: _toy where "good when understimulated" of _toy of $database is false, ...$filtered))]
* I need help with...
* (link-reveal: "I need something I can take with me")[(set: $filtered to it - (find: _toy where "portable" of _toy of $database is false, ...$filtered))]
* (link-reveal: "I need something that will work in the dark")[(set: $filtered to it - (find: _toy where "dark" of _toy of $database is false, ...$filtered))]
](else:)[
* (link-reveal: "I'm overstimulated")[(set: $filtered to it - (find: _toy where "good when overstimulated" of _toy of $database is false, ...$filtered))]
* (link-reveal: "I'm understimulated")[(set: $filtered to it - (find: _toy where "good when understimulated" of _toy of $database is false, ...$filtered))]
* (link-reveal: "I need something I can take with me")[(set: $filtered to it - (find: _toy where "portable" of _toy of $database is false, ...$filtered))]
* (link-reveal: "I need something that will work in the dark")[(set: $filtered to it - (find: _toy where "dark" of _toy of $database is false, ...$filtered))]
]
(click-append: "I'm feeling...")[(set: $currentemotions to (ds:))(set: $emotionfilter to (a:))(for: each _emotion, ...$emotions)[
(link-reveal: "_emotion")[(set: $currentemotions to it + (ds: _emotion))]]](click-append: "I need help with...")[(set: $currentsituation to (ds:))(set: $situationfilter to (a:))(for: each _situation, ...$situations)[
(link-reveal: "_situation")[(set: $currentsituation to it + (ds: _situation))]]]
(link: "
=><=
Filter by sense")[
=><=
''Filter by sense''(set: $desiredsenses to (ds:))(set: $goodsenses to (ds:))(set: $badsenses to (ds:))(set: $sensefilter to (a:))(for: each _toy, ...$filtered)[(set: $goodsenses to it + "good senses" of _toy of $database)(set: $badsenses to it + "bad senses" of _toy of $database)]
<==
|=
I want to stimulate these senses:
=><=
(for: each _sense, ...$goodsenses)[(link-reveal: "_sense")[(set: $desiredsenses to it + (ds: _sense))]
]
<==
=|
I want to avoid irritation of these senses:
=><=
(for: each _sense, ...$badsenses)[(link-reveal: "_sense")[(set: $tempsense to _sense)(set: $filtered to it - (find: _toy where "bad senses" of _toy of $database contains $tempsense, ...$filtered))]
]]
<==
|==|
|=
(link: "Show all")[(if: $desiredsenses is a dataset)[(if: $desiredsenses's length > 0)[(for: each _toy, ...$filtered)[(set: $temptoy to _toy)(if: (nonepass: _sense where "good senses" of $temptoy of $database contains _sense, ...$desiredsenses))[(set: $sensefilter to it + (a: $temptoy))]](set: $filtered to it - $sensefilter)]](if: $currentemotions is a dataset)[(if: $currentemotions's length > 0)[(for: each _toy, ...$filtered)[(set: $temptoy to _toy)(if: (nonepass: _emotion where "emotions" of $temptoy of $database contains _emotion, ...$currentemotions))[(set: $emotionfilter to it + (a: $temptoy))]](set: $filtered to it - $emotionfilter)]](if: $currentsituation is a dataset)[(if: $currentsituation's length > 0)[(for: each _toy, ...$filtered)[(set: $temptoy to _toy)(if: (nonepass: _situation where "situations" of $temptoy of $database contains _situation, ...$currentsituation))[(set: $situationfilter to it + (a: $temptoy))]](set: $filtered to it - $situationfilter)]](set: $filtered to (shuffled: ...$filtered))(goto: "filtered list")]
=|
==>
(link: "Random toy!")[(if: $desiredsenses is a dataset)[(if: $desiredsenses's length > 0)[(for: each _toy, ...$filtered)[(set: $temptoy to _toy)(if: (nonepass: _sense where "good senses" of $temptoy of $database contains _sense, ...$desiredsenses))[(set: $sensefilter to it + (a: $temptoy))]](set: $filtered to it - $sensefilter)]](if: $currentemotions is a dataset)[(if: $currentemotions's length > 0)[(for: each _toy, ...$filtered)[(set: $temptoy to _toy)(if: (nonepass: _emotion where "emotions" of $temptoy of $database contains _emotion, ...$currentemotions))[(set: $emotionfilter to it + (a: $temptoy))]](set: $filtered to it - $emotionfilter)]](if: $currentsituation is a dataset)[(if: $currentsituation's length > 0)[(for: each _toy, ...$filtered)[(set: $temptoy to _toy)(if: (nonepass: _situation where "situations" of $temptoy of $database contains _situation, ...$currentsituation))[(set: $situationfilter to it + (a: $temptoy))]](set: $filtered to it - $situationfilter)]](goto: "random toy")]
|==|(display: "Recommendations")(set: $filtered to (datanames: $recommendations))\
What are you looking for?
* (link-reveal: "Something that might help when I'm overstimulated")[(set: $filtered to it - (find: _toy where "good when overstimulated" of _toy of $recommendations is false, ...$filtered))]
* (link-reveal: "Something that might help when I'm understimulated")[(set: $filtered to it - (find: _toy where "good when understimulated" of _toy of $recommendations is false, ...$filtered))]
* (link-reveal: "Something I can carry around with me")[(set: $filtered to it - (find: _toy where "portable" of _toy of $recommendations is false, ...$filtered))]
* (link-reveal: "Something that will work in the dark")[(set: $filtered to it - (find: _toy where "dark" of _toy of $recommendations is false, ...$filtered))]
(link: "
=><=
Filter by sense")[
=><=
''Filter by sense''(set: $desiredsenses to (ds:))(set: $goodsenses to (ds:))(set: $badsenses to (ds:))(set: $sensefilter to (a:))(for: each _toy, ...$filtered)[(set: $goodsenses to it + "good senses" of _toy of $recommendations)(set: $badsenses to it + "bad senses" of _toy of $recommendations)]
<==
|=
I want to stimulate these senses:
=><=
(for: each _sense, ...$goodsenses)[(link-reveal: "_sense")[(set: $desiredsenses to it + (ds: _sense))]
]
<==
=|
I want to avoid irritation of these senses:
=><=
(for: each _sense, ...$badsenses)[(link-reveal: "_sense")[(set: $tempsense to _sense)(set: $filtered to it - (find: _toy where "bad senses" of _toy of $recommendations contains $tempsense, ...$filtered))]
]]
<==
|==|
|=
(link: "Show all")[(if: $desiredsenses is a dataset)[(if: $desiredsenses's length > 0)[(for: each _toy, ...$filtered)[(set: $temptoy to _toy)(if: (nonepass: _sense where "good senses" of $temptoy of $recommendations contains _sense, ...$desiredsenses))[(set: $sensefilter to it + (a: $temptoy))]](set: $filtered to it - $sensefilter)]](set: $filtered to (shuffled: ...$filtered))(goto: "filtered recommendations")]
=|
==>
(link: "Random toy!")[(if: $desiredsenses is a dataset)[(if: $desiredsenses's length > 0)[(for: each _toy, ...$filtered)[(set: $temptoy to _toy)(if: (nonepass: _sense where "good senses" of $temptoy of $recommendations contains _sense, ...$desiredsenses))[(set: $sensefilter to it + (a: $temptoy))]](set: $filtered to it - $sensefilter)]](goto: "random recommendation")]
|==|(if: $filtered's length > 0)[(set: _toy to (either: ...$filtered))\
''(upperfirst: _toy)!''
(print: "description" of _toy of $recommendations)
[[Thanks!->thanks]]
[[Show me another!->random recommendation]]
[[Start over->Start]]](else:)[(display: "no toy found (rec edition)")](if: $filtered's length > 0)[(for: each _toy, ...$filtered)[(link: "_toy")[(set: $toy to _toy)(goto: "rec-toy")]
]](else:)[(display: "no toy found (rec edition)")]''(upperfirst: $toy)''
(print: "description" of $toy of $recommendations)
[[Thanks!->thanks]]
[[Back to list->filtered recommendations]]
[[Start over->Start]]I'm sorry; there aren't any toys in the list that match your requirements. I hope you're able to find one somewhere!
(If you do, you can add it into your database so that you can remember it next time you need this!)
[[Start over->Start]]I'm sorry; there are no stim toys in the database that match your needs right now.
It looks like this is an important gap in your stim toy repertoire; I hope you can find something to fill it with. Maybe looking at Stim Toy Finder's built-in [[recommendations->rec finder]] will help you think of ideas.
[[Start over->Start]]Stim Toy Finder was created in Twine by G. Deyke. It was designed with autistic people in mind, though it may also be useful for those with ADHD or anxiety (or, really, anyone who uses fidgets).
The built-in list of recommendations is not intended to be an exhaustive list, nor do I have personal experience with everything that's included; it's mainly there to help you come up with ideas. Where a specific product or brand is mentioned, I've received no kickbacks. They're not even aware I'm out here advertising for them.
I've used the term //stim toy// out of a personal preference. I'm aware that some prefer the term //stim tool//; including a preference setting for this would be possible but kind of a hassle (as well as potentially annoying for the user), so I've opted not to. I might be persuaded to change my mind, but only if there's enough demand for it.
Other features I could be persuaded to patch in (but only via sufficient demand //and// financial compensation (not necessarily from the same people)) include a German translation and support for multiple users. About the latter of which:
Stim Toy Finder saves into browser storage, which means that unless you sync browsers across devices, your database is locked into whatever you entered it from. (I realise this may be annoying if you have to enter everything twice; unfortunately, as it stands it's unavoidable.) Being able to personalise your database, not only in terms of what you have available, but in how it personally affects you, is more or less the entire reason Stim Toy Finder exists. This means that - barring the aforementioned multiple user support - each individual using it should run their own copy.
If you're part of a single-computer household, raising or taking care of one or more children, or for whatever other reason need multiple databases on a single device and can't/won't/don't want to convince/pay me or wait for someone else to do so, here are some workarounds:
* Use different browsers for each individual
* Use different browser profiles for each individual
* Rather than using Stim Toy Finder online, download it and store copies in different locations - each in its own subdirectory, labelled with the individual it corresponds to. This works for my combination of Windows and Firefox, but I can make no guarantees for other browsers and/or operating systems.
Drawback: if I ever actually //do// create multiple user support, I can only save one pre-existing database.
The browser storage thing also means that private windows won't save, and that clearing your browser storage //will// result in your database being deleted. Please be aware of this, and only do so deliberately.
Stim Toy Finder has been made freely available as a public service. As such, please do share it widely among those who'd find it useful. Minor tweaking in Twine could turn it into a general coping skills finder, or really any sort of thing-finder; if you want to use it as a framework for this sort of thing, you're absolutely free to do so (though depending on how much you adapt it, I'd very much appreciate a shoutout and for you not to turn a profit from my free labour).
If you have questions, comments, feature requests, bug reports, or praise, you can direct those to me on Twitter: (link: "@GDeyke")[(open-url: "https://twitter.com/GDeyke")]
If you've found Stim Toy Finder useful and feel like giving me a tip, you can use this snazzy not-at-all-ominous PayPal donate button to do so:
=><=
[<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="WHBLWJCPUDG4Y">
<input type="image" src="https://gdeyke.files.wordpress.com/2017/02/donate-button-small.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
</form>]
<==
[[Back to start->Start]]What is this toy called? (link: "(More)")[
Stim Toy Finder will work best if you enter each stim toy individually: for example, if you own two or more tangles, you should enter them as separate toys. This is important because they may be useful in different situations, and will also help to keep you from forgetting about a toy you haven't used in a while.
Because of this, you should try to use unique and specific names: //tangle (blue)// or //blue and white tangle// rather than just //tangle//. If you tend to give your toys actual names due to hyperempathy/object affection, that will work even better.]
=><=
(link: "Enter name")[(set: $newtoy to (prompt: "What is this toy called?", ""))(if: $newtoy is "")[(goto: "Add a new toy")](else-if: $database contains $newtoy)[(goto: "name collision")](else:)[(set: $database to it + (dm: $newtoy, (dm:)))(goto: "set main sense")]]There is already a toy by that name in the database.
* (link: "Choose another name")[(goto: (history:)'s last)]
* (link: "Edit that entry")[(set: $toy to $newtoy)(goto: "Database-toy")]
* [[Back to database->Database]]What is the main sense this toy stimulates? (link: "(More)")[
This is for organisational purposes only. If the toy stimulates two senses about equally, just pick one: it won't make any difference when filtering.
You can use whichever words you're most comfortable with: whether you call it //visual//, //optical//, //sight//, or //eyes// doesn't matter. There's no need to limit yourself to traditional senses, either. You may find that //logic//, //agency//, //sorting//, or //time// are as useful to you as //balance//, //weight//, //smell//, or //sound//.]
(display: "all senses")\
=><=
(if: $senses's length is 0)[(link: "Enter sense")[(set: _tmp to (prompt: "What is the main sense this toy stimulates?", ""))(if: _tmp is "")[(goto: "set main sense")](else:)[(set: $newtoy of $database to it + (dm: "main sense", _tmp))(goto: "set good senses")]]](else:)[(for: each _sense, ...$senses)[(link: "_sense")[(set: $newtoy of $database to it + (dm: "main sense", _sense))(goto: "set good senses")]
](link: "something else")[(set: _tmp to (prompt: "What is the main sense this toy stimulates?", ""))(if: _tmp is "")[(goto: "set main sense")](else:)[(set: $newtoy of $database to it + (dm: "main sense", _tmp))(goto: "set good senses")]]](set: $senses to (ds:))(for: each _toy, ...(datanames: $database))[(set: $temptoy to _toy)(if: $temptoy of $database contains "main sense")[(set: $senses to it + (ds: "main sense" of $temptoy of $database))]](for: each _toy, ...(datanames: $database))[(set: $temptoy to _toy)(if: $temptoy of $database contains "good senses")[(set: $senses to it + "good senses" of $temptoy of $database)]](for: each _toy, ...(datanames: $database))[(set: $temptoy to _toy)(if: $temptoy of $database contains "bad senses")[(set: $senses to it + "bad senses" of $temptoy of $database)]]List all the senses this toy stimulates. (link: "(More)")[
Enter only one sense at a time. If the toy stimulates a sense in a way which you //never// regard as pleasant, do not include that sense.
You can use whichever words you're most comfortable with: whether you call it //visual//, //optical//, //sight//, or //eyes// doesn't matter. There's no need to limit yourself to traditional senses, either. You may find that //logic//, //agency//, //sorting//, or //time// are as useful to you as //balance//, //weight//, //smell//, or //sound//.]
=><=
(display: "all senses")(unless: $newtoy of $database contains "good senses")[(set: $newtoy of $database to it + (dm: "good senses", (ds: "main sense" of $newtoy of $database)))]\
(for: each _sense, ...$senses)[(if: "good senses" of $newtoy of $database contains _sense)[_sense
](else:)[(link-reveal: "_sense")[(set: "good senses" of $newtoy of $database to it + (ds: _sense))]
]](link: "something else")[(set: _tmp to (prompt: "List a sense this toy stimulates.", ""))(unless: _tmp is "")[(set: "good senses" of $newtoy of $database to it + (ds: _tmp))](goto: "set good senses")]
==>
[[Next->set bad senses]]List all the senses this toy sometimes irritates. (link: "(More)")[
Enter only one sense at a time. If the toy stimulates a sense in a way which you //always// regard as pleasant, do not include that sense.
Also do not include senses if the irritation is avoidable. For example, if a stim app includes sound which might sometimes bother you, but you can still use the app to stim with the sound turned off, do not include //sound// for that app.
You can use whichever words you're most comfortable with: whether you call it //visual//, //optical//, //sight//, or //eyes// doesn't matter. There's no need to limit yourself to traditional senses, either. You may find that //logic//, //agency//, //sorting//, or //time// are as useful to you as //balance//, //weight//, //smell//, or //sound//.]
=><=
(display: "all senses")(unless: $newtoy of $database contains "bad senses")[(set: $newtoy of $database to it + (dm: "bad senses", (ds:)))]\
(for: each _sense, ...$senses)[(if: "bad senses" of $newtoy of $database contains _sense)[_sense
](else:)[(link-reveal: "_sense")[(set: "bad senses" of $newtoy of $database to it + (ds: _sense))]
]](link: "something else")[(set: _tmp to (prompt: "List a sense this toy irritates.", ""))(unless: _tmp is "")[(set: "bad senses" of $newtoy of $database to it + (ds: _tmp))](goto: "set bad senses")]
==>
[[Next->set portability]]Can you easily carry this toy around with you?
=><=
|=
(link: "yes")[(set: $newtoy of $database to it + (dm: "portable", true))(goto: "overstimulation setting")]
=||||
(link: "no")[(set: $newtoy of $database to it + (dm: "portable", false))(goto: "overstimulation setting")]
|==|Does this toy help you when you're //over//stimulated?
=><=
|=
(link: "yes")[(set: $newtoy of $database to it + (dm: "good when overstimulated", true))(goto: "understimulation setting")]
=||||
(link: "no")[(set: $newtoy of $database to it + (dm: "good when overstimulated", false))(goto: "understimulation setting")]
|==|Does this toy help you when you're //under//stimulated?
=><=
|=
(link: "yes")[(set: $newtoy of $database to it + (dm: "good when understimulated", true))(goto: "darkness setting")]
=||||
(link: "no")[(set: $newtoy of $database to it + (dm: "good when understimulated", false))(goto: "darkness setting")]
|==|Can you use this toy in the dark? (link: "(More)")[
Many people sometimes find that they're so overstimulated that they need to go to a dark room. This might limit your use of of toys to things which are glow-in-the-dark or emit another gentle light, or that don't require any vision at all.]
=><=
|=
(link: "yes")[(set: $newtoy of $database to it + (dm: "dark", true))(goto: "set emotions")]
=||||
(link: "no")[(set: $newtoy of $database to it + (dm: "dark", false))(goto: "set emotions")]
|==|Does this toy help you when you're feeling a particular emotion? (link: "(More)")[
Enter all that apply, but only one emotion at a time. You can use either nouns or adjectives, whichever you like more: it doesn't matter whether you call it //angry// or //anger//.]
(display: "all emotions")(unless: $newtoy of $database contains "emotions")[(set: $newtoy of $database to it + (dm: "emotions", (ds:)))]\
=><=
(if: $emotions's length is 0)[(link: "Enter emotion")[(set: _tmp to (prompt: "List an emotion this toy helps you with.", ""))(if: _tmp is "")[(goto: "set emotions")](else:)[(set: "emotions" of $newtoy of $database to it + (ds: _tmp))(goto: "set emotions")]]](else:)[(for: each _emotion, ...$emotions)[(if: "emotions" of $newtoy of $database contains _emotion)[_emotion
](else:)[(link-reveal: "_emotion")[(set: "emotions" of $newtoy of $database to it + (ds: _emotion))]
]](link: "something else")[(set: _tmp to (prompt: "List an emotion this toy helps you with.", ""))(unless: _tmp is "")[(set: "emotions" of $newtoy of $database to it + (ds: _tmp))](goto: "set emotions")]]
==>
[[Next->set situations]](set: $emotions to (ds:))(for: each _toy, ...(datanames: $database))[(set: $temptoy to _toy)(if: $temptoy of $database contains "emotions")[(set: $emotions to it + "emotions" of $temptoy of $database)]]Are there any situations or activities this toy is particularly helpful for? (link: "(More)")[
For example: //focusing while watching something//, //focusing while listening to something//, //bedtime//, //meditation//, and so on. Enter all that apply, but only one situation at a time.]
(display: "all situations")(unless: $newtoy of $database contains "situations")[(set: $newtoy of $database to it + (dm: "situations", (ds:)))]\
=><=
(if: $situations's length is 0)[(link: "Enter situation")[(set: _tmp to (prompt: "List a situation this toy helps you with.", ""))(if: _tmp is "")[(goto: "set situations")](else:)[(set: "situations" of $newtoy of $database to it + (ds: _tmp))(goto: "set situations")]]](else:)[(for: each _situation, ...$situations)[(if: "situations" of $newtoy of $database contains _situation)[_situation
](else:)[(link-reveal: "_situation")[(set: "situations" of $newtoy of $database to it + (ds: _situation))]
]](link: "something else")[(set: _tmp to (prompt: "List a situation this toy helps you with.", ""))(unless: _tmp is "")[(set: "situations" of $newtoy of $database to it + (ds: _tmp))](goto: "set situations")]]
==>
[[Next->set description]](set: $situations to (ds:))(for: each _toy, ...(datanames: $database))[(set: $temptoy to _toy)(if: $temptoy of $database contains "situations")[(set: $situations to it + "situations" of $temptoy of $database)]](set: $newtoy of $database to it + (dm: "description", ""))\
Would you like to add a short description for this stim toy? (link: "(More)")[
This is an opportunity to add any notes or reminders for yourself: things to remember when using this toy, reasons to use this toy instead of another similar one, or a clarifying description in case you ever forget which toy //$newtoy// referred to. Keep it to a brief paragraph at most.
The input prompt isn't really suited for full sentences, but you'll have a chance to look it over and confirm.]
=><=
(unless: $tmpdescription is a string)[(link: "Enter description")[(set: $tmpdescription to (prompt: "Add a short description for this stim toy.", ""))]](event: when $tmpdescription is a string)[You wrote:
//$tmpdescription//
Does this look good?
(link: "Yes, that's fine")[(set: "description" of $newtoy of $database to $tmpdescription)(set: $tmpdescription to 0)(goto: "toy added")]
(link: "Let me try again")[(set: $tmpdescription to 0)(goto: "set description")]]
<==
(link: "No, thanks")[(set: $tempdescription to 0) (goto: "toy added")](if: (savegame: "all users"))[''(upperfirst: $newtoy)'' has been added to the database!
(link: "View this entry")[(set: $toy to $newtoy)(goto: "Database-toy")]
[[Back to database->Database]]
(link: "Back to start")[(goto: "save screen")]](else:)[(goto: "save failed")]''There was a problem with saving your database.''
Stim Toy Finder keeps your database in browser storage. It may have failed because you're using a private browsing window, because you've forbidden your browser from remembering things, or because your browser storage is full.
If you can solve this problem from here, do so now and then click [[try again->toy added]]. If you need to restart your browser in order to make it work, it's probably best if you do so //now//, before more unsaveable effort goes to waste.
You can still use Stim Toy Finder's [[recommendation->rec finder]] function without functional saving, but it will not be very effective for its actual purpose unless you can save.(savegame: "all users")(goto: "Start")What is this toy called? (link: "(More)")[
Stim Toy Finder will work best if you enter each stim toy individually: for example, if you own two or more tangles, you should enter them as separate toys. This is important because they may be useful in different situations, and will also help to keep you from forgetting about a toy you haven't used in a while.
Because of this, you should try to use unique and specific names: //tangle (blue)// or //blue and white tangle// rather than just //tangle//. If you tend to give your toys actual names due to hyperempathy/object affection, that will work even better.]
=><=
(link: "Enter name")[(set: $newtoy to (prompt: "What is this toy called?", ""))(if: $newtoy is "")[(goto: "edit name")](else-if: $database contains $newtoy)[(unless: $newtoy is $toy)[(goto: "name collision")](else:)[(goto: "save edits")]](else:)[(set: $database to it + (dm: $newtoy, (dm:)))(move: $toy of $database into $newtoy of $database)(set: $toy to $newtoy)(goto: "save edits")]]
(set: "main sense" of $toy of $database to (ds:))\
What is the main sense this toy stimulates? (link: "(More)")[
This is for organisational purposes only. If the toy stimulates two senses about equally, just pick one: it won't make any difference when filtering.
You can use whichever words you're most comfortable with: whether you call it //visual//, //optical//, //sight//, or //eyes// doesn't matter. There's no need to limit yourself to traditional senses, either. You may find that //logic//, //agency//, //sorting//, or //time// are as useful to you as //balance//, //weight//, //smell//, or //sound//.]
(display: "all senses")\
=><=
(if: $senses's length is 0)[(link: "Enter sense")[(set: _tmp to (prompt: "What is the main sense this toy stimulates?", ""))(if: _tmp is "")[(goto: "edit main sense")](else:)[(set: "main sense" of $toy of $database to _tmp)(goto: "Database-toy")]]](else:)[(for: each _sense, ...$senses)[(link: "_sense")[(set: "main sense" of $toy of $database to _sense)(goto: "save edits")]
](link: "something else")[(set: _tmp to (prompt: "What is the main sense this toy stimulates?", ""))(if: _tmp is "")[(goto: "edit main sense")](else:)[(set: "main sense" of $toy of $database to _tmp)(goto: "save edits")]]]List all the senses this toy stimulates. (link: "(More)")[
Enter only one sense at a time. If the toy stimulates a sense in a way which you //never// regard as pleasant, do not include that sense.
You can use whichever words you're most comfortable with: whether you call it //visual//, //optical//, //sight//, or //eyes// doesn't matter. There's no need to limit yourself to traditional senses, either. You may find that //logic//, //agency//, //sorting//, or //time// are as useful to you as //balance//, //weight//, //smell//, or //sound//.]
=><=
(display: "all senses")\
(for: each _sense, ...$senses)[(if: "good senses" of $toy of $database contains _sense)[_sense
](else:)[(link-reveal: "_sense")[(set: "good senses" of $toy of $database to it + (ds: _sense))]
]](link: "something else")[(set: _tmp to (prompt: "List a sense this toy stimulates.", ""))(unless: _tmp is "")[(set: "good senses" of $toy of $database to it + (ds: _tmp))](goto: "edit good senses")]
==>
[[Done->save edits]]List all the senses this toy sometimes irritates. (link: "(More)")[
Enter only one sense at a time. If the toy stimulates a sense in a way which you //always// regard as pleasant, do not include that sense.
Also do not include senses if the irritation is avoidable. For example, if a stim app includes sound which might sometimes bother you, but you can still use the app to stim with the sound turned off, do not include //sound// for that app.
You can use whichever words you're most comfortable with: whether you call it //visual//, //optical//, //sight//, or //eyes// doesn't matter. There's no need to limit yourself to traditional senses, either. You may find that //logic//, //agency//, //sorting//, or //time// are as useful to you as //balance//, //weight//, //smell//, or //sound//.]
=><=
(display: "all senses")\
(for: each _sense, ...$senses)[(if: "bad senses" of $toy of $database contains _sense)[_sense
](else:)[(link-reveal: "_sense")[(set: "bad senses" of $toy of $database to it + (ds: _sense))]
]](link: "something else")[(set: _tmp to (prompt: "List a sense this toy irritates.", ""))(unless: _tmp is "")[(set: "bad senses" of $toy of $database to it + (ds: _tmp))](goto: "edit bad senses")]
==>
[[Done->save edits]]Can you easily carry this toy around with you?
=><=
|=
(link: "yes")[(set: "portable" of $toy of $database to true)(goto: "save edits")]
=||||
(link: "no")[(set: "portable" of $toy of $database to false)(goto: "save edits")]
|==|Does this toy help you when you're //over//stimulated?
=><=
|=
(link: "yes")[(set: "good when overstimulated" of $toy of $database to true)(goto: "save edits")]
=||||
(link: "no")[(set: "good when overstimulated" of $toy of $database false)(goto: "save edits")]
|==|Does this toy help you when you're //under//stimulated?
=><=
|=
(link: "yes")[(set: "good when understimulated" of $toy of $database to true)(goto: "save edits")]
=||||
(link: "no")[(set: "good when understimulated" of $toy of $database to false)(goto: "save edits")]
|==|Can you use this toy in the dark? (link: "(More)")[
Many people sometimes find that they're so overstimulated that they need to go to a dark room. This might limit your use of of toys to things which are glow-in-the-dark or emit another gentle light, or that don't require any vision at all.]
=><=
|=
(link: "yes")[(set: "dark" of $toy of $database to true)(goto: "save edits")]
=||||
(link: "no")[(set: "dark" of $toy of $database to false)(goto: "save edits")]
|==|Does this toy help you when you're feeling a particular emotion? (link: "(More)")[
Enter all that apply, but only one emotion at a time. You can use either nouns or adjectives, whichever you like more: it doesn't matter whether you call it //angry// or //anger//.]
(display: "all emotions")(unless: $toy of $database contains "emotions")[(set: $toy of $database to it + (dm: "emotions", (ds:)))]\
=><=
(if: $emotions's length is 0)[(link: "Enter emotion")[(set: _tmp to (prompt: "List an emotion this toy helps you with.", ""))(if: _tmp is "")[(goto: "edit emotions")](else:)[(set: "emotions" of $toy of $database to it + (ds: _tmp))(goto: "edit emotions")]]](else:)[(for: each _emotion, ...$emotions)[(if: "emotions" of $toy of $database contains _emotion)[_emotion
](else:)[(link-reveal: "_emotion")[(set: "emotions" of $toy of $database to it + (ds: _emotion))]
]](link: "something else")[(set: _tmp to (prompt: "List an emotion this toy helps you with.", ""))(unless: _tmp is "")[(set: "emotions" of $toy of $database to it + (ds: _tmp))](goto: "edit emotions")]]
==>
[[Done->save edits]]Are there any situations or activities this toy is particularly helpful for? (link: "(More)")[
For example: //focusing while watching something//, //focusing while listening to something//, //bedtime//, //meditation//, and so on. Enter all that apply, but only one situation at a time.]
(display: "all situations")(unless: $toy of $database contains "situations")[(set: $toy of $database to it + (dm: "situations", (ds:)))]\
=><=
(if: $situations's length is 0)[(link: "Enter situation")[(set: _tmp to (prompt: "List a situation this toy helps you with.", ""))(if: _tmp is "")[(goto: "edit situations")](else:)[(set: "situations" of $toy of $database to it + (ds: _tmp))(goto: "edit situations")]]](else:)[(for: each _situation, ...$situations)[(if: "situations" of $toy of $database contains _situation)[_situation
](else:)[(link-reveal: "_situation")[(set: "situations" of $toy of $database to it + (ds: _situation))]
]](link: "something else")[(set: _tmp to (prompt: "List a situation this toy helps you with.", ""))(unless: _tmp is "")[(set: "situations" of $toy of $database to it + (ds: _tmp))](goto: "edit situations")]]
==>
[[Done->save edits]](set: $toy of $database to it + (dm: "description", ""))\
Would you like to add a short description for this stim toy? (link: "(More)")[
This is an opportunity to add any notes or reminders for yourself: things to remember when using this toy, reasons to use this toy instead of another similar one, or a clarifying description in case you ever forget which toy //$toy// referred to. Keep it to a brief paragraph at most.
The input prompt isn't really suited for full sentences, but you'll have a chance to look it over and confirm.]
=><=
(unless: $tmpdescription is a string)[(link: "Enter description")[(set: $tmpdescription to (prompt: "Add a short description for this stim toy.", ""))]](event: when $tmpdescription is a string)[You wrote:
//$tmpdescription//
Does this look good?
(link: "Yes, that's fine")[(set: "description" of $toy of $database to $tmpdescription)(set: $tmpdescription to 0)(goto: "save edits")]
(link: "Let me try again")[(set: $tmpdescription to 0)(goto: "edit description")]]
<==
(link: "No, thanks")[(set: $tempdescription to 0)(goto: "save edits")](savegame: "all users")(goto: "Database-toy")(if: $filtered's length > 0)[(for: each _toy, ...$filtered)[(link: "_toy")[(set: $toy to _toy)(goto: "Toy")]
]](else:)[(display: "no toy found")](if: $filtered's length > 0)[(set: _toy to (either: ...$filtered))\
''(upperfirst: _toy)!''
(print: "description" of _toy of $database)
[[This will work!]]
[[Show me another!->random toy]]
[[Start over->Start]]](else:)[(display: "no toy found")](either: "Yay!", "Woo!", "Awesome!", "I'm glad to hear it!", "Thank you for using Stim Toy Finder!")
[[Start over->Start]]Thank you for using Stim Toy Finder!
[[Start over->Start]]