|  |  | @@ -1,8 +1,59 @@ | 
		
	
		
			
			|  |  |  | import { Place, Choice, Direction } from '../world' | 
		
	
		
			
			|  |  |  | import { ProperNoun, ImproperNoun } from '../language' | 
		
	
		
			
			|  |  |  | import { ProperNoun, ImproperNoun, MalePronouns, FemalePronouns } from '../language' | 
		
	
		
			
			|  |  |  | import { Encounter } from '../combat' | 
		
	
		
			
			|  |  |  | import * as Creatures from '../creatures' | 
		
	
		
			
			|  |  |  | import { LogLine } from '../interface' | 
		
	
		
			
			|  |  |  | import * as Items from '../items' | 
		
	
		
			
			|  |  |  | import { LogLine, nilLog } from '../interface' | 
		
	
		
			
			|  |  |  | import { Creature } from '../creature' | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function makeParty (): Creature[] { | 
		
	
		
			
			|  |  |  | const fighter = new Creatures.Human(new ProperNoun("Redgar"), MalePronouns, { | 
		
	
		
			
			|  |  |  | stats: { | 
		
	
		
			
			|  |  |  | Toughness: 20, | 
		
	
		
			
			|  |  |  | Power: 20, | 
		
	
		
			
			|  |  |  | Speed: 15, | 
		
	
		
			
			|  |  |  | Willpower: 15, | 
		
	
		
			
			|  |  |  | Charm: 10 | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | fighter.title = "Lv. 6 Fighter" | 
		
	
		
			
			|  |  |  | fighter.items.push(Items.Sword) | 
		
	
		
			
			|  |  |  | const rogue = new Creatures.Human(new ProperNoun('Lidda'), FemalePronouns, { | 
		
	
		
			
			|  |  |  | stats: { | 
		
	
		
			
			|  |  |  | Toughness: 10, | 
		
	
		
			
			|  |  |  | Power: 15, | 
		
	
		
			
			|  |  |  | Speed: 20, | 
		
	
		
			
			|  |  |  | Willpower: 15, | 
		
	
		
			
			|  |  |  | Charm: 20 | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | rogue.title = "Lv. 5 Rogue" | 
		
	
		
			
			|  |  |  | rogue.items.push(Items.Dagger) | 
		
	
		
			
			|  |  |  | const wizard = new Creatures.Human(new ProperNoun('Mialee'), FemalePronouns, { | 
		
	
		
			
			|  |  |  | stats: { | 
		
	
		
			
			|  |  |  | Toughness: 10, | 
		
	
		
			
			|  |  |  | Power: 10, | 
		
	
		
			
			|  |  |  | Speed: 15, | 
		
	
		
			
			|  |  |  | Willpower: 20, | 
		
	
		
			
			|  |  |  | Charm: 25 | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | wizard.title = "Lv. 6 Wizard" | 
		
	
		
			
			|  |  |  | wizard.items.push(Items.Wand) | 
		
	
		
			
			|  |  |  | const cleric = new Creatures.Human(new ProperNoun('Jozan'), MalePronouns, { | 
		
	
		
			
			|  |  |  | stats: { | 
		
	
		
			
			|  |  |  | Toughness: 15, | 
		
	
		
			
			|  |  |  | Power: 15, | 
		
	
		
			
			|  |  |  | Speed: 10, | 
		
	
		
			
			|  |  |  | Willpower: 20, | 
		
	
		
			
			|  |  |  | Charm: 15 | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | cleric.title = "Lv. 5 Cleric" | 
		
	
		
			
			|  |  |  | cleric.items.push(Items.Mace) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return [fighter, cleric, rogue, wizard] | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | export const Town = (): Place => { | 
		
	
		
			
			|  |  |  | const home = new Place( | 
		
	
	
		
			
				|  |  | @@ -25,6 +76,11 @@ export const Town = (): Place => { | 
		
	
		
			
			|  |  |  | "Scary woods" | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | const bosses = new Place( | 
		
	
		
			
			|  |  |  | new ProperNoun("BOSS ZONE"), | 
		
	
		
			
			|  |  |  | "Extra scary" | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | woods.choices.push( | 
		
	
		
			
			|  |  |  | new Choice( | 
		
	
		
			
			|  |  |  | "Fight a wolf", | 
		
	
	
		
			
				|  |  | @@ -40,9 +96,38 @@ export const Town = (): Place => { | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | const bossEncounters = [ | 
		
	
		
			
			|  |  |  | new Encounter( | 
		
	
		
			
			|  |  |  | { name: "Withers & Kenzie" }, | 
		
	
		
			
			|  |  |  | makeParty().concat([new Creatures.Withers(), new Creatures.Kenzie()]) | 
		
	
		
			
			|  |  |  | ), | 
		
	
		
			
			|  |  |  | new Encounter( | 
		
	
		
			
			|  |  |  | { name: "Goldeneye" }, | 
		
	
		
			
			|  |  |  | makeParty().concat([new Creatures.Goldeneye()]) | 
		
	
		
			
			|  |  |  | ), | 
		
	
		
			
			|  |  |  | new Encounter( | 
		
	
		
			
			|  |  |  | { name: "Large Wah" }, | 
		
	
		
			
			|  |  |  | makeParty().concat([new Creatures.Shingo()]) | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | bossEncounters.forEach(encounter => { | 
		
	
		
			
			|  |  |  | bosses.choices.push( | 
		
	
		
			
			|  |  |  | new Choice( | 
		
	
		
			
			|  |  |  | encounter.desc.name, | 
		
	
		
			
			|  |  |  | "Boss fight!", | 
		
	
		
			
			|  |  |  | (world, executor) => { | 
		
	
		
			
			|  |  |  | world.encounter = encounter | 
		
	
		
			
			|  |  |  | return nilLog | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | home.biconnect(Direction.North, westAve) | 
		
	
		
			
			|  |  |  | westAve.biconnect(Direction.West, westRoad) | 
		
	
		
			
			|  |  |  | westRoad.biconnect(Direction.South, woods) | 
		
	
		
			
			|  |  |  | westRoad.biconnect(Direction.North, bosses) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return home | 
		
	
		
			
			|  |  |  | } |