GithubHelp home page GithubHelp logo

nwn-dotnet / anvil Goto Github PK

View Code? Open in Web Editor NEW
22.0 4.0 9.0 31.35 MB

A Neverwinter Nights Server API

Home Page: https://nwn-dotnet.github.io/Anvil

License: MIT License

C# 99.87% Shell 0.13%
nwn neverwinter-nights dotnet csharp

anvil's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

anvil's Issues

Get/Set script names

As a developer I want to be able to get and set (to a lesser degree) which script string is set on each event on a Nw* object.

PostString issue: Invisible is the new Green

PostString currently works only with Color.WHITE. Selecting Color.GREEN makes the text invisible.

using NWN.API;
using NWN.API.Constants;
using NWN.API.Events;
using NWN.Services;

namespace KK2.Events.Module 
{

  [ServiceBinding(typeof(ClientEnter))]
  public class ClientEnter
  {
    public ClientEnter(EventService eventService)
    {
      eventService.Subscribe<NwModule, ModuleEvents.OnClientEnter>(NwModule.Instance, OnClientEnter);
    }

    private void OnClientEnter(ModuleEvents.OnClientEnter eventInfo)
    {
      NwPlayer pc = eventInfo.Player;

      pc.PostString("White", 1, 2, ScreenAnchor.BottomRight, 72000.0f, Color.WHITE, Color.WHITE, 2);
      // green not working
      pc.PostString("Green", 1, 3, ScreenAnchor.BottomRight, 72000.0f, Color.GREEN, Color.GREEN, 1);
    }
  }
  
}

GetFamiliarCreatureType

GetFamiliarCreatureType function needs to be tested. This should be tested to see if it works on non-player characters. Currently it is only known that this works on playable characters.

    public FamiliarCreatureType FamiliarType
      => (FamiliarCreatureType)NWScript.GetFamiliarCreatureType(this);

This currently lives in src/main/NWN/API/Object/NwCreature.cs

Feature Request - Add SignalEvent and EventSpellCastAt to Managed

Please add SignalEvent and EventSpellCastAt to Managed. These two are commonly used togather across spell scripts and are required to notify AI about the spell being cast.

For now I'm going to use NWN.Core versions but it would be cool to see these two included in Managed at some point.

Feature request: FindObjectsOfType()

Useful to register event handlers on all objects of a given type, for instance NwStore.OnOpen and NwStore.OnClose. Both Area and Module are suitable scopes for the lookup.

Suggested (pseudo) syntax

public static IEnumerable<T> FindObjectsOfTypeIn<T>(params NwArea[] areas) where T : NwObject {}
public static IEnumerable<T> FindAllObjectsOfType<T>() where T : NwObject {} //searches NwModule

I don't know C# well enough to know if it's possible to use type T as a value within the function body, may need additional arguments.

BUG - NwItem.Create does not create the item if the target inventory is a NwPlayer

If this line is used :

NwItem contract = NwItem.Create("skillbookgeneriq", player.oid, 1, "private_contract");

No item is created.

If this line is used:

NwItem contract = NwItem.Create("skillbookgeneriq", player.oid.Location, false, "private_contract");

The item is correctly created on the ground at player Location.

The item is not a stackable item.

The item creation only seems to fail when trying to create directly an item in a NwPlayer inventory. Creating it in a placeable inventory works fine.

Possible NullReferenceException

I have observed that iterating over NwModule.Instance.Players sometimes is causing NullReferenceException.

This is an edge case and happens when player is in the character selection menu. So technically, the player is already in, however has no character instance yet.

nwn_1    | E [2021/05/06 11:39:54.866] [Anvil.Internal.CoreInteropHandler] System.NullReferenceException: Object reference not set to an instance of an object.
nwn_1    |    at NWN.API.NwCreature..ctor(CNWSCreature creature) in /home/runner/work/Anvil/Anvil/src/main/NWN/API/Object/NwCreature.cs:line 39
nwn_1    |    at NWN.API.NwModule.get_Players()+MoveNext()
nwn_1    |    at KK2.Game.Features.Autoexp.<ScheduleSAM>b__4_0()
nwn_1    |    at NWN.Services.SchedulerService.NWN.Services.IUpdateable.Update() in /home/runner/work/Anvil/Anvil/src/main/NWN/Services/Scheduler/SchedulerService.cs:line 110
nwn_1    |    at NWN.Services.LoopService.OnLoop() in /home/runner/work/Anvil/Anvil/src/main/NWN/Services/GameLoop/LoopService.cs:line 29
nwn_1    |    at Anvil.Internal.CoreInteropHandler.NWN.Core.ICoreEventHandler.OnMainLoop(UInt64 frame) in /home/runner/work/Anvil/Anvil/src/main/Anvil/Internal/CoreInteropHandler.cs:line 64 System.NullReferenceException: Object reference not set to an instance of an object.
nwn_1    |    at NWN.API.NwCreature..ctor(CNWSCreature creature) in /home/runner/work/Anvil/Anvil/src/main/NWN/API/Object/NwCreature.cs:line 39
nwn_1    |    at NWN.API.NwModule.get_Players()+MoveNext()
nwn_1    |    at KK2.Game.Features.Autoexp.<ScheduleSAM>b__4_0()
nwn_1    |    at NWN.Services.SchedulerService.NWN.Services.IUpdateable.Update() in /home/runner/work/Anvil/Anvil/src/main/NWN/Services/Scheduler/SchedulerService.cs:line 110
nwn_1    |    at NWN.Services.LoopService.OnLoop() in /home/runner/work/Anvil/Anvil/src/main/NWN/Services/GameLoop/LoopService.cs:line 29
nwn_1    |    at Anvil.Internal.CoreInteropHandler.NWN.Core.ICoreEventHandler.OnMainLoop(UInt64 frame) in /home/runner/work/Anvil/Anvil/src/main/Anvil/Internal/CoreInteropHandler.cs:line 64
nwn_1    | I [11:39:54] [NWNX_ServerLogRedirector] [ServerLogRedirector.cpp:80] (Server) *** ValidateGFFResource sent by user.```

Navigating event OnPlayerEquipItem throws NullReferenceException under unknown contexts

This example event handler

    void OnPlayerEquipHandler(ModuleEvents.OnPlayerEquipItem eventData)
    {
      if ((eventData.Item.ResRef) != "someTag")
      {
        return;
      }
      // do stuff
    }

will sometimes throw NullReferenceException. I have not been able to reproduce the error locally, but there are 418 events in our production logs since the event saw first use on June 12th. At that time we were running Anvil@c12bafe. Now we're running Anvil@19bccfd (one behind HEAD) and it has not disappeared.

I assume the null reference is from Item, but I guess it could also be the event itself. I will split the object navigation into separate lines to try to log more context with the event error and report back. In the meantime, do you have any intuition how we could get a null reference here?

public NwItem Item { get; } = NWScript.GetPCItemLastEquipped().ToNwObject<NwItem>();

This line seems pretty straight forward and I can't find any documentation on GetPCItemLastEquipped returning OBJECT_INVALID in the context of OnPlayerEquipItem, so I'm at a loss.

Additionally, I'm wondering if it would make sense to expand the error logging with the eventData from TryInvoke to provide extra context for future error reports.

private static void TryInvoke(T eventData, Action<T> callback)
{
try
{
callback?.Invoke(eventData);
}
catch (Exception e)
{
Log.Error(e);
}
}

Task Scheduler/Server Loop: Handle exceptions more gracefully

If an exception is thrown in the update loop, this will propagate up to the root CoreInteropHandler, preventing the execution of all further items in the loop.

E.g. if an exception is thrown in a repeating task from the task scheduler, this will cause the async runner to break, and any awaiting async tasks.

Bug: MonsterHitEffect.Poison

MonsterHitEffect.Poison takes IPPoisonDamage as an argument but this is not correct. It should be PoisonType instead.

Example:
MonsterHitEffect.Poison(IPPoisonDamage.Charisma1d2)

Expected:
MonsterHitEffect.Poison(PoisonType.BebilithVenom)

InvalidCastException in StoreEvents

Registering event handlers to any of the store events throws the following error on invocation

[NWN.NManager] System.InvalidCastException: Unable to cast object of type 'NWN.API.NwStore' to type 'NWN.API.NwItem'.
   at NWN.API.IntegerExtensions.ToNwObject[T](UInt32 objectId) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/API/Extensions/IntegerExtensions.cs:line 30
   at NWN.API.StringExtensions.ParseObject[T](String objectIdString) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/API/Extensions/StringExtensions.cs:line 88
   at NWNX.API.Events.StoreEvents.OnStoreRequestBuyAfter.PrepareEvent(NwObject objSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWNX/API/Events/StoreEvents.cs:line 43
   at NWN.API.Events.Event.BroadcastEvent(NwObject objSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/API/Events/Event.cs:line 10
   at NWN.Services.EventHandler.CallEvents(NwObject objSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/Services/Events/EventHandler.cs:line 64
   at NWN.Services.EventService.NWN.Services.IScriptDispatcher.ExecuteScript(String scriptName, UInt32 oidSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/Services/Events/EventService.cs:line 157
   at NWN.Services.DispatchServiceManager.OnRunScript(String script, UInt32 oidSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/Services/ScriptDispatch/DispatchServiceManager.cs:line 29
   at NWN.NManager.NWN.Core.IGameManager.OnRunScript(String script, UInt32 oidSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/NManager.cs:line 167 Unable to cast object of type 'NWN.API.NwStore' to type 'NWN.API.NwItem'.

Caused by
https://github.com/nwn-dotnet/NWN.Managed/blob/36379259226c65a3dc892999c201d08d7f80b549/src/main/NWNX/API/Events/StoreEvents.cs#L63

Add multi-type variant for NwAreaOfEffect ->GetObjectsInShape

Hi, I encountered the following runtime exception. Is this because GetObjectsInEffectArea<NwGameObject>() is not supported?
Would it be possible to add support multi-type variant for NwAreaOfEffect ->GetObjectsInShape? That would be very useful, as I would like Acid Fog do deal damage to creatures, doors and placeables.

nwn_1    | Unhandled exception. System.InvalidOperationException: Type "NWN.API.NwGameObject" does not have a mapped native object!
nwn_1    |    at NWN.API.NwObject.GetNativeObjectInfo(Type type) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/API/Object/NwObject.Create.cs:line 162
nwn_1    |    at NWN.API.NwObject.GetObjectType[T]() in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/API/Object/NwObject.Create.cs:line 144
nwn_1    |    at NWN.API.NwAreaOfEffect.GetObjectsInEffectArea[T]()+MoveNext() in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/API/Object/NwAreaOfEffect.cs:line 76
nwn_1    |    at KK2.Game.Feats.AcidFog.OnHeartbeat(CallInfo callInfo)
nwn_1    |    at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__140_1(Object state)
nwn_1    |    at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute()
nwn_1    |    at System.Threading.ThreadPoolWorkQueue.Dispatch()
        [ScriptHandler("acidfog_hb")]
        private async void OnHeartbeat(CallInfo callInfo)
        {
            AreaOfEffectEvents.OnHeartbeat onHeartbeat = new AreaOfEffectEvents.OnHeartbeat();
            NwAreaOfEffect acidFog = onHeartbeat.Effect;

            int damageAmount = 0;
            Effect vis = Effect.VisualEffect(VfxType.ImpAcidS);

            if (acidFog.Creator is null || !acidFog.Creator.IsValid)
            {
                acidFog.Destroy();
                return;
            }

            if (acidFog.Creator is NwCreature caster)
            {
                damageAmount += caster.GetSkillRank(Kk2Skill.LoreChemistry) / 2;
            }

            IEnumerable<NwGameObject> objectsInsideFog = acidFog.GetObjectsInEffectArea<NwGameObject>();

            foreach (var target in objectsInsideFog)
            {
                if (target is (NwCreature or NwPlaceable or NwDoor) && !target.PlotFlag)
                {
                    float delay = RandGen.NextFloat(0.4f, 1.2f);
                    damageAmount += RandGen.Roll(6, 2);

                    //Set Damage Effect with the modified damage
                    Effect damage = Effect.Damage(damageAmount, DamageType.Acid);
                    //Apply damage and visuals
                    await NwTask.Delay(TimeSpan.FromSeconds(delay));
                    target.ApplyEffect(EffectDuration.Instant, vis);
                    target.ApplyEffect(EffectDuration.Instant, damage);
                }
            }
        }

Feature request - Make NWNX events sub/unsubscribable per object

It would be great to have the same of functionnality as:

void NWNX_Events_ToggleDispatchListMode(string sEvent, string sScript, int bEnable);
void NWNX_Events_AddObjectToDispatchList(string sEvent, string sScript, object oObject);
void NWNX_Events_RemoveObjectFromDispatchList(string sEvent, string sScript, object oObject);

in managed, in order to trigger NWNX events only for subscribed objets.

If anyone could have a look. Thanks! ^^

[REQUEST] - Base game function - EffectRunScript()

I could not find that function in Anvil.

Would it be possible to add it?

Also, I don't know if it's possible, but it would be awesome if we could have the possibility to link that Effect to a C# event directly instead of going through ScriptHandler.

Resource Manager

Stories

  • As a plugin developer, I want to be able to bundle standard game resources (item blueprints, areas, etc) with my plugin.
  • As a plugin developer @urothis, I want the option to be able to create areas from a binary blob, rather than manually creating the file in the development directory.

The resource manager should provide an ephemeral resource directory for temporary resources created using managed APIs, that is cleared out every restart.

Plugins should be able to include a "resources" folder that acts an additional directory visible by the internal resource manager, that can be used to reliably load resources specific for that plugin.

One open question is if plugins can specify their own resource priority, and how to handle resource conflicts. Currently this order is dependent on the plugin loading order, which is currently undefined.

  • Temp resource directory
  • Plugin resource directories
  • Conflicting resource management?

Native Events (Replacement for NWNX events)

Please post which events you are currently using so we can focus on migrating them first :)

The full list:

  • AssociateEvents
  • BarterEvents
  • CalenderEvents
  • ClientEvents
  • CombatEvents
  • DebugEvents
  • DMActionEvents
  • EffectEvents
  • ExamineEvents
  • FactionEvents
  • FeatEvents
  • HealingEvents
  • InputEvents
  • InventoryEvents
  • ItemEvents
  • JournalEvents
  • LevelEvents
  • MapEvents
  • MaterialChangeEvents
  • ObjectEvents
  • PartyEvents
  • PlymorphEvents
  • PVPEvents
  • QuickbarEvents
  • QuickChatEvents
  • ResourceEvents
  • SkillEvents
  • SpellEvents
  • StealthEvents
  • StoreEvents
  • TimingBarEvents
  • TrapEvents
  • UUIDEvents

NwPlayer: Remove NwCreature Inheritance

In some events, we have some nasty workarounds to determine if a creature is a player or not. This is from a bad inheritance structure that assumed players were a subtype of creatures.

To fix this, NwPlayer would become a standalone class with two new child properties:

  • ControlledCreature
  • PlayerCreature

And NwCreature would get a PlayerPossessor property, which would be null for standard NPCs.

Administration.GameOptions' is obsolete: 'Use NwServer.ServerInfo.PlayOptions instead

I updated to 8193.20.43-dev.4. Console suggested this to me...
Administration.GameOptions' is obsolete: 'Use NwServer.ServerInfo.PlayOptions instead.' [Services]
Link to code
So I changed...
Administration.GameOptions.RestoreSpellUses = true;
...to
NwServer.Instance.ServerInfo.PlayOptions.RestoreSpellUses = true;
When I launch I now get this error here

E [2021/02/23 04:51:02.904] [NWN.NManager] System.TypeLoadException: Could not load type 'NWN.API.NwServer' from assembly 'NWN.Managed, Version=8193.20.42.0, Culture=neutral, PublicKeyToken=null'.
   at Services.Module.Load.OnLoad(OnModuleLoad eventInfo)
   at NWN.API.Events.NativeEvent`2.InvokeCallbacks() in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/API/Events/Native/NativeEvent.cs:line 41
   at NWN.API.Events.NativeEvent`2.ProcessEvent() in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/API/Events/Native/NativeEvent.cs:line 35
   at NWN.API.Events.NativeEvent`2.NWN.API.Events.IEvent.Broadcast(NwObject objSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/API/Events/Native/NativeEvent.cs:line 27
   at NWN.Services.EventHandler.CallEvents(NwObject objSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/Services/Events/EventHandler.cs:line 42
   at NWN.Services.NativeEventService.NWN.Services.IScriptDispatcher.ExecuteScript(String scriptName, UInt32 oidSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/Services/Events/NativeEventService.cs:line 75
   at NWN.Services.DispatchServiceManager.OnRunScript(String script, UInt32 oidSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/Services/ScriptDispatch/DispatchServiceManager.cs:line 29
   at NWN.NManager.NWN.Core.IGameManager.OnRunScript(String script, UInt32 oidSelf) in /home/runner/work/NWN.Managed/NWN.Managed/src/main/NWN/NManager.cs:line 181 Could not load type 'NWN.API.NwServer' from assembly 'NWN.Managed, Version=8193.20.42.0, Culture=neutral, PublicKeyToken=null'.

Objects should be mockable

As a developer I'd like to unit test my code. Most of this code can be expected to operate on instances of NwObject and derivatives, and as such it would be highly useful to mock out instances of these types. Mocking in C# is mainly achieved through the use of testing libraries such as Moq or NSubstitute, and as far as I understand both libraries will only work properly with interfaces or with virtual members of classes. There is a third alternative with the .NET library Fakes by Microsoft, which will not be considered due to being paywalled behind Visual Studio Enterprise.

Since there are currently no interfaces for any objects I have to go through constructors, but there is no publicly available constructor for NwObject. Instancing of NwObject goes through https://github.com/nwn-dotnet/NWN.Managed/blob/526986ab0cb9ac230b580463e63a6389ef07a3e4/src/main/NWN/API/Object/NwObject.Create.cs#L90 of which the only publicly accessible function of interest is the deserializer, as all other functions that call the creator function are either internal or searches the running module which we do not have from the context of a unit test
https://github.com/nwn-dotnet/NWN.Managed/blob/526986ab0cb9ac230b580463e63a6389ef07a3e4/src/main/NWN/API/Object/NwObject.Create.cs#L20-L23

Given a valid deserializable string, the deserializer looks like it should return an instance of the desired object, but in terms of the testing libraries' documentation this approach is unintuitive. It is also impractical seeing as the members of NwObject are not virtual and will be difficult to mock, if not impossible.

Furthermore, the NWNX plugin functions extend the objects with static functions through e.g. NWNX.API.Player, which I've had to create wrapper classes for (Adapter Pattern) on in order to mock, as suggested in this SO thread. This particular example may be irrelevant with the new native approach to NWNX, but I bring it up to highlight that static functions are problematic.

Going back to the documentation of NSubstitute, interfaces seem to be the recommended approach, e.g. INwObject, INwPlayer, INwStore etc. Would there be any unacceptable downsides to this approach, and if so are there any alternatives for making NWN.Managed more approachable from a unit testing perspective?

NWScript Functions

The following NWScript functions have yet to be mapped to an API:

Type "NWN.API.NwGameObject" does not have a mapped native object

IEnumerable<NwGameObject> objectsInShape = spell.TargetLocation.GetObjectsInShape<NwGameObject>(Shape.Cube, RadiusSize.HUGE, false);
Effect damage = Effect.Damage(1, DamageType.Bludgeoning);

foreach (var target in objectsInShape)
{
    if (target is (NwCreature or NwPlaceable or NwDoor) && !target.PlotFlag)
    {
       target.ApplyEffect(EffectDuration.Instant, damage));
    }
}

I get the following exception with the code above:

   at NWN.API.NwObject.GetNativeObjectInfo(Type type)
   at NWN.API.NwObject.GetObjectType[T]()
   at NWN.API.Location.GetObjectsInShape[T](Shape shape, Single size, Boolean losCheck, Vector3 origin)+MoveNext()
   at KK2.Game.Feats.HurlRock.EventHandler(OnSpellCast spell)
   at NWN.API.Events.ScriptEvent`1.InvokeCallbacks()
   at NWN.API.Events.ScriptEvent`1.ProcessEvent()
   at NWN.API.Events.ScriptEvent`1.NWN.API.Events.IEvent.Broadcast(NwObject objSelf)
   at NWN.Services.ScriptEventService.NWN.Services.IScriptDispatcher.ExecuteScript(String scriptName, UInt32 oidSelf)
   at NWN.Services.DispatchServiceManager.OnRunScript(String script, UInt32 oidSelf)
   at NWN.NManager.NWN.Core.IGameManager.OnRunScript(String script, UInt32 oidSelf) Type "NWN.API.NwGameObject" does not have a mapped native object!```

NwObject.UUID: Improve UUID collision behaviour

Currently, the NwObject.UUID property tries to guarantee a UUID will be returned, without notifying if a hash collision has occurred (e.g. from copying an object), and without offering an option on which UUID should be refreshed.

There probably should be a way to control this behaviour.

Bug: AreaOfEffectEvents - InvalidCastException

private void OnEffectEnter(AreaOfEffectEvents.OnEnter onEnter)
{
    NwAreaOfEffect acidFog = onEnter.Effect;
}

I'm getting this error when trying to use AreaOfEffectEvents.

   at NWN.API.Events.NativeEvent`2.NWN.API.Events.IEvent.Broadcast(NwObject objSelf)
   at NWN.Services.ScriptEventService.NWN.Services.IScriptDispatcher.ExecuteScript(String scriptName, UInt32 oidSelf)
   at NWN.Services.DispatchServiceManager.OnRunScript(String script, UInt32 oidSelf)
   at NWN.NManager.NWN.Core.IGameManager.OnRunScript(String script, UInt32 oidSelf) Unable to cast object of type 'NWN.API.NwObject' to type 'NWN.API.NwAreaOfEffect'.```

AddJournalQuestEntry

Source Code
Using

        public static void ModuleClientEnterJournal(ModuleEvents.OnClientEnter enter)
        {
            enter.Player.AddJournalQuestEntry("test", 1, false);
        }

With this set in toolset
image
image
Produces this result inside the game.
image
I've done journal entries in toolset before with nwscript. Almost same syntax used in both functions. Basically I'm unsure if I'm doing something wrong or there is a bug in managed with this function?

ExamineEvents: System.FormatException

Recently encountered System.FormatException during ExamineEvents test.

using NWN.API;
using NWNX.API.Events;
using NWN.Services;

namespace KK2.Events.Examine 
{

  [ServiceBinding(typeof(ExamineBefore))]
  public class ExamineBefore
  {
    public ExamineBefore(EventService eventService)
    {
        eventService.SubscribeAll<ExamineEvents.OnExamineObjectBefore>(EventOnExamineBefore);
    }

    private void EventOnExamineBefore(ExamineEvents.OnExamineObjectBefore eventInfo)
    {
        NwPlayer pc = eventInfo.Examiner;
        NwObject obj = eventInfo.Examinee;

        pc.SendServerMessage($"Examined object: {obj.Name}");
    }
  }  
}
E [11:08:44] [NWNX_Events] [Events.cpp:160] Tried to access event data with invalid tag.
E [2020/11/06 11:08:44.761] [NWN.NManager] System.FormatException: Input string was not in a correct format.
   at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
   at System.Number.ParseInt32(ReadOnlySpan`1 value, NumberStyles styles, NumberFormatInfo info)
   at System.Int32.Parse(String s)
   at NWN.API.StringExtensions.ParseInt(String intString)
   at NWN.API.StringExtensions.ParseIntBool(String intBoolString)
   at NWNX.API.Events.ExamineEvents.OnExamineObjectBefore.PrepareEvent(NwObject objSelf)
   at NWN.API.Events.Event.BroadcastEvent(NwObject objSelf)
   at NWN.Services.EventHandler.CallEvents(NwObject objSelf)
   at NWN.Services.EventService.NWN.Services.IScriptDispatcher.ExecuteScript(String scriptName, UInt32 oidSelf)
   at NWN.Services.DispatchServiceManager.OnRunScript(String script, UInt32 oidSelf)
   at NWN.NManager.NWN.Core.IGameManager.OnRunScript(String script, UInt32 oidSelf) Input string was not in a correct format.

Get Entering/Exiting object for AreaOfEffectEvents

Would it be possible to add entering/exiting object for AreaOfEffectEvents? Currently I need to get it with NWN.Core.

        [ScriptHandler("acidfog_exit")]
        private void OnExit(CallInfo callInfo)
        {
            AreaOfEffectEvents.OnExit onExit = new AreaOfEffectEvents.OnExit();
            NwGameObject target = GetExitingObject().ToNwObjectSafe<NwGameObject>();

            if (target is NwCreature creature)
            {
                foreach (Effect eff in creature.ActiveEffects)
                {
                    if (eff.Tag == "KK2_ACID_FOG")
                    {
                        target.RemoveEffect(eff);
                    }
                }
            }
        }

Migrate existing NWNX extension methods

  • Creature.GetMemorisedSpellCountByLevel
  • Creature.ClearMemorisedSpell
  • Creature.GetClassByLevel
  • Dialog.*
  • Item.SetWeight
  • Object.GetPersistentString
  • Object.SetPersistentString
  • Object.GetIsStatic
  • Object.SetIsStatic
  • Object.Serialize
  • Player.*
  • Util.*
  • Weapon.*

nwserver-crash-1612311580

I am crashing on NWN.Managed 8193.20.22 and now NWN.Managed 8193.20.23. Last version I can launch from is .21. I was able to bump up to 19, 20, 21 just fine from .13. Only changes between the two I did is edit the csproj/dockerfile to change version.

=== Crash
This is a report file from a crash you have experienced in NWN:EE
Please post a bug report for NWN at:

  https://beamdog.atlassian.net/servicedesk/

and attach this file. These files can provide us with extra information about your crash.

If you can describe what happened before this crash, or provide
instructions on how to reproduce this crash, it will help us find
and fix the problem you experienced. Thank you.

=== Props
os = linux
target = nwserver
time = 1612311580
exception = 6
binaryChecksum = md5=e84e8aa8f107a05a76ce32a65a4c4590
g_sBuildNumber = 8193
g_sBuildRevision = 20
g_sVersionNumber = 82
g_sGitCommit = d5bb8271
&GenericCrashHandler = 0x55db26190a00
=== Backtrace
./nwserver-linux(+0x4e6936)[0x55db26191936]
./nwserver-linux(+0x4e5f33)[0x55db26190f33]
./nwserver-linux(+0x4e69d1)[0x55db261919d1]
/nwn/nwnx/NWNX_Core.so(nwnx_signal_handler+0xc3)[0x7f8b22172af3]
/lib/x86_64-linux-gnu/libc.so.6(+0x37840)[0x7f8b21bd1840]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x10b)[0x7f8b21bd17bb]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x121)[0x7f8b21bbc535]
/nwn/nwnx/NWNX_Core.so(_ZN7NWNXLib3Log13InternalTraceENS0_7Channel4EnumES2_PKc+0x1dbd)[0x7f8b221a124d]
/nwn/nwnx//NWNX_DotNET.so(_ZN7NWNXLib3Log5TraceIJRiEEEvNS0_7Channel4EnumEPKcS6_iS6_DpOT_+0x51c)[0x7f8b1b248f5c]
/nwn/nwnx//NWNX_DotNET.so(_ZN6DotNET6DotNETC1EPN7NWNXLib8Services16ProxyServiceListE+0x951)[0x7f8b1b241f31]
/nwn/nwnx//NWNX_DotNET.so(PluginLoad+0x22)[0x7f8b1b242692]
/nwn/nwnx/NWNX_Core.so(_ZN7NWNXLib8Services7Plugins10LoadPluginERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS0_16ProxyServiceListE+0x1c6)[0x7f8b2221c596]
/nwn/nwnx/NWNX_Core.so(_ZN4Core8NWNXCore19InitialSetupPluginsEv+0x4b4)[0x7f8b221763e4]
/nwn/nwnx/NWNX_Core.so(_ZN4Core8NWNXCore19CreateServerHandlerEP11CAppManager+0x754)[0x7f8b221782a4]
./nwserver-linux(+0xda83c)[0x55db25d8583c]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb)[0x7f8b21bbe09b]
./nwserver-linux(_start+0x2a)[0x55db25d89e8a]
=== File: /proc/self/status
Name:	nwserver-linux
Umask:	0022
State:	R (running)
Tgid:	1
Ngid:	0
Pid:	1
PPid:	0
TracerPid:	0
Uid:	0	0	0	0
Gid:	0	0	0	0
FDSize:	256
Groups:	 
NStgid:	1
NSpid:	1
NSpgid:	1
NSsid:	1
VmPeak:	 3440628 kB
VmSize:	 3375092 kB
VmLck:	       0 kB
VmPin:	       0 kB
VmHWM:	   42140 kB
VmRSS:	   42140 kB
RssAnon:	    9804 kB
RssFile:	   32336 kB
RssShmem:	       0 kB
VmData:	  262352 kB
VmStk:	     152 kB
VmExe:	    9912 kB
VmLib:	   27508 kB
VmPTE:	     328 kB
VmSwap:	       0 kB
HugetlbPages:	       0 kB
CoreDumping:	0
Threads:	22
SigQ:	1/50919
SigPnd:	0000000000000000
ShdPnd:	0000000000000000
SigBlk:	0000000000000020
SigIgn:	0000000000001000
SigCgt:	00000003800044fe
CapInh:	00000000a80425fb
CapPrm:	00000000a80425fb
CapEff:	00000000a80425fb
CapBnd:	00000000a80425fb
CapAmb:	0000000000000000
NoNewPrivs:	0
Seccomp:	2
Speculation_Store_Bypass:	thread force mitigated
Cpus_allowed:	fff
Cpus_allowed_list:	0-11
Mems_allowed:	1
Mems_allowed_list:	0
voluntary_ctxt_switches:	201
nonvoluntary_ctxt_switches:	13
=== File: /proc/self/maps
55db25cab000-55db25d8a000 r-xp 00000000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25d8a000-55db25d8b000 r-xp 000df000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25d8b000-55db25ea6000 r-xp 000e0000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25ea6000-55db25ea7000 r-xp 001fb000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25ea7000-55db25ec6000 r-xp 001fc000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25ec6000-55db25ec7000 r-xp 0021b000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25ec7000-55db25f0c000 r-xp 0021c000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f0c000-55db25f0d000 r-xp 00261000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f0d000-55db25f2d000 r-xp 00262000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f2d000-55db25f2e000 r-xp 00282000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f2e000-55db25f34000 r-xp 00283000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f34000-55db25f35000 r-xp 00289000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f35000-55db25f4d000 r-xp 0028a000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f4d000-55db25f4e000 r-xp 002a2000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f4e000-55db25f60000 r-xp 002a3000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f60000-55db25f61000 r-xp 002b5000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f61000-55db25f75000 r-xp 002b6000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f75000-55db25f76000 r-xp 002ca000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f76000-55db25f8f000 r-xp 002cb000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f8f000-55db25f90000 r-xp 002e4000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f90000-55db25f9c000 r-xp 002e5000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f9c000-55db25f9d000 r-xp 002f1000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25f9d000-55db25fa0000 r-xp 002f2000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25fa0000-55db25fa1000 r-xp 002f5000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25fa1000-55db25fb6000 r-xp 002f6000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25fb6000-55db25fb7000 r-xp 0030b000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25fb7000-55db25fdc000 r-xp 0030c000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25fdc000-55db25fdd000 r-xp 00331000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25fdd000-55db25fee000 r-xp 00332000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25fee000-55db25ff1000 r-xp 00343000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25ff1000-55db25ff2000 r-xp 00346000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25ff2000-55db25ff3000 r-xp 00347000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db25ff3000-55db26027000 r-xp 00348000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db26027000-55db26028000 r-xp 0037c000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db26028000-55db26034000 r-xp 0037d000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db26034000-55db26035000 r-xp 00389000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db26035000-55db2603a000 r-xp 0038a000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db2603a000-55db2603b000 r-xp 0038f000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db2603b000-55db26052000 r-xp 00390000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db26052000-55db26053000 r-xp 003a7000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db26053000-55db2647d000 r-xp 003a8000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db2647d000-55db2647e000 r-xp 007d2000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db2647e000-55db26659000 r-xp 007d3000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db26659000-55db26677000 r-xp 00000000 00:00 0 
55db26859000-55db26896000 r--p 009ae000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db26896000-55db268a2000 rw-p 009eb000 08:20 29807                      /nwn/data/bin/linux-x86/nwserver-linux
55db268a2000-55db2c5d1000 rw-p 00000000 00:00 0 
55db2c957000-55db2ce7a000 rw-p 00000000 00:00 0                          [heap]
7f8a54000000-7f8a54021000 rw-p 00000000 00:00 0 
7f8a54021000-7f8a58000000 ---p 00000000 00:00 0 
7f8a5c000000-7f8a5c021000 rw-p 00000000 00:00 0 
7f8a5c021000-7f8a60000000 ---p 00000000 00:00 0 
7f8a60000000-7f8a60021000 rw-p 00000000 00:00 0 
7f8a60021000-7f8a64000000 ---p 00000000 00:00 0 
7f8a64000000-7f8a64021000 rw-p 00000000 00:00 0 
7f8a64021000-7f8a68000000 ---p 00000000 00:00 0 
7f8a6a60e000-7f8a6a60f000 r--p 00000000 08:20 489434                     /usr/lib/x86_64-linux-gnu/libicudata.so.63.1
7f8a6a60f000-7f8a6a610000 r-xp 00001000 08:20 489434                     /usr/lib/x86_64-linux-gnu/libicudata.so.63.1
7f8a6a610000-7f8a6bffc000 r--p 00002000 08:20 489434                     /usr/lib/x86_64-linux-gnu/libicudata.so.63.1
7f8a6bffc000-7f8a6bffd000 r--p 019ed000 08:20 489434                     /usr/lib/x86_64-linux-gnu/libicudata.so.63.1
7f8a6bffd000-7f8a6bffe000 rw-p 019ee000 08:20 489434                     /usr/lib/x86_64-linux-gnu/libicudata.so.63.1
7f8a6bffe000-7f8a6c020000 rw-p 00000000 00:00 0 
7f8a6c020000-7f8a7bffe000 ---p 00000000 00:00 0 
7f8a7bffe000-7f8a7c010000 rw-p 00000000 00:00 0 
7f8a7c010000-7f8a83ffe000 ---p 00000000 00:00 0 
7f8a83ffe000-7f8a84000000 rw-p 00000000 00:00 0 
7f8a84000000-7f8a8c000000 ---p 00000000 00:00 0 
7f8a8c000000-7f8a8c021000 rw-p 00000000 00:00 0 
7f8a8c021000-7f8a90000000 ---p 00000000 00:00 0 
7f8a90000000-7f8a90021000 rw-p 00000000 00:00 0 
7f8a90021000-7f8a94000000 ---p 00000000 00:00 0 
7f8a94000000-7f8a94021000 rw-p 00000000 00:00 0 
7f8a94021000-7f8a98000000 ---p 00000000 00:00 0 
7f8a9894d000-7f8a9894e000 ---p 00000000 00:00 0 
7f8a9894e000-7f8a9898e000 rwxp 00000000 00:00 0 
7f8a9898e000-7f8a9898f000 ---p 00000000 00:00 0 
7f8a9898f000-7f8a9918f000 rwxp 00000000 00:00 0 
7f8a9918f000-7f8a99258000 r--s 00000000 08:20 1942644                    /nwn/Dotnet/NLog.dll
7f8a99258000-7f8a992c4000 r--s 00000000 08:20 1942645                    /nwn/Dotnet/NWN.Core.dll
7f8a992c4000-7f8a99340000 r--s 00000000 08:20 1942647                    /nwn/Dotnet/NWN.Managed.dll
7f8a99340000-7f8a99352000 r-xp 00000000 08:20 490217                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libSystem.Native.so
7f8a99352000-7f8a99551000 ---p 00012000 08:20 490217                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libSystem.Native.so
7f8a99551000-7f8a99552000 r--p 00011000 08:20 490217                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libSystem.Native.so
7f8a99552000-7f8a99553000 rw-p 00012000 08:20 490217                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libSystem.Native.so
7f8a99553000-7f8a99630000 r--p 00000000 08:20 489436                     /usr/lib/x86_64-linux-gnu/libicui18n.so.63.1
7f8a99630000-7f8a9979a000 r-xp 000dd000 08:20 489436                     /usr/lib/x86_64-linux-gnu/libicui18n.so.63.1
7f8a9979a000-7f8a9981b000 r--p 00247000 08:20 489436                     /usr/lib/x86_64-linux-gnu/libicui18n.so.63.1
7f8a9981b000-7f8a9981c000 ---p 002c8000 08:20 489436                     /usr/lib/x86_64-linux-gnu/libicui18n.so.63.1
7f8a9981c000-7f8a9982c000 r--p 002c8000 08:20 489436                     /usr/lib/x86_64-linux-gnu/libicui18n.so.63.1
7f8a9982c000-7f8a9982d000 rw-p 002d8000 08:20 489436                     /usr/lib/x86_64-linux-gnu/libicui18n.so.63.1
7f8a9982d000-7f8a9982e000 rw-p 00000000 00:00 0 
7f8a9982e000-7f8a99b22000 r-xp 00000000 08:20 490222                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libclrjit.so
7f8a99b22000-7f8a99b23000 ---p 002f4000 08:20 490222                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libclrjit.so
7f8a99b23000-7f8a99b35000 r--p 002f4000 08:20 490222                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libclrjit.so
7f8a99b35000-7f8a99b36000 rw-p 00306000 08:20 490222                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libclrjit.so
7f8a99b36000-7f8a99b5b000 rw-p 00000000 00:00 0 
7f8a99b5b000-7f8a99b5c000 ---p 00000000 00:00 0 
7f8a99b5c000-7f8a9a35c000 rwxp 00000000 00:00 0 
7f8a9a35c000-7f8a9a3fd000 rw-p 00000000 00:00 0 
7f8a9a3fd000-7f8a9a7fd000 ---p 00000000 00:00 0 
7f8a9a7fd000-7f8a9a7fe000 ---p 00000000 00:00 0 
7f8a9a7fe000-7f8a9affe000 rwxp 00000000 00:00 0 
7f8a9affe000-7f8a9afff000 ---p 00000000 00:00 0 
7f8a9afff000-7f8a9b7ff000 rwxp 00000000 00:00 0 
7f8a9b7ff000-7f8a9b800000 ---p 00000000 00:00 0 
7f8a9b800000-7f8a9c000000 rwxp 00000000 00:00 0 
7f8a9c000000-7f8a9c021000 rw-p 00000000 00:00 0 
7f8a9c021000-7f8aa0000000 ---p 00000000 00:00 0 
7f8aa001b000-7f8aa001c000 ---p 00000000 00:00 0 
7f8aa001c000-7f8aa001f000 rw-p 00000000 00:00 0 
7f8aa001f000-7f8aa0020000 ---p 00000000 00:00 0 
7f8aa0020000-7f8aa0023000 rw-p 00000000 00:00 0 
7f8aa0023000-7f8aa0085000 r--p 00000000 08:20 489444                     /usr/lib/x86_64-linux-gnu/libicuuc.so.63.1
7f8aa0085000-7f8aa0159000 r-xp 00062000 08:20 489444                     /usr/lib/x86_64-linux-gnu/libicuuc.so.63.1
7f8aa0159000-7f8aa01dd000 r--p 00136000 08:20 489444                     /usr/lib/x86_64-linux-gnu/libicuuc.so.63.1
7f8aa01dd000-7f8aa01f0000 r--p 001b9000 08:20 489444                     /usr/lib/x86_64-linux-gnu/libicuuc.so.63.1
7f8aa01f0000-7f8aa01f1000 rw-p 001cc000 08:20 489444                     /usr/lib/x86_64-linux-gnu/libicuuc.so.63.1
7f8aa01f1000-7f8aa01f2000 rw-p 00000000 00:00 0 
7f8aa01f4000-7f8aa01f6000 rw-p 00000000 00:00 0 
7f8aa01f6000-7f8aa01f7000 ---p 00000000 00:00 0 
7f8aa01f7000-7f8aa01fa000 rw-p 00000000 00:00 0 
7f8aa01fa000-7f8aa01fb000 ---p 00000000 00:00 0 
7f8aa01fb000-7f8aa023b000 rwxp 00000000 00:00 0 
7f8aa023b000-7f8aa024b000 rw-p 00000000 00:00 0 
7f8aa024b000-7f8aa024c000 ---p 00000000 00:00 0 
7f8aa024c000-7f8aa024f000 rw-p 00000000 00:00 0 
7f8aa024f000-7f8aa0250000 ---p 00000000 00:00 0 
7f8aa0250000-7f8aa0253000 rw-p 00000000 00:00 0 
7f8aa0253000-7f8aa0254000 ---p 00000000 00:00 0 
7f8aa0254000-7f8aa0257000 rw-p 00000000 00:00 0 
7f8aa0257000-7f8aa0260000 ---p 00000000 00:00 0 
7f8aa0260000-7f8aa0262000 rw-p 00000000 00:00 0 
7f8aa0262000-7f8aa0277000 ---p 00000000 00:00 0 
7f8aa0277000-7f8aa0278000 ---p 00000000 00:00 0 
7f8aa0278000-7f8aa027b000 rw-p 00000000 00:00 0 
7f8aa027b000-7f8aa027c000 ---p 00000000 00:00 0 
7f8aa027c000-7f8aa0284000 rw-p 00000000 00:00 0 
7f8aa0284000-7f8aa0285000 ---p 00000000 00:00 0 
7f8aa0285000-7f8aa0288000 rw-p 00000000 00:00 0 
7f8aa0288000-7f8aa0289000 ---p 00000000 00:00 0 
7f8aa0289000-7f8aa0a89000 rwxp 00000000 00:00 0 
7f8aa0a89000-7f8aa0ab0000 ---p 00000000 00:00 0 
7f8aa0ab0000-7f8aa0ab1000 rw-p 00000000 00:00 0 
7f8aa0ab1000-7f8aa0ab3000 ---p 00000000 00:00 0 
7f8aa0ab3000-7f8aa0ab4000 rwxp 00000000 00:00 0 
7f8aa0ab4000-7f8aa0abd000 rw-p 00000000 00:00 0 
7f8aa0abd000-7f8aa0abe000 rwxp 00000000 00:00 0 
7f8aa0abe000-7f8aa0ac0000 ---p 00000000 00:00 0 
7f8aa0ac0000-7f8aa0ac1000 rw-p 00000000 00:00 0 
7f8aa0ac1000-7f8aa0acf000 ---p 00000000 00:00 0 
7f8aa0acf000-7f8aa0ad0000 rwxp 00000000 00:00 0 
7f8aa0ad0000-7f8aa0ad3000 ---p 00000000 00:00 0 
7f8aa0ad3000-7f8aa0ad4000 rwxp 00000000 00:00 0 
7f8aa0ad4000-7f8aa0b04000 ---p 00000000 00:00 0 
7f8aa0b04000-7f8aa0b05000 rwxp 00000000 00:00 0 
7f8aa0b05000-7f8aa0b5b000 ---p 00000000 00:00 0 
7f8aa0b5b000-7f8aa0b5c000 rwxp 00000000 00:00 0 
7f8aa0b5c000-7f8aa0b60000 ---p 00000000 00:00 0 
7f8aa0b60000-7f8aa0b61000 r--p 00000000 08:20 490131                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Private.CoreLib.dll
7f8aa0b61000-7f8aa0b70000 ---p 00000000 00:00 0 
7f8aa0b70000-7f8aa0b93000 rw-p 00000000 08:20 490131                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Private.CoreLib.dll
7f8aa0b93000-7f8aa0ba2000 ---p 00000000 00:00 0 
7f8aa0ba2000-7f8aa1452000 r-xp 00022000 08:20 490131                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Private.CoreLib.dll
7f8aa1452000-7f8aa1461000 ---p 00000000 00:00 0 
7f8aa1461000-7f8aa1468000 r--p 008d1000 08:20 490131                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Private.CoreLib.dll
7f8aa1468000-7f8aa1470000 ---p 00000000 00:00 0 
7f8aa1470000-7f8aa14c0000 rw-p 00000000 00:00 0 
7f8aa14c0000-7f8aa14d0000 rw-p 00000000 00:00 0 
7f8aa14d0000-7f8aa14f0000 rw-p 00000000 00:00 0 
7f8aa14f0000-7f8aa151a000 rwxp 00000000 00:00 0 
7f8aa151a000-7f8aa1570000 ---p 00000000 00:00 0 
7f8aa1570000-7f8aa1580000 rw-p 00000000 00:00 0 
7f8aa1580000-7f8aa15c0000 rw-p 00000000 00:00 0 
7f8aa15c0000-7f8aa15c4000 rw-p 00000000 00:00 0 
7f8aa15c4000-7f8aa15d0000 ---p 00000000 00:00 0 
7f8aa15d0000-7f8aa15e0000 rw-p 00000000 00:00 0 
7f8aa15e0000-7f8aa160b000 rw-p 00000000 00:00 0 
7f8aa160b000-7f8aa1610000 ---p 00000000 00:00 0 
7f8aa1610000-7f8aa1611000 r--p 00000000 08:20 490162                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.dll
7f8aa1611000-7f8aa1620000 ---p 00000000 00:00 0 
7f8aa1620000-7f8aa1621000 rw-p 00000000 08:20 490162                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.dll
7f8aa1621000-7f8aa1630000 ---p 00000000 00:00 0 
7f8aa1630000-7f8aa1639000 r-xp 00000000 08:20 490162                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.dll
7f8aa1639000-7f8aa1650000 ---p 00000000 00:00 0 
7f8aa1650000-7f8aa166d000 rw-p 00000000 00:00 0 
7f8aa166d000-7f8aa1670000 ---p 00000000 00:00 0 
7f8aa1670000-7f8aa1671000 r--p 00000000 08:20 490060                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Collections.dll
7f8aa1671000-7f8aa1680000 ---p 00000000 00:00 0 
7f8aa1680000-7f8aa1682000 rw-p 00000000 08:20 490060                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Collections.dll
7f8aa1682000-7f8aa1692000 ---p 00000000 00:00 0 
7f8aa1692000-7f8aa16d4000 r-xp 00002000 08:20 490060                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Collections.dll
7f8aa16d4000-7f8aa16e3000 ---p 00000000 00:00 0 
7f8aa16e3000-7f8aa16e5000 r--p 00043000 08:20 490060                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Collections.dll
7f8aa16e5000-7f8aa16f0000 ---p 00000000 00:00 0 
7f8aa16f0000-7f8aa1700000 rw-p 00000000 00:00 0 
7f8aa1700000-7f8aa171f000 rw-p 00000000 00:00 0 
7f8aa171f000-7f8aa1720000 ---p 00000000 00:00 0 
7f8aa1720000-7f8aa1721000 r--p 00000000 08:20 490232                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/netstandard.dll
7f8aa1721000-7f8aa1730000 ---p 00000000 00:00 0 
7f8aa1730000-7f8aa1731000 rw-p 00000000 08:20 490232                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/netstandard.dll
7f8aa1731000-7f8aa1740000 ---p 00000000 00:00 0 
7f8aa1740000-7f8aa175a000 r-xp 00000000 08:20 490232                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/netstandard.dll
7f8aa175a000-7f8aa1770000 ---p 00000000 00:00 0 
7f8aa1770000-7f8aa17a0000 rw-p 00000000 00:00 0 
7f8aa17a0000-7f8aa17b0000 rw-p 00000000 00:00 0 
7f8aa17b0000-7f8aa17b1000 r--p 00000000 08:20 490193                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Threading.dll
7f8aa17b1000-7f8aa17c0000 ---p 00000000 00:00 0 
7f8aa17c0000-7f8aa17c1000 rw-p 00000000 08:20 490193                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Threading.dll
7f8aa17c1000-7f8aa17d0000 ---p 00000000 00:00 0 
7f8aa17d0000-7f8aa17e1000 r-xp 00000000 08:20 490193                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Threading.dll
7f8aa17e1000-7f8aa17f0000 ---p 00000000 00:00 0 
7f8aa17f0000-7f8aa17f1000 r--p 00010000 08:20 490193                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Threading.dll
7f8aa17f1000-7f8aa1800000 ---p 00000000 00:00 0 
7f8aa1800000-7f8aa1801000 r--p 00000000 08:20 490097                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.IO.FileSystem.Watcher.dll
7f8aa1801000-7f8aa1810000 ---p 00000000 00:00 0 
7f8aa1810000-7f8aa1811000 rw-p 00000000 08:20 490097                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.IO.FileSystem.Watcher.dll
7f8aa1811000-7f8aa1821000 ---p 00000000 00:00 0 
7f8aa1821000-7f8aa1835000 r-xp 00001000 08:20 490097                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.IO.FileSystem.Watcher.dll
7f8aa1835000-7f8aa1844000 ---p 00000000 00:00 0 
7f8aa1844000-7f8aa1845000 r--p 00014000 08:20 490097                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.IO.FileSystem.Watcher.dll
7f8aa1845000-7f8aa1850000 ---p 00000000 00:00 0 
7f8aa1850000-7f8aa1851000 r--p 00000000 08:20 490078                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Diagnostics.StackTrace.dll
7f8aa1851000-7f8aa1860000 ---p 00000000 00:00 0 
7f8aa1860000-7f8aa1861000 rw-p 00000000 08:20 490078                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Diagnostics.StackTrace.dll
7f8aa1861000-7f8aa1870000 ---p 00000000 00:00 0 
7f8aa1870000-7f8aa1877000 r-xp 00000000 08:20 490078                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Diagnostics.StackTrace.dll
7f8aa1877000-7f8aa1886000 ---p 00000000 00:00 0 
7f8aa1886000-7f8aa1887000 r--p 00006000 08:20 490078                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Diagnostics.StackTrace.dll
7f8aa1887000-7f8aa1890000 ---p 00000000 00:00 0 
7f8aa1890000-7f8aa18a0000 rw-p 00000000 00:00 0 
7f8aa18a0000-7f8aa18b0000 rw-p 00000000 00:00 0 
7f8aa18b0000-7f8aa18b1000 r--p 00000000 08:20 490152                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.InteropServices.RuntimeInformation.dll
7f8aa18b1000-7f8aa18c0000 ---p 00000000 00:00 0 
7f8aa18c0000-7f8aa18c1000 rw-p 00000000 08:20 490152                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.InteropServices.RuntimeInformation.dll
7f8aa18c1000-7f8aa18d0000 ---p 00000000 00:00 0 
7f8aa18d0000-7f8aa18d5000 r-xp 00000000 08:20 490152                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.InteropServices.RuntimeInformation.dll
7f8aa18d5000-7f8aa18e4000 ---p 00000000 00:00 0 
7f8aa18e4000-7f8aa18e5000 r--p 00004000 08:20 490152                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.InteropServices.RuntimeInformation.dll
7f8aa18e5000-7f8aa18f0000 ---p 00000000 00:00 0 
7f8aa18f0000-7f8aa18f1000 r--p 00000000 08:20 490133                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Private.Uri.dll
7f8aa18f1000-7f8aa1900000 ---p 00000000 00:00 0 
7f8aa1900000-7f8aa1902000 rw-p 00000000 08:20 490133                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Private.Uri.dll
7f8aa1902000-7f8aa1911000 ---p 00000000 00:00 0 
7f8aa1911000-7f8aa1949000 r-xp 00001000 08:20 490133                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Private.Uri.dll
7f8aa1949000-7f8aa1958000 ---p 00000000 00:00 0 
7f8aa1958000-7f8aa1959000 r--p 00038000 08:20 490133                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Private.Uri.dll
7f8aa1959000-7f8aa1960000 ---p 00000000 00:00 0 
7f8aa1960000-7f8aa1961000 r--p 00000000 08:20 490098                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.IO.FileSystem.dll
7f8aa1961000-7f8aa1970000 ---p 00000000 00:00 0 
7f8aa1970000-7f8aa1972000 rw-p 00000000 08:20 490098                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.IO.FileSystem.dll
7f8aa1972000-7f8aa1981000 ---p 00000000 00:00 0 
7f8aa1981000-7f8aa19b2000 r-xp 00001000 08:20 490098                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.IO.FileSystem.dll
7f8aa19b2000-7f8aa19c1000 ---p 00000000 00:00 0 
7f8aa19c1000-7f8aa19c3000 r--p 00031000 08:20 490098                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.IO.FileSystem.dll
7f8aa19c3000-7f8aa19d0000 ---p 00000000 00:00 0 
7f8aa19d0000-7f8aa19e0000 rw-p 00000000 00:00 0 
7f8aa19e0000-7f8aa19e1000 r--p 00000000 08:20 490109                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Memory.dll
7f8aa19e1000-7f8aa19f0000 ---p 00000000 00:00 0 
7f8aa19f0000-7f8aa19f2000 rw-p 00000000 08:20 490109                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Memory.dll
7f8aa19f2000-7f8aa1a01000 ---p 00000000 00:00 0 
7f8aa1a01000-7f8aa1a32000 r-xp 00001000 08:20 490109                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Memory.dll
7f8aa1a32000-7f8aa1a41000 ---p 00000000 00:00 0 
7f8aa1a41000-7f8aa1a42000 r--p 00031000 08:20 490109                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Memory.dll
7f8aa1a42000-7f8aa1a50000 ---p 00000000 00:00 0 
7f8aa1a50000-7f8aa1a51000 r--p 00000000 08:20 490153                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.InteropServices.dll
7f8aa1a51000-7f8aa1a60000 ---p 00000000 00:00 0 
7f8aa1a60000-7f8aa1a61000 rw-p 00000000 08:20 490153                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.InteropServices.dll
7f8aa1a61000-7f8aa1a70000 ---p 00000000 00:00 0 
7f8aa1a70000-7f8aa1a7a000 r-xp 00000000 08:20 490153                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.InteropServices.dll
7f8aa1a7a000-7f8aa1a89000 ---p 00000000 00:00 0 
7f8aa1a89000-7f8aa1a8a000 r--p 00009000 08:20 490153                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Runtime.InteropServices.dll
7f8aa1a8a000-7f8aa1a90000 ---p 00000000 00:00 0 
7f8aa1a90000-7f8aa1aa0000 rw-p 00000000 00:00 0 
7f8aa1aa0000-7f8aa1aaf000 rw-p 00000000 00:00 0 
7f8aa1aaf000-7f8aa1ab0000 ---p 00000000 00:00 0 
7f8aa1ab0000-7f8aa1ab1000 r--p 00000000 08:20 490068                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Console.dll
7f8aa1ab1000-7f8aa1ac0000 ---p 00000000 00:00 0 
7f8aa1ac0000-7f8aa1ac2000 rw-p 00000000 08:20 490068                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Console.dll
7f8aa1ac2000-7f8aa1ad1000 ---p 00000000 00:00 0 
7f8aa1ad1000-7f8aa1afc000 r-xp 00001000 08:20 490068                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Console.dll
7f8aa1afc000-7f8aa1b0b000 ---p 00000000 00:00 0 
7f8aa1b0b000-7f8aa1b0c000 r--p 0002b000 08:20 490068                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Console.dll
7f8aa1b0c000-7f8aa1b10000 ---p 00000000 00:00 0 
7f8aa1b10000-7f8aa1b11000 r--p 00000000 08:20 490179                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Text.Encoding.Extensions.dll
7f8aa1b11000-7f8aa1b20000 ---p 00000000 00:00 0 
7f8aa1b20000-7f8aa1b21000 rw-p 00000000 08:20 490179                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Text.Encoding.Extensions.dll
7f8aa1b21000-7f8aa1b30000 ---p 00000000 00:00 0 
7f8aa1b30000-7f8aa1b32000 r-xp 00000000 08:20 490179                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/System.Text.Encoding.Extensions.dll
7f8aa1b32000-7f8aa1b50000 ---p 00000000 00:00 0 
7f8aa1b50000-7f8aa1b54000 rw-p 00000000 00:00 0 
7f8aa1b54000-7f8aa1b60000 ---p 00000000 00:00 0 
7f8aa1b60000-7f8aa1b61000 r--p 00000000 08:20 490052                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/Microsoft.Win32.Primitives.dll
7f8aa1b61000-7f8aa1b70000 ---p 00000000 00:00 0 
7f8aa1b70000-7f8aa1b71000 rw-p 00000000 08:20 490052                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/Microsoft.Win32.Primitives.dll
7f8aa1b71000-7f8aa1b80000 ---p 00000000 00:00 0 
7f8aa1b80000-7f8aa1b83000 r-xp 00000000 08:20 490052                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/Microsoft.Win32.Primitives.dll
7f8aa1b83000-7f8aa1b93000 ---p 00000000 00:00 0 
7f8aa1b93000-7f8aa1b94000 r--p 00003000 08:20 490052                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/Microsoft.Win32.Primitives.dll
7f8aa1b94000-7f8aa1ba0000 ---p 00000000 00:00 0 
7f8aa1ba0000-7f8aa1ba3000 rw-p 00000000 00:00 0 
7f8aa1ba3000-7f8b1a679000 ---p 00000000 00:00 0 
7f8b1a679000-7f8b1a9e3000 r-xp 00000000 08:20 490223                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libcoreclr.so
7f8b1a9e3000-7f8b1a9e4000 rwxp 0036a000 08:20 490223                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libcoreclr.so
7f8b1a9e4000-7f8b1ac1c000 r-xp 0036b000 08:20 490223                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libcoreclr.so
7f8b1ac1c000-7f8b1ac1d000 r--p 005a3000 08:20 490223                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libcoreclr.so
7f8b1ac1d000-7f8b1acf8000 r-xp 005a4000 08:20 490223                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libcoreclr.so
7f8b1acf8000-7f8b1acf9000 ---p 0067f000 08:20 490223                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libcoreclr.so
7f8b1acf9000-7f8b1ad1d000 r--p 0067f000 08:20 490223                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libcoreclr.so
7f8b1ad1d000-7f8b1ad35000 rw-p 006a3000 08:20 490223                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libcoreclr.so
7f8b1ad35000-7f8b1ad75000 rw-p 00000000 00:00 0 
7f8b1ad75000-7f8b1adce000 r-xp 00000000 08:20 490226                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libhostpolicy.so
7f8b1adce000-7f8b1afcd000 ---p 00059000 08:20 490226                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libhostpolicy.so
7f8b1afcd000-7f8b1afcf000 r--p 00058000 08:20 490226                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libhostpolicy.so
7f8b1afcf000-7f8b1afd0000 rw-p 0005a000 08:20 490226                     /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.2/libhostpolicy.so
7f8b1afd0000-7f8b1b031000 r-xp 00000000 08:20 490030                     /usr/share/dotnet/host/fxr/5.0.2/libhostfxr.so
7f8b1b031000-7f8b1b230000 ---p 00061000 08:20 490030                     /usr/share/dotnet/host/fxr/5.0.2/libhostfxr.so
7f8b1b230000-7f8b1b232000 r--p 00060000 08:20 490030                     /usr/share/dotnet/host/fxr/5.0.2/libhostfxr.so
7f8b1b232000-7f8b1b233000 rw-p 00062000 08:20 490030                     /usr/share/dotnet/host/fxr/5.0.2/libhostfxr.so
7f8b1b233000-7f8b1b23f000 r--p 00000000 08:20 490760                     /nwn/nwnx/NWNX_DotNET.so
7f8b1b23f000-7f8b1b25c000 r-xp 0000c000 08:20 490760                     /nwn/nwnx/NWNX_DotNET.so
7f8b1b25c000-7f8b1b261000 r--p 00029000 08:20 490760                     /nwn/nwnx/NWNX_DotNET.so
7f8b1b261000-7f8b1b262000 ---p 0002e000 08:20 490760                     /nwn/nwnx/NWNX_DotNET.so
7f8b1b262000-7f8b1b263000 r--p 0002e000 08:20 490760                     /nwn/nwnx/NWNX_DotNET.so
7f8b1b263000-7f8b1b264000 rw-p 0002f000 08:20 490760                     /nwn/nwnx/NWNX_DotNET.so
7f8b1b264000-7f8b1b26b000 rw-p 00000000 00:00 0 
7f8b1b26b000-7f8b1b270000 r--p 00000000 08:20 490759                     /nwn/nwnx/NWNX_Dialog.so
7f8b1b270000-7f8b1b279000 r-xp 00005000 08:20 490759                     /nwn/nwnx/NWNX_Dialog.so
7f8b1b279000-7f8b1b27b000 r--p 0000e000 08:20 490759                     /nwn/nwnx/NWNX_Dialog.so
7f8b1b27b000-7f8b1b27c000 ---p 00010000 08:20 490759                     /nwn/nwnx/NWNX_Dialog.so
7f8b1b27c000-7f8b1b27d000 r--p 00010000 08:20 490759                     /nwn/nwnx/NWNX_Dialog.so
7f8b1b27d000-7f8b1b27e000 rw-p 00011000 08:20 490759                     /nwn/nwnx/NWNX_Dialog.so
7f8b1b27e000-7f8b1b281000 rw-p 00000000 00:00 0 
7f8b1b281000-7f8b1b288000 r--p 00000000 08:20 490756                     /nwn/nwnx/NWNX_Damage.so
7f8b1b288000-7f8b1b298000 r-xp 00007000 08:20 490756                     /nwn/nwnx/NWNX_Damage.so
7f8b1b298000-7f8b1b29b000 r--p 00017000 08:20 490756                     /nwn/nwnx/NWNX_Damage.so
7f8b1b29b000-7f8b1b29c000 r--p 00019000 08:20 490756                     /nwn/nwnx/NWNX_Damage.so
7f8b1b29c000-7f8b1b29d000 rw-p 0001a000 08:20 490756                     /nwn/nwnx/NWNX_Damage.so
7f8b1b29d000-7f8b1b2ad000 r--p 00000000 08:20 490755                     /nwn/nwnx/NWNX_Creature.so
7f8b1b2ad000-7f8b1b2dc000 r-xp 00010000 08:20 490755                     /nwn/nwnx/NWNX_Creature.so
7f8b1b2dc000-7f8b1b2eb000 r--p 0003f000 08:20 490755                     /nwn/nwnx/NWNX_Creature.so
7f8b1b2eb000-7f8b1b2ec000 ---p 0004e000 08:20 490755                     /nwn/nwnx/NWNX_Creature.so
7f8b1b2ec000-7f8b1b2ed000 r--p 0004e000 08:20 490755                     /nwn/nwnx/NWNX_Creature.so
7f8b1b2ed000-7f8b1b2ee000 rw-p 0004f000 08:20 490755                     /nwn/nwnx/NWNX_Creature.so
7f8b1b2ee000-7f8b1b2ef000 rw-p 00000000 00:00 0 
7f8b1b2ef000-7f8b1b2f1000 r--p 00000000 08:20 490753                     /nwn/nwnx/NWNX_CombatModes.so
7f8b1b2f1000-7f8b1b2f3000 r-xp 00002000 08:20 490753                     /nwn/nwnx/NWNX_CombatModes.so
7f8b1b2f3000-7f8b1b2f4000 r--p 00004000 08:20 490753                     /nwn/nwnx/NWNX_CombatModes.so
7f8b1b2f4000-7f8b1b2f5000 r--p 00004000 08:20 490753                     /nwn/nwnx/NWNX_CombatModes.so
7f8b1b2f5000-7f8b1b2f6000 rw-p 00005000 08:20 490753                     /nwn/nwnx/NWNX_CombatModes.so
7f8b1b2f6000-7f8b1b2f7000 rw-p 00000000 00:00 0 
7f8b1b2f7000-7f8b1b2fd000 r--p 00000000 08:20 490752                     /nwn/nwnx/NWNX_Chat.so
7f8b1b2fd000-7f8b1b30c000 r-xp 00006000 08:20 490752                     /nwn/nwnx/NWNX_Chat.so
7f8b1b30c000-7f8b1b30f000 r--p 00015000 08:20 490752                     /nwn/nwnx/NWNX_Chat.so
7f8b1b30f000-7f8b1b310000 r--p 00017000 08:20 490752                     /nwn/nwnx/NWNX_Chat.so
7f8b1b310000-7f8b1b311000 rw-p 00018000 08:20 490752                     /nwn/nwnx/NWNX_Chat.so
7f8b1b311000-7f8b1b319000 r--p 00000000 08:20 490751                     /nwn/nwnx/NWNX_Area.so
7f8b1b319000-7f8b1b32b000 r-xp 00008000 08:20 490751                     /nwn/nwnx/NWNX_Area.so
7f8b1b32b000-7f8b1b330000 r--p 0001a000 08:20 490751                     /nwn/nwnx/NWNX_Area.so
7f8b1b330000-7f8b1b331000 ---p 0001f000 08:20 490751                     /nwn/nwnx/NWNX_Area.so
7f8b1b331000-7f8b1b332000 r--p 0001f000 08:20 490751                     /nwn/nwnx/NWNX_Area.so
7f8b1b332000-7f8b1b333000 rw-p 00020000 08:20 490751                     /nwn/nwnx/NWNX_Area.so
7f8b1b333000-7f8b1b334000 rw-p 00000000 00:00 0 
7f8b1b334000-7f8b1b339000 r--p 00000000 08:20 490750                     /nwn/nwnx/NWNX_Appearance.so
7f8b1b339000-7f8b1b344000 r-xp 00005000 08:20 490750                     /nwn/nwnx/NWNX_Appearance.so
7f8b1b344000-7f8b1b346000 r--p 00010000 08:20 490750                     /nwn/nwnx/NWNX_Appearance.so
7f8b1b346000-7f8b1b347000 r--p 00011000 08:20 490750                     /nwn/nwnx/NWNX_Appearance.so
7f8b1b347000-7f8b1b348000 rw-p 00012000 08:20 490750                     /nwn/nwnx/NWNX_Appearance.so
7f8b1b348000-7f8b1b34f000 r--p 00000000 08:20 490749                     /nwn/nwnx/NWNX_Administration.so
7f8b1b34f000-7f8b1b35d000 r-xp 00007000 08:20 490749                     /nwn/nwnx/NWNX_Administration.so
7f8b1b35d000-7f8b1b361000 r--p 00015000 08:20 490749                     /nwn/nwnx/NWNX_Administration.so
7f8b1b361000-7f8b1b362000 ---p 00019000 08:20 490749                     /nwn/nwnx/NWNX_Administration.so
7f8b1b362000-7f8b1b363000 r--p 00019000 08:20 490749                     /nwn/nwnx/NWNX_Administration.so
7f8b1b363000-7f8b1b364000 rw-p 0001a000 08:20 490749                     /nwn/nwnx/NWNX_Administration.so
7f8b1b364000-7f8b1b36d000 rw-p 00000000 00:00 0 
7f8b1b36d000-7f8b1b36e000 ---p 00000000 00:00 0 
7f8b1b36e000-7f8b1bb6e000 rwxp 00000000 00:00 0 
7f8b1bb6e000-7f8b1bb6f000 ---p 00000000 00:00 0 
7f8b1bb6f000-7f8b1c36f000 rwxp 00000000 00:00 0 
7f8b1c36f000-7f8b1c370000 ---p 00000000 00:00 0 
7f8b1c370000-7f8b1cb70000 rwxp 00000000 00:00 0 
7f8b1cb70000-7f8b1cb71000 ---p 00000000 00:00 0 
7f8b1cb71000-7f8b1d371000 rwxp 00000000 00:00 0 
7f8b1d371000-7f8b1d372000 ---p 00000000 00:00 0 
7f8b1d372000-7f8b1db72000 rwxp 00000000 00:00 0 
7f8b1db72000-7f8b1db73000 ---p 00000000 00:00 0 
7f8b1db73000-7f8b1e373000 rwxp 00000000 00:00 0 
7f8b1e373000-7f8b1e374000 ---p 00000000 00:00 0 
7f8b1e374000-7f8b1eb74000 rwxp 00000000 00:00 0 
7f8b1eb74000-7f8b1eb75000 ---p 00000000 00:00 0 
7f8b1eb75000-7f8b1f375000 rwxp 00000000 00:00 0 
7f8b1f375000-7f8b1f376000 ---p 00000000 00:00 0 
7f8b1f376000-7f8b1fb76000 rwxp 00000000 00:00 0 
7f8b1fb76000-7f8b1fb77000 ---p 00000000 00:00 0 
7f8b1fb77000-7f8b20377000 rwxp 00000000 00:00 0 
7f8b20377000-7f8b20378000 ---p 00000000 00:00 0 
7f8b20378000-7f8b20b78000 rwxp 00000000 00:00 0 
7f8b20b78000-7f8b20b79000 ---p 00000000 00:00 0 
7f8b20b79000-7f8b21379000 rwxp 00000000 00:00 0 
7f8b21379000-7f8b2137c000 r--p 00000000 08:20 24795                      /lib/x86_64-linux-gnu/libnss_files-2.28.so
7f8b2137c000-7f8b21383000 r-xp 00003000 08:20 24795                      /lib/x86_64-linux-gnu/libnss_files-2.28.so
7f8b21383000-7f8b21385000 r--p 0000a000 08:20 24795                      /lib/x86_64-linux-gnu/libnss_files-2.28.so
7f8b21385000-7f8b21386000 ---p 0000c000 08:20 24795                      /lib/x86_64-linux-gnu/libnss_files-2.28.so
7f8b21386000-7f8b21387000 r--p 0000c000 08:20 24795                      /lib/x86_64-linux-gnu/libnss_files-2.28.so
7f8b21387000-7f8b21388000 rw-p 0000d000 08:20 24795                      /lib/x86_64-linux-gnu/libnss_files-2.28.so
7f8b21388000-7f8b21392000 rw-p 00000000 00:00 0 
7f8b21392000-7f8b21393000 ---p 00000000 00:00 0 
7f8b21393000-7f8b21b93000 rwxp 00000000 00:00 0 
7f8b21b93000-7f8b21b9a000 rw-p 00000000 00:00 0 
7f8b21b9a000-7f8b21bbc000 r--p 00000000 08:20 24757                      /lib/x86_64-linux-gnu/libc-2.28.so
7f8b21bbc000-7f8b21d04000 r-xp 00022000 08:20 24757                      /lib/x86_64-linux-gnu/libc-2.28.so
7f8b21d04000-7f8b21d50000 r--p 0016a000 08:20 24757                      /lib/x86_64-linux-gnu/libc-2.28.so
7f8b21d50000-7f8b21d51000 ---p 001b6000 08:20 24757                      /lib/x86_64-linux-gnu/libc-2.28.so
7f8b21d51000-7f8b21d55000 r--p 001b6000 08:20 24757                      /lib/x86_64-linux-gnu/libc-2.28.so
7f8b21d55000-7f8b21d57000 rw-p 001ba000 08:20 24757                      /lib/x86_64-linux-gnu/libc-2.28.so
7f8b21d57000-7f8b21d5b000 rw-p 00000000 00:00 0 
7f8b21d5b000-7f8b21d61000 r--p 00000000 08:20 24812                      /lib/x86_64-linux-gnu/libpthread-2.28.so
7f8b21d61000-7f8b21d70000 r-xp 00006000 08:20 24812                      /lib/x86_64-linux-gnu/libpthread-2.28.so
7f8b21d70000-7f8b21d76000 r--p 00015000 08:20 24812                      /lib/x86_64-linux-gnu/libpthread-2.28.so
7f8b21d76000-7f8b21d77000 r--p 0001a000 08:20 24812                      /lib/x86_64-linux-gnu/libpthread-2.28.so
7f8b21d77000-7f8b21d78000 rw-p 0001b000 08:20 24812                      /lib/x86_64-linux-gnu/libpthread-2.28.so
7f8b21d78000-7f8b21d7e000 rw-p 00000000 00:00 0 
7f8b21d7e000-7f8b21d81000 r--p 00000000 08:20 24773                      /lib/x86_64-linux-gnu/libgcc_s.so.1
7f8b21d81000-7f8b21d92000 r-xp 00003000 08:20 24773                      /lib/x86_64-linux-gnu/libgcc_s.so.1
7f8b21d92000-7f8b21d95000 r--p 00014000 08:20 24773                      /lib/x86_64-linux-gnu/libgcc_s.so.1
7f8b21d95000-7f8b21d96000 ---p 00017000 08:20 24773                      /lib/x86_64-linux-gnu/libgcc_s.so.1
7f8b21d96000-7f8b21d97000 r--p 00017000 08:20 24773                      /lib/x86_64-linux-gnu/libgcc_s.so.1
7f8b21d97000-7f8b21d98000 rw-p 00018000 08:20 24773                      /lib/x86_64-linux-gnu/libgcc_s.so.1
7f8b21d98000-7f8b21da5000 r--p 00000000 08:20 24780                      /lib/x86_64-linux-gnu/libm-2.28.so
7f8b21da5000-7f8b21e44000 r-xp 0000d000 08:20 24780                      /lib/x86_64-linux-gnu/libm-2.28.so
7f8b21e44000-7f8b21f19000 r--p 000ac000 08:20 24780                      /lib/x86_64-linux-gnu/libm-2.28.so
7f8b21f19000-7f8b21f1a000 r--p 00180000 08:20 24780                      /lib/x86_64-linux-gnu/libm-2.28.so
7f8b21f1a000-7f8b21f1b000 rw-p 00181000 08:20 24780                      /lib/x86_64-linux-gnu/libm-2.28.so
7f8b21f1b000-7f8b21fa4000 r--p 00000000 08:20 26050                      /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f8b21fa4000-7f8b22050000 r-xp 00089000 08:20 26050                      /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f8b22050000-7f8b2208e000 r--p 00135000 08:20 26050                      /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f8b2208e000-7f8b2208f000 ---p 00173000 08:20 26050                      /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f8b2208f000-7f8b22099000 r--p 00173000 08:20 26050                      /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f8b22099000-7f8b2209b000 rw-p 0017d000 08:20 26050                      /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f8b2209b000-7f8b2209f000 rw-p 00000000 00:00 0 
7f8b2209f000-7f8b220a0000 r--p 00000000 08:20 24765                      /lib/x86_64-linux-gnu/libdl-2.28.so
7f8b220a0000-7f8b220a1000 r-xp 00001000 08:20 24765                      /lib/x86_64-linux-gnu/libdl-2.28.so
7f8b220a1000-7f8b220a2000 r--p 00002000 08:20 24765                      /lib/x86_64-linux-gnu/libdl-2.28.so
7f8b220a2000-7f8b220a3000 r--p 00002000 08:20 24765                      /lib/x86_64-linux-gnu/libdl-2.28.so
7f8b220a3000-7f8b220a4000 rw-p 00003000 08:20 24765                      /lib/x86_64-linux-gnu/libdl-2.28.so
7f8b220a4000-7f8b220a6000 r--p 00000000 08:20 24816                      /lib/x86_64-linux-gnu/librt-2.28.so
7f8b220a6000-7f8b220aa000 r-xp 00002000 08:20 24816                      /lib/x86_64-linux-gnu/librt-2.28.so
7f8b220aa000-7f8b220ac000 r--p 00006000 08:20 24816                      /lib/x86_64-linux-gnu/librt-2.28.so
7f8b220ac000-7f8b220ad000 r--p 00007000 08:20 24816                      /lib/x86_64-linux-gnu/librt-2.28.so
7f8b220ad000-7f8b220ae000 rw-p 00008000 08:20 24816                      /lib/x86_64-linux-gnu/librt-2.28.so
7f8b220ae000-7f8b220b2000 rw-p 00000000 00:00 0 
7f8b220b2000-7f8b2216f000 r--p 00000000 08:20 490754                     /nwn/nwnx/NWNX_Core.so
7f8b2216f000-7f8b221a6000 r-xp 000bd000 08:20 490754                     /nwn/nwnx/NWNX_Core.so
7f8b221a6000-7f8b221c6000 rwxp 000f4000 08:20 490754                     /nwn/nwnx/NWNX_Core.so
7f8b221c6000-7f8b22238000 r-xp 00114000 08:20 490754                     /nwn/nwnx/NWNX_Core.so
7f8b22238000-7f8b222aa000 r--p 00186000 08:20 490754                     /nwn/nwnx/NWNX_Core.so
7f8b222aa000-7f8b222ac000 r--p 001f7000 08:20 490754                     /nwn/nwnx/NWNX_Core.so
7f8b222ac000-7f8b222b5000 rw-p 001f9000 08:20 490754                     /nwn/nwnx/NWNX_Core.so
7f8b222b5000-7f8b222b9000 rw-p 00000000 00:00 0 
7f8b222b9000-7f8b222ba000 r--p 00000000 08:20 24743                      /lib/x86_64-linux-gnu/ld-2.28.so
7f8b222ba000-7f8b222d8000 r-xp 00001000 08:20 24743                      /lib/x86_64-linux-gnu/ld-2.28.so
7f8b222d8000-7f8b222e0000 r--p 0001f000 08:20 24743                      /lib/x86_64-linux-gnu/ld-2.28.so
7f8b222e0000-7f8b222e1000 r--p 00026000 08:20 24743                      /lib/x86_64-linux-gnu/ld-2.28.so
7f8b222e1000-7f8b222e2000 rw-p 00027000 08:20 24743                      /lib/x86_64-linux-gnu/ld-2.28.so
7f8b222e2000-7f8b222e3000 rw-p 00000000 00:00 0 
7fff11d0f000-7fff11d34000 rwxp 00000000 00:00 0                          [stack]
7fff11d34000-7fff11d35000 rw-p 00000000 00:00 0 
7fff11d68000-7fff11d6b000 r--p 00000000 00:00 0                          [vvar]
7fff11d6b000-7fff11d6d000 r-xp 00000000 00:00 0                          [vdso]
=== Config
campaigndb.storage.compression.enabled = 1
game.language.override = ""
io.mmap.enabled = 0
io.mmap.experimental.never-close-bif = 1
masterserver.key-authentication.mode = "always"
net.http.max-concurrent-connections = 20
net.http.ssl.cabundle = ""
net.http.ssl.capath = ""
net.http.ssl.require = 0
net.http.ssl.verify.ocsp-stapling = 0
net.udp.window.timeout = 60000
nwscript.debugger.address = "127.0.0.1"
nwscript.debugger.enabled = 0
nwscript.debugger.port = 5122
nwscript.log.script-execution.enabled = 0
nwscript.vm.profiling.enabled = 0
nwscript.vm.runtime-limits.instructions = 524288
nwsync.auto-delete-dangling-data = 1
nwsync.storage.compression = "zstd"
nwsync.transfer.flush.async = 1
nwsync.transfer.flush.max-files = 1000
nwsync.transfer.flush.max-megabytes = 3
ruleset.always-roll-max-hitpoints-on-levelup = 0
ruleset.combat.max-ability-bonus = 12
ruleset.combat.max-ability-penalty = 30
ruleset.combat.max-attack-bonus = 20
ruleset.combat.max-damage-bonus = 100
ruleset.combat.max-saving-throw-bonus = 20
ruleset.combat.max-skill-bonus = 50
ruleset.combat.sticky-modes = 0
ruleset.difficulty = 1
ruleset.encounters.always-reset = 0
ruleset.enforce-legal-characters = 1
ruleset.hide-hitpoints-gained-on-levelup = 0
ruleset.item-level-restrictions = 0
ruleset.max-character-level = 40
ruleset.min-character-level = 1
ruleset.natural-ones-fail-saving-throws = 1
ruleset.show-active-effects = 1
ruleset.show-challenge-ratings = 1
ruleset.validate-spells = 1
server.allow-player-pausing = 0
server.autosave.enabled = 0
server.autosave.interval = 5
server.disallow-shouting = 0
server.experimental.enhanced-pathfinding = 1
server.identity.game-region = 0
server.identity.game-type = 0
server.identity.name = "Server"
server.identity.public = 1
server.log.creature-deaths.enabled = 0
server.log.debug-mode-sends-to-players.enabled = 1
server.log.heartbeats.enabled = 0
server.log.rotation.enabled = 1
server.login.max-players = 6
server.login.player-dm.enabled = 1
server.net.accept-relayed-connections = 1
server.net.port = 5121
server.one-party-only = 1
server.pvp-mode = 1
server.reload-when-empty = 1
server.restore-spell-uses-on-login = 0
server.savegames-store-characters = 1
server.savegames-vault-characters-only = 0
server.show-dm-join-messages = 1
server.tweaks.2da-engine-cache-size = 11
server.tweaks.2da-user-cache-size = 10
server.tweaks.game-object-cache-size = 16
server.tweaks.power-saving.clients-required-to-disable = 1
server.tweaks.resman.max-memory-usage = 0.12
server.tweaks.threaded-timers-resolution = 100
server.tweaks.use-threaded-timers = 1
server.vault.backup-server-characters = 0
server.vault.by-player-name = 0
server.vault.mode = 1
server.vault.sticky-player-names = 0
server.vault.suppress-base = 0
taskmanager.threadpool.max-mutex-wait-time = 5000
taskmanager.threadpool.max-size = 0
=== ResMan

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.