Changed XP system over to PnP XP system

Changed XP system over to PnP XP system.  Updated NWNxEE scripts.  Full compile.  Updated public release archive.
This commit is contained in:
Jaysyn904
2024-03-13 21:52:56 -04:00
parent 786c640862
commit f5a98c2d22
85 changed files with 3041 additions and 673 deletions

View File

@@ -488,7 +488,7 @@ _______________________________________
Event Data Tag | Type | Notes
----------------------|--------|-------
STAT | int | Returns ABILITY_* constant
VALUE | int |
VALUE | int |
TARGET | object | Convert to object with StringToObject()
SET | int | TRUE if setting stat, FALSE if modifying
@@ -533,8 +533,8 @@ _______________________________________
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET | object | Convert to object with StringToObject()
FACTION_ID | int | Not the STANDARD_FACTION_* constants. See nwnx_creature->GetFaction().
FACTION_NAME | string |
FACTION_ID | int | Not the STANDARD_FACTION_* constants. See nwnx_creature->GetFaction().
FACTION_NAME | string |
_______________________________________
## DM Other Events
@@ -580,6 +580,7 @@ _______________________________________
IP_ADDRESS | string | The IP address of the connecting client
VERSION_MAJOR | int | The client's major version, eg 8193, or 0 if unavailable.
VERSION_MINOR | int | The client's minor version, eg 34, or 0 if unavailable.
VERSION_POSTFIX | int | The client's postfix version, eg 37, or 0 if unavailable.
PLATFORM_ID | int | The client's platform id, PLAYER_DEVICE_PLATFORM_*, or 0 if unavailable.
@note Skipping the _BEFORE event will cause the client's connection to be denied.
@@ -652,7 +653,7 @@ _______________________________________
Event Data Tag | Type | Notes |
----------------------|--------|-------|
SPELL_MULTICLASS | int | Index of the spell casting class (0-2) |
SPELL_MULTICLASS | int | Index of the spell casting class (0-7) |
SPELL_SLOT | int | |
SPELL_ID | int | |
SPELL_DOMAIN | int | |
@@ -669,7 +670,7 @@ _______________________________________
Event Data Tag | Type | Notes |
----------------------|--------|-------|
SPELL_MULTICLASS | int | Index of the spell casting class (0-2) |
SPELL_MULTICLASS | int | Index of the spell casting class (0-7) |
SPELL_LEVEL | int | |
SPELL_SLOT | int | |
@@ -689,6 +690,32 @@ _______________________________________
SPELL_FEAT | int | |
SPELL_SPONTANEOUS | int | |
_______________________________________
## Spell Failed Events
- NWNX_ON_SPELL_FAILED_BEFORE
- NWNX_ON_SPELL_FAILED_AFTER
`OBJECT_SELF` = The creature whose spell failed
Event Data Tag | Type | Notes |
----------------------|--------|-------|
SPELL_ID | int | |
MULTI_CLASS | int | Index of the spell casting class (0-7) |
DOMAIN | int | |
METAMAGIC | int | |
FEAT | int | |
SPELL_SPONTANEOUS | int | |
DEFENSIVELY_CAST | int | |
TARGET_OBJECT_ID | object | Convert to object with StringToObject() |
TARGET_POSITION_X | float | |
TARGET_POSITION_Y | float | |
TARGET_POSITION_Z | float | |
IS_INSTANT_SPELL | int | |
PROJECTILE_PATH_TYPE | int | |
CASTERLEVEL | int | |
IS_FAKE | int | |
REASON | int | @ref events_spellfailreason "NWNX_EVENTS_SPELLFAIL_REASON_*" |
_______________________________________
## Healer Kit Use Events
- NWNX_ON_HEALER_KIT_BEFORE
@@ -925,6 +952,17 @@ _______________________________________
BARTER_INITIATOR_ITEM_* | object | Convert to object with StringToObject(), only in _BEFORE events
BARTER_TARGET_ITEM_* | object | Convert to object with StringToObject(), only in _BEFORE events
_______________________________________
## Barter AddItem Events
- NWNX_ON_BARTER_ADD_ITEM_BEFORE
- NWNX_ON_BARTER_ADD_ITEM_AFTER
`OBJECT_SELF` = The player trying to add an item to the barter window
Event Data Tag | Type | Notes
----------------------|--------|-------
ITEM | object | The item being added
BARTER_TARGET | object | The other player involved in the barter
_______________________________________
## Trap Events
- NWNX_ON_TRAP_DISARM_BEFORE
@@ -945,6 +983,11 @@ _______________________________________
Event Data Tag | Type | Notes
----------------------|--------|-------
TRAP_OBJECT_ID | object | Convert to object with StringToObject()
TARGET_OBJECT_ID | object | Convert to object with StringToObject(), only in SET events
TARGET_POSITION_X | float | Only in SET events
TARGET_POSITION_Y | float | Only in SET events
TARGET_POSITION_Z | float | Only in SET events
NEEDS_TO_MOVE | int | TRUE/FALSE, only in _BEFORE events (not ENTER), if TRUE another _BEFORE event will be fired before the actual interaction with the trap
TRAP_FORCE_SET | int | TRUE/FALSE, only in ENTER events
ACTION_RESULT | int | TRUE/FALSE, only in _AFTER events (not ENTER)
@@ -1295,7 +1338,24 @@ _______________________________________
SPELL_ID | int | |
MULTI_CLASS | int | |
FEAT | int | 65535 if a feat wasn't used, otherwise the feat ID |
TARGET_OBJECT_ID | object | Convert to object with StringToObject() |
TARGET_POSITION_X | float | |
TARGET_POSITION_Y | float | |
TARGET_POSITION_Z | float | |
SPELL_DOMAIN | int | |
SPELL_SPONTANEOUS | int | |
SPELL_METAMAGIC | int | METAMAGIC_* |
PROJECTILE_PATH_TYPE | int | PROJECTILE_PATH_TYPE_* |
@note TARGET_OBJECT_ID, TARGET_POSITION_*, SPELL_DOMAIN, SPELL_SPONTANEOUS, SPELL_METAMAGIC, and PROJECTILE_PATH_TYPE may
be invalid if BroadcastCastSpell was called outside AIActionCastSpell.
This can be tested for by checking if TARGET_OBJECT_ID is the caster's area and if all three TARGET_POSITION_* equal 0.0.
\code{.c}
if (oTarget == GetArea(oCaster) && Vector(vX, vY, fZ) == Vector())
{
// ...
}
\endcode
_______________________________________
## RunScript Debug Event
- NWNX_ON_DEBUG_RUN_SCRIPT_BEFORE
@@ -1334,12 +1394,12 @@ _______________________________________
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET_OBJECT_ID | object | Convert to object with StringToObject()
VISUAL_EFFECT | int | Index into visualeffects.2da
DURATION | float |
TARGET_POSITION_X | float | Will be 0.0 when playing visual effects on an object
TARGET_POSITION_Y | float | Will be 0.0 when playing visual effects on an object
TARGET_POSITION_Z | float | Will be 0.0 when playing visual effects on an object
TARGET_OBJECT_ID | object | Convert to object with StringToObject()
VISUAL_EFFECT | int | Index into visualeffects.2da
DURATION | float |
TARGET_POSITION_X | float | Will be 0.0 when playing visual effects on an object
TARGET_POSITION_Y | float | Will be 0.0 when playing visual effects on an object
TARGET_POSITION_Z | float | Will be 0.0 when playing visual effects on an object
@note This is the `dm_visualeffect` console command.
`TARGET_OBJECT_ID` will be `OBJECT_INVALID` when playing visual effects at a position in an area.
@@ -1360,6 +1420,15 @@ _______________________________________
PRICE | int | The buy or sell price |
RESULT | int | TRUE/FALSE whether the request was successful. Only in *_AFTER events.
@warning RESULT in NWNX_ON_STORE_REQUEST_BUY_AFTER only fails if it's due to lack of gold. It will not fail if item does not fit in player's inventory. If you want to check and fail on that condition, you can do something like this in the NWNX_ON_STORE_REQUEST_BUY_AFTER event:
```c
if (!GetBaseItemFitsInInventory(GetBaseItemType(oItem), oPlayer))
{
NWNX_Events_SetEventResult("0");
return;
}
```
_______________________________________
## Server Send Area Events
- NWNX_ON_SERVER_SEND_AREA_BEFORE
@@ -1515,7 +1584,7 @@ _______________________________________
----------------------|--------|-------
EVENT_TYPE | int | EVENT_SCRIPT_* in nwscript.nss |
EVENT_SCRIPT | int | Script name running (can be empty) |
@note This event should definitely be used with the Event ID Whitelist, which is turned on by default
for this event. Until you add your EVENT_SCRIPT_ to the whitelist this event will not function:
```c
@@ -1524,8 +1593,539 @@ _______________________________________
```
@warning Toggling the Whitelist to be off for this event will degrade performance.
_______________________________________
## Object Use Events (Placeables)
- NWNX_ON_OBJECT_USE_BEFORE
- NWNX_ON_OBJECT_USE_AFTER
`OBJECT_SELF` = The player using the object
Event Data Tag | Type | Notes
----------------------|--------|-------
OBJECT | object | The Object being used |
_______________________________________
## Placeable Open Events (Placeables with inventory)
- NWNX_ON_PLACEABLE_OPEN_BEFORE
- NWNX_ON_PLACEABLE_OPEN_AFTER
`OBJECT_SELF` = The placeable being openeed.
Event Data Tag | Type | Notes
----------------------|--------|-------
OBJECT | object | The player opening. |
BEFORE_SKIPPED | int | TRUE/FALSE, only in _AFTER events|
_______________________________________
## Placeable Close Events (Placeables with inventory)
- NWNX_ON_PLACEABLE_CLOSE_BEFORE
- NWNX_ON_PLACEABLE_CLOSE_AFTER
`OBJECT_SELF` = The placeable being closed.
Event Data Tag | Type | Notes
----------------------|--------|-------
OBJECT | object | The player closing. |
@note Skipping event is not allowed (since otherwise client UI will hang and be glitchy)
_______________________________________
## Broadcast Safe Projectile Events
- NWNX_ON_BROADCAST_SAFE_PROJECTILE_BEFORE
- NWNX_ON_BROADCAST_SAFE_PROJECTILE_AFTER
`OBJECT_SELF` = The creature casting the spell
Event Data Tag | Type | Notes |
----------------------|--------|-------|
TARGET_OBJECT_ID | string | Convert to object with StringToObject() |
TARGET_POSITION_X | float | |
TARGET_POSITION_Y | float | |
TARGET_POSITION_Z | float | |
DELTA | int | Time in milliseconds before the projectile reaches its destination |
PROJECTILE_TYPE | int | @ref events_projtype "NWNX_EVENTS_BROADCAST_SAFE_PROJECTILE_TYPE_*" |
SPELL_ID | int | |
ATTACK_RESULT | int | 0=n/a, 1=hit, 2=parried, 3=critical hit, 4=miss, 5=resisted, 7=automatic hit, 8=concealed, 9=miss chance, 10=devastating crit |
PROJECTILE_PATH_TYPE | int | @nwn{Projectile_path_type,PROJECTILE_PATH_TYPE_*} |
@note This event fires for all projectiles. It's recommended to use ID whitelists with this event. You can whitelist the event by the projectile type, spell id, or both:
\code{.c}
NWNX_Events_AddIDToWhitelist("NWNX_ON_BROADCAST_SAFE_PROJECTILE_TYPE", NWNX_EVENTS_BROADCAST_SAFE_PROJECTILE_TYPE_*);
NWNX_Events_AddIDToWhitelist("NWNX_ON_BROADCAST_SAFE_PROJECTILE_SPELL", SPELL_*);
\endcode
`TARGET_OBJECT_ID` will be `OBJECT_INVALID` if the projectile is cast at a location
_______________________________________
## Broadcast Attack of Opportunity Events
- NWNX_ON_BROADCAST_ATTACK_OF_OPPORTUNITY_BEFORE
- NWNX_ON_BROADCAST_ATTACK_OF_OPPORTUNITY_AFTER
`OBJECT_SELF` = The creature broadcasting the Attack of Opportunity event
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET_OBJECT_ID | object | A single object the attack of opportunity is being broadcast to. Convert to object with StringToObject() |
MOVEMENT | int | Whether this attack of opportunity is being triggered from movement |
_______________________________________
## Combat Attack of Opportunity Events
- NWNX_ON_COMBAT_ATTACK_OF_OPPORTUNITY_BEFORE
- NWNX_ON_COMBAT_ATTACK_OF_OPPORTUNITY_AFTER
`OBJECT_SELF` = The creature performing the Attack of Opportunity against the broadcasting target.
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET_OBJECT_ID | object | The target of the attack of opportunity. Convert to object with StringToObject() |
@note If the BEFORE event is skipped the broadcasting creature will still make a tumble skill roll if moving.
_______________________________________
## Area Play Battle Music Events
- NWNX_ON_AREA_PLAY_BATTLE_MUSIC_BEFORE
- NWNX_ON_AREA_PLAY_BATTLE_MUSIC_AFTER
`OBJECT_SELF` = The area playing or stopping the battle music.
Event Data Tag | Type | Notes
----------------------|--------|-------
PLAY | int | TRUE if the area is starting to play battle music, FALSE if stopping. |
_______________________________________
## Combat Attack Target Change Events
- NWNX_ON_ATTACK_TARGET_CHANGE_BEFORE
- NWNX_ON_ATTACK_TARGET_CHANGE_AFTER
`OBJECT_SELF` = The creature changing the target its attacking.
Event Data Tag | Type | Notes
----------------------|--------|-------
OLD_TARGET_OBJECT_ID | object | The old attack target. OBJECT_INVALID if there was no old target. Old target may be dead/invalid. Convert to object with StringToObject() |
NEW_TARGET_OBJECT_ID | object | The new attack target. OBJECT_INVALID if there is no new target. Convert to object with StringToObject() |
AUTOMATIC_CHANGE | int | TRUE if the game automatically decided on the new target, FALSE if explicitly chosen |
RETARGETABLE | int | TRUE if the new target can be changed using NWNX_Events_SetEventResult() (Only in BEFORE) |
_______________________________________
## Creature Tile Change Events
- NWNX_ON_CREATURE_TILE_CHANGE_BEFORE
- NWNX_ON_CREATURE_TILE_CHANGE_AFTER
`OBJECT_SELF` = The creature changing tile positions.
Event Data Tag | Type | Notes
----------------------|--------|-------
OLD_TILE_INDEX | int | The index of the old tile. |
OLD_TILE_X | int | The tile grid x position of the old tile. |
OLD_TILE_Y | int | The tile grid y position of the old tile. |
NEW_TILE_INDEX | int | The index of the new tile. |
NEW_TILE_X | int | The tile grid x position of the new tile. |
NEW_TILE_Y | int | The tile grid y position of the new tile. |
_______________________________________
## Creature Jump To Point Events
- NWNX_ON_CREATURE_JUMP_TO_POINT_BEFORE
- NWNX_ON_CREATURE_JUMP_TO_POINT_AFTER
`OBJECT_SELF` = The creature jumping.
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET_AREA | object | The target area. Convert to object with StringToObject() |
POS_X | float | The x position the target is being moved to |
POS_Y | float | The y position the target is being moved to |
POS_Z | float | The z position the target is being moved to |
_______________________________________
## Creature Jump To Object Events
- NWNX_ON_CREATURE_JUMP_TO_OBJECT_BEFORE
- NWNX_ON_CREATURE_JUMP_TO_OBJECT_AFTER
`OBJECT_SELF` = The creature jumping.
Event Data Tag | Type | Notes
----------------------|--------|-------
OBJECT | object | The object the creature is jumping to. Convert to object with StringToObject() |
_______________________________________
## Item Property Effect Apply/Remove Events
- NWNX_ON_ITEMPROPERTY_EFFECT_APPLIED_BEFORE
- NWNX_ON_ITEMPROPERTY_EFFECT_APPLIED_AFTER
- NWNX_ON_ITEMPROPERTY_EFFECT_REMOVED_BEFORE
- NWNX_ON_ITEMPROPERTY_EFFECT_REMOVED_AFTER
`OBJECT_SELF` = The item source of the item property.
Event Data Tag | Type | Notes
----------------------|--------|-------
CREATURE | object | The creature to which Convert to object with StringToObject() |
LOADING_GAME | int | TRUE if the itemproperty is being applied when loading into the game and not due to equipping the item. |
INVENTORY_SLOT | int | The INVENTORY_SLOT_* the item is (un)equipped to/from. |
PROPERTY | int | The ITEM_PROPERTY_* type. |
SUBTYPE | int | The subtype of the itemproperty. |
TAG | string | The optional tag set by TagItemProperty() |
COST_TABLE | int | The index into iprp_costtable.2da |
COST_TABLE_VALUE | int | The index into the 2da pointed at by COST_TABLE |
PARAM1 | int | The index into iprp_paramtable.2da |
PARAM1_VALUE | int | The index into the 2da pointed at by PARAM1 |
@note These events fire when the game applies or removes the effects from an itemproperty.
Skipping NWNX_ON_ITEMPROPERTY_EFFECT_APPLIED_BEFORE will stop the basegame effects for that itemproperty to not be applied.
If you skip the application of ITEM_PROPERTY_BONUS_SPELL_SLOT_OF_LEVEL_N or ITEM_PROPERTY_UNLIMITED_AMMUNITION you must also skip its removal event.
@note Any non-DURATION_TYPE_INSTANT effects applied to the creature in NWNX_ON_ITEMPROPERTY_EFFECT_APPLIED_BEFORE **must** be of type DURATION_TYPE_EQUIPPED
See the `NWNX_EFFECT_EXTEND_DURATION_TYPE` environment variable in NWNX_Effect on how to enable this duration type.
@note See the NWNX_Events README.md for an example script!
@note The whitelist is enabled by default for these events, to whitelist a particular itemproperty, do the following:
\code{.c}
NWNX_Events_AddIDToWhitelist("NWNX_ON_ITEMPROPERTY_EFFECT", ITEM_PROPERTY_*);
\endcode
*/
/*
/// @name Events Event Constants
/// @anchor events_events
/// @{
const string NWNX_ON_ADD_ASSOCIATE_BEFORE = "NWNX_ON_ADD_ASSOCIATE_BEFORE";
const string NWNX_ON_ADD_ASSOCIATE_AFTER = "NWNX_ON_ADD_ASSOCIATE_AFTER";
const string NWNX_ON_REMOVE_ASSOCIATE_BEFORE = "NWNX_ON_REMOVE_ASSOCIATE_BEFORE";
const string NWNX_ON_REMOVE_ASSOCIATE_AFTER = "NWNX_ON_REMOVE_ASSOCIATE_AFTER";
const string NWNX_ON_STEALTH_ENTER_BEFORE = "NWNX_ON_STEALTH_ENTER_BEFORE";
const string NWNX_ON_STEALTH_ENTER_AFTER = "NWNX_ON_STEALTH_ENTER_AFTER";
const string NWNX_ON_STEALTH_EXIT_BEFORE = "NWNX_ON_STEALTH_EXIT_BEFORE";
const string NWNX_ON_STEALTH_EXIT_AFTER = "NWNX_ON_STEALTH_EXIT_AFTER";
const string NWNX_ON_DETECT_ENTER_BEFORE = "NWNX_ON_DETECT_ENTER_BEFORE";
const string NWNX_ON_DETECT_ENTER_AFTER = "NWNX_ON_DETECT_ENTER_AFTER";
const string NWNX_ON_DETECT_EXIT_BEFORE = "NWNX_ON_DETECT_EXIT_BEFORE";
const string NWNX_ON_DETECT_EXIT_AFTER = "NWNX_ON_DETECT_EXIT_AFTER";
const string NWNX_ON_EXAMINE_OBJECT_BEFORE = "NWNX_ON_EXAMINE_OBJECT_BEFORE";
const string NWNX_ON_EXAMINE_OBJECT_AFTER = "NWNX_ON_EXAMINE_OBJECT_AFTER";
const string NWNX_ON_SET_NPC_FACTION_REPUTATION_BEFORE = "NWNX_ON_SET_NPC_FACTION_REPUTATION_BEFORE";
const string NWNX_ON_SET_NPC_FACTION_REPUTATION_AFTER = "NWNX_ON_SET_NPC_FACTION_REPUTATION_AFTER";
const string NWNX_ON_VALIDATE_USE_ITEM_BEFORE = "NWNX_ON_VALIDATE_USE_ITEM_BEFORE";
const string NWNX_ON_VALIDATE_USE_ITEM_AFTER = "NWNX_ON_VALIDATE_USE_ITEM_AFTER";
const string NWNX_ON_USE_ITEM_BEFORE = "NWNX_ON_USE_ITEM_BEFORE";
const string NWNX_ON_USE_ITEM_AFTER = "NWNX_ON_USE_ITEM_AFTER";
const string NWNX_ON_ITEM_INVENTORY_OPEN_BEFORE = "NWNX_ON_ITEM_INVENTORY_OPEN_BEFORE";
const string NWNX_ON_ITEM_INVENTORY_OPEN_AFTER = "NWNX_ON_ITEM_INVENTORY_OPEN_AFTER";
const string NWNX_ON_ITEM_INVENTORY_CLOSE_BEFORE = "NWNX_ON_ITEM_INVENTORY_CLOSE_BEFORE";
const string NWNX_ON_ITEM_INVENTORY_CLOSE_AFTER = "NWNX_ON_ITEM_INVENTORY_CLOSE_AFTER";
const string NWNX_ON_ITEM_AMMO_RELOAD_BEFORE = "NWNX_ON_ITEM_AMMO_RELOAD_BEFORE";
const string NWNX_ON_ITEM_AMMO_RELOAD_AFTER = "NWNX_ON_ITEM_AMMO_RELOAD_AFTER";
const string NWNX_ON_ITEM_SCROLL_LEARN_BEFORE = "NWNX_ON_ITEM_SCROLL_LEARN_BEFORE";
const string NWNX_ON_ITEM_SCROLL_LEARN_AFTER = "NWNX_ON_ITEM_SCROLL_LEARN_AFTER";
const string NWNX_ON_VALIDATE_ITEM_EQUIP_BEFORE = "NWNX_ON_VALIDATE_ITEM_EQUIP_BEFORE";
const string NWNX_ON_VALIDATE_ITEM_EQUIP_AFTER = "NWNX_ON_VALIDATE_ITEM_EQUIP_AFTER";
const string NWNX_ON_ITEM_EQUIP_BEFORE = "NWNX_ON_ITEM_EQUIP_BEFORE";
const string NWNX_ON_ITEM_EQUIP_AFTER = "NWNX_ON_ITEM_EQUIP_AFTER";
const string NWNX_ON_ITEM_UNEQUIP_BEFORE = "NWNX_ON_ITEM_UNEQUIP_BEFORE";
const string NWNX_ON_ITEM_UNEQUIP_AFTER = "NWNX_ON_ITEM_UNEQUIP_AFTER";
const string NWNX_ON_ITEM_DESTROY_OBJECT_BEFORE = "NWNX_ON_ITEM_DESTROY_OBJECT_BEFORE";
const string NWNX_ON_ITEM_DESTROY_OBJECT_AFTER = "NWNX_ON_ITEM_DESTROY_OBJECT_AFTER";
const string NWNX_ON_ITEM_DECREMENT_STACKSIZE_BEFORE = "NWNX_ON_ITEM_DECREMENT_STACKSIZE_BEFORE";
const string NWNX_ON_ITEM_DECREMENT_STACKSIZE_AFTER = "NWNX_ON_ITEM_DECREMENT_STACKSIZE_AFTER";
const string NWNX_ON_ITEM_USE_LORE_BEFORE = "NWNX_ON_ITEM_USE_LORE_BEFORE";
const string NWNX_ON_ITEM_USE_LORE_AFTER = "NWNX_ON_ITEM_USE_LORE_AFTER";
const string NWNX_ON_ITEM_PAY_TO_IDENTIFY_BEFORE = "NWNX_ON_ITEM_PAY_TO_IDENTIFY_BEFORE";
const string NWNX_ON_ITEM_PAY_TO_IDENTIFY_AFTER = "NWNX_ON_ITEM_PAY_TO_IDENTIFY_AFTER";
const string NWNX_ON_ITEM_SPLIT_BEFORE = "NWNX_ON_ITEM_SPLIT_BEFORE";
const string NWNX_ON_ITEM_SPLIT_AFTER = "NWNX_ON_ITEM_SPLIT_AFTER";
const string NWNX_ON_ITEM_MERGE_BEFORE = "NWNX_ON_ITEM_MERGE_BEFORE";
const string NWNX_ON_ITEM_MERGE_AFTER = "NWNX_ON_ITEM_MERGE_AFTER";
const string NWNX_ON_ITEM_ACQUIRE_BEFORE = "NWNX_ON_ITEM_ACQUIRE_BEFORE";
const string NWNX_ON_ITEM_ACQUIRE_AFTER = "NWNX_ON_ITEM_ACQUIRE_AFTER";
const string NWNX_ON_USE_FEAT_BEFORE = "NWNX_ON_USE_FEAT_BEFORE";
const string NWNX_ON_USE_FEAT_AFTER = "NWNX_ON_USE_FEAT_AFTER";
const string NWNX_ON_HAS_FEAT_BEFORE = "NWNX_ON_HAS_FEAT_BEFORE";
const string NWNX_ON_HAS_FEAT_AFTER = "NWNX_ON_HAS_FEAT_AFTER";
const string NWNX_ON_DM_GIVE_GOLD_BEFORE = "NWNX_ON_DM_GIVE_GOLD_BEFORE";
const string NWNX_ON_DM_GIVE_GOLD_AFTER = "NWNX_ON_DM_GIVE_GOLD_AFTER";
const string NWNX_ON_DM_GIVE_XP_BEFORE = "NWNX_ON_DM_GIVE_XP_BEFORE";
const string NWNX_ON_DM_GIVE_XP_AFTER = "NWNX_ON_DM_GIVE_XP_AFTER";
const string NWNX_ON_DM_GIVE_LEVEL_BEFORE = "NWNX_ON_DM_GIVE_LEVEL_BEFORE";
const string NWNX_ON_DM_GIVE_LEVEL_AFTER = "NWNX_ON_DM_GIVE_LEVEL_AFTER";
const string NWNX_ON_DM_GIVE_ALIGNMENT_BEFORE = "NWNX_ON_DM_GIVE_ALIGNMENT_BEFORE";
const string NWNX_ON_DM_GIVE_ALIGNMENT_AFTER = "NWNX_ON_DM_GIVE_ALIGNMENT_AFTER";
const string NWNX_ON_DM_SPAWN_OBJECT_BEFORE = "NWNX_ON_DM_SPAWN_OBJECT_BEFORE";
const string NWNX_ON_DM_SPAWN_OBJECT_AFTER = "NWNX_ON_DM_SPAWN_OBJECT_AFTER";
const string NWNX_ON_DM_GIVE_ITEM_BEFORE = "NWNX_ON_DM_GIVE_ITEM_BEFORE";
const string NWNX_ON_DM_GIVE_ITEM_AFTER = "NWNX_ON_DM_GIVE_ITEM_AFTER";
const string NWNX_ON_DM_HEAL_BEFORE = "NWNX_ON_DM_HEAL_BEFORE";
const string NWNX_ON_DM_HEAL_AFTER = "NWNX_ON_DM_HEAL_AFTER";
const string NWNX_ON_DM_KILL_BEFORE = "NWNX_ON_DM_KILL_BEFORE";
const string NWNX_ON_DM_KILL_AFTER = "NWNX_ON_DM_KILL_AFTER";
const string NWNX_ON_DM_TOGGLE_INVULNERABLE_BEFORE = "NWNX_ON_DM_TOGGLE_INVULNERABLE_BEFORE";
const string NWNX_ON_DM_TOGGLE_INVULNERABLE_AFTER = "NWNX_ON_DM_TOGGLE_INVULNERABLE_AFTER";
const string NWNX_ON_DM_FORCE_REST_BEFORE = "NWNX_ON_DM_FORCE_REST_BEFORE";
const string NWNX_ON_DM_FORCE_REST_AFTER = "NWNX_ON_DM_FORCE_REST_AFTER";
const string NWNX_ON_DM_LIMBO_BEFORE = "NWNX_ON_DM_LIMBO_BEFORE";
const string NWNX_ON_DM_LIMBO_AFTER = "NWNX_ON_DM_LIMBO_AFTER";
const string NWNX_ON_DM_TOGGLE_AI_BEFORE = "NWNX_ON_DM_TOGGLE_AI_BEFORE";
const string NWNX_ON_DM_TOGGLE_AI_AFTER = "NWNX_ON_DM_TOGGLE_AI_AFTER";
const string NWNX_ON_DM_TOGGLE_IMMORTAL_BEFORE = "NWNX_ON_DM_TOGGLE_IMMORTAL_BEFORE";
const string NWNX_ON_DM_TOGGLE_IMMORTAL_AFTER = "NWNX_ON_DM_TOGGLE_IMMORTAL_AFTER";
const string NWNX_ON_DM_GOTO_BEFORE = "NWNX_ON_DM_GOTO_BEFORE";
const string NWNX_ON_DM_GOTO_AFTER = "NWNX_ON_DM_GOTO_AFTER";
const string NWNX_ON_DM_POSSESS_BEFORE = "NWNX_ON_DM_POSSESS_BEFORE";
const string NWNX_ON_DM_POSSESS_AFTER = "NWNX_ON_DM_POSSESS_AFTER";
const string NWNX_ON_DM_POSSESS_FULL_POWER_BEFORE = "NWNX_ON_DM_POSSESS_FULL_POWER_BEFORE";
const string NWNX_ON_DM_POSSESS_FULL_POWER_AFTER = "NWNX_ON_DM_POSSESS_FULL_POWER_AFTER";
const string NWNX_ON_DM_TOGGLE_LOCK_BEFORE = "NWNX_ON_DM_TOGGLE_LOCK_BEFORE";
const string NWNX_ON_DM_TOGGLE_LOCK_AFTER = "NWNX_ON_DM_TOGGLE_LOCK_AFTER";
const string NWNX_ON_DM_DISABLE_TRAP_BEFORE = "NWNX_ON_DM_DISABLE_TRAP_BEFORE";
const string NWNX_ON_DM_DISABLE_TRAP_AFTER = "NWNX_ON_DM_DISABLE_TRAP_AFTER";
const string NWNX_ON_DM_JUMP_TO_POINT_BEFORE = "NWNX_ON_DM_JUMP_TO_POINT_BEFORE";
const string NWNX_ON_DM_JUMP_TO_POINT_AFTER = "NWNX_ON_DM_JUMP_TO_POINT_AFTER";
const string NWNX_ON_DM_JUMP_TARGET_TO_POINT_BEFORE = "NWNX_ON_DM_JUMP_TARGET_TO_POINT_BEFORE";
const string NWNX_ON_DM_JUMP_TARGET_TO_POINT_AFTER = "NWNX_ON_DM_JUMP_TARGET_TO_POINT_AFTER";
const string NWNX_ON_DM_JUMP_ALL_PLAYERS_TO_POINT_BEFORE = "NWNX_ON_DM_JUMP_ALL_PLAYERS_TO_POINT_BEFORE";
const string NWNX_ON_DM_JUMP_ALL_PLAYERS_TO_POINT_AFTER = "NWNX_ON_DM_JUMP_ALL_PLAYERS_TO_POINT_AFTER";
const string NWNX_ON_DM_CHANGE_DIFFICULTY_BEFORE = "NWNX_ON_DM_CHANGE_DIFFICULTY_BEFORE";
const string NWNX_ON_DM_CHANGE_DIFFICULTY_AFTER = "NWNX_ON_DM_CHANGE_DIFFICULTY_AFTER";
const string NWNX_ON_DM_VIEW_INVENTORY_BEFORE = "NWNX_ON_DM_VIEW_INVENTORY_BEFORE";
const string NWNX_ON_DM_VIEW_INVENTORY_AFTER = "NWNX_ON_DM_VIEW_INVENTORY_AFTER";
const string NWNX_ON_DM_SPAWN_TRAP_ON_OBJECT_BEFORE = "NWNX_ON_DM_SPAWN_TRAP_ON_OBJECT_BEFORE";
const string NWNX_ON_DM_SPAWN_TRAP_ON_OBJECT_AFTER = "NWNX_ON_DM_SPAWN_TRAP_ON_OBJECT_AFTER";
const string NWNX_ON_DM_DUMP_LOCALS_BEFORE = "NWNX_ON_DM_DUMP_LOCALS_BEFORE";
const string NWNX_ON_DM_DUMP_LOCALS_AFTER = "NWNX_ON_DM_DUMP_LOCALS_AFTER";
const string NWNX_ON_DM_PLAYERDM_LOGIN_BEFORE = "NWNX_ON_DM_PLAYERDM_LOGIN_BEFORE";
const string NWNX_ON_DM_PLAYERDM_LOGIN_AFTER = "NWNX_ON_DM_PLAYERDM_LOGIN_AFTER";
const string NWNX_ON_DM_PLAYERDM_LOGOUT_BEFORE = "NWNX_ON_DM_PLAYERDM_LOGOUT_BEFORE";
const string NWNX_ON_DM_PLAYERDM_LOGOUT_AFTER = "NWNX_ON_DM_PLAYERDM_LOGOUT_AFTER";
const string NWNX_ON_DM_SET_STAT_BEFORE = "NWNX_ON_DM_SET_STAT_BEFORE";
const string NWNX_ON_DM_SET_STAT_AFTER = "NWNX_ON_DM_SET_STAT_AFTER";
const string NWNX_ON_DM_GET_VARIABLE_BEFORE = "NWNX_ON_DM_GET_VARIABLE_BEFORE";
const string NWNX_ON_DM_GET_VARIABLE_AFTER = "NWNX_ON_DM_GET_VARIABLE_AFTER";
const string NWNX_ON_DM_SET_VARIABLE_BEFORE = "NWNX_ON_DM_SET_VARIABLE_BEFORE";
const string NWNX_ON_DM_SET_VARIABLE_AFTER = "NWNX_ON_DM_SET_VARIABLE_AFTER";
const string NWNX_ON_DM_SET_FACTION_BEFORE = "NWNX_ON_DM_SET_FACTION_BEFORE";
const string NWNX_ON_DM_SET_FACTION_AFTER = "NWNX_ON_DM_SET_FACTION_AFTER";
const string NWNX_ON_DM_APPEAR_BEFORE = "NWNX_ON_DM_APPEAR_BEFORE";
const string NWNX_ON_DM_APPEAR_AFTER = "NWNX_ON_DM_APPEAR_AFTER";
const string NWNX_ON_DM_DISAPPEAR_BEFORE = "NWNX_ON_DM_DISAPPEAR_BEFORE";
const string NWNX_ON_DM_DISAPPEAR_AFTER = "NWNX_ON_DM_DISAPPEAR_AFTER";
const string NWNX_ON_DM_TAKE_ITEM_BEFORE = "NWNX_ON_DM_TAKE_ITEM_BEFORE";
const string NWNX_ON_DM_TAKE_ITEM_AFTER = "NWNX_ON_DM_TAKE_ITEM_AFTER";
const string NWNX_ON_DM_SET_TIME_BEFORE = "NWNX_ON_DM_SET_TIME_BEFORE";
const string NWNX_ON_DM_SET_TIME_AFTER = "NWNX_ON_DM_SET_TIME_AFTER";
const string NWNX_ON_DM_SET_DATE_BEFORE = "NWNX_ON_DM_SET_DATE_BEFORE";
const string NWNX_ON_DM_SET_DATE_AFTER = "NWNX_ON_DM_SET_DATE_AFTER";
const string NWNX_ON_DM_SET_FACTION_REPUTATION_BEFORE = "NWNX_ON_DM_SET_FACTION_REPUTATION_BEFORE";
const string NWNX_ON_DM_SET_FACTION_REPUTATION_AFTER = "NWNX_ON_DM_SET_FACTION_REPUTATION_AFTER";
const string NWNX_ON_DM_GET_FACTION_REPUTATION_BEFORE = "NWNX_ON_DM_GET_FACTION_REPUTATION_BEFORE";
const string NWNX_ON_DM_GET_FACTION_REPUTATION_AFTER = "NWNX_ON_DM_GET_FACTION_REPUTATION_AFTER";
const string NWNX_ON_CLIENT_DISCONNECT_BEFORE = "NWNX_ON_CLIENT_DISCONNECT_BEFORE";
const string NWNX_ON_CLIENT_DISCONNECT_AFTER = "NWNX_ON_CLIENT_DISCONNECT_AFTER";
const string NWNX_ON_CLIENT_CONNECT_BEFORE = "NWNX_ON_CLIENT_CONNECT_BEFORE";
const string NWNX_ON_CLIENT_CONNECT_AFTER = "NWNX_ON_CLIENT_CONNECT_AFTER";
const string NWNX_ON_COMBAT_ENTER_BEFORE = "NWNX_ON_COMBAT_ENTER_BEFORE";
const string NWNX_ON_COMBAT_ENTER_AFTER = "NWNX_ON_COMBAT_ENTER_AFTER";
const string NWNX_ON_COMBAT_EXIT_BEFORE = "NWNX_ON_COMBAT_EXIT_BEFORE";
const string NWNX_ON_COMBAT_EXIT_AFTER = "NWNX_ON_COMBAT_EXIT_AFTER";
const string NWNX_ON_START_COMBAT_ROUND_BEFORE = "NWNX_ON_START_COMBAT_ROUND_BEFORE";
const string NWNX_ON_START_COMBAT_ROUND_AFTER = "NWNX_ON_START_COMBAT_ROUND_AFTER";
const string NWNX_ON_DISARM_BEFORE = "NWNX_ON_DISARM_BEFORE";
const string NWNX_ON_DISARM_AFTER = "NWNX_ON_DISARM_AFTER";
const string NWNX_ON_CAST_SPELL_BEFORE = "NWNX_ON_CAST_SPELL_BEFORE";
const string NWNX_ON_CAST_SPELL_AFTER = "NWNX_ON_CAST_SPELL_AFTER";
const string NWNX_ON_SET_MEMORIZED_SPELL_SLOT_BEFORE = "NWNX_SET_MEMORIZED_SPELL_SLOT_BEFORE";
const string NWNX_ON_SET_MEMORIZED_SPELL_SLOT_AFTER = "NWNX_SET_MEMORIZED_SPELL_SLOT_AFTER";
const string NWNX_ON_CLEAR_MEMORIZED_SPELL_SLOT_BEFORE = "NWNX_CLEAR_MEMORIZED_SPELL_SLOT_BEFORE";
const string NWNX_ON_CLEAR_MEMORIZED_SPELL_SLOT_AFTER = "NWNX_CLEAR_MEMORIZED_SPELL_SLOT_AFTER";
const string NWNX_ON_SPELL_INTERRUPTED_BEFORE = "NWNX_ON_SPELL_INTERRUPTED_BEFORE";
const string NWNX_ON_SPELL_INTERRUPTED_AFTER = "NWNX_ON_SPELL_INTERRUPTED_AFTER";
const string NWNX_ON_SPELL_FAILED_BEFORE = "NWNX_ON_SPELL_FAILED_BEFORE";
const string NWNX_ON_SPELL_FAILED_AFTER = "NWNX_ON_SPELL_FAILED_AFTER";
const string NWNX_ON_HEALER_KIT_BEFORE = "NWNX_ON_HEALER_KIT_BEFORE";
const string NWNX_ON_HEALER_KIT_AFTER = "NWNX_ON_HEALER_KIT_AFTER";
const string NWNX_ON_HEAL_BEFORE = "NWNX_ON_HEAL_BEFORE";
const string NWNX_ON_HEAL_AFTER = "NWNX_ON_HEAL_AFTER";
const string NWNX_ON_PARTY_LEAVE_BEFORE = "NWNX_ON_PARTY_LEAVE_BEFORE";
const string NWNX_ON_PARTY_LEAVE_AFTER = "NWNX_ON_PARTY_LEAVE_AFTER";
const string NWNX_ON_PARTY_KICK_BEFORE = "NWNX_ON_PARTY_KICK_BEFORE";
const string NWNX_ON_PARTY_KICK_AFTER = "NWNX_ON_PARTY_KICK_AFTER";
const string NWNX_ON_PARTY_TRANSFER_LEADERSHIP_BEFORE = "NWNX_ON_PARTY_TRANSFER_LEADERSHIP_BEFORE";
const string NWNX_ON_PARTY_TRANSFER_LEADERSHIP_AFTER = "NWNX_ON_PARTY_TRANSFER_LEADERSHIP_AFTER";
const string NWNX_ON_PARTY_INVITE_BEFORE = "NWNX_ON_PARTY_INVITE_BEFORE";
const string NWNX_ON_PARTY_INVITE_AFTER = "NWNX_ON_PARTY_INVITE_AFTER";
const string NWNX_ON_PARTY_IGNORE_INVITATION_BEFORE = "NWNX_ON_PARTY_IGNORE_INVITATION_BEFORE";
const string NWNX_ON_PARTY_IGNORE_INVITATION_AFTER = "NWNX_ON_PARTY_IGNORE_INVITATION_AFTER";
const string NWNX_ON_PARTY_ACCEPT_INVITATION_BEFORE = "NWNX_ON_PARTY_ACCEPT_INVITATION_BEFORE";
const string NWNX_ON_PARTY_ACCEPT_INVITATION_AFTER = "NWNX_ON_PARTY_ACCEPT_INVITATION_AFTER";
const string NWNX_ON_PARTY_REJECT_INVITATION_BEFORE = "NWNX_ON_PARTY_REJECT_INVITATION_BEFORE";
const string NWNX_ON_PARTY_REJECT_INVITATION_AFTER = "NWNX_ON_PARTY_REJECT_INVITATION_AFTER";
const string NWNX_ON_PARTY_KICK_HENCHMAN_BEFORE = "NWNX_ON_PARTY_KICK_HENCHMAN_BEFORE";
const string NWNX_ON_PARTY_KICK_HENCHMAN_AFTER = "NWNX_ON_PARTY_KICK_HENCHMAN_AFTER";
const string NWNX_ON_COMBAT_MODE_ON = "NWNX_ON_COMBAT_MODE_ON";
const string NWNX_ON_COMBAT_MODE_OFF = "NWNX_ON_COMBAT_MODE_OFF";
const string NWNX_ON_USE_SKILL_BEFORE = "NWNX_ON_USE_SKILL_BEFORE";
const string NWNX_ON_USE_SKILL_AFTER = "NWNX_ON_USE_SKILL_AFTER";
const string NWNX_ON_MAP_PIN_ADD_PIN_BEFORE = "NWNX_ON_MAP_PIN_ADD_PIN_BEFORE";
const string NWNX_ON_MAP_PIN_ADD_PIN_AFTER = "NWNX_ON_MAP_PIN_ADD_PIN_AFTER";
const string NWNX_ON_MAP_PIN_CHANGE_PIN_BEFORE = "NWNX_ON_MAP_PIN_CHANGE_PIN_BEFORE";
const string NWNX_ON_MAP_PIN_CHANGE_PIN_AFTER = "NWNX_ON_MAP_PIN_CHANGE_PIN_AFTER";
const string NWNX_ON_MAP_PIN_DESTROY_PIN_BEFORE = "NWNX_ON_MAP_PIN_DESTROY_PIN_BEFORE";
const string NWNX_ON_MAP_PIN_DESTROY_PIN_AFTER = "NWNX_ON_MAP_PIN_DESTROY_PIN_AFTER";
const string NWNX_ON_DO_LISTEN_DETECTION_BEFORE = "NWNX_ON_DO_LISTEN_DETECTION_BEFORE";
const string NWNX_ON_DO_LISTEN_DETECTION_AFTER = "NWNX_ON_DO_LISTEN_DETECTION_AFTER";
const string NWNX_ON_DO_SPOT_DETECTION_BEFORE = "NWNX_ON_DO_SPOT_DETECTION_BEFORE";
const string NWNX_ON_DO_SPOT_DETECTION_AFTER = "NWNX_ON_DO_SPOT_DETECTION_AFTER";
const string NWNX_ON_POLYMORPH_BEFORE = "NWNX_ON_POLYMORPH_BEFORE";
const string NWNX_ON_POLYMORPH_AFTER = "NWNX_ON_POLYMORPH_AFTER";
const string NWNX_ON_UNPOLYMORPH_BEFORE = "NWNX_ON_UNPOLYMORPH_BEFORE";
const string NWNX_ON_UNPOLYMORPH_AFTER = "NWNX_ON_UNPOLYMORPH_AFTER";
const string NWNX_ON_EFFECT_APPLIED_BEFORE = "NWNX_ON_EFFECT_APPLIED_BEFORE";
const string NWNX_ON_EFFECT_APPLIED_AFTER = "NWNX_ON_EFFECT_APPLIED_AFTER";
const string NWNX_ON_EFFECT_REMOVED_BEFORE = "NWNX_ON_EFFECT_REMOVED_BEFORE";
const string NWNX_ON_EFFECT_REMOVED_AFTER = "NWNX_ON_EFFECT_REMOVED_AFTER";
const string NWNX_ON_QUICKCHAT_BEFORE = "NWNX_ON_QUICKCHAT_BEFORE";
const string NWNX_ON_QUICKCHAT_AFTER = "NWNX_ON_QUICKCHAT_AFTER";
const string NWNX_ON_INVENTORY_OPEN_BEFORE = "NWNX_ON_INVENTORY_OPEN_BEFORE";
const string NWNX_ON_INVENTORY_OPEN_AFTER = "NWNX_ON_INVENTORY_OPEN_AFTER";
const string NWNX_ON_INVENTORY_SELECT_PANEL_BEFORE = "NWNX_ON_INVENTORY_SELECT_PANEL_BEFORE";
const string NWNX_ON_INVENTORY_SELECT_PANEL_AFTER = "NWNX_ON_INVENTORY_SELECT_PANEL_AFTER";
const string NWNX_ON_BARTER_START_BEFORE = "NWNX_ON_BARTER_START_BEFORE";
const string NWNX_ON_BARTER_START_AFTER = "NWNX_ON_BARTER_START_AFTER";
const string NWNX_ON_BARTER_END_BEFORE = "NWNX_ON_BARTER_END_BEFORE";
const string NWNX_ON_BARTER_END_AFTER = "NWNX_ON_BARTER_END_AFTER";
const string NWNX_ON_BARTER_ADD_ITEM_BEFORE = "NWNX_ON_BARTER_ADD_ITEM_BEFORE";
const string NWNX_ON_BARTER_ADD_ITEM_AFTER = "NWNX_ON_BARTER_ADD_ITEM_AFTER";
const string NWNX_ON_TRAP_DISARM_BEFORE = "NWNX_ON_TRAP_DISARM_BEFORE";
const string NWNX_ON_TRAP_DISARM_AFTER = "NWNX_ON_TRAP_DISARM_AFTER";
const string NWNX_ON_TRAP_ENTER_BEFORE = "NWNX_ON_TRAP_ENTER_BEFORE";
const string NWNX_ON_TRAP_ENTER_AFTER = "NWNX_ON_TRAP_ENTER_AFTER";
const string NWNX_ON_TRAP_EXAMINE_BEFORE = "NWNX_ON_TRAP_EXAMINE_BEFORE";
const string NWNX_ON_TRAP_EXAMINE_AFTER = "NWNX_ON_TRAP_EXAMINE_AFTER";
const string NWNX_ON_TRAP_FLAG_BEFORE = "NWNX_ON_TRAP_FLAG_BEFORE";
const string NWNX_ON_TRAP_FLAG_AFTER = "NWNX_ON_TRAP_FLAG_AFTER";
const string NWNX_ON_TRAP_RECOVER_BEFORE = "NWNX_ON_TRAP_RECOVER_BEFORE";
const string NWNX_ON_TRAP_RECOVER_AFTER = "NWNX_ON_TRAP_RECOVER_AFTER";
const string NWNX_ON_TRAP_SET_BEFORE = "NWNX_ON_TRAP_SET_BEFORE";
const string NWNX_ON_TRAP_SET_AFTER = "NWNX_ON_TRAP_SET_AFTER";
const string NWNX_ON_TIMING_BAR_START_BEFORE = "NWNX_ON_TIMING_BAR_START_BEFORE";
const string NWNX_ON_TIMING_BAR_START_AFTER = "NWNX_ON_TIMING_BAR_START_AFTER";
const string NWNX_ON_TIMING_BAR_STOP_BEFORE = "NWNX_ON_TIMING_BAR_STOP_BEFORE";
const string NWNX_ON_TIMING_BAR_STOP_AFTER = "NWNX_ON_TIMING_BAR_STOP_AFTER";
const string NWNX_ON_TIMING_BAR_CANCEL_BEFORE = "NWNX_ON_TIMING_BAR_CANCEL_BEFORE";
const string NWNX_ON_TIMING_BAR_CANCEL_AFTER = "NWNX_ON_TIMING_BAR_CANCEL_AFTER";
const string NWNX_ON_WEBHOOK_SUCCESS = "NWNX_ON_WEBHOOK_SUCCESS";
const string NWNX_ON_WEBHOOK_FAILURE = "NWNX_ON_WEBHOOK_FAILURE";
const string NWNX_ON_CHECK_STICKY_PLAYER_NAME_RESERVED_BEFORE = "NWNX_ON_CHECK_STICKY_PLAYER_NAME_RESERVED_BEFORE";
const string NWNX_ON_CHECK_STICKY_PLAYER_NAME_RESERVED_AFTER = "NWNX_ON_CHECK_STICKY_PLAYER_NAME_RESERVED_AFTER";
const string NWNX_ON_SERVER_CHARACTER_SAVE_BEFORE = "NWNX_ON_SERVER_CHARACTER_SAVE_BEFORE";
const string NWNX_ON_SERVER_CHARACTER_SAVE_AFTER = "NWNX_ON_SERVER_CHARACTER_SAVE_AFTER";
const string NWNX_ON_CLIENT_EXPORT_CHARACTER_BEFORE = "NWNX_ON_CLIENT_EXPORT_CHARACTER_BEFORE";
const string NWNX_ON_CLIENT_EXPORT_CHARACTER_AFTER = "NWNX_ON_CLIENT_EXPORT_CHARACTER_AFTER";
const string NWNX_ON_LEVEL_UP_BEFORE = "NWNX_ON_LEVEL_UP_BEFORE";
const string NWNX_ON_LEVEL_UP_AFTER = "NWNX_ON_LEVEL_UP_AFTER";
const string NWNX_ON_LEVEL_UP_AUTOMATIC_BEFORE = "NWNX_ON_LEVEL_UP_AUTOMATIC_BEFORE";
const string NWNX_ON_LEVEL_UP_AUTOMATIC_AFTER = "NWNX_ON_LEVEL_UP_AUTOMATIC_AFTER";
const string NWNX_ON_LEVEL_DOWN_BEFORE = "NWNX_ON_LEVEL_DOWN_BEFORE";
const string NWNX_ON_LEVEL_DOWN_AFTER = "NWNX_ON_LEVEL_DOWN_AFTER";
const string NWNX_ON_INVENTORY_ADD_ITEM_BEFORE = "NWNX_ON_INVENTORY_ADD_ITEM_BEFORE";
const string NWNX_ON_INVENTORY_ADD_ITEM_AFTER = "NWNX_ON_INVENTORY_ADD_ITEM_AFTER";
const string NWNX_ON_INVENTORY_REMOVE_ITEM_BEFORE = "NWNX_ON_INVENTORY_REMOVE_ITEM_BEFORE";
const string NWNX_ON_INVENTORY_REMOVE_ITEM_AFTER = "NWNX_ON_INVENTORY_REMOVE_ITEM_AFTER";
const string NWNX_ON_INVENTORY_ADD_GOLD_BEFORE = "NWNX_ON_INVENTORY_ADD_GOLD_BEFORE";
const string NWNX_ON_INVENTORY_ADD_GOLD_AFTER = "NWNX_ON_INVENTORY_ADD_GOLD_AFTER";
const string NWNX_ON_INVENTORY_REMOVE_GOLD_BEFORE = "NWNX_ON_INVENTORY_REMOVE_GOLD_BEFORE";
const string NWNX_ON_INVENTORY_REMOVE_GOLD_AFTER = "NWNX_ON_INVENTORY_REMOVE_GOLD_AFTER";
const string NWNX_ON_PVP_ATTITUDE_CHANGE_BEFORE = "NWNX_ON_PVP_ATTITUDE_CHANGE_BEFORE";
const string NWNX_ON_PVP_ATTITUDE_CHANGE_AFTER = "NWNX_ON_PVP_ATTITUDE_CHANGE_AFTER";
const string NWNX_ON_INPUT_WALK_TO_WAYPOINT_BEFORE = "NWNX_ON_INPUT_WALK_TO_WAYPOINT_BEFORE";
const string NWNX_ON_INPUT_WALK_TO_WAYPOINT_AFTER = "NWNX_ON_INPUT_WALK_TO_WAYPOINT_AFTER";
const string NWNX_ON_MATERIALCHANGE_BEFORE = "NWNX_ON_MATERIALCHANGE_BEFORE";
const string NWNX_ON_MATERIALCHANGE_AFTER = "NWNX_ON_MATERIALCHANGE_AFTER";
const string NWNX_ON_INPUT_ATTACK_OBJECT_BEFORE = "NWNX_ON_INPUT_ATTACK_OBJECT_BEFORE";
const string NWNX_ON_INPUT_ATTACK_OBJECT_AFTER = "NWNX_ON_INPUT_ATTACK_OBJECT_AFTER";
const string NWNX_ON_INPUT_FORCE_MOVE_TO_OBJECT_BEFORE = "NWNX_ON_INPUT_FORCE_MOVE_TO_OBJECT_BEFORE";
const string NWNX_ON_INPUT_FORCE_MOVE_TO_OBJECT_AFTER = "NWNX_ON_INPUT_FORCE_MOVE_TO_OBJECT_AFTER";
const string NWNX_ON_INPUT_CAST_SPELL_BEFORE = "NWNX_ON_INPUT_CAST_SPELL_BEFORE";
const string NWNX_ON_INPUT_CAST_SPELL_AFTER = "NWNX_ON_INPUT_CAST_SPELL_AFTER";
const string NWNX_ON_INPUT_KEYBOARD_BEFORE = "NWNX_ON_INPUT_KEYBOARD_BEFORE";
const string NWNX_ON_INPUT_KEYBOARD_AFTER = "NWNX_ON_INPUT_KEYBOARD_AFTER";
const string NWNX_ON_INPUT_TOGGLE_PAUSE_BEFORE = "NWNX_ON_INPUT_TOGGLE_PAUSE_BEFORE";
const string NWNX_ON_INPUT_TOGGLE_PAUSE_AFTER = "NWNX_ON_INPUT_TOGGLE_PAUSE_AFTER";
const string NWNX_ON_OBJECT_LOCK_BEFORE = "NWNX_ON_OBJECT_LOCK_BEFORE";
const string NWNX_ON_OBJECT_LOCK_AFTER = "NWNX_ON_OBJECT_LOCK_AFTER";
const string NWNX_ON_OBJECT_UNLOCK_BEFORE = "NWNX_ON_OBJECT_UNLOCK_BEFORE";
const string NWNX_ON_OBJECT_UNLOCK_AFTER = "NWNX_ON_OBJECT_UNLOCK_AFTER";
const string NWNX_ON_UUID_COLLISION_BEFORE = "NWNX_ON_UUID_COLLISION_BEFORE";
const string NWNX_ON_UUID_COLLISION_AFTER = "NWNX_ON_UUID_COLLISION_AFTER";
const string NWNX_ON_RESOURCE_ADDED = "NWNX_ON_RESOURCE_ADDED";
const string NWNX_ON_RESOURCE_REMOVED = "NWNX_ON_RESOURCE_REMOVED";
const string NWNX_ON_RESOURCE_MODIFIED = "NWNX_ON_RESOURCE_MODIFIED";
const string NWNX_ON_ELC_VALIDATE_CHARACTER_BEFORE = "NWNX_ON_ELC_VALIDATE_CHARACTER_BEFORE";
const string NWNX_ON_ELC_VALIDATE_CHARACTER_AFTER = "NWNX_ON_ELC_VALIDATE_CHARACTER_AFTER";
const string NWNX_ON_QUICKBAR_SET_BUTTON_BEFORE = "NWNX_ON_QUICKBAR_SET_BUTTON_BEFORE";
const string NWNX_ON_QUICKBAR_SET_BUTTON_AFTER = "NWNX_ON_QUICKBAR_SET_BUTTON_AFTER";
const string NWNX_ON_CALENDAR_HOUR = "NWNX_ON_CALENDAR_HOUR";
const string NWNX_ON_CALENDAR_DAY = "NWNX_ON_CALENDAR_DAY";
const string NWNX_ON_CALENDAR_MONTH = "NWNX_ON_CALENDAR_MONTH";
const string NWNX_ON_CALENDAR_YEAR = "NWNX_ON_CALENDAR_YEAR";
const string NWNX_ON_CALENDAR_DAWN = "NWNX_ON_CALENDAR_DAWN";
const string NWNX_ON_CALENDAR_DUSK = "NWNX_ON_CALENDAR_DUSK";
const string NWNX_ON_BROADCAST_CAST_SPELL_BEFORE = "NWNX_ON_BROADCAST_CAST_SPELL_BEFORE";
const string NWNX_ON_BROADCAST_CAST_SPELL_AFTER = "NWNX_ON_BROADCAST_CAST_SPELL_AFTER";
const string NWNX_ON_DEBUG_RUN_SCRIPT_BEFORE = "NWNX_ON_DEBUG_RUN_SCRIPT_BEFORE";
const string NWNX_ON_DEBUG_RUN_SCRIPT_AFTER = "NWNX_ON_DEBUG_RUN_SCRIPT_AFTER";
const string NWNX_ON_DEBUG_RUN_SCRIPT_CHUNK_BEFORE = "NWNX_ON_DEBUG_RUN_SCRIPT_CHUNK_BEFORE";
const string NWNX_ON_DEBUG_RUN_SCRIPT_CHUNK_AFTER = "NWNX_ON_DEBUG_RUN_SCRIPT_CHUNK_AFTER";
const string NWNX_ON_DEBUG_PLAY_VISUAL_EFFECT_BEFORE = "NWNX_ON_DEBUG_PLAY_VISUAL_EFFECT_BEFORE";
const string NWNX_ON_DEBUG_PLAY_VISUAL_EFFECT_AFTER = "NWNX_ON_DEBUG_PLAY_VISUAL_EFFECT_AFTER";
const string NWNX_ON_STORE_REQUEST_BUY_BEFORE = "NWNX_ON_STORE_REQUEST_BUY_BEFORE";
const string NWNX_ON_STORE_REQUEST_BUY_AFTER = "NWNX_ON_STORE_REQUEST_BUY_AFTER";
const string NWNX_ON_STORE_REQUEST_SELL_BEFORE = "NWNX_ON_STORE_REQUEST_SELL_BEFORE";
const string NWNX_ON_STORE_REQUEST_SELL_AFTER = "NWNX_ON_STORE_REQUEST_SELL_AFTER";
const string NWNX_ON_SERVER_SEND_AREA_BEFORE = "NWNX_ON_SERVER_SEND_AREA_BEFORE";
const string NWNX_ON_SERVER_SEND_AREA_AFTER = "NWNX_ON_SERVER_SEND_AREA_AFTER";
const string NWNX_ON_JOURNAL_OPEN_BEFORE = "NWNX_ON_JOURNAL_OPEN_BEFORE";
const string NWNX_ON_JOURNAL_OPEN_AFTER = "NWNX_ON_JOURNAL_OPEN_AFTER";
const string NWNX_ON_JOURNAL_CLOSE_BEFORE = "NWNX_ON_JOURNAL_CLOSE_BEFORE";
const string NWNX_ON_JOURNAL_CLOSE_AFTER = "NWNX_ON_JOURNAL_CLOSE_AFTER";
const string NWNX_ON_INPUT_EMOTE_BEFORE = "NWNX_ON_INPUT_EMOTE_BEFORE";
const string NWNX_ON_INPUT_EMOTE_AFTER = "NWNX_ON_INPUT_EMOTE_AFTER";
const string NWNX_ON_COMBAT_DR_BROKEN_BEFORE = "NWNX_ON_COMBAT_DR_BROKEN_BEFORE";
const string NWNX_ON_COMBAT_DR_BROKEN_AFTER = "NWNX_ON_COMBAT_DR_BROKEN_AFTER";
const string NWNX_ON_UNPOSSESS_FAMILIAR_BEFORE = "NWNX_ON_UNPOSSESS_FAMILIAR_BEFORE";
const string NWNX_ON_UNPOSSESS_FAMILIAR_AFTER = "NWNX_ON_UNPOSSESS_FAMILIAR_AFTER";
const string NWNX_ON_CLIENT_LEVEL_UP_BEGIN_BEFORE = "NWNX_ON_CLIENT_LEVEL_UP_BEGIN_BEFORE";
const string NWNX_ON_CLIENT_LEVEL_UP_BEGIN_AFTER = "NWNX_ON_CLIENT_LEVEL_UP_BEGIN_AFTER";
const string NWNX_ON_POSSESS_FAMILIAR_BEFORE = "NWNX_ON_POSSESS_FAMILIAR_BEFORE";
const string NWNX_ON_POSSESS_FAMILIAR_AFTER = "NWNX_ON_POSSESS_FAMILIAR_AFTER";
const string NWNX_ON_CHARACTER_SHEET_PERMITTED_BEFORE = "NWNX_ON_CHARACTER_SHEET_PERMITTED_BEFORE";
const string NWNX_ON_CHARACTER_SHEET_PERMITTED_AFTER = "NWNX_ON_CHARACTER_SHEET_PERMITTED_AFTER";
const string NWNX_ON_CHARACTER_SHEET_OPEN_BEFORE = "NWNX_ON_CHARACTER_SHEET_OPEN_BEFORE";
const string NWNX_ON_CHARACTER_SHEET_OPEN_AFTER = "NWNX_ON_CHARACTER_SHEET_OPEN_AFTER";
const string NWNX_ON_CHARACTER_SHEET_CLOSE_BEFORE = "NWNX_ON_CHARACTER_SHEET_CLOSE_BEFORE";
const string NWNX_ON_CHARACTER_SHEET_CLOSE_AFTER = "NWNX_ON_CHARACTER_SHEET_CLOSE_AFTER";
const string NWNX_ON_CLIENT_SET_DEVICE_PROPERTY_BEFORE = "NWNX_ON_CLIENT_SET_DEVICE_PROPERTY_BEFORE";
const string NWNX_ON_CLIENT_SET_DEVICE_PROPERTY_AFTER = "NWNX_ON_CLIENT_SET_DEVICE_PROPERTY_AFTER";
const string NWNX_ON_INPUT_DROP_ITEM_BEFORE = "NWNX_ON_INPUT_DROP_ITEM_BEFORE";
const string NWNX_ON_INPUT_DROP_ITEM_AFTER = "NWNX_ON_INPUT_DROP_ITEM_AFTER";
const string NWNX_ON_DECREMENT_SPELL_COUNT_BEFORE = "NWNX_ON_DECREMENT_SPELL_COUNT_BEFORE";
const string NWNX_ON_DECREMENT_SPELL_COUNT_AFTER = "NWNX_ON_DECREMENT_SPELL_COUNT_AFTER";
const string NWNX_ON_RUN_EVENT_SCRIPT_BEFORE = "NWNX_ON_RUN_EVENT_SCRIPT_BEFORE";
const string NWNX_ON_RUN_EVENT_SCRIPT_AFTER = "NWNX_ON_RUN_EVENT_SCRIPT_AFTER";
const string NWNX_ON_OBJECT_USE_BEFORE = "NWNX_ON_OBJECT_USE_BEFORE";
const string NWNX_ON_OBJECT_USE_AFTER = "NWNX_ON_OBJECT_USE_AFTER";
const string NWNX_ON_PLACEABLE_OPEN_BEFORE = "NWNX_ON_PLACEABLE_OPEN_BEFORE";
const string NWNX_ON_PLACEABLE_OPEN_AFTER = "NWNX_ON_PLACEABLE_OPEN_AFTER";
const string NWNX_ON_PLACEABLE_CLOSE_BEFORE = "NWNX_ON_PLACEABLE_CLOSE_BEFORE";
const string NWNX_ON_PLACEABLE_CLOSE_AFTER = "NWNX_ON_PLACEABLE_CLOSE_AFTER";
const string NWNX_ON_BROADCAST_SAFE_PROJECTILE_BEFORE = "NWNX_ON_BROADCAST_SAFE_PROJECTILE_BEFORE";
const string NWNX_ON_BROADCAST_SAFE_PROJECTILE_AFTER = "NWNX_ON_BROADCAST_SAFE_PROJECTILE_AFTER";
const string NWNX_ON_BROADCAST_ATTACK_OF_OPPORTUNITY_BEFORE = "NWNX_ON_BROADCAST_ATTACK_OF_OPPORTUNITY_BEFORE";
const string NWNX_ON_BROADCAST_ATTACK_OF_OPPORTUNITY_AFTER = "NWNX_ON_BROADCAST_ATTACK_OF_OPPORTUNITY_AFTER";
const string NWNX_ON_COMBAT_ATTACK_OF_OPPORTUNITY_BEFORE = "NWNX_ON_COMBAT_ATTACK_OF_OPPORTUNITY_BEFORE";
const string NWNX_ON_COMBAT_ATTACK_OF_OPPORTUNITY_AFTER = "NWNX_ON_COMBAT_ATTACK_OF_OPPORTUNITY_AFTER";
const string NWNX_ON_AREA_PLAY_BATTLE_MUSIC_BEFORE = "NWNX_ON_AREA_PLAY_BATTLE_MUSIC_BEFORE";
const string NWNX_ON_AREA_PLAY_BATTLE_MUSIC_AFTER = "NWNX_ON_AREA_PLAY_BATTLE_MUSIC_AFTER";
const string NWNX_ON_ATTACK_TARGET_CHANGE_BEFORE = "NWNX_ON_ATTACK_TARGET_CHANGE_BEFORE";
const string NWNX_ON_ATTACK_TARGET_CHANGE_AFTER = "NWNX_ON_ATTACK_TARGET_CHANGE_AFTER";
const string NWNX_ON_CREATURE_TILE_CHANGE_BEFORE = "NWNX_ON_CREATURE_TILE_CHANGE_BEFORE";
const string NWNX_ON_CREATURE_TILE_CHANGE_AFTER = "NWNX_ON_CREATURE_TILE_CHANGE_AFTER";
const string NWNX_ON_CREATURE_JUMP_TO_POINT_BEFORE = "NWNX_ON_CREATURE_JUMP_TO_POINT_BEFORE";
const string NWNX_ON_CREATURE_JUMP_TO_POINT_AFTER = "NWNX_ON_CREATURE_JUMP_TO_POINT_AFTER";
const string NWNX_ON_CREATURE_JUMP_TO_OBJECT_BEFORE = "NWNX_ON_CREATURE_JUMP_TO_OBJECT_BEFORE";
const string NWNX_ON_CREATURE_JUMP_TO_OBJECT_AFTER = "NWNX_ON_CREATURE_JUMP_TO_OBJECT_AFTER";
const string NWNX_ON_ITEMPROPERTY_EFFECT_APPLIED_BEFORE = "NWNX_ON_ITEMPROPERTY_EFFECT_APPLIED_BEFORE";
const string NWNX_ON_ITEMPROPERTY_EFFECT_APPLIED_AFTER = "NWNX_ON_ITEMPROPERTY_EFFECT_APPLIED_AFTER";
const string NWNX_ON_ITEMPROPERTY_EFFECT_REMOVED_BEFORE = "NWNX_ON_ITEMPROPERTY_EFFECT_REMOVED_BEFORE";
const string NWNX_ON_ITEMPROPERTY_EFFECT_REMOVED_AFTER = "NWNX_ON_ITEMPROPERTY_EFFECT_REMOVED_AFTER";
/// @}
/// @name Events ObjectType Constants
/// @anchor events_objtype
/// @{
const int NWNX_EVENTS_OBJECT_TYPE_CREATURE = 5;
const int NWNX_EVENTS_OBJECT_TYPE_ITEM = 6;
const int NWNX_EVENTS_OBJECT_TYPE_TRIGGER = 7;
@@ -1533,9 +2133,11 @@ const int NWNX_EVENTS_OBJECT_TYPE_PLACEABLE = 9;
const int NWNX_EVENTS_OBJECT_TYPE_WAYPOINT = 12;
const int NWNX_EVENTS_OBJECT_TYPE_ENCOUNTER = 13;
const int NWNX_EVENTS_OBJECT_TYPE_PORTAL = 15;
*/
/// @}
/*
/// @name Events TimingBar Constants
/// @anchor events_timingbar
/// @{
const int NWNX_EVENTS_TIMING_BAR_TRAP_FLAG = 1;
const int NWNX_EVENTS_TIMING_BAR_TRAP_RECOVER = 2;
const int NWNX_EVENTS_TIMING_BAR_TRAP_DISARM = 3;
@@ -1545,14 +2147,45 @@ const int NWNX_EVENTS_TIMING_BAR_REST = 6;
const int NWNX_EVENTS_TIMING_BAR_UNLOCK = 7;
const int NWNX_EVENTS_TIMING_BAR_LOCK = 8;
const int NWNX_EVENTS_TIMING_BAR_CUSTOM = 10;
*/
/// @}
/*
/// @name Events SetVariable Constants
/// @anchor events_setvariable
/// @{
const int NWNX_EVENTS_DM_SET_VARIABLE_TYPE_INT = 0;
const int NWNX_EVENTS_DM_SET_VARIABLE_TYPE_FLOAT = 1;
const int NWNX_EVENTS_DM_SET_VARIABLE_TYPE_STRING = 2;
const int NWNX_EVENTS_DM_SET_VARIABLE_TYPE_OBJECT = 3;
*/
/// @}
/// @name Events BroadcastSafeProjectile Constants
/// @anchor events_projtype
/// @{
const int NWNX_EVENTS_BROADCAST_SAFE_PROJECTILE_TYPE_WEAPON_VFX_NONE = 0;
const int NWNX_EVENTS_BROADCAST_SAFE_PROJECTILE_TYPE_WEAPON_VFX_ACID = 1;
const int NWNX_EVENTS_BROADCAST_SAFE_PROJECTILE_TYPE_WEAPON_VFX_COLD = 2;
const int NWNX_EVENTS_BROADCAST_SAFE_PROJECTILE_TYPE_WEAPON_VFX_ELECTRICAL = 3;
const int NWNX_EVENTS_BROADCAST_SAFE_PROJECTILE_TYPE_WEAPON_VFX_FIRE = 4;
const int NWNX_EVENTS_BROADCAST_SAFE_PROJECTILE_TYPE_WEAPON_VFX_SONIC = 5;
const int NWNX_EVENTS_BROADCAST_SAFE_PROJECTILE_TYPE_SPELL_DEFAULT = 6;
const int NWNX_EVENTS_BROADCAST_SAFE_PROJECTILE_TYPE_SPELL_USE_PATH = 7;
/// @}
/// @name Spell failed event reasons
/// @anchor events_spellfailreason
/// @{
const int NWNX_EVENTS_SPELLFAIL_REASON_CANCELED = 0;
const int NWNX_EVENTS_SPELLFAIL_REASON_COUNTERSPELL = 1;
const int NWNX_EVENTS_SPELLFAIL_REASON_ASF = 2;
const int NWNX_EVENTS_SPELLFAIL_REASON_SPELLFAILURE = 3;
const int NWNX_EVENTS_SPELLFAIL_REASON_LOST_TARGET = 4;
const int NWNX_EVENTS_SPELLFAIL_REASON_SILENCED = 5;
const int NWNX_EVENTS_SPELLFAIL_REASON_DEFCAST_CONCENTRATION = 6;
const int NWNX_EVENTS_SPELLFAIL_REASON_ENTANGLE_CONCENTRATION = 7;
const int NWNX_EVENTS_SPELLFAIL_REASON_POLYMORPHED = 8;
const int NWNX_EVENTS_SPELLFAIL_REASON_CANT_CAST = 9;
const int NWNX_EVENTS_SPELLFAIL_REASON_CANT_USE_HANDS = 10;
/// @}
/// @brief Scripts can subscribe to events.
///
@@ -1567,6 +2200,10 @@ void NWNX_Events_SubscribeEvent(string evt, string script);
/// @param script The script.
void NWNX_Events_UnsubscribeEvent(string evt, string script);
/// @brief Unsubscribe all scripts from all events starting with prefix.
/// @param prefix the prefix to match against. Can be empty.
void NWNX_Events_UnsubscribeAllStartingWith(string prefix);
/// @brief Script chunks can subscribe to events.
///
/// Some events are dispatched via the NWNX plugin (see NWNX_EVENTS_EVENT_* constants).
@@ -1617,9 +2254,9 @@ string NWNX_Events_GetEventData(string tag);
/// - DMAction events
/// - Client connect event
/// - Client Export Character event
/// - Spell events
/// - Spell events (except SPELL_FAILED)
/// - QuickChat events
/// - Barter event (START only)
/// - Barter event (START/ADD_ITEM only)
/// - Trap events
/// - Sticky Player Name event
/// - Server Character Save Events
@@ -1642,6 +2279,9 @@ string NWNX_Events_GetEventData(string tag);
/// - Decrement Spell Count event
/// - Play Visual Effect event
/// - EventScript event
/// - Broadcast Safe Projectile event
/// - Attack of Opportunity events
/// - Creature Jump events
void NWNX_Events_SkipEvent();
/// Set the return value of the event.
@@ -1661,6 +2301,7 @@ void NWNX_Events_SkipEvent();
/// - Stealth event -> "1" to perform HiPS (without the feat), "0" to bypass HiPS
/// - Faction set reputation event -> The new reputation to apply instead. ("0" - "100")
/// - CharacterSheetPermitted event -> "1" allow the player to view the character sheet or "0" to disallow
/// - Attack target change event -> The new target object. Convert to string with ObjectToString()
void NWNX_Events_SetEventResult(string data);
/// Returns the current event name
@@ -1683,8 +2324,10 @@ void NWNX_Events_RemoveObjectFromDispatchList(string sEvent, string sScriptOrChu
///
/// ONLY WORKS WITH THE FOLLOWING EVENTS -> ID TYPES:
/// - NWNX_ON_CAST_SPELL -> SpellID
/// - NWNX_ON_SPELL_FAILED -> SpellID
/// - NWNX_ON_HAS_FEAT -> FeatID (default enabled)
/// - NWNX_ON_RUN_EVENT_SCRIPT -> EVENT_SCRIPT_* (default enabled)
/// - NWNX_ON_BROADCAST_SAFE_PROJECTILE -> NWNX_ON_BROADCAST_SAFE_PROJECTILE_TYPE for ProjectileType, NWNX_ON_BROADCAST_SAFE_PROJECTILE_SPELL for SpellID
///
/// @note This enables the whitelist for ALL scripts subscribed to sEvent.
/// @param sEvent The event name without _BEFORE / _AFTER.
@@ -1728,6 +2371,14 @@ void NWNX_Events_UnsubscribeEvent(string evt, string script)
NWNX_CallFunction(NWNX_Events, sFunc);
}
void NWNX_Events_UnsubscribeAllStartingWith(string prefix)
{
string sFunc = "UnsubscribeAllStartingWith";
NWNX_PushArgumentString(prefix);
NWNX_CallFunction(NWNX_Events, sFunc);
}
void NWNX_Events_SubscribeEventScriptChunk(string sEvent, string sScriptChunk, int bWrapIntoMain = TRUE)
{
string sFunc = "SubscribeEventScriptChunk";