Releases: nwn-dotnet/Anvil
Releases · nwn-dotnet/Anvil
Release 8193.36.1
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 replacesLastSpellCasterLevel
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 optionalrangedOnly
parameter. - Effect:
DamageResistance
now supports an optionalrangedOnly
parameter. - Effect:
EffectType
will return the new types introduced in 8193.36. - NwDoor:
Clone
now uses the sharedCloneInternal
behaviour. - NwEncounter:
Clone
is now supported. - NwGameObject:
ActionCastSpellAt
now supports optionalspellClass
andspontaneousCast
parameters. - NwPlayer:
FloatingTextString
now supports an optionalchatWindow
parameter. - NwPlayer:
FloatingTextStrRef
now supports an optionalchatWindow
parameter. - CampaignVariableObject: Tightened generic constraint to only allow
NwGameObject
instead ofNwObject
to match base game behaviour.
Deprecated
- ItemProperty:
LimitUseByClass(IPClass)
- Use theLimitUseByClass(NwClass)
overload instead.
Fixed
- Fixed
Possessor
not correctly returning bags/containers.
Release 8193.35.3
Removed
- Removed custom crash handler due to preventing dotnet from collecting a crash dump.
Release 8193.35.2
Added
- Effect: Added
AreaOfEffect
overload withPersistentVfxTableEntry
support. - Effect: Added
Polymorph
overload withPolymorphTableEntry
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
- useNwRace
instead.HitEffect.SlayRace
- useNwRace
overload instead.ItemProperty.ACBonusVsRace
- useNwRace
overload instead.ItemProperty.AttackBonusVsRace
- useNwRace
overload instead.ItemProperty.DamageBonusVsRace
- useNwRace
overload instead.ItemProperty.EnhancementBonusVsRace
- useNwRace
overload instead.ItemProperty.LimitUseByRace
- useNwRace
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
Fixed
- (Docker) Fixed an issue with libssl dependency.
Release 8193.35.0
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 theNativeFunction
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
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
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
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
- useCreatureClassInfo.KnownSpells[].Add
instead.CreatureClassInfo.RemoveKnownSpell
- useCreatureClassInfo.KnownSpells[].Remove
instead.CreatureClassInfo.GetKnownSpellCountByLevel
- useCreatureClassInfo.KnownSpells[].Count
instead.CreatureClassInfo.GetKnownSpells
- useCreatureClassInfo.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
Added
- Exposed
HomeStorage
class for accessing paths in anvil home. - Added support for creating
Cassowary
solvers throughnew 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
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.
- NwGameObject: Added
- 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
- useDoorEvents.OnConversation
instead.PlaceableEvents.OnDialogue
- usePlaceableEvents.OnConversation
instead.
Fixed
- Fixed an issue with events that caused script handlers not to be called after reloading anvil.