! Interaction code for an incredibly simple NPC which can respond
! to "hello", ask how the PC is and understand the answer.


! Define your emotional states to start with - these
! represent the range of how your character can feel.

EmotionalStates {
	passive
	suspicious
	angry
}

! Talk routers pick keywords from a PC and route
! to a conversation thread.

TalkRouter {
	Words "sorry"
	Or "apologise"
	Or "apologize"
	Or "forgive me"
	SetThread sorrythread
}

	! Conversation threads change according to how the NPC is feeling. Threads
	! can change the NPC's emotional state, as well as speaking and making
	! actions.
	
	Thread sorrythread "sorry" {
	
		passive suspicious [
			Speech "You have nothing to be sorry about!"
			Action "looks puzzled."
		]
		
		angry [
			Speech "Ok, I'll forgive you, please try not to do it again."
			SetEmotion passive
		]
	}

TalkRouter {
	Words "fuck off"
	Or "piss off"
	Or "kiss my"
	SetThread nasty
}

	Thread nasty "Nasty" {
		
		passive suspicious [
			Speech "There's no need for that kind of language."
			SetEmotion angry
		]
		
		angry [ 1
			Speech "I don't speak to coarse oafs. Either wash your dirty mouth out or apologise."
		]
	}


TalkRouter {
	Words "hello"
	Or "hi"
	
	SetThread hello
}


	Thread hello "Hello Thread" {
	
		passive suspicious [ 2
			Speech "Hi, how are you doing?"
			Action "smiles at you."
			SetContext howareyou
		]
		
		angry [
			Speech "Go away."
			SetThread imeanit_goaway
		]
	}
	
		Thread imeanit_goaway {
		
			angry [ 2
				Speech "I mean it - apologise or get lost."
			]
		}
	
		! Contexts are always checked before routers, so if a thread sets
		! a context to be active, you can check for a response to NPC questions
		! as well as keep the thread up with what the PC is talking about.
		
		Context howareyou {
		
			[
				Words "not" "bad"
				Or "good"
				Or "well"
				Or "sound"
				Or "happy"
				Or "great"
				Or "excellent"
				
				SetThread goodtohear
			]
			
			[
				Words "bad"
				Or "awful"
				Or "terrible"
				Or "not" "good"
				Or "crap"
				
				SetThread sorryaboutthat
				
			]
		}	
		
			Thread goodtohear "That's good to hear" {
			
				passive suspicious [
					Speech "That's good to hear!"
				]
			}
			
			Thread sorryaboutthat {
			
				passive suspicious [
					Speech "I'm sorry to hear that."
				]
			}
			
			
			
			
			