EN6_PRC8/_module/nss/nwnx_feedback.nss
Jaysyn904 a6f6db7303 Initial commit
Initial commit.  Updated release archive.
2024-06-13 15:08:33 -04:00

497 lines
26 KiB
Plaintext

/// @addtogroup feedback Feedback
/// @brief Allows combatlog, feedback and journal updated messages to be hidden globally or per player.
/// @note
/// * If oPC == OBJECT_INVALID it will get/set the global state:
/// * TRUE = Message is globally hidden
/// * FALSE = Message is not globally hidden
/// * If oPC is a valid player it will get/set the personal state:
/// * TRUE = Message is hidden for oPC
/// * FALSE = Message is not hidden for oPC
/// * -1 = Personal state is not set for Message
/// @{
/// @file nwnx_feedback.nss
#include "nwnx"
const string NWNX_Feedback = "NWNX_Feedback"; ///< @private
/// @name Combat Log Message Types
/// @anchor combat_log_msgs
/// @{
const int NWNX_FEEDBACK_COMBATLOG_SIMPLE_ADJECTIVE = 1; // Simple_Adjective: <charname> : <adjective described by strref>
const int NWNX_FEEDBACK_COMBATLOG_SIMPLE_DAMAGE = 2; // Simple_Damage: <charname> damaged : <amount>
const int NWNX_FEEDBACK_COMBATLOG_COMPLEX_DAMAGE = 3; // Complex_Damage: <charname> damages <charname> : <amount>
const int NWNX_FEEDBACK_COMBATLOG_COMPLEX_DEATH = 4; // Complex_Death: <charname> killed <charname>
const int NWNX_FEEDBACK_COMBATLOG_COMPLEX_ATTACK = 5; // Complex_Attack: <charname> attacks <charname> : *hit* / *miss* / *parried* : (<attack roll> + <attack mod> = <modified total>)
const int NWNX_FEEDBACK_COMBATLOG_SPECIAL_ATTACK = 6; // Special_Attack: <charname> attempts <special attack> on <charname> : *success* / *failure* : (<attack roll> + <attack mod> = <modified roll>)
const int NWNX_FEEDBACK_COMBATLOG_SAVING_THROW = 7; // Saving_Throw: <charname> : <saving throw type> : *success* / *failure* : (<saving throw roll> + <saving throw modifier> = <modified total>)
const int NWNX_FEEDBACK_COMBATLOG_CAST_SPELL = 8; // Cast_Spell: <charname> casts <spell name> : Spellcraft check *failure* / *success*
const int NWNX_FEEDBACK_COMBATLOG_USE_SKILL = 9; // Use_Skill: <charname> : <skill name> : *success* / *failure* : (<skill roll> + <skill modifier> = <modified total> vs <DC> )
const int NWNX_FEEDBACK_COMBATLOG_SPELL_RESISTANCE = 10; // Spell_Resistance: <charname> : Spell Resistance <SR value> : *success* / *failure*
const int NWNX_FEEDBACK_COMBATLOG_FEEDBACK = 11; // Reason skill/feat/ability failed, SendMessageToPC() NOTE: This hides ALL feedback messages, to hide individual messages use NWNX_Feedback_SetFeedbackMessageHidden()
const int NWNX_FEEDBACK_COMBATLOG_COUNTERSPELL = 12; // Counterspel: <charname> casts <spell name> : *spell countered by* : <charname> casting <spell name>
const int NWNX_FEEDBACK_COMBATLOG_TOUCHATTACK = 13; // TouchAttack: <charname> attempts <melee/ranged touch attack> on <charname> : *hit/miss/critical* : (<attack roll> + <attack mod> = <modified roll>)
const int NWNX_FEEDBACK_COMBATLOG_INITIATIVE = 14; // Initiative: <charname> : Initiative Roll : <total> : (<roll> + <modifier> = <total>)
const int NWNX_FEEDBACK_COMBATLOG_DISPEL_MAGIC = 15; // Dispel_Magic: Dispel Magic : <charname> : <spell name>, <spell name>, <spell name>...
const int NWNX_FEEDBACK_COMBATLOG_POLYMORPH = 17; // Doesn't go through the function that the plugin hooks, so does nothing.
const int NWNX_FEEDBACK_COMBATLOG_FEEDBACKSTRING = 18; // Custom feedback for objects requiring a key
const int NWNX_FEEDBACK_COMBATLOG_VIBRATE = 19; // Controller vibration
const int NWNX_FEEDBACK_COMBATLOG_UNLOCKACHIEVEMENT = 20; // Unlock Campaign Achievement
const int NWNX_FEEDBACK_COMBATLOG_POSTAURSTRING = 22; // PostString messages
const int NWNX_FEEDBACK_COMBATLOG_ENTERTARGETINGMODE = 23; // Enter Targeting Mode
/// @}
/// @name Feedback Message Types
/// @anchor feedback_msgs
/// @{
const int NWNX_FEEDBACK_SKILL_CANT_USE = 0;
/// Skill Feedback Messages
const int NWNX_FEEDBACK_SKILL_CANT_USE_TIMER = 1;
const int NWNX_FEEDBACK_SKILL_ANIMALEMPATHY_VALID_TARGETS = 2;
const int NWNX_FEEDBACK_SKILL_TAUNT_VALID_TARGETS = 3;
const int NWNX_FEEDBACK_SKILL_TAUNT_TARGET_IMMUNE = 223;
const int NWNX_FEEDBACK_SKILL_PICKPOCKET_STOLE_ITEM = 4;
const int NWNX_FEEDBACK_SKILL_PICKPOCKET_STOLE_GOLD = 5;
const int NWNX_FEEDBACK_SKILL_PICKPOCKET_ATTEMPTING_TO_STEAL = 46;
const int NWNX_FEEDBACK_SKILL_PICKPOCKET_ATTEMPT_DETECTED = 150;
const int NWNX_FEEDBACK_SKILL_PICKPOCKET_STOLE_ITEM_TARGET = 47;
const int NWNX_FEEDBACK_SKILL_PICKPOCKET_STOLE_GOLD_TARGET = 48;
const int NWNX_FEEDBACK_SKILL_PICKPOCKET_TARGET_BROKE = 57;
const int NWNX_FEEDBACK_SKILL_HEAL_TARGET_NOT_DISPSND = 55;
const int NWNX_FEEDBACK_SKILL_HEAL_VALID_TARGETS = 56;
const int NWNX_FEEDBACK_SKILL_STEALTH_IN_COMBAT = 60;
/// Miscellaneous Targetting Messages
const int NWNX_FEEDBACK_TARGET_UNAWARE = 6;
const int NWNX_FEEDBACK_ACTION_NOT_POSSIBLE_STATUS = 7;
const int NWNX_FEEDBACK_ACTION_NOT_POSSIBLE_PVP = 187;
const int NWNX_FEEDBACK_ACTION_CANT_REACH_TARGET = 218;
const int NWNX_FEEDBACK_ACTION_NO_LOOT = 247;
/// Miscellaneous Feedback Messages
const int NWNX_FEEDBACK_WEIGHT_TOO_ENCUMBERED_TO_RUN = 8;
const int NWNX_FEEDBACK_WEIGHT_TOO_ENCUMBERED_WALK_SLOW = 9;
const int NWNX_FEEDBACK_WEIGHT_TOO_ENCUMBERED_CANT_PICKUP = 10;
const int NWNX_FEEDBACK_STATS_LEVELUP = 11;
const int NWNX_FEEDBACK_INVENTORY_FULL = 12;
const int NWNX_FEEDBACK_CONTAINER_FULL = 212;
const int NWNX_FEEDBACK_TRAP_TRIGGERED = 82;
const int NWNX_FEEDBACK_DAMAGE_HEALED = 151;
const int NWNX_FEEDBACK_EXPERIENCE_GAINNED = 182;
const int NWNX_FEEDBACK_EXPERIENCE_LOST = 183;
const int NWNX_FEEDBACK_JOURNALUPDATED = 184; // Doesn't actually work, use:
// NWNX_Feedback_{Get/Set}JournalUpdatedMessageHidden()
const int NWNX_FEEDBACK_BARTER_CANCELLED = 185;
/// Mode activation/deactivation Messages
const int NWNX_FEEDBACK_DETECT_MODE_ACTIVATED = 83;
const int NWNX_FEEDBACK_DETECT_MODE_DEACTIVATED = 84;
const int NWNX_FEEDBACK_STEALTH_MODE_ACTIVATED = 85;
const int NWNX_FEEDBACK_STEALTH_MODE_DEACTIVATED = 86;
const int NWNX_FEEDBACK_PARRY_MODE_ACTIVATED = 87;
const int NWNX_FEEDBACK_PARRY_MODE_DEACTIVATED = 88;
const int NWNX_FEEDBACK_POWER_ATTACK_MODE_ACTIVATED = 89;
const int NWNX_FEEDBACK_POWER_ATTACK_MODE_DEACTIVATED = 90;
const int NWNX_FEEDBACK_IMPROVED_POWER_ATTACK_MODE_ACTIVATED = 91;
const int NWNX_FEEDBACK_IMPROVED_POWER_ATTACK_MODE_DEACTIVATED = 92;
const int NWNX_FEEDBACK_RAPID_SHOT_MODE_ACTIVATED = 166;
const int NWNX_FEEDBACK_RAPID_SHOT_MODE_DEACTIVATED = 167;
const int NWNX_FEEDBACK_FLURRY_OF_BLOWS_MODE_ACTIVATED = 168;
const int NWNX_FEEDBACK_FLURRY_OF_BLOWS_MODE_DEACTIVATED = 169;
const int NWNX_FEEDBACK_EXPERTISE_MODE_ACTIVATED = 227;
const int NWNX_FEEDBACK_EXPERTISE_MODE_DEACTIVATED = 228;
const int NWNX_FEEDBACK_IMPROVED_EXPERTISE_MODE_ACTIVATED = 229;
const int NWNX_FEEDBACK_IMPROVED_EXPERTISE_MODE_DEACTIVATED = 230;
const int NWNX_FEEDBACK_DEFENSIVE_CAST_MODE_ACTIVATED = 231;
const int NWNX_FEEDBACK_DEFENSIVE_CAST_MODE_DEACTIVATED = 232;
const int NWNX_FEEDBACK_MODE_CANNOT_USE_WEAPONS = 188;
const int NWNX_FEEDBACK_DIRTY_FIGHTING_MODE_ACTIVATED = 237;
const int NWNX_FEEDBACK_DIRTY_FIGHTING_MODE_DEACTIVATED = 238;
const int NWNX_FEEDBACK_DEFENSIVE_STANCE_MODE_ACTIVATED = 252;
const int NWNX_FEEDBACK_DEFENSIVE_STANCE_MODE_DEACTIVATED = 253;
/// Equipping Feedback Messages
const int NWNX_FEEDBACK_EQUIP_SKILL_SPELL_MODIFIERS = 71;
const int NWNX_FEEDBACK_EQUIP_UNIDENTIFIED = 76;
const int NWNX_FEEDBACK_EQUIP_MONK_ABILITIES = 77;
const int NWNX_FEEDBACK_EQUIP_INSUFFICIENT_LEVEL = 98;
const int NWNX_FEEDBACK_EQUIP_PROFICIENCIES = 119;
const int NWNX_FEEDBACK_EQUIP_WEAPON_TOO_LARGE = 120;
const int NWNX_FEEDBACK_EQUIP_WEAPON_TOO_SMALL = 260;
const int NWNX_FEEDBACK_EQUIP_ONE_HANDED_WEAPON = 121;
const int NWNX_FEEDBACK_EQUIP_TWO_HANDED_WEAPON = 122;
const int NWNX_FEEDBACK_EQUIP_WEAPON_SWAPPED_OUT = 123;
const int NWNX_FEEDBACK_EQUIP_ONE_CHAIN_WEAPON = 124;
const int NWNX_FEEDBACK_EQUIP_NATURAL_AC_NO_STACK = 189;
const int NWNX_FEEDBACK_EQUIP_ARMOUR_AC_NO_STACK = 190;
const int NWNX_FEEDBACK_EQUIP_SHIELD_AC_NO_STACK = 191;
const int NWNX_FEEDBACK_EQUIP_DEFLECTION_AC_NO_STACK = 192;
const int NWNX_FEEDBACK_EQUIP_NO_ARMOR_COMBAT = 193;
const int NWNX_FEEDBACK_EQUIP_RANGER_ABILITIES = 200;
const int NWNX_FEEDBACK_EQUIP_ALIGNMENT = 207;
const int NWNX_FEEDBACK_EQUIP_CLASS = 208;
const int NWNX_FEEDBACK_EQUIP_RACE = 209;
const int NWNX_FEEDBACK_UNEQUIP_NO_ARMOR_COMBAT = 194;
/// Action Feedback Messages
const int NWNX_FEEDBACK_OBJECT_LOCKED = 13;
const int NWNX_FEEDBACK_OBJECT_NOT_LOCKED = 14;
const int NWNX_FEEDBACK_OBJECT_SPECIAL_KEY = 15;
const int NWNX_FEEDBACK_OBJECT_USED_KEY = 16;
const int NWNX_FEEDBACK_REST_EXCITED_CANT_REST = 17;
const int NWNX_FEEDBACK_REST_BEGINNING_REST = 18;
const int NWNX_FEEDBACK_REST_FINISHED_REST = 19;
const int NWNX_FEEDBACK_REST_CANCEL_REST = 20;
const int NWNX_FEEDBACK_REST_NOT_ALLOWED_IN_AREA = 54;
const int NWNX_FEEDBACK_REST_NOT_ALLOWED_BY_POSSESSED_FAMILIAR = 153;
const int NWNX_FEEDBACK_REST_NOT_ALLOWED_ENEMIES = 186;
const int NWNX_FEEDBACK_REST_CANT_UNDER_THIS_EFFECT = 213;
const int NWNX_FEEDBACK_CAST_LOST_TARGET = 21;
const int NWNX_FEEDBACK_CAST_CANT_CAST = 22;
const int NWNX_FEEDBACK_CAST_CNTRSPELL_TARGET_LOST_TARGET = 52;
const int NWNX_FEEDBACK_CAST_ARCANE_SPELL_FAILURE = 61;
const int NWNX_FEEDBACK_CAST_CNTRSPELL_TARGET_ARCANE_SPELL_FAILURE = 118;
const int NWNX_FEEDBACK_CAST_ENTANGLE_CONCENTRATION_FAILURE = 65;
const int NWNX_FEEDBACK_CAST_CNTRSPELL_TARGET_ENTANGLE_CONCENTRATION_FAILURE = 147;
const int NWNX_FEEDBACK_CAST_SPELL_INTERRUPTED = 72;
const int NWNX_FEEDBACK_CAST_EFFECT_SPELL_FAILURE = 236;
const int NWNX_FEEDBACK_CAST_CANT_CAST_WHILE_POLYMORPHED = 107;
const int NWNX_FEEDBACK_CAST_USE_HANDS = 210;
const int NWNX_FEEDBACK_CAST_USE_MOUTH = 211;
const int NWNX_FEEDBACK_CAST_DEFCAST_CONCENTRATION_FAILURE = 233;
const int NWNX_FEEDBACK_CAST_DEFCAST_CONCENTRATION_SUCCESS = 240;
const int NWNX_FEEDBACK_USEITEM_CANT_USE = 23;
const int NWNX_FEEDBACK_CONVERSATION_TOOFAR = 58;
const int NWNX_FEEDBACK_CONVERSATION_BUSY = 59;
const int NWNX_FEEDBACK_CONVERSATION_IN_COMBAT = 152;
const int NWNX_FEEDBACK_CHARACTER_INTRANSIT = 74;
const int NWNX_FEEDBACK_CHARACTER_OUTTRANSIT = 75;
const int NWNX_FEEDBACK_USEITEM_NOT_EQUIPPED = 244;
const int NWNX_FEEDBACK_DROPITEM_CANT_DROP = 245;
const int NWNX_FEEDBACK_DROPITEM_CANT_GIVE = 246;
const int NWNX_FEEDBACK_CLIENT_SERVER_SPELL_MISMATCH = 259;
/// Combat feedback messages
const int NWNX_FEEDBACK_COMBAT_RUNNING_OUT_OF_AMMO = 24;
const int NWNX_FEEDBACK_COMBAT_OUT_OF_AMMO = 25;
const int NWNX_FEEDBACK_COMBAT_HENCHMAN_OUT_OF_AMMO = 241;
const int NWNX_FEEDBACK_COMBAT_DAMAGE_IMMUNITY = 62;
const int NWNX_FEEDBACK_COMBAT_SPELL_IMMUNITY = 68;
const int NWNX_FEEDBACK_COMBAT_DAMAGE_RESISTANCE = 63;
const int NWNX_FEEDBACK_COMBAT_DAMAGE_RESISTANCE_REMAINING = 66;
const int NWNX_FEEDBACK_COMBAT_DAMAGE_REDUCTION = 64;
const int NWNX_FEEDBACK_COMBAT_DAMAGE_REDUCTION_REMAINING = 67;
const int NWNX_FEEDBACK_COMBAT_SPELL_LEVEL_ABSORPTION = 69;
const int NWNX_FEEDBACK_COMBAT_SPELL_LEVEL_ABSORPTION_REMAINING = 70;
const int NWNX_FEEDBACK_COMBAT_WEAPON_NOT_EFFECTIVE = 117;
const int NWNX_FEEDBACK_COMBAT_EPIC_DODGE_ATTACK_EVADED = 234;
const int NWNX_FEEDBACK_COMBAT_MASSIVE_DAMAGE = 235;
const int NWNX_FEEDBACK_COMBAT_SAVED_VS_MASSIVE_DAMAGE = 254;
const int NWNX_FEEDBACK_COMBAT_SAVED_VS_DEVASTATING_CRITICAL = 257;
/// Feat Feedback Messages
const int NWNX_FEEDBACK_FEAT_SAP_VALID_TARGETS = 26;
const int NWNX_FEEDBACK_FEAT_KNOCKDOWN_VALID_TARGETS = 27;
const int NWNX_FEEDBACK_FEAT_IMPKNOCKDOWN_VALID_TARGETS = 28;
const int NWNX_FEEDBACK_FEAT_CALLED_SHOT_NO_LEGS = 29;
const int NWNX_FEEDBACK_FEAT_CALLED_SHOT_NO_ARMS = 30;
const int NWNX_FEEDBACK_FEAT_SMITE_GOOD_TARGET_NOT_GOOD = 239;
const int NWNX_FEEDBACK_FEAT_SMITE_EVIL_TARGET_NOT_EVIL = 53;
const int NWNX_FEEDBACK_FEAT_QUIVERING_PALM_HIGHER_LEVEL = 73;
const int NWNX_FEEDBACK_FEAT_KEEN_SENSE_DETECT = 195;
const int NWNX_FEEDBACK_FEAT_USE_UNARMED = 198;
const int NWNX_FEEDBACK_FEAT_USES = 199;
const int NWNX_FEEDBACK_FEAT_USE_WEAPON_OF_CHOICE = 243;
/// Party Feedback Messages
const int NWNX_FEEDBACK_PARTY_NEW_LEADER = 31;
const int NWNX_FEEDBACK_PARTY_MEMBER_KICKED = 32;
const int NWNX_FEEDBACK_PARTY_KICKED_YOU = 33;
const int NWNX_FEEDBACK_PARTY_ALREADY_CONSIDERING = 34;
const int NWNX_FEEDBACK_PARTY_ALREADY_INVOLVED = 35;
const int NWNX_FEEDBACK_PARTY_SENT_INVITATION = 36;
const int NWNX_FEEDBACK_PARTY_RECEIVED_INVITATION = 37;
const int NWNX_FEEDBACK_PARTY_JOINED = 38;
const int NWNX_FEEDBACK_PARTY_INVITATION_IGNORED = 39;
const int NWNX_FEEDBACK_PARTY_YOU_IGNORED_INVITATION = 40;
const int NWNX_FEEDBACK_PARTY_INVITATION_REJECTED = 41;
const int NWNX_FEEDBACK_PARTY_YOU_REJECTED_INVITATION = 42;
const int NWNX_FEEDBACK_PARTY_INVITATION_EXPIRED = 43;
const int NWNX_FEEDBACK_PARTY_LEFT_PARTY = 44;
const int NWNX_FEEDBACK_PARTY_YOU_LEFT = 45;
const int NWNX_FEEDBACK_PARTY_HENCHMAN_LIMIT = 49;
const int NWNX_FEEDBACK_PARTY_CANNOT_LEAVE_THE_ONE_PARTY = 196;
const int NWNX_FEEDBACK_PARTY_CANNOT_KICK_FROM_THE_ONE_PARTY = 197;
const int NWNX_FEEDBACK_PARTY_YOU_INVITED_NON_SINGLETON = 202;
const int NWNX_FEEDBACK_PVP_REACTION_DISLIKESYOU = 203;
/// Item Feedback Messages
const int NWNX_FEEDBACK_ITEM_RECEIVED = 50;
const int NWNX_FEEDBACK_ITEM_LOST = 51;
const int NWNX_FEEDBACK_ITEM_EJECTED = 96;
const int NWNX_FEEDBACK_ITEM_USE_UNIDENTIFIED = 97;
const int NWNX_FEEDBACK_ITEM_GOLD_GAINED = 148;
const int NWNX_FEEDBACK_ITEM_GOLD_LOST = 149;
/// Spell Scroll Learning
const int NWNX_FEEDBACK_LEARN_SCROLL_NOT_SCROLL = 78;
const int NWNX_FEEDBACK_LEARN_SCROLL_CANT_LEARN_CLASS = 79;
const int NWNX_FEEDBACK_LEARN_SCROLL_CANT_LEARN_LEVEL = 80;
const int NWNX_FEEDBACK_LEARN_SCROLL_CANT_LEARN_ABILITY = 81;
const int NWNX_FEEDBACK_LEARN_SCROLL_CANT_LEARN_OPPOSITION = 219;
const int NWNX_FEEDBACK_LEARN_SCROLL_CANT_LEARN_POSSESS = 220;
const int NWNX_FEEDBACK_LEARN_SCROLL_CANT_LEARN_KNOWN = 221;
const int NWNX_FEEDBACK_LEARN_SCROLL_CANT_LEARN_DIVINE = 224;
const int NWNX_FEEDBACK_LEARN_SCROLL_SUCCESS = 222;
/// Floaty text feedback
const int NWNX_FEEDBACK_FLOATY_TEXT_STRREF = 93;
const int NWNX_FEEDBACK_FLOATY_TEXT_STRING = 94;
/// Store feedback
const int NWNX_FEEDBACK_CANNOT_SELL_PLOT_ITEM = 99;
const int NWNX_FEEDBACK_CANNOT_SELL_CONTAINER = 100;
const int NWNX_FEEDBACK_CANNOT_SELL_ITEM = 101;
const int NWNX_FEEDBACK_NOT_ENOUGH_GOLD = 102;
const int NWNX_FEEDBACK_TRANSACTION_SUCCEEDED = 103;
const int NWNX_FEEDBACK_PRICE_TOO_HIGH = 248;
const int NWNX_FEEDBACK_STORE_NOT_ENOUGH_GOLD = 249;
const int NWNX_FEEDBACK_CANNOT_SELL_STOLEN_ITEM = 250;
const int NWNX_FEEDBACK_CANNOT_SELL_RESTRICTED_ITEM = 251;
/// Portal control feedback
const int NWNX_FEEDBACK_PORTAL_TIMEDOUT = 104;
const int NWNX_FEEDBACK_PORTAL_INVALID = 105;
/// Chat feedback
const int NWNX_FEEDBACK_CHAT_TELL_PLAYER_NOT_FOUND = 106;
/// Alignment Feedback
const int NWNX_FEEDBACK_ALIGNMENT_SHIFT = 108;
const int NWNX_FEEDBACK_ALIGNMENT_PARTY_SHIFT = 111;
const int NWNX_FEEDBACK_ALIGNMENT_CHANGE = 109;
const int NWNX_FEEDBACK_ALIGNMENT_RESTRICTED_BY_CLASS_LOST = 110;
const int NWNX_FEEDBACK_ALIGNMENT_RESTRICTED_BY_CLASS_GAIN = 115;
const int NWNX_FEEDBACK_ALIGNMENT_RESTRICTED_WARNING_LOSS = 116;
const int NWNX_FEEDBACK_ALIGNMENT_RESTRICTED_WARNING_GAIN = 112;
const int NWNX_FEEDBACK_ALIGNMENT_EPITOME_GAINED = 113;
const int NWNX_FEEDBACK_ALIGNMENT_EPITOME_LOST = 114;
/// Immunity Feedback
const int NWNX_FEEDBACK_IMMUNITY_DISEASE = 125;
const int NWNX_FEEDBACK_IMMUNITY_CRITICAL_HIT = 126;
const int NWNX_FEEDBACK_IMMUNITY_DEATH_MAGIC = 127;
const int NWNX_FEEDBACK_IMMUNITY_FEAR = 128;
const int NWNX_FEEDBACK_IMMUNITY_KNOCKDOWN = 129;
const int NWNX_FEEDBACK_IMMUNITY_PARALYSIS = 130;
const int NWNX_FEEDBACK_IMMUNITY_NEGATIVE_LEVEL = 131;
const int NWNX_FEEDBACK_IMMUNITY_MIND_SPELLS = 132;
const int NWNX_FEEDBACK_IMMUNITY_POISON = 133;
const int NWNX_FEEDBACK_IMMUNITY_SNEAK_ATTACK = 134;
const int NWNX_FEEDBACK_IMMUNITY_SLEEP = 135;
const int NWNX_FEEDBACK_IMMUNITY_DAZE = 136;
const int NWNX_FEEDBACK_IMMUNITY_CONFUSION = 137;
const int NWNX_FEEDBACK_IMMUNITY_STUN = 138;
const int NWNX_FEEDBACK_IMMUNITY_BLINDNESS = 139;
const int NWNX_FEEDBACK_IMMUNITY_DEAFNESS = 140;
const int NWNX_FEEDBACK_IMMUNITY_CURSE = 141;
const int NWNX_FEEDBACK_IMMUNITY_CHARM = 142;
const int NWNX_FEEDBACK_IMMUNITY_DOMINATE = 143;
const int NWNX_FEEDBACK_IMMUNITY_ENTANGLE = 144;
const int NWNX_FEEDBACK_IMMUNITY_SILENCE = 145;
const int NWNX_FEEDBACK_IMMUNITY_SLOW = 146;
/// Associates
const int NWNX_FEEDBACK_ASSOCIATE_SUMMONED = 154;
const int NWNX_FEEDBACK_ASSOCIATE_UNSUMMONING = 155;
const int NWNX_FEEDBACK_ASSOCIATE_UNSUMMONING_BECAUSE_REST = 156;
const int NWNX_FEEDBACK_ASSOCIATE_UNSUMMONING_BECAUSE_DIED = 157;
const int NWNX_FEEDBACK_ASSOCIATE_DOMINATED = 158;
const int NWNX_FEEDBACK_ASSOCIATE_DOMINATION_ENDED = 159;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_RECOVER_TRAP = 170;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_BARTER = 171;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_EQUIP = 172;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_REPOSITORY_MOVE = 173;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_PICK_UP = 174;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_DROP = 175;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_UNEQUIP = 176;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_REST = 177;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_DIALOGUE = 178;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_GIVE_ITEM = 179;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_TAKE_ITEM = 180;
const int NWNX_FEEDBACK_ASSOCIATE_POSSESSED_CANNOT_USE_CONTAINER = 181;
/// Miscellaneous Feedback
const int NWNX_FEEDBACK_SCRIPT_ERROR = 160;
const int NWNX_FEEDBACK_ACTION_LIST_OVERFLOW = 161;
const int NWNX_FEEDBACK_EFFECT_LIST_OVERFLOW = 162;
const int NWNX_FEEDBACK_AI_UPDATE_TIME_OVERFLOW = 163;
const int NWNX_FEEDBACK_ACTION_LIST_WIPE_OVERFLOW = 164;
const int NWNX_FEEDBACK_EFFECT_LIST_WIPE_OVERFLOW = 165;
const int NWNX_FEEDBACK_SEND_MESSAGE_TO_PC = 204;
const int NWNX_FEEDBACK_SEND_MESSAGE_TO_PC_STRREF = 242;
/// Misc GUI feedback
const int NWNX_FEEDBACK_GUI_ONLY_PARTY_LEADER_MAY_CLICK = 201;
const int NWNX_FEEDBACK_PAUSED = 205;
const int NWNX_FEEDBACK_UNPAUSED = 206;
const int NWNX_FEEDBACK_REST_YOU_MAY_NOT_AT_THIS_TIME = 214;
const int NWNX_FEEDBACK_GUI_CHAR_EXPORT_REQUEST_SENT = 215;
const int NWNX_FEEDBACK_GUI_CHAR_EXPORTED_SUCCESSFULLY = 216;
const int NWNX_FEEDBACK_GUI_ERROR_CHAR_NOT_EXPORTED = 217;
const int NWNX_FEEDBACK_CAMERA_BG = 255;
const int NWNX_FEEDBACK_CAMERA_EQ = 256;
const int NWNX_FEEDBACK_CAMERA_CHASECAM = 258;
const int NWNX_FEEDBACK_SAVING = 225;
const int NWNX_FEEDBACK_SAVE_COMPLETE = 226;
/// @}
/// @brief Gets if feedback message is hidden.
/// @param nMessage The message identifier from @ref feedback_msgs "Feedback Messages".
/// @param oPC The PC or OBJECT_INVALID for a global setting.
/// @return TRUE if the message is hidden.
int NWNX_Feedback_GetFeedbackMessageHidden(int nMessage, object oPC = OBJECT_INVALID);
/// @brief Sets if feedback message is hidden.
/// @param nMessage The message identifier.
/// @param isHidden TRUE/FALSE
/// @param oPC The PC or OBJECT_INVALID for a global setting.
/// @note Personal state overrides the global state which means if a global state is set
/// to TRUE but the personal state is set to FALSE, the message will be shown to the PC.
void NWNX_Feedback_SetFeedbackMessageHidden(int nMessage, int isHidden, object oPC = OBJECT_INVALID);
/// @brief Gets if combat log message is hidden.
/// @param nMessage The message identifier from @ref combat_log_msgs "Combat Log Messages".
/// @param oPC The PC or OBJECT_INVALID for a global setting.
/// @return TRUE if the message is hidden.
int NWNX_Feedback_GetCombatLogMessageHidden(int nMessage, object oPC = OBJECT_INVALID);
/// @brief Sets if combat log message is hidden.
/// @param nMessage The message identifier.
/// @param isHidden TRUE/FALSE
/// @param oPC The PC or OBJECT_INVALID for a global setting.
/// @note Personal state overrides the global state which means if a global state is set
/// to TRUE but the personal state is set to FALSE, the message will be shown to the PC.
void NWNX_Feedback_SetCombatLogMessageHidden(int nMessage, int isHidden, object oPC = OBJECT_INVALID);
/// @brief Gets if the journal update message is hidden.
/// @param oPC The PC or OBJECT_INVALID for a global setting.
/// @return TRUE if the message is hidden.
int NWNX_Feedback_GetJournalUpdatedMessageHidden(object oPC = OBJECT_INVALID);
/// @brief Sets if journal update message is hidden.
/// @param isHidden TRUE/FALSE
/// @param oPC The PC or OBJECT_INVALID for a global setting.
/// @note Personal state overrides the global state which means if a global state is set
/// to TRUE but the personal state is set to FALSE, the message will be shown to the PC.
void NWNX_Feedback_SetJournalUpdatedMessageHidden(int isHidden, object oPC = OBJECT_INVALID);
/// @brief Set whether to use a blacklist or whitelist mode for feedback messages
/// @param bWhitelist TRUE for all messages to be hidden by default, default FALSE.
void NWNX_Feedback_SetFeedbackMessageMode(int bWhitelist);
/// @brief Set whether to use a blacklist or whitelist mode for combat log messages
/// @param bWhitelist TRUE for all messages to be hidden by default, default FALSE.
/// @note If using Whitelist, be sure to whitelist NWNX_FEEDBACK_COMBATLOG_FEEDBACK for feedback messages to work.
void NWNX_Feedback_SetCombatLogMessageMode(int bWhitelist);
/// @}
int NWNX_Feedback_GetFeedbackMessageHidden(int nMessage, object oPC = OBJECT_INVALID)
{
string sFunc = "GetMessageHidden";
int nMessageType = 0;
NWNX_PushArgumentInt(nMessage);
NWNX_PushArgumentInt(nMessageType);
NWNX_PushArgumentObject(oPC);
NWNX_CallFunction(NWNX_Feedback, sFunc);
return NWNX_GetReturnValueInt();
}
void NWNX_Feedback_SetFeedbackMessageHidden(int nMessage, int isHidden, object oPC = OBJECT_INVALID)
{
string sFunc = "SetMessageHidden";
int nMessageType = 0;
NWNX_PushArgumentInt(isHidden);
NWNX_PushArgumentInt(nMessage);
NWNX_PushArgumentInt(nMessageType);
NWNX_PushArgumentObject(oPC);
NWNX_CallFunction(NWNX_Feedback, sFunc);
}
int NWNX_Feedback_GetCombatLogMessageHidden(int nMessage, object oPC = OBJECT_INVALID)
{
string sFunc = "GetMessageHidden";
int nMessageType = 1;
NWNX_PushArgumentInt(nMessage);
NWNX_PushArgumentInt(nMessageType);
NWNX_PushArgumentObject(oPC);
NWNX_CallFunction(NWNX_Feedback, sFunc);
return NWNX_GetReturnValueInt();
}
void NWNX_Feedback_SetCombatLogMessageHidden(int nMessage, int isHidden, object oPC = OBJECT_INVALID)
{
string sFunc = "SetMessageHidden";
int nMessageType = 1;
NWNX_PushArgumentInt(isHidden);
NWNX_PushArgumentInt(nMessage);
NWNX_PushArgumentInt(nMessageType);
NWNX_PushArgumentObject(oPC);
NWNX_CallFunction(NWNX_Feedback, sFunc);
}
int NWNX_Feedback_GetJournalUpdatedMessageHidden(object oPC = OBJECT_INVALID)
{
string sFunc = "GetMessageHidden";
int nMessageType = 2;
NWNX_PushArgumentInt(0);
NWNX_PushArgumentInt(nMessageType);
NWNX_PushArgumentObject(oPC);
NWNX_CallFunction(NWNX_Feedback, sFunc);
return NWNX_GetReturnValueInt();
}
void NWNX_Feedback_SetJournalUpdatedMessageHidden(int isHidden, object oPC = OBJECT_INVALID)
{
string sFunc = "SetMessageHidden";
int nMessageType = 2;
NWNX_PushArgumentInt(isHidden);
NWNX_PushArgumentInt(0);
NWNX_PushArgumentInt(nMessageType);
NWNX_PushArgumentObject(oPC);
NWNX_CallFunction(NWNX_Feedback, sFunc);
}
void NWNX_Feedback_SetFeedbackMessageMode(int bWhitelist)
{
string sFunc = "SetFeedbackMode";
int nMessageType = 0;
NWNX_PushArgumentInt(bWhitelist);
NWNX_PushArgumentInt(nMessageType);
NWNX_CallFunction(NWNX_Feedback, sFunc);
}
void NWNX_Feedback_SetCombatLogMessageMode(int bWhitelist)
{
string sFunc = "SetFeedbackMode";
int nMessageType = 1;
NWNX_PushArgumentInt(bWhitelist);
NWNX_PushArgumentInt(nMessageType);
NWNX_CallFunction(NWNX_Feedback, sFunc);
}