// Evol scripts.
// Author:
// gumi
// rein
// Based on CrazyTree, originally made by:
// gumi
// pclouds
// veryape
// wushin
// Description:
// dictionaries for confused tree
// Built-in variables:
// ~t lowercase hot word regex
// ~n npc name
// ~p player name or special name
// ~P player name only
//
// Custom variables:
// {{var}} random from array .D_var$
// {{^var}} same but capitalize
// {{+var}} same but title case
// {{!var}} same but all caps
// You can also specify multiple variables, separated by a comma (,)
//
// Example:
// "*drops a {{! size }} {{ color }} {{^ sizeable object, someone }} on ~p's head*"
function script TREE_dictionaries {
.npc$ = strnpcinfo(0);
// special aliases below (regex of lowercase char names)
// the substitutions are an array separated by backticks (`)
// XXX: this could become a hashtable at some point if it gets too big
setarray(getvariableofnpc(.alias$[0], .npc$),
"^veryape(?:gm)?$", "hairyape",
"^wu-?shin$", "Dwarven Princess`"
"She-Ra",
"^reid$", "Mistress`"
"Milady`"
"R'eid",
"^(?:slicer|madcamel)$", "Camel Toe",
"^4144(?:4d494e)?$", "NPC",
"^omatt$", "@@https://youtu.be/S2qiZoqH9OY|omatt@@`"
"o'matt",
"^prsm$", "Refractor`"
"Overlord");
set(getvariableofnpc(.alias, .npc$), getarraysize(getvariableofnpc(.alias$, .npc$)));
// special drops below (regex of lowercase char names)
// the substitutions are an array of standard replies separated by backticks (`)
// and allow {{variables}}
// XXX: this could become a hashtable at some point if it gets too big
setarray(getvariableofnpc(.sdrops$[0], .npc$),
"^reid$", "*drops an empty jar of Nutella on ~p*",
"^omatt$", "*drops Elisabeth Granneman on ~p*");
set(getvariableofnpc(.sdrops, .npc$), getarraysize(getvariableofnpc(.sdrops$, .npc$)));
// variables below
setarray(getvariableofnpc(.D_size$[1], .npc$), // {{size}}
"tiny", 1,
"small", 1,
"perfectly sized", 1,
"large", 1,
"huge", 1,
"humongous", 1,
"ginormous", 1);
set(getvariableofnpc(.D_size, .npc$), getarraysize(getvariableofnpc(.D_size$, .npc$)));
setarray(getvariableofnpc(.D_color$[1], .npc$), // {{color}}
"red", 1,
"orange", 1,
"yellow", 1,
"pink", 1,
"aqua", 1,
"cyan", 1,
"blue", 1,
"indigo", 1,
"violet", 1,
"purple", 1,
"magenta", 1,
"pink", 1,
"black", 1,
"white", 1,
"grey", 1,
"greyscale", 1,
"brown", 1,
"maroon", 1,
"turquoise", 1,
"lime", 1,
"sky blue", 1,
"invisible", 1);
set(getvariableofnpc(.D_color, .npc$), getarraysize(getvariableofnpc(.D_color$, .npc$)));
setarray(getvariableofnpc(.D_violentadverb$[1], .npc$), // {{violent adverb}}
"violently", 1,
"repeatedly", 1,
"casually", 1,
"forcefully", 1,
"slowly", 1,
"carefully", 1,
"hopefully", 1,
"dangerously", 1,
"shockingly", 1,
"religiously", 1);
set(getvariableofnpc(.D_violentadverb, .npc$), getarraysize(getvariableofnpc(.D_violentadverb$, .npc$)));
setarray(getvariableofnpc(.D_hello$[1], .npc$), // {{hello}}
"hi", 4,
"hey", 3,
"yo", 2,
"hello", 10,
"howdy", 1,
"bonjour", 1);
set(getvariableofnpc(.D_hello, .npc$), getarraysize(getvariableofnpc(.D_hello$, .npc$)));
setarray(getvariableofnpc(.D_violentverb$[1], .npc$), // {{violent verb}}
"slaps", 5,
"hits", 1,
"pummels", 1,
"beats", 1,
"flattens", 1,
"taunts", 1,
"liquidates", 1,
"spanks", 1,
"affronts", 1,
"tranquilizes", 1,
"atomizes", 1,
"impales", 1,
"dismembers", 1);
set(getvariableofnpc(.D_violentverb, .npc$), getarraysize(getvariableofnpc(.D_violentverb$, .npc$)));
// FIXME: Is this even used anywhere?
setarray(getvariableofnpc(.D_location$[1], .npc$), // {{location}}
"Artis", 1,
"Hurnscald", 1,
"Tulimshar", 1,
"Nivalis", 1,
"Candor", 1,
"Drasil", 1);
set(getvariableofnpc(.D_location, .npc$), getarraysize(getvariableofnpc(.D_location$, .npc$)));
setarray(getvariableofnpc(.D_sizeableobject$[1], .npc$), // {{sizeable object}}
"trout", 1,
"whale", 1,
"space whale", 1,
"penguin", 1,
"coelacanth", 1,
"squid", 1,
"shrimp", 1,
"crab", 1,
"tentacle", 1,
"dictionary", 1,
"grammar book", 1,
"textbook", 1,
"dinosaur", 1,
"t-rex", 1,
"star-nosed mole", 1,
"chimpanzee", 1,
"mermaid", 1,
"merman", 1,
"piano", 1,
"prince", 1,
"princess", 1,
"pinkie", 1,
"squirrel", 1,
"mouboo", 1,
"wet mop", 1,
"drunken pirate", 1,
"cake", 1,
"cookie", 1,
"chocobo", 1,
"restraining order", 1,
"freight train", 1,
"carnival hammer", 1,
"crate", 1,
"bomb", 1,
"bowl of petinuas", 1,
"box", 1,
"platypus", 1,
"magic eightball", 1,
"vase", 1);
set(getvariableofnpc(.D_sizeableobject, .npc$), getarraysize(getvariableofnpc(.D_sizeableobject$, .npc$)));
setarray(getvariableofnpc(.D_nsizeableobject$[1], .npc$), // {{n sizeable object}}
"octopus", 1,
"elephant", 1,
"angry cat", 1,
"anvil", 1,
"encyclopedia set", 1);
set(getvariableofnpc(.D_nsizeableobject, .npc$), getarraysize(getvariableofnpc(.D_nsizeableobject$, .npc$)));
setarray(getvariableofnpc(.D_someone$[1], .npc$), // {{someone}}
"Voldemort", 1,
"Cthulhu", 1,
"Platyna", 1,
"Hitler", 1,
"Luvia", 1,
"General Krukan", 1,
"Borg Queen", 1,
"Freeyorp", 1,
"MadCamel", 1);
set(getvariableofnpc(.D_someone, .npc$), getarraysize(getvariableofnpc(.D_someone$, .npc$)));
// replies below
setarray(getvariableofnpc(.greetings$[1], .npc$),
"{{^ hello }} ~p!", 4,
"{{^ hello }} ~p.", 6,
"{{^ hello }} ~p, what's up?", 1,
"{{^ hello }} ~p, anything new?", 1,
"{{^ hello }} ~p, how are you?", 1,
"~p!!!!", 1,
"~p!!!", 1,
"~p!!", 1,
"{{^ hello }} ~p! You are looking lovely today!", 1,
"Welcome back, ~p.", 3,
"~p is back!!", 1,
"Hello and welcome to the Aperture Science computer-aided enrichment center.", 1,
"Greetings ~p.", 1,
"What's up ~p?", 2,
"How are you ~p?", 1);
set(getvariableofnpc(.greetings, .npc$), getarraysize(getvariableofnpc(.greetings$, .npc$)));
setarray(getvariableofnpc(.jokes$[1], .npc$),
"How did the tree get drunk? On root beer.", 1,
"Do you think I'm lazy?", 1,
"I miss CrazyTree %%S.", 1,
"I miss LazyTree %%S.", 1,
"I'm not telling you!", 1,
"*sighs.*", 1,
"If I do it for you, then I have to do it for everybody.", 1,
"What did the beaver say to the tree? It's been nice gnawing you.", 1,
"What did the little tree say to the big tree? Leaf me alone.", 1,
"What did the tree wear to the pool party? Swimming trunks.", 1,
"What do trees give to their dogs? Treets.", 1,
"What do you call a tree that only eats meat? Carniforous.", 1,
"What do you call a tree who's always envious? Evergreen.", 1,
"What is the tree's least favourite month? Sep-timber!", 1,
"What kind of tree can fit into your hand? A palm-tree.", 1,
"What was the tree's favorite subject in school? Chemistree.", 1,
"Why did the leaf go to the doctor? It was feeling green.", 1,
"Why doesn't the tree need sudo? Because it has root.", 1,
"Why was the cat afraid of the tree? Because of its bark.", 1,
"Why was the tree executed? For treeson.", 1,
"How do trees get on the internet? They log in.", 1,
"Why did the pine tree get into trouble? Because it was being knotty.", 1,
"Did you hear the one about the oak tree? It's a corn-y one!", 1,
"What do you call a blonde in a tree with a briefcase? Branch Manager.", 1,
"How is an apple like a lawyer? They both look good hanging from a tree.", 1,
"Why did the sheriff arrest the tree? Because its leaves rustled.", 1,
"I'm too tired, ask someone else.", 1,
"If you are trying to get me to tell jokes you are barking up the wrong tree!", 1,
"You wooden think they were funny anyhow. Leaf me alone!", 1,
"What is brown and sticky? A stick.", 1,
"What's the best way to carve wood? Whittle by whittle.", 1,
"What did the tree do when the bank closed? It started its own branch.", 1,
"Do you want a brief explanation of an acorn? In a nutshell, it’s an oak tree.", 1,
"A snare drum and a crash cymbal fell out of a tree. *BA-DUM TSSSHH*", 1,
"How do you properly identify a dogwood tree? By the bark!", 1,
"Where do saplings go to learn? Elementree school.", 1,
"Why do trees make great thieves? Sticky fingers.", 1,
"What is green, has leaves, and a trunk? A houseplant going on vacation.", 1,
"Where can Adansonia trees go for a quick trim? To the baobarber.", 1,
"What looks like half a spruce tree? The other half.", 1,
"What do you give to a sick citrus tree? Lemon aid.", 1,
"What did the tree say to the drill? You bore me.", 1,
"What happened to the wooden car with wooden wheels and a wooden engine? It wooden go.", 1,
"How do trees keep you in suspense? I'll tell you tomorrow.", 1,
"Where do birch trees keep their valuables? In a river bank.", 1,
"What kind of stories do giant sequoia trees tell? Tall tales.", 1,
"What is the most frustrating thing about being a tree? Having so many limbs and not being able to walk.", 1,
"What's black, highly dangerous, and lives in a tree? A crow with a machine gun.", 1,
"What kind of wood doesn't float? Natalie Wood.", 1,
"Two men passed a sign while looking for work. It was for tree fellers. They said: “what a shame, there are only two of us”.", 1);
set(getvariableofnpc(.jokes, .npc$), getarraysize(getvariableofnpc(.jokes$, .npc$)));
setarray(getvariableofnpc(.healing$[1], .npc$),
"Eat an apple, they're good for you.", 1,
"If I do it for you, then I have to do it for everybody.", 1,
"Oh, go drink a potion or something.", 1,
"Whoops! I lost my spellbook.", 1,
"No mana.", 1);
set(getvariableofnpc(.healing, .npc$), getarraysize(getvariableofnpc(.healing$, .npc$)));
setarray(getvariableofnpc(.whoami$[1], .npc$),
"An undercover GM.", 1,
"An exiled GM.", 1,
"I'm not telling you!", 1,
"I'm a bot! I'll be level 99 one day! Mwahahahaaha!!!111!", 1,
"Somebody said I'm a Chinese copy of CrazyTree.", 1,
"I am your evil twin.", 1,
"I don't remember anything after I woke up! What happened to me?", 1,
"I don't know. Why am I here??", 1,
"Who are you?", 1,
"On the 8th day, God was bored and said 'There will be bots'. So here I am.", 1,
"♪ I'm your hell, I'm your dream, I'm nothing in between ♪♪", 1,
"♪♪ Aperture Science. We do what we must, because... we can ♪", 1,
"I'm just a reincarnation of a copy.", 1);
set(getvariableofnpc(.whoami, .npc$), getarraysize(getvariableofnpc(.whoami$, .npc$)));
setarray(getvariableofnpc(.drops$[1], .npc$),
"*drops a {{ sizeable object }} on ~p's head.*", 8,
"*drops an {{ n sizeable object }} on ~p's head.*", 2,
"*drops {{ someone }} on ~p's head.*", 1,
"*drops a coin on ~p's head.*", 1,
"*drops a fruit on ~p's head.*", 1,
"*drops an apple on ~p's head.*", 1,
"*drops an iten on ~p's head.*", 1,
"*drops a GM on ~p.*", 1,
"*drops a piece of moon rock on ~p's head.*", 1,
"*drops a pin on ~p's head.*", 1,
"*drops a rock on ~p's head.*", 1,
"*drops a tub of paint on ~p's head.*", 1,
"*drops a sandworm on ~p.*", 1,
"*drops an idea in ~p's head.*", 1,
"*drops The Hitchhiker's Guide to the Galaxy on ~p's head.*", 1,
"Ouch.", 1,
"Ouchy.", 1,
"*drops dead.*", 1,
"*sighs.*", 1,
"Leaf me alone.", 1,
"Stop it! I don't drop branches, try the Druid tree for once!", 1);
set(getvariableofnpc(.drops, .npc$), getarraysize(getvariableofnpc(.drops$, .npc$)));
setarray(getvariableofnpc(.die$[1], .npc$),
"*drops an iten on ~p's head.*", 1,
"*drops a piece of moon rock on ~p's head.*", 1,
"*drops {{ someone }} on ~p's head.*", 1,
"*drops a {{ sizeable object }} on ~p's head.*", 3,
"*drops an {{ n sizeable object }} on ~p's head.*", 1,
"*drops a {{ size }} {{ sizeable object, n sizeable object }} on ~p's head.*", 1,
"*drops a {{ size }} {{ color }} {{ sizeable object, n sizeable object }} on ~p's head.*", 1,
"*{{ violent adverb }} {{ violent verb }} ~p.*", 1,
"*drops dead.*", 1,
"*sighs.*", 1,
"Avada Kedavra!", 1,
"Make me!", 1,
"Never!!", 1,
"You die, ~p!", 4,
"No!", 1,
"In a minute.", 1,
"Suuure... I'll get right on it...", 1);
set(getvariableofnpc(.die, .npc$), getarraysize(getvariableofnpc(.die$, .npc$)));
setarray(getvariableofnpc(.poke$[1], .npc$),
"*tickles.*", 1);
set(getvariableofnpc(.poke, .npc$), getarraysize(getvariableofnpc(.poke$, .npc$)));
setarray(getvariableofnpc(.disgusting$[1], .npc$),
"Ewwwww %%^.", 1);
set(getvariableofnpc(.disgusting, .npc$), getarraysize(getvariableofnpc(.disgusting$, .npc$)));
setarray(getvariableofnpc(.answer$[1], .npc$),
"42.", 1,
"Kittens.", 1);
set(getvariableofnpc(.answer, .npc$), getarraysize(getvariableofnpc(.answer$, .npc$)));
setarray(getvariableofnpc(.burning$[1], .npc$),
"*curses ~p and dies %%c.*", 1,
"Help! I'm on fire!", 1,
"Oh hot.. hot hot!", 1,
"*is glowing.*", 1,
"*is flaming.*", 1,
"Ehemm. Where are firefighters? I need them now!", 1,
"*is so hot!.*", 1,
"*slowly catches fire.*", 1,
"*trembles with trepidation.*", 1,
"*is immune to fire.*", 1);
set(getvariableofnpc(.burning, .npc$), getarraysize(getvariableofnpc(.burning$, .npc$)));
setarray(getvariableofnpc(.kill$[1], .npc$),
"*curses ~p and dies %%c.*", 1);
set(getvariableofnpc(.kill, .npc$), getarraysize(getvariableofnpc(.kill$, .npc$)));
setarray(getvariableofnpc(.silly$[1], .npc$),
"Hahaha, good one!", 1);
set(getvariableofnpc(.silly, .npc$), getarraysize(getvariableofnpc(.silly$, .npc$)));
setarray(getvariableofnpc(.love$[1], .npc$),
"♪♪ and IIII.. will alwayyyys loooovvve youuuuu. ♪♪ %%]", 1,
"♪♪ nothing's gonna change my love for you, you oughta know by now how much I love you.. ♪ %%]", 1,
"♪ ..and then I go and spoil it all, by saying something stupid like: “I love you.” ♪", 1,
"♪ ..won't you find a place for me? somewhere in your heart... ♪♪", 1,
"Thank you.", 1,
"♪♪ ..I can't love another when my heart is somewhere far away.. ♪", 1,
"%%]", 1);
set(getvariableofnpc(.love, .npc$), getarraysize(getvariableofnpc(.love$, .npc$)));
setarray(getvariableofnpc(.dance$[1], .npc$),
"I would but I am rooted to the ground.", 1,
"Have you ever seen a tree dance before?", 1,
"Hahaha, good one!", 1);
set(getvariableofnpc(.dance, .npc$), getarraysize(getvariableofnpc(.dance$, .npc$)));
setarray(getvariableofnpc(.hate$[1], .npc$),
"Right back at you!", 1,
"Ok...", 1,
"*pats ~p, let it go...*", 1,
"Hu hu hu, ~p hates me.", 1);
set(getvariableofnpc(.hate, .npc$), getarraysize(getvariableofnpc(.hate$, .npc$)));
setarray(getvariableofnpc(.bye$[1], .npc$),
"*waves goodbye to ~p in tears, come back soon!*", 1);
set(getvariableofnpc(.bye, .npc$), getarraysize(getvariableofnpc(.bye$, .npc$)));
setarray(getvariableofnpc(.pain$[1], .npc$),
"Ouch.", 1,
"Ouchy.", 1,
"Argh.", 1,
"Eek.", 1,
"*howls.*", 1,
"*screams.*", 1,
"*groans.*", 1,
"*cries.*", 1,
"*faints.*", 1,
"*shrieks.*", 1,
"*hides behind itself.*", 1,
"%%k", 1,
"Why, what did I do to you? %%i", 1);
set(getvariableofnpc(.pain, .npc$), getarraysize(getvariableofnpc(.pain$, .npc$)));
setarray(getvariableofnpc(.eightball$[1], .npc$),
"It is possible.", 1,
"Yes!", 1,
"Of course.", 1,
"Naturally.", 1,
"Obviously.", 1,
"It shall be.", 1,
"The outlook is good.", 1,
"It is so.", 1,
"One would be wise to think so.", 1,
"The answer is certainly yes.", 1,
"In your dreams.", 1,
"I doubt it very much.", 1,
"No chance.", 1,
"The outlook is very poor.", 1,
"Unlikely.", 1,
"About as likely as pigs flying.", 1,
"You're kidding, right?", 1,
"NO!", 1,
"NO.", 1,
"No.", 1,
"Maybe...", 1,
"No clue.", 1,
"I don't know.", 1,
"The outlook is hazy, please ask again later.", 1,
"What are you asking me for?", 1,
"Come again?", 1,
"You know the answer better than I.", 1,
"The answer is def-- oooh! shiny thing!", 1,
"No idea.", 1,
"Perhaps.", 1,
"I think it is better not to tell you.", 1,
"Error 417: Expectation failed.", 1);
set(getvariableofnpc(.eightball, .npc$), getarraysize(getvariableofnpc(.eightball$, .npc$)));
setarray(getvariableofnpc(.bad$[1], .npc$),
"I'm not bad! You are bad!", 1,
"OK, I'm bad.", 1,
"I'm just a littttle bad.", 1,
"Not as bad as the people that made me.", 1);
set(getvariableofnpc(.bad, .npc$), getarraysize(getvariableofnpc(.bad$, .npc$)));
setarray(getvariableofnpc(.no_idea$[1], .npc$),
"What?", 2,
"What??", 1,
"Whatever.", 1,
"Hmm...", 2,
"Huh?", 1,
"*yawns.*", 1,
"Wait a minute...", 1,
"What are you talking about?", 1,
"Who are you?", 1,
"What about me?", 1,
"I don't know what you are talking about", 1,
"Excuse me?", 1,
"Very interesting.", 1,
"Really?", 1,
"Go on...", 1,
"*scratches its leafy head.*", 1,
"*feels a disturbance in the force.*", 1,
"%%j", 1,
"*senses a disturbance in the force.*", 1,
"I'm bored...", 1,
"%%U", 1,
"%%[", 1);
set(getvariableofnpc(.no_idea, .npc$), getarraysize(getvariableofnpc(.no_idea$, .npc$)));
setarray(getvariableofnpc(.shut_up$[1], .npc$),
"*goes hide in a corner %%S.*", 1);
set(getvariableofnpc(.shut_up, .npc$), getarraysize(getvariableofnpc(.shut_up$, .npc$)));
setarray(getvariableofnpc(.climb$[1], .npc$),
"*sways violently.*", 1,
"*bends all the way to the ground.*", 1,
"*creaks and bends.*", 1,
"*welcomes those who come to play %%I.*", 1,
"*beams with pride.*", 1);
set(getvariableofnpc(.climb, .npc$), getarraysize(getvariableofnpc(.climb$, .npc$)));
return;
}