<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.lugdunon.net/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.lugdunon.net/w/index.php?feed=atom&amp;namespace=0&amp;title=Special%3ANewPages</id>
		<title>LugdunonWiki - New pages [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.lugdunon.net/w/index.php?feed=atom&amp;namespace=0&amp;title=Special%3ANewPages"/>
		<link rel="alternate" type="text/html" href="http://wiki.lugdunon.net/w/index.php/Special:NewPages"/>
		<updated>2026-07-02T08:03:10Z</updated>
		<subtitle>From LugdunonWiki</subtitle>
		<generator>MediaWiki 1.21.2</generator>

	<entry>
		<id>http://wiki.lugdunon.net/w/index.php/Release_0.8.8</id>
		<title>Release 0.8.8</title>
		<link rel="alternate" type="text/html" href="http://wiki.lugdunon.net/w/index.php/Release_0.8.8"/>
				<updated>2019-07-07T15:14:30Z</updated>
		
		<summary type="html">&lt;p&gt;Lugdunon: Created page with &amp;quot;{{engine}}  '''''0.8.8'''''   ''Last Updated: 07/07/2019''     Mods altered in this update:     Server mods altered in this update:     /etc files altered in this update:     ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{engine}}&lt;br /&gt;
&lt;br /&gt;
'''''0.8.8'''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Last Updated: 07/07/2019''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mods altered in this update:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Server mods altered in this update:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc files altered in this update:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Release Notes:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Releases|0.8.8]]&lt;/div&gt;</summary>
		<author><name>Lugdunon</name></author>	</entry>

	<entry>
		<id>http://wiki.lugdunon.net/w/index.php/Release_0.8.7</id>
		<title>Release 0.8.7</title>
		<link rel="alternate" type="text/html" href="http://wiki.lugdunon.net/w/index.php/Release_0.8.7"/>
				<updated>2018-06-28T17:36:36Z</updated>
		
		<summary type="html">&lt;p&gt;Lugdunon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{engine}}&lt;br /&gt;
&lt;br /&gt;
'''''0.8.7'''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''28/06/2018''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mods altered in this update:&lt;br /&gt;
*net.lugdunon.world.clover.sprite&lt;br /&gt;
*net.lugdunon.world.defaults.audio&lt;br /&gt;
*net.lugdunon.world.clover.tui&lt;br /&gt;
*net.lugdunon.elevation.editor.simple&lt;br /&gt;
*net.lugdunon.world.defaults.character&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Server mods altered in this update:&lt;br /&gt;
*net.lugdunon.server.worldgen.defaults&lt;br /&gt;
*net.lugdunon.server.worldgen.procedural&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc files altered in this update:&lt;br /&gt;
*behaviors.json&lt;br /&gt;
*behaviorStates.json&lt;br /&gt;
*commands.json&lt;br /&gt;
*deities.json&lt;br /&gt;
*itemBaseCosts.json&lt;br /&gt;
*items.json&lt;br /&gt;
*metrics.json&lt;br /&gt;
*names.json&lt;br /&gt;
*npcs.json&lt;br /&gt;
*proceduralNpcs.json&lt;br /&gt;
*quests.json&lt;br /&gt;
*recipes.json&lt;br /&gt;
*storyArcs.json&lt;br /&gt;
*vendors.json&lt;br /&gt;
*instances/0/instance.json&lt;br /&gt;
*instanceTemplates/BARRACKS/placeableItemCache.json&lt;br /&gt;
*instanceTemplates/LYCEUM/placeableItemCache.json&lt;br /&gt;
*instanceTemplates/LYCEUM/terrain.dat&lt;br /&gt;
*instanceTemplates/MANOR/instance.json&lt;br /&gt;
*instanceTemplates/MANOR/placeableItemCache.json&lt;br /&gt;
*instanceTemplates/MANOR/terrain.dat&lt;br /&gt;
*instanceTemplates/STARTER_TILE/instance.json&lt;br /&gt;
*instanceTemplates/STARTER_TILE/npcCache.json&lt;br /&gt;
*instanceTemplates/STARTER_TILE/placeableItemCache.json&lt;br /&gt;
*instanceTemplates/STARTER_TILE/terrain.dat&lt;br /&gt;
*instanceTemplates/STARTER_TILE/waypointCache.json&lt;br /&gt;
*instanceTemplates/TAVERN/placeableItemCache.json&lt;br /&gt;
*instanceTemplates/TAVERN/terrain.dat&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/1/instance.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/1/npcCache.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/1/placeableItemCache.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/1/terrain.dat&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/1/waypointCache.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/2/instance.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/2/npcCache.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/2/placeableItemCache.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/2/terrain.dat&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/2/waypointCache.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/0.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/tiles/1.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/instance.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/npcCache.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/placeableItemCache.json&lt;br /&gt;
*instanceTemplates/TILED_DUNGEON/waypointCache.json&lt;br /&gt;
*quests/hubs/lyceum.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Known Issues:&lt;br /&gt;
*Entering the game while in an instance other than the overworld will throw off the map pin locations in the new map view.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Release Notes:&lt;br /&gt;
*Client 0.8.6.1 -&amp;gt; 0.8.7&lt;br /&gt;
*Server 0.8.6.1 -&amp;gt; 0.8.7.&lt;br /&gt;
*net.lugdunon.world.clover.sprite 0.0.4 -&amp;gt; 0.0.5.&lt;br /&gt;
*net.lugdunon.world.defaults.audio 0.0.4 -&amp;gt; 0.0.5.&lt;br /&gt;
*net.lugdunon.world.clover.tui 0.1.4 -&amp;gt; 0.1.5.&lt;br /&gt;
*net.lugdunon.server.worldgen.defaults 0.0.16 -&amp;gt; 0.0.17.&lt;br /&gt;
*net.lugdunon.elevation.editor.simple 0.0.4 -&amp;gt; 0.0.5.&lt;br /&gt;
*net.lugdunon.world.defaults.character 0.0.9 -&amp;gt; 0.0.10.&lt;br /&gt;
*net.lugdunon.server.worldgen.procedural 0.0.9 -&amp;gt; 0.0.10.&lt;br /&gt;
*Fixed palette regions for the bear sprite.&lt;br /&gt;
*Fixed a couple of minor issues with net.lugdunon.command.core.console.gm.ImageToTerrainCommand.&lt;br /&gt;
*Fixed a spelling error in the text returned from net.lugdunon.command.core.edit.EditTerrainCommand.getDescription().&lt;br /&gt;
*Fixed an issue with net.lugdunon.command.core.play.DamagePlaceableCommand not reporting the proper damage amount to the CORE.METRIC.PLACEABLE.ITEM.DAMAGED metric.&lt;br /&gt;
*Fixed an issue with net.lugdunon.command.core.vendor.SellItemToVendorCommand possibly triggering in a game state that doesn't support inventoryUpdated().&lt;br /&gt;
*Fixed a concurrency issue when loading the net.lugdunon.state.character.NpcCache.&lt;br /&gt;
*Fixed an issue with loading the lastPlayed property in net.lugdunon.state.character.PlayerCharacter.&lt;br /&gt;
*Fixed an issue with loading the createdOn property in net.lugdunon.state.character.PlayerCharacter.&lt;br /&gt;
*Fixed an issue with non-stackable items not being handled correctly in net.lugdunon.state.item.arc.handler.matter.ContainerMatterArcHandler.matterRequested(int conduit, MatterRequest request).&lt;br /&gt;
*Fixed an issue with non-stackable items not being handled correctly in net.lugdunon.state.item.arc.handler.matter.LootSiphonMatterArcHandler.matterRequested(int conduit, MatterRequest request).&lt;br /&gt;
*Fixed an issue with incorrect handling of stack size in net.lugdunon.state.quest.condition.abandon.ItemDebit.getItemForRemoval(int i, int b, int curCount, List&amp;lt;ItemForRemoval&amp;gt; ifr, ItemInstance ii).&lt;br /&gt;
*Fixed an syntax error in net.lugdunon.state.quest.condition.completion.reward.FactionReward.renderReward(el).&lt;br /&gt;
*Fixed an issue with the item tooltip not displaying in the net.lugdunon.state.quest.condition.completion.reward.ItemReward's edit UI.&lt;br /&gt;
*Fixed net.lugdunon.state.sprite.SpriteLayerImage.main()'s tinting utility.&lt;br /&gt;
*Fixed an issue with net.lugdunon.world.biome.settlement.settlements.Settlement.getCenterPoint() not returning the correct location.&lt;br /&gt;
*Fixed an issue with the item tooltip not displaying in the net.lugdunon.state.quest.condition.completion.ItemDebit's edit UI.&lt;br /&gt;
*Added icons for each of the spell schools.&lt;br /&gt;
*Added a cooking sound effect.&lt;br /&gt;
*Added snow bear palette preset.&lt;br /&gt;
*Added black bear palette preset.&lt;br /&gt;
*Added net.lugdunon.asset.manager.FileSystemAssetManager.WORLD_MAP_DIR to the server-side API.&lt;br /&gt;
*Added net.lugdunon.asset.manager.FileSystemAssetManager.getWorldMapLayer(String layerId) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.asset.manager.FileSystemAssetManager.worldMapUpdated(String layerId) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.asset.manager.InMemoryAssetManager.getWorldMapLayer(String layerId) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.asset.manager.InMemoryAssetManager.worldMapUpdated(String layerId) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.asset.manager.IAssetManager.WORLD_MAP_LAYER_TERRAIN to the server-side API.&lt;br /&gt;
*Added net.lugdunon.asset.manager.IAssetManager.WORLD_MAP_LAYER_BIOME to the server-side API.&lt;br /&gt;
*Added net.lugdunon.asset.manager.IAssetManager.WORLD_MAP_LAYER_RELIEF to the server-side API.&lt;br /&gt;
*Added net.lugdunon.asset.manager.IAssetManager.WORLD_MAP_LAYER_POLITICS to the server-side API.&lt;br /&gt;
*Added net.lugdunon.asset.manager.IAssetManager.getWorldMapLayer(String layerId) to the server-side API.&lt;br /&gt;
*Added world map support to the net.lugdunon.asset.AssetServer.&lt;br /&gt;
*net.lugdunon.command.core.character.PlayerCharacterManagementCommand now uses its own random seed for randomizing appearance.&lt;br /&gt;
*Added net.lugdunon.command.core.character.creation.InvokeCharacterCreationExtensionCommand to the code base. This will eventually be used for modding the character creation system.&lt;br /&gt;
*net.lugdunon.command.core.console.gm.TerrainToImageCommand now supports a relief map layer.&lt;br /&gt;
*net.lugdunon.command.core.inventory.AssignItemCommand now triggers the CORE.METRIC.ITEM.EQUIPPED if item assigned is auto-equipped onto the character.&lt;br /&gt;
*net.lugdunon.command.core.inventory.MoveInventoryItemCommand now triggers the CORE.METRIC.ITEM.EQUIPPED &amp;amp; CORE.METRIC.ITEM.UNEQUIPPED when an item is transferred to or from an equipment slot.&lt;br /&gt;
*net.lugdunon.command.core.inventory.RemoveInventoryItemCommand now triggers the CORE.METRIC.ITEM.EQUIPPED &amp;amp; CORE.METRIC.ITEM.UNEQUIPPED when an item is removed from an equipment slot.&lt;br /&gt;
*net.lugdunon.command.core.play.PlaceableStateChangeCommand now include the item's instance id when calling the CORE.METRIC.PLACEABLE.ITEM.ALTERED metric.&lt;br /&gt;
*net.lugdunon.command.core.player.ActionPerformedCommand now triggers the CORE.METRIC.ITEM.USED metric.&lt;br /&gt;
*net.lugdunon.command.core.player.PlayerReviveCommand now takes into account whether or not a character is playing dead.&lt;br /&gt;
*net.lugdunon.command.core.player.QuestCompletedCommand now returns a false to the client if the quest in question didn't complete successfully.&lt;br /&gt;
*net.lugdunon.command.core.player.QuestUpdatedCommand's client-side logic moved to game.player.questing.updateQuest().&lt;br /&gt;
*net.lugdunon.command.core.ConnectToServerCommand now transmits the overworld instance's size upon connect.&lt;br /&gt;
*net.lugdunon.command.core.LoadCharacterCommand.getCommandCompletionThreshold() now returns Game.INFINITE_COMPLETE_THRESHOLD.&lt;br /&gt;
*net.lugdunon.command.core.LoadCharacterCommand now instantiates the game.mapview property with an instance of net.lugdunon.ui.map.Map.&lt;br /&gt;
*net.lugdunon.command.core.LoadCharacterCommand now properly clears out and re-registers the player's minimap and mapview quest progress listeners.&lt;br /&gt;
*net.lugdunon.math.Point now properly supports the ToBinary API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.ex.WorldIdSetException to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator.setCurrency(String currency) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator.getCurrency() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator.setRecipes(Recipes recipes) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator.getRecipes() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator.setAdvancements(Advancements advancements) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator.getAdvancements() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator.setQuestDefinitions(QuestDefinitions questDefinitions) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator.getQuestDefinitions() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator. to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator. to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.WorldGenerator. to the server-side API.&lt;br /&gt;
*net.lugdunon.state.character.behavior.core.PathBehavior now supports multiple destinations, where one is chosen at random (specified using the destinations parameter).&lt;br /&gt;
*Refactored net.lugdunon.state.character.behavior.core.PathBehavior to logically separate path handling code, to make it more legible with the multiple destinations support.&lt;br /&gt;
*Added net.lugdunon.state.character.behavior.core.PlayDeadBehavior to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.character.creation.ICharacterCreationExtension to the code base.&lt;br /&gt;
*Added net.lugdunon.state.character.procedural.DefaultProceduralNonPlayerCharacter to the server-side code base.&lt;br /&gt;
*Removed net.lugdunon.state.character.procedural.ProceduralNonPlayerCharacter.makeStationaryTownGuard(String id, int orientation, int gender, String name, Point location, String settlementId) from the server-side API.&lt;br /&gt;
*Removed net.lugdunon.state.character.procedural.ProceduralNonPlayerCharacter.makePatrollingTownGuards(int[] genders, String[] names, Point location, String settlementId) from the server-side API.&lt;br /&gt;
*Removed net.lugdunon.state.character.procedural.ProceduralNonPlayerCharacter.makeVendor(String vendorId, String vendorDefId, int gender, String name, int orientation, Point location, String settlementId) from the server-side API.&lt;br /&gt;
*Removed net.lugdunon.state.character.procedural.ProceduralNonPlayerCharacter.makeDialogue(String dialogueId, String dialogueDefId, int gender, String name, int orientation, Point location, String settlementId) from the server-side API.&lt;br /&gt;
*Added error handling to net.lugdunon.state.character.procedural.ProceduralNpcDefinitions.fromJSONObject(JSONObject o).&lt;br /&gt;
*Added net.lugdunon.state.character.storyarc.StoryArc to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.character.storyarc.StoryArcCharacterCreationExtension to the code base.&lt;br /&gt;
*Added net.lugdunon.state.character.storyarc.StoryArcs to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.character.Character.isPlayingDead() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.character.Character.playDead() to the server-side API.&lt;br /&gt;
*net.lugdunon.state.character.CharacterSerializer writes out story arc info for player characters.&lt;br /&gt;
*net.lugdunon.state.character.NonPlayerCharacters will continue to update() even if playing dead.&lt;br /&gt;
*net.lugdunon.state.character.NonPlayerCharacter.handleHealthChangeEvent(final int healthChangeType, final int causeType, final Object cause, int amount, int overOrUnderflow) can handle causes of JSONObjectSerializable now.&lt;br /&gt;
*Added net.lugdunon.state.character.NpcDefinitions.hasNpcDef(String npcId) to the server-side API.&lt;br /&gt;
*Added static method net.lugdunon.state.character.NpcDefinitions.save() to the server-side API.&lt;br /&gt;
*A net.lugdunon.state.character.PlayerCharacter will default to the overworld instance on instantiation.&lt;br /&gt;
*Added net.lugdunon.state.character.PlayerCharacter.hasStoryArc() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.character.PlayerCharacter.getStoryArc() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.character.PlayerCharacter.setStoryArc(String storyArc) to the server-side API.&lt;br /&gt;
*net.lugdunon.state.character.PlayerCharacter.handleHealthChangeEvent(final int healthChangeType, final int causeType, final Object cause, int amount, int overOrUnderflow) can handle causes of JSONObjectSerializable now.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.getFatherNamePattern() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.setFatherNamePattern(String fatherNamePattern) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.getElderNamePattern() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.setElderNamePattern(String elderNamePattern) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.getMonkNamePattern() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.setMonkNamePattern(String monkNamePattern) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.getAcolyteNamePattern() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.setAcolyteNamePattern(String acolyteNamePattern) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.preParseFather(String nameTemplate) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.preParseElder(String nameTemplate) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.preParseMonk(String nameTemplate) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.preParseAcolyte(String nameTemplate) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.deity.Deity.preParseName(String namePattern, String nameTemplate) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.item.action.update.canSpawnNPC(String npcId) to the server-side API.&lt;br /&gt;
*net.lugdunon.state.item.arc.handler.information.comparison.EQInformationComparisonArcHandler.conditionSatisfiedByInputs() now returns a false if only one of the inputs is null.&lt;br /&gt;
*net.lugdunon.state.item.arc.handler.information.comparison.EQInformationComparisonArcHandler.conditionSatisfiedByInputs() now uses compare(a,b) == 0 instead of a.equals(b) and will throw a net.lugdunon.state.item.arc.handler.information.ex.UncomparableException if a comparison fails.&lt;br /&gt;
*net.lugdunon.state.item.arc.handler.information.comparison.InformationComparisonArcHandler.compare(Object a, Object b) will now 'upgrade' Integer and Float objects to Long and Double objects before comparison.&lt;br /&gt;
*A net.lugdunon.state.item.arc.handler.matter.MatterCondenserArcHandler will now advance sequentially through each of its inputs (one input per arc pulse) when querying for available matter.&lt;br /&gt;
*A net.lugdunon.state.item.arc.handler.matter.MatterFilterArcHandler will now advance sequentially through each of its inputs (one input per arc pulse) when querying for available matter.&lt;br /&gt;
*A net.lugdunon.state.item.arc.handler.matter.MatterSplitterArcHandler will now advance sequentially through each of its inputs (one input per arc pulse) when querying for available matter.&lt;br /&gt;
*Added net.lugdunon.state.item.arc.handler.matter.MatterResponse(MatterRequest request, PlaceableItemInstance respondingItem, int sourceSlotType, int sourceSlotIndex, int stackSizeResponse) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.state.item.arc.handler.matter.MatterResponse(PlaceableItemInstance respondingItem, int sourceSlotType, int sourceSlotIndex, int stackSizeResponse) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.item.arc.handler.matter.MatterResponse(MatterRequest request, PlaceableItemInstance respondingItem, Item itemResponse, int stackSizeResponse) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.state.item.arc.handler.matter.MatterResponse(PlaceableItemInstance respondingItem, Item itemResponse, int stackSizeResponse) from the server-side API.&lt;br /&gt;
*net.lugdunon.state.item.arc.handler.CraftingStationArcHandler.matterRequested(int conduit, MatterRequest request) now relies on the Recipe.debit() method to process the consumption of recipe materials.&lt;br /&gt;
*net.lugdunon.state.item.arc.handler.HarvesterArcHandler now implements IMatterConsumerArcHandler. This means that a Harvester item can now receive items from other producers.&lt;br /&gt;
*net.lugdunon.state.item.loot.DefaultLootDropStrategy.handleIndividualLootDrop(PlaceableItemInstance pii, String dmgType, LootActor acted, JSONObject drop, DroppedLoot droppedLoot) now accounts for a the placer of a placed item's loot drop modifiers.&lt;br /&gt;
*Added net.lugdunon.state.item.loot.getPiiPlacerActor() to the server-side API.&lt;br /&gt;
*net.lugdunon.state.item.presence.ActionPresenceInstance will not fully initialize in a stateless environment.&lt;br /&gt;
*Added support for custom / proc gen (stored in a placeable's user defined data) instance trigger definitions.&lt;br /&gt;
*A net.lugdunon.state.item.Item's currency will no longer be initialized in a stateless environment.&lt;br /&gt;
*A net.lugdunon.state.item.Item's actionPresence will no longer be initialized in a stateless environment.&lt;br /&gt;
*net.lugdunon.state.item.Item.toJSONObject() now serializes the items phasingStrategy if it exists.&lt;br /&gt;
*Added net.lugdunon.state.item.ItemDefinitionExistsException to the server-side code base.&lt;br /&gt;
*Added static net.lugdunon.state.item.Item.toString(String itemId, int stackSize) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.item.Item.duplicateItem(String sourceItemDef, String newItemDefId, String iconId, String name, String description) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.item.Item.duplicateItemWithSave(String sourceItemDef, String newItemDefId, String iconId, String name, String description) to the server-side API.&lt;br /&gt;
*net.lugdunon.state.item.Item.fromJSONArray(JSONArray a) uses setItem(Item i) instead of direct cache.put() calls.&lt;br /&gt;
*Added net.lugdunon.state.item.PlaceableItemCache.listAllNPCSpawners() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.item.PlaceableItemCache.processPlaceables(JSONArray placeables) to the server-side API.&lt;br /&gt;
*The metricData object in net.lugdunon.state.metric.item.ItemBrokenMetric.handleMetric(JSONObject store, Object metricData) is now a string containing the itemId of the referenced item.&lt;br /&gt;
*The damage amount specified in the metricData object in net.lugdunon.state.metric.item.ItemDamageMetric.handleMetric(JSONObject store, Object metricData) will now be interpreted as its absolute value.&lt;br /&gt;
*net.lugdunon.state.metric.item.ItemDamagedMetric.getName() returns &amp;quot;Item Damage&amp;quot; now instead of &amp;quot;Items Damaged&amp;quot;.&lt;br /&gt;
*Added net.lugdunon.state.metric.item.ItemEquippedMetric to the code base.&lt;br /&gt;
*Added net.lugdunon.state.metric.item.ItemUnequippedMetric to the code base.&lt;br /&gt;
*Added net.lugdunon.state.metric.item.ItemUsedMetric to the code base.&lt;br /&gt;
*net.lugdunon.state.metric.settlement.SettlementVisitedMetric.handleMetric(JSONObject store, Object metricData) now informs listeners in all cases of a visited settlement.&lt;br /&gt;
*net.lugdunon.state.metric.settlement.SettlementVisitedMetric.getName() returns &amp;quot;Settlements Visited&amp;quot; now instead of &amp;quot;Settlement Visited&amp;quot;.&lt;br /&gt;
*Added net.lugdunon.state.metric.settlement.SettlementVisitedMetric.getSectionHeight() to the client-side API.&lt;br /&gt;
*net.lugdunon.state.metric.settlement.SettlementVisitedMetric.renderMetricData(el,data) is now implemented.&lt;br /&gt;
*Added net.lugdunon.state.mod.Mod.listProceduralQuestIds() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.mod.Mod.getProceduralQuest(String questId) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.chain.ChainedQuest to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.chain.QuestChain to the server-side code base.&lt;br /&gt;
*In the net.lugdunon.state.quest.condition.abandon.ItemDebit's edit UI, the item icon will now show a tooltip of &amp;quot;No Item&amp;quot; if no item is selected.&lt;br /&gt;
*In the net.lugdunon.state.quest.condition.abandon.PlaceableRemoval's edit UI, the requirements drop down will be disabled if no requirements of type &amp;quot;net.lugdunon.state.quest.progress.PlaceItem&amp;quot; are used for this quest.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.AdvancementReward.finalizeCompletion(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.AdvancementReward.getCompletionFailedMessage(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.CurrencyReward.finalizeCompletion(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.CurrencyReward.getCompletionFailedMessage(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.ExperienceReward.finalizeCompletion(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.ExperienceReward.getCompletionFailedMessage(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.FactionReward.finalizeCompletion(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.FactionReward.getCompletionFailedMessage(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.HonorificReward to the code base.&lt;br /&gt;
*In the net.lugdunon.state.quest.condition.completion.reward.ItemReward's edit UI, the item icon will now show a tooltip of &amp;quot;No Item&amp;quot; if no item is selected.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.ItemReward.finalizeCompletion(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.ItemReward.getCompletionFailedMessage(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.reward.TitleReward to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.ClientSideNotification.finalizeCompletion(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.ClientSideNotification.getCompletionFailedMessage(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.ICompletionCondition.finalizeCompletion(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.ICompletionCondition.getCompletionFailedMessage(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Refactored how net.lugdunon.state.quest.condition.completion.ItemDebit goes about enumerating its items for removal.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.ItemDebit.getCompletionFailedMessage(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.ItemDebit.finalizeCompletion(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*In the net.lugdunon.state.quest.condition.completion.ItemDebit's edit UI, the item icon will now show a tooltip of &amp;quot;No Item&amp;quot; if no item is selected.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.PlaceableRemoval.getCompletionFailedMessage(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.PlaceableRemoval.finalizeCompletion(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*In the net.lugdunon.state.quest.condition.completion.PlaceableRemoval's edit UI, the requirements drop down will be disabled if no requirements of type &amp;quot;net.lugdunon.state.quest.progress.PlaceItem&amp;quot; are used for this quest.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.SendMail.getCompletionFailedMessage(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.condition.completion.SendMail.finalizeCompletion(PlayerCharacter quester) to the server-side API.&lt;br /&gt;
*In the net.lugdunon.state.quest.condition.completion.SendMail's edit UI, the item icon will now show a tooltip of &amp;quot;No Item&amp;quot; if no item is selected.&lt;br /&gt;
*Added net.lugdunon.state.quest.pointOfInterest.runtime.IRuntimePointOfInterest to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.pointOfInterest.runtime.PlaceableItemInstancePointOfInterest to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.pointOfInterest.PointOfInterest to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.BaseProceduralQuest to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.CollectExistingResource to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.CraftExistingItem to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.DamageExistingPlaceable to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.DefaultProceduralQuest to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.ExistingNPCProximity to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.KillExistingNPC to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.PresetItemDelivery to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.ProceduralQuest to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.ProceduralQuestHub to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.procedural.SimpleItemDelivery to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.AnimalNamed to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.AnimalReleased to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.AnimalTrapped to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.ItemAltered to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.ItemDamaged to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.ItemEquipped to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.ItemUnequipped to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.ItemUsed to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.ModifierApplyOrDispel to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.ModifierGainOrLose to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.NPCHurtOrHealed to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.SettlementVisited to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.SpellCast to the code base.&lt;br /&gt;
*Renamed net.lugdunon.state.quest.progress.CraftItem to net.lugdunon.state.quest.progress.ItemCrafted.&lt;br /&gt;
*Renamed net.lugdunon.state.quest.progress.PlaceItem to net.lugdunon.state.quest.progress.ItemPlaced.&lt;br /&gt;
*Renamed net.lugdunon.state.quest.progress.KillNPC to net.lugdunon.state.quest.progress.NPCKilled.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.IProgress.getProgressTextVariables() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.IProgress.hasPointsOfInterest() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.IProgress.addPointOfInterest (PointOfInterest pointOfInterest) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.IProgress.listPointsOfInterest() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.IProgress.getPointOfInterestId(String suffix) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.BaseProgress.hasPointsOfInterest() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.BaseProgress.addPointOfInterest (PointOfInterest pointOfInterest) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.BaseProgress.listPointsOfInterest() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.BaseProgress.getPointOfInterestId(String suffix) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.CountableBasedProgress.getProgressTextVariables() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.CountableBasedProgress.incrementPrevCount() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.CountableBasedProgress.decrementPrevCountBy() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.CountableBasedProgress.incrementPrevCountBy(int i) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.CountableBasedProgress.decrementPrevCountBy(int i) to the server-side API.&lt;br /&gt;
*net.lugdunon.state.quest.progress.CountableBasedProgress.setPrevCount(int prevCount) can no longer take the previous count below 0.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.CountableItemBasedProgress.filterOn() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.CountableItemBasedProgress.showEmpty() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.CountableItemBasedProgress.showSlider() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.CountableNPCBasedProgress.init(QuestProgress progress) to the server-side API.&lt;br /&gt;
*Refactored the logic in net.lugdunon.state.quest.progress.CountableNPCBasedProgress to be more sane.&lt;br /&gt;
*net.lugdunon.state.quest.progress.NPCProximity can now define a chance to succeed, retry interval, and the text that displays to the client if the chance check fails.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.NPCProximity.setConditionProps(JSONObject props) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.NPCProximity.setChance(double chance) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.NPCProximity.setFailText(String failText) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.NPCProximity.setRetryInterval(long retryInterval) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.NPCProximity.getEditorData() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.progress.NPCProximity.renderUI(parent,requirement) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.trigger.PlaceableItemTrigger to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestHook to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestHub to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.Quest.getRequirementConditionPointsOfInterest(String id) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.Quest.addRequirementCondition(String id, String type, JSONObject props) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.Quest.removeRequirementCondition(String id) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.Quest.addCompletionCondition(ICompletionCondition completion) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.Quest.removeCompletionCondition(ICompletionCondition completion) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.Quest.addAbandonCondition(IAbandonCondition abandon) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.Quest.removeAbandonCondition(IAbandonCondition abandon) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.Quest.getStoryArc() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.Quest.setStoryArc(String storyArc) to the server-side API.&lt;br /&gt;
*Added support for story arc assignment to net.lugdunon.state.quest.Quest.&lt;br /&gt;
*Added error handling to net.lugdunon.state.quest.QuestData.abandonQuest(String questId).&lt;br /&gt;
*net.lugdunon.state.quest.QuestData.abandonQuest(String questId) now supports the handling of completion failure.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestData.alertListener(listener,questId,action) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestData.updateQuest(questId,res) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestData.renderTooltip(data) to the client-side API.&lt;br /&gt;
*net.lugdunon.state.quest.QuestData.addQuestProgressListener(qpl) will now call all listener's questUpdated() handler.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestDefinitions.getProceduralQuest(String questId) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestDefinitions.getQuestHub(String hubId) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestDefinitions.addQuestWithSave(JSONObject quest) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestHook to the code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestHub to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.state.quest.QuestProgerss.listPointsOfInterest() to the server-side API.&lt;br /&gt;
*net.lugdunon.state.quest.QuestProgerss now supports points of interest, which can be defined during procedural generation, requirement conditions, or at runtime.&lt;br /&gt;
*Added net.lugdunon.state.recipe.Recipe.debit(PlaceableItemInstance pii) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.recipe.Recipe.getLevel() to the server-side API.&lt;br /&gt;
*net.lugdunon.state.recipe.Recipes can now be instantiated in a stateless environment.&lt;br /&gt;
*Added static net.lugdunon.state.State.filter(String text, Map&amp;lt;String,String&amp;gt; replacements) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.World.postInit() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.World.initWorldMapLayers() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.World.getStoryArcs() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.state.World.hasStoryArcs() to the server-side API.&lt;br /&gt;
*Renamed net.lugdunon.state.World.getQuestDefintions() to net.lugdunon.state.World.getQuestDefinitions().&lt;br /&gt;
*net.lugdunon.state.World now loads the vendor cache after the item worth calculations have processed.&lt;br /&gt;
*net.lugdunon.util.FastMath's random functions can now be used in a stateless environment.&lt;br /&gt;
*Added net.lugdunon.util.FileUtils.listFilesIn(String directoryName)  to the server-side API.&lt;br /&gt;
*Added net.lugdunon.util.FileUtils.listFilesIn(String directoryName, boolean absolute) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.util.FileUtils.listFilesIn(String directoryName, FileFilter filter) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.util.FileUtils.listFilesIn(String directoryName, FileFilter filter, boolean absolute) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.util.FileUtils.listFilesIn(String directoryName, FilenameFilter filter)  to the server-side API.&lt;br /&gt;
*Added net.lugdunon.util.FileUtils.listFilesIn(String directoryName, FilenameFilter filter, boolean absolute) to the server-side API.&lt;br /&gt;
*net.lugdunon.util.FileUtils.copyFile(File sourceFile, File destFile) now supports the deep copying of directories.&lt;br /&gt;
*Added net.lugdunon.util.TextVariable to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.post.QuestPostProcessor to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.helper.Placeable(String placeable, int[] loc) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.helper.Placeable(String placeable, String state, int[] loc) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.helper.Placeable(String placeable, int[] loc, JSONObject userDefinedData) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.helper.Placeable(String placeable, String state, int[] loc, JSONObject userDefinedData) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.helper.Placeable.process(JSONArray items) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.helper.Placeable.matches(String placeableItemDefId) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.helper.Placeable.setUserDefinedData(JSONObject userDefinedData) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.Stall.performStallAssignment (JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.Stall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.Stall.assignStall(JSONArray pointsOfInterest, JSONArray items, int worldDim, Rect plotDim, Rect stallDim, Rect logicalStallDim, String settlementId) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.Stall.assignStall(JSONArray pointsOfInterest, JSONArray items, JSONArray citizens, int worldDim, Rect plotDim, Rect stallDim, Rect logicalStallDim, String settlementId) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.Stall.addRepair(JSONArray pointsOfInterest, String repairId) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.Stall.addRepair(JSONArray pointsOfInterest, String repairId, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.Stall.addVendor(JSONArray pointsOfInterest, String vendorId, String vendorDefId) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.Stall.addVendor(JSONArray pointsOfInterest, String vendorId, String vendorDefId, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.Stall.addVendor(JSONArray pointsOfInterest, String vendorId, String vendorDefId, String inventoryType) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.Stall.addVendor(JSONArray pointsOfInterest, String vendorId, String vendorDefId, String inventoryType, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.AlchemyStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.AlchemyStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.ArmorerStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.ArmorerStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.BlacksmithingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.BlacksmithingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.BrewingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.BrewingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.CarpentryStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.CarpentryStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.ClothingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.ClothingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.CookingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.CookingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.FarmingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.FarmingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.GeneralStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.GeneralStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.GoldsmithingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.GoldsmithingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.LivestockStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.LivestockStall.performStallAssignment.(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.RepairStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.RepairStall.performStallAssignment.(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.ResearchStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.ResearchStall.performStallAssignment.(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.SmeltingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.SmeltingStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.TinkeringStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.plot.market.TinkeringStall.performStallAssignment(JSONArray pointsOfInterest, JSONObject props, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.Plot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.Plot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray citizens, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.Plot.generateInstanceTemplate(String townId, String plotId, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.BarracksPlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.BarracksPlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray citizens, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.BarracksPlot.generateInstanceTemplate(String townId, String plotId, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.ManorPlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.ManorPlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray citizens, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.ManorPlot.generateInstanceTemplate(String townId, String plotId, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.TavernPlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.TavernPlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray citizens, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.TavernPlot.generateInstanceTemplate(String townId, String plotId, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.MarketPlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.MarketPlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray citizens, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) to the server-side API.&lt;br /&gt;
*Removed net.lugdunon.world.biome.settlement.settlements.generators.town.RapidTransitPlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) from the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.RapidTransitPlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray citizens, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.town.SmallHomePlot.assignPlot(String plotId, String townId, String townName, Rect townBounds, JSONArray items, JSONArray citizens, JSONArray postProcessors, byte[] elevationData, short[] terrainData, int worldDim, Rect plotDim, Rect logicalPlotDim) to the server-side API.&lt;br /&gt;
*net.lugdunon.world.biome.settlement.settlements.generators.BrigandCampSettlementGenerator.makeSettlement(...) now provides a citizens settlement argument.&lt;br /&gt;
*net.lugdunon.world.biome.settlement.settlements.generators.FarmSettlementGenerator.makeSettlement(...) now provides a citizens settlement argument.&lt;br /&gt;
*net.lugdunon.world.biome.settlement.settlements.generators.LyceumSettlementGenerator.makeSettlement(...) now provides a citizens settlement argument.&lt;br /&gt;
*net.lugdunon.world.biome.settlement.settlements.generators.TownSettlementGenerator.makeSettlement(...) now provides a citizens settlement argument.&lt;br /&gt;
*net.lugdunon.world.biome.settlement.settlements.generators.TradesmanSettlementGenerator.makeSettlement(...) now provides a citizens settlement argument.&lt;br /&gt;
*net.lugdunon.world.biome.settlement.settlements.generators.LyceumSettlementGenerator refactored to take advantage of the new procedural quest generation API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.generators.LyceumSettlementGenerator.generateInstanceTemplate(JSONObject lyceumUDD, SpellSchool spellSchool, Deity deity, String settlementId, JSONArray citizens) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.BrigandCampSettlement.renderAdditionalTooltipInformation(data) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.FarmSettlement.renderAdditionalTooltipInformation(data) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.LyceumSettlement.renderAdditionalTooltipInformation(data) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.BrigandCampSettlement.renderAdditionalTooltipInformation(data) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.TownSettlement.getTooltipWidth() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.TownSettlement.renderAdditionalTooltipInformation() to the client-side API.&lt;br /&gt;
*net.lugdunon.world.biome.settlement.settlements.Settlement.headingFromPlayer() refactored to use the net.lugdunon.util.Math.headingFrom(destination,origin) helper function.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.Settlement.renderAdditionalTooltipInformation() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.Settlement.getTooltipWidth() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.Settlement.getTooltipHeight() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.Settlement.renderTooltip() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.Settlement.addQuestHook(QuestHook questHook) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.Settlement.getQuestHook(int type, String identifier) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.Settlement.listQuestHooks() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.Settlement.addCitizen(String citizen) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.biome.settlement.settlements.Settlement.listCitizens() to the server-side API.&lt;br /&gt;
*net.lugdunon.world.biome.settlement.SettlementBiome.init(Terrain terrain, PlaceableItemCache placeableItemCache) now uses the net.lugdunon.state.item.PlaceableItemCache.processPlaceables(JSONArray placeables) method to handle its placeable definitions.&lt;br /&gt;
*net.lugdunon.world.instance.Instance.init(String terrainFile, Tileset tileset, Object seed) now uses the net.lugdunon.state.item.PlaceableItemCache.processPlaceables(JSONArray placeables) method to handle its placeable definitions.&lt;br /&gt;
*Added net.lugdunon.world.politics.Politics.getPoliticsImage() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.event.IElevationChangeListener to the server-side code base.&lt;br /&gt;
*Added net.lugdunon.world.terrain.event.ITerrainChangeListener to the server-side code base.&lt;br /&gt;
*net.lugdunon.world.terrain.Terrain.TERRAIN_IMAGE_TYPE_MAX_VALUE increased to 2 from 1.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.addTerrainChangeListener(ITerrainChangeListener tcl) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.removeTerrainChangeListener(ITerrainChangeListener tcl) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.informTerrainChangeListeners(Set&amp;lt;Integer&amp;gt; chunksUpdated) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.addElevationChangeListener(IElevationChangeListener ecl) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.removeElevationChangeListener(IElevationChangeListener ecl) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.informElevationChangeListeners(Point location) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.getLayerImage() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.getElevationImage() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.getReliefMapImage() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.getBiomeImage() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.getLayerImageData() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.getElevationImageData() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.getReliefMapImageData() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.getBiomeImageData() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.world.terrain.Terrain.setElevationData(int index, byte elevation) to the server-side API.&lt;br /&gt;
*Added new world property: &amp;quot;minimap.show.ruins&amp;quot;. If set to true, all ruin instances will appear on minimap.&lt;br /&gt;
*Added new world property: &amp;quot;minimap.show.caverns&amp;quot;. If set to true, all cavern instances will appear on minimap.&lt;br /&gt;
*net.lugdunon.Server.start(IFatalErrorHandler feh, boolean skipNetworkInterfaceEnumeration) no longer calls the overworld instance's init() directly.&lt;br /&gt;
*net.lugdunon.Server.start(IFatalErrorHandler feh, boolean skipNetworkInterfaceEnumeration) now calls State.instance().getWorld().postInit() after a successful state intialization.&lt;br /&gt;
*net.lugdunon.Server.start(IFatalErrorHandler feh, boolean skipNetworkInterfaceEnumeration) now calls State.instance().loadAccounts() after a successful state intialization instead of relying on the State instance for that.&lt;br /&gt;
*Added net.lugdunon.character.Character.getPinLocation(pinLoc) to the client-side API.&lt;br /&gt;
*net.lugdunon.character.NonPlayerCharacter.setQuestState(qsi,qs) will now add/remove NPC to/from map view.&lt;br /&gt;
*Added net.lugdunon.character.PlayerCharacter.hasStoryArc() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.character.PlayerCharacter.getStoryArc() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.character.PlayerCharacter.titleOrHonorificUpdated() to the client-side API.&lt;br /&gt;
*Added net.lugdunon.input.keybind.MapviewToggleKeybinding to the client-side code base. (Defaults to '[').&lt;br /&gt;
*Added net.lugdunon.ui.item.ItemSelectorDialog.FILTER_SHOW_CRAFTABLE_ITEMS_ONLY(item) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.ui.item.ItemSelectorDialog.FILTER_SHOW_EQUIPPABLE_ITEMS_ONLY(item) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.ui.item.ItemSelectorDialog.FILTER_SHOW_USEABLE_ITEMS_ONLY(item) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.ui.map.Map to the client-side code base.&lt;br /&gt;
*Removed net.lugdunon.ui.minimap.Minimap.getPinLo(pin) from the client-side API.&lt;br /&gt;
*Added net.lugdunon.ui.minimap.Minimap.getPinLocation(pin) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.ui.minimap.Minimap.questAccepted(questId) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.ui.minimap.Minimap.questAbandoned(questId) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.ui.minimap.Minimap.questCompleted(questId) to the client-side API.&lt;br /&gt;
*Added net.lugdunon.ui.minimap.Minimap.questUpdated(questId) to the client-side API.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.constructProvinceText(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getPlacesOfInterestTextFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getPlacesToAvoidTextFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getOpposingFactionTextFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getTavernTextFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getPopulationLevel(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getDeitiesFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getExportsFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getServicesFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getTradesPrelimFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getTradesFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getConflictLevelFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getConflictLevelCautionFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getFactionFor(province) is now a static function.&lt;br /&gt;
*net.lugdunon.ui.politics.panel.ProvincePanel.getOpposingFactionFor(province) is now a static function.&lt;br /&gt;
*Added net.lugdunon.ui.quest.progress.QuestProgressDialog.questUpdated(questId) to the client-side API.&lt;br /&gt;
*Refactored net.lugdunon.ui.quest.progress.QuestProgressDialog.setSelectedQuest(el,quest)'s handling of success/acceptance/detail text.&lt;br /&gt;
*Refactored how net.lugdunon.ui.Window lays out its content.&lt;br /&gt;
*Refactored net.lugdunon.util.Math.distanceFromPlayerLocation(destination) to work a little better.&lt;br /&gt;
*net.lugdunon.util.Math.distanceSquared(p0,p1,max) now accepts a max argument (for wrapping the coordinate plane).&lt;br /&gt;
*net.lugdunon.util.Math.distance(p0,p1,max) now accepts a max argument (for wrapping the coordinate plane).&lt;br /&gt;
*Added net.lugdunon.util.Math.headingFrom(source,destination) to the client-side API.&lt;br /&gt;
*Namespace.registerCustomMetaTags() is now a little more sane.&lt;br /&gt;
*Added Array.containsAll(a) to the client-side API.&lt;br /&gt;
*Array.contains(o) now supports an array of matches.&lt;br /&gt;
*Added Number.headingToString() to the client-side API.&lt;br /&gt;
*Added Game.mapView to the client-side API.&lt;br /&gt;
*Added CORE.BEHAVIOR.PLAY.DEAD behavior.&lt;br /&gt;
*Added CORE.PLAY.DEAD behavior state.&lt;br /&gt;
*Added net.lugdunon.command.core.character.creation.InvokeCharacterCreationExtensionCommand.&lt;br /&gt;
*Increased the base cost of Mistletoe from 7500 to 20000.&lt;br /&gt;
*Increased the base cost of Horn of Elsbeth's Pumpkin Ale from 150 to 180.&lt;br /&gt;
*Set the base cost of a Horn of Marisa's Loping Lager to 180.&lt;br /&gt;
*Deadly NightShade now has a chance to drop a Black Pigment when harvested with a Scythe. &lt;br /&gt;
*Rich Culture's name and description now properly use 'Rich'.&lt;br /&gt;
*Added an NPC cooking prop tool.&lt;br /&gt;
*Added a weak claw NPC attack.&lt;br /&gt;
*Added a strong slash NPC attack.&lt;br /&gt;
*Added the metric net.lugdunon.state.metric.item.ItemUsedMetric.&lt;br /&gt;
*Added the metric net.lugdunon.state.metric.item.ItemEquippedMetric.&lt;br /&gt;
*Added the metric net.lugdunon.state.metric.item.ItemUnequippedMetric.&lt;br /&gt;
*Added a PREFIX_BARMAID name group.&lt;br /&gt;
*Added and removed some names from the SUFFIX_BRIGAND name group.&lt;br /&gt;
*Added, removed, and moved some other names.&lt;br /&gt;
*Added a black bear NPC.&lt;br /&gt;
*Added a snow bear NPC.&lt;br /&gt;
*Brown bear baseHealth decreased to 100 from 150.&lt;br /&gt;
*Brown bear awardExperience decreased to 30 from 20.&lt;br /&gt;
*Coal can now be crafted by smelting Wooden Logs.&lt;br /&gt;
*Horn Mugs no longer require Bronze Bars to craft.&lt;br /&gt;
*Added etc/storyArcs.json.&lt;br /&gt;
*Added etc/quests.&lt;br /&gt;
*Added etc/quests/hubs/.&lt;br /&gt;
*net.lugdunon.elevation.editor.simple.TerrainElevation.updateElevation(Account a, int x, int y, int w, int h, byte elevation) now uses the Terrain.setElevationData() API.&lt;br /&gt;
*net.lugdunon.world.defaults.character.DefaultCharacterStats.expireModifier(String modifierId, Character dispeller) now informs the CORE.METRIC.SPELL.MODIFIER.EXPIRED metric instead of the CORE.METRIC.SPELL.MODIFIER.LOST.&lt;br /&gt;
*Black Bear now have a chance to spawn in Meadow biomes.&lt;br /&gt;
*Black Bear now have a chance to spawn in Forest biomes.&lt;br /&gt;
*Black Bear now have a chance to spawn in Piedmont biomes.&lt;br /&gt;
*Brown Bear now have a chance to spawn in Steppe biomes.&lt;br /&gt;
*Snow Bear now have a chance to spawn in Steppe biomes.&lt;br /&gt;
*Snow Bear now have a chance to spawn in Alpine biomes.&lt;br /&gt;
*Lyceum settlements are now quest hubs.&lt;br /&gt;
*Added 5 procedurally generated opening quest chains for Lyceums.&lt;br /&gt;
*Fixed armor stand instances in town barracks instances.&lt;br /&gt;
*Fixed some chair orientations in town barracks instances.&lt;br /&gt;
*Added a basement to town barracks instances.&lt;br /&gt;
*Greatly expanded the interior of lyceum instances.&lt;br /&gt;
*Greatly expanded the interior of town manor house instances.&lt;br /&gt;
*Greatly expanded the interior of town tavern instances.&lt;br /&gt;
*Began to work on a tiled region instance generator.&lt;br /&gt;
*Added CORE.CHEF.USE.STOVE behavior state.&lt;br /&gt;
*Added CORE.CHEF.PATH.BIN behavior state.&lt;br /&gt;
*Added CORE.CHEF.FACE.BIN behavior state.&lt;br /&gt;
*Added CORE.CHEF.SEARCH.BIN behavior state.&lt;br /&gt;
*Added CORE.CHEF.PATH.STOVE behavior state.&lt;br /&gt;
*Added CORE.CHEF.FACE.STOVE behavior state.&lt;br /&gt;
*Added delivery quest template item.&lt;br /&gt;
*Added fire shrine placeable item.&lt;br /&gt;
*Added water shring placeable item.&lt;br /&gt;
*Added NPCs for tavern and lyceum interior.&lt;br /&gt;
*Added procedural quest template: &amp;quot;collect.existing.resource.template&amp;quot;.&lt;br /&gt;
*Added procedural quest template: &amp;quot;damage.existing.placeable.template&amp;quot;.&lt;br /&gt;
*Added procedural quest template: &amp;quot;kill.existing.npc.template&amp;quot;.&lt;br /&gt;
*Added procedural quest template: &amp;quot;npc.proximity.template&amp;quot;.&lt;br /&gt;
*Added procedural quest template: &amp;quot;craft.existing.item.template&amp;quot;.&lt;br /&gt;
*Added tavern barmaid vendor.&lt;br /&gt;
*Information location holder item added to tinkering vendor.&lt;br /&gt;
*Planter / harvester item added to tinkering vendor.&lt;br /&gt;
*Added spell vendors for each spell school.&lt;br /&gt;
*net.lugdunon.server.worldgen.procedural.item.placement.GriddedPlacementStrategy.placeItems(JSONObject instanceConfig, Terrain terrain, PlaceableItemCache placeableItemCache) to provide a more random and even distribution of placeable items.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.procedural.ProceduralWorldGen.getRecipes() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.procedural.ProceduralWorldGen.setRecipes(Recipes recipes) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.procedural.ProceduralWorldGen.getAdvancements() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.procedural.ProceduralWorldGen.setAdvancements(Advancements advancements) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.procedural.ProceduralWorldGen.getQuestDefinitions() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.procedural.ProceduralWorldGen.setQuestDefinitions(QuestDefinitions questDefinitions) to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.procedural.ProceduralWorldGen.getCurrency() to the server-side API.&lt;br /&gt;
*Added net.lugdunon.server.worldgen.procedural.ProceduralWorldGen.setCurrency(String currency) to the server-side API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Releases|Upcoming Release]]&lt;/div&gt;</summary>
		<author><name>Lugdunon</name></author>	</entry>

	</feed>