ff_i_stringify
Value-to-string conversion functions.
Converts NWScript engine types to human-readable strings for logging and debug output: objects, locations, vectors, effects, and item properties.
-
string EventScriptToString(int nEvent)
- Parameters:
nEvent – An EVENT_SCRIPT_* constant.
Returns the literal string for the event script handler (EVENT_SCRIPT_*)
-
int EventToEventScript(object oObject, string sEvent)
- Parameters:
oObject – An object (type determines which EVENT_SCRIPT_* constants are tried).
sEvent – An ON_DEFAULT_* or ON_* event name string.
Returns the event script (EVENT_SCRIPT_*) for the event ON_*.
-
string EventScriptToEvent(int nHandler)
- Parameters:
nHandler – An EVENT_SCRIPT_* constant.
Return the event name (eg: ON_DEFAULT_*) for EVENT_SCRIPT_*.
-
string GetBaseItemTypeString(int nBaseItemType)
- Parameters:
nBaseItemType – A BASE_ITEM_* value
Get the string representation of item base type.
Source code
// @code
#include "ff_i_console"
#include "ff_i_events_c"
// =============================================================================
// EVENT_SCRIPT_* to STRING
// =============================================================================
//! @brief Returns the literal string for the event script handler (EVENT_SCRIPT_*)
//! @param nEvent An EVENT_SCRIPT_* constant.
string EventScriptToString(int nEvent);
string EventScriptToString(int nEvent)
{
switch (nEvent)
{
case 0: return "NWNX_EVENT";
case EVENT_SCRIPT_AREAOFEFFECT_ON_HEARTBEAT: return "EVENT_SCRIPT_AREAOFEFFECT_ON_HEARTBEAT";
case EVENT_SCRIPT_AREAOFEFFECT_ON_OBJECT_ENTER: return "EVENT_SCRIPT_AREAOFEFFECT_ON_OBJECT_ENTER";
case EVENT_SCRIPT_AREAOFEFFECT_ON_OBJECT_EXIT: return "EVENT_SCRIPT_AREAOFEFFECT_ON_OBJECT_EXIT";
case EVENT_SCRIPT_AREA_ON_ENTER: return "EVENT_SCRIPT_AREA_ON_ENTER";
case EVENT_SCRIPT_AREA_ON_EXIT: return "EVENT_SCRIPT_AREA_ON_EXIT";
case EVENT_SCRIPT_AREA_ON_HEARTBEAT: return "EVENT_SCRIPT_AREA_ON_HEARTBEAT";
case EVENT_SCRIPT_AREA_ON_USER_DEFINED_EVENT: return "EVENT_SCRIPT_AREA_ON_USER_DEFINED_EVENT";
case EVENT_SCRIPT_CREATURE_ON_BLOCKED_BY_DOOR: return "EVENT_SCRIPT_CREATURE_ON_BLOCKED_BY_DOOR";
case EVENT_SCRIPT_CREATURE_ON_DAMAGED: return "EVENT_SCRIPT_CREATURE_ON_DAMAGED";
case EVENT_SCRIPT_CREATURE_ON_DEATH: return "EVENT_SCRIPT_CREATURE_ON_DEATH";
case EVENT_SCRIPT_CREATURE_ON_DIALOGUE: return "EVENT_SCRIPT_CREATURE_ON_DIALOGUE";
case EVENT_SCRIPT_CREATURE_ON_DISTURBED: return "EVENT_SCRIPT_CREATURE_ON_DISTURBED";
case EVENT_SCRIPT_CREATURE_ON_END_COMBATROUND: return "EVENT_SCRIPT_CREATURE_ON_END_COMBATROUND";
case EVENT_SCRIPT_CREATURE_ON_HEARTBEAT: return "EVENT_SCRIPT_CREATURE_ON_HEARTBEAT";
case EVENT_SCRIPT_CREATURE_ON_MELEE_ATTACKED: return "EVENT_SCRIPT_CREATURE_ON_MELEE_ATTACKED";
case EVENT_SCRIPT_CREATURE_ON_NOTICE: return "EVENT_SCRIPT_CREATURE_ON_NOTICE";
case EVENT_SCRIPT_CREATURE_ON_RESTED: return "EVENT_SCRIPT_CREATURE_ON_RESTED";
case EVENT_SCRIPT_CREATURE_ON_SPAWN_IN: return "EVENT_SCRIPT_CREATURE_ON_SPAWN_IN";
case EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT: return "EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT";
case EVENT_SCRIPT_DOOR_ON_CLICKED: return "EVENT_SCRIPT_DOOR_ON_CLICKED";
case EVENT_SCRIPT_DOOR_ON_CLOSE: return "EVENT_SCRIPT_DOOR_ON_CLOSE";
case EVENT_SCRIPT_DOOR_ON_DAMAGE: return "EVENT_SCRIPT_DOOR_ON_DAMAGE";
case EVENT_SCRIPT_DOOR_ON_DEATH: return "EVENT_SCRIPT_DOOR_ON_DEATH";
case EVENT_SCRIPT_DOOR_ON_DIALOGUE: return "EVENT_SCRIPT_DOOR_ON_DIALOGUE";
case EVENT_SCRIPT_DOOR_ON_DISARM: return "EVENT_SCRIPT_DOOR_ON_DISARM";
case EVENT_SCRIPT_DOOR_ON_FAIL_TO_OPEN: return "EVENT_SCRIPT_DOOR_ON_FAIL_TO_OPEN";
case EVENT_SCRIPT_DOOR_ON_HEARTBEAT: return "EVENT_SCRIPT_DOOR_ON_HEARTBEAT";
case EVENT_SCRIPT_DOOR_ON_LOCK: return "EVENT_SCRIPT_DOOR_ON_LOCK";
case EVENT_SCRIPT_DOOR_ON_MELEE_ATTACKED: return "EVENT_SCRIPT_DOOR_ON_MELEE_ATTACKED";
case EVENT_SCRIPT_DOOR_ON_OPEN: return "EVENT_SCRIPT_DOOR_ON_OPEN";
case EVENT_SCRIPT_DOOR_ON_SPELLCASTAT: return "EVENT_SCRIPT_DOOR_ON_SPELLCASTAT";
case EVENT_SCRIPT_DOOR_ON_TRAPTRIGGERED: return "EVENT_SCRIPT_DOOR_ON_TRAPTRIGGERED";
case EVENT_SCRIPT_DOOR_ON_UNLOCK: return "EVENT_SCRIPT_DOOR_ON_UNLOCK";
case EVENT_SCRIPT_ENCOUNTER_ON_ENCOUNTER_EXHAUSTED: return "EVENT_SCRIPT_ENCOUNTER_ON_ENCOUNTER_EXHAUSTED";
case EVENT_SCRIPT_ENCOUNTER_ON_OBJECT_ENTER: return "EVENT_SCRIPT_ENCOUNTER_ON_OBJECT_ENTER";
case EVENT_SCRIPT_ENCOUNTER_ON_OBJECT_EXIT: return "EVENT_SCRIPT_ENCOUNTER_ON_OBJECT_EXIT";
case EVENT_SCRIPT_ENCOUNTER_ON_USER_DEFINED_EVENT: return "EVENT_SCRIPT_ENCOUNTER_ON_USER_DEFINED_EVENT";
case EVENT_SCRIPT_MODULE_ON_ACQUIRE_ITEM: return "EVENT_SCRIPT_MODULE_ON_ACQUIRE_ITEM";
case EVENT_SCRIPT_MODULE_ON_ACTIVATE_ITEM: return "EVENT_SCRIPT_MODULE_ON_ACTIVATE_ITEM";
case EVENT_SCRIPT_MODULE_ON_CLIENT_ENTER: return "EVENT_SCRIPT_MODULE_ON_CLIENT_ENTER";
case EVENT_SCRIPT_MODULE_ON_CLIENT_EXIT: return "EVENT_SCRIPT_MODULE_ON_CLIENT_EXIT";
case EVENT_SCRIPT_MODULE_ON_EQUIP_ITEM: return "EVENT_SCRIPT_MODULE_ON_EQUIP_ITEM";
case EVENT_SCRIPT_MODULE_ON_HEARTBEAT: return "EVENT_SCRIPT_MODULE_ON_HEARTBEAT";
case EVENT_SCRIPT_MODULE_ON_LOSE_ITEM: return "EVENT_SCRIPT_MODULE_ON_LOSE_ITEM";
case EVENT_SCRIPT_MODULE_ON_MODULE_LOAD: return "EVENT_SCRIPT_MODULE_ON_MODULE_LOAD";
case EVENT_SCRIPT_MODULE_ON_MODULE_START: return "EVENT_SCRIPT_MODULE_ON_MODULE_START";
case EVENT_SCRIPT_MODULE_ON_NUI_EVENT: return "EVENT_SCRIPT_MODULE_ON_NUI_EVENT";
case EVENT_SCRIPT_MODULE_ON_PLAYER_CANCEL_CUTSCENE: return "EVENT_SCRIPT_MODULE_ON_PLAYER_CANCEL_CUTSCENE";
case EVENT_SCRIPT_MODULE_ON_PLAYER_CHAT: return "EVENT_SCRIPT_MODULE_ON_PLAYER_CHAT";
case EVENT_SCRIPT_MODULE_ON_PLAYER_DEATH: return "EVENT_SCRIPT_MODULE_ON_PLAYER_DEATH";
case EVENT_SCRIPT_MODULE_ON_PLAYER_DYING: return "EVENT_SCRIPT_MODULE_ON_PLAYER_DYING";
case EVENT_SCRIPT_MODULE_ON_PLAYER_GUIEVENT: return "EVENT_SCRIPT_MODULE_ON_PLAYER_GUIEVENT";
case EVENT_SCRIPT_MODULE_ON_PLAYER_LEVEL_UP: return "EVENT_SCRIPT_MODULE_ON_PLAYER_LEVEL_UP";
case EVENT_SCRIPT_MODULE_ON_PLAYER_REST: return "EVENT_SCRIPT_MODULE_ON_PLAYER_REST";
case EVENT_SCRIPT_MODULE_ON_PLAYER_TARGET: return "EVENT_SCRIPT_MODULE_ON_PLAYER_TARGET";
case EVENT_SCRIPT_MODULE_ON_PLAYER_TILE_ACTION: return "EVENT_SCRIPT_MODULE_ON_PLAYER_TILE_ACTION";
case EVENT_SCRIPT_MODULE_ON_RESPAWN_BUTTON_PRESSED: return "EVENT_SCRIPT_MODULE_ON_RESPAWN_BUTTON_PRESSED";
case EVENT_SCRIPT_MODULE_ON_UNEQUIP_ITEM: return "EVENT_SCRIPT_MODULE_ON_UNEQUIP_ITEM";
case EVENT_SCRIPT_MODULE_ON_USER_DEFINED_EVENT: return "EVENT_SCRIPT_MODULE_ON_USER_DEFINED_EVENT";
case EVENT_SCRIPT_PLACEABLE_ON_CLOSED: return "EVENT_SCRIPT_PLACEABLE_ON_CLOSED";
case EVENT_SCRIPT_PLACEABLE_ON_DAMAGED: return "EVENT_SCRIPT_PLACEABLE_ON_DAMAGED";
case EVENT_SCRIPT_PLACEABLE_ON_DEATH: return "EVENT_SCRIPT_PLACEABLE_ON_DEATH";
case EVENT_SCRIPT_PLACEABLE_ON_DIALOGUE: return "EVENT_SCRIPT_PLACEABLE_ON_DIALOGUE";
case EVENT_SCRIPT_PLACEABLE_ON_DISARM: return "EVENT_SCRIPT_PLACEABLE_ON_DISARM";
case EVENT_SCRIPT_PLACEABLE_ON_HEARTBEAT: return "EVENT_SCRIPT_PLACEABLE_ON_HEARTBEAT";
case EVENT_SCRIPT_PLACEABLE_ON_INVENTORYDISTURBED: return "EVENT_SCRIPT_PLACEABLE_ON_INVENTORYDISTURBED";
case EVENT_SCRIPT_PLACEABLE_ON_LEFT_CLICK: return "EVENT_SCRIPT_PLACEABLE_ON_LEFT_CLICK";
case EVENT_SCRIPT_PLACEABLE_ON_LOCK: return "EVENT_SCRIPT_PLACEABLE_ON_LOCK";
case EVENT_SCRIPT_PLACEABLE_ON_MELEEATTACKED: return "EVENT_SCRIPT_PLACEABLE_ON_MELEEATTACKED";
case EVENT_SCRIPT_PLACEABLE_ON_OPEN: return "EVENT_SCRIPT_PLACEABLE_ON_OPEN";
case EVENT_SCRIPT_PLACEABLE_ON_SPELLCASTAT: return "EVENT_SCRIPT_PLACEABLE_ON_SPELLCASTAT";
case EVENT_SCRIPT_PLACEABLE_ON_TRAPTRIGGERED: return "EVENT_SCRIPT_PLACEABLE_ON_TRAPTRIGGERED";
case EVENT_SCRIPT_PLACEABLE_ON_UNLOCK: return "EVENT_SCRIPT_PLACEABLE_ON_UNLOCK";
case EVENT_SCRIPT_PLACEABLE_ON_USED: return "EVENT_SCRIPT_PLACEABLE_ON_USED";
case EVENT_SCRIPT_STORE_ON_CLOSE: return "EVENT_SCRIPT_STORE_ON_CLOSE";
case EVENT_SCRIPT_STORE_ON_OPEN: return "EVENT_SCRIPT_STORE_ON_OPEN";
case EVENT_SCRIPT_TRIGGER_ON_CLICKED: return "EVENT_SCRIPT_TRIGGER_ON_CLICKED";
case EVENT_SCRIPT_TRIGGER_ON_DISARMED: return "EVENT_SCRIPT_TRIGGER_ON_DISARMED";
case EVENT_SCRIPT_TRIGGER_ON_HEARTBEAT: return "EVENT_SCRIPT_TRIGGER_ON_HEARTBEAT";
case EVENT_SCRIPT_TRIGGER_ON_OBJECT_ENTER: return "EVENT_SCRIPT_TRIGGER_ON_OBJECT_ENTER";
case EVENT_SCRIPT_TRIGGER_ON_OBJECT_EXIT: return "EVENT_SCRIPT_TRIGGER_ON_OBJECT_EXIT";
case EVENT_SCRIPT_TRIGGER_ON_TRAPTRIGGERED: return "EVENT_SCRIPT_TRIGGER_ON_TRAPTRIGGERED";
}
LogError(__FILE__ + "::" + __FUNCTION__ + ", event " + IntToString(nEvent) + " not mapped");
LogStackTrace(__FILE__, __FUNCTION__, __LINE__);
return "";
}
// =============================================================================
// EVENT_* to EVENT_SCRIPT
// =============================================================================
//! @brief Returns the event script (EVENT_SCRIPT_*) for the event ON_*
//! @param oObject An object (type determines which EVENT_SCRIPT_* constants are tried).
//! @param sEvent An ON_DEFAULT_* or ON_* event name string.
int EventToEventScript(object oObject, string sEvent);
int EventToEventScript(object oObject, string sEvent)
{
int nType = NWNX_Object_GetInternalObjectType(oObject);
switch (nType)
{
case NWNX_OBJECT_TYPE_INTERNAL_AREA:
if (FALSE) {}
else if (sEvent == ON_DEFAULT_AREA_ENTER) return EVENT_SCRIPT_AREA_ON_ENTER;
else if (sEvent == ON_DEFAULT_AREA_EXIT) return EVENT_SCRIPT_AREA_ON_EXIT;
break;
case NWNX_OBJECT_TYPE_INTERNAL_TRIGGER:
if (FALSE) {}
else if (sEvent == ON_DEFAULT_TRIGGER_ENTER) return EVENT_SCRIPT_TRIGGER_ON_OBJECT_ENTER;
else if (sEvent == ON_DEFAULT_TRIGGER_EXIT) return EVENT_SCRIPT_TRIGGER_ON_OBJECT_EXIT;
break;
case NWNX_OBJECT_TYPE_INTERNAL_PLACEABLE:
if (FALSE) {}
else if (sEvent == ON_DEFAULT_OBJECT_CLOSED) return EVENT_SCRIPT_PLACEABLE_ON_CLOSED;
else if (sEvent == ON_DEFAULT_OBJECT_OPENED) return EVENT_SCRIPT_PLACEABLE_ON_OPEN;
else if (sEvent == ON_DEFAULT_OBJECT_DEATH) return EVENT_SCRIPT_PLACEABLE_ON_DEATH;
else if (sEvent == ON_DEFAULT_OBJECT_USED) return EVENT_SCRIPT_PLACEABLE_ON_USED;
else if (sEvent == ON_DEFAULT_OBJECT_CLICKED) return EVENT_SCRIPT_PLACEABLE_ON_LEFT_CLICK;
break;
case NWNX_OBJECT_TYPE_INTERNAL_DOOR:
if (FALSE) {}
else if (sEvent == ON_DEFAULT_OBJECT_FAIL_TO_OPEN) return EVENT_SCRIPT_DOOR_ON_FAIL_TO_OPEN;
else if (sEvent == ON_DEFAULT_OBJECT_OPENED) return EVENT_SCRIPT_DOOR_ON_OPEN;
else if (sEvent == ON_DEFAULT_OBJECT_DEATH) return EVENT_SCRIPT_DOOR_ON_DEATH;
else if (sEvent == ON_DEFAULT_OBJECT_USED) return EVENT_SCRIPT_DOOR_ON_CLICKED;
break;
case NWNX_OBJECT_TYPE_INTERNAL_STORE:
break;
}
if (FALSE) {}
else if (sEvent == ON_NUI_EVENT) return EVENT_SCRIPT_MODULE_ON_NUI_EVENT;
else if (sEvent == NWNX_ON_INVENTORY_ADD_GOLD_BEFORE) return 0;
else if (sEvent == NWNX_ON_INVENTORY_ADD_ITEM_BEFORE) return 0;
LogError(__FILE__ + "::" + __FUNCTION__ + ":" + IntToString(__LINE__) + ", event " + sEvent + " not mapped for object type " + IntToString(nType));
LogStackTrace(__FILE__, __FUNCTION__, __LINE__);
return 0;
}
// =============================================================================
// EVENT_SCRIPT to string EVENT
// =============================================================================
// Gets the Event Name for the corresponding Event Script
//! @brief Return the event name (eg: ON_DEFAULT_*) for EVENT_SCRIPT_*
//! @param nHandler An EVENT_SCRIPT_* constant.
string EventScriptToEvent(int nHandler);
string EventScriptToEvent(int nHandler)
{
switch (nHandler)
{
case EVENT_SCRIPT_AREA_ON_ENTER: return ON_DEFAULT_AREA_ENTER;
case EVENT_SCRIPT_AREA_ON_EXIT: return ON_DEFAULT_AREA_EXIT;
case EVENT_SCRIPT_DOOR_ON_CLICKED: return ON_DEFAULT_OBJECT_CLICKED;
case EVENT_SCRIPT_DOOR_ON_CLOSE: return ON_DEFAULT_OBJECT_CLOSED;
case EVENT_SCRIPT_DOOR_ON_DAMAGE: return ON_DEFAULT_OBJECT_DAMAGE;
case EVENT_SCRIPT_DOOR_ON_DEATH: return ON_DEFAULT_OBJECT_DEATH;
case EVENT_SCRIPT_DOOR_ON_DIALOGUE: return ON_DEFAULT_OBJECT_DIALOGUE;
case EVENT_SCRIPT_DOOR_ON_DISARM: return ON_DEFAULT_OBJECT_DISARM;
case EVENT_SCRIPT_DOOR_ON_FAIL_TO_OPEN: return ON_DEFAULT_OBJECT_FAIL_TO_OPEN;
case EVENT_SCRIPT_DOOR_ON_LOCK: return ON_DEFAULT_OBJECT_LOCK;
case EVENT_SCRIPT_DOOR_ON_MELEE_ATTACKED: return ON_DEFAULT_OBJECT_MELEE_ATTACKED;
case EVENT_SCRIPT_DOOR_ON_OPEN: return ON_DEFAULT_OBJECT_OPENED;
case EVENT_SCRIPT_DOOR_ON_SPELLCASTAT: return ON_DEFAULT_OBJECT_SPELLCASTAT;
case EVENT_SCRIPT_DOOR_ON_TRAPTRIGGERED: return ON_DEFAULT_OBJECT_TRAPTRIGGERED;
case EVENT_SCRIPT_DOOR_ON_UNLOCK: return ON_DEFAULT_OBJECT_UNLOCK;
case EVENT_SCRIPT_MODULE_ON_ACQUIRE_ITEM: return ON_DEFAULT_ITEM_ACQUIRE;
case EVENT_SCRIPT_MODULE_ON_ACTIVATE_ITEM: return ON_DEFAULT_ITEM_ACTIVATE;
case EVENT_SCRIPT_MODULE_ON_EQUIP_ITEM: return ON_DEFAULT_ITEM_EQUIP;
case EVENT_SCRIPT_MODULE_ON_LOSE_ITEM: return ON_DEFAULT_ITEM_LOST;
case EVENT_SCRIPT_MODULE_ON_UNEQUIP_ITEM: return ON_DEFAULT_ITEM_UNEQUIP;
case EVENT_SCRIPT_MODULE_ON_CLIENT_ENTER: return ON_DEFAULT_CLIENT_ENTER;
case EVENT_SCRIPT_MODULE_ON_CLIENT_EXIT: return ON_DEFAULT_CLIENT_EXIT;
case EVENT_SCRIPT_MODULE_ON_MODULE_LOAD: return ON_MODULE_LOAD;
case EVENT_SCRIPT_MODULE_ON_MODULE_START: return ON_MODULE_START;
case EVENT_SCRIPT_MODULE_ON_NUI_EVENT: return ON_NUI_EVENT;
case EVENT_SCRIPT_PLACEABLE_ON_CLOSED: return ON_DEFAULT_OBJECT_CLOSED;
case EVENT_SCRIPT_PLACEABLE_ON_DAMAGED: return ON_DEFAULT_OBJECT_DAMAGE;
case EVENT_SCRIPT_PLACEABLE_ON_DEATH: return ON_DEFAULT_OBJECT_DEATH;
case EVENT_SCRIPT_PLACEABLE_ON_DIALOGUE: return ON_DEFAULT_OBJECT_DIALOGUE;
case EVENT_SCRIPT_PLACEABLE_ON_DISARM: return ON_DEFAULT_OBJECT_DISARM;
case EVENT_SCRIPT_PLACEABLE_ON_LEFT_CLICK: return ON_DEFAULT_OBJECT_CLICKED;
case EVENT_SCRIPT_PLACEABLE_ON_LOCK: return ON_DEFAULT_OBJECT_LOCK;
case EVENT_SCRIPT_PLACEABLE_ON_MELEEATTACKED: return ON_DEFAULT_OBJECT_MELEE_ATTACKED;
case EVENT_SCRIPT_PLACEABLE_ON_OPEN: return ON_DEFAULT_OBJECT_OPENED;
case EVENT_SCRIPT_PLACEABLE_ON_USED: return ON_DEFAULT_OBJECT_USED;
case EVENT_SCRIPT_STORE_ON_CLOSE: return ON_DEFAULT_STORE_CLOSED;
case EVENT_SCRIPT_STORE_ON_OPEN: return ON_DEFAULT_STORE_OPENED;
case EVENT_SCRIPT_TRIGGER_ON_OBJECT_ENTER: return ON_DEFAULT_TRIGGER_ENTER;
case EVENT_SCRIPT_TRIGGER_ON_OBJECT_EXIT: return ON_DEFAULT_TRIGGER_EXIT;
}
string sEvent = EventScriptToString(nHandler);
if (sEvent == "NWNX_EVENT")
return sEvent;
LogError(__FILE__ + "::" + __FUNCTION__ + ":" + IntToString(__LINE__) + ", event " + sEvent + " not mapped");
LogStackTrace(__FILE__, __FUNCTION__, __LINE__);
return "";
}
// =============================================================================
// BASE ITEMS
// =============================================================================
//! @brief Get the string representation of item base type
//! @param nBaseItemType A `BASE_ITEM_*` value
string GetBaseItemTypeString(int nBaseItemType);
string GetBaseItemTypeString(int nBaseItemType)
{
switch (nBaseItemType)
{
case BASE_ITEM_AMULET: return "BASE_ITEM_AMULET";
case BASE_ITEM_ARMOR: return "BASE_ITEM_ARMOR";
case BASE_ITEM_ARROW: return "BASE_ITEM_ARROW";
case BASE_ITEM_BASTARDSWORD: return "BASE_ITEM_BASTARDSWORD";
case BASE_ITEM_BATTLEAXE: return "BASE_ITEM_BATTLEAXE";
case BASE_ITEM_BELT: return "BASE_ITEM_BELT";
case BASE_ITEM_BLANK_POTION: return "BASE_ITEM_BLANK_POTION";
case BASE_ITEM_BLANK_SCROLL: return "BASE_ITEM_BLANK_SCROLL";
case BASE_ITEM_BLANK_WAND: return "BASE_ITEM_BLANK_WAND";
case BASE_ITEM_BOLT: return "BASE_ITEM_BOLT";
case BASE_ITEM_BOOK: return "BASE_ITEM_BOOK";
case BASE_ITEM_BOOTS: return "BASE_ITEM_BOOTS";
case BASE_ITEM_BRACER: return "BASE_ITEM_BRACER";
case BASE_ITEM_BULLET: return "BASE_ITEM_BULLET";
case BASE_ITEM_CBLUDGWEAPON: return "BASE_ITEM_CBLUDGWEAPON";
case BASE_ITEM_CLOAK: return "BASE_ITEM_CLOAK";
case BASE_ITEM_CLUB: return "BASE_ITEM_CLUB";
case BASE_ITEM_CPIERCWEAPON: return "BASE_ITEM_CPIERCWEAPON";
case BASE_ITEM_CRAFTMATERIALMED: return "BASE_ITEM_CRAFTMATERIALMED";
case BASE_ITEM_CRAFTMATERIALSML: return "BASE_ITEM_CRAFTMATERIALSML";
case BASE_ITEM_CREATUREITEM: return "BASE_ITEM_CREATUREITEM";
case BASE_ITEM_CSLASHWEAPON: return "BASE_ITEM_CSLASHWEAPON";
case BASE_ITEM_CSLSHPRCWEAP: return "BASE_ITEM_CSLSHPRCWEAP";
case BASE_ITEM_DAGGER: return "BASE_ITEM_DAGGER";
case BASE_ITEM_DART: return "BASE_ITEM_DART";
case BASE_ITEM_DIREMACE: return "BASE_ITEM_DIREMACE";
case BASE_ITEM_DOUBLEAXE: return "BASE_ITEM_DOUBLEAXE";
case BASE_ITEM_DWARVENWARAXE: return "BASE_ITEM_DWARVENWARAXE";
case BASE_ITEM_ENCHANTED_POTION: return "BASE_ITEM_ENCHANTED_POTION";
case BASE_ITEM_ENCHANTED_SCROLL: return "BASE_ITEM_ENCHANTED_SCROLL";
case BASE_ITEM_ENCHANTED_WAND: return "BASE_ITEM_ENCHANTED_WAND";
case BASE_ITEM_GEM: return "BASE_ITEM_GEM";
case BASE_ITEM_GLOVES: return "BASE_ITEM_GLOVES";
case BASE_ITEM_GOLD: return "BASE_ITEM_GOLD";
case BASE_ITEM_GREATAXE: return "BASE_ITEM_GREATAXE";
case BASE_ITEM_GREATSWORD: return "BASE_ITEM_GREATSWORD";
case BASE_ITEM_GRENADE: return "BASE_ITEM_GRENADE";
case BASE_ITEM_HALBERD: return "BASE_ITEM_HALBERD";
case BASE_ITEM_HANDAXE: return "BASE_ITEM_HANDAXE";
case BASE_ITEM_HEALERSKIT: return "BASE_ITEM_HEALERSKIT";
case BASE_ITEM_HEAVYCROSSBOW: return "BASE_ITEM_HEAVYCROSSBOW";
case BASE_ITEM_HEAVYFLAIL: return "BASE_ITEM_HEAVYFLAIL";
case BASE_ITEM_HELMET: return "BASE_ITEM_HELMET";
case BASE_ITEM_INVALID: return "BASE_ITEM_INVALID";
case BASE_ITEM_KAMA: return "BASE_ITEM_KAMA";
case BASE_ITEM_KATANA: return "BASE_ITEM_KATANA";
case BASE_ITEM_KEY: return "BASE_ITEM_KEY";
case BASE_ITEM_KUKRI: return "BASE_ITEM_KUKRI";
case BASE_ITEM_LARGEBOX: return "BASE_ITEM_LARGEBOX";
case BASE_ITEM_LARGESHIELD: return "BASE_ITEM_LARGESHIELD";
case BASE_ITEM_LIGHTCROSSBOW: return "BASE_ITEM_LIGHTCROSSBOW";
case BASE_ITEM_LIGHTFLAIL: return "BASE_ITEM_LIGHTFLAIL";
case BASE_ITEM_LIGHTHAMMER: return "BASE_ITEM_LIGHTHAMMER";
case BASE_ITEM_LIGHTMACE: return "BASE_ITEM_LIGHTMACE";
case BASE_ITEM_LONGBOW: return "BASE_ITEM_LONGBOW";
case BASE_ITEM_LONGSWORD: return "BASE_ITEM_LONGSWORD";
case BASE_ITEM_MAGICROD: return "BASE_ITEM_MAGICROD";
case BASE_ITEM_MAGICSTAFF: return "BASE_ITEM_MAGICSTAFF";
case BASE_ITEM_MAGICWAND: return "BASE_ITEM_MAGICWAND";
case BASE_ITEM_MISCLARGE: return "BASE_ITEM_MISCLARGE";
case BASE_ITEM_MISCMEDIUM: return "BASE_ITEM_MISCMEDIUM";
case BASE_ITEM_MISCSMALL: return "BASE_ITEM_MISCSMALL";
case BASE_ITEM_MISCTALL: return "BASE_ITEM_MISCTALL";
case BASE_ITEM_MISCTHIN: return "BASE_ITEM_MISCTHIN";
case BASE_ITEM_MISCWIDE: return "BASE_ITEM_MISCWIDE";
case BASE_ITEM_MORNINGSTAR: return "BASE_ITEM_MORNINGSTAR";
case BASE_ITEM_POTIONS: return "BASE_ITEM_POTIONS";
case BASE_ITEM_QUARTERSTAFF: return "BASE_ITEM_QUARTERSTAFF";
case BASE_ITEM_RAPIER: return "BASE_ITEM_RAPIER";
case BASE_ITEM_RING: return "BASE_ITEM_RING";
case BASE_ITEM_SCIMITAR: return "BASE_ITEM_SCIMITAR";
case BASE_ITEM_SCROLL: return "BASE_ITEM_SCROLL";
case BASE_ITEM_SCYTHE: return "BASE_ITEM_SCYTHE";
case BASE_ITEM_SHORTBOW: return "BASE_ITEM_SHORTBOW";
case BASE_ITEM_SHORTSPEAR: return "BASE_ITEM_SHORTSPEAR";
case BASE_ITEM_SHORTSWORD: return "BASE_ITEM_SHORTSWORD";
case BASE_ITEM_SHURIKEN: return "BASE_ITEM_SHURIKEN";
case BASE_ITEM_SICKLE: return "BASE_ITEM_SICKLE";
case BASE_ITEM_SLING: return "BASE_ITEM_SLING";
case BASE_ITEM_SMALLSHIELD: return "BASE_ITEM_SMALLSHIELD";
case BASE_ITEM_SPELLSCROLL: return "BASE_ITEM_SPELLSCROLL";
case BASE_ITEM_THIEVESTOOLS: return "BASE_ITEM_THIEVESTOOLS";
case BASE_ITEM_THROWINGAXE: return "BASE_ITEM_THROWINGAXE";
case BASE_ITEM_TORCH: return "BASE_ITEM_TORCH";
case BASE_ITEM_TOWERSHIELD: return "BASE_ITEM_TOWERSHIELD";
case BASE_ITEM_TRAPKIT: return "BASE_ITEM_TRAPKIT";
case BASE_ITEM_TWOBLADEDSWORD: return "BASE_ITEM_TWOBLADEDSWORD";
case BASE_ITEM_WARHAMMER: return "BASE_ITEM_WARHAMMER";
case BASE_ITEM_WHIP: return "BASE_ITEM_WHIP";
}
LogError(__FILE__ + "::" + __FUNCTION__ + ", event " + IntToString(nBaseItemType) + " not mapped");
LogStackTrace(__FILE__, __FUNCTION__, __LINE__);
return "";
}