Difference between revisions of "Release 0.8.7"

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

Latest revision as of 08:38, 7 July 2018

Engine Content: This information applies to the engine and therefore to all servers.

0.8.7


28/06/2018


Mods altered in this update:

  • net.lugdunon.world.clover.sprite
  • net.lugdunon.world.defaults.audio
  • net.lugdunon.world.clover.tui
  • net.lugdunon.elevation.editor.simple
  • net.lugdunon.world.defaults.character



Server mods altered in this update:

  • net.lugdunon.server.worldgen.defaults
  • net.lugdunon.server.worldgen.procedural



/etc files altered in this update:

  • behaviors.json
  • behaviorStates.json
  • commands.json
  • deities.json
  • itemBaseCosts.json
  • items.json
  • metrics.json
  • names.json
  • npcs.json
  • proceduralNpcs.json
  • quests.json
  • recipes.json
  • storyArcs.json
  • vendors.json
  • instances/0/instance.json
  • instanceTemplates/BARRACKS/placeableItemCache.json
  • instanceTemplates/LYCEUM/placeableItemCache.json
  • instanceTemplates/LYCEUM/terrain.dat
  • instanceTemplates/MANOR/instance.json
  • instanceTemplates/MANOR/placeableItemCache.json
  • instanceTemplates/MANOR/terrain.dat
  • instanceTemplates/STARTER_TILE/instance.json
  • instanceTemplates/STARTER_TILE/npcCache.json
  • instanceTemplates/STARTER_TILE/placeableItemCache.json
  • instanceTemplates/STARTER_TILE/terrain.dat
  • instanceTemplates/STARTER_TILE/waypointCache.json
  • instanceTemplates/TAVERN/placeableItemCache.json
  • instanceTemplates/TAVERN/terrain.dat
  • instanceTemplates/TILED_DUNGEON/tiles/1/instance.json
  • instanceTemplates/TILED_DUNGEON/tiles/1/npcCache.json
  • instanceTemplates/TILED_DUNGEON/tiles/1/placeableItemCache.json
  • instanceTemplates/TILED_DUNGEON/tiles/1/terrain.dat
  • instanceTemplates/TILED_DUNGEON/tiles/1/waypointCache.json
  • instanceTemplates/TILED_DUNGEON/tiles/2/instance.json
  • instanceTemplates/TILED_DUNGEON/tiles/2/npcCache.json
  • instanceTemplates/TILED_DUNGEON/tiles/2/placeableItemCache.json
  • instanceTemplates/TILED_DUNGEON/tiles/2/terrain.dat
  • instanceTemplates/TILED_DUNGEON/tiles/2/waypointCache.json
  • instanceTemplates/TILED_DUNGEON/tiles/0.json
  • instanceTemplates/TILED_DUNGEON/tiles/1.json
  • instanceTemplates/TILED_DUNGEON/instance.json
  • instanceTemplates/TILED_DUNGEON/npcCache.json
  • instanceTemplates/TILED_DUNGEON/placeableItemCache.json
  • instanceTemplates/TILED_DUNGEON/waypointCache.json
  • quests/hubs/lyceum.json



Known Issues:

  • Entering the game while in an instance other than the overworld will throw off the map pin locations in the new map view.


Release Notes:

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