Simple NPC language simplified even further! (English)

Everything about Illarion that fits nowhere else. / Alles über Illarion was inhaltlich in kein anderes Board passt.

Moderator: Gamemasters

User avatar
Faladron
Posts: 1139
Joined: Thu May 05, 2005 3:52 pm
Location: Ich warte auf NIX

Simple NPC language simplified even further! (English)

Post by Faladron »

I have been put in the position of coordinating the content department concerning the VBU and I humbly ask you, dear community, for assistance.

Content is, to put it easy the flesh on the bones that Illarion rests upon. An interresting sight here, a small story about a location there,
and most of all:

NPCs!

NPCs that actually respond to what characters try to tell them.

In the past, only a very small number of people tried to pick up the simple NPC language, and we pondered over the reason for that.
I myself being a person with no background in programming worth mentioning thought of only one possible reason that keeps people from submitting Npcs:

They are scared of filling a blank page.

You've got all of these fancy and easy to understand tools at your disposal, bricks to put atop of each other to build an awesome NPC but you do not know where to start.

What words should the NPC respond to?
How do I include these words in a fashion that doesn't
lead to bugs?
Where can I save time by using shorter triggers to catch several variations of things people might say and should basically invoke the same response?

So how to change that? Easy: Give you a guideline of things every NPC should respond to at the very least.
People that might find it hard to "script" and are repelled due to that might feel more at ease if all they have to do is fill out a predefined form.

Some guidelines:

Choose a name, race and profession for the NPC you're writing, anything goes! If you have no ideas PM me I've got plenty.
Have the Npc be a believer of at least 1 god (2 preferred) and dislike 1 god (Moshran mostly, add others as you see fit)
Have the Npc have a worldview firmly rooted in one of the three mainland countries (Albar, Gynka, Salkamar)
Please do not use guilds, towns, other Npcs or characters as "YOURTRIGGER1" - 5, as we take the freedom to place those Npcs whereever we see fit for them,
try to use general triggers perhaps relating to their profession or other interresting informations about the NPC (background/traits).

Some informations about how to fill out the form:

Bad: "Hello"->"Hello!"
Equally bad: "Hello"->"#me's face lights up a little as he is adressed. His lips curl into a friendly smile as he explains with a pleasantly sounding voice... you get the picture.

Good: "Hello"->"Oh hello there! What can an old miner do for you?"
Good: "Hello"->"Greetings. Ahh sure is nice to breath fresh air again. Mining is tough work."

3 responses per line are preferred (actually top-notch super awesome) but not mandatory.
Should that be too much one or two will do aswell.
Don't let the fact that you don't find 3 different responses to a simple hello deterr you!

Gods: The list of gods might be overwhelming at first, but it's realy only necessary to fill out 3-4 different responses:
1-2 for the gods the NPC worships
1+ for the god/s he dislikes
1 for all OTHER gods, something along the lines of "Oh sorry. I respect that deity but I prefer to follow X and Y."

So you only need 3-4 responses to cover all 16 gods.

Quest:

Keep things vague. Maybe your Npc has a quest to offer to the player, maybe not. When in doubt leave it blank.

Translation will be provided should you only be able to speak one language,
I thank you for your attention and hope to hear some replies.

Sincerely,

Faladron
Content Development

PS: I'll gladly answer any further questions below.
User avatar
Faladron
Posts: 1139
Joined: Thu May 05, 2005 3:52 pm
Location: Ich warte auf NIX

Post by Faladron »

The templates:

(see below)
User avatar
Faladron
Posts: 1139
Joined: Thu May 05, 2005 3:52 pm
Location: Ich warte auf NIX

Post by Faladron »

(see below)
User avatar
Arvemor
Posts: 599
Joined: Tue Jul 14, 2009 3:36 pm

Post by Arvemor »

Oooh ooh ohh! I shall have a go at this! First, can I just ask if there are any particular stereotypes/accents we can enforce with the particular races: gynk, salk and albar?
For example: Are salks supposed to have darker skin, a heavy speech, all that jazz?

A bit of conformity between these characters would be nice!

Also, are animals allowed?

#me yips and wags his tail.
User avatar
Arvemor
Posts: 599
Joined: Tue Jul 14, 2009 3:36 pm

Post by Arvemor »

Here is a go at a dog! Sorry if I missed anything!

Code: Select all

--Note: ALWAYS add commentaries in an extra line!
--This Template is used for NPCs that stay at one place (Shopkeepers, tavern owners, etc.)
name="Cringe the Dog"
-- Replace to own liking
sex=male
--male/female
race= dog
--erm, yeah. Change that if it needs to be changed
position=
--Will be assigned by a DEV
direction=South
--north, northeast, east, southeast, south, southwest, west, northwest
radius=16
--Keep radius=0 and the Npc won't walk around
QuestID=0
--Will be assigned by a DEV

--NPC by Arvemor

--Help

"Help"->inform ( [Game Help] This NPC is only a dog. Keyphrases: Good dog, Bad dog.)
"Hilfe"->inform ( [Spielhilfe] Dieser NPC ist <Name hier> der <Beruf/Funktion>. Schlüsselwörter: TRIGGER1, TRIGGER2, TRIGGER3, TRIGGER4, TRIGGER5. )

--General speech

"Hello","Greetings","Be greeted","Greet","Hail","Good day","Good morning","Good evening"->"Ruff!","Ruff ruff!","..."
"Grüße","Gruß","Seid gegrüßt","Guten Tag","Guten Abend","Mahlzeit","Tach","Moin","mit dir"->"Ruff!","Ruff ruff!","..."
"Hiho","Hallo","Hey","Greebas","Greebs",english->"#me looks quizzical.","#me tilts his head, panting.","Ruff!"
"Hiho","Hallo","Hey","Greebas","Greebs",german->"GERMAN1.","GERMAN2.","Ruff!"

"Farewell","Good bye","Bye","Fare thee well"->"#me sulks.","#me yips and trots away.","#me whines for you to stay."
"Tschüß","Tschüss","Wiedersehen","Gehabt euch wohl"->"GERMAN1.","GERMAN2.","GERMAN3."

--Catching typical NPC phrases

--none

--Small talk: The talk here should focus on possible questions. Feel free to add more!

"Good boy"->"#me yaps excitedly.","#me wags his tail!","#me jumps up against you, panting."
"Bad boy"->"Grrr....","#me sticks his tail between his legs.","#me lays down and puts his paws over his eyes."
"bone" ->"Yip yip!", "me begins hopping in the air."
"I am","my name"->"#me licks your fingers.","Ruff!","#me licks your face!"
"Ich bin","mein Name"->"GERMAN1.","GERMAN2.","GERMAN3."

--More small talk; add at least five triggers

"#me pats"->"#me nuzzles up.","#me rubs his head against the hand.","#me licks the hand."
"#me scratches"->"#me makes little noises.","#me sits happily, panting a little.","#me twitches his back leg."
"#me kicks"->"#me yelps and jumps aside.","#me lashes back, baring his teeth.","#s Yip!"
"doggie"->"#me looks at you brightly.","#me tilts his head.","#me watches you expectantly."
"#me draws"->"#me shies away from the weapon.","#me whimpers...","#me curls up with his tail between his legs."

"DEINTRIGGER1"->"GERMAN1.","GERMAN2.","GERMAN3."
"DEINTRIGGER2"->"GERMAN1.","GERMAN2.","GERMAN3."
"DEINTRIGGER3"->"GERMAN1.","GERMAN2.","GERMAN3."
"DEINTRIGGER4"->"GERMAN1.","GERMAN2.","GERMAN3."
"DEINTRIGGER5"->"GERMAN1.","GERMAN2.","GERMAN3."

--Main land factions

--no Gods for dogs!

--Catching quest triggers

"Play fetch",english->"drops a ball in your hand.","me gives you a ball and looks at you expectantly."
"quest",german->"GERMAN1.","GERMAN2.","GERMAN3."


--Last catch: Think about keyphrases the player might say and that are not caught until here

"Fetch!"->"ENGLISH1.","ENGLISH2.","ENGLISH3."
"GERMAN"->"GERMAN1.","GERMAN2.","GERMAN3."
"#me throws"->"#me barks happily and runs to retrieve the ball. He brings it back, covered in slobber.","#me wags his tail and brings back a sloppy ball."
"GERMAN"->"GERMAN1.","GERMAN2.","GERMAN3."



--Cycletext: Please add at least(!) ten cycletext messages. The more, the better. You can use emotes (#me is green), too.

cycletext "GERMAN.","#me barks."
cycletext "GERMAN.","#s Ruff ruff!"
cycletext "GERMAN.","#me chases a rat."
cycletext "GERMAN.","#me lazes about."
cycletext "GERMAN.","#me looks around."
cycletext "GERMAN.","#me yawns."
cycletext "GERMAN.","Grrr..."
cycletext "GERMAN.","#me scratches himself."
cycletext "GERMAN.","#me licks his unmentionables."
cycletext "GERMAN.","#me chases his tail."
[/quote]
Last edited by Arvemor on Thu Jul 29, 2010 1:22 pm, edited 1 time in total.
Elijah
Posts: 430
Joined: Fri Feb 19, 2010 3:42 am
Location: Somewhere over the rainbow!

Post by Elijah »

I'm pretty sure there is no dog avatar. There is a wolf however.
User avatar
Faladron
Posts: 1139
Joined: Thu May 05, 2005 3:52 pm
Location: Ich warte auf NIX

Post by Faladron »

I'm pretty sure that this dog will be of use, thank you!
User avatar
Arvemor
Posts: 599
Joined: Tue Jul 14, 2009 3:36 pm

Post by Arvemor »

Woo, seeing as I have been sufficiently praised I shall perhaps do some more!

Oh, question. Is there ways we can use the stats of players vs. stats of npcs? In other words...could we make rped fights with npc with different outcomes?
User avatar
Nitram
Developer
Posts: 7638
Joined: Fri Oct 31, 2003 9:51 am
Contact:

Post by Nitram »

All stats of a NPC are 0.

Nitram
User avatar
Arvemor
Posts: 599
Joined: Tue Jul 14, 2009 3:36 pm

Post by Arvemor »

And so it shall stay for the update then, I'm guessing. Ah well.
User avatar
Skaalib Drurr
Posts: 1007
Joined: Sat Aug 05, 2006 11:30 pm
Location: A place which I call home......

Post by Skaalib Drurr »

Hi there, Couple of questions.
Is it impossible to give answers to triggers as a combination of #me s and speech?
It is allowed to give more than three responses to triggers?
A little more info on how the triggers work would be grand, in particular, whether both words of a trigger must be present to get a response, and whether they must appear in that order.
Lastly do you want us to erase your little notes and who should we send them to?

Oh p.s
How ok is it to make little sort of nudge nudge wink wink comments, such a references that this is a game, or references to other games.
User avatar
Nitram
Developer
Posts: 7638
Joined: Fri Oct 31, 2003 9:51 am
Contact:

Post by Nitram »

Skaalib Drurr wrote:Hi there, Couple of questions.
Hi
Skaalib Drurr wrote:Is it impossible to give answers to triggers as a combination of #me s and speech?
Besides the possibility to write

Code: Select all

#me looks around and says: "Woa what a n00b!"
it is.
Skaalib Drurr wrote:It is allowed to give more than three responses to triggers?
Yes
Skaalib Drurr wrote:A little more info on how the triggers work would be grand, in particular, whether both words of a trigger must be present to get a response, and whether they must appear in that order.
Each trigger is checked unrelated to the other triggers. If one matches, the line is fine.
For more complex triggers you may use regular expressions in your trigger. Such as

Code: Select all

"buy.+beer"
that would result in matching a line that contains the phrase "buy", followed by at least one other character and then the phrase "beer". So it matches "buy beer", "buy one beer", "buy one crappy bottle of bad dwarven beer"
Skaalib Drurr wrote:Lastly do you want us to erase your little notes and who should we send them to?
Keep the notes or remove them. It does not matter. There will be a new version of the easyNPC parser released within the next days. This one would remove this notes for you.
Skaalib Drurr wrote:How ok is it to make little sort of nudge nudge wink wink comments, such a references that this is a game, or references to other games.
Can be done but do not overdo this.

Nitram
User avatar
Estralis Seborian
Posts: 12308
Joined: Wed Nov 10, 2004 9:14 pm
Location: Sir Postalot
Contact:

Post by Estralis Seborian »

A couple of answers to these (important!) questions, for all of this I had to learn the hard way:
  • You can use emotes as answers. Example:

    Code: Select all

    "hello"->"#me waves and replies: 'Oh, hello there!'"
    Please note the use of ' instead of ".
  • You can give as many answers to a trigger as you want. One answer is chosen by random whenever the trigger is, well, triggered. Example:

    Code: Select all

    "hello"->"Hello!","Hi!","Hiho!","Hey dude!"
    If you now say "hello", the NPC either answers with "Hello","Hi!",..., depending on random. Next time you say "hello", he could answers something different from the list.
  • All words of a trigger must be present in the string the player says. The order does not matter AFAIK. But please, avoid lengthy, clumsy triggers nobody will figure out. Example:

    Code: Select all

    "hello, Kenny sent me to you"->"Ah, so Kenny sent you, fine!"
    Very bad style. A player who says "I was sent by Kenny to meet you" won't trigger this trigger. So, better use single words or small combinations of words. Here, e.g., "Kenny".
  • You don't have to erase the comments, you may do so, does not really matter ;-). Send your results to Faladron.
  • Focus on "RPish" NPCs first and, if you want, add small easter eggs. But focus on the RPish-part first.
  • One thing to add: First trigger comes first. So when you write the following, you do something wrong:

    Code: Select all

    "Hell"->"There is no hell."
    "Shell"->"They sell oil I think."
    "Shelly"->"Nice girl!"
    :arrow: "Hell" is part of all the later triggers, so when you say "Shelly", the trigger "hell" is triggered!
I hope this helps! Moaaar such questions, plz!

Edit: Nitram is awesome and faster than me ;-).
User avatar
Skaalib Drurr
Posts: 1007
Joined: Sat Aug 05, 2006 11:30 pm
Location: A place which I call home......

Post by Skaalib Drurr »

Oh it would be nice to know what sort of people you already have to avoid repetition.
User avatar
Nitram
Developer
Posts: 7638
Joined: Fri Oct 31, 2003 9:51 am
Contact:

Post by Nitram »

In order to make the use of the easyNPC language even more easy a tool was developed to work with this language.

Its a editor with a integrated parser for this language that replaces the parser you find on the homepage. It includes some handy features and a more advanced parser then the one of the hompage. Have a look.

Illarion easyNPC Editor

Nitram
User avatar
Quinasa
Posts: 2959
Joined: Thu Jan 29, 2004 12:34 am
Location: The land of cuteness and stuff!
Contact:

Post by Quinasa »

I know it needs some work, but here's what I have for my very first NPC.

Code: Select all

--Note: ALWAYS add commentaries in an extra line!
--This Template is used for NPCs that stay at one place (Shopkeepers, tavern owners, etc.)
name="Olivia Lovely"
-- Replace to own liking
sex=female
--male/female
race=human
--human, elf, dwarf, lizardman, orc, halfling...
position=
--Will be assigned by a DEV
direction=Southwest
--north, northeast, east, southeast, south, southwest, west, northwest
radius=0
--Keep radius=0 and the Npc won't walk around
QuestID=0
--Will be assigned by a DEV

--NPC by Quinasa and Arcia

--Help

"Help"->inform ( [Game Help] This NPC is <Olivia Lovely> the <lonely widow>. Keyphrases: TRIGGER1, TRIGGER2, TRIGGER3, TRIGGER4, TRIGGER5. )
"Hilfe"->inform ( [Spielhilfe] Dieser NPC ist <Name hier> der <Beruf/Funktion>. Schlüsselwörter: TRIGGER1, TRIGGER2, TRIGGER3, TRIGGER4, TRIGGER5. )

--General speech

"Hail","Hello","Greetings","Be greeted","Greet",->"Ah, hello stranger.","Greetings, weary traveler.","How nice of you to stop and say hello to a lonely widow."
"Good day","Good morning","Good evening"->"Is it good? I did not notice.", Nothing is good these days it seems.". What is so good about it?"
"Grüße","Gruß","Seid gegrüßt","Guten Tag","Guten Abend","Mahlzeit","Tach","Moin","mit dir"->"GERMAN1.","GERMAN2.","GERMAN3."
"Hiho","Hallo","Hey","Greebas","Greebs",english->"Ah, hello stranger.","Greetings, weary traveler.","How nice of you to stop and say hello a lonely widow."
"Hiho","Hallo","Hey","Greebas","Greebs",german->"GERMAN1.","GERMAN2.","GERMAN3."

"Farewell","Good bye","Goodbye","Bye","Fare thee well"->"Goodbye, and may all be well in your travels.","Farewell, stranger.","Bye now, be sure to come visit me again!"
"Tschüß","Tschüss","Wiedersehen","Gehabt euch wohl"->"GERMAN1.","GERMAN2.","GERMAN3."
"Ciao","Adieu",english->"Ciao, darling! Don't be a stranger!","Au revoir",english->"Au revoir, my dear.","Farebba","See you",english->"See you soon!"
"Ciao","Adieu","Au revoir","Farebba","See you"->"GERMAN1.","GERMAN2.","GERMAN3."
"How are you","How feel","How do you do"->"#me cries and whispers 'I've lost my husband, and I'm so lonely.'","I would be doing much better if I were not so lonely all the time."
"Wie geht","Wie fühlst","Wie ist es ergangen","Wie Befinden"->"GERMAN1.","GERMAN2.","GERMAN3."
"your name","who are you","who art thou"->"My name is Olivia. Olivia Lovely.","I'm Olivia Lovely, though some call me Olivia the Lonely.","I'm just a sad, lonely widow."
"dein name","wer bist du","wer seid ihr","wie heißt"->"GERMAN1.","GERMAN2.","GERMAN3."

--Catching typical NPC phrases

"what sell","list wares"->"I don't sell anything, but I could be willing to trade with you.","what buy"->"You have nothing I want to purchase.","price of"->"I do not have that."
"was verkauf","was kauf","warenliste","preis von"->"GERMAN1.","GERMAN2.","GERMAN3."
"tell something"->"What would you like to know?","I know many things, can you be more specific?"
"erzähl was","erzähl etwas"->"GERMAN1.","GERMAN2.","GERMAN3."

--Small talk: The talk here should focus on possible questions. Feel free to add more!

"profession"->"I have no real profession since my husband died.","I suppose I can cook a little."
"beruf"->"GERMAN1.","GERMAN2.","GERMAN3."
"job",english->"Without my husband to care for me, I must find a job.","I am searching for a job."
"job"->"GERMAN1.","GERMAN2.","GERMAN3."
"Gobaith","Gobiath",english->"Gobaith has been kind to me.","Are you new to Gobaith?","My husband died to protect this land from the Prince of Salkamar."
"Gobaith","Gobiath"->"GERMAN1.","GERMAN2.","GERMAN3."

"I am","my name"->"It is truly a pleasure to meet you.","Have you come to keep me company?"
"Ich bin","mein Name"->"GERMAN1.","GERMAN2.","GERMAN3."

--More small talk; add at least five triggers

"your husband"->"My husband was a wonderful, loyal man.","I loved my husband very much.","Everything I have reminds me of my him."
"trade"->"If you bring me 10 virgins weed, I will give you a gift.","If you bring me 5 raw ham, I can cook it for you."
"give 5 ham",item(307,all)=<5 ->"You do not have the right amount."
"give 5 ham",item(307,all)=5 ->"Here you are, cooked as promised."deleteitem(307,5)
"give 10 virgins weed","give ten virgins weed"->"#me kisses you on your cheek, you feel like.","ENGLISH2.","ENGLISH3."

"DEINTRIGGER1"->"GERMAN1.","GERMAN2.","GERMAN3."
"DEINTRIGGER2"->"GERMAN1.","GERMAN2.","GERMAN3."
"DEINTRIGGER3"->"GERMAN1.","GERMAN2.","GERMAN3."
"DEINTRIGGER4"->"GERMAN1.","GERMAN2.","GERMAN3."
"DEINTRIGGER5"->"GERMAN1.","GERMAN2.","GERMAN3."

--Main land factions

"albar",english->"My husband and I came here from Albar.","It is the way of Albarian women to serve their husbands as long as they live.","ENGLISH3."
"albar",german->"GERMAN1.","GERMAN2.","GERMAN3."
"gynk","gync",english->"I can't say I've ever been there.","I hear they've got a large thieves guild. I wouldn't go there.","ENGLISH3."
"gync","gynk",german->"GERMAN1.","GERMAN2.","GERMAN3."
"salkama",english->"Pah, Salkamarians. I hate them!","It was Salkamarians that caused the death of my husband.","Humans are humans, thats what I say. Unless they're Salkamarian. Then they're just plain evil."
"salkama",german->"GERMAN1.","GERMAN2.","GERMAN3."

--Gods - use the triggers of the god the NPC worships or fights
-- Pick 1-2 gods he likes, 1 he dislikes
-- Use ONE other response for the other gods i.e. "I don't worship that good much"

"god"->"ENGLISH1.","ENGLISH2.","ENGLISH3."
"Gott","Götter"->GERMAN1.","GERMAN2.","GERMAN3."

"Adron",english->"He does not interest me, for I follow the ladies Sirani and Oldra."
"Adron"->"GERMAN1.","GERMAN2.","GERMAN3."
"Bragon","Brágon",english->"He does not interest me, for I follow the ladies Oldra and Sirani."
"Bragon","Brágon"->"GERMAN1.","GERMAN2.","GERMAN3."
"Cherga",english->"Cherga please bless and protect my husbands soul."
"Cherga"->"GERMAN1.","GERMAN2.","GERMAN3."
"Elara",english->"She does not interest me, for I follow the ladies Oldra and Sirani."
"Elara"->"GERMAN1.","GERMAN2.","GERMAN3."
"Eldan",english->"He does not interest me, for I follow the ladies Sirani and Oldra."
"Eldan"->"GERMAN1.","GERMAN2.","GERMAN3."
"Findari",english->"He does not interest me, for I follow the ladies Sirani and Oldra."
"Findari"->"GERMAN1.","GERMAN2.","GERMAN3."
"Irmorom",english->"He does not interest me, for I follow the ladies Oldra and Sirani."
"Irmorom"->"GERMAN1.","GERMAN2.","GERMAN3."
"Malachin","Malachín",english->"He does not interest me, for I follow the ladies Oldra and Sirani."
"Malachin","Malachín"->"GERMAN1.","GERMAN2.","GERMAN3."
"Moshran",english->"#me cringes and screams 'The Blood God! Speak not his name to me!'","I detest all followers of the Blood God!","Get thee from my sight, if The Bone Lord is your master!"
"Moshran"->"GERMAN1.","GERMAN2.","GERMAN3."
"Nargun","Nargún","Nargùn",english->"He does not interest me, fo I follow the ladies Oldra and Sirani."
"Nargun","Nargún","Nargùn"->"GERMAN1.","GERMAN2.","GERMAN3."
"Oldra",english->"Praise Oldra!","Blessed be the goddess of life and fertility."
"Oldra"->"GERMAN1.","GERMAN2.","GERMAN3."
"Ronagan",english->"He does not interest me, for I follow the ladies Oldra and Sirani."
"Ronagan"->"GERMAN1.","GERMAN2.","GERMAN3."
"Sirani",english->"Sweet Sirani, the goddess of love and desire, brought my husband to me.","Praise Sirani!"
"Sirani"->"GERMAN1.","GERMAN2.","GERMAN3."
"Tanora","Zelphia",english->"She does not interest me, for I follow the ladies Sirani and Oldra."
"Tanora","Zelphia"->"GERMAN1.","GERMAN2.","GERMAN3."
"Ushara",english->"Mother Earth, giver of all life.","Blessed be the elder goddess Ushara."
"Ushara"->"GERMAN1.","GERMAN2.","GERMAN3."
"Zhambra",english->"He does not interest me, for I follow the ladies Sirani and Oldra."
"Zhambra"->"GERMAN1.","GERMAN2.","GERMAN3."

--Catching quest triggers

"quest",english->"Bring me 10 virgins weed and I will give you something special.","Bring me 5 raw ham and I will cook it for you."
"quest",german->"GERMAN1.","GERMAN2.","GERMAN3."
"task","adventure"->"Bring me 10 virgins weed and I will give you something special.","Bring me 5 raw ham and I will cook it for you."
"Auftrag","Aufgabe","Abenteuer"->"GERMAN1.","GERMAN2.","GERMAN3."

--Last catch: Think about keyphrases the player might say and that are not caught until here

"Yes"->"Yes what?."
"Ja"->"GERMAN1.","GERMAN2.","GERMAN3."
"No"->"No?","Are you sure?"
"Nein"->"GERMAN1.","GERMAN2.","GERMAN3."

--Absolutely last catch: Everything a player says and is not caught earlier
--This response should give the player a hint about what to ask the NPC
--Optional Trigger /  Response is only given 1/5 of the time

".*",english,chance(20)->"ENGLISH1.","ENGLISH2.","ENGLISH3."
".*",german,chance(20)->"GERMAN1.","GERMAN2.","GERMAN3."

--Cycletext: Please add at least(!) ten cycletext messages. The more, the better. You can use emotes (#me is green), too.

cycletext "GERMAN.","#me stands alone looking very sad."
cycletext "GERMAN.","I'm so lonely, if only I had someone to talk to."
cycletext "GERMAN.","#me wipes a tear from her cheek."
cycletext "GERMAN.","#me sighs pathetically."
cycletext "GERMAN.","#me looks around to see if there might be anyone coming to talk to her."
cycletext "GERMAN.","Woe is me!"
cycletext "GERMAN.","#me knots some dried, old flower stems in her fingers. There is a small pile of them at her feet."
cycletext "GERMAN.","#me hums a sad sounding melody very quietly."
cycletext "GERMAN.","watches you as you walk by."
cycletext "GERMAN.","#me sniffles a bit, perhaps looking for a little attention."
User avatar
Estralis Seborian
Posts: 12308
Joined: Wed Nov 10, 2004 9:14 pm
Location: Sir Postalot
Contact:

Post by Estralis Seborian »

A very good approach!

I have some remarks; upon "help", you should name possible quest triggers. Like... "quest". Now, if I say "quest", I get two different answers. Imagine this:

P: "Quest!"
NPC: "Bring me 10 virgins weed and I will give you something special."
PC: *runs off and collects flowers*
PC: "I solved your quest!"
NPC: "Bring me 5 raw ham and I will cook it for you."
PC: "OK..."
PC: *runs off and fetches 5 raw ham instead*
PC: "Dear, now I really solved your quest!"
NPC: "Bring me 10 virgins weed and I will give you something special."
PC: "WTF!"

:arrow: Better use staged quests. Like this (just principle of code):

Code: Select all

"quest",queststatus(1337)=0->"Bring me ten apples, noob.",queststatus(1337)=1
"quest",queststatus(1337)=1,item(4711,all)>9->"Yeah, thx.",queststatus(1337)=2,deleteitem(4711,10)
"quest",queststatus(1337)=1,item(4711,all)<10->"U have too few apples, noob."

"quest",queststatus(1337)=2->"Bring me ten cherries, noob.",queststatus(1337)=3
"quest",queststatus(1337)=3,item(4711,all)>9->"Yeah, thx.",queststatus(1337)=4,deleteitem(4711,10)
"quest",queststatus(1337)=3,item(4711,all)<10->"U have too few cherries, noob."

"quest",queststatus(1337)>3->"Get lost, I have no more quests for you!"
:arrow: First, you bring apples, then cherries.

Also:

Code: Select all

"give 5 ham",item(307,all)=<5 ->"You do not have the right amount."
"give 5 ham",item(307,all)=5 ->"Here you are, cooked as promised."deleteitem(307,5)
"give 10 virgins weed","give ten virgins weed"->"#me kisses you on your cheek, you feel like.","ENGLISH2.","ENGLISH3." 
This is too specific. If the player has 6 ham, the NPC would remain silent. Also, "give 5 ham"... why not simply "give ham"? Or "ham"? Or "quest"? Or all together? Like this:

Code: Select all

"give ham","deliver ham","quest","mission","task","adventure","..."->"Thx 4 solving quest!"
As a last remark, you are aware that this NPC would cook infinite amounts of ham? Like, nobody in the area around the NPC would use an oven ever again.
User avatar
Nitram
Developer
Posts: 7638
Joined: Fri Oct 31, 2003 9:51 am
Contact:

Post by Nitram »

I helped her solving some of the problems already. Lets wait for the next version ;)
User avatar
Quinasa
Posts: 2959
Joined: Thu Jan 29, 2004 12:34 am
Location: The land of cuteness and stuff!
Contact:

Post by Quinasa »

Olivia, v.2

Code: Select all

------------------------------------------------------------------------------AC
-- NPC Name: Olivia Lovely                                               None --
-- NPC Job:  none                                                             --
--                                                                            --
-- NPC Race: human                      NPC Position:  0, 0, 0                --
-- NPC Sex:  female                     NPC Direction: southwest              --
--                                                                            --
-- Authors:  Jaime                                                            --
--           Walter                                                           --
--           Nitram                                                           --
--                                                                            --
-- Last parsing: September 23, 2010                      easyNPC Parser v1.01 --
--------------------------------------------------------------------------------

name = "Olivia Lovely"
race = human
sex = female
position = 0, 0, 0
direction = southwest
affiliation = "None"
job = "none"

language = common
language = human
defaultLanguage = common
autointroduce = on

author = "Jaime"
author = "Walter"
author = "Nitram"

lookatDE = "Das ist ein NPC dessen Entwickler zu faul war eine Beschreibung einzutragen."
lookatUS = "This is an NPC who looks lonely."
useMsgDE = "Fass mich nicht an!"
useMsgUS = "Do not touch me!"
wrongLangDE = "#me schaut dich verwirrt an."
wrongLangUS = "#me seems confused."
radius = 0

-- Help
"Help" -> inform("[Game Help] This NPC is <Olivia Lovely> the <lonely widow>. Keyphrases: TRIGGER1, TRIGGER2, TRIGGER3, TRIGGER4, TRIGGER5.")
"Hilfe" -> inform("[Spielhilfe] Dieser NPC ist <Name hier> der <Beruf/Funktion>. Schlüsselwörter: TRIGGER1, TRIGGER2, TRIGGER3, TRIGGER4, TRIGGER5.")

-- General speech
"Hail", "Hello", "Greetings", "Be greeted", "Greet" -> "Ah, hello stranger.", "Greetings, weary traveler.", "How nice of you to stop and say hello to a lonely widow."
"Good day", "Good morning", "Good evening" -> "Is it good? I did not notice.", "Nothing is good these days it seems.", "What is so good about it?"
"Grüße", "Gruß", "Seid gegrüßt", "Guten Tag", "Guten Abend", "Mahlzeit", "Tach", "Moin", "mit dir" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Hiho", "Hallo", "Hey", "Greebas", "Greebs", english -> "Ah, hello stranger.", "Greetings, weary traveler.", "How nice of you to stop and say hello a lonely widow."
"Hiho", "Hallo", "Hey", "Greebas", "Greebs", german -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Farewell", "Good bye", "Goodbye", "Bye", "Fare thee well" -> "Goodbye, and may all be well in your travels.", "Farewell, stranger.", "Bye now, be sure to come visit me again!"
"Tschüß", "Tschüss", "Wiedersehen", "Gehabt euch wohl" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Ciao", "Adieu", english -> "Ciao, darling! Don't be a stranger!"
"Au revoir", english -> "Au revoir, my dear."
"Farebba", "See you", english -> "See you soon!"
"Ciao", "Adieu", "Au revoir", "Farebba", "See you" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"How are you", "How feel", "How do you do" -> "#me cries and whispers 'I've lost my husband, and I'm so lonely.'", "I would be doing much better if I were not so lonely all the time."
"Wie geht", "Wie fühlst", "Wie ist es ergangen", "Wie Befinden" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"your name", "who are you", "who art thou" -> "My name is Olivia. Olivia Lovely.", "I'm Olivia Lovely, though some call me Olivia the Lonely.", "I'm just a sad, lonely widow."
"dein name", "wer bist du", "wer seid ihr", "wie heißt" -> "GERMAN1.", "GERMAN2.", "GERMAN3."

-- Catching typical NPC phrases
"what sell", "list wares" -> "I don't sell anything, but I could be willing to trade with you.", "what buy"
"was verkauf", "was kauf", "warenliste", "preis von" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"tell something" -> "What would you like to know?", "I know many things, can you be more specific?"
"erzähl was", "erzähl etwas" -> "GERMAN1.", "GERMAN2.", "GERMAN3."

-- Small talk: The talk here should focus on possible questions. Feel free to add more!
"profession" -> "I have no real profession since my husband died.", "I suppose I can cook a little."
"beruf" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"job", english -> "Without my husband to care for me, I must find a job.", "I am searching for a job."
"job" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Gobaith", "Gobiath", english -> "Gobaith has been kind to me.", "Are you new to Gobaith?", "My husband died to protect this land from the Prince of Salkamar."
"Gobaith", "Gobiath" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"I am", "my name" -> "It is truly a pleasure to meet you.", "Have you come to keep me company?"
"Ich bin", "mein Name" -> "GERMAN1.", "GERMAN2.", "GERMAN3."

-- More small talk; add at least five triggers
"your husband" -> "My husband was a wonderful, loyal man.", "I loved my husband very much.", "Everything I have reminds me of my him."
"trade" -> "If you bring me 10 virgins weed, I will give you a gift.", "If you bring me 5 raw ham, I can cook it for you."
"give 5 ham", item(307, all) < 5 -> "You do not have the right amount."
"give 5 ham", item(307, all) => 5 -> "Here you are, cooked as promised.", deleteItem(307, 5), item(306, 5, 333, 0)
"give 10 virgins weed", item(144, all) => 10 -> inform("You feel quicker now!"), "#me kisses you on your cheek.", attrib(agility) + 1, deleteItem(144, 10)
"give 10 virgins weed", item(144, all) < 10 -> "You do not have the right amount."
"DEINTRIGGER1" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"DEINTRIGGER2" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"DEINTRIGGER3" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"DEINTRIGGER4" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"DEINTRIGGER5" -> "GERMAN1.", "GERMAN2.", "GERMAN3."

-- Main land factions
"albar", english -> "My husband and I came here from Albar.", "It is the way of Albarian women to serve their husbands as long as they live.", "ENGLISH3."
"albar", german -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"gynk", "gync", english -> "I can't say I've ever been there.", "I hear they've got a large thieves guild. I wouldn't go there.", "ENGLISH3."
"gync", "gynk", german -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"salkama", english -> "Pah, Salkamarians. I hate them!", "It was Salkamarians that caused the death of my husband.", "Humans are humans, thats what I say. Unless they're Salkamarian. Then they're just plain evil."
"salkama", german -> "GERMAN1.", "GERMAN2.", "GERMAN3."

-- Gods - use the triggers of the god the NPC worships or fights
-- Pick 1-2 gods he likes, 1 he dislikes
-- Use ONE other response for the other gods i.e. "I don't worship that good much"
"god" -> "ENGLISH1.", "ENGLISH2.", "ENGLISH3."
"Gott", "Götter" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Adron", english -> "He does not interest me, for I follow the ladies Sirani and Oldra."
"Adron" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Bragon", "Brágon", english -> "He does not interest me, for I follow the ladies Oldra and Sirani."
"Bragon", "Brágon" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Cherga", english -> "Cherga please bless and protect my husbands soul."
"Cherga" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Elara", english -> "She does not interest me, for I follow the ladies Oldra and Sirani."
"Elara" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Eldan", english -> "He does not interest me, for I follow the ladies Sirani and Oldra."
"Eldan" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Findari", english -> "He does not interest me, for I follow the ladies Sirani and Oldra."
"Findari" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Irmorom", english -> "He does not interest me, for I follow the ladies Oldra and Sirani."
"Irmorom" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Malachin", "Malachín", english -> "He does not interest me, for I follow the ladies Oldra and Sirani."
"Malachin", "Malachín" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Moshran", english -> "#me cringes and screams 'The Blood God! Speak not his name to me!'", "I detest all followers of the Blood God!", "Get thee from my sight, if The Bone Lord is your master!"
"Moshran" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Nargun", "Nargún", "Nargùn", english -> "He does not interest me, fo I follow the ladies Oldra and Sirani."
"Nargun", "Nargún", "Nargùn" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Oldra", english -> "Praise Oldra!", "Blessed be the goddess of life and fertility."
"Oldra" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Ronagan", english -> "He does not interest me, for I follow the ladies Oldra and Sirani."
"Ronagan" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Sirani", english -> "Sweet Sirani, the goddess of love and desire, brought my husband to me.", "Praise Sirani!"
"Sirani" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Tanora", "Zelphia", english -> "She does not interest me, for I follow the ladies Sirani and Oldra."
"Tanora", "Zelphia" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Ushara", english -> "Mother Earth, giver of all life.", "Blessed be the elder goddess Ushara."
"Ushara" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"Zhambra", english -> "He does not interest me, for I follow the ladies Sirani and Oldra."
"Zhambra" -> "GERMAN1.", "GERMAN2.", "GERMAN3."

-- Catching quest triggers
"quest", english -> "Bring me 10 virgins weed and I will give you something special.", "Bring me 5 raw ham and I will cook it for you."
"quest", german -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"task", "adventure" -> "Bring me 10 virgins weed and I will give you something special.", "Bring me 5 raw ham and I will cook it for you."
"Auftrag", "Aufgabe", "Abenteuer" -> "GERMAN1.", "GERMAN2.", "GERMAN3."

-- Last catch: Think about keyphrases the player might say and that are not caught until here
"Yes" -> "Yes what?."
"Ja" -> "GERMAN1.", "GERMAN2.", "GERMAN3."
"No" -> "No?", "Are you sure?"
"Nein" -> "GERMAN1.", "GERMAN2.", "GERMAN3."

-- Absolutely last catch: Everything a player says and is not caught earlier
-- This response should give the player a hint about what to ask the NPC
-- Optional Trigger /  Response is only given 1/5 of the time
".*", english, chance(20) -> "ENGLISH1.", "ENGLISH2.", "ENGLISH3."
".*", german, chance(20) -> "GERMAN1.", "GERMAN2.", "GERMAN3."

-- Cycletext: Please add at least(!) ten cycletext messages. The more, the better. You can use emotes (#me is green), too.

------------------------------------------------------------------------------AC
-- Cycle Texts - Messages spoken automatically in random intervals.
-- Every NPC should contain at least 10 of those messages.
-- Emotes are possible also starting with "#me ....".

cycletext "GERMAN.", "#me stands alone looking very sad."
cycletext "GERMAN.", "I'm so lonely, if only I had someone to talk to."
cycletext "GERMAN.", "#me wipes a tear from her cheek."
cycletext "GERMAN.", "#me sighs pathetically."
cycletext "GERMAN.", "#me looks around to see if there might be anyone coming to talk to her."
cycletext "GERMAN.", "Woe is me!"
cycletext "GERMAN.", "#me knots some dried, old flower stems in her fingers. There is a small pile of them at her feet."
cycletext "GERMAN.", "#me hums a sad sounding melody very quietly."
cycletext "GERMAN.", "watches you as you walk by."
cycletext "GERMAN.", "#me sniffles a bit, perhaps looking for a little attention."
User avatar
wolfsword
Posts: 671
Joined: Sun Jul 01, 2007 12:21 am
Location: PO Samuel and Fernando [Hobbits]

Post by wolfsword »

Can these NPC's be used as merchants as well? Are we allowed to make such NPCs?
User avatar
Jude Atelhier
Posts: 28
Joined: Wed Dec 26, 2007 2:22 am

Post by Jude Atelhier »

Yes NPC merchants can be made. Attaching some quests to your merchant will make the DEV's ooh so very happy.
User avatar
wolfsword
Posts: 671
Joined: Sun Jul 01, 2007 12:21 am
Location: PO Samuel and Fernando [Hobbits]

Post by wolfsword »

Jude Atelhier wrote:Yes NPC merchants can be made. Attaching some quests to your merchant will make the DEV's ooh so very happy.
Quest NPC -> Merchant NPC? Or is there something else I have to put in the code to do so?
User avatar
Athian
Posts: 2429
Joined: Sun Aug 03, 2003 7:15 pm

Post by Athian »

Make the NPC as if you were going to make a merchant NPC.

Then include the quest triggers and related scripts after that. You shouldn't need to do anything special otherwise.
User avatar
pharse
Posts: 1787
Joined: Wed Oct 04, 2006 9:33 pm

Post by pharse »

I just want to leave a note here that the economy is completely reworked in the VBU and there are strict limitations on where NPCs can sell what items.

But I am not a specialist in those economy things, so I don't know in what way your pre-VBU merchants can and will be converted to the post-VBU state - or what you exactly have to consider when doing such merchants.
User avatar
Estralis Seborian
Posts: 12308
Joined: Wed Nov 10, 2004 9:14 pm
Location: Sir Postalot
Contact:

Post by Estralis Seborian »

Estralis Seborian wrote:Here is the latest version of the NPC template. You can (still) find the easyNPC editor here:

http://illarion.org/~nitram/downloads/i ... synpc.jnlp

Code: Select all

(updated)
User avatar
maryday
Posts: 675
Joined: Sun Apr 30, 2006 3:33 pm
Location: Who the f**k is Wallace?

Re: Simple NPC language simplified even further! (English)

Post by maryday »

*The shaky candidate strikes again.*
Installing the NPC scripter the 3rd or 4th time, somehow it descided to start running.
So here are my questions concerning different ideas:

a)What is the development stage of different animals?
((Post links if possible, as all i`ve found so far was a certain experimental dog;))
((You may also give pointers on what animal you might want worked out?))

b)Anyone knows if there is currently work in progress about PC`s interacting with social groups (of NPCs)
where individuals are known to each other and have mixed, related interests and corellating as also opposing goals?

b2)Anyone already writing "orphans"?
((Creating about 3to5 "faction templates" and 6to10 "interest templates" before
mixing them into individual NPCs, also beeing able to make one single "unit" be member of different factions,
sharing different interests.))

c)If someone is already putting work into a mentioned task, i could offer my, yet limitet, writing abilities
on already set goals? ((Without getting too much insight into char functions.))

Finally a question concerning trade behaviour of (to be written) NPCs, directed to the dev-section:

d)It came (above) to my attention the trading system (distribution/location of NPCs selling/buying goods)
is going to be changed by update.
Would it be usefull to create peasant NPCs each only trading small ammounts of different, specific goods
in and around Trollsbane (as supposed economic center)
?
What I first wrote:Here an insight in what i intend:
Factions;((left away due to reasons of creativity))
----
Char tags ((may be mixed hierarchically));
primary (person);
->helpful
->friendly
->indifferent
->egocentric
->cruel
--
secondary (behaviour);
->altruistic
->diplomatic
->cool
->egoistic
->chaotic
--
tertary (economic);
->free
->giving
->trading
->taking
->greedy
---
Interest Classes;((each class containing following groups seperately: fixated<->interested<->indifferent<->disliking))
->Weapon
->Armor
->Clothes
->Money
->Jewelery
->Food
->Communication
->(Faction-) Relations
->Animal(-s)
->Nature
->God(-s)
->Settlement(-s)
->Race(-s)

How about that?
Some things i stumbled upon;
NPCs in general:
://illarion.org/community/forums/viewtopic.php?f=43&t=27949&hilit=NPC+animal

Mainly concerning monsters (not rly fitting for topic);
://illarion.org/community/forums/viewtopic.php?f=43&t=28397&p=536552&hilit=NPC+animal#p536552

Any Ideas, pointers, answers?
User avatar
Rincewind
Posts: 1960
Joined: Tue Mar 11, 2008 10:40 am
Location: schroedingersbox.org
Contact:

Re: Simple NPC language simplified even further! (English)

Post by Rincewind »

Dear maryday,
you seem to be a very motivated scripter to me. But well, all your thoughts and ideas are wasted time in my fiew. (Please someone correct me!) I have no idea, how to install all this fency complicated ideas into the VBU, when we have a big lag of NPC-scripters anyway.

There are ideas, we are allredy working on, you do not know about. They are quite similar to yours. But diffrent. So yours seem not installable to me. Uhm - whatever... The main thing, the VBU-Team needs, byside from Helpers is coordination. I like to say, that I'm very pleased with your ideas, but you won't help anybody, when you shout them into the dusty fog of the VBU. Without coordination they just make no sense.

There are many concrete tasks need to be done, and if you like to help the VBU, ask for one of them.

Sorry for my rude words.
Rincewind
User avatar
Estralis Seborian
Posts: 12308
Joined: Wed Nov 10, 2004 9:14 pm
Location: Sir Postalot
Contact:

Re: Simple NPC language simplified even further! (English)

Post by Estralis Seborian »

On hair and beard IDs:

http://img248.imageshack.us/g/dwarffemalenorth.jpg/

Read as followed: x-direction hair is changed 0-5, y direction beard is changed 0-5.
martin
Posts: 7382
Joined: Sun Feb 25, 2001 7:12 am
Location: vienna

Re: Simple NPC language simplified even further! (English)

Post by martin »

Beard:
Human: 1 (full beard), 3 (narrow goatee), 4 (broad goatee), 5 (Lincoln-type), 6 (long full beard)
Dwarf: 1 (trimmed full beard), 2 (long full beard), 4 (untrimmed long full beard)

Hair:
Dwarf f: 1 (short pig tail), 7 (long), 9 (pony tail)
Dwarf m: 1 (normal length), 2 (medium length), 3 (longer)
Elf f: 1 (medium length), 7 (long), 8 (long braid)
Elf m: 1 (short), 2 (medium)
Halfling m: 1 (medium), 2 (medium)
Halfling f: 1 (medium), 2 (long, untrimmed), 9 (pony tail)
Human f + Orc f: 1 (medium), 7 (long), 8 (2 long braids)
Human m: 1 (normal/short), 2 (normal, longer), 3 (braid)
Orc m: 1 (short), 2 (short with tail on top), 3 (strange), 4 (strange), 5 (tail on top only),
Lizards: 1, 2, 3, 4, 5, 6
User avatar
Sammy Goldlieb
Posts: 578
Joined: Thu Aug 27, 2009 10:29 am
Location: Cadomyr

Re: Simple NPC language simplified even further! (English)

Post by Sammy Goldlieb »

What means hair "6" by the lizardian type? There is no describtion *is confused*
Post Reply