Skip to content

Releases: nwn-dotnet/Anvil

Release 8193.36.1

17 Feb 17:02
Compare
Choose a tag to compare

Added

  • EffectType: Added new 8193.36 constants
  • GuiEventType: Added new 8193.36 constants
  • PlayerDeviceProperty: Added new 8193.36 constants
  • ResRefType: Added new 8193.36 constants and missing constants for 8193.35
  • Effect: Added EnemyAttackBonus method.
  • SQLQuery: Added Columns property.
  • SQLResult: Added overloads with column name parameters.
  • OnPlayerGuiEvent: Added missing documentation for EventObject event types.
  • NwArea: Added SetAreaTileBorderDisabled method.
  • NwArea: Added SetAreaGrassOverride method.
  • NwArea: Added RemoveAreaGrassOverride method.
  • NwArea: Added SetAreaDefaultGrassDisabled method.
  • NwGameObject: Added CasterLevel property. This replaces LastSpellCasterLevel from NwCreature.
  • NwCreature: Added SpellAbilities property for managing creature spell-like abilities.
  • NwPlayer: Added StartAudioStream method.
  • NwPlayer: Added StopAudioStream method.
  • NwPlayer: Added SetAudioStreamPaused method.
  • NwPlayer: Added SetAudioStreamVolume method.
  • NwPlayer: Added SeekAudioStream method.
  • CRulesKeyHash: New structure to support working with the new hash-based ruleset key labels.
  • RulesetKeys: New constants class with hashed keys for all known ruleset definitions.
  • NwGameTables: Added SurfaceMaterialTable.

Package Updates

  • NWNX: 51162c5 -> 9865013
  • NWN.Core: 8193.35.21 -> 8193.36.1
  • NWN.Native: 8193.35.9 -> 8193.36.2
  • NLog: 5.2.5 -> 5.2.8

Changed

  • Effect: DamageReduction now supports an optional rangedOnly parameter.
  • Effect: DamageResistance now supports an optional rangedOnly parameter.
  • Effect: EffectType will return the new types introduced in 8193.36.
  • NwDoor: Clone now uses the shared CloneInternal behaviour.
  • NwEncounter: Clone is now supported.
  • NwGameObject: ActionCastSpellAt now supports optional spellClass and spontaneousCast parameters.
  • NwPlayer: FloatingTextString now supports an optional chatWindow parameter.
  • NwPlayer: FloatingTextStrRef now supports an optional chatWindow parameter.
  • CampaignVariableObject: Tightened generic constraint to only allow NwGameObject instead of NwObject to match base game behaviour.

Deprecated

  • ItemProperty: LimitUseByClass(IPClass) - Use the LimitUseByClass(NwClass) overload instead.

Fixed

  • Fixed Possessor not correctly returning bags/containers.

Release 8193.35.3

20 Dec 21:53
Compare
Choose a tag to compare

Removed

  • Removed custom crash handler due to preventing dotnet from collecting a crash dump.

Release 8193.35.2

08 Dec 01:15
Compare
Choose a tag to compare

Added

  • Effect: Added AreaOfEffect overload with PersistentVfxTableEntry support.
  • Effect: Added Polymorph overload with PolymorphTableEntry support.
  • Location: Added TileInfo property.
  • Events: Added OnDispelMagicApply event.
  • NuiDrawList: Added NuiDrawListItemType.Line support.
  • NuiDrawList: Added support for item order and render options.
  • NuiDrawList: Added ImageRegion property.
  • NuiImage: Added ImageRegion property.
  • NuiImage: Added WordWrap property.
  • Nui: Added NuiToggles widget.
  • NuiElement: Added DisabledTooltip, Encouraged properties.
  • NuiWindow: Added AcceptsInput property.
  • CreatureLevelInfo: Added AbilityGained property.
  • NwArea: Added TileInfo property.
  • NwCreature: Added RemainingSkillPoints property.
  • NwCreature: Added BroadcastSkillRoll method.
  • NwCreature: Added CalculateAbilityModifierFromScore method.
  • NwCreature: Added GetArmorClassVersus method.
  • NwCreature: Added parameter to RemoveFeat to optionally remove the feat from the level stat list (for ELC).
  • NwItem: Extended AddItemProperty to support additional behaviours for managing existing item properties.
  • NwItem: Added CompareItem method.
  • NwItem: Added HasItemProperty method.
  • NwItem: Added RemoveItemProperties method.
  • NwModule: Added RefreshClientObjects method.
  • NwPlayer: Added RefreshClientObject method.
  • NwPlayer: Added RefreshPlayerClientObject method.
  • NwServer: Added DebugMode, DebugCombat, DebugSaveThrows, DebugHitDie, DebugMoveSpeed properties.
  • NwGameTables: Added PlaceableTypeTable
  • NwGameTables: Added PolymorphTable
  • NwGameTables: Added PortraitTable
  • NwGameTables: Added PersistentEffectTable
  • PluginManager: Added support for specifying additional plugin directories with a new environment variable, ADD_PLUGIN_PATHS
  • UnobservedTaskExceptionLogger: Added new service for logging and handling uncaught async Task exceptions.

Package Updates

  • NWNX: b419e42 -> 51162c5
  • NWN.Core: 8193.35.6 -> 8193.35.21
  • NWN.Native: 8193.34.6 -> 8193.35.9
  • NLog: 5.1.4 -> 5.2.5

Changed

  • Effect: Tag property is now correctly marked as nullable.
  • ItemProperty: Tag property is now correctly marked as nullable.
  • OnClientConnect: PlayerName, CDKey properties are no longer nullable.
  • CreatureLevelInfo: Feats property is now a mutable list.
  • EncounterListEntry: CreatureResRef is now correctly marked as nullable.
  • NwCreature: DialogResRef is now correctly marked as nullable.
  • NwCreature: TalentBest, TalentRandom now returns the correct talent class type.
  • NwDoor: DialogResRef is now correctly marked as nullable.
  • NwGameObject: PortraitId now uses the 2da PortraitTableEntry type.
  • NwPlaceable: DialogResRef is now correctly marked as nullable.
  • NwBaseItem: DefaultIcon is now correctly marked as nullable.
  • NwBaseItem: DefaultModel is now correctly marked as nullable.
  • NwClass: IconResRef, SpellTableColumn properties are now correctly marked as nullable.
  • NwClass: PreReqTable is now a nullable reference to a TwoDimArray wrapper of the associated class prereq table.
  • NwDomain: Icon is now correctly marked as nullable.
  • NwFeat: IconResRef is now correctly marked as nullable.
  • NwRace: DefaultCharacterDescription, Description, Name, PluralName properties are now correctly marked as nullable.
  • NwSkill: IconResRef is now correctly marked as nullable.
  • NwSpell: CastGroundVisual, CastHandVisual, CastHeadVisual, CastSound, ConjureGroundVisual, ConjureHandVisual, ConjureHeadVisual, ConjureSound, IconResRef, ImpactScript, ProjectileModel, ProjectileSound properties are now correctly marked as nullable.
  • NativeObjectExtensions: Moved to Anvil.Native to prevent missing method errors when using other extension overloads, and made public again.
  • ArrayWrapper: Added additional error checking.
  • EnforceLegalCharacterService: Added 8 multiclass support.
  • ServerLogRedirectorService: Don't log empty or null messages.
  • ScriptDispatchService: Remove redundant try/catch, optimization.
  • AnvilCore: Merged VirtualMachineFunctionHandler into AnvilCore.
  • AnvilCore: Use better performant unmanaged function pointers for handling low level events from NWNX.
  • AnvilCore: Implement custom crash handler with managed stacktrace.

Deprecated

  • IPRacialType - use NwRace instead.
  • HitEffect.SlayRace - use NwRace overload instead.
  • ItemProperty.ACBonusVsRace - use NwRace overload instead.
  • ItemProperty.AttackBonusVsRace - use NwRace overload instead.
  • ItemProperty.DamageBonusVsRace - use NwRace overload instead.
  • ItemProperty.EnhancementBonusVsRace - use NwRace overload instead.
  • ItemProperty.LimitUseByRace - use NwRace overload instead.
  • DamageData properties - use GetDamageByType, SetDamageByType instead.

Fixed

  • EventService: Built-in game events subscribed in anvil will now preserve the event script identifier when calling the original script.
  • ItemAppearance: Now correctly supports the extended appearance types added in 8193.35.
  • NwArea: GetTileInfo now correctly returns the correct tile when specifying a tile coordinate.
  • NwCreature: Fixed ActionUseFeat subFeat parameter not working.
  • EnforceLegalCharacterService: Fixed an erroneous calculation when calculating ability scores with a level stat bonus.
  • WeaponService: Fixed a rare server crash when calculating levels for a specific class.

Release 8193.35.1

25 May 19:38
Compare
Choose a tag to compare

Fixed

  • (Docker) Fixed an issue with libssl dependency.

Release 8193.35.0

24 May 19:55
Compare
Choose a tag to compare

Added

  • DamageType: Added CustomXX damage type constants
  • EffectSubType: Added Unyielding subtype.
  • EffectType: Added Pacify, BonusFeat, TimeStopImmunity, ForceWalk effects.
  • GuiEventType: Added RadialOpen
  • GuiPanel: Added Tile, Trigger, Creature, Item, Placeable, Door, Quickbar panels.
  • PlayerDeviceProperty: Added various graphics properties.
  • Effect: Added BonusFeat, ForceWalk, Pacified, TimeStopImmunity effect methods.
  • Effect: Added LinkId, IgnoreImmunity properties.
  • Location: Added TileId, TileRotation, TileHeight properties.
  • Location: Added SetTile, SetTileAnimationLoops methods.
  • SQLQuery: Added Reset method.
  • ModuleEvents.OnPlayerEquipItem: Added Slot property.
  • ModuleEvents.OnPlayerGuiEvent: Added Vector property.
  • ModuleEvents.OnPlayerUnequipItem: Added Slot property.
  • SpellEvents.OnSpellCast: Added IsSpontaneousCast, SpellLevel properties.
  • NwArea: Added ReloadAreaGrass, ReloadAreaBorder, SetTiles, GetAreaLightColor, SetAreaLightColor, GetAreaLightDirection, SetAreaLightDirection, SetFogColor methods.
  • NwCreature: Added ControllingPlayer setter.
  • NwCreature: Added ActionUseFeat, GetSpellUsesLeft, SetEffectIconFlashing methods
  • NwGameObject: Added Usable, VisibleDistance, VisualTransform, UiDiscoveryFlags properties.
  • NwGameObject: Added GetVisualTransform method with scope option.
  • NwGameObject: Added ReplaceObjectAnimation, ClearObjectAnimationOverride, SetTextBubbleOverride methods.
  • NwPlayer: Added CameraFlags, ClientVersionCommitSha1 properties.
  • NwPlayer: Added AttachCamera, SetCameraLimits, SetShaderUniform, SetSpellTargetingData methods.
  • VisualTransform: Added Clear method.
  • VisualTransformLerpSettings: Added BehaviorFlags, Repeats properties.
  • DevastatingCriticalData: Added Attacker property.

Package Updates

  • NWNX: d44d373 -> b419e42
  • NWN.Core: 8193.34.15 -> 8193.35.6
  • NWN.Native: 8193.34.5 -> 8193.35.6
  • LightInject: 6.6.3 -> 6.6.4
  • NLog: 5.1.3 -> 5.1.4

Changed

  • !! Anvil now targets .NET 7. You may need to update your plugin's target framework to successfully compile against Anvil.
  • !! HookService: NWNX and NWN.Native no-longer exposes a list of function addresses, and the address parameter has been removed from RequestHook. The RequestHook now expects a delegate with the NativeFunction attribute. See here for an example.
  • ItemAppearance: Update return values to support the extended part ranges introduced in 8193.35.
  • NwPlayer: ClientVersion now includes the revision value of the client version.
  • NwPlayer: EnterTargetMode now specifies a setting object that contains all new options added in 8193.35.

Removed

  • ItemAppearanceArmorModel: Removed deprecated class.
  • DoorEvents.OnDialogue: Removed deprecated class.
  • PlaceableEvents.OnDialogue: Removed deprecated class.
  • ItemAppearanceArmorModel: Removed deprecated class.
  • Effect: Removed deprecated EffectIcon overload.
  • ItemProperty: Removed deprecated PropertyType property.
  • CreatureEvents.OnConversation: Removed deprecated CurrentSpeaker property.
  • ModuleEvents.OnNuiEvent: Removed deprecated WindowToken property.
  • CreatureClassInfo: Removed deprecated AddKnownSpell, GetKnownSpellCountByLevel, GetKnownSpells, RemoveKnownSpell methods.
  • ItemAppearance: Removed deprecated ClearArmorPieceColor, GetArmorModel, GetArmorPieceColor, SetArmorModel, SetArmorPieceColor overloads.
  • NativeObjectInfoAttribute: Removed unused class.
  • NwArea: Removed deprecated GetFogAmount, GetFogColor methods.
  • NwGameObject: Removed deprecated CreatureAppearanceType property.
  • NwGameObject: Remove Destroy, PlaySoundByStrRef overloads.
  • NwPlayer: Remove ClearTlkOverride, CreateNuiWindow, NuiDestroy, NuiGetUserData, NuiGetWindowId, NuiSetUserData, SetTlkOverride methods.
  • Color: Removed ToInt method.

Fixed

  • (NWNX) Fixed an issue where nested VM scopes would cause an invalid stack and assertion error.

Release 8193.34.28

18 Apr 21:49
Compare
Choose a tag to compare

Fixed

  • NwCreature: Fixed an issue where GetAssociates would return an empty list for certain associate types.
  • VirtualMachine: Fix an issue where the context object would be incorrectly flagged as invalid.
  • Creature.OnDeath: Support Area/Module as the killer of the creature.
  • EventService: More reliable handling of game events.

Release 8193.34.27

12 Apr 20:19
Compare
Choose a tag to compare

Added

  • NwCreature: Added BodyBag, BodyBagTemplate properties.
  • NwPlaceable: Added IsBodyBag property.

Changed

  • OnPlayerGuiEvent: EffectIcon property is now nullable.
  • OnDebugPlayVisualEffect: Effect property is now nullable.
  • APIs that accept a TableEntry parameter now have implicit casts (e.g. EffectIconTableEntry & EffectIcon).

Fixed

  • NwCreature: Fixed an infinite loop caused by the Associates property when having dominated creature associates.
  • Added some index/range checks for some usages of game table data.

Release 8193.34.26

06 Apr 21:21
Compare
Choose a tag to compare

Added

  • NwGameTables: Added EffectIconTable.
  • CreatureClassInfo: Added School, KnownSpells properties.
  • CreatureLevelInfo: Added AddedKnownSpells, RemovedKnownSpells properties.

Package Updates

  • NWNX: 2692ecb -> d44d373
  • NWN.Core: 8193.34.12 -> 8193.34.15
  • NWN.Native: 8193.34.5 -> 8193.34.7
  • Newtonsoft.Json: 13.0.2 -> 13.0.3
  • NLog: 5.1.2 -> 5.1.3
  • Paket.Core: 7.2.0 -> 7.2.1

Changed

  • CollectionExtensions: InsertOrdered now returns the index in which the item was inserted.
  • Anvil will now log a managed stack trace during an assertion failure. We're hoping this will help track down issues where the nwscript VM reports an invalid stack state.

Deprecated

  • CreatureClassInfo.AddKnownSpell - use CreatureClassInfo.KnownSpells[].Add instead.
  • CreatureClassInfo.RemoveKnownSpell - use CreatureClassInfo.KnownSpells[].Remove instead.
  • CreatureClassInfo.GetKnownSpellCountByLevel - use CreatureClassInfo.KnownSpells[].Count instead.
  • CreatureClassInfo.GetKnownSpells - use CreatureClassInfo.KnownSpells instead.

Fixed

  • Fixed null/empty script names not clearing object event scripts.
  • Fixed an issue where an invalid script name could be assigned to an object event.
  • Fixed a NRE in the ModuleEvents.OnAcquireItem event caused by characters failing ELC.
  • Fixed a cast exception in the PlaceableEvents.OnDisturbed event when the last inventory event was not caused by a creature.
  • NwStore: Fixed WillNotBuyItems, WillOnlyBuyItems lists not removing items, and LINQ functions (ToList/ToArray) not working.
  • CreatureLevelInfo: ClassInfo now returns the correct creature class.
  • ItemPropertyItemMapTable: Fixed some item property values returning valid when they shouldn't be.

Release 8193.34.25

03 Mar 08:12
Compare
Choose a tag to compare

Added

  • Exposed HomeStorage class for accessing paths in anvil home.
  • Added support for creating Cassowary solvers through new Cassowary()
  • NwGameObject: Added ActionJumpToLocation method.
  • Events: Added OnPlayerQuickChat event.
  • NwPlayer: Added object name override support (SetObjectNameOverride)
  • NwPlayer: Added player-specific looping vfx support (AddLoopingVisualEffect)
  • NwCreature: Added LevelUp method that bypasses validation.

Package Updates

  • NLog: 5.1.1 -> 5.1.2
  • Microsoft.CodeAnalysis.CSharp: 4.4.0 -> 4.5.0

Changed

  • Optional anvil services will now log a message when they are used.

Fixed

  • !! Fixed a memory leak when not using Dispose() on engine structures. (Effect, Location, ItemProperty, Json, SQLQuery, Talent)

Release 8193.34.24

13 Feb 00:01
Compare
Choose a tag to compare

Added

  • Implemented AI message and listen system.
    • NwGameObject: Added IsListening property.
    • NwGameObject: Added SetListenPattern method.
    • NwCreature: Added SetAssociateListenPatterns method.
    • OnConversation events: Added ListenPattern, AssociateCommand properties.
  • OnTrapTriggered: Added TriggeredBy property to door/placeable traps.
  • CreatureClassInfo: Added Domains array for reading/modifying creature domains.

Package Updates

  • NWN.Core: 8193.34.10 -> 8193.34.12

Deprecated

  • DoorEvents.OnDialogue - use DoorEvents.OnConversation instead.
  • PlaceableEvents.OnDialogue - use PlaceableEvents.OnConversation instead.

Fixed

  • Fixed an issue with events that caused script handlers not to be called after reloading anvil.