Skip to content

v1.0.0-preview.13

Pre-release
Pre-release
Compare
Choose a tag to compare
@sliekens sliekens released this 18 Feb 04:15
· 327 commits to main since this release

This is another intermediate preview release to improve the public API of the code, this time focusing on Hero (masteries, emotes, etc.)

Masteries and (background) stories were improved to use terminology found in the game and in the GW2 wiki. Previously, names were used which could mean something else in the game or wiki, which might cause confusion.

Good news for Revenants as I fixed a few of the broken legends. Vindicator is still not working correctly, but must be fixed in the API first.

The API was previously missing mastery region names for EoD and SotO, but a recent API update rectified it. This release adds the associated region names Jade and Sky. I also changed MasteryPointsTotal.Region from string to the MasteryRegionName enum. This is how the API was originally designed, but the data was silently changed from region names to expansion names. Possibly it was not an intended change as it was not documented in the API release notes. Mastery insight points in the Maps API still refer to the region name only, not the expansion name. This release contains compensating code to convert expansion names back to region names.

This release also introduces chat links creation. You can now create chat links from objects using a simple API:

var link = new ItemLink
{
    ItemId = 23040
};
string chatLink = link.ToString();

You can also parse existing links, to inspect them or even update them:

var link = ItemLink.Parse("[&AgEAWgAA]");
var count = link.Count;
var newLink = link with { Count = count + 1 };
string chatLink = newLink.ToString();

I also enabled AOT compilation as of this release.

New features

  • Chat links
  • Added missing mastery region names (Jade and Sky)
  • Added Build.SelectedSpecializationIds() method
  • Added Build.SelectedTraitIds() method
  • Added Build.SelectedSkillIds() method
  • Added SkillBar.SelectedSkillIds() method
  • Added ability to retrieve unlocked glider skins
  • Enabled ahead-of-time compilation (reduces startup time)

Bug fixes

  • Fixed Build.Legends garbage legend IDs

Breaking changes

Builds:

  • Renamed WeaponType.Speargun to HarpoonGun
  • Split SkillBar.UtilitySkillIds into 3 props
  • Split Build.Specializations into 3 props
  • Split SelectedSpecialization.TraitIds into 3 props
  • Grouped Build.Legends and Build.AquatingLegends into SelectedLegends
  • Reworked Build.PetSkills to Pets, it had nothing to do with skills

Dyes:

  • Renamed GetUnlockedDyesIndex to GetUnlockedColors
  • Renamed Dye.Item to ItemId
  • Renamed DyeSlot.ColorId to DyeId
  • Split Categories into Hue, Material and ColorSet

Emotes:

  • Renamed Emote.UnlockItems to UnlockItemIds

Equipment:

  • Renamed EquipmentItem.DyeIds to DyeColorIds
  • Changed EquipmentItem.DyeColorIds to be an empty list instead of null
  • Changed EquipmentItem.UpgradeItemIds to be an empty list instead of null
  • Changed EquipmentItem.InfusionItemIds to be an empty list instead of null
  • Changed EquipmentItem.TemplateNumbers to be an empty list instead of null
  • Renamed CombatAttribute to AttributeName
  • Renamed old attribute names like CritDamage to modern names like Ferocity
  • Replaced UpgradeAttributeName with AttributeName
  • Renamed SelectedStat to SelectedAttributeCombination
  • Changed SelectedAttributeCombination.Attributes to a Dictionary<AttributeName, int>

Exploration:

  • Renamed MapSummariesByIds to GetMapSummariesByIds

Finishers:

  • Renamed Finisher.UnlockItems to UnlockItemIds
  • Renamed Finisher.UnlockDetails to LockedText

Gliders:

  • Renamed Glider to GliderSkin
  • Renamed GliderSkin.UnlockItems to UnlockItemIds
  • Renamed GliderSkin.DefaultDyes to DefaultDyeColorIds and changed to IReadOnlyList

Home:

  • Renamed GetOwnedCatsIndex to GetUnlockedCats
  • Renamed GetUnlockedNodesIndex to GetUnlockedNodes

Items:

  • Renamed ItemStats to AttributeCombination

Jade bots:

  • Renamed JadeBot to JadeBotSkin

Mail carriers:

  • Renamed MailCarrier.UnlockItems to UnlockItemIds
  • Renamed GetOwnedMailCarriers to GetUnlockedMailCarriers

Masteries:

  • Changed the type of MasteryPointsTotal.Region from string to the MasteryRegionName enum
  • Renamed Mastery to MasteryTrack
  • Renamed MasteryLevel to Mastery
  • Renamed Levels to Masteries and converted to IReadOnlyList
  • Renamed Background to BackgroundHref

Miniatures:

  • Renamed Minipet to Miniature
  • Renamed Miniature.Unlock to LockedText

Mounts:

  • Renamed GetOwnedMounts to GetUnlockedMounts
  • Renamed GetOwnedMountSkins to GetUnlockedMountSkins
  • Renamed Mount.Skin to SkinIds
  • Renamed MountName.Turtle to SiegeTurtle
  • Changed MountSkin.DyeSlots to IReadOnlyList

Novelties:

  • Renamed GetUnlockedNoveltiesIndex to GetUnlockedNovelties
  • Renamed Novelty.UnlockItems to UnlockItemIds

Races:

  • Renamed Race.Skills to SkillIds and converted to IReadOnlyList

Background stories:

  • Reorganized namespaces
  • Renamed CharacterBackstory.Backstory to AnswerIds
  • Renamed Backstory to BackgroundStory everywhere else
  • Renamed Question to QuestionId
  • Renamed Answers to AnswerIds and converted to IReadOnlyList
  • Changed Races and Professions collections in background story Q&A to not-null collections
    • Previously they contained a list of restrictions, or were null if no restrictions applied
    • Now the collections contain all races and professions instead of being null

Inventories:

  • Changed ItemSlot.UpgradeItemIds to SuffixItemId and SecondarySuffixItemId
  • Renamed ItemSlot.DyeIds to DyeColorIds
  • Changed ItemSlot.DyeColorIds to be an empty list instead of null
  • Changed ItemSlot.InfusionItemIds to be an empty list instead of null

Outfits:

  • Renamed GetUnlockedOutfitsIndex to GetUnlockedOutfits
  • Renamed Outfit.UnlockItems to UnlockItemIds

Pvp:

  • Renamed GetUnlockedHeroesIndex to GetUnlockedMistChampions
  • Renamed MistChampionSkin.UnlockItems to UnlockItemIds

Skiffs:

  • Renamed Skiff to SkiffSkin

Story lines:

  • Renamed Season to Storyline
  • Renamed Quest to StoryStep
  • Renamed Story to StoryId
  • Renamed Goal to Objective
  • Renamed GetCharacterQuests to GetCompletedStorySteps
  • Changed Story.Chapters to IReadOnlyList
  • Changed StoryStep.Objectives to IReadOnlyList
  • Changed Story.Races to not-null collection
    • Previously it contained a list of restrictions, or was null if no restrictions applied
    • Now the collection contains all races instead of being null

Titles:

  • Renamed GetUnlockedTitlesIndex to GetUnlockedTitles

Training:

  • Reorganized namespaces
  • Renamed SkillReference to SkillSummary
  • Renamed Specializations to SpecializationIds and converted to IReadOnlyList
  • Changed Weapons dictionary key from string to WeaponType enum
  • Changed Skills to IReadOnlyList
  • Changed Training to IReadOnlyList
  • Added an exception when duplicate skill palettes are encountered instead of arbitrarily choosing the last one

Wardrobe:

  • Renamed GetUnlockedSkinsIndex to GetUnlockedSkins
  • Changed DyeSlotInfo properties to IReadOnlyList
  • Changed Skin.Restrictions list type to RaceName

Full Changelog: v1.0.0-preview.12...v1.0.0-preview.13