private void world_test() {
		// ex. ansi, true
		// ex. prompt, "< %mode %h/%H %m/%M %state >"
		// ex. prompt_enabled, true

		/**
		 * World/Game/Setting Test Cases
		 * 
		 * Fallout Equestria (foe.txt) [Fallout]
		 * Forgotten Realms  (db.txt)  [Dungeons and Dragons 3E?]
		 * 
		 * NOTE: It is strongly advised to use a database name other than the
		 * ones noted above to avoid triggering the following special setup
		 * intended just for those, which also expects classes not provided on
		 * GitHub with the rest of the code.
		 */

		/* FOE Items Testing -- NOT DB Safe */
		if (DB_FILE.endsWith("foe.txt")) { // Fallout Equestria testing database (this code uses stuff from a package not included on github)
			module.init();
			
			// TODO need to prototype all these things or something and then just make an instance in the test database

			// rules = mud.foe.FOESpecial.getInstance();

			System.out.println("Abilities: " + Arrays.asList(rules.getAbilities()));

			// pull in prototypes
			prototypes.putAll( module.getItemPrototypes() );
			prototypes1.putAll( module.getThingPrototypes() );
			
			// TODO greetings really should be persisted with npcs
			
			/* Set NPC Greetings (bit of a hack, really) */
			getNPC("Life Bloom").setGreeting("Welcome to Tenpony tower.");
			getNPC("Ditzy Doo").setGreeting("Ditzy Doo smiles at you, which is oddly nice and also looks gross.");

			Room atrium = getRoom("Atrium");
			Room atrium2 = getRoom("Atrium2");
			Room it = getRoom("IT Center");

			atrium2.setProperty(
					"/visuals/grass",
					"On a closer inspection, the \"grass\" is made of an unknown substance,probably inorganic. Looks pretty good, still you probably wouldn't want to eat it.");

			// Safe
			Box box = new Box("Safe", "A heavy metal safe");

			box.lock();

			initCreatedThing(box);
			box.setLocation(atrium2.getDBRef());
			atrium2.addThing(box);
			
			// PipBuck (foe version of PipBoy from Bethesda's Fallout video games)
			// Item pb = createItem("mud.foe.pipbuck", false);

			// initCreatedItem(pb);

			// pb.setLocation(box.getDBRef());
			// pb.setLocation( atrium2.getDBRef() );
			// box.insert(pb);
			// atrium2.addItem( pb );

			// StealthBuck - PipBuck Stealth/Invis Module
			mud.foe.items.StealthBuck sb = new mud.foe.items.StealthBuck();

			initCreatedItem(sb);

			// sb.setLocation(box.getDBRef());
			sb.setLocation(atrium2.getDBRef());
			// box.insert(sb);
			atrium2.addItem(sb);

			// Disruptor - PipBuck Disruptor Module
			mud.foe.items.Disruptor dr = new mud.foe.items.Disruptor();

			initCreatedItem(dr);
			// dr.setLocation(box.getDBRef());
			dr.setLocation(atrium2.getDBRef());
			// box.insert(dr);
			atrium2.addItem(dr);

			// Sparkle Cola Vending Machine
			Thing vending_machine = new Thing(
					"Vending Machine",
					"What stand before you is a grime-coated relic of it's former glory. The once glorious purple and gold Sparkle Cola ad has "
							+ "long since faded, though a few splotches of color remain to remind you of it's former state. In several spots the paint has begun peeling off the metal "
							+ "and rust peeks out from beneath it.");

			initCreatedThing(vending_machine);

			vending_machine.setProperty("thingtype", "machine");
			vending_machine.setProperty("machinetype", "vending_machine");
			vending_machine.setProperty("inventory/sparkle_cola", 10);
			vending_machine.setProperty("inventory/sparkle_cola_rad", 10);
			vending_machine.setProperty("selection/0", "sparkle_cola");
			vending_machine.setProperty("selection/1", "sparkle_cola_rad");
			vending_machine.setProperty("money", 0);

			// {if:{eq:{prop:money,291},
			// 1},{give:{&player},{create_item:mud.foe.sparkle_cola}},Insufficient
			// Money!}
			// {tell:{&player},{&this} dispenses a bottle of Sparkle-Cola}

			vending_machine.setProperty("money", 20);

			// IF has money && sparkle_cola are valid drink/exist &&
			// sparkle_colas > 0 THEN create new sparkle_cola and give to player
			// and decrease money by 3 bits and decrease
			// count of remaining sparkle_cola by 1

			// TODO resolve issue with scripting system that makes it not work
			// when you want to execute
			// three functions in succession
			/*vending_machine.setScriptOnTrigger( TriggerType.onUse,
					"{if:{ge:{prop:money,{&this}},1},{if:{ge:{prop:inventory/sparkle_cola,{&this}},1},{do:{tell:{colors:green,Enough Money!},{&player}},{store:money,{&this},{sub:{prop:money,{&this}},1}},{store:inventory/sparkle_cola,{&this},{sub:{prop:inventory/sparkle_cola,{&this}},1}},{tell:PCHING! A bottle of sparkle cola!,{&player}},{give:{&player},{create_item:mud.foe.sparkle_cola}}},{tell:Sold Out!,{&player}}},{tell:{colors:red,Insufficient Funds!},{&player}}}");
			*/
			vending_machine.setScriptOnTrigger(TriggerType.onUse, ""
					+ "{do:{set:money,{prop:money,{&this}}},{set:stock,{prop:inventory/sparkle_cola,{&this}}},{if:{ge:{&money},1},{if:{ge:{&stock},1},{do:{tell:{colors:green,Enough Money!},{&player}},{set:money,{sub:{&money},1}},{store:money,{&this},{&money}},{set:stock,{sub:{&stock},1}},{store:inventory/sparkle_cola,{&this},{&stock}},{tell:PCHING! A bottle of sparkle cola!,{&player}},{give:{&player},{create_item:mud.foe.sparkle_cola}}},{tell:Sold Out!,{&player}}},{tell:{colors:red,Insufficient Funds!},{&player}}}}");

			System.out.println("# of Sparkle Cola(s) left: " + vending_machine.getProperty("inventory/sparkle_cola", Integer.class));
			System.out.println("# of Sparkle Cola Rad(s) left: " + vending_machine.getProperty("inventory/sparkle_cola_rad", Integer.class));

			vending_machine.setLocation(atrium2.getDBRef());
			atrium2.addThing(vending_machine);

			// createItem("Notebook", ItemTypes.NONE,
			// "A blank paper notebook, a remnant of pre-war Equestria.");

			Book notebook = new Book();
			notebook.setName("Notebook");
			notebook.setDesc("A blank paper notebook, a remnant of pre-war Equestria.");

			initCreatedItem(notebook);
			
			notebook.setLocation(atrium2.getDBRef());
			atrium2.addItem(notebook);
			
			Book wsg = new Book("Wasteland Survival Guide", "Ditzy Doo", 250);
			wsg.setName("The Wasteland Survival Guide");
			wsg.setDesc("A modestly thick, black book with a white equine skull on the cover.");
			
			wsg.setAuctionable(false);

			wsg.addPage(
					Utils.mkList(
							"Chapter 1: Basics of Pony Biology",
							"",
							"The things that everypony should know:",
							"- water, I need it, you need it, the raiders need it. Absolutely Essential.",
							"- food, same as with water, easier to find though. see chapter 3"));
			wsg.addPage(
					Utils.mkList("Chapter 2: Dangers of the Wasteland",
							"You want dangers, we've got them all, right here for you."));
			wsg.addPage(
					Utils.mkList(
							"Raiders",
							"",
							"A bunch of nasty ponies if there ever was such a thing. They want your stuff and they'll happily",
							"end your life to get it. And that's just if you're lucky. Be an unlucky pony and you'll end up enslaved.",
							"Thing is, that wouldn't be so terrible, maybe, except that they'll put an explosive collar on you.",
							"Move two steps out of line and *BOOM* no more head. Yeah, loss of your head is fatal."));
			wsg.addPage(
					Utils.mkList(
							"Yao Guai",
							"",
							"Ah, for the golden days of Old Equestria. Once just ordinary Ursas,",
							"until your favorite friend, magical radiation, did a stellar job of",
							"creating an A-1 menace."));

			initCreatedItem(wsg);
			wsg.setLocation(atrium2.getDBRef());
			atrium2.addItem(wsg);

			Thing pipbuck_machine = new Thing(
					"Pipbuck Machine",
					"A well-preserved and clean, but slight rusty machine. There is an"
							+ "inactive Stable-tec terminal embedded in it and below that a circular receptacle. Above the circular hole"
							+ "there is a hoof shape engraved into the metal plate that serves as the front of the machine. Flecks of black"
							+ "stuff seem to suggest that perhaps it was once filled in with paint for more contrast. Above the symbol the"
							+ "words \"Insert Hoof Here\" are engraved.");

			pipbuck_machine.setProperty("thingtype", "machine");
			pipbuck_machine.setProperty("machinetype", "pipbuck_machine");
			pipbuck_machine.setProperty("contents/pipbuck", 1000);

			// pipbuck_machine.getDBRef()
			pipbuck_machine.setScriptOnTrigger(TriggerType.onUse,
					"{if:{gt:{prop:contents/pipbuck,{&this}},0},{do:{give:{&player},{create_item:mud.foe.pipbuck}},{tell:You cautiously stick your hoof into the hole.,{&player}}},{tell:Insufficient Pipbucks Available!,{&player}}}");

			initCreatedThing(pipbuck_machine);
			
			pipbuck_machine.setLocation(it.getDBRef());
			it.addThing(pipbuck_machine);

			System.out.println("# of PipBuck(s) left: " + pipbuck_machine.getProperty("contents/pipbuck", Integer.class));

			/*
			 * mud.foe.Terminal terminal = new mud.foe.Terminal("Terminal");
			 * terminal.setName("Terminal"); terminal.setDesc(
			 * "A Stable-Tec terminal, old pre-war technology whose durability is plain to see. On the screen, passively glowing green text indicates that it awaits input."
			 * ); terminal.setPowerState(mud.foe.Terminal.pwr_states.POWER_ON);
			 */

			mud.foe.Terminal terminal = new mud.foe.Terminal(
					"Terminal",
					"A Stable-Tec terminal, old pre-war technology whose durability is plain to see."
					);
			
			terminal.setProperty("/visuals/screen", "passively glowing green text indicates that it awaits input");

			terminal.init();
			System.out.println( terminal.powerOn() );

			initCreatedThing(terminal);
			
			terminal.setLocation(atrium2.getDBRef());
			atrium2.addThing(terminal);

			// Spark Generator
			Thing spark_generator = new Thing("Spark Generator", "This advanced piece of magitech produces near limitless electric power via magic");

			initCreatedThing(spark_generator);
			spark_generator.setLocation(it.getDBRef());
			it.addThing(spark_generator);

			// TODO convert the above ^ to a prototype creation call

			Item bc = createItem("mud.foe.bottlecap_sc", false);

			initCreatedItem(bc);
			bc.setLocation(atrium2.getDBRef());
			atrium2.addItem(bc);

			Item memory_orb = createItem("mud.foe.memory_orb", false);

			initCreatedItem(memory_orb);
			memory_orb.setLocation(box.getDBRef());
			box.insert(memory_orb);

			Item pgun1 = createItem("mud.foe.weapons.pistol", false);

			initCreatedItem(pgun1);
			pgun1.setLocation(atrium2.getDBRef());
			atrium2.addItem(pgun1);

			// particular item
			// Weapon gun = (Weapon) new Item(-1);
			// Item gun = new Item(-1);
			Weapon gun = new Weapon(
					"Gun",
					"A sturdy revolver with a mouth grip, clearly of earth pony make or at least designed for one."
					);

			// gun.setWeaponType(WeaponType.REVOLVER);
			
			gun.setProperty("name", "Little Macintosh");
			gun.setProperty("visual/engraving/number", "IF-18");
			gun.setProperty("visual/engraving/script", "Little Macintosh");
			gun.setProperty("weapon/maker", "Ironshod Firearms");
			gun.setProperty("weapon/model", "IF-18");
			gun.setProperty("weapon/size", "small");
			gun.setProperty("weapon/type", "revolver");
			gun.setProperty("damage", 5);
			gun.setProperty("ammo_size", 0.44);
			gun.setProperty("ammo_type", "magnum");
			gun.setProperty("magazine", false);
			gun.setProperty("chambers", 6);

			initCreatedItem(gun);
			gun.setLocation(box.getDBRef());
			box.insert(gun);

			Weapon laser_rifle = (Weapon) createItem("mud.foe.laser_rifle", false);

			initCreatedItem(laser_rifle);
			laser_rifle.setLocation(atrium2.getDBRef());
			atrium2.addItem(laser_rifle);

			Weapon laser_rifle1 = (Weapon) createItem("mud.foe.laser_rifle", false);

			initCreatedItem(laser_rifle1);
			laser_rifle1.setLocation(atrium2.getDBRef());
			atrium2.addItem(laser_rifle1);
			
			Armor battle_saddle = new Armor("Battle Saddle", "");

			battle_saddle.setProperty("gun1", -1);
			battle_saddle.setProperty("gun2", -1);

			initCreatedItem(battle_saddle);
			battle_saddle.setLocation(atrium2.getDBRef());
			atrium2.addItem(battle_saddle);

			// laser_rifle.setLocation(battle_saddle.getDBRef());
			// laser_rifle1.setLocation(battle_saddle.getDBRef());
			// battle_saddle.setProperty("gun1", laser_rifle.getDBRef());
			// battle_saddle.setProperty("gun2", laser_rifle1.getDBRef());

			Weapon wing_blades = (Weapon) createItem("mud.foe.wing_blades", false);

			initCreatedItem(wing_blades);

			wing_blades.setLocation(atrium2.getDBRef());
			atrium2.addItem(wing_blades);
			
			// Bank Test -- DB Safe
			Bank bank = new Bank("Bank of Equestria");
			BankAccount acct = new BankAccount(0, Coins.platinum(1000));
			bank.addAcount(0, acct);
			banks.put(bank.getName(), bank);
		}

		/* Item/Creature/Quest Testing -- NOT DB Safe (expects a room to exist, etc) */

		// if( mainDB.endsWith("db.txt") ) { -- this is the right one but it
		// triggers a mess with a brand new db file (called db.txt) that doesn't contain the expected data
		if (DB_FILE.endsWith("db.txt") || DB_FILE.endsWith("new.txt")) {
			/*
			 * // Arrow Testing -- Not DB Safe Arrow a = new Arrow();
			 * initCreatedItem(a); a.setLocation( 25 ); getRoom( 25
			 * ).addItem(a);
			 * 
			 * for(int i = 0; i < 5; i++) { Arrow b = new Arrow();
			 * initCreatedItem(b); b.setLocation( 25 ); getRoom( 25
			 * ).addItem(b); }
			 * 
			 * // Item Testing -- Not DB Safe Jewelry ring = new
			 * Jewelry(ItemTypes.RING, "Ring of Invisibility",
			 * "A medium-sized gold ring with a smooth, unmarked surface.", new
			 * Effect("invisibility")); ring.setItemType(ItemTypes.RING);
			 * ring.setEquipType(ItemTypes.RING); // the type of equipment it is
			 * debug("Item Type: " + ring.getItemType() + " Equip Type: " +
			 * ring.getEquipType() ); initCreatedItem(ring); ring.setLocation( 0
			 * ); getRoom(0).getItems().add(ring);
			 * 
			 * Jewelry circlet = new Jewelry(ItemTypes.NONE, "Copper Circlet",
			 * "", new Effect("none")); circlet.setItemType(ItemTypes.RING);
			 */

			// Item properties testing -- Not DB Safe Item item =
			Item ore = createItem(
					"Copper Ore",
					"A chunk of copper ore. Veins of copper swirl through the baser rock surrounding them.",
					WELCOME_ROOM
					);

			ore.setProperty("material", "copper");
			ore.setProperty("purity", "0.90");
			
			initCreatedItem(ore);
			
			getRoom( ore.getLocation() ).addItem(ore);
			
			Weapon w = new Weapon(WeaponTypes.BOW);

			w.setSlotType(SlotTypes.HANDS);

			initCreatedItem(w);
			getRoom(start_room).addItem(w);

			Zone rdi = getZone("Red Dragon Inn");
			// Zone rdi = new Zone("Red Dragon Inn", null);
			// zones.put(rdi, 0);

			Room inn = getRoom(4); // Red Dragon Inn
			// rdi.addRoom( inn );

			Room basement = createRoom("Basement", -1);
			objectDB.addAsNew(basement);
			objectDB.addRoom(basement);

			basement.setZone(rdi);
			rdi.addRoom(basement);

			int basement_dbref = basement.getDBRef();

			// add code for exits to and from basement -- 1/6/2014
			Exit down = new Exit("down", inn.getDBRef(), basement.getDBRef());
			Exit up = new Exit("up", basement.getDBRef(), inn.getDBRef());

			objectDB.addAsNew(down);
			objectDB.addExit(down);
			objectDB.addAsNew(up);
			objectDB.addExit(up);

			inn.addExit(down);
			basement.addExit(up);

			Creature c = new Creature("Mangy Rat", "A large, scruffy gray rat with red beady eyes and pointy teeth.");
			
			c.setMaxHP(5);
			c.setLocation(basement_dbref);
			c.setRace(Races.NONE);

			Creature c1 = c.getCopy();
			Creature c2 = c.getCopy();
			Creature c3 = c.getCopy();
			Creature c4 = c.getCopy();

			for (final Creature cre : Utils.mkList(c, c1, c2, c3, c4)) {
				objectDB.addAsNew(cre);
				objectDB.addCreature(cre);
			}

			// NAME: Help the Innkeeper
			// DESC: The inn's basement is full of rats. Help the innkeeper out
			// by killing a few.
			// LOCATION: Basement
			// ZONE: Red Dragon Inn
			// TASK: KILL 5 RAT

			Room room = getRoom("Basement");

			Data objectiveData = new Data();

			objectiveData.addObject("toKill", 5);
			objectiveData.addObject("target", c);

			Quest quest = new Quest(
					"Help the Innkeeper",
					"The inn's basement is full of rats. Help the innkeeper out by killing a few.",
					rdi,
					new KillTask("Kill 5 rats", room, objectiveData)
					);
			
			Item bread = new Item("Bread", "A tasty looking loaf of yellow bread.");
			
			quest.setReward( new Reward(Coins.gold(5), bread) );

			if (quest.getTasks().get(0).getObjective() == null) {
				debug("ERROR! Objective Data is NULL?");
			}
			else {
				for (Entry<String, Object> entry : quest.getTasks().get(0).getObjective().getObjects().entrySet()) {
					debug(entry.getKey());
					//debug(entry.getValue());
				}
			}

			NPC npc = getNPC("Iridan");

			if (npc != null) {
				System.out.println(npc.getName()); //
				npc.setQuestGiver(true);
				npc.addQuest(quest); // assign the quest to this NPC
			}
			else {
				System.out.println("NPC is null!");
			}

			quests.add(quest); // add to main quest table
			questsByZone.put(quest.getLocation(), Utils.mkList(quest));

			Merchant m1 = (Merchant) getNPC("Aran");
			Merchant m2 = (Merchant) getNPC("Terys");

			if (m1 != null) m1.setMerchantType("armor");
			if (m2 != null) m2.setMerchantType("weapon");
		}