Jaysyn904 ab1cc54e29 Added centaur & minotaur working files
Added centaur & minotaur working files.
2024-04-20 08:32:39 -04:00

5084 lines
208 KiB
Plaintext

////////////////////////////////////////////////////////
//
// NWScript
//
// The list of actions and pre-defined constants.
//
// (c) BioWare Corp, 1999
//
////////////////////////////////////////////////////////
#define ENGINE_NUM_STRUCTURES 4
#define ENGINE_STRUCTURE_0 effect
#define ENGINE_STRUCTURE_1 event
#define ENGINE_STRUCTURE_2 location
#define ENGINE_STRUCTURE_3 talent
// Constants
int NUM_INVENTORY_SLOTS = 18;
int TRUE = 1;
int FALSE = 0;
float DIRECTION_EAST = 0.0;
float DIRECTION_NORTH = 90.0;
float DIRECTION_WEST = 180.0;
float DIRECTION_SOUTH = 270.0;
float PI = 3.141592;
int ATTITUDE_NEUTRAL = 0;
int ATTITUDE_AGGRESSIVE = 1;
int ATTITUDE_DEFENSIVE = 2;
int ATTITUDE_SPECIAL = 3;
int TALKVOLUME_TALK = 0;
int TALKVOLUME_WHISPER = 1;
int TALKVOLUME_SHOUT = 2;
int TALKVOLUME_SILENT_TALK = 3;
int TALKVOLUME_SILENT_SHOUT = 4;
int INVENTORY_SLOT_HEAD = 0;
int INVENTORY_SLOT_CHEST = 1;
int INVENTORY_SLOT_BOOTS = 2;
int INVENTORY_SLOT_ARMS = 3;
int INVENTORY_SLOT_RIGHTHAND = 4;
int INVENTORY_SLOT_LEFTHAND = 5;
int INVENTORY_SLOT_CLOAK = 6;
int INVENTORY_SLOT_LEFTRING = 7;
int INVENTORY_SLOT_RIGHTRING = 8;
int INVENTORY_SLOT_NECK = 9;
int INVENTORY_SLOT_BELT = 10;
int INVENTORY_SLOT_ARROWS = 11;
int INVENTORY_SLOT_BULLETS = 12;
int INVENTORY_SLOT_BOLTS = 13;
int INVENTORY_SLOT_CWEAPON_L = 14;
int INVENTORY_SLOT_CWEAPON_R = 15;
int INVENTORY_SLOT_CWEAPON_B = 16;
int INVENTORY_SLOT_CARMOUR = 17;
//Effect type constants
int DURATION_TYPE_INSTANT = 0;
int DURATION_TYPE_TEMPORARY = 1;
int DURATION_TYPE_PERMANENT = 2;
int SUBTYPE_MAGICAL = 8;
int SUBTYPE_SUPERNATURAL = 16;
int SUBTYPE_EXTRAORDINARY = 24;
int ABILITY_STRENGTH = 0; // should be the same as in nwseffectlist.cpp
int ABILITY_DEXTERITY = 1;
int ABILITY_CONSTITUTION = 2;
int ABILITY_INTELLIGENCE = 3;
int ABILITY_WISDOM = 4;
int ABILITY_CHARISMA = 5;
int SHAPE_SPELLCYLINDER = 0;
int SHAPE_CONE = 1;
int SHAPE_CUBE = 2;
int SHAPE_SPELLCONE = 3;
int SHAPE_SPHERE = 4;
int METAMAGIC_NONE = 0;
int METAMAGIC_EMPOWER = 1;
int METAMAGIC_EXTEND = 2;
int METAMAGIC_MAXIMIZE = 4;
int METAMAGIC_QUICKEN = 8;
int METAMAGIC_SILENT = 16;
int METAMAGIC_STILL = 32;
int METAMAGIC_ANY = 255;
int OBJECT_TYPE_CREATURE = 1;
int OBJECT_TYPE_ITEM = 2;
int OBJECT_TYPE_TRIGGER = 4;
int OBJECT_TYPE_DOOR = 8;
int OBJECT_TYPE_AREA_OF_EFFECT = 16;
int OBJECT_TYPE_WAYPOINT = 32;
int OBJECT_TYPE_PLACEABLE = 64;
int OBJECT_TYPE_STORE = 128;
int OBJECT_TYPE_ALL = 32767;
int OBJECT_TYPE_INVALID = 32767;
int GENDER_MALE = 0;
int GENDER_FEMALE = 1;
int GENDER_BOTH = 2;
int GENDER_OTHER = 3;
int GENDER_NONE = 4;
int DAMAGE_TYPE_BLUDGEONING = 1;
int DAMAGE_TYPE_PIERCING = 2;
int DAMAGE_TYPE_SLASHING = 4;
int DAMAGE_TYPE_MAGICAL = 8;
int DAMAGE_TYPE_ACID = 16;
int DAMAGE_TYPE_COLD = 32;
int DAMAGE_TYPE_DIVINE = 64;
int DAMAGE_TYPE_ELECTRICAL = 128;
int DAMAGE_TYPE_FIRE = 256;
int DAMAGE_TYPE_NEGATIVE = 512;
int DAMAGE_TYPE_POSITIVE = 1024;
int DAMAGE_TYPE_SONIC = 2048;
// Special versus flag just for AC effects
int AC_VS_DAMAGE_TYPE_ALL = 4103;
int DAMAGE_BONUS_1 = 1;
int DAMAGE_BONUS_2 = 2;
int DAMAGE_BONUS_3 = 3;
int DAMAGE_BONUS_4 = 4;
int DAMAGE_BONUS_5 = 5;
int DAMAGE_BONUS_1d4 = 6;
int DAMAGE_BONUS_1d6 = 7;
int DAMAGE_BONUS_1d8 = 8;
int DAMAGE_BONUS_1d10 = 9;
int DAMAGE_BONUS_2d6 = 10;
int DAMAGE_POWER_NORMAL = 0;
int DAMAGE_POWER_PLUS_ONE = 1;
int DAMAGE_POWER_PLUS_TWO = 2;
int DAMAGE_POWER_PLUS_THREE = 3;
int DAMAGE_POWER_PLUS_FOUR = 4;
int DAMAGE_POWER_PLUS_FIVE = 5;
int DAMAGE_POWER_ENERGY = 6;
int ATTACK_BONUS_MISC = 0;
int ATTACK_BONUS_ONHAND = 1;
int ATTACK_BONUS_OFFHAND = 2;
int AC_DODGE_BONUS = 0;
int AC_NATURAL_BONUS = 1;
int AC_ARMOUR_ENCHANTMENT_BONUS = 2;
int AC_SHIELD_ENCHANTMENT_BONUS = 3;
int AC_DEFLECTION_BONUS = 4;
int DOOR_ACTION_OPEN = 0;
int DOOR_ACTION_UNLOCK = 1;
int DOOR_ACTION_BASH = 2;
int DOOR_ACTION_IGNORE = 3;
int DOOR_ACTION_KNOCK = 4;
int PLACEABLE_ACTION_USE = 0;
int PLACEABLE_ACTION_UNLOCK = 1;
int PLACEABLE_ACTION_BASH = 2;
int PLACEABLE_ACTION_KNOCK = 4;
int RACIAL_TYPE_DWARF = 0;
int RACIAL_TYPE_ELF = 1;
int RACIAL_TYPE_GNOME = 2;
int RACIAL_TYPE_HALFLING = 3;
int RACIAL_TYPE_HALFELF = 4;
int RACIAL_TYPE_HALFORC = 5;
int RACIAL_TYPE_HUMAN = 6;
int RACIAL_TYPE_ABERRATION = 7;
int RACIAL_TYPE_ANIMAL = 8;
int RACIAL_TYPE_BEAST = 9;
int RACIAL_TYPE_CONSTRUCT = 10;
int RACIAL_TYPE_DRAGON = 11;
int RACIAL_TYPE_HUMANOID_GOBLINOID = 12;
int RACIAL_TYPE_HUMANOID_MONSTROUS = 13;
int RACIAL_TYPE_HUMANOID_ORC = 14;
int RACIAL_TYPE_HUMANOID_REPTILIAN = 15;
int RACIAL_TYPE_ELEMENTAL = 16;
int RACIAL_TYPE_FEY = 17;
int RACIAL_TYPE_GIANT = 18;
int RACIAL_TYPE_MAGICAL_BEAST = 19;
int RACIAL_TYPE_OUTSIDER = 20;
int RACIAL_TYPE_SHAPECHANGER = 23;
int RACIAL_TYPE_UNDEAD = 24;
int RACIAL_TYPE_VERMIN = 25;
int RACIAL_TYPE_MINOTAUR = 26;
int RACIAL_TYPE_VAMPIRE = 27;
int RACIAL_TYPE_WEREWOLF = 28;
int RACIAL_TYPE_ALL = 29;
int RACIAL_TYPE_INVALID = 30;
int ALIGNMENT_ALL = 0;
int ALIGNMENT_NEUTRAL = 1;
int ALIGNMENT_LAWFUL = 2;
int ALIGNMENT_CHAOTIC = 3;
int ALIGNMENT_GOOD = 4;
int ALIGNMENT_EVIL = 5;
int SAVING_THROW_ALL = 0;
int SAVING_THROW_FORT = 1;
int SAVING_THROW_REFLEX = 2;
int SAVING_THROW_WILL = 3;
int SAVING_THROW_TYPE_ALL = 0;
int SAVING_THROW_TYPE_NONE = 0;
int SAVING_THROW_TYPE_MIND_SPELLS = 1;
int SAVING_THROW_TYPE_POISON = 2;
int SAVING_THROW_TYPE_DISEASE = 3;
int SAVING_THROW_TYPE_FEAR = 4;
int SAVING_THROW_TYPE_SONIC = 5;
int SAVING_THROW_TYPE_ACID = 6;
int SAVING_THROW_TYPE_FIRE = 7;
int SAVING_THROW_TYPE_ELECTRICITY = 8;
int SAVING_THROW_TYPE_POSITIVE = 9;
int SAVING_THROW_TYPE_NEGATIVE = 10;
int SAVING_THROW_TYPE_DEATH = 11;
int SAVING_THROW_TYPE_COLD = 12;
int SAVING_THROW_TYPE_DIVINE = 13;
int SAVING_THROW_TYPE_TRAP = 14;
int SAVING_THROW_TYPE_SPELL = 15;
int SAVING_THROW_TYPE_GOOD = 16;
int SAVING_THROW_TYPE_EVIL = 17;
int SAVING_THROW_TYPE_LAW = 18;
int SAVING_THROW_TYPE_CHAOS = 19;
int IMMUNITY_TYPE_NONE = 0;
int IMMUNITY_TYPE_MIND_SPELLS = 1;
int IMMUNITY_TYPE_POISON = 2;
int IMMUNITY_TYPE_DISEASE = 3;
int IMMUNITY_TYPE_FEAR = 4;
int IMMUNITY_TYPE_TRAP = 5;
int IMMUNITY_TYPE_PARALYSIS = 6;
int IMMUNITY_TYPE_BLINDNESS = 7;
int IMMUNITY_TYPE_DEAFNESS = 8;
int IMMUNITY_TYPE_SLOW = 9;
int IMMUNITY_TYPE_ENTANGLE = 10;
int IMMUNITY_TYPE_SILENCE = 11;
int IMMUNITY_TYPE_STUN = 12;
int IMMUNITY_TYPE_SLEEP = 13;
int IMMUNITY_TYPE_CHARM = 14;
int IMMUNITY_TYPE_DOMINATE = 15;
int IMMUNITY_TYPE_CONFUSED = 16;
int IMMUNITY_TYPE_CURSED = 17;
int IMMUNITY_TYPE_DAZED = 18;
int IMMUNITY_TYPE_ABILITY_DECREASE = 19;
int IMMUNITY_TYPE_ATTACK_DECREASE = 20;
int IMMUNITY_TYPE_DAMAGE_DECREASE = 21;
int IMMUNITY_TYPE_DAMAGE_IMMUNITY_DECREASE = 22;
int IMMUNITY_TYPE_AC_DECREASE = 23;
int IMMUNITY_TYPE_MOVEMENT_SPEED_DECREASE = 24;
int IMMUNITY_TYPE_SAVING_THROW_DECREASE = 25;
int IMMUNITY_TYPE_SPELL_RESISTANCE_DECREASE = 26;
int IMMUNITY_TYPE_SKILL_DECREASE = 27;
int IMMUNITY_TYPE_KNOCKDOWN = 28;
int IMMUNITY_TYPE_NEGATIVE_LEVEL = 29;
int IMMUNITY_TYPE_SNEAK_ATTACK = 30;
int IMMUNITY_TYPE_CRITICAL_HIT = 31;
int IMMUNITY_TYPE_DEATH = 32;
int AREA_TRANSITION_RANDOM = 0;
int AREA_TRANSITION_USER_DEFINED = 1;
int AREA_TRANSITION_CITY_01 = 2;
int AREA_TRANSITION_CITY_02 = 3;
int AREA_TRANSITION_CITY_03 = 4;
int AREA_TRANSITION_CITY_04 = 5;
int AREA_TRANSITION_CITY_05 = 6;
int AREA_TRANSITION_CRYPT_01 = 7;
int AREA_TRANSITION_CRYPT_02 = 8;
int AREA_TRANSITION_CRYPT_03 = 9;
int AREA_TRANSITION_CRYPT_04 = 10;
int AREA_TRANSITION_CRYPT_05 = 11;
int AREA_TRANSITION_DUNGEON_01 = 12;
int AREA_TRANSITION_DUNGEON_02 = 13;
int AREA_TRANSITION_DUNGEON_03 = 14;
int AREA_TRANSITION_DUNGEON_04 = 15;
int AREA_TRANSITION_DUNGEON_05 = 16;
int AREA_TRANSITION_DUNGEON_06 = 17;
int AREA_TRANSITION_DUNGEON_07 = 18;
int AREA_TRANSITION_DUNGEON_08 = 19;
int AREA_TRANSITION_MINES_01 = 20;
int AREA_TRANSITION_MINES_02 = 21;
int AREA_TRANSITION_MINES_03 = 22;
int AREA_TRANSITION_MINES_04 = 23;
int AREA_TRANSITION_MINES_05 = 24;
int AREA_TRANSITION_MINES_06 = 25;
int AREA_TRANSITION_MINES_07 = 26;
int AREA_TRANSITION_MINES_08 = 27;
int AREA_TRANSITION_MINES_09 = 28;
int AREA_TRANSITION_SEWER_01 = 29;
int AREA_TRANSITION_SEWER_02 = 30;
int AREA_TRANSITION_SEWER_03 = 31;
int AREA_TRANSITION_SEWER_04 = 32;
int AREA_TRANSITION_SEWER_05 = 33;
int AREA_TRANSITION_CASTLE_01 = 34;
int AREA_TRANSITION_CASTLE_02 = 35;
int AREA_TRANSITION_CASTLE_03 = 36;
int AREA_TRANSITION_CASTLE_04 = 37;
int AREA_TRANSITION_CASTLE_05 = 38;
int AREA_TRANSITION_CASTLE_06 = 39;
int AREA_TRANSITION_CASTLE_07 = 40;
int AREA_TRANSITION_CASTLE_08 = 41;
int AREA_TRANSITION_INTERIOR_01 = 42;
int AREA_TRANSITION_INTERIOR_02 = 43;
int AREA_TRANSITION_INTERIOR_03 = 44;
int AREA_TRANSITION_INTERIOR_04 = 45;
int AREA_TRANSITION_INTERIOR_05 = 46;
int AREA_TRANSITION_INTERIOR_06 = 47;
int AREA_TRANSITION_INTERIOR_07 = 48;
int AREA_TRANSITION_INTERIOR_08 = 49;
int AREA_TRANSITION_INTERIOR_09 = 50;
int AREA_TRANSITION_INTERIOR_10 = 51;
int AREA_TRANSITION_INTERIOR_11 = 52;
int AREA_TRANSITION_INTERIOR_12 = 53;
int AREA_TRANSITION_INTERIOR_13 = 54;
int AREA_TRANSITION_INTERIOR_14 = 55;
int AREA_TRANSITION_INTERIOR_15 = 56;
int AREA_TRANSITION_INTERIOR_16 = 57;
int AREA_TRANSITION_FOREST_01 = 58;
int AREA_TRANSITION_FOREST_02 = 59;
int AREA_TRANSITION_FOREST_03 = 60;
int AREA_TRANSITION_FOREST_04 = 61;
int AREA_TRANSITION_FOREST_05 = 62;
int AREA_TRANSITION_RURAL_01 = 63;
int AREA_TRANSITION_RURAL_02 = 64;
int AREA_TRANSITION_RURAL_03 = 65;
int AREA_TRANSITION_RURAL_04 = 66;
int AREA_TRANSITION_RURAL_05 = 67;
// Legacy area-transition constants. Do not delete these.
int AREA_TRANSITION_CITY = 2;
int AREA_TRANSITION_CRYPT = 7;
int AREA_TRANSITION_FOREST = 58;
int AREA_TRANSITION_RURAL = 63;
int BODY_NODE_HAND = 0;
int BODY_NODE_CHEST = 1;
float RADIUS_SIZE_SMALL = 1.67f;
float RADIUS_SIZE_MEDIUM = 3.33f;
float RADIUS_SIZE_LARGE = 5.0f;
float RADIUS_SIZE_HUGE = 6.67f;
float RADIUS_SIZE_GARGANTUAN = 8.33f;
float RADIUS_SIZE_COLOSSAL = 10.0f;
// these are magic numbers. they should correspond to the values layed out in ExecuteCommandGetEffectType
int EFFECT_TYPE_INVALIDEFFECT = 0;
int EFFECT_TYPE_DAMAGE_RESISTANCE = 1;
//int EFFECT_TYPE_ABILITY_BONUS = 2;
int EFFECT_TYPE_REGENERATE = 3;
//int EFFECT_TYPE_SAVING_THROW_BONUS = 4;
//int EFFECT_TYPE_MODIFY_AC = 5;
//int EFFECT_TYPE_ATTACK_BONUS = 6;
int EFFECT_TYPE_DAMAGE_REDUCTION = 7;
//int EFFECT_TYPE_DAMAGE_BONUS = 8;
int EFFECT_TYPE_TEMPORARY_HITPOINTS = 9;
//int EFFECT_TYPE_DAMAGE_IMMUNITY = 10;
int EFFECT_TYPE_ENTANGLE = 11;
int EFFECT_TYPE_INVULNERABLE = 12;
int EFFECT_TYPE_DEAF = 13;
int EFFECT_TYPE_RESURRECTION = 14;
int EFFECT_TYPE_IMMUNITY = 15;
//int EFFECT_TYPE_BLIND = 16;
int EFFECT_TYPE_ENEMY_ATTACK_BONUS = 17;
int EFFECT_TYPE_ARCANE_SPELL_FAILURE = 18;
//int EFFECT_TYPE_MOVEMENT_SPEED = 19;
int EFFECT_TYPE_AREA_OF_EFFECT = 20;
int EFFECT_TYPE_BEAM = 21;
//int EFFECT_TYPE_SPELL_RESISTANCE = 22;
int EFFECT_TYPE_CHARMED = 23;
int EFFECT_TYPE_CONFUSED = 24;
int EFFECT_TYPE_FRIGHTENED = 25;
int EFFECT_TYPE_DOMINATED = 26;
int EFFECT_TYPE_PARALYZE = 27;
int EFFECT_TYPE_DAZED = 28;
int EFFECT_TYPE_STUNNED = 29;
int EFFECT_TYPE_SLEEP = 30;
int EFFECT_TYPE_POISON = 31;
int EFFECT_TYPE_DISEASE = 32;
int EFFECT_TYPE_CURSE = 33;
int EFFECT_TYPE_SILENCE = 34;
int EFFECT_TYPE_TURNED = 35;
int EFFECT_TYPE_HASTE = 36;
int EFFECT_TYPE_SLOW = 37;
int EFFECT_TYPE_ABILITY_INCREASE = 38;
int EFFECT_TYPE_ABILITY_DECREASE = 39;
int EFFECT_TYPE_ATTACK_INCREASE = 40;
int EFFECT_TYPE_ATTACK_DECREASE = 41;
int EFFECT_TYPE_DAMAGE_INCREASE = 42;
int EFFECT_TYPE_DAMAGE_DECREASE = 43;
int EFFECT_TYPE_DAMAGE_IMMUNITY_INCREASE = 44;
int EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE = 45;
int EFFECT_TYPE_AC_INCREASE = 46;
int EFFECT_TYPE_AC_DECREASE = 47;
int EFFECT_TYPE_MOVEMENT_SPEED_INCREASE = 48;
int EFFECT_TYPE_MOVEMENT_SPEED_DECREASE = 49;
int EFFECT_TYPE_SAVING_THROW_INCREASE = 50;
int EFFECT_TYPE_SAVING_THROW_DECREASE = 51;
int EFFECT_TYPE_SPELL_RESISTANCE_INCREASE = 52;
int EFFECT_TYPE_SPELL_RESISTANCE_DECREASE = 53;
int EFFECT_TYPE_SKILL_INCREASE = 54;
int EFFECT_TYPE_SKILL_DECREASE = 55;
int EFFECT_TYPE_INVISIBILITY = 56;
int EFFECT_TYPE_IMPROVEDINVISIBILITY = 57;
int EFFECT_TYPE_DARKNESS = 58;
int EFFECT_TYPE_DISPELMAGICALL = 59;
int EFFECT_TYPE_ELEMENTALSHIELD = 60;
int EFFECT_TYPE_NEGATIVELEVEL = 61;
int EFFECT_TYPE_POLYMORPH = 62;
int EFFECT_TYPE_SANCTUARY = 63;
int EFFECT_TYPE_TRUESEEING = 64;
int EFFECT_TYPE_SEEINVISIBLE = 65;
int EFFECT_TYPE_TIMESTOP = 66;
int EFFECT_TYPE_BLINDNESS = 67;
int EFFECT_TYPE_SPELLLEVELABSORPTION = 68;
int EFFECT_TYPE_DISPELMAGICBEST = 69;
int EFFECT_TYPE_ULTRAVISION = 70;
int EFFECT_TYPE_MISS_CHANCE = 71;
int EFFECT_TYPE_CONCEALMENT = 72;
int EFFECT_TYPE_SPELL_IMMUNITY = 73;
int ITEM_PROPERTY_ABILITY_BONUS = 0 ;
int ITEM_PROPERTY_AC_BONUS = 1 ;
int ITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUP = 2 ;
int ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE = 3 ;
int ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP = 4 ;
int ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT = 5 ;
int ITEM_PROPERTY_ENHANCEMENT_BONUS = 6 ;
int ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_ALIGNMENT_GROUP = 7 ;
int ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP = 8 ;
int ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_SPECIFIC_ALIGNEMENT = 9 ;
int ITEM_PROPERTY_DECREASED_ENHANCEMENT_MODIFIER = 10 ;
int ITEM_PROPERTY_BASE_ITEM_WEIGHT_REDUCTION = 11 ;
int ITEM_PROPERTY_BONUS_FEAT = 12 ;
int ITEM_PROPERTY_BONUS_SPELL_SLOT_OF_LEVEL_N = 13 ;
int ITEM_PROPERTY_BOOMERANG = 14 ;
int ITEM_PROPERTY_CAST_SPELL = 15 ;
int ITEM_PROPERTY_DAMAGE_BONUS = 16 ;
int ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP = 17 ;
int ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP = 18 ;
int ITEM_PROPERTY_DAMAGE_BONUS_VS_SPECIFIC_ALIGNMENT = 19 ;
int ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE = 20 ;
int ITEM_PROPERTY_DECREASED_DAMAGE = 21 ;
int ITEM_PROPERTY_DAMAGE_REDUCTION = 22 ;
int ITEM_PROPERTY_DAMAGE_RESISTANCE = 23 ;
int ITEM_PROPERTY_DAMAGE_VULNERABILITY = 24 ;
int ITEM_PROPERTY_DANCING = 25 ;
int ITEM_PROPERTY_DARKVISION = 26 ;
int ITEM_PROPERTY_DECREASED_ABILITY_SCORE = 27 ;
int ITEM_PROPERTY_DECREASED_AC = 28 ;
int ITEM_PROPERTY_DECREASED_SKILL_MODIFIER = 29 ;
int ITEM_PROPERTY_DOUBLE_STACK = 30 ;
int ITEM_PROPERTY_ENHANCED_CONTAINER_BONUS_SLOTS = 31 ;
int ITEM_PROPERTY_ENHANCED_CONTAINER_REDUCED_WEIGHT = 32 ;
int ITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPE = 33 ;
int ITEM_PROPERTY_EXTRA_RANGED_DAMAGE_TYPE = 34 ;
int ITEM_PROPERTY_HASTE = 35 ;
int ITEM_PROPERTY_HOLY_AVENGER = 36 ;
int ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS = 37 ;
int ITEM_PROPERTY_IMPROVED_EVASION = 38 ;
int ITEM_PROPERTY_SPELL_RESISTANCE = 39 ;
int ITEM_PROPERTY_SAVING_THROW_BONUS = 40 ;
int ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC = 41 ;
int ITEM_PROPERTY_KEEN = 43 ;
int ITEM_PROPERTY_LIGHT = 44 ;
int ITEM_PROPERTY_MIGHTY = 45 ;
int ITEM_PROPERTY_MIND_BLANK = 46 ;
int ITEM_PROPERTY_NO_DAMAGE = 47 ;
int ITEM_PROPERTY_ON_HIT_PROPERTIES = 48 ;
int ITEM_PROPERTY_DECREASED_SAVING_THROWS = 49 ;
int ITEM_PROPERTY_DECREASED_SAVING_THROWS_SPECIFIC = 50 ;
int ITEM_PROPERTY_REGENERATION = 51 ;
int ITEM_PROPERTY_SKILL_BONUS = 52 ;
int ITEM_PROPERTY_IMMUNITY_SPECIFIC_SPELL = 53 ;
int ITEM_PROPERTY_IMMUNITY_SPELL_SCHOOL = 54 ;
int ITEM_PROPERTY_THIEVES_TOOLS = 55 ;
int ITEM_PROPERTY_ATTACK_BONUS = 56 ;
int ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP = 57 ;
int ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP = 58 ;
int ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT = 59 ;
int ITEM_PROPERTY_DECREASED_ATTACK_MODIFIER = 60 ;
int ITEM_PROPERTY_UNLIMITED_AMMUNITION = 61 ;
int ITEM_PROPERTY_USE_LIMITATION_ALIGNMENT_GROUP = 62 ;
int ITEM_PROPERTY_USE_LIMITATION_CLASS = 63 ;
int ITEM_PROPERTY_USE_LIMITATION_RACIAL_TYPE = 64 ;
int ITEM_PROPERTY_USE_LIMITATION_SPECIFIC_ALIGNMENT = 65 ;
int ITEM_PROPERTY_USE_LIMITATION_TILESET = 66 ;
int ITEM_PROPERTY_REGENERATION_VAMPIRIC = 67 ;
int ITEM_PROPERTY_VORPAL = 68 ;
int ITEM_PROPERTY_WOUNDING = 69 ;
int ITEM_PROPERTY_TRAP = 70 ;
int ITEM_PROPERTY_TRUE_SEEING = 71 ;
int ITEM_PROPERTY_ON_MONSTER_HIT = 72 ;
int ITEM_PROPERTY_TURN_RESISTANCE = 73 ;
int ITEM_PROPERTY_MASSIVE_CRITICALS = 74 ;
int ITEM_PROPERTY_FREEDOM_OF_MOVEMENT = 75 ;
int ITEM_PROPERTY_POISON = 76 ;
int ITEM_PROPERTY_MONSTER_DAMAGE = 77 ;
int ITEM_PROPERTY_IMMUNITY_SPELLS_BY_LEVEL = 78 ;
int BASE_ITEM_SHORTSWORD = 0;
int BASE_ITEM_LONGSWORD = 1;
int BASE_ITEM_BATTLEAXE = 2;
int BASE_ITEM_BASTARDSWORD = 3;
int BASE_ITEM_LIGHTFLAIL = 4;
int BASE_ITEM_WARHAMMER = 5;
int BASE_ITEM_HEAVYCROSSBOW = 6;
int BASE_ITEM_LIGHTCROSSBOW = 7;
int BASE_ITEM_LONGBOW = 8;
int BASE_ITEM_LIGHTMACE = 9;
int BASE_ITEM_HALBERD = 10;
int BASE_ITEM_SHORTBOW = 11;
int BASE_ITEM_TWOBLADEDSWORD = 12;
int BASE_ITEM_GREATSWORD = 13;
int BASE_ITEM_SMALLSHIELD = 14;
int BASE_ITEM_TORCH = 15;
int BASE_ITEM_ARMOR = 16;
int BASE_ITEM_HELMET = 17;
int BASE_ITEM_GREATAXE = 18;
int BASE_ITEM_AMULET = 19;
int BASE_ITEM_ARROW = 20;
int BASE_ITEM_BELT = 21;
int BASE_ITEM_DAGGER = 22;
int BASE_ITEM_MISCSMALL = 24;
int BASE_ITEM_BOLT = 25;
int BASE_ITEM_BOOTS = 26;
int BASE_ITEM_BULLET = 27;
int BASE_ITEM_CLUB = 28;
int BASE_ITEM_MISCMEDIUM = 29;
int BASE_ITEM_DART = 31;
int BASE_ITEM_DIREMACE = 32;
int BASE_ITEM_DOUBLEAXE = 33;
int BASE_ITEM_MISCLARGE = 34;
int BASE_ITEM_HEAVYFLAIL = 35;
int BASE_ITEM_GLOVES = 36;
int BASE_ITEM_LIGHTHAMMER = 37;
int BASE_ITEM_HANDAXE = 38;
int BASE_ITEM_HEALERSKIT = 39;
int BASE_ITEM_KAMA = 40;
int BASE_ITEM_KATANA = 41;
int BASE_ITEM_KUKRI = 42;
int BASE_ITEM_MISCTALL = 43;
int BASE_ITEM_MAGICROD = 44;
int BASE_ITEM_MAGICSTAFF = 45;
int BASE_ITEM_MAGICWAND = 46;
int BASE_ITEM_MORNINGSTAR = 47;
int BASE_ITEM_POTIONS = 49;
int BASE_ITEM_QUARTERSTAFF = 50;
int BASE_ITEM_RAPIER = 51;
int BASE_ITEM_RING = 52;
int BASE_ITEM_SCIMITAR = 53;
int BASE_ITEM_SCROLL = 54;
int BASE_ITEM_SCYTHE = 55;
int BASE_ITEM_LARGESHIELD = 56;
int BASE_ITEM_TOWERSHIELD = 57;
int BASE_ITEM_SHORTSPEAR = 58;
int BASE_ITEM_SHURIKEN = 59;
int BASE_ITEM_SICKLE = 60;
int BASE_ITEM_SLING = 61;
int BASE_ITEM_THIEVESTOOLS = 62;
int BASE_ITEM_THROWINGAXE = 63;
int BASE_ITEM_TRAPKIT = 64;
int BASE_ITEM_KEY = 65;
int BASE_ITEM_LARGEBOX = 66;
int BASE_ITEM_MISCWIDE = 68;
int BASE_ITEM_CSLASHWEAPON = 69;
int BASE_ITEM_CPIERCWEAPON = 70;
int BASE_ITEM_CBLUDGWEAPON = 71;
int BASE_ITEM_CSLSHPRCWEAP = 72;
int BASE_ITEM_CREATUREITEM = 73;
int BASE_ITEM_BOOK = 74;
int BASE_ITEM_SPELLSCROLL = 75;
int BASE_ITEM_GOLD = 76;
int BASE_ITEM_GEM = 77;
int BASE_ITEM_BRACER = 78;
int BASE_ITEM_MISCTHIN = 79;
int BASE_ITEM_CLOAK = 80;
int BASE_ITEM_INVALID = 256;
int VFX_NONE = -1;
int VFX_DUR_BLUR = 0;
int VFX_DUR_DARKNESS = 1;
int VFX_DUR_ENTANGLE = 2;
int VFX_DUR_FREEDOM_OF_MOVEMENT = 3;
int VFX_DUR_GLOBE_INVULNERABILITY = 4;
int VFX_DUR_BLACKOUT = 5;
int VFX_DUR_INVISIBILITY = 6;
int VFX_DUR_MIND_AFFECTING_NEGATIVE = 7;
int VFX_DUR_MIND_AFFECTING_POSITIVE = 8;
int VFX_DUR_GHOSTLY_VISAGE = 9;
int VFX_DUR_ETHEREAL_VISAGE = 10;
int VFX_DUR_PROT_BARKSKIN = 11;
int VFX_DUR_PROT_GREATER_STONESKIN = 12;
int VFX_DUR_PROT_PREMONITION = 13;
int VFX_DUR_PROT_SHADOW_ARMOR = 14;
int VFX_DUR_PROT_STONESKIN = 15;
int VFX_DUR_SANCTUARY = 16;
int VFX_DUR_WEB = 17;
int VFX_FNF_BLINDDEAF = 18;
int VFX_FNF_DISPEL = 19;
int VFX_FNF_DISPEL_DISJUNCTION = 20;
int VFX_FNF_DISPEL_GREATER = 21 ;
int VFX_FNF_FIREBALL = 22 ;
int VFX_FNF_FIRESTORM = 23 ;
int VFX_FNF_IMPLOSION = 24 ;
//int VFX_FNF_MASS_HASTE = 25 ;
int VFX_FNF_MASS_HEAL = 26 ;
int VFX_FNF_MASS_MIND_AFFECTING = 27 ;
int VFX_FNF_METEOR_SWARM = 28 ;
int VFX_FNF_NATURES_BALANCE = 29 ;
int VFX_FNF_PWKILL = 30 ;
int VFX_FNF_PWSTUN = 31 ;
int VFX_FNF_SUMMON_GATE = 32 ;
int VFX_FNF_SUMMON_MONSTER_1 = 33 ;
int VFX_FNF_SUMMON_MONSTER_2 = 34 ;
int VFX_FNF_SUMMON_MONSTER_3 = 35 ;
int VFX_FNF_SUMMON_UNDEAD = 36 ;
int VFX_FNF_SUNBEAM = 37 ;
int VFX_FNF_TIME_STOP = 38 ;
int VFX_FNF_WAIL_O_BANSHEES = 39 ;
int VFX_FNF_WEIRD = 40 ;
int VFX_FNF_WORD = 41 ;
int VFX_IMP_AC_BONUS = 42 ;
int VFX_IMP_ACID_L = 43 ;
int VFX_IMP_ACID_S = 44 ;
//int VFX_IMP_ALTER_WEAPON = 45 ;
int VFX_IMP_BLIND_DEAF_M = 46 ;
int VFX_IMP_BREACH = 47 ;
int VFX_IMP_CONFUSION_S = 48 ;
int VFX_IMP_DAZED_S = 49 ;
int VFX_IMP_DEATH = 50 ;
int VFX_IMP_DISEASE_S = 51 ;
int VFX_IMP_DISPEL = 52 ;
int VFX_IMP_DISPEL_DISJUNCTION = 53 ;
int VFX_IMP_DIVINE_STRIKE_FIRE = 54 ;
int VFX_IMP_DIVINE_STRIKE_HOLY = 55 ;
int VFX_IMP_DOMINATE_S = 56 ;
int VFX_IMP_DOOM = 57 ;
int VFX_IMP_FEAR_S = 58 ;
//int VFX_IMP_FLAME_L = 59 ;
int VFX_IMP_FLAME_M = 60 ;
int VFX_IMP_FLAME_S = 61 ;
int VFX_IMP_FROST_L = 62 ;
int VFX_IMP_FROST_S = 63 ;
int VFX_IMP_GREASE = 64 ;
int VFX_IMP_HASTE = 65 ;
int VFX_IMP_HEALING_G = 66 ;
int VFX_IMP_HEALING_L = 67 ;
int VFX_IMP_HEALING_M = 68 ;
int VFX_IMP_HEALING_S = 69 ;
int VFX_IMP_HEALING_X = 70 ;
int VFX_IMP_HOLY_AID = 71 ;
int VFX_IMP_KNOCK = 72 ;
int VFX_BEAM_LIGHTNING = 73 ;
int VFX_IMP_LIGHTNING_M = 74 ;
int VFX_IMP_LIGHTNING_S = 75 ;
int VFX_IMP_MAGBLUE = 76 ;
//int VFX_IMP_MAGBLUE2 = 77 ;
//int VFX_IMP_MAGBLUE3 = 78 ;
//int VFX_IMP_MAGBLUE4 = 79 ;
//int VFX_IMP_MAGBLUE5 = 80 ;
int VFX_IMP_NEGATIVE_ENERGY = 81 ;
int VFX_DUR_PARALYZE_HOLD = 82 ;
int VFX_IMP_POISON_L = 83 ;
int VFX_IMP_POISON_S = 84 ;
int VFX_IMP_POLYMORPH = 85 ;
int VFX_IMP_PULSE_COLD = 86 ;
int VFX_IMP_PULSE_FIRE = 87 ;
int VFX_IMP_PULSE_HOLY = 88 ;
int VFX_IMP_PULSE_NEGATIVE = 89 ;
int VFX_IMP_RAISE_DEAD = 90 ;
int VFX_IMP_REDUCE_ABILITY_SCORE = 91 ;
int VFX_IMP_REMOVE_CONDITION = 92 ;
int VFX_IMP_SILENCE = 93 ;
int VFX_IMP_SLEEP = 94 ;
int VFX_IMP_SLOW = 95 ;
int VFX_IMP_SONIC = 96 ;
int VFX_IMP_STUN = 97 ;
int VFX_IMP_SUNSTRIKE = 98 ;
int VFX_IMP_UNSUMMON = 99 ;
int VFX_COM_SPECIAL_BLUE_RED = 100 ;
int VFX_COM_SPECIAL_PINK_ORANGE = 101 ;
int VFX_COM_SPECIAL_RED_WHITE = 102 ;
int VFX_COM_SPECIAL_RED_ORANGE = 103 ;
int VFX_COM_SPECIAL_WHITE_BLUE = 104 ;
int VFX_COM_SPECIAL_WHITE_ORANGE = 105 ;
int VFX_COM_BLOOD_REG_WIMP = 106 ;
int VFX_COM_BLOOD_LRG_WIMP = 107 ;
int VFX_COM_BLOOD_CRT_WIMP = 108 ;
int VFX_COM_BLOOD_REG_RED = 109 ;
int VFX_COM_BLOOD_REG_GREEN = 110 ;
int VFX_COM_BLOOD_REG_YELLOW = 111 ;
int VFX_COM_BLOOD_LRG_RED = 112 ;
int VFX_COM_BLOOD_LRG_GREEN = 113 ;
int VFX_COM_BLOOD_LRG_YELLOW = 114 ;
int VFX_COM_BLOOD_CRT_RED = 115 ;
int VFX_COM_BLOOD_CRT_GREEN = 116 ;
int VFX_COM_BLOOD_CRT_YELLOW = 117 ;
int VFX_COM_SPARKS_PARRY = 118 ;
//int VFX_COM_GIB = 119 ;
int VFX_COM_UNLOAD_MODEL = 120 ;
int VFX_COM_CHUNK_RED_SMALL = 121 ;
int VFX_COM_CHUNK_RED_MEDIUM = 122 ;
int VFX_COM_CHUNK_GREEN_SMALL = 123 ;
int VFX_COM_CHUNK_GREEN_MEDIUM = 124 ;
int VFX_COM_CHUNK_YELLOW_SMALL = 125 ;
int VFX_COM_CHUNK_YELLOW_MEDIUM = 126 ;
//int VFX_ITM_ACID = 127 ;
//int VFX_ITM_FIRE = 128 ;
//int VFX_ITM_FROST = 129 ;
//int VFX_ITM_ILLUMINATED_BLUE = 130 ;
//int VFX_ITM_ILLUMINATED_PURPLE = 131 ;
//int VFX_ITM_ILLUMINATED_RED = 132 ;
//int VFX_ITM_LIGHTNING = 133 ;
//int VFX_ITM_PULSING_BLUE = 134 ;
//int VFX_ITM_PULSING_PURPLE = 135 ;
//int VFX_ITM_PULSING_RED = 136 ;
//int VFX_ITM_SMOKING = 137 ;
int VFX_DUR_SPELLTURNING = 138;
int VFX_IMP_IMPROVE_ABILITY_SCORE = 139;
int VFX_IMP_CHARM = 140;
int VFX_IMP_MAGICAL_VISION = 141;
//int VFX_IMP_LAW_HELP = 142;
//int VFX_IMP_CHAOS_HELP = 143;
int VFX_IMP_EVIL_HELP = 144;
int VFX_IMP_GOOD_HELP = 145;
int VFX_IMP_DEATH_WARD = 146;
int VFX_DUR_ELEMENTAL_SHIELD = 147;
int VFX_DUR_LIGHT = 148;
int VFX_IMP_MAGIC_PROTECTION = 149;
int VFX_IMP_SUPER_HEROISM = 150;
int VFX_FNF_STORM = 151;
int VFX_IMP_ELEMENTAL_PROTECTION = 152;
int VFX_DUR_LIGHT_BLUE_5 = 153;
int VFX_DUR_LIGHT_BLUE_10 = 154;
int VFX_DUR_LIGHT_BLUE_15 = 155;
int VFX_DUR_LIGHT_BLUE_20 = 156;
int VFX_DUR_LIGHT_YELLOW_5 = 157;
int VFX_DUR_LIGHT_YELLOW_10 = 158;
int VFX_DUR_LIGHT_YELLOW_15 = 159;
int VFX_DUR_LIGHT_YELLOW_20 = 160;
int VFX_DUR_LIGHT_PURPLE_5 = 161;
int VFX_DUR_LIGHT_PURPLE_10 = 162;
int VFX_DUR_LIGHT_PURPLE_15 = 163;
int VFX_DUR_LIGHT_PURPLE_20 = 164;
int VFX_DUR_LIGHT_RED_5 = 165;
int VFX_DUR_LIGHT_RED_10 = 166;
int VFX_DUR_LIGHT_RED_15 = 167;
int VFX_DUR_LIGHT_RED_20 = 168;
int VFX_DUR_LIGHT_ORANGE_5 = 169;
int VFX_DUR_LIGHT_ORANGE_10 = 170;
int VFX_DUR_LIGHT_ORANGE_15 = 171;
int VFX_DUR_LIGHT_ORANGE_20 = 172;
int VFX_DUR_LIGHT_WHITE_5 = 173;
int VFX_DUR_LIGHT_WHITE_10 = 174;
int VFX_DUR_LIGHT_WHITE_15 = 175;
int VFX_DUR_LIGHT_WHITE_20 = 176;
int VFX_DUR_LIGHT_GREY_5 = 177;
int VFX_DUR_LIGHT_GREY_10 = 178;
int VFX_DUR_LIGHT_GREY_15 = 179;
int VFX_DUR_LIGHT_GREY_20 = 180;
int VFX_IMP_MIRV = 181;
int VFX_DUR_DARKVISION = 182;
int VFX_FNF_SOUND_BURST = 183;
int VFX_FNF_STRIKE_HOLY = 184;
int VFX_FNF_LOS_EVIL_10 = 185;
int VFX_FNF_LOS_EVIL_20 = 186;
int VFX_FNF_LOS_EVIL_30 = 187;
int VFX_FNF_LOS_HOLY_10 = 188;
int VFX_FNF_LOS_HOLY_20 = 189;
int VFX_FNF_LOS_HOLY_30 = 190;
int VFX_FNF_LOS_NORMAL_10 = 191;xzX`
int VFX_FNF_LOS_NORMAL_20 = 192;
int VFX_FNF_LOS_NORMAL_30 = 193;
int VFX_IMP_HEAD_ACID = 194;
int VFX_IMP_HEAD_FIRE = 195;
int VFX_IMP_HEAD_SONIC = 196;
int VFX_IMP_HEAD_ELECTRICITY = 197;
int VFX_IMP_HEAD_COLD = 198;
int VFX_IMP_HEAD_HOLY = 199;
int VFX_IMP_HEAD_NATURE = 200;
int VFX_IMP_HEAD_HEAL = 201;
int VFX_IMP_HEAD_MIND = 202;
int VFX_IMP_HEAD_EVIL = 203;
int VFX_IMP_HEAD_ODD = 204;
int VFX_DUR_CESSATE_NEUTRAL = 205;
int VFX_DUR_CESSATE_POSITIVE = 206;
int VFX_DUR_CESSATE_NEGATIVE = 207;
int VFX_DUR_MIND_AFFECTING_DISABLED = 208;
int VFX_DUR_MIND_AFFECTING_DOMINATED= 209;
int VFX_BEAM_FIRE = 210;
int VFX_BEAM_COLD = 211;
int VFX_BEAM_HOLY = 212;
int VFX_BEAM_MIND = 213;
int VFX_BEAM_EVIL = 214;
int VFX_BEAM_ODD = 215;
int VFX_BEAM_FIRE_LASH = 216;
int VFX_IMP_DEATH_L = 217;
int VFX_DUR_MIND_AFFECTING_FEAR = 218;
int VFX_FNF_SUMMON_CELESTIAL = 219;
int VFX_DUR_GLOBE_MINOR = 220;
int VFX_IMP_RESTORATION_LESSER = 221;
int VFX_IMP_RESTORATION = 222;
int VFX_IMP_RESTORATION_GREATER = 223;
int VFX_DUR_PROTECTION_ELEMENTS = 224;
int VFX_DUR_PROTECTION_GOOD_MINOR = 225;
int VFX_DUR_PROTECTION_GOOD_MAJOR = 226;2Z
int VFX_DUR_PROTECTION_EVIL_MINOR = 227;
int VFX_DUR_PROTECTION_EVIL_MAJOR = 228;
int VFX_DUR_MAGICAL_SIGHT = 229;
int VFX_DUR_WEB_MASS = 230;
int VFX_FNF_ICESTORM = 231;
int VFX_DUR_PARALYZED = 232;
int VFX_IMP_MIRV_FLAME = 233;
int VFX_IMP_DESTRUCTION = 234;
int VFX_COM_CHUNK_RED_LARGE = 235;
int VFX_COM_CHUNK_BONE_MEDIUM = 236;
int VFX_COM_BLOOD_SPARK_SMALL = 237;
int VFX_COM_BLOOD_SPARK_MEDIUM = 238;
int VFX_COM_BLOOD_SPARK_LARGE = 239;
int VFX_DUR_GHOSTLY_PULSE = 240;
int VFX_FNF_HORRID_WILTING = 241;
int VFX_DUR_BLINDVISION = 242;
int VFX_DUR_LOWLIGHTVISION = 243;
int VFX_DUR_ULTRAVISION = 244;
int VFX_DUR_MIRV_ACID = 245;
int VFX_IMP_HARM = 246;
int VFX_DUR_BLIND = 247;
int VFX_DUR_ANTI_LIGHT_10 = 248;
int VFX_DUR_MAGIC_RESISTANCE = 249;
int VFX_IMP_MAGIC_RESISTANCE_USE = 250;
int VFX_IMP_GLOBE_USE = 251;
int VFX_IMP_WILL_SAVING_THROW_USE = 252;
int VFX_IMP_SPIKE_TRAP = 253;
int VFX_IMP_SPELL_MANTLE_USE = 254;
int VFX_IMP_FORTITUDE_SAVING_THROW_USE = 255;
int VFX_IMP_REFLEX_SAVE_THROW_USE = 256;
int VFX_FNF_GAS_EXPLOSION_ACID = 257;
int VFX_FNF_GAS_EXPLOSION_EVIL = 258;
int VFX_FNF_GAS_EXPLOSION_NATURE = 259;
int VFX_FNF_GAS_EXPLOSION_FIRE = 260;
int VFX_FNF_GAS_EXPLOSION_GREASE = 261;
int VFX_FNF_GAS_EXPLOSION_MIND = 262;
int VFX_FNF_SMOKE_PUFF = 263;
int VFX_IMP_PULSE_WATER = 264;
int VFX_IMP_PULSE_WIND = 265;
int VFX_IMP_PULSE_NATURE = 266;
int VFX_DUR_AURA_COLD = 267;
int VFX_DUR_AURA_FIRE = 268;
int VFX_DUR_AURA_POISON = 269;
int VFX_DUR_AURA_DISEASE = 270;
int VFX_DUR_AURA_ODD = 271;
int VFX_DUR_AURA_SILENCE = 272;
int VFX_IMP_AURA_HOLY = 273;
int VFX_IMP_AURA_UNEARTHLY = 274;
int VFX_IMP_AURA_FEAR = 275;
int VFX_IMP_AURA_NEGATIVE_ENERGY = 276;
int VFX_DUR_BARD_SONG = 277;
int VFX_FNF_HOWL_MIND = 278;
int VFX_FNF_HOWL_ODD = 279;
int VFX_COM_HIT_FIRE = 280;
int VFX_COM_HIT_FROST = 281;
int VFX_COM_HIT_ELECTRICAL = 282;
int VFX_COM_HIT_ACID = 283;
int VFX_COM_HIT_SONIC = 284;
int VFX_FNF_HOWL_WAR_CRY = 285;
int VFX_FNF_SCREEN_SHAKE = 286;
int VFX_FNF_SCREEN_BUMP = 287;
int VFX_COM_HIT_NEGATIVE = 288;
int VFX_COM_HIT_DIVINE = 289;
int VFX_FNF_HOWL_WAR_CRY_FEMALE = 290;
int VFX_DUR_AURA_DRAGON_FEAR = 291;
int VFX_DUR_FLAG_RED = 303;
int VFX_DUR_FLAG_BLUE = 304;
int VFX_DUR_FLAG_GOLD = 305;
int VFX_DUR_FLAG_PURPLE = 306;
int VFX_DUR_TENTACLE = 346;
int AOE_PER_FOGACID = 0;
int AOE_PER_FOGFIRE = 1;
int AOE_PER_FOGSTINK = 2;
int AOE_PER_FOGKILL = 3;
int AOE_PER_FOGMIND = 4;
int AOE_PER_WALLFIRE = 5;
int AOE_PER_WALLWIND = 6;
int AOE_PER_WALLBLADE = 7;
int AOE_PER_WEB = 8;
int AOE_PER_ENTANGLE = 9;
//int AOE_PER_CHAOS = 10;
int AOE_PER_DARKNESS = 11;
int AOE_MOB_CIRCEVIL = 12;
int AOE_MOB_CIRCGOOD = 13;
int AOE_MOB_CIRCLAW = 14;
int AOE_MOB_CIRCCHAOS = 15;
int AOE_MOB_FEAR = 16;
int AOE_MOB_BLINDING = 17;
int AOE_MOB_UNEARTHLY = 18;
int AOE_MOB_MENACE = 19;
int AOE_MOB_UNNATURAL = 20;
int AOE_MOB_STUN = 21;
int AOE_MOB_PROTECTION = 22;
int AOE_MOB_FIRE = 23;
int AOE_MOB_FROST = 24;
int AOE_MOB_ELECTRICAL = 25;
int AOE_PER_FOGGHOUL = 26;
int AOE_MOB_TYRANT_FOG = 27;
int AOE_PER_STORM = 28;
int AOE_PER_INVIS_SPHERE = 29;
int AOE_MOB_SILENCE = 30;
int AOE_PER_DELAY_BLAST_FIREBALL = 31;
int AOE_PER_GREASE = 32;
int AOE_PER_CREEPING_DOOM = 33;
int AOE_PER_EVARDS_BLACK_TENTACLES = 34;
int AOE_MOB_INVISIBILITY_PURGE = 35;
int AOE_MOB_DRAGON_FEAR = 36;
int SPELL_ALL_SPELLS = -1; // used for spell immunity.
int SPELL_ACID_FOG = 0;
int SPELL_AID = 1;
int SPELL_ANIMATE_DEAD = 2;
int SPELL_BARKSKIN = 3;
int SPELL_BESTOW_CURSE = 4;
int SPELL_BLADE_BARRIER = 5;
int SPELL_BLESS = 6;
int SPELL_BLESS_WEAPON = 7;
int SPELL_BLINDNESS_AND_DEAFNESS = 8;
int SPELL_BULLS_STRENGTH = 9;
int SPELL_BURNING_HANDS = 10;
int SPELL_CALL_LIGHTNING = 11;
//int SPELL_CALM_EMOTIONS = 12;
int SPELL_CATS_GRACE = 13;
int SPELL_CHAIN_LIGHTNING = 14;
int SPELL_CHARM_MONSTER = 15;
int SPELL_CHARM_PERSON = 16;
int SPELL_CHARM_PERSON_OR_ANIMAL = 17;
int SPELL_CIRCLE_OF_DEATH = 18;
int SPELL_CIRCLE_OF_DOOM = 19;
int SPELL_CLAIRAUDIENCE_AND_CLAIRVOYANCE = 20;
int SPELL_CLARITY = 21;
int SPELL_CLOAK_OF_CHAOS = 22;
int SPELL_CLOUDKILL = 23;
int SPELL_COLOR_SPRAY = 24;
int SPELL_CONE_OF_COLD = 25;
int SPELL_CONFUSION = 26;
int SPELL_CONTAGION = 27;
int SPELL_CONTROL_UNDEAD = 28;
int SPELL_CREATE_GREATER_UNDEAD = 29;
int SPELL_CREATE_UNDEAD = 30;
int SPELL_CURE_CRITICAL_WOUNDS = 31;
int SPELL_CURE_LIGHT_WOUNDS = 32;
int SPELL_CURE_MINOR_WOUNDS = 33;
int SPELL_CURE_MODERATE_WOUNDS = 34;
int SPELL_CURE_SERIOUS_WOUNDS = 35;
int SPELL_DARKNESS = 36;
int SPELL_DAZE = 37;
int SPELL_DEATH_WARD = 38;
int SPELL_DELAYED_BLAST_FIREBALL = 39;
int SPELL_DISMISSAL = 40;
int SPELL_DISPEL_MAGIC = 41;
int SPELL_DIVINE_POWER = 42;
int SPELL_DOMINATE_ANIMAL = 43;
int SPELL_DOMINATE_MONSTER = 44;
int SPELL_DOMINATE_PERSON = 45;
int SPELL_DOOM = 46;
int SPELL_ELEMENTAL_SHIELD = 47;
int SPELL_ELEMENTAL_SWARM = 48;
int SPELL_ENDURANCE = 49;
int SPELL_ENDURE_ELEMENTS = 50;
int SPELL_ENERGY_DRAIN = 51;
int SPELL_ENERVATION = 52;
int SPELL_ENTANGLE = 53;
int SPELL_FEAR = 54;
int SPELL_FEEBLEMIND = 55;
int SPELL_FINGER_OF_DEATH = 56;
int SPELL_FIRE_STORM = 57;
int SPELL_FIREBALL = 58;
int SPELL_FLAME_ARROW = 59;
int SPELL_FLAME_LASH = 60;
int SPELL_FLAME_STRIKE = 61;
int SPELL_FREEDOM_OF_MOVEMENT = 62;
int SPELL_GATE = 63;
int SPELL_GHOUL_TOUCH = 64;
int SPELL_GLOBE_OF_INVULNERABILITY = 65;
int SPELL_GREASE = 66;
int SPELL_GREATER_DISPELLING = 67;
int SPELL_GREATER_MAGIC_WEAPON = 68;
int SPELL_GREATER_PLANAR_BINDING = 69;
int SPELL_GREATER_RESTORATION = 70;
//int SPELL_GREATER_SHADOW_CONJURATION = 71;
int SPELL_GREATER_SPELL_BREACH = 72;
int SPELL_GREATER_SPELL_MANTLE = 73;
int SPELL_GREATER_STONESKIN = 74;
// int SPELL_GUST_OF_WIND = 75;
int SPELL_HAMMER_OF_THE_GODS = 76;
int SPELL_HARM = 77;
int SPELL_HASTE = 78;
int SPELL_HEAL = 79;
int SPELL_HEALING_CIRCLE = 80;
int SPELL_HOLD_ANIMAL = 81;
int SPELL_HOLD_MONSTER = 82;
int SPELL_HOLD_PERSON = 83;
int SPELL_HOLY_AURA = 84;
int SPELL_HOLY_SWORD = 85;
int SPELL_IDENTIFY = 86;
int SPELL_IMPLOSION = 87;
int SPELL_IMPROVED_INVISIBILITY = 88;
int SPELL_INCENDIARY_CLOUD = 89;
int SPELL_INVISIBILITY = 90;
int SPELL_INVISIBILITY_PURGE = 91;
int SPELL_INVISIBILITY_SPHERE = 92;
int SPELL_KNOCK = 93;
int SPELL_LESSER_DISPEL = 94;
int SPELL_LESSER_MIND_BLANK = 95;
int SPELL_LESSER_PLANAR_BINDING = 96;
int SPELL_LESSER_RESTORATION = 97;
int SPELL_LESSER_SPELL_BREACH = 98;
int SPELL_LESSER_SPELL_MANTLE = 99;
int SPELL_LIGHT = 100;
int SPELL_LIGHTNING_BOLT = 101;
int SPELL_MAGE_ARMOR = 102;
int SPELL_MAGIC_CIRCLE_AGAINST_CHAOS = 103;
int SPELL_MAGIC_CIRCLE_AGAINST_EVIL = 104;
int SPELL_MAGIC_CIRCLE_AGAINST_GOOD = 105;
int SPELL_MAGIC_CIRCLE_AGAINST_LAW = 106;
int SPELL_MAGIC_MISSILE = 107;
int SPELL_MAGIC_VESTMENT = 108;
int SPELL_MAGIC_WEAPON = 109;
int SPELL_MASS_BLINDNESS_AND_DEAFNESS = 110;
int SPELL_MASS_CHARM = 111;
// int SPELL_MASS_DOMINATION = 112;
int SPELL_MASS_HASTE = 113;
int SPELL_MASS_HEAL = 114;
int SPELL_MELFS_ACID_ARROW = 115;
int SPELL_METEOR_SWARM = 116;
int SPELL_MIND_BLANK = 117;
int SPELL_MIND_FOG = 118;
int SPELL_MINOR_GLOBE_OF_INVULNERABILITY = 119;
int SPELL_GHOSTLY_VISAGE = 120;
int SPELL_ETHEREAL_VISAGE = 121;
int SPELL_MORDENKAINENS_DISJUNCTION = 122;
int SPELL_MORDENKAINENS_SWORD = 123;
int SPELL_NATURES_BALANCE = 124;
int SPELL_NEGATIVE_ENERGY_PROTECTION = 125;
int SPELL_NEUTRALIZE_POISON = 126;
int SPELL_PHANTASMAL_KILLER = 127;
int SPELL_PLANAR_BINDING = 128;
int SPELL_POISON = 129;
int SPELL_POLYMORPH_SELF = 130;
int SPELL_POWER_WORD_KILL = 131;
int SPELL_POWER_WORD_STUN = 132;
int SPELL_PRAYER = 133;
int SPELL_PREMONITION = 134;
int SPELL_PRISMATIC_SPRAY = 135;
int SPELL_PROTECTION__FROM_CHAOS = 136;
int SPELL_PROTECTION_FROM_ELEMENTS = 137;
int SPELL_PROTECTION_FROM_EVIL = 138;
int SPELL_PROTECTION_FROM_GOOD = 139;
int SPELL_PROTECTION_FROM_LAW = 140;
int SPELL_PROTECTION_FROM_SPELLS = 141;
int SPELL_RAISE_DEAD = 142;
int SPELL_RAY_OF_ENFEEBLEMENT = 143;
int SPELL_RAY_OF_FROST = 144;
int SPELL_REMOVE_BLINDNESS_AND_DEAFNESS = 145;
int SPELL_REMOVE_CURSE = 146;
int SPELL_REMOVE_DISEASE = 147;
int SPELL_REMOVE_FEAR = 148;
int SPELL_REMOVE_PARALYSIS = 149;
int SPELL_RESIST_ELEMENTS = 150;
int SPELL_RESISTANCE = 151;
int SPELL_RESTORATION = 152;
int SPELL_RESURRECTION = 153;
int SPELL_SANCTUARY = 154;
int SPELL_SCARE = 155;
int SPELL_SEARING_LIGHT = 156;
int SPELL_SEE_INVISIBILITY = 157;
//int SPELL_SHADES = 158;
//int SPELL_SHADOW_CONJURATION = 159;
int SPELL_SHADOW_SHIELD = 160;
int SPELL_SHAPECHANGE = 161;
int SPELL_SHIELD_OF_LAW = 162;
int SPELL_SILENCE = 163;
int SPELL_SLAY_LIVING = 164;
int SPELL_SLEEP = 165;
int SPELL_SLOW = 166;
int SPELL_SOUND_BURST = 167;
int SPELL_SPELL_RESISTANCE = 168;
int SPELL_SPELL_MANTLE = 169;
int SPELL_SPHERE_OF_CHAOS = 170;
int SPELL_STINKING_CLOUD = 171;
int SPELL_STONESKIN = 172;
int SPELL_STORM_OF_VENGEANCE = 173;
int SPELL_SUMMON_CREATURE_I = 174;
int SPELL_SUMMON_CREATURE_II = 175;
int SPELL_SUMMON_CREATURE_III = 176;
int SPELL_SUMMON_CREATURE_IV = 177;
int SPELL_SUMMON_CREATURE_IX = 178;
int SPELL_SUMMON_CREATURE_V = 179;
int SPELL_SUMMON_CREATURE_VI = 180;
int SPELL_SUMMON_CREATURE_VII = 181;
int SPELL_SUMMON_CREATURE_VIII = 182;
int SPELL_SUNBEAM = 183;
int SPELL_TENSERS_TRANSFORMATION = 184;
int SPELL_TIME_STOP = 185;
int SPELL_TRUE_SEEING = 186;
int SPELL_UNHOLY_AURA = 187;
int SPELL_VAMPIRIC_TOUCH = 188;
int SPELL_VIRTUE = 189;
int SPELL_WAIL_OF_THE_BANSHEE = 190;
int SPELL_WALL_OF_FIRE = 191;
int SPELL_WEB = 192;
int SPELL_WEIRD = 193;
int SPELL_WORD_OF_FAITH = 194;
int SPELLABILITY_AURA_BLINDING = 195;
int SPELLABILITY_AURA_COLD = 196;
int SPELLABILITY_AURA_ELECTRICITY = 197;
int SPELLABILITY_AURA_FEAR = 198;
int SPELLABILITY_AURA_FIRE = 199;
int SPELLABILITY_AURA_MENACE = 200;
int SPELLABILITY_AURA_PROTECTION = 201;
int SPELLABILITY_AURA_STUN = 202;
int SPELLABILITY_AURA_UNEARTHLY_VISAGE = 203;
int SPELLABILITY_AURA_UNNATURAL = 204;
int SPELLABILITY_BOLT_ABILITY_DRAIN_CHARISMA = 205;
int SPELLABILITY_BOLT_ABILITY_DRAIN_CONSTITUTION = 206;
int SPELLABILITY_BOLT_ABILITY_DRAIN_DEXTERITY = 207;
int SPELLABILITY_BOLT_ABILITY_DRAIN_INTELLIGENCE = 208;
int SPELLABILITY_BOLT_ABILITY_DRAIN_STRENGTH = 209;
int SPELLABILITY_BOLT_ABILITY_DRAIN_WISDOM = 210;
int SPELLABILITY_BOLT_ACID = 211;
int SPELLABILITY_BOLT_CHARM = 212;
int SPELLABILITY_BOLT_COLD = 213;
int SPELLABILITY_BOLT_CONFUSE = 214;
int SPELLABILITY_BOLT_DAZE = 215;
int SPELLABILITY_BOLT_DEATH = 216;
int SPELLABILITY_BOLT_DISEASE = 217;
int SPELLABILITY_BOLT_DOMINATE = 218;
int SPELLABILITY_BOLT_FIRE = 219;
int SPELLABILITY_BOLT_KNOCKDOWN = 220;
int SPELLABILITY_BOLT_LEVEL_DRAIN = 221;
int SPELLABILITY_BOLT_LIGHTNING = 222;
int SPELLABILITY_BOLT_PARALYZE = 223;
int SPELLABILITY_BOLT_POISON = 224;
int SPELLABILITY_BOLT_SHARDS = 225;
int SPELLABILITY_BOLT_SLOW = 226;
int SPELLABILITY_BOLT_STUN = 227;
int SPELLABILITY_BOLT_WEB = 228;
int SPELLABILITY_CONE_ACID = 229;
int SPELLABILITY_CONE_COLD = 230;
int SPELLABILITY_CONE_DISEASE = 231;
int SPELLABILITY_CONE_FIRE = 232;
int SPELLABILITY_CONE_LIGHTNING = 233;
int SPELLABILITY_CONE_POISON = 234;
int SPELLABILITY_CONE_SONIC = 235;
int SPELLABILITY_DRAGON_BREATH_ACID = 236;
int SPELLABILITY_DRAGON_BREATH_COLD = 237;
int SPELLABILITY_DRAGON_BREATH_FEAR = 238;
int SPELLABILITY_DRAGON_BREATH_FIRE = 239;
int SPELLABILITY_DRAGON_BREATH_GAS = 240;
int SPELLABILITY_DRAGON_BREATH_LIGHTNING = 241;
int SPELLABILITY_DRAGON_BREATH_PARALYZE = 242;
int SPELLABILITY_DRAGON_BREATH_SLEEP = 243;
int SPELLABILITY_DRAGON_BREATH_SLOW = 244;
int SPELLABILITY_DRAGON_BREATH_WEAKEN = 245;
int SPELLABILITY_DRAGON_WING_BUFFET = 246;
int SPELLABILITY_FEROCITY_1 = 247;
int SPELLABILITY_FEROCITY_2 = 248;
int SPELLABILITY_FEROCITY_3 = 249;
int SPELLABILITY_GAZE_CHARM = 250;
int SPELLABILITY_GAZE_CONFUSION = 251;
int SPELLABILITY_GAZE_DAZE = 252;
int SPELLABILITY_GAZE_DEATH = 253;
int SPELLABILITY_GAZE_DESTROY_CHAOS = 254;
int SPELLABILITY_GAZE_DESTROY_EVIL = 255;
int SPELLABILITY_GAZE_DESTROY_GOOD = 256;
int SPELLABILITY_GAZE_DESTROY_LAW = 257;
int SPELLABILITY_GAZE_DOMINATE = 258;
int SPELLABILITY_GAZE_DOOM = 259;
int SPELLABILITY_GAZE_FEAR = 260;
int SPELLABILITY_GAZE_PARALYSIS = 261;
int SPELLABILITY_GAZE_STUNNED = 262;
int SPELLABILITY_GOLEM_BREATH_GAS = 263;
int SPELLABILITY_HELL_HOUND_FIREBREATH = 264;
int SPELLABILITY_HOWL_CONFUSE = 265;
int SPELLABILITY_HOWL_DAZE = 266;
int SPELLABILITY_HOWL_DEATH = 267;
int SPELLABILITY_HOWL_DOOM = 268;
int SPELLABILITY_HOWL_FEAR = 269;
int SPELLABILITY_HOWL_PARALYSIS = 270;
int SPELLABILITY_HOWL_SONIC = 271;
int SPELLABILITY_HOWL_STUN = 272;
int SPELLABILITY_INTENSITY_1 = 273;
int SPELLABILITY_INTENSITY_2 = 274;
int SPELLABILITY_INTENSITY_3 = 275;
int SPELLABILITY_KRENSHAR_SCARE = 276;
int SPELLABILITY_LESSER_BODY_ADJUSTMENT = 277;
int SPELLABILITY_MEPHIT_SALT_BREATH = 278;
int SPELLABILITY_MEPHIT_STEAM_BREATH = 279;
int SPELLABILITY_MUMMY_BOLSTER_UNDEAD = 280;
int SPELLABILITY_PULSE_DROWN = 281;
int SPELLABILITY_PULSE_SPORES = 282;
int SPELLABILITY_PULSE_WHIRLWIND = 283;
int SPELLABILITY_PULSE_FIRE = 284;
int SPELLABILITY_PULSE_LIGHTNING = 285;
int SPELLABILITY_PULSE_COLD = 286;
int SPELLABILITY_PULSE_NEGATIVE = 287;
int SPELLABILITY_PULSE_HOLY = 288;
int SPELLABILITY_PULSE_DEATH = 289;
int SPELLABILITY_PULSE_LEVEL_DRAIN = 290;
int SPELLABILITY_PULSE_ABILITY_DRAIN_INTELLIGENCE = 291;
int SPELLABILITY_PULSE_ABILITY_DRAIN_CHARISMA = 292;
int SPELLABILITY_PULSE_ABILITY_DRAIN_CONSTITUTION = 293;
int SPELLABILITY_PULSE_ABILITY_DRAIN_DEXTERITY = 294;
int SPELLABILITY_PULSE_ABILITY_DRAIN_STRENGTH = 295;
int SPELLABILITY_PULSE_ABILITY_DRAIN_WISDOM = 296;
int SPELLABILITY_PULSE_POISON = 297;
int SPELLABILITY_PULSE_DISEASE = 298;
int SPELLABILITY_RAGE_3 = 299;
int SPELLABILITY_RAGE_4 = 300;
int SPELLABILITY_RAGE_5 = 301;
int SPELLABILITY_SMOKE_CLAW = 302;
int SPELLABILITY_SUMMON_SLAAD = 303;
int SPELLABILITY_SUMMON_TANARRI = 304;
int SPELLABILITY_TRUMPET_BLAST = 305;
int SPELLABILITY_TYRANT_FOG_MIST = 306;
int SPELLABILITY_BARBARIAN_RAGE = 307;
int SPELLABILITY_TURN_UNDEAD = 308;
int SPELLABILITY_WHOLENESS_OF_BODY = 309;
int SPELLABILITY_QUIVERING_PALM = 310;
int SPELLABILITY_EMPTY_BODY = 311;
int SPELLABILITY_DETECT_EVIL = 312;
int SPELLABILITY_LAY_ON_HANDS = 313;
int SPELLABILITY_AURA_OF_COURAGE = 314;
int SPELLABILITY_SMITE_EVIL = 315;
int SPELLABILITY_REMOVE_DISEASE = 316;
int SPELLABILITY_SUMMON_ANIMAL_COMPANION = 317;
int SPELLABILITY_SUMMON_FAMILIAR = 318;
int SPELLABILITY_ELEMENTAL_SHAPE = 319;
int SPELLABILITY_WILD_SHAPE = 320;
//int SPELL_PROTECTION_FROM_ALIGNMENT = 321;
//int SPELL_MAGIC_CIRCLE_AGAINST_ALIGNMENT = 322;
//int SPELL_AURA_VERSUS_ALIGNMENT = 323;
int SPELL_SHADES_SUMMON_SHADOW = 324;
//int SPELL_PROTECTION_FROM_ELEMENTS_COLD = 325;
//int SPELL_PROTECTION_FROM_ELEMENTS_FIRE = 326;
//int SPELL_PROTECTION_FROM_ELEMENTS_ACID = 327;
//int SPELL_PROTECTION_FROM_ELEMENTS_SONIC = 328;
//int SPELL_PROTECTION_FROM_ELEMENTS_ELECTRICITY = 329;
//int SPELL_ENDURE_ELEMENTS_COLD = 330;
//int SPELL_ENDURE_ELEMENTS_FIRE = 331;
//int SPELL_ENDURE_ELEMENTS_ACID = 332;
//int SPELL_ENDURE_ELEMENTS_SONIC = 333;
//int SPELL_ENDURE_ELEMENTS_ELECTRICITY = 334;
//int SPELL_RESIST_ELEMENTS_COLD = 335;
//int SPELL_RESIST_ELEMENTS_FIRE = 336;
//int SPELL_RESIST_ELEMENTS_ACID = 337;
//int SPELL_RESIST_ELEMENTS_SONIC = 338;
//int SPELL_RESIST_ELEMENTS_ELECTRICITY = 339;
int SPELL_SHADES_CONE_OF_COLD = 340;
int SPELL_SHADES_FIREBALL = 341;
int SPELL_SHADES_STONESKIN = 342;
int SPELL_SHADES_WALL_OF_FIRE = 343;
int SPELL_SHADOW_CONJURATION_SUMMON_SHADOW = 344;
int SPELL_SHADOW_CONJURATION_DARKNESS = 345;
int SPELL_SHADOW_CONJURATION_INIVSIBILITY = 346;
int SPELL_SHADOW_CONJURATION_MAGE_ARMOR = 347;
int SPELL_SHADOW_CONJURATION_MAGIC_MISSILE = 348;
int SPELL_GREATER_SHADOW_CONJURATION_SUMMON_SHADOW = 349;
int SPELL_GREATER_SHADOW_CONJURATION_ACID_ARROW = 350;
int SPELL_GREATER_SHADOW_CONJURATION_MIRROR_IMAGE = 351;
int SPELL_GREATER_SHADOW_CONJURATION_WEB = 352;
int SPELL_GREATER_SHADOW_CONJURATION_MINOR_GLOBE = 353;
int SPELL_EAGLE_SPLEDOR = 354;
int SPELL_OWLS_WISDOM = 355;
int SPELL_FOXS_CUNNING = 356;
int SPELL_GREATER_EAGLE_SPLENDOR = 357;
int SPELL_GREATER_OWLS_WISDOM = 358;
int SPELL_GREATER_FOXS_CUNNING = 359;
int SPELL_GREATER_BULLS_STRENGTH = 360;
int SPELL_GREATER_CATS_GRACE = 361;
int SPELL_GREATER_ENDURANCE = 362;
int SPELL_AWAKEN = 363;
int SPELL_CREEPING_DOOM = 364;
int SPELL_DARKVISION = 365;
int SPELL_DESTRUCTION = 366;
int SPELL_HORRID_WILTING = 367;
int SPELL_ICE_STORM = 368;
int SPELL_ENERGY_BUFFER = 369;
int SPELL_NEGATIVE_ENERGY_BURST = 370;
int SPELL_NEGATIVE_ENERGY_RAY = 371;
int SPELL_AURA_OF_VITALITY = 372;
int SPELL_WAR_CRY = 373;
int SPELL_REGENERATE = 374;
int SPELL_EVARDS_BLACK_TENTACLES = 375;
int SPELL_LEGEND_LORE = 376;
int SPELL_FIND_TRAPS = 377;
int SPELLABILITY_SUMMON_MEPHIT = 378;
int SPELLABILITY_SUMMON_CELESTIAL = 379;
int SPELLABILITY_BATTLE_MASTERY = 380;
int SPELLABILITY_DIVINE_STRENGTH = 381;
int SPELLABILITY_DIVINE_PROTECTION = 382;
int SPELLABILITY_NEGATIVE_PLANE_AVATAR = 383;
int SPELLABILITY_DIVINE_TRICKERY = 384;
int SPELLABILITY_ROGUES_CUNNING = 385;
int SPELLABILITY_ACTIVATE_ITEM = 386;
int SPELLABILITY_DRAGON_FEAR = 412;
int SPELL_BLUR = 414;
int SPELL_FAERIEFIRE = 415;
// these constants must match those in poison.2da
int POISON_NIGHTSHADE = 0;
int POISON_SMALL_CENTIPEDE_POISON = 1;
int POISON_BLADE_BANE = 2;
int POISON_GREENBLOOD_OIL = 3;
int POISON_BLOODROOT = 4;
int POISON_PURPLE_WORM_POISON = 5;
int POISON_LARGE_SCORPION_VENOM = 6;
int POISON_WYVERN_POISON = 7;
int POISON_BLUE_WHINNIS = 8;
int POISON_GIANT_WASP_POISON = 9;
int POISON_SHADOW_ESSENCE = 10;
int POISON_BLACK_ADDER_VENOM = 11;
int POISON_DEATHBLADE = 12;
int POISON_MALYSS_ROOT_PASTE = 13;
int POISON_NITHARIT = 14;
int POISON_DRAGON_BILE = 15;
int POISON_SASSONE_LEAF_RESIDUE = 16;
int POISON_TERINAV_ROOT = 17;
int POISON_CARRION_CRAWLER_BRAIN_JUICE = 18;
int POISON_BLACK_LOTUS_EXTRACT = 19;
int POISON_OIL_OF_TAGGIT = 20;
int POISON_ID_MOSS = 21;
int POISON_STRIPED_TOADSTOOL = 22;
int POISON_ARSENIC = 23;
int POISON_LICH_DUST = 24;
int POISON_DARK_REAVER_POWDER = 25;
int POISON_UNGOL_DUST = 26;
int POISON_BURNT_OTHUR_FUMES = 27;
int POISON_CHAOS_MIST = 28;
int POISON_BEBILITH_VENOM = 29;
int POISON_QUASIT_VENOM = 30;
int POISON_PIT_FIEND_ICHOR = 31;
int POISON_ETTERCAP_VENOM = 32;
int POISON_ARANEA_VENOM = 33;
int POISON_TINY_SPIDER_VENOM = 34;
int POISON_SMALL_SPIDER_VENOM = 35;
int POISON_MEDIUM_SPIDER_VENOM = 36;
int POISON_LARGE_SPIDER_VENOM = 37;
int POISON_HUGE_SPIDER_VENOM = 38;
int POISON_GARGANTUAN_SPIDER_VENOM = 39;
int POISON_COLOSSAL_SPIDER_VENOM = 40;
int POISON_PHASE_SPIDER_VENOM = 41;
int POISON_WRAITH_SPIDER_VENOM = 42;
int POISON_IRON_GOLEM = 43;
// these constants match those in disease.2da
int DISEASE_BLINDING_SICKNESS = 0;
int DISEASE_CACKLE_FEVER = 1;
int DISEASE_DEVIL_CHILLS = 2;
int DISEASE_DEMON_FEVER = 3;
int DISEASE_FILTH_FEVER = 4;
int DISEASE_MINDFIRE = 5;
int DISEASE_MUMMY_ROT = 6;
int DISEASE_RED_ACHE = 7;
int DISEASE_SHAKES = 8;
int DISEASE_SLIMY_DOOM = 9;
int DISEASE_RED_SLAAD_EGGS = 10;
int DISEASE_GHOUL_ROT = 11;
int DISEASE_ZOMBIE_CREEP = 12;
int DISEASE_DREAD_BLISTERS = 13;
int DISEASE_BURROW_MAGGOTS = 14;
int DISEASE_SOLDIER_SHAKES = 15;
int DISEASE_VERMIN_MADNESS = 16;
// the thing after CREATURE_TYPE_ should refer to the
// actual "subtype" in the lists given above.
int CREATURE_TYPE_RACIAL_TYPE = 0;
int CREATURE_TYPE_PLAYER_CHAR = 1;
int CREATURE_TYPE_CLASS = 2;
int CREATURE_TYPE_REPUTATION = 3;
int CREATURE_TYPE_IS_ALIVE = 4;
int CREATURE_TYPE_HAS_SPELL_EFFECT = 5;
int CREATURE_TYPE_DOES_NOT_HAVE_SPELL_EFFECT = 6;
int CREATURE_TYPE_PERCEPTION = 7;
//int CREATURE_TYPE_ALIGNMENT = 2;
int REPUTATION_TYPE_FRIEND = 0;
int REPUTATION_TYPE_ENEMY = 1;
int REPUTATION_TYPE_NEUTRAL = 2;
int PERCEPTION_SEEN_AND_HEARD = 0;
int PERCEPTION_NOT_SEEN_AND_NOT_HEARD = 1;
int PERCEPTION_HEARD_AND_NOT_SEEN = 2;
int PERCEPTION_SEEN_AND_NOT_HEARD = 3;
int PERCEPTION_NOT_HEARD = 4;
int PERCEPTION_HEARD = 5;
int PERCEPTION_NOT_SEEN = 6;
int PERCEPTION_SEEN = 7;
int PLAYER_CHAR_NOT_PC = FALSE;
int PLAYER_CHAR_IS_PC = TRUE;
int CLASS_TYPE_BARBARIAN = 0;
int CLASS_TYPE_BARD = 1;
int CLASS_TYPE_CLERIC = 2;
int CLASS_TYPE_DRUID = 3;
int CLASS_TYPE_FIGHTER = 4;
int CLASS_TYPE_MONK = 5;
int CLASS_TYPE_PALADIN = 6;
int CLASS_TYPE_RANGER = 7;
int CLASS_TYPE_ROGUE = 8;
int CLASS_TYPE_SORCERER = 9;
int CLASS_TYPE_WIZARD = 10;
int CLASS_TYPE_ABERRATION = 11;
int CLASS_TYPE_ANIMAL = 12;
int CLASS_TYPE_CONSTRUCT = 13;
int CLASS_TYPE_HUMANOID = 14;
int CLASS_TYPE_MONSTROUS = 15;
int CLASS_TYPE_ELEMENTAL = 16;
int CLASS_TYPE_FEY = 17;
int CLASS_TYPE_DRAGON = 18;
int CLASS_TYPE_UNDEAD = 19;
int CLASS_TYPE_COMMONER = 20;
int CLASS_TYPE_BEAST = 21;
int CLASS_TYPE_GIANT = 22;
int CLASS_TYPE_MAGICAL_BEAST = 23;
int CLASS_TYPE_OUTSIDER = 24;
int CLASS_TYPE_SHAPECHANGER = 25;
int CLASS_TYPE_VERMIN = 26;
int CLASS_TYPE_INVALID = 255;
// These are for GetFirstInPersistentObject() and GetNextInPersistentObject()
int PERSISTENT_ZONE_ACTIVE = 0;
int PERSISTENT_ZONE_FOLLOW = 1;
int STANDARD_FACTION_HOSTILE = 0;
int STANDARD_FACTION_COMMONER = 1;
int STANDARD_FACTION_MERCHANT = 2;
int STANDARD_FACTION_DEFENDER = 3;
// Skill defines
int SKILL_ANIMAL_EMPATHY = 0;
int SKILL_CONCENTRATION = 1;
int SKILL_DISABLE_TRAP = 2;
int SKILL_DISCIPLINE = 3;
int SKILL_HEAL = 4;
int SKILL_HIDE = 5;
int SKILL_LISTEN = 6;
int SKILL_LORE = 7;
int SKILL_MOVE_SILENTLY = 8;
int SKILL_OPEN_LOCK = 9;
int SKILL_PARRY = 10;
int SKILL_PERFORM = 11;
int SKILL_PERSUADE = 12;
int SKILL_PICK_POCKET = 13;
int SKILL_SEARCH = 14;
int SKILL_SET_TRAP = 15;
int SKILL_SPELLCRAFT = 16;
int SKILL_SPOT = 17;
int SKILL_TAUNT = 18;
int SKILL_USE_MAGIC_DEVICE = 19;
int SKILL_ALL_SKILLS = 255;
int SUBSKILL_FLAGTRAP = 100;
int SUBSKILL_RECOVERTRAP = 101;
int SUBSKILL_EXAMINETRAP = 102;
int FEAT_ALERTNESS = 0;
int FEAT_AMBIDEXTERITY = 1;
int FEAT_ARMOR_PROFICIENCY_HEAVY = 2;
int FEAT_ARMOR_PROFICIENCY_LIGHT = 3;
int FEAT_ARMOR_PROFICIENCY_MEDIUM = 4;
int FEAT_CALLED_SHOT = 5;
int FEAT_CLEAVE = 6;
int FEAT_COMBAT_CASTING = 7;
int FEAT_DEFLECT_ARROWS = 8;
int FEAT_DISARM = 9;
int FEAT_DODGE = 10;
int FEAT_EMPOWER_SPELL = 11;
int FEAT_EXTEND_SPELL = 12;
int FEAT_EXTRA_TURNING = 13;
int FEAT_GREAT_FORTITUDE = 14;
int FEAT_IMPROVED_CRITICAL_CLUB = 15;
int FEAT_IMPROVED_DISARM = 16;
int FEAT_IMPROVED_KNOCKDOWN = 17;
int FEAT_IMPROVED_PARRY = 18;
int FEAT_IMPROVED_POWER_ATTACK = 19;
int FEAT_IMPROVED_TWO_WEAPON_FIGHTING = 20;
int FEAT_IMPROVED_UNARMED_STRIKE = 21;
int FEAT_IRON_WILL = 22;
int FEAT_KNOCKDOWN = 23;
int FEAT_LIGHTNING_REFLEXES = 24;
int FEAT_MAXIMIZE_SPELL = 25;
int FEAT_MOBILITY = 26;
int FEAT_POINT_BLANK_SHOT = 27;
int FEAT_POWER_ATTACK = 28;
int FEAT_QUICKEN_SPELL = 29;
int FEAT_RAPID_SHOT = 30;
int FEAT_SAP = 31;
int FEAT_SHIELD_PROFICIENCY = 32;
int FEAT_SILENCE_SPELL = 33;
int FEAT_SKILL_FOCUS_ANIMAL_EMPATHY = 34;
int FEAT_SPELL_FOCUS_ABJURATION = 35;
int FEAT_SPELL_PENETRATION = 36;
int FEAT_STILL_SPELL = 37;
int FEAT_STUNNING_FIST = 39;
int FEAT_TOUGHNESS = 40;
int FEAT_TWO_WEAPON_FIGHTING = 41;
int FEAT_WEAPON_FINESSE = 42;
int FEAT_WEAPON_FOCUS_CLUB = 43;
int FEAT_WEAPON_PROFICIENCY_EXOTIC = 44;
int FEAT_WEAPON_PROFICIENCY_MARTIAL = 45;
int FEAT_WEAPON_PROFICIENCY_SIMPLE = 46;
int FEAT_WEAPON_SPECIALIZATION_CLUB = 47;
int FEAT_WEAPON_PROFICIENCY_DRUID = 48;
int FEAT_WEAPON_PROFICIENCY_MONK = 49;
int FEAT_WEAPON_PROFICIENCY_ROGUE = 50;
int FEAT_WEAPON_PROFICIENCY_WIZARD = 51;
int FEAT_IMPROVED_CRITICAL_DAGGER = 52;
int FEAT_IMPROVED_CRITICAL_DART = 53;
int FEAT_IMPROVED_CRITICAL_HEAVY_CROSSBOW = 54;
int FEAT_IMPROVED_CRITICAL_LIGHT_CROSSBOW = 55;
int FEAT_IMPROVED_CRITICAL_LIGHT_MACE = 56;
int FEAT_IMPROVED_CRITICAL_MORNING_STAR = 57;
int FEAT_IMPROVED_CRITICAL_STAFF = 58;
int FEAT_IMPROVED_CRITICAL_SPEAR = 59;
int FEAT_IMPROVED_CRITICAL_SICKLE = 60;
int FEAT_IMPROVED_CRITICAL_SLING = 61;
int FEAT_IMPROVED_CRITICAL_UNARMED_STRIKE = 62;
int FEAT_IMPROVED_CRITICAL_LONGBOW = 63;
int FEAT_IMPROVED_CRITICAL_SHORTBOW = 64;
int FEAT_IMPROVED_CRITICAL_SHORT_SWORD = 65;
int FEAT_IMPROVED_CRITICAL_RAPIER = 66;
int FEAT_IMPROVED_CRITICAL_SCIMITAR = 67;
int FEAT_IMPROVED_CRITICAL_LONG_SWORD = 68;
int FEAT_IMPROVED_CRITICAL_GREAT_SWORD = 69;
int FEAT_IMPROVED_CRITICAL_HAND_AXE = 70;
int FEAT_IMPROVED_CRITICAL_THROWING_AXE = 71;
int FEAT_IMPROVED_CRITICAL_BATTLE_AXE = 72;
int FEAT_IMPROVED_CRITICAL_GREAT_AXE = 73;
int FEAT_IMPROVED_CRITICAL_HALBERD = 74;
int FEAT_IMPROVED_CRITICAL_LIGHT_HAMMER = 75;
int FEAT_IMPROVED_CRITICAL_LIGHT_FLAIL = 76;
int FEAT_IMPROVED_CRITICAL_WAR_HAMMER = 77;
int FEAT_IMPROVED_CRITICAL_HEAVY_FLAIL = 78;
int FEAT_IMPROVED_CRITICAL_KAMA = 79;
int FEAT_IMPROVED_CRITICAL_KUKRI = 80;
//int FEAT_IMPROVED_CRITICAL_NUNCHAKU = 81;
int FEAT_IMPROVED_CRITICAL_SHURIKEN = 82;
int FEAT_IMPROVED_CRITICAL_SCYTHE = 83;
int FEAT_IMPROVED_CRITICAL_KATANA = 84;
int FEAT_IMPROVED_CRITICAL_BASTARD_SWORD = 85;
int FEAT_IMPROVED_CRITICAL_DIRE_MACE = 87;
int FEAT_IMPROVED_CRITICAL_DOUBLE_AXE = 88;
int FEAT_IMPROVED_CRITICAL_TWO_BLADED_SWORD = 89;
int FEAT_WEAPON_FOCUS_DAGGER = 90;
int FEAT_WEAPON_FOCUS_DART = 91;
int FEAT_WEAPON_FOCUS_HEAVY_CROSSBOW = 92;
int FEAT_WEAPON_FOCUS_LIGHT_CROSSBOW = 93;
int FEAT_WEAPON_FOCUS_LIGHT_MACE = 94;
int FEAT_WEAPON_FOCUS_MORNING_STAR = 95;
int FEAT_WEAPON_FOCUS_STAFF = 96;
int FEAT_WEAPON_FOCUS_SPEAR = 97;
int FEAT_WEAPON_FOCUS_SICKLE = 98;
int FEAT_WEAPON_FOCUS_SLING = 99;
int FEAT_WEAPON_FOCUS_UNARMED_STRIKE = 100;
int FEAT_WEAPON_FOCUS_LONGBOW = 101;
int FEAT_WEAPON_FOCUS_SHORTBOW = 102;
int FEAT_WEAPON_FOCUS_SHORT_SWORD = 103;
int FEAT_WEAPON_FOCUS_RAPIER = 104;
int FEAT_WEAPON_FOCUS_SCIMITAR = 105;
int FEAT_WEAPON_FOCUS_LONG_SWORD = 106;
int FEAT_WEAPON_FOCUS_GREAT_SWORD = 107;
int FEAT_WEAPON_FOCUS_HAND_AXE = 108;
int FEAT_WEAPON_FOCUS_THROWING_AXE = 109;
int FEAT_WEAPON_FOCUS_BATTLE_AXE = 110;
int FEAT_WEAPON_FOCUS_GREAT_AXE = 111;
int FEAT_WEAPON_FOCUS_HALBERD = 112;
int FEAT_WEAPON_FOCUS_LIGHT_HAMMER = 113;
int FEAT_WEAPON_FOCUS_LIGHT_FLAIL = 114;
int FEAT_WEAPON_FOCUS_WAR_HAMMER = 115;
int FEAT_WEAPON_FOCUS_HEAVY_FLAIL = 116;
int FEAT_WEAPON_FOCUS_KAMA = 117;
int FEAT_WEAPON_FOCUS_KUKRI = 118;
//int FEAT_WEAPON_FOCUS_NUNCHAKU = 119;
int FEAT_WEAPON_FOCUS_SHURIKEN = 120;
int FEAT_WEAPON_FOCUS_SCYTHE = 121;
int FEAT_WEAPON_FOCUS_KATANA = 122;
int FEAT_WEAPON_FOCUS_BASTARD_SWORD = 123;
int FEAT_WEAPON_FOCUS_DIRE_MACE = 125;
int FEAT_WEAPON_FOCUS_DOUBLE_AXE = 126;
int FEAT_WEAPON_FOCUS_TWO_BLADED_SWORD = 127;
int FEAT_WEAPON_SPECIALIZATION_DAGGER = 128;
int FEAT_WEAPON_SPECIALIZATION_DART = 129;
int FEAT_WEAPON_SPECIALIZATION_HEAVY_CROSSBOW = 130;
int FEAT_WEAPON_SPECIALIZATION_LIGHT_CROSSBOW = 131;
int FEAT_WEAPON_SPECIALIZATION_LIGHT_MACE = 132;
int FEAT_WEAPON_SPECIALIZATION_MORNING_STAR = 133;
int FEAT_WEAPON_SPECIALIZATION_STAFF = 134;
int FEAT_WEAPON_SPECIALIZATION_SPEAR = 135;
int FEAT_WEAPON_SPECIALIZATION_SICKLE = 136;
int FEAT_WEAPON_SPECIALIZATION_SLING = 137;
int FEAT_WEAPON_SPECIALIZATION_UNARMED_STRIKE = 138;
int FEAT_WEAPON_SPECIALIZATION_LONGBOW = 139;
int FEAT_WEAPON_SPECIALIZATION_SHORTBOW = 140;
int FEAT_WEAPON_SPECIALIZATION_SHORT_SWORD = 141;
int FEAT_WEAPON_SPECIALIZATION_RAPIER = 142;
int FEAT_WEAPON_SPECIALIZATION_SCIMITAR = 143;
int FEAT_WEAPON_SPECIALIZATION_LONG_SWORD = 144;
int FEAT_WEAPON_SPECIALIZATION_GREAT_SWORD = 145;
int FEAT_WEAPON_SPECIALIZATION_HAND_AXE = 146;
int FEAT_WEAPON_SPECIALIZATION_THROWING_AXE = 147;
int FEAT_WEAPON_SPECIALIZATION_BATTLE_AXE = 148;
int FEAT_WEAPON_SPECIALIZATION_GREAT_AXE = 149;
int FEAT_WEAPON_SPECIALIZATION_HALBERD = 150;
int FEAT_WEAPON_SPECIALIZATION_LIGHT_HAMMER = 151;
int FEAT_WEAPON_SPECIALIZATION_LIGHT_FLAIL = 152;
int FEAT_WEAPON_SPECIALIZATION_WAR_HAMMER = 153;
int FEAT_WEAPON_SPECIALIZATION_HEAVY_FLAIL = 154;
int FEAT_WEAPON_SPECIALIZATION_KAMA = 155;
int FEAT_WEAPON_SPECIALIZATION_KUKRI = 156;
//int FEAT_WEAPON_SPECIALIZATION_NUNCHAKU = 157;
int FEAT_WEAPON_SPECIALIZATION_SHURIKEN = 158;
int FEAT_WEAPON_SPECIALIZATION_SCYTHE = 159;
int FEAT_WEAPON_SPECIALIZATION_KATANA = 160;
int FEAT_WEAPON_SPECIALIZATION_BASTARD_SWORD = 161;
int FEAT_WEAPON_SPECIALIZATION_DIRE_MACE = 163;
int FEAT_WEAPON_SPECIALIZATION_DOUBLE_AXE = 164;
int FEAT_WEAPON_SPECIALIZATION_TWO_BLADED_SWORD = 165;
int FEAT_SPELL_FOCUS_CONJURATION = 166;
int FEAT_SPELL_FOCUS_DIVINATION = 167;
int FEAT_SPELL_FOCUS_ENCHANTMENT = 168;
int FEAT_SPELL_FOCUS_EVOCATION = 169;
int FEAT_SPELL_FOCUS_ILLUSION = 170;
int FEAT_SPELL_FOCUS_NECROMANCY = 171;
int FEAT_SPELL_FOCUS_TRANSMUTATION = 172;
int FEAT_SKILL_FOCUS_CONCENTRATION = 173;
int FEAT_SKILL_FOCUS_DISABLE_TRAP = 174;
int FEAT_SKILL_FOCUS_DISCIPLINE = 175;
int FEAT_SKILL_FOCUS_HEAL = 177;
int FEAT_SKILL_FOCUS_HIDE = 178;
int FEAT_SKILL_FOCUS_LISTEN = 179;
int FEAT_SKILL_FOCUS_LORE = 180;
int FEAT_SKILL_FOCUS_MOVE_SILENTLY = 181;
int FEAT_SKILL_FOCUS_OPEN_LOCK = 182;
int FEAT_SKILL_FOCUS_PARRY = 183;
int FEAT_SKILL_FOCUS_PERFORM = 184;
int FEAT_SKILL_FOCUS_PERSUADE = 185;
int FEAT_SKILL_FOCUS_PICK_POCKET = 186;
int FEAT_SKILL_FOCUS_SEARCH = 187;
int FEAT_SKILL_FOCUS_SET_TRAP = 188;
int FEAT_SKILL_FOCUS_SPELLCRAFT = 189;
int FEAT_SKILL_FOCUS_SPOT = 190;
int FEAT_SKILL_FOCUS_TAUNT = 192;
int FEAT_SKILL_FOCUS_USE_MAGIC_DEVICE = 193;
int FEAT_BARBARIAN_ENDURANCE = 194;
int FEAT_UNCANNY_DODGE_1 = 195;
int FEAT_DAMAGE_REDUCTION = 196;
int FEAT_BARDIC_KNOWLEDGE = 197;
int FEAT_NATURE_SENSE = 198;
int FEAT_ANIMAL_COMPANION = 199;
int FEAT_WOODLAND_STRIDE = 200;
int FEAT_TRACKLESS_STEP = 201;
int FEAT_RESIST_NATURES_LURE = 202;
int FEAT_VENOM_IMMUNITY = 203;
int FEAT_FLURRY_OF_BLOWS = 204;
int FEAT_EVASION = 206;
int FEAT_MONK_ENDURANCE = 207;
int FEAT_STILL_MIND = 208;
int FEAT_PURITY_OF_BODY = 209;
int FEAT_WHOLENESS_OF_BODY = 211;
int FEAT_IMPROVED_EVASION = 212;
int FEAT_KI_STRIKE = 213;
int FEAT_DIAMOND_BODY = 214;
int FEAT_DIAMOND_SOUL = 215;
int FEAT_PERFECT_SELF = 216;
int FEAT_DIVINE_GRACE = 217;
int FEAT_DIVINE_HEALTH = 219;
int FEAT_SNEAK_ATTACK = 221;
int FEAT_CRIPPLING_STRIKE = 222;
int FEAT_DEFENSIVE_ROLL = 223;
int FEAT_OPPORTUNIST = 224;
int FEAT_SKILL_MASTERY = 225;
int FEAT_UNCANNY_REFLEX = 226;
int FEAT_STONECUNNING = 227;
int FEAT_DARKVISION = 228;
int FEAT_HARDINESS_VERSUS_POISONS = 229;
int FEAT_HARDINESS_VERSUS_SPELLS = 230;
int FEAT_BATTLE_TRAINING_VERSUS_ORCS = 231;
int FEAT_BATTLE_TRAINING_VERSUS_GOBLINS = 232;
int FEAT_BATTLE_TRAINING_VERSUS_GIANTS = 233;
int FEAT_SKILL_AFFINITY_LORE = 234;
int FEAT_IMMUNITY_TO_SLEEP = 235;
int FEAT_HARDINESS_VERSUS_ENCHANTMENTS = 236;
int FEAT_SKILL_AFFINITY_LISTEN = 237;
int FEAT_SKILL_AFFINITY_SEARCH = 238;
int FEAT_SKILL_AFFINITY_SPOT = 239;
int FEAT_KEEN_SENSE = 240;
int FEAT_HARDINESS_VERSUS_ILLUSIONS = 241;
int FEAT_BATTLE_TRAINING_VERSUS_REPTILIANS = 242;
int FEAT_SKILL_AFFINITY_CONCENTRATION = 243;
int FEAT_PARTIAL_SKILL_AFFINITY_LISTEN = 244;
int FEAT_PARTIAL_SKILL_AFFINITY_SEARCH = 245;
int FEAT_PARTIAL_SKILL_AFFINITY_SPOT = 246;
int FEAT_SKILL_AFFINITY_MOVE_SILENTLY = 247;
int FEAT_LUCKY = 248;
int FEAT_FEARLESS = 249;
int FEAT_GOOD_AIM = 250;
int FEAT_UNCANNY_DODGE_2 = 251;
int FEAT_UNCANNY_DODGE_3 = 252;
int FEAT_UNCANNY_DODGE_4 = 253;
int FEAT_UNCANNY_DODGE_5 = 254;
int FEAT_UNCANNY_DODGE_6 = 255;
int FEAT_WEAPON_PROFICIENCY_ELF = 256;
int FEAT_BARD_SONGS = 257;
int FEAT_QUICK_TO_MASTER = 258;
int FEAT_SLIPPERY_MIND = 259;
int FEAT_MONK_AC_BONUS = 260;
int FEAT_FAVORED_ENEMY_DWARF = 261;
int FEAT_FAVORED_ENEMY_ELF = 262;
int FEAT_FAVORED_ENEMY_GNOME = 263;
int FEAT_FAVORED_ENEMY_HALFLING = 264;
int FEAT_FAVORED_ENEMY_HALFELF = 265;
int FEAT_FAVORED_ENEMY_HALFORC = 266;
int FEAT_FAVORED_ENEMY_HUMAN = 267;
int FEAT_FAVORED_ENEMY_ABERRATION = 268;
int FEAT_FAVORED_ENEMY_ANIMAL = 269;
int FEAT_FAVORED_ENEMY_BEAST = 270;
int FEAT_FAVORED_ENEMY_CONSTRUCT = 271;
int FEAT_FAVORED_ENEMY_DRAGON = 272;
int FEAT_FAVORED_ENEMY_GOBLINOID = 273;
int FEAT_FAVORED_ENEMY_MONSTROUS = 274;
int FEAT_FAVORED_ENEMY_ORC = 275;
int FEAT_FAVORED_ENEMY_REPTILIAN = 276;
int FEAT_FAVORED_ENEMY_ELEMENTAL = 277;
int FEAT_FAVORED_ENEMY_FEY = 278;
int FEAT_FAVORED_ENEMY_GIANT = 279;
int FEAT_FAVORED_ENEMY_MAGICAL_BEAST = 280;
int FEAT_FAVORED_ENEMY_OUTSIDER = 281;
int FEAT_FAVORED_ENEMY_SHAPECHANGER = 284;
int FEAT_FAVORED_ENEMY_UNDEAD = 285;
int FEAT_FAVORED_ENEMY_VERMIN = 286;
int FEAT_WEAPON_PROFICIENCY_CREATURE = 289;
int FEAT_WEAPON_SPECIALIZATION_CREATURE = 290;
int FEAT_WEAPON_FOCUS_CREATURE = 291;
int FEAT_IMPROVED_CRITICAL_CREATURE = 292;
int FEAT_BARBARIAN_RAGE = 293;
int FEAT_TURN_UNDEAD = 294;
int FEAT_QUIVERING_PALM = 296;
int FEAT_EMPTY_BODY = 297;
//int FEAT_DETECT_EVIL = 298;
int FEAT_LAY_ON_HANDS = 299;
int FEAT_AURA_OF_COURAGE = 300;
int FEAT_SMITE_EVIL = 301;
int FEAT_REMOVE_DISEASE = 302;
int FEAT_SUMMON_FAMILIAR = 303;
int FEAT_ELEMENTAL_SHAPE = 304;
int FEAT_WILD_SHAPE = 305;
int FEAT_WAR_DOMAIN_POWER = 306;
int FEAT_STRENGTH_DOMAIN_POWER = 307;
int FEAT_PROTECTION_DOMAIN_POWER = 308;
int FEAT_LUCK_DOMAIN_POWER = 309;
int FEAT_DEATH_DOMAIN_POWER = 310;
int FEAT_AIR_DOMAIN_POWER = 311;
int FEAT_ANIMAL_DOMAIN_POWER = 312;
int FEAT_DESTRUCTION_DOMAIN_POWER = 313;
int FEAT_EARTH_DOMAIN_POWER = 314;
int FEAT_EVIL_DOMAIN_POWER = 315;
int FEAT_FIRE_DOMAIN_POWER = 316;
int FEAT_GOOD_DOMAIN_POWER = 317;
int FEAT_HEALING_DOMAIN_POWER = 318;
int FEAT_KNOWLEDGE_DOMAIN_POWER = 319;
int FEAT_MAGIC_DOMAIN_POWER = 320;
int FEAT_PLANT_DOMAIN_POWER = 321;
int FEAT_SUN_DOMAIN_POWER = 322;
int FEAT_TRAVEL_DOMAIN_POWER = 323;
int FEAT_TRICKERY_DOMAIN_POWER = 324;
int FEAT_WATER_DOMAIN_POWER = 325;
int FEAT_LOWLIGHTVISION = 354;
int FEAT_SKILL_FOCUS_PERSUADE_R = 376;
int FEAT_SKILL_FOCUS_HIDE_R = 377;
// Special Attack Defines
int SPECIAL_ATTACK_INVALID = 0;
int SPECIAL_ATTACK_CALLED_SHOT_LEG = 1;
int SPECIAL_ATTACK_CALLED_SHOT_ARM = 2;
int SPECIAL_ATTACK_SAP = 3;
int SPECIAL_ATTACK_DISARM = 4;
int SPECIAL_ATTACK_IMPROVED_DISARM = 5;
int SPECIAL_ATTACK_KNOCKDOWN = 6;
int SPECIAL_ATTACK_IMPROVED_KNOCKDOWN = 7;
int SPECIAL_ATTACK_STUNNING_FIST = 8;
int SPECIAL_ATTACK_FLURRY_OF_BLOWS = 9;
int SPECIAL_ATTACK_RAPID_SHOT = 10;
// Combat Mode Defines
int COMBAT_MODE_INVALID = 0;
int COMBAT_MODE_PARRY = 1;
int COMBAT_MODE_POWER_ATTACK = 2;
int COMBAT_MODE_IMPROVED_POWER_ATTACK = 3;
int COMBAT_MODE_FLURRY_OF_BLOWS = 4;
int COMBAT_MODE_RAPID_SHOT = 5;
// These represent the row in the difficulty 2da, rather than
// a difficulty value.
int ENCOUNTER_DIFFICULTY_VERY_EASY = 0;
int ENCOUNTER_DIFFICULTY_EASY = 1;
int ENCOUNTER_DIFFICULTY_NORMAL = 2;
int ENCOUNTER_DIFFICULTY_HARD = 3;
int ENCOUNTER_DIFFICULTY_IMPOSSIBLE = 4;
// Looping animation constants.
int ANIMATION_LOOPING_PAUSE = 0;
int ANIMATION_LOOPING_PAUSE2 = 1;
int ANIMATION_LOOPING_LISTEN = 2;
int ANIMATION_LOOPING_MEDITATE = 3;
int ANIMATION_LOOPING_WORSHIP = 4;
int ANIMATION_LOOPING_LOOK_FAR = 5;
int ANIMATION_LOOPING_SIT_CHAIR = 6;
int ANIMATION_LOOPING_SIT_CROSS = 7;
int ANIMATION_LOOPING_TALK_NORMAL = 8;
int ANIMATION_LOOPING_TALK_PLEADING = 9;
int ANIMATION_LOOPING_TALK_FORCEFUL = 10;
int ANIMATION_LOOPING_TALK_LAUGHING = 11;
int ANIMATION_LOOPING_GET_LOW = 12;
int ANIMATION_LOOPING_GET_MID = 13;
int ANIMATION_LOOPING_PAUSE_TIRED = 14;
int ANIMATION_LOOPING_PAUSE_DRUNK = 15;
int ANIMATION_LOOPING_DEAD_FRONT = 16;
// Fire and forget animation constants.
int ANIMATION_FIREFORGET_HEAD_TURN_LEFT = 100;
int ANIMATION_FIREFORGET_HEAD_TURN_RIGHT = 101;
int ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD = 102;
int ANIMATION_FIREFORGET_PAUSE_BORED = 103;
int ANIMATION_FIREFORGET_SALUTE = 104;
int ANIMATION_FIREFORGET_BOW = 105;
int ANIMATION_FIREFORGET_STEAL = 106;
int ANIMATION_FIREFORGET_GREETING = 107;
int ANIMATION_FIREFORGET_TAUNT = 108;
int ANIMATION_FIREFORGET_VICTORY1 = 109;
int ANIMATION_FIREFORGET_VICTORY2 = 110;
int ANIMATION_FIREFORGET_VICTORY3 = 111;
int ANIMATION_FIREFORGET_READ = 112;
int ANIMATION_FIREFORGET_DRINK = 113;
// Placeable animation constants
int ANIMATION_PLACEABLE_ACTIVATE = 200;
int ANIMATION_PLACEABLE_DEACTIVATE = 201;
int ANIMATION_PLACEABLE_OPEN = 202;
int ANIMATION_PLACEABLE_CLOSE = 203;
int TALENT_TYPE_SPELL = 0;
int TALENT_TYPE_FEAT = 1;
int TALENT_TYPE_SKILL = 2;
// These must match the values in nwscreature.h and nwccreaturemenu.cpp
// Cannot use the value -1 because that is used to start a conversation
int ASSOCIATE_COMMAND_STANDGROUND = -2;
int ASSOCIATE_COMMAND_ATTACKNEAREST = -3;
int ASSOCIATE_COMMAND_HEALMASTER = -4;
int ASSOCIATE_COMMAND_FOLLOWMASTER = -5;
int ASSOCIATE_COMMAND_MASTERFAILEDLOCKPICK = -6;
int ASSOCIATE_COMMAND_GUARDMASTER = -7;
int ASSOCIATE_COMMAND_UNSUMMONFAMILIAR = -8;
int ASSOCIATE_COMMAND_UNSUMMONANIMALCOMPANION = -9;
int ASSOCIATE_COMMAND_UNSUMMONSUMMONED = -10;
int ASSOCIATE_COMMAND_MASTERUNDERATTACK = -11;
int ASSOCIATE_COMMAND_RELEASEDOMINATION = -12;
int ASSOCIATE_COMMAND_UNPOSSESSFAMILIAR = -13;
int ASSOCIATE_COMMAND_MASTERSAWTRAP = -14;
int ASSOCIATE_COMMAND_MASTERATTACKEDOTHER = -15;
int ASSOCIATE_COMMAND_MASTERGOINGTOBEATTACKED = -16;
int ASSOCIATE_COMMAND_LEAVEPARTY = -17;
// These match the values in nwscreature.h
int ASSOCIATE_TYPE_HENCHMAN = 1;
int ASSOCIATE_TYPE_ANIMALCOMPANION = 2;
int ASSOCIATE_TYPE_FAMILIAR = 3;
int ASSOCIATE_TYPE_SUMMONED = 4;
int ASSOCIATE_TYPE_DOMINATED = 5;
// These must match the list in nwscreaturestats.cpp
int TALENT_CATEGORY_HARMFUL_AREAEFFECT_DISCRIMINANT = 1;
int TALENT_CATEGORY_HARMFUL_RANGED = 2;
int TALENT_CATEGORY_HARMFUL_TOUCH = 3;
int TALENT_CATEGORY_BENEFICIAL_HEALING_AREAEFFECT = 4;
int TALENT_CATEGORY_BENEFICIAL_HEALING_TOUCH = 5;
int TALENT_CATEGORY_BENEFICIAL_CONDITIONAL_AREAEFFECT = 6;
int TALENT_CATEGORY_BENEFICIAL_CONDITIONAL_SINGLE = 7;
int TALENT_CATEGORY_BENEFICIAL_ENHANCEMENT_AREAEFFECT = 8;
int TALENT_CATEGORY_BENEFICIAL_ENHANCEMENT_SINGLE = 9;
int TALENT_CATEGORY_BENEFICIAL_ENHANCEMENT_SELF = 10;
int TALENT_CATEGORY_HARMFUL_AREAEFFECT_INDISCRIMINANT = 11;
int TALENT_CATEGORY_BENEFICIAL_PROTECTION_SELF = 12;
int TALENT_CATEGORY_BENEFICIAL_PROTECTION_SINGLE = 13;
int TALENT_CATEGORY_BENEFICIAL_PROTECTION_AREAEFFECT = 14;
int TALENT_CATEGORY_BENEFICIAL_OBTAIN_ALLIES = 15;
int TALENT_CATEGORY_PERSISTENT_AREA_OF_EFFECT = 16;
int TALENT_CATEGORY_BENEFICIAL_HEALING_POTION = 17;
int TALENT_CATEGORY_BENEFICIAL_CONDITIONAL_POTION = 18;
int TALENT_CATEGORY_DRAGONS_BREATH = 19;
int TALENT_CATEGORY_BENEFICIAL_PROTECTION_POTION = 20;
int TALENT_CATEGORY_BENEFICIAL_ENHANCEMENT_POTION = 21;
int TALENT_CATEGORY_HARMFUL_MELEE = 22;
int INVENTORY_DISTURB_TYPE_ADDED = 0;
int INVENTORY_DISTURB_TYPE_REMOVED = 1;
int INVENTORY_DISTURB_TYPE_STOLEN = 2;
int GUI_PANEL_PLAYER_DEATH = 0;
int VOICE_CHAT_ATTACK = 0;
int VOICE_CHAT_BATTLECRY1 = 1;
int VOICE_CHAT_BATTLECRY2 = 2;
int VOICE_CHAT_BATTLECRY3 = 3;
int VOICE_CHAT_HEALME = 4;
int VOICE_CHAT_HELP = 5;
int VOICE_CHAT_ENEMIES = 6;
int VOICE_CHAT_FLEE = 7;
int VOICE_CHAT_TAUNT = 8;
int VOICE_CHAT_GUARDME = 9;
int VOICE_CHAT_HOLD = 10;
int VOICE_CHAT_GATTACK1 = 11;
int VOICE_CHAT_GATTACK2 = 12;
int VOICE_CHAT_GATTACK3 = 13;
int VOICE_CHAT_PAIN1 = 14;
int VOICE_CHAT_PAIN2 = 15;
int VOICE_CHAT_PAIN3 = 16;
int VOICE_CHAT_NEARDEATH = 17;
int VOICE_CHAT_DEATH = 18;
int VOICE_CHAT_POISONED = 19;
int VOICE_CHAT_SPELLFAILED = 20;
int VOICE_CHAT_WEAPONSUCKS = 21;
int VOICE_CHAT_FOLLOWME = 22;
int VOICE_CHAT_LOOKHERE = 23;
int VOICE_CHAT_GROUP = 24;
int VOICE_CHAT_MOVEOVER = 25;
int VOICE_CHAT_PICKLOCK = 26;
int VOICE_CHAT_SEARCH = 27;
int VOICE_CHAT_HIDE = 28;
int VOICE_CHAT_CANDO = 29;
int VOICE_CHAT_CANTDO = 30;
int VOICE_CHAT_TASKCOMPLETE = 31;
int VOICE_CHAT_ENCUMBERED = 32;
int VOICE_CHAT_SELECTED = 33;
int VOICE_CHAT_HELLO = 34;
int VOICE_CHAT_YES = 35;
int VOICE_CHAT_NO = 36;
int VOICE_CHAT_STOP = 37;
int VOICE_CHAT_REST = 38;
int VOICE_CHAT_BORED = 39;
int VOICE_CHAT_GOODBYE = 40;
int VOICE_CHAT_THANKS = 41;
int VOICE_CHAT_LAUGH = 42;
int VOICE_CHAT_CUSS = 43;
int VOICE_CHAT_CHEER = 44;
int VOICE_CHAT_TALKTOME = 45;
int VOICE_CHAT_GOODIDEA = 46;
int VOICE_CHAT_BADIDEA = 47;
int VOICE_CHAT_THREATEN = 48;
int POLYMORPH_TYPE_WEREWOLF = 0;
int POLYMORPH_TYPE_WERERAT = 1;
int POLYMORPH_TYPE_WERECAT = 2;
int POLYMORPH_TYPE_GIANT_SPIDER = 3;
int POLYMORPH_TYPE_TROLL = 4;
int POLYMORPH_TYPE_UMBER_HULK = 5;
int POLYMORPH_TYPE_PIXIE = 6;
int POLYMORPH_TYPE_ZOMBIE = 7;
int POLYMORPH_TYPE_RED_DRAGON = 8;
int POLYMORPH_TYPE_FIRE_GIANT = 9;
int POLYMORPH_TYPE_BALOR = 10;
int POLYMORPH_TYPE_DEATH_SLAAD = 11;
int POLYMORPH_TYPE_IRON_GOLEM = 12;
int POLYMORPH_TYPE_HUGE_FIRE_ELEMENTAL = 13;
int POLYMORPH_TYPE_HUGE_WATER_ELEMENTAL = 14;
int POLYMORPH_TYPE_HUGE_EARTH_ELEMENTAL = 15;
int POLYMORPH_TYPE_HUGE_AIR_ELEMENTAL = 16;
int POLYMORPH_TYPE_ELDER_FIRE_ELEMENTAL = 17;
int POLYMORPH_TYPE_ELDER_WATER_ELEMENTAL = 18;
int POLYMORPH_TYPE_ELDER_EARTH_ELEMENTAL = 19;
int POLYMORPH_TYPE_ELDER_AIR_ELEMENTAL = 20;
int POLYMORPH_TYPE_BROWN_BEAR = 21;
int POLYMORPH_TYPE_PANTHER = 22;
int POLYMORPH_TYPE_WOLF = 23;
int POLYMORPH_TYPE_BOAR = 24;
int POLYMORPH_TYPE_BADGER = 25;
int POLYMORPH_TYPE_PENGUIN = 26;
int POLYMORPH_TYPE_COW = 27;
int POLYMORPH_TYPE_DOOM_KNIGHT = 28;
int POLYMORPH_TYPE_YUANTI = 29;
int POLYMORPH_TYPE_IMP = 30;
int POLYMORPH_TYPE_QUASIT = 31;
int POLYMORPH_TYPE_SUCCUBUS = 32;
int POLYMORPH_TYPE_DIRE_BROWN_BEAR = 33;
int POLYMORPH_TYPE_DIRE_PANTHER = 34;
int POLYMORPH_TYPE_DIRE_WOLF = 35;
int POLYMORPH_TYPE_DIRE_BOAR = 36;
int POLYMORPH_TYPE_DIRE_BADGER = 37;
int INVISIBILITY_TYPE_NORMAL = 1;
int INVISIBILITY_TYPE_DARKNESS = 2;
int INVISIBILITY_TYPE_IMPROVED = 4;
int CREATURE_SIZE_INVALID = 0;
int CREATURE_SIZE_TINY = 1;
int CREATURE_SIZE_SMALL = 2;
int CREATURE_SIZE_MEDIUM = 3;
int CREATURE_SIZE_LARGE = 4;
int CREATURE_SIZE_HUGE = 5;
int SPELL_SCHOOL_GENERAL = 0;
int SPELL_SCHOOL_ABJURATION = 1;
int SPELL_SCHOOL_CONJURATION = 2;
int SPELL_SCHOOL_DIVINATION = 3;
int SPELL_SCHOOL_ENCHANTMENT = 4;
int SPELL_SCHOOL_EVOCATION = 5;
int SPELL_SCHOOL_ILLUSION = 6;
int SPELL_SCHOOL_NECROMANCY = 7;
int SPELL_SCHOOL_TRANSMUTATION = 8;
int ANIMAL_COMPANION_CREATURE_TYPE_BADGER = 0;
int ANIMAL_COMPANION_CREATURE_TYPE_WOLF = 1;
int ANIMAL_COMPANION_CREATURE_TYPE_BEAR = 2;
int ANIMAL_COMPANION_CREATURE_TYPE_BOAR = 3;
int ANIMAL_COMPANION_CREATURE_TYPE_HAWK = 4;
int ANIMAL_COMPANION_CREATURE_TYPE_PANTHER = 5;
int ANIMAL_COMPANION_CREATURE_TYPE_SPIDER = 6;
int ANIMAL_COMPANION_CREATURE_TYPE_DIREWOLF = 7;
int ANIMAL_COMPANION_CREATURE_TYPE_NONE = 255;
int FAMILIAR_CREATURE_TYPE_BAT = 0;
int FAMILIAR_CREATURE_TYPE_CRAGCAT = 1;
int FAMILIAR_CREATURE_TYPE_HELLHOUND = 2;
int FAMILIAR_CREATURE_TYPE_IMP = 3;
int FAMILIAR_CREATURE_TYPE_FIREMEPHIT = 4;
int FAMILIAR_CREATURE_TYPE_ICEMEPHIT = 5;
int FAMILIAR_CREATURE_TYPE_PIXIE = 6;
int FAMILIAR_CREATURE_TYPE_RAVEN = 7;
int FAMILIAR_CREATURE_TYPE_NONE = 255;
int CAMERA_MODE_CHASE_CAMERA = 0;
int CAMERA_MODE_TOP_DOWN = 1;
int CAMERA_MODE_STIFF_CHASE_CAMERA = 2;
int CAMERA_TRANSITION_TYPE_SNAP = 0;
int CAMERA_TRANSITION_TYPE_CRAWL = 2;
int CAMERA_TRANSITION_TYPE_VERY_SLOW = 5;
int CAMERA_TRANSITION_TYPE_SLOW = 20;
int CAMERA_TRANSITION_TYPE_MEDIUM = 40;
int CAMERA_TRANSITION_TYPE_FAST = 70;
int CAMERA_TRANSITION_TYPE_VERY_FAST = 100;
int WEATHER_CLEAR = 0;
int WEATHER_RAIN = 1;
int WEATHER_SNOW = 2;
int WEATHER_USE_AREA_SETTINGS = -1;
int REST_EVENTTYPE_REST_INVALID = 0;
int REST_EVENTTYPE_REST_STARTED = 1;
int REST_EVENTTYPE_REST_FINISHED = 2;
int REST_EVENTTYPE_REST_CANCELLED = 3;
int PROJECTILE_PATH_TYPE_DEFAULT = 0;
int PROJECTILE_PATH_TYPE_HOMING = 1;
int PROJECTILE_PATH_TYPE_BALLISTIC = 2;
int PROJECTILE_PATH_TYPE_HIGH_BALLISTIC = 3;
int PROJECTILE_PATH_TYPE_ACCELERATING = 4;
int GAME_DIFFICULTY_VERY_EASY = 0;
int GAME_DIFFICULTY_EASY = 1;
int GAME_DIFFICULTY_NORMAL = 2;
int GAME_DIFFICULTY_CORE_RULES = 3;
int GAME_DIFFICULTY_DIFFICULT = 4;
int TILE_MAIN_LIGHT_COLOR_BLACK = 0;
int TILE_MAIN_LIGHT_COLOR_DIM_WHITE = 1;
int TILE_MAIN_LIGHT_COLOR_WHITE = 2;
int TILE_MAIN_LIGHT_COLOR_BRIGHT_WHITE = 3;
int TILE_MAIN_LIGHT_COLOR_PALE_DARK_YELLOW = 4;
int TILE_MAIN_LIGHT_COLOR_DARK_YELLOW = 5;
int TILE_MAIN_LIGHT_COLOR_PALE_YELLOW = 6;
int TILE_MAIN_LIGHT_COLOR_YELLOW = 7;
int TILE_MAIN_LIGHT_COLOR_PALE_DARK_GREEN = 8;
int TILE_MAIN_LIGHT_COLOR_DARK_GREEN = 9;
int TILE_MAIN_LIGHT_COLOR_PALE_GREEN = 10;
int TILE_MAIN_LIGHT_COLOR_GREEN = 11;
int TILE_MAIN_LIGHT_COLOR_PALE_DARK_AQUA = 12;
int TILE_MAIN_LIGHT_COLOR_DARK_AQUA = 13;
int TILE_MAIN_LIGHT_COLOR_PALE_AQUA = 14;
int TILE_MAIN_LIGHT_COLOR_AQUA = 15;
int TILE_MAIN_LIGHT_COLOR_PALE_DARK_BLUE = 16;
int TILE_MAIN_LIGHT_COLOR_DARK_BLUE = 17;
int TILE_MAIN_LIGHT_COLOR_PALE_BLUE = 18;
int TILE_MAIN_LIGHT_COLOR_BLUE = 19;
int TILE_MAIN_LIGHT_COLOR_PALE_DARK_PURPLE = 20;
int TILE_MAIN_LIGHT_COLOR_DARK_PURPLE = 21;
int TILE_MAIN_LIGHT_COLOR_PALE_PURPLE = 22;
int TILE_MAIN_LIGHT_COLOR_PURPLE = 23;
int TILE_MAIN_LIGHT_COLOR_PALE_DARK_RED = 24;
int TILE_MAIN_LIGHT_COLOR_DARK_RED = 25;
int TILE_MAIN_LIGHT_COLOR_PALE_RED = 26;
int TILE_MAIN_LIGHT_COLOR_RED = 27;
int TILE_MAIN_LIGHT_COLOR_PALE_DARK_ORANGE = 28;
int TILE_MAIN_LIGHT_COLOR_DARK_ORANGE = 29;
int TILE_MAIN_LIGHT_COLOR_PALE_ORANGE = 30;
int TILE_MAIN_LIGHT_COLOR_ORANGE = 31;
int TILE_SOURCE_LIGHT_COLOR_BLACK = 0;
int TILE_SOURCE_LIGHT_COLOR_WHITE = 1;
int TILE_SOURCE_LIGHT_COLOR_PALE_DARK_YELLOW = 2;
int TILE_SOURCE_LIGHT_COLOR_PALE_YELLOW = 3;
int TILE_SOURCE_LIGHT_COLOR_PALE_DARK_GREEN = 4;
int TILE_SOURCE_LIGHT_COLOR_PALE_GREEN = 5;
int TILE_SOURCE_LIGHT_COLOR_PALE_DARK_AQUA = 6;
int TILE_SOURCE_LIGHT_COLOR_PALE_AQUA = 7;
int TILE_SOURCE_LIGHT_COLOR_PALE_DARK_BLUE = 8;
int TILE_SOURCE_LIGHT_COLOR_PALE_BLUE = 9;
int TILE_SOURCE_LIGHT_COLOR_PALE_DARK_PURPLE = 10;
int TILE_SOURCE_LIGHT_COLOR_PALE_PURPLE = 11;
int TILE_SOURCE_LIGHT_COLOR_PALE_DARK_RED = 12;
int TILE_SOURCE_LIGHT_COLOR_PALE_RED = 13;
int TILE_SOURCE_LIGHT_COLOR_PALE_DARK_ORANGE = 14;
int TILE_SOURCE_LIGHT_COLOR_PALE_ORANGE = 15;
int PANEL_BUTTON_MAP = 0;
int PANEL_BUTTON_INVENTORY = 1;
int PANEL_BUTTON_JOURNAL = 2;
int PANEL_BUTTON_CHARACTER = 3;
int PANEL_BUTTON_OPTIONS = 4;
int PANEL_BUTTON_SPELLS = 5;
int PANEL_BUTTON_REST = 6;
int PANEL_BUTTON_PLAYER_VERSUS_PLAYER = 7;
int ACTION_MOVETOPOINT = 0;
int ACTION_PICKUPITEM = 1;
int ACTION_DROPITEM = 2;
int ACTION_ATTACKOBJECT = 3;
int ACTION_CASTSPELL = 4;
int ACTION_OPENDOOR = 5;
int ACTION_CLOSEDOOR = 6;
int ACTION_DIALOGOBJECT = 7;
int ACTION_DISABLETRAP = 8;
int ACTION_RECOVERTRAP = 9;
int ACTION_FLAGTRAP = 10;
int ACTION_EXAMINETRAP = 11;
int ACTION_SETTRAP = 12;
int ACTION_OPENLOCK = 13;
int ACTION_LOCK = 14;
int ACTION_USEOBJECT = 15;
int ACTION_ANIMALEMPATHY = 16;
int ACTION_REST = 17;
int ACTION_TAUNT = 18;
int ACTION_ITEMCASTSPELL = 19;
int ACTION_COUNTERSPELL = 31;
int ACTION_HEAL = 33;
int ACTION_PICKPOCKET = 34;
int ACTION_FOLLOW = 35;
int ACTION_WAIT = 36;
int ACTION_SIT = 37;
int ACTION_INVALID = 65535;
int TRAP_BASE_TYPE_MINOR_SPIKE = 0;
int TRAP_BASE_TYPE_AVERAGE_SPIKE = 1;
int TRAP_BASE_TYPE_STRONG_SPIKE = 2;
int TRAP_BASE_TYPE_DEADLY_SPIKE = 3;
int TRAP_BASE_TYPE_MINOR_HOLY = 4;
int TRAP_BASE_TYPE_AVERAGE_HOLY = 5;
int TRAP_BASE_TYPE_STRONG_HOLY = 6;
int TRAP_BASE_TYPE_DEADLY_HOLY = 7;
int TRAP_BASE_TYPE_MINOR_TANGLE = 8;
int TRAP_BASE_TYPE_AVERAGE_TANGLE = 9;
int TRAP_BASE_TYPE_STRONG_TANGLE = 10;
int TRAP_BASE_TYPE_DEADLY_TANGLE = 11;
int TRAP_BASE_TYPE_MINOR_ACID = 12;
int TRAP_BASE_TYPE_AVERAGE_ACID = 13;
int TRAP_BASE_TYPE_STRONG_ACID = 14;
int TRAP_BASE_TYPE_DEADLY_ACID = 15;
int TRAP_BASE_TYPE_MINOR_FIRE = 16;
int TRAP_BASE_TYPE_AVERAGE_FIRE = 17;
int TRAP_BASE_TYPE_STRONG_FIRE = 18;
int TRAP_BASE_TYPE_DEADLY_FIRE = 19;
int TRAP_BASE_TYPE_MINOR_ELECTRICAL = 20;
int TRAP_BASE_TYPE_AVERAGE_ELECTRICAL = 21;
int TRAP_BASE_TYPE_STRONG_ELECTRICAL = 22;
int TRAP_BASE_TYPE_DEADLY_ELECTRICAL = 23;
int TRAP_BASE_TYPE_MINOR_GAS = 24;
int TRAP_BASE_TYPE_AVERAGE_GAS = 25;
int TRAP_BASE_TYPE_STRONG_GAS = 26;
int TRAP_BASE_TYPE_DEADLY_GAS = 27;
int TRAP_BASE_TYPE_MINOR_FROST = 28;
int TRAP_BASE_TYPE_AVERAGE_FROST = 29;
int TRAP_BASE_TYPE_STRONG_FROST = 30;
int TRAP_BASE_TYPE_DEADLY_FROST = 31;
int TRAP_BASE_TYPE_MINOR_NEGATIVE = 32;
int TRAP_BASE_TYPE_AVERAGE_NEGATIVE = 33;
int TRAP_BASE_TYPE_STRONG_NEGATIVE = 34;
int TRAP_BASE_TYPE_DEADLY_NEGATIVE = 35;
int TRAP_BASE_TYPE_MINOR_SONIC = 36;
int TRAP_BASE_TYPE_AVERAGE_SONIC = 37;
int TRAP_BASE_TYPE_STRONG_SONIC = 38;
int TRAP_BASE_TYPE_DEADLY_SONIC = 39;
int TRAP_BASE_TYPE_MINOR_ACID_SPLASH = 40;
int TRAP_BASE_TYPE_AVERAGE_ACID_SPLASH = 41;
int TRAP_BASE_TYPE_STRONG_ACID_SPLASH = 42;
int TRAP_BASE_TYPE_DEADLY_ACID_SPLASH = 43;
int STEALTH_MODE_DISABLED = 0;
int STEALTH_MODE_ACTIVATED = 1;
int DETECT_MODE_PASSIVE = 0;
int DETECT_MODE_ACTIVE = 1;
string sLanguage = "nwscript";
// Get an integer between 0 and nMaxInteger-1.
// Return value on error: 0
int Random(int nMaxInteger);
// Output sString to the log file.
void PrintString(string sString);
// Output a formatted float to the log file.
// - nWidth should be a value from 0 to 18 inclusive.
// - nDecimals should be a value from 0 to 9 inclusive.
void PrintFloat(float fFloat, int nWidth=18, int nDecimals=9);
// Convert fFloat into a string.
// - nWidth should be a value from 0 to 18 inclusive.
// - nDecimals should be a value from 0 to 9 inclusive.
string FloatToString(float fFloat, int nWidth=18, int nDecimals=9);
// Output nInteger to the log file.
void PrintInteger(int nInteger);
// Output oObject's ID to the log file.
void PrintObject(object oObject);
// Assign aActionToAssign to oActionSubject.
// * No return value, but if an error occurs, the log file will contain
// "AssignCommand failed."
// (If the object doesn't exist, nothing happens.)
void AssignCommand(object oActionSubject,action aActionToAssign);
// Delay aActionToDelay by fSeconds.
// * No return value, but if an error occurs, the log file will contain
// "DelayCommand failed.".
// It is suggested that functions which create effects should not be used
// as parameters to delayed actions. Instead, the effect should be created in the
// script and then passed into the action. For example:
// effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
// DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget);
void DelayCommand(float fSeconds, action aActionToDelay);
// Make oTarget run sScript and then return execution to the calling script.
// If sScript does not specify a compiled script, nothing happens.
void ExecuteScript(string sScript, object oTarget);
// Clear all the actions of the caller.
// * No return value, but if an error occurs, the log file will contain
// "ClearAllActions failed.".
// - nClearCombatState: if true, this will immediately clear the combat state
// on a creature, which will stop the combat music and allow them to rest,
// engage in dialog, or other actions that they would normally have to wait for.
void ClearAllActions(int nClearCombatState=FALSE);
// Cause the caller to face fDirection.
// - fDirection is expressed as anticlockwise degrees from Due East.
// DIRECTION_EAST, DIRECTION_NORTH, DIRECTION_WEST and DIRECTION_SOUTH are
// predefined. (0.0f=East, 90.0f=North, 180.0f=West, 270.0f=South)
void SetFacing(float fDirection);
// Set the calendar to the specified date.
// - nYear should be from 0 to 32000 inclusive
// - nMonth should be from 1 to 12 inclusive
// - nDay should be from 1 to 28 inclusive
// 1) Time can only be advanced forwards; attempting to set the time backwards
// will result in no change to the calendar.
// 2) If values larger than the month or day are specified, they will be wrapped
// around and the overflow will be used to advance the next field.
// e.g. Specifying a year of 1350, month of 33 and day of 10 will result in
// the calender being set to a year of 1352, a month of 9 and a day of 10.
void SetCalendar(int nYear,int nMonth, int nDay);
// Set the time to the time specified.
// - nHour should be from 0 to 23 inclusive
// - nMinute should be from 0 to 59 inclusive
// - nSecond should be from 0 to 59 inclusive
// - nMillisecond should be from 0 to 999 inclusive
// 1) Time can only be advanced forwards; attempting to set the time backwards
// will result in the day advancing and then the time being set to that
// specified, e.g. if the current hour is 15 and then the hour is set to 3,
// the day will be advanced by 1 and the hour will be set to 3.
// 2) If values larger than the max hour, minute, second or millisecond are
// specified, they will be wrapped around and the overflow will be used to
// advance the next field, e.g. specifying 62 hours, 250 minutes, 10 seconds
// and 10 milliseconds will result in the calendar day being advanced by 2
// and the time being set to 18 hours, 10 minutes, 10 milliseconds.
void SetTime(int nHour,int nMinute,int nSecond,int nMillisecond);
// Get the current calendar year.
int GetCalendarYear();
// Get the current calendar month.
int GetCalendarMonth();
// Get the current calendar day.
int GetCalendarDay();
// Get the current hour.
int GetTimeHour();
// Get the current minute
int GetTimeMinute();
// Get the current second
int GetTimeSecond();
// Get the current millisecond
int GetTimeMillisecond();
// The action subject will generate a random location near its current location
// and pathfind to it. All commands will remove a RandomWalk() from the action
// queue if there is one in place.
// * No return value, but if an error occurs the log file will contain
// "ActionRandomWalk failed."
void ActionRandomWalk();
// The action subject will move to lDestination.
// - lDestination: The object will move to this location. If the location is
// invalid or a path cannot be found to it, the command does nothing.
// - bRun: If this is TRUE, the action subject will run rather than walk
// * No return value, but if an error occurs the log file will contain
// "MoveToPoint failed."
void ActionMoveToLocation(location lDestination, int bRun=FALSE);
// Cause the action subject to move to a certain distance from oMoveTo.
// If there is no path to oMoveTo, this command will do nothing.
// - oMoveTo: This is the object we wish the action subject to move to
// - bRun: If this is TRUE, the action subject will run rather than walk
// - fRange: This is the desired distance between the action subject and oMoveTo
// * No return value, but if an error occurs the log file will contain
// "ActionMoveToObject failed."
void ActionMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f);
// Cause the action subject to move to a certain distance away from oFleeFrom.
// - oFleeFrom: This is the object we wish the action subject to move away from.
// If oFleeFrom is not in the same area as the action subject, nothing will
// happen.
// - bRun: If this is TRUE, the action subject will run rather than walk
// - fMoveAwayRange: This is the distance we wish the action subject to put
// between themselves and oFleeFrom
// * No return value, but if an error occurs the log file will contain
// "ActionMoveAwayFromObject failed."
void ActionMoveAwayFromObject(object oFleeFrom, int bRun=FALSE, float fMoveAwayRange=40.0f);
// Get the area that oTarget is currently in
// * Return value on error: OBJECT_INVALID
object GetArea(object oTarget);
// The value returned by this function depends on the object type of the caller:
// 1) If the caller is a door it returns the object that last
// triggered it.
// 2) If the caller is a trigger, area of effect, module, area or encounter it
// returns the object that last entered it.
// * Return value on error: OBJECT_INVALID
// When called on doors, this should be called in the OnAreaTransitionClick event.
// Otherwise it should only be called in OnEnter scripts.
object GetEnteringObject();
// Get the object that last left the caller. This function works on triggers,
// areas of effect, modules, areas and encounters.
// * Return value on error: OBJECT_INVALID
// This should only be called in OnExit scripts.
object GetExitingObject();
// Get the position of oTarget
// * Return value on error: vector (0.0f, 0.0f, 0.0f)
vector GetPosition(object oTarget);
// Get the direction in which oTarget is facing, expressed as a float between
// 0.0f and 360.0f
// * Return value on error: -1.0f
float GetFacing(object oTarget);
// Get the possessor of oItem
// * Return value on error: OBJECT_INVALID
object GetItemPossessor(object oItem);
// Get the object possessed by oCreature with the tag sItemTag
// * Return value on error: OBJECT_INVALID
object GetItemPossessedBy(object oCreature, string sItemTag);
// Create an item with the template sItemTemplate in oTarget's inventory.
// - nStackSize: This is the stack size of the item to be created
// * Return value: The object that has been created. On error, this returns
// OBJECT_INVALID.
object CreateItemOnObject(string sItemTemplate, object oTarget=OBJECT_SELF, int nStackSize=1);
// Equip oItem into nInventorySlot.
// - nInventorySlot: INVENTORY_SLOT_*
// * No return value, but if an error occurs the log file will contain
// "ActionEquipItem failed."
void ActionEquipItem(object oItem, int nInventorySlot);
// Unequip oItem from whatever slot it is currently in.
void ActionUnequipItem(object oItem);
// Pick up oItem from the ground.
// * No return value, but if an error occurs the log file will contain
// "ActionPickUpItem failed."
void ActionPickUpItem(object oItem);
// Put down oItem on the ground.
// * No return value, but if an error occurs the log file will contain
// "ActionPutDownItem failed."
void ActionPutDownItem(object oItem);
// Get the last attacker of oAttackee. This should only be used ONLY in the
// OnAttacked events for creatures, placeables and doors.
// * Return value on error: OBJECT_INVALID
object GetLastAttacker(object oAttackee=OBJECT_SELF);
// Attack oAttackee.
// - bPassive: If this is TRUE, attack is in passive mode.
void ActionAttack(object oAttackee, int bPassive=FALSE);
// Get the creature nearest to oTarget, subject to all the criteria specified.
// - nFirstCriteriaType: CREATURE_TYPE_*
// - nFirstCriteriaValue:
// -> CLASS_TYPE_* if nFirstCriteriaType was CREATURE_TYPE_CLASS
// -> SPELL_* if nFirstCriteriaType was CREATURE_TYPE_DOES_NOT_HAVE_SPELL_EFFECT
// or CREATURE_TYPE_HAS_SPELL_EFFECT
// -> TRUE or FALSE if nFirstCriteriaType was CREATURE_TYPE_IS_ALIVE
// -> PERCEPTION_* if nFirstCriteriaType was CREATURE_TYPE_PERCEPTION
// -> PLAYER_CHAR_IS_PC or PLAYER_CHAR_NOT_PC if nFirstCriteriaType was
// CREATURE_TYPE_PLAYER_CHAR
// -> RACIAL_TYPE_* if nFirstCriteriaType was CREATURE_TYPE_RACIAL_TYPE
// -> REPUTATION_TYPE_* if nFirstCriteriaType was CREATURE_TYPE_REPUTATION
// For example, to get the nearest PC, use:
// (CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC)
// - oTarget: We're trying to find the creature of the specified type that is
// nearest to oTarget
// - nNth: We don't have to find the first nearest: we can find the Nth nearest...
// - nSecondCriteriaType: This is used in the same way as nFirstCriteriaType to
// further specify the type of creature that we are looking for.
// - nSecondCriteriaValue: This is used in the same way as nFirstCriteriaValue
// to further specify the type of creature that we are looking for.
// - nThirdCriteriaType: This is used in the same way as nFirstCriteriaType to
// further specify the type of creature that we are looking for.
// - nThirdCriteriaValue: This is used in the same way as nFirstCriteriaValue to
// further specify the type of creature that we are looking for.
// * Return value on error: OBJECT_INVALID
object GetNearestCreature(int nFirstCriteriaType, int nFirstCriteriaValue, object oTarget=OBJECT_SELF, int nNth=1, int nSecondCriteriaType=-1, int nSecondCriteriaValue=-1, int nThirdCriteriaType=-1, int nThirdCriteriaValue=-1 );
// Add a speak action to the action subject.
// - sStringToSpeak: String to be spoken
// - nTalkVolume: TALKVOLUME_*
void ActionSpeakString(string sStringToSpeak, int nTalkVolume=TALKVOLUME_TALK);
// Cause the action subject to play an animation
// - nAnimation: ANIMATION_*
// - fSpeed: Speed of the animation
// - fDurationSeconds: Duration of the animation (this is not used for Fire and
// Forget animations)
void ActionPlayAnimation(int nAnimation, float fSpeed=1.0, float fDurationSeconds=0.0);
// Get the distance from the caller to oObject in metres.
// * Return value on error: -1.0f
float GetDistanceToObject(object oObject);
// * Returns TRUE if oObject is a valid object.
int GetIsObjectValid(object oObject);
// Cause the action subject to open oDoor
void ActionOpenDoor(object oDoor);
// Cause the action subject to close oDoor
void ActionCloseDoor(object oDoor);
// Change the direction in which the camera is facing
// - fDirection is expressed as anticlockwise degrees from Due East.
// (0.0f=East, 90.0f=North, 180.0f=West, 270.0f=South)
// A value of -1.0f for any parameter will be ignored and instead it will
// use the current camera value.
// This can be used to change the way the camera is facing after the player
// emerges from an area transition.
// - nTransitionType: CAMERA_TRANSITION_TYPE_* SNAP will immediately move the
// camera to the new position, while the other types will result in the camera moving gradually into position
void SetCameraFacing(float fDirection, float fDistance = -1.0f, float fPitch = -1.0, int nTransitionType=CAMERA_TRANSITION_TYPE_SNAP);
// Play sSoundName
// - sSoundName: TBD - SS
// This will play a mono sound from the location of the object running the command.
void PlaySound(string sSoundName);
// Get the object at which the caller last cast a spell
// * Return value on error: OBJECT_INVALID
object GetSpellTargetObject();
// This action casts a spell at oTarget.
// - nSpell: SPELL_*
// - oTarget: Target for the spell
// - nMetamagic: METAMAGIC_*
// - bCheat: If this is TRUE, then the executor of the action doesn't have to be
// able to cast the spell.
// - nDomainLevel: TBD - SS
// - nProjectilePathType: PROJECTILE_PATH_TYPE_*
// - bInstantSpell: If this is TRUE, the spell is cast immediately. This allows
// the end-user to simulate a high-level magic-user having lots of advance
// warning of impending trouble
void ActionCastSpellAtObject(int nSpell, object oTarget, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nDomainLevel=0, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE);
// Get the current hitpoints of oObject
// * Return value on error: 0
int GetCurrentHitPoints(object oObject=OBJECT_SELF);
// Get the maximum hitpoints of oObject
// * Return value on error: 0
int GetMaxHitPoints(object oObject=OBJECT_SELF);
// Get oObject's local integer variable sVarName
// * Return value on error: 0
int GetLocalInt(object oObject, string sVarName);
// Get oObject's local float variable sVarName
// * Return value on error: 0.0f
float GetLocalFloat(object oObject, string sVarName);
// Get oObject's local string variable sVarName
// * Return value on error: ""
string GetLocalString(object oObject, string sVarName);
// Get oObject's local object variable sVarName
// * Return value on error: OBJECT_INVALID
object GetLocalObject(object oObject, string sVarName);
// Set oObject's local integer variable sVarName to nValue
void SetLocalInt(object oObject, string sVarName, int nValue);
// Set oObject's local float variable sVarName to nValue
void SetLocalFloat(object oObject, string sVarName, float fValue);
// Set oObject's local string variable sVarName to nValue
void SetLocalString(object oObject, string sVarName, string sValue);
// Set oObject's local object variable sVarName to nValue
void SetLocalObject(object oObject, string sVarName, object oValue);
// Get the length of sString
// * Return value on error: -1
int GetStringLength(string sString);
// Convert sString into upper case
// * Return value on error: ""
string GetStringUpperCase(string sString);
// Convert sString into lower case
// * Return value on error: ""
string GetStringLowerCase(string sString);
// Get nCount characters from the right end of sString
// * Return value on error: ""
string GetStringRight(string sString, int nCount);
// Get nCounter characters from the left end of sString
// * Return value on error: ""
string GetStringLeft(string sString, int nCount);
// Insert sString into sDestination at nPosition
// * Return value on error: ""
string InsertString(string sDestination, string sString, int nPosition);
// Get nCount characters from sString, starting at nStart
// * Return value on error: ""
string GetSubString(string sString, int nStart, int nCount);
// Find the position of sSubstring inside sString
int FindSubString(string sString, string sSubString);
// * Return value on error: -1
// math operations
// Maths operation: absolute value of fValue
float fabs(float fValue);
// Maths operation: cosine of fValue
float cos(float fValue);
// Maths operation: sine of fValue
float sin(float fValue);
// Maths operation: tan of fValue
float tan(float fValue);
// Maths operation: arccosine of fValue
// * Returns zero if fValue > 1 or fValue < -1
float acos(float fValue);
// Maths operation: arcsine of fValue
// * Returns zero if fValue >1 or fValue < -1
float asin(float fValue);
// Maths operation: arctan of fValue
float atan(float fValue);
// Maths operation: log of fValue
// * Returns zero if fValue <= zero
float log(float fValue);
// Maths operation: fValue is raised to the power of fExponent
// * Returns zero if fValue ==0 and fExponent <0
float pow(float fValue, float fExponent);
// Maths operation: square root of fValue
// * Returns zero if fValue <0
float sqrt(float fValue);
// Maths operation: integer absolute value of nValue
// * Return value on error: 0
int abs(int nValue);
// Create a Heal effect. This should be applied as an instantaneous effect.
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nDamageToHeal < 0.
effect EffectHeal(int nDamageToHeal);
// Create a Damage effect
// - nDamageAmount: amount of damage to be dealt. This should be applied as an
// instantaneous effect.
// - nDamageType: DAMAGE_TYPE_*
// - nDamagePower: DAMAGE_POWER_*
effect EffectDamage(int nDamageAmount, int nDamageType=DAMAGE_TYPE_MAGICAL, int nDamagePower=DAMAGE_POWER_NORMAL);
// Create an Ability Increase effect
// - bAbilityToIncrease: ABILITY_*
effect EffectAbilityIncrease(int nAbilityToIncrease, int nModifyBy);
// Create a Damage Resistance effect that removes the first nAmount points of
// damage of type nDamageType, up to nLimit (or infinite if nLimit is 0)
// - nDamageType: DAMAGE_TYPE_*
// - nAmount
// - nLimit
effect EffectDamageResistance(int nDamageType, int nAmount, int nLimit=0);
// Create a Resurrection effect. This should be applied as an instantaneous effect.
effect EffectResurrection();
// Create a Summon Creature effect. The creature is created and placed into the
// caller's party/faction.
// - sCreatureResref: Identifies the creature to be summoned
// - nVisualEffectId: VFX_*
// - fDelaySeconds: There can be delay between the visual effect being played, and the
// creature being added to the area
effect EffectSummonCreature(string sCreatureResref, int nVisualEffectId=VFX_NONE, float fDelaySeconds=0.0f);
// Get the Caster Level of oCreature.
// * Return value on error: 0;
int GetCasterLevel(object oCreature);
// Get the first in-game effect on oCreature.
effect GetFirstEffect(object oCreature);
// Get the next in-game effect on oCreature.
effect GetNextEffect(object oCreature);
// Remove eEffect from oCreature.
// * No return value
void RemoveEffect(object oCreature, effect eEffect);
// * Returns TRUE if eEffect is a valid effect.
int GetIsEffectValid(effect eEffect);
// Get the duration type (DURATION_TYPE_*) of eEffect.
// * Return value if eEffect is not valid: -1
int GetEffectDurationType(effect eEffect);
// Get the subtype (SUBTYPE_*) of eEffect.
// * Return value on error: 0
int GetEffectSubType(effect eEffect);
// Get the object that created eEffect.
// * Returns OBJECT_INVALID if eEffect is not a valid effect.
object GetEffectCreator(effect eEffect);
// Convert nInteger into a string.
// * Return value on error: ""
string IntToString(int nInteger);
// Get the first object in oArea.
// If no valid area is specified, it will use the caller's area.
// * Return value on error: OBJECT_INVALID
object GetFirstObjectInArea(object oArea=OBJECT_INVALID);
// Get the next object in oArea.
// If no valid area is specified, it will use the caller's area.
// * Return value on error: OBJECT_INVALID
object GetNextObjectInArea(object oArea=OBJECT_INVALID);
// Get the total from rolling (nNumDice x d2 dice).
// - nNumDice: If this is less than 1, the value 1 will be used.
int d2(int nNumDice=1);
// Get the total from rolling (nNumDice x d3 dice).
// - nNumDice: If this is less than 1, the value 1 will be used.
int d3(int nNumDice=1);
// Get the total from rolling (nNumDice x d4 dice).
// - nNumDice: If this is less than 1, the value 1 will be used.
int d4(int nNumDice=1);
// Get the total from rolling (nNumDice x d6 dice).
// - nNumDice: If this is less than 1, the value 1 will be used.
int d6(int nNumDice=1);
// Get the total from rolling (nNumDice x d8 dice).
// - nNumDice: If this is less than 1, the value 1 will be used.
int d8(int nNumDice=1);
// Get the total from rolling (nNumDice x d10 dice).
// - nNumDice: If this is less than 1, the value 1 will be used.
int d10(int nNumDice=1);
// Get the total from rolling (nNumDice x d12 dice).
// - nNumDice: If this is less than 1, the value 1 will be used.
int d12(int nNumDice=1);
// Get the total from rolling (nNumDice x d20 dice).
// - nNumDice: If this is less than 1, the value 1 will be used.
int d20(int nNumDice=1);
// Get the total from rolling (nNumDice x d100 dice).
// - nNumDice: If this is less than 1, the value 1 will be used.
int d100(int nNumDice=1);
// Get the magnitude of vVector; this can be used to determine the
// distance between two points.
// * Return value on error: 0.0f
float VectorMagnitude(vector vVector);
// Get the metamagic type (METAMAGIC_*) of the last spell cast by the caller
// * Return value if the caster is not a valid object: -1
int GetMetaMagicFeat();
// Get the object type (OBJECT_TYPE_*) of oTarget
// * Return value if oTarget is not a valid object: -1
int GetObjectType(object oTarget);
// Get the racial type (RACIAL_TYPE_*) of oCreature
// * Return value if oCreature is not a valid creature: RACIAL_TYPE_INVALID
int GetRacialType(object oCreature);
// Do a Fortitude Save check for the given DC
// - oCreature
// - nDC: Difficulty check
// - nSaveType: SAVING_THROW_TYPE_*
// - oSaveVersus
// Returns: 0 if the saving throw roll failed
// Returns: 1 if the saving throw roll succeeded
// Returns: 2 if the target was immune to the save type specified
int FortitudeSave(object oCreature, int nDC, int nSaveType=SAVING_THROW_TYPE_NONE, object oSaveVersus=OBJECT_SELF);
// Does a Reflex Save check for the given DC
// - oCreature
// - nDC: Difficulty check
// - nSaveType: SAVING_THROW_TYPE_*
// - oSaveVersus
// Returns: 0 if the saving throw roll failed
// Returns: 1 if the saving throw roll succeeded
// Returns: 2 if the target was immune to the save type specified
int ReflexSave(object oCreature, int nDC, int nSaveType=SAVING_THROW_TYPE_NONE, object oSaveVersus=OBJECT_SELF);
// Does a Will Save check for the given DC
// - oCreature
// - nDC: Difficulty check
// - nSaveType: SAVING_THROW_TYPE_*
// - oSaveVersus
// Returns: 0 if the saving throw roll failed
// Returns: 1 if the saving throw roll succeeded
// Returns: 2 if the target was immune to the save type specified
int WillSave(object oCreature, int nDC, int nSaveType=SAVING_THROW_TYPE_NONE, object oSaveVersus=OBJECT_SELF);
// Get the DC to save against for a spell (10 + spell level + relevant ability
// bonus). This can be called by a creature or by an Area of Effect object.
int GetSpellSaveDC();
// Set the subtype of eEffect to Magical and return eEffect.
// (Effects default to magical if the subtype is not set)
effect MagicalEffect(effect eEffect);
// Set the subtype of eEffect to Supernatural and return eEffect.
// (Effects default to magical if the subtype is not set)
effect SupernaturalEffect(effect eEffect);
// Set the subtype of eEffect to Extraordinary and return eEffect.
// (Effects default to magical if the subtype is not set)
effect ExtraordinaryEffect(effect eEffect);
// Create an AC Increase effect
// - nValue: size of AC increase
// - nModifyType: AC_*_BONUS
// - nDamageType: DAMAGE_TYPE_*
// * Default value for nDamageType should only ever be used in this function prototype.
effect EffectACIncrease(int nValue, int nModifyType=AC_DODGE_BONUS, int nDamageType=AC_VS_DAMAGE_TYPE_ALL);
// If oObject is a creature, this will return that creature's armour class
// If oObject is an item, door or placeable, this will return zero.
// - nForFutureUse: this parameter is not currently used
// * Return value if oObject is not a creature, item, door or placeable: -1
int GetAC(object oObject, int nForFutureUse=0);
// Create an AC Decrease effect
// - nSave: SAVING_THROW_* (not SAVING_THROW_TYPE_*)
// - nValue: size of AC decrease
// - nSaveType: SAVING_THROW_TYPE_*
effect EffectSavingThrowIncrease(int nSave, int nValue, int nSaveType=SAVING_THROW_TYPE_ALL);
// Create an Attack Increase effect
// - nBonus: size of attack bonus
// - nModifierType: ATTACK_BONUS_*
effect EffectAttackIncrease(int nBonus, int nModifierType=ATTACK_BONUS_MISC);
// Create a Damage Reduction effect
// - nAmount: amount of damage reduction
// - nDamagePower: DAMAGE_POWER_*
// - nLimit: How much damage the effect can absorb before disappearing.
// Set to zero for infinite
effect EffectDamageReduction(int nAmount, int nDamagePower, int nLimit=0);
// Create a Damage Increase effect
// - nBonus: DAMAGE_BONUS_*
// - nDamageType: DAMAGE_TYPE_*
effect EffectDamageIncrease(int nBonus, int nDamageType=DAMAGE_TYPE_MAGICAL);
// Convert nRounds into a number of seconds
// A round is always 6.0 seconds
float RoundsToSeconds(int nRounds);
// Convert nHours into a number of seconds
// The result will depend on how many minutes there are per hour (game-time)
float HoursToSeconds(int nHours);
// Convert nTurns into a number of seconds
// A turn is always 60.0 seconds
float TurnsToSeconds(int nTurns);
// Get an integer between 0 and 100 (inclusive) to represent oCreature's
// Law/Chaos alignment
// (100=law, 0=chaos)
// * Return value if oCreature is not a valid creature: -1
int GetLawChaosValue(object oCreature);
// Get an integer between 0 and 100 (inclusive) to represent oCreature's
// Good/Evil alignment
// (100=good, 0=evil)
// * Return value if oCreature is not a valid creature: -1
int GetGoodEvilValue(object oCreature);
// Return an ALIGNMENT_* constant to represent oCreature's law/chaos alignment
// * Return value if oCreature is not a valid creature: -1
int GetAlignmentLawChaos(object oCreature);
// Return an ALIGNMENT_* constant to represent oCreature's good/evil alignment
// * Return value if oCreature is not a valid creature: -1
int GetAlignmentGoodEvil(object oCreature);
// Get the first object in nShape
// - nShape: SHAPE_*
// - fSize:
// -> If nShape == SHAPE_SPHERE, this is the radius of the sphere
// -> If nShape == SHAPE_SPELLCYLINDER, this is the radius of the cylinder
// -> If nShape == SHAPE_CONE, this is the widest radius of the cone
// -> If nShape == SHAPE_CUBE, this is half the length of one of the sides of
// the cube
// - lTarget: This is the centre of the effect, usually GetSpellTargetPosition(),
// or the end of a cylinder or cone.
// - bLineOfSight: This controls whether to do a line-of-sight check on the
// object returned.
// (This can be used to ensure that spell effects do not go through walls.)
// - nObjectFilter: This allows you to filter out undesired object types, using
// bitwise "or".
// For example, to return only creatures and doors, the value for this
// parameter would be OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR
// - vOrigin: This is only used for cylinders and cones, and specifies the
// origin of the effect(normally the spell-caster's position).
// Return value on error: OBJECT_INVALID
object GetFirstObjectInShape(int nShape, float fSize, location lTarget, int bLineOfSight=FALSE, int nObjectFilter=OBJECT_TYPE_CREATURE, vector vOrigin=[0.0,0.0,0.0]);
// Get the next object in nShape
// - nShape: SHAPE_*
// - fSize:
// -> If nShape == SHAPE_SPHERE, this is the radius of the sphere
// -> If nShape == SHAPE_SPELLCYLINDER, this is the radius of the cylinder
// -> If nShape == SHAPE_CONE, this is the widest radius of the cone
// -> If nShape == SHAPE_CUBE, this is half the length of one of the sides of
// the cube
// - lTarget: This is the centre of the effect, usually GetSpellTargetPosition(),
// or the end of a cylinder or cone.
// - bLineOfSight: This controls whether to do a line-of-sight check on the
// object returned. (This can be used to ensure that spell effects do not go
// through walls.)
// - nObjectFilter: This allows you to filter out undesired object types, using
// bitwise "or". For example, to return only creatures and doors, the value for
// this parameter would be OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR
// - vOrigin: This is only used for cylinders and cones, and specifies the origin
// of the effect (normally the spell-caster's position).
// Return value on error: OBJECT_INVALID
object GetNextObjectInShape(int nShape, float fSize, location lTarget, int bLineOfSight=FALSE, int nObjectFilter=OBJECT_TYPE_CREATURE, vector vOrigin=[0.0,0.0,0.0]);
// Create an Entangle effect
// When applied, this effect will restrict the creature's movement and apply a
// (-2) to all attacks and a -4 to AC.
effect EffectEntangle();
// Cause oObject to run evToRun
void SignalEvent(object oObject, event evToRun);
// Create an event of the type nUserDefinedEventNumber
event EventUserDefined(int nUserDefinedEventNumber);
// Create a Death effect
// - nSpectacularDeath: if this is TRUE, the creature to which this effect is
// applied will die in an extraordinary fashion
// - nDisplayFeedback
effect EffectDeath(int nSpectacularDeath=FALSE, int nDisplayFeedback=TRUE);
// Create a Knockdown effect
// This effect knocks creatures off their feet, they will sit until the effect
// is removed. This should be applied as a temporary effect with a 3 second
// duration minimum (1 second to fall, 1 second sitting, 1 second to get up).
effect EffectKnockdown();
// Give oItem to oGiveTo
// If oItem is not a valid item, or oGiveTo is not a valid object, nothing will
// happen.
void ActionGiveItem(object oItem, object oGiveTo);
// Take oItem from oTakeFrom
// If oItem is not a valid item, or oTakeFrom is not a valid object, nothing
// will happen.
void ActionTakeItem(object oItem, object oTakeFrom);
// Normalize vVector
vector VectorNormalize(vector vVector);
// Create a Curse effect.
// - nStrMod: strength modifier
// - nDexMod: dexterity modifier
// - nConMod: constitution modifier
// - nIntMod: intelligence modifier
// - nWisMod: wisdom modifier
// - nChaMod: charisma modifier
effect EffectCurse(int nStrMod=1, int nDexMod=1, int nConMod=1, int nIntMod=1, int nWisMod=1, int nChaMod=1);
// Get the ability score of type nAbility for a creature (otherwise 0)
// - oCreature: the creature whose ability score we wish to find out
// - nAbilityType: ABILITY_*
// Return value on error: 0
int GetAbilityScore(object oCreature, int nAbilityType);
// * Returns TRUE if oCreature is a dead NPC, dead PC or a dying PC.
int GetIsDead(object oCreature);
// Output vVector to the logfile.
// - vVector
// - bPrepend: if this is TRUE, the message will be prefixed with "PRINTVECTOR:"
void PrintVector(vector vVector, int bPrepend);
// Create a vector with the specified values for x, y and z
vector Vector(float x=0.0f, float y=0.0f, float z=0.0f);
// Cause the caller to face vTarget
void SetFacingPoint(vector vTarget);
// Convert fAngle to a vector
vector AngleToVector(float fAngle);
// Convert vVector to an angle
float VectorToAngle(vector vVector);
// The caller will perform a Melee Touch Attack on oTarget
// This is not an action, and it assumes the caller is already within range of
// oTarget
// * Returns 0 on a miss, 1 on a hit and 2 on a critical hit
int TouchAttackMelee(object oTarget, int bDisplayFeedback=TRUE);
// The caller will perform a Ranged Touch Attack on oTarget
// * Returns 0 on a miss, 1 on a hit and 2 on a critical hit
int TouchAttackRanged(object oTarget, int bDisplayFeedback=TRUE);
// Create a Paralyze effect
effect EffectParalyze();
// Create a Spell Immunity effect.
// There is a known bug with this function. There *must* be a parameter specified
// when this is called (even if the desired parameter is SPELL_ALL_SPELLS),
// otherwise an effect of type EFFECT_TYPE_INVALIDEFFECT will be returned.
// - nImmunityToSpell: SPELL_*
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nImmunityToSpell is
// invalid.
effect EffectSpellImmunity(int nImmunityToSpell=SPELL_ALL_SPELLS);
// Create a Deaf effect
effect EffectDeaf();
// Get the distance in metres between oObjectA and oObjectB.
// * Return value if either object is invalid: 0.0f
float GetDistanceBetween(object oObjectA, object oObjectB);
// Set oObject's local location variable sVarname to lValue
void SetLocalLocation(object oObject, string sVarName, location lValue);
// Get oObject's local location variable sVarname
location GetLocalLocation(object oObject, string sVarName);
// Create a Sleep effect
effect EffectSleep();
// Get the object which is in oCreature's specified inventory slot
// - nInventorySlot: INVENTORY_SLOT_*
// - oCreature
// * Returns OBJECT_INVALID if oCreature is not a valid creature or there is no
// item in nInventorySlot.
object GetItemInSlot(int nInventorySlot, object oCreature=OBJECT_SELF);
// Create a Charm effect
effect EffectCharmed();
// Create a Confuse effect
effect EffectConfused();
// Create a Frighten effect
effect EffectFrightened();
// Create a Dominate effect
effect EffectDominated();
// Create a Daze effect
effect EffectDazed();
// Create a Stun effect
effect EffectStunned();
// Set whether oTarget's action stack can be modified
void SetCommandable(int bCommandable, object oTarget=OBJECT_SELF);
// Determine whether oTarget's action stack can be modified.
int GetCommandable(object oTarget=OBJECT_SELF);
// Create a Regenerate effect.
// - nAmount: amount of damage to be regenerated per time interval
// - fIntervalSeconds: length of interval in seconds
effect EffectRegenerate(int nAmount, float fIntervalSeconds);
// Create a Movement Speed Increase effect.
// - nPercentChange: percentage change in movement speed
effect EffectMovementSpeedIncrease(int nPercentChange);
// Get the number of hitdice for oCreature.
// * Return value if oCreature is not a valid creature: 0
int GetHitDice(object oCreature);
// The action subject will follow oFollow until a ClearAllActions() is called.
// - oFollow: this is the object to be followed
// - fFollowDistance: follow distance in metres
// * No return value
void ActionForceFollowObject(object oFollow, float fFollowDistance=0.0f);
// Get the Tag of oObject
// * Return value if oObject is not a valid object: ""
string GetTag(object oObject);
// Do a Spell Resistance check between oCaster and oTarget, returning TRUE if
// the spell was resisted.
// * Return value if oCaster or oTarget is an invalid object: FALSE
int ResistSpell(object oCaster, object oTarget);
// Get the effect type (EFFECT_TYPE_*) of eEffect.
// * Return value if eEffect is invalid: EFFECT_INVALIDEFFECT
int GetEffectType(effect eEffect);
// Create an Area Of Effect effect in the area of the creature it is applied to.
// If the scripts are not specified, default ones will be used.
effect EffectAreaOfEffect(int nAreaEffectId, string sOnEnterScript="", string sHeartbeatScript="", string sOnExitScript="");
// * Returns TRUE if the Faction Ids of the two objects are the same
int GetFactionEqual(object oFirstObject, object oSecondObject=OBJECT_SELF);
// Make oObjectToChangeFaction join the faction of oMemberOfFactionToJoin.
// NB. ** This will only work for two NPCs **
void ChangeFaction(object oObjectToChangeFaction, object oMemberOfFactionToJoin);
// * Returns TRUE if oObject is listening for something
int GetIsListening(object oObject);
// Set whether oObject is listening.
void SetListening(object oObject, int bValue);
// Set the string for oObject to listen for.
// Note: this does not set oObject to be listening.
void SetListenPattern(object oObject, string sPattern, int nNumber=0);
// * Returns TRUE if sStringToTest matches sPattern.
int TestStringAgainstPattern(string sPattern, string sStringToTest);
// Get the appropriate matched string (this should only be used in
// OnConversation scripts).
// * Returns the appropriate matched string, otherwise returns ""
string GetMatchedSubstring(int nString);
// Get the number of string parameters available.
// * Returns -1 if no string matched (this could be because of a dialogue event)
int GetMatchedSubstringsCount();
// * Create a Visual Effect that can be applied to an object.
// - nVisualEffectId
// - nMissEffect: if this is TRUE, a random vector near or past the target will
// be generated, on which to play the effect
effect EffectVisualEffect(int nVisualEffectId, int nMissEffect=FALSE);
// Get the weakest member of oFactionMember's faction.
// * Returns OBJECT_INVALID if oFactionMember's faction is invalid.
object GetFactionWeakestMember(object oFactionMember=OBJECT_SELF, int bMustBeVisible=TRUE);
// Get the strongest member of oFactionMember's faction.
// * Returns OBJECT_INVALID if oFactionMember's faction is invalid.
object GetFactionStrongestMember(object oFactionMember=OBJECT_SELF, int bMustBeVisible=TRUE);
// Get the member of oFactionMember's faction that has taken the most hit points
// of damage.
// * Returns OBJECT_INVALID if oFactionMember's faction is invalid.
object GetFactionMostDamagedMember(object oFactionMember=OBJECT_SELF, int bMustBeVisible=TRUE);
// Get the member of oFactionMember's faction that has taken the fewest hit
// points of damage.
// * Returns OBJECT_INVALID if oFactionMember's faction is invalid.
object GetFactionLeastDamagedMember(object oFactionMember=OBJECT_SELF, int bMustBeVisible=TRUE);
// Get the amount of gold held by oFactionMember's faction.
// * Returns -1 if oFactionMember's faction is invalid.
int GetFactionGold(object oFactionMember);
// Get an integer between 0 and 100 (inclusive) that represents how
// oSourceFactionMember's faction feels about oTarget.
// * Return value on error: -1
int GetFactionAverageReputation(object oSourceFactionMember, object oTarget);
// Get an integer between 0 and 100 (inclusive) that represents the average
// good/evil alignment of oFactionMember's faction.
// * Return value on error: -1
int GetFactionAverageGoodEvilAlignment(object oFactionMember);
// Get an integer between 0 and 100 (inclusive) that represents the average
// law/chaos alignment of oFactionMember's faction.
// * Return value on error: -1
int GetFactionAverageLawChaosAlignment(object oFactionMember);
// Get the average level of the members of the faction.
// * Return value on error: -1
int GetFactionAverageLevel(object oFactionMember);
// Get the average XP of the members of the faction.
// * Return value on error: -1
int GetFactionAverageXP(object oFactionMember);
// Get the most frequent class in the faction - this can be compared with the
// constants CLASS_TYPE_*.
// * Return value on error: -1
int GetFactionMostFrequentClass(object oFactionMember);
// Get the object faction member with the lowest armour class.
// * Returns OBJECT_INVALID if oFactionMember's faction is invalid.
object GetFactionWorstAC(object oFactionMember=OBJECT_SELF, int bMustBeVisible=TRUE);
// Get the object faction member with the highest armour class.
// * Returns OBJECT_INVALID if oFactionMember's faction is invalid.
object GetFactionBestAC(object oFactionMember=OBJECT_SELF, int bMustBeVisible=TRUE);
// Sit in oChair.
// Note: not all creatures will be able to sit.
void ActionSit(object oChair);
// In an onConversation script this gets the number of the string pattern
// matched (the one that triggered the script).
// * Returns -1 if no string matched
int GetListenPatternNumber();
// Jump to an object ID, or as near to it as possible.
void ActionJumpToObject(object oToJumpTo, int bWalkStraightLineToPoint=TRUE);
// Get the first waypoint with the specified tag.
// * Returns OBJECT_INVALID if the waypoint cannot be found.
object GetWaypointByTag(string sWaypointTag);
// Get the destination (a waypoint or a door) for a trigger or a door.
// * Returns OBJECT_INVALID if oTransition is not a valid trigger or door.
object GetTransitionTarget(object oTransition);
// Link the two supplied effects, returning eChildEffect as a child of
// eParentEffect.
// Note: When applying linked effects if the target is immune to all valid
// effects all other effects will be removed as well. This means that if you
// apply a visual effect and a silence effect (in a link) and the target is
// immune to the silence effect that the visual effect will get removed as well.
// Visual Effects are not considered "valid" effects for the purposes of
// determining if an effect will be removed or not and as such should never be
// packaged *only* with other visual effects in a link.
effect EffectLinkEffects(effect eChildEffect, effect eParentEffect );
// Get the nNth object with the specified tag.
// - sTag
// - nNth: the nth object with this tag may be requested
// * Returns OBJECT_INVALID if the object cannot be found.
// Note: The module cannot be retrieved by GetObjectByTag(), use GetModule() instead.
object GetObjectByTag(string sTag, int nNth=0);
// Adjust the alignment of oSubject.
// - oSubject
// - nAlignment:
// -> ALIGNMENT_LAWFUL/ALIGNMENT_CHAOTIC/ALIGNMENT_GOOD/ALIGNMENT_EVIL: oSubject's
// alignment will be shifted in the direction specified
// -> ALIGNMENT_ALL: nShift will be added to oSubject's law/chaos and
// good/evil alignment values
// -> ALIGNMENT_NEUTRAL: nShift is applied to oSubject's law/chaos and
// good/evil alignment values in the direction which is towards neutrality.
// e.g. If oSubject has a law/chaos value of 10 (i.e. chaotic) and a
// good/evil value of 80 (i.e. good) then if nShift is 15, the
// law/chaos value will become (10+15)=25 and the good/evil value will
// become (80-25)=55
// Furthermore, the shift will at most take the alignment value to 50 and
// not beyond.
// e.g. If oSubject has a law/chaos value of 40 and a good/evil value of 70,
// then if nShift is 15, the law/chaos value will become 50 and the
// good/evil value will become 55
// - nShift: this is the desired shift in alignment
// * No return value
void AdjustAlignment(object oSubject, int nAlignment, int nShift);
// Do nothing for fSeconds seconds.
void ActionWait(float fSeconds);
// Set the transition bitmap of a player; this should only be called in area
// transition scripts. This action should be run by the person "clicking" the
// area transition via AssignCommand.
// - nPredefinedAreaTransition:
// -> To use a predefined area transition bitmap, use one of AREA_TRANSITION_*
// -> To use a custom, user-defined area transition bitmap, use
// AREA_TRANSITION_USER_DEFINED and specify the filename in the second
// parameter
// - sCustomAreaTransitionBMP: this is the filename of a custom, user-defined
// area transition bitmap
void SetAreaTransitionBMP(int nPredefinedAreaTransition, string sCustomAreaTransitionBMP="");
// Starts a conversation with oObjectToConverseWith - this will cause their
// OnDialog event to fire.
// - oObjectToConverseWith
// - sDialogResRef: If this is blank, the creature's own dialogue file will be used
// - bPrivateConversation
void ActionStartConversation(object oObjectToConverseWith, string sDialogResRef="", int bPrivateConversation=FALSE);
// Pause the current conversation.
void ActionPauseConversation();
// Resume a conversation after it has been paused.
void ActionResumeConversation();
// Create a Beam effect.
// - nBeamVisualEffect: VFX_BEAM_*
// - oEffector: the beam is emitted from this creature
// - nBodyPart: BODY_NODE_*
// - bMissEffect: If this is TRUE, the beam will fire to a random vector near or
// past the target
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nBeamVisualEffect is
// not valid.
effect EffectBeam(int nBeamVisualEffect, object oEffector, int nBodyPart, int bMissEffect=FALSE);
// Get an integer between 0 and 100 (inclusive) that represents how oSource
// feels about oTarget.
// -> 0-10 means oSource is hostile to oTarget
// -> 11-89 means oSource is neutral to oTarget
// -> 90-100 means oSource is friendly to oTarget
// * Returns -1 if oSource or oTarget does not identify a valid object
int GetReputation(object oSource, object oTarget);
// Adjust how oSourceFactionMember's faction feels about oTarget by the
// specified amount.
// Note: This adjusts Faction Reputation, how the entire faction that
// oSourceFactionMember is in, feels about oTarget.
// * No return value
void AdjustReputation(object oTarget, object oSourceFactionMember, int nAdjustment);
// Get the creature that is currently sitting on the specified object.
// - oChair
// * Returns OBJECT_INVALID if oChair is not a valid placeable.
object GetSittingCreature(object oChair);
// Get the creature that is going to attack oTarget.
// Note: This value is cleared out at the end of every combat round and should
// not be used in any case except when getting a "going to be attacked" shout
// from the master creature (and this creature is a henchman)
// * Returns OBJECT_INVALID if oTarget is not a valid creature.
object GetGoingToBeAttackedBy(object oTarget);
// Create a Spell Resistance Increase effect.
// - nValue: size of spell resistance increase
effect EffectSpellResistanceIncrease(int nValue);
// Get the location of oObject.
location GetLocation(object oObject);
// The subject will jump to lLocation instantly (even between areas).
// If lLocation is invalid, nothing will happen.
void ActionJumpToLocation(location lLocation);
// Create a location.
location Location(object oArea, vector vPosition, float fOrientation);
// Apply eEffect at lLocation.
void ApplyEffectAtLocation(int nDurationType, effect eEffect, location lLocation, float fDuration=0.0f);
// * Returns TRUE if oCreature is a Player Controlled character.
int GetIsPC(object oCreature);
// Convert fFeet into a number of meters.
float FeetToMeters(float fFeet);
// Convert fYards into a number of meters.
float YardsToMeters(float fYards);
// Apply eEffect to oTarget.
void ApplyEffectToObject(int nDurationType, effect eEffect, object oTarget, float fDuration=0.0f);
// The caller will immediately speak sStringToSpeak (this is different from
// ActionSpeakString)
// - sStringToSpeak
// - nTalkVolume: TALKVOLUME_*
void SpeakString(string sStringToSpeak, int nTalkVolume=TALKVOLUME_TALK);
// Get the location of the caller's last spell target.
location GetSpellTargetLocation();
// Get the position vector from lLocation.
vector GetPositionFromLocation(location lLocation);
// Get the area's object ID from lLocation.
object GetAreaFromLocation(location lLocation);
// Get the orientation value from lLocation.
float GetFacingFromLocation(location lLocation);
// Get the creature nearest to lLocation, subject to all the criteria specified.
// - nFirstCriteriaType: CREATURE_TYPE_*
// - nFirstCriteriaValue:
// -> CLASS_TYPE_* if nFirstCriteriaType was CREATURE_TYPE_CLASS
// -> SPELL_* if nFirstCriteriaType was CREATURE_TYPE_DOES_NOT_HAVE_SPELL_EFFECT
// or CREATURE_TYPE_HAS_SPELL_EFFECT
// -> TRUE or FALSE if nFirstCriteriaType was CREATURE_TYPE_IS_ALIVE
// -> PERCEPTION_* if nFirstCriteriaType was CREATURE_TYPE_PERCEPTION
// -> PLAYER_CHAR_IS_PC or PLAYER_CHAR_NOT_PC if nFirstCriteriaType was
// CREATURE_TYPE_PLAYER_CHAR
// -> RACIAL_TYPE_* if nFirstCriteriaType was CREATURE_TYPE_RACIAL_TYPE
// -> REPUTATION_TYPE_* if nFirstCriteriaType was CREATURE_TYPE_REPUTATION
// For example, to get the nearest PC, use
// (CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC)
// - lLocation: We're trying to find the creature of the specified type that is
// nearest to lLocation
// - nNth: We don't have to find the first nearest: we can find the Nth nearest....
// - nSecondCriteriaType: This is used in the same way as nFirstCriteriaType to
// further specify the type of creature that we are looking for.
// - nSecondCriteriaValue: This is used in the same way as nFirstCriteriaValue
// to further specify the type of creature that we are looking for.
// - nThirdCriteriaType: This is used in the same way as nFirstCriteriaType to
// further specify the type of creature that we are looking for.
// - nThirdCriteriaValue: This is used in the same way as nFirstCriteriaValue to
// further specify the type of creature that we are looking for.
// * Return value on error: OBJECT_INVALID
object GetNearestCreatureToLocation(int nFirstCriteriaType, int nFirstCriteriaValue, location lLocation, int nNth=1, int nSecondCriteriaType=-1, int nSecondCriteriaValue=-1, int nThirdCriteriaType=-1, int nThirdCriteriaValue=-1 );
// Get the Nth object nearest to oTarget that is of the specified type.
// - nObjectType: OBJECT_TYPE_*
// - oTarget
// - nNth
// * Return value on error: OBJECT_INVALID
object GetNearestObject(int nObjectType=OBJECT_TYPE_ALL, object oTarget=OBJECT_SELF, int nNth=1);
// Get the nNth object nearest to lLocation that is of the specified type.
// - nObjectType: OBJECT_TYPE_*
// - lLocation
// - nNth
// * Return value on error: OBJECT_INVALID
object GetNearestObjectToLocation(int nObjectType, location lLocation, int nNth=1);
// Get the nth Object nearest to oTarget that has sTag as its tag.
// * Return value on error: OBJECT_INVALID
object GetNearestObjectByTag(string sTag, object oTarget=OBJECT_SELF, int nNth=1);
// Convert nInteger into a floating point number.
float IntToFloat(int nInteger);
// Convert fFloat into the nearest integer.
int FloatToInt(float fFloat);
// Convert sNumber into an integer.
int StringToInt(string sNumber);
// Convert sNumber into a floating point number.
float StringToFloat(string sNumber);
// Cast spell nSpell at lTargetLocation.
// - nSpell: SPELL_*
// - lTargetLocation
// - nMetaMagic: METAMAGIC_*
// - bCheat: If this is TRUE, then the executor of the action doesn't have to be
// able to cast the spell.
// - nProjectilePathType: PROJECTILE_PATH_TYPE_*
// - bInstantSpell: If this is TRUE, the spell is cast immediately; this allows
// the end-user to simulate
// a high-level magic user having lots of advance warning of impending trouble.
void ActionCastSpellAtLocation(int nSpell, location lTargetLocation, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE);
// * Returns TRUE if oSource considers oTarget as an enemy.
int GetIsEnemy(object oTarget, object oSource=OBJECT_SELF);
// * Returns TRUE if oSource considers oTarget as a friend.
int GetIsFriend(object oTarget, object oSource=OBJECT_SELF);
// * Returns TRUE if oSource considers oTarget as neutral.
int GetIsNeutral(object oTarget, object oSource=OBJECT_SELF);
// Get the PC that is involved in the conversation.
// * Returns OBJECT_INVALID on error.
object GetPCSpeaker();
// Get a string from the talk table using nStrRef.
string GetStringByStrRef(int nStrRef);
// Causes the creature to speak a translated string.
// - nStrRef: Reference of the string in the talk table
// - nTalkVolume: TALKVOLUME_*
void ActionSpeakStringByStrRef(int nStrRef, int nTalkVolume=TALKVOLUME_TALK);
// Destroy oObject (irrevocably).
// This will not work on modules and areas.
void DestroyObject(object oDestroy, float fDelay=0.0f);
// Get the module.
// * Return value on error: OBJECT_INVALID
object GetModule();
// Create an object of the specified type at lLocation.
// - nObjectType: OBJECT_TYPE_ITEM, OBJECT_TYPE_CREATURE, OBJECT_TYPE_PLACEABLE,
// OBJECT_TYPE_STORE
// - sTemplate
// - lLocation
// - bUseAppearAnimation
object CreateObject(int nObjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE);
// Create an event which triggers the "SpellCastAt" script
event EventSpellCastAt(object oCaster, int nSpell, int bHarmful=TRUE);
// This is for use in a "Spell Cast" script, it gets who cast the spell.
// The spell could have been cast by a creature, placeable or door.
// * Returns OBJECT_INVALID if the caller is not a creature, placeable or door.
object GetLastSpellCaster();
// This is for use in a "Spell Cast" script, it gets the ID of the spell that
// was cast.
int GetLastSpell();
// This is for use in a user-defined script, it gets the event number.
int GetUserDefinedEventNumber();
// This is for use in a Spell script, it gets the ID of the spell that is being
// cast (SPELL_*).
int GetSpellId();
// Generate a random name.
string RandomName();
// Create a Poison effect.
// - nPoisonType: POISON_*
effect EffectPoison(int nPoisonType);
// Create a Disease effect.
// - nDiseaseType: DISEASE_*
effect EffectDisease(int nDiseaseType);
// Create a Silence effect.
effect EffectSilence();
// Get the name of oObject.
string GetName(object oObject);
// Use this in a conversation script to get the person with whom you are conversing.
// * Returns OBJECT_INVALID if the caller is not a valid creature.
object GetLastSpeaker();
// Use this in an OnDialog script to start up the dialog tree.
// - sResRef: if this is not specified, the default dialog file will be used
// - oObjectToDialog: if this is not specified the person that triggered the
// event will be used
int BeginConversation(string sResRef="", object oObjectToDialog=OBJECT_INVALID);
// Use this in an OnPerception script to get the object that was perceived.
// * Returns OBJECT_INVALID if the caller is not a valid creature.
object GetLastPerceived();
// Use this in an OnPerception script to determine whether the object that was
// perceived was heard.
int GetLastPerceptionHeard();
// Use this in an OnPerception script to determine whether the object that was
// perceived has become inaudible.
int GetLastPerceptionInaudible();
// Use this in an OnPerception script to determine whether the object that was
// perceived was seen.
int GetLastPerceptionSeen();
// Use this in an OnClosed script to get the object that closed the door or placeable.
// * Returns OBJECT_INVALID if the caller is not a valid door or placeable.
object GetLastClosedBy();
// Use this in an OnPerception script to determine whether the object that was
// perceived has vanished.
int GetLastPerceptionVanished();
// Get the first object within oPersistentObject.
// - oPersistentObject
// - nResidentObjectType: OBJECT_TYPE_*
// - nPersistentZone: PERSISTENT_ZONE_ACTIVE. [This could also take the value
// PERSISTENT_ZONE_FOLLOW, but this is no longer used.]
// * Returns OBJECT_INVALID if no object is found.
object GetFirstInPersistentObject(object oPersistentObject=OBJECT_SELF, int nResidentObjectType=OBJECT_TYPE_CREATURE, int nPersistentZone=PERSISTENT_ZONE_ACTIVE);
// Get the next object within oPersistentObject.
// - oPersistentObject
// - nResidentObjectType: OBJECT_TYPE_*
// - nPersistentZone: PERSISTENT_ZONE_ACTIVE. [This could also take the value
// PERSISTENT_ZONE_FOLLOW, but this is no longer used.]
// * Returns OBJECT_INVALID if no object is found.
object GetNextInPersistentObject(object oPersistentObject=OBJECT_SELF, int nResidentObjectType=OBJECT_TYPE_CREATURE, int nPersistentZone=PERSISTENT_ZONE_ACTIVE);
// This returns the creator of oAreaOfEffectObject.
// * Returns OBJECT_INVALID if oAreaOfEffectObject is not a valid Area of Effect object.
object GetAreaOfEffectCreator(object oAreaOfEffectObject=OBJECT_SELF);
// Delete oObject's local integer variable sVarName
void DeleteLocalInt(object oObject, string sVarName);
// Delete oObject's local float variable sVarName
void DeleteLocalFloat(object oObject, string sVarName);
// Delete oObject's local string variable sVarName
void DeleteLocalString(object oObject, string sVarName);
// Delete oObject's local object variable sVarName
void DeleteLocalObject(object oObject, string sVarName);
// Delete oObject's local location variable sVarName
void DeleteLocalLocation(object oObject, string sVarName);
// Create a Haste effect.
effect EffectHaste();
// Create a Slow effect.
effect EffectSlow();
// Convert oObject into a hexadecimal string.
string ObjectToString(object oObject);
// Create an Immunity effect.
// - nImmunityType: IMMUNITY_TYPE_*
effect EffectImmunity(int nImmunityType);
// - oCreature
// - nImmunityType: IMMUNITY_TYPE_*
// - oVersus: if this is specified, then we also check for the race and
// alignment of oVersus
// * Returns TRUE if oCreature has immunity of type nImmunity versus oVersus.
int GetIsImmune(object oCreature, int nImmunityType, object oVersus=OBJECT_INVALID);
// Creates a Damage Immunity Increase effect.
// - nDamageType: DAMAGE_TYPE_*
// - nPercentImmunity
effect EffectDamageImmunityIncrease(int nDamageType, int nPercentImmunity);
// Determine whether oEncounter is active.
int GetEncounterActive(object oEncounter=OBJECT_SELF);
// Set oEncounter's active state to nNewValue.
// - nNewValue: TRUE/FALSE
// - oEncounter
void SetEncounterActive(int nNewValue, object oEncounter=OBJECT_SELF);
// Get the maximum number of times that oEncounter will spawn.
int GetEncounterSpawnsMax(object oEncounter=OBJECT_SELF);
// Set the maximum number of times that oEncounter can spawn
void SetEncounterSpawnsMax(int nNewValue, object oEncounter=OBJECT_SELF);
// Get the number of times that oEncounter has spawned so far
int GetEncounterSpawnsCurrent(object oEncounter=OBJECT_SELF);
// Set the number of times that oEncounter has spawned so far
void SetEncounterSpawnsCurrent(int nNewValue, object oEncounter=OBJECT_SELF);
// Use this in an OnItemAcquired script to get the item that was acquired.
// * Returns OBJECT_INVALID if the module is not valid.
object GetModuleItemAcquired();
// Use this in an OnItemAcquired script to get the creatre that previously
// possessed the item.
// * Returns OBJECT_INVALID if the item was picked up from the ground.
object GetModuleItemAcquiredFrom();
// Set the value for a custom token.
void SetCustomToken(int nCustomTokenNumber, string sTokenValue);
// Determine whether oCreature has nFeat, and nFeat is useable.
// - nFeat: FEAT_*
// - oCreature
int GetHasFeat(int nFeat, object oCreature=OBJECT_SELF);
// Determine whether oCreature has nSkill, and nSkill is useable.
// - nSkill: SKILL_*
// - oCreature
int GetHasSkill(int nSkill, object oCreature=OBJECT_SELF);
// Use nFeat on oTarget.
// - nFeat: FEAT_*
// - oTarget
void ActionUseFeat(int nFeat, object oTarget);
// Runs the action "UseSkill" on the current creature
// Use nSkill on oTarget.
// - nSkill: SKILL_*
// - oTarget
// - nSubSkill: SUBSKILL_*
// - oItemUsed: Item to use in conjunction with the skill
void ActionUseSkill(int nSkill, object oTarget, int nSubSkill=0, object oItemUsed=OBJECT_INVALID );
// Determine whether oSource sees oTarget.
int GetObjectSeen(object oTarget, object oSource=OBJECT_SELF);
// Determine whether oSource hears oTarget.
int GetObjectHeard(object oTarget, object oSource=OBJECT_SELF);
// Use this in an OnPlayerDeath module script to get the last player that died.
object GetLastPlayerDied();
// Use this in an OnItemLost script to get the item that was lost/dropped.
// * Returns OBJECT_INVALID if the module is not valid.
object GetModuleItemLost();
// Use this in an OnItemLost script to get the creature that lost the item.
// * Returns OBJECT_INVALID if the module is not valid.
object GetModuleItemLostBy();
// Do aActionToDo.
void ActionDoCommand(action aActionToDo);
// Conversation event.
event EventConversation();
// Set the difficulty level of oEncounter.
// - nEncounterDifficulty: ENCOUNTER_DIFFICULTY_*
// - oEncounter
void SetEncounterDifficulty(int nEncounterDifficulty, object oEncounter=OBJECT_SELF);
// Get the difficulty level of oEncounter.
int GetEncounterDifficulty(object oEncounter=OBJECT_SELF);
// Get the distance between lLocationA and lLocationB.
float GetDistanceBetweenLocations(location lLocationA, location lLocationB);
// Use this in spell scripts to get nDamage adjusted by oTarget's reflex and
// evasion saves.
// - nDamage
// - oTarget
// - nDC: Difficulty check
// - nSaveType: SAVING_THROW_TYPE_*
// - oSaveVersus
int GetReflexAdjustedDamage(int nDamage, object oTarget, int nDC, int nSaveType=SAVING_THROW_TYPE_NONE, object oSaveVersus=OBJECT_SELF);
// Play nAnimation immediately.
// - nAnimation: ANIMATION_*
// - fSpeed
// - fSeconds
void PlayAnimation(int nAnimation, float fSpeed=1.0, float fSeconds=0.0);
// Create a Spell Talent.
// - nSpell: SPELL_*
talent TalentSpell(int nSpell);
// Create a Feat Talent.
// - nFeat: FEAT_*
talent TalentFeat(int nFeat);
// Create a Skill Talent.
// - nSkill: SKILL_*
talent TalentSkill(int nSkill);
// Determine if oObject has effects originating from nSpell.
// - nSpell: SPELL_*
// - oObject
int GetHasSpellEffect(int nSpell, object oObject=OBJECT_SELF);
// Get the spell (SPELL_*) that applied eSpellEffect.
// * Returns -1 if eSpellEffect was applied outside a spell script.
int GetEffectSpellId(effect eSpellEffect);
// Determine whether oCreature has tTalent.
int GetCreatureHasTalent(talent tTalent, object oCreature=OBJECT_SELF);
// Get a random talent of oCreature, within nCategory.
// - nCategory: TALENT_CATEGORY_*
// - oCreature
talent GetCreatureTalentRandom(int nCategory, object oCreature=OBJECT_SELF);
// Get the best talent (i.e. closest to nCRMax without going over) of oCreature,
// within nCategory.
// - nCategory: TALENT_CATEGORY_*
// - nCRMax: Challenge Rating of the talent
// - oCreature
talent GetCreatureTalentBest(int nCategory, int nCRMax, object oCreature=OBJECT_SELF);
// Use tChosenTalent on oTarget.
void ActionUseTalentOnObject(talent tChosenTalent, object oTarget);
// Use tChosenTalent at lTargetLocation.
void ActionUseTalentAtLocation(talent tChosenTalent, location lTargetLocation);
// Get the gold piece value of oItem.
// * Returns 0 if oItem is not a valid item.
int GetGoldPieceValue(object oItem);
// * Returns TRUE if oCreature is of a playable racial type.
int GetIsPlayableRacialType(object oCreature);
// Jump to lDestination. The action is added to the TOP of the action queue.
void JumpToLocation(location lDestination);
// Create a Temporary Hitpoints effect.
// - nHitPoints: a positive integer
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nHitPoints < 0.
effect EffectTemporaryHitpoints(int nHitPoints);
// Get the number of ranks that oTarget has in nSkill.
// - nSkill: SKILL_*
// - oTarget
// * Returns -1 if oTarget doesn't have nSkill.
// * Returns 0 if nSkill is untrained.
int GetSkillRank(int nSkill, object oTarget=OBJECT_SELF);
// Get the attack target of oCreature.
// This only works when oCreature is in combat.
object GetAttackTarget(object oCreature=OBJECT_SELF);
// Get the attack type (SPECIAL_ATTACK_*) of oCreature's last attack.
// This only works when oCreature is in combat.
int GetLastAttackType(object oCreature=OBJECT_SELF);
// Get the attack mode (COMBAT_MODE_*) of oCreature's last attack.
// This only works when oCreature is in combat.
int GetLastAttackMode(object oCreature=OBJECT_SELF);
// Get the master of oAssociate.
object GetMaster(object oAssociate=OBJECT_SELF);
// * Returns TRUE if oCreature is in combat.
int GetIsInCombat(object oCreature=OBJECT_SELF);
// Get the last command (ASSOCIATE_COMMAND_*) issued to oAssociate.
int GetLastAssociateCommand(object oAssociate=OBJECT_SELF);
// Give nGP gold to oCreature.
void GiveGoldToCreature(object oCreature, int nGP);
// Set the destroyable status of the caller.
// - bDestroyable: If this is FALSE, the caller does not fade out on death, but
// sticks around as a corpse.
// - bRaiseable: If this is TRUE, the caller can be raised via resurrection.
// - bSelectableWhenDead: If this is TRUE, the caller is selectable after death.
void SetIsDestroyable(int bDestroyable, int bRaiseable=TRUE, int bSelectableWhenDead=FALSE);
// Set the locked state of oTarget, which can be a door or a placeable object.
void SetLocked(object oTarget, int bLocked);
// Get the locked state of oTarget, which can be a door or a placeable object.
int GetLocked(object oTarget);
// Use this in a trigger's OnClick event script to get the object that last
// clicked on it.
// This is identical to GetEnteringObject.
object GetClickingObject();
// Initialise oTarget to listen for the standard Associates commands.
void SetAssociateListenPatterns(object oTarget=OBJECT_SELF);
// Get the last weapon that oCreature used in an attack.
// * Returns OBJECT_INVALID if oCreature did not attack, or has no weapon equipped.
object GetLastWeaponUsed(object oCreature);
// Use oPlaceable.
void ActionInteractObject(object oPlaceable);
// Get the last object that used the placeable object that is calling this function.
// * Returns OBJECT_INVALID if it is called by something other than a placeable or
// a door.
object GetLastUsedBy();
// Returns the ability modifier for the specified ability
// Get oCreature's ability modifier for nAbility.
// - nAbility: ABILITY_*
// - oCreature
int GetAbilityModifier(int nAbility, object oCreature=OBJECT_SELF);
// Determined whether oItem has been identified.
int GetIdentified(object oItem);
// Set whether oItem has been identified.
void SetIdentified(object oItem, int bIdentified);
// Summon an Animal Companion
void SummonAnimalCompanion(object oMaster=OBJECT_SELF);
// Summon a Familiar
void SummonFamiliar(object oMaster=OBJECT_SELF);
// Get the last blocking door encountered by the caller of this function.
// * Returns OBJECT_INVALID if the caller is not a valid creature.
object GetBlockingDoor();
// - oTargetDoor
// - nDoorAction: DOOR_ACTION_*
// * Returns TRUE if nDoorAction can be performed on oTargetDoor.
int GetIsDoorActionPossible(object oTargetDoor, int nDoorAction);
// Perform nDoorAction on oTargetDoor.
void DoDoorAction(object oTargetDoor, int nDoorAction);
// Get the first item in oTarget's inventory (start to cycle through oTarget's
// inventory).
// * Returns OBJECT_INVALID if the caller is not a creature, item, placeable or store,
// or if no item is found.
object GetFirstItemInInventory(object oTarget=OBJECT_SELF);
// Get the next item in oTarget's inventory (continue to cycle through oTarget's
// inventory).
// * Returns OBJECT_INVALID if the caller is not a creature, item, placeable or store,
// or if no item is found.
object GetNextItemInInventory(object oTarget=OBJECT_SELF);
// A creature can have up to three classes. This function determines the
// creature's class (CLASS_TYPE_*) based on nClassPosition.
// - nClassPosition: 1, 2 or 3
// - oCreature
// * Returns CLASS_TYPE_INVALID if the oCreature does not have a class in
// nClassPosition (i.e. a single-class creature will only have a value in
// nClassLocation=1) or if oCreature is not a valid creature.
int GetClassByPosition(int nClassPosition, object oCreature=OBJECT_SELF);
// A creature can have up to three classes. This function determines the
// creature's class level based on nClass Position.
// - nClassPosition: 1, 2 or 3
// - oCreature
// * Returns 0 if oCreature does not have a class in nClassPosition
// (i.e. a single-class creature will only have a value in nClassLocation=1)
// or if oCreature is not a valid creature.
int GetLevelByPosition(int nClassPosition, object oCreature=OBJECT_SELF);
// Determine the levels that oCreature holds in nClassType.
// - nClassType: CLASS_TYPE_*
// - oCreature
int GetLevelByClass(int nClassType, object oCreature=OBJECT_SELF);
// Get the amount of damage of type nDamageType that has been dealt to the caller.
// - nDamageType: DAMAGE_TYPE_*
int GetDamageDealtByType(int nDamageType);
// Get the total amount of damage that has been dealt to the caller.
int GetTotalDamageDealt();
// Get the last object that damaged the caller.
// * Returns OBJECT_INVALID if the caller is not a valid object.
object GetLastDamager();
// Get the last object that disarmed the trap on the caller.
// * Returns OBJECT_INVALID if the caller is not a valid placeable, trigger or
// door.
object GetLastDisarmed();
// Get the last object that disturbed the inventory of the caller.
// * Returns OBJECT_INVALID if the caller is not a valid creature or placeable.
object GetLastDisturbed();
// Get the last object that locked the caller.
// * Returns OBJECT_INVALID if the caller is not a valid door or placeable.
object GetLastLocked();
// Get the last object that unlocked the caller.
// * Returns OBJECT_INVALID if the caller is not a valid door or placeable.
object GetLastUnlocked();
// Create a Skill Increase effect.
// - nSkill: SKILL_*
// - nValue
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nSkill is invalid.
effect EffectSkillIncrease(int nSkill, int nValue);
// Get the type of disturbance (INVENTORY_DISTURB_*) that caused the caller's
// OnInventoryDisturbed script to fire. This will only work for creatures and
// placeables.
int GetInventoryDisturbType();
// get the item that caused the caller's OnInventoryDisturbed script to fire.
// * Returns OBJECT_INVALID if the caller is not a valid object.
object GetInventoryDisturbItem();
// Get the henchman belonging to oMaster.
// * Return OBJECT_INVALID if oMaster does not have a henchman.
object GetHenchman(object oMaster=OBJECT_SELF);
// Set eEffect to be versus a specific alignment.
// - eEffect
// - nLawChaos: ALIGNMENT_LAWFUL/ALIGNMENT_CHAOTIC/ALIGNMENT_ALL
// - nGoodEvil: ALIGNMENT_GOOD/ALIGNMENT_EVIL/ALIGNMENT_ALL
effect VersusAlignmentEffect(effect eEffect, int nLawChaos=ALIGNMENT_ALL, int nGoodEvil=ALIGNMENT_ALL);
// Set eEffect to be versus nRacialType.
// - eEffect
// - nRacialType: RACIAL_TYPE_*
effect VersusRacialTypeEffect(effect eEffect, int nRacialType);
// Set eEffect to be versus traps.
effect VersusTrapEffect(effect eEffect);
// Get the gender of oCreature.
int GetGender(object oCreature);
// * Returns TRUE if tTalent is valid.
int GetIsTalentValid(talent tTalent);
// Causes the action subject to move away from lMoveAwayFrom.
void ActionMoveAwayFromLocation(location lMoveAwayFrom, int bRun=FALSE, float fMoveAwayRange=40.0f);
// Get the target that the caller attempted to attack - this should be used in
// conjunction with GetAttackTarget(). This value is set every time an attack is
// made, and is reset at the end of combat.
// * Returns OBJECT_INVALID if the caller is not a valid creature.
object GetAttemptedAttackTarget();
// Get the type (TALENT_TYPE_*) of tTalent.
int GetTypeFromTalent(talent tTalent);
// Get the ID of tTalent. This could be a SPELL_*, FEAT_* or SKILL_*.
int GetIdFromTalent(talent tTalent);
// Get the associate of type nAssociateType belonging to oMaster.
// - nAssociateType: ASSOCIATE_TYPE_*
// - nMaster
// * Returns OBJECT_INVALID if no such associate exists.
object GetAssociate(int nAssociateType, object oMaster=OBJECT_SELF);
// Add oHenchman as a henchman to oMaster
// If oHenchman is a player character or a DM, this will have no effect
void AddHenchman(object oMaster, object oHenchman=OBJECT_SELF);
// Remove oHenchman from the service of oMaster, returning them to their original faction.
void RemoveHenchman(object oMaster, object oHenchman=OBJECT_SELF);
// Add a journal quest entry to oCreature.
// - szPlotID: the plot identifier used in the toolset's Journal Editor
// - nState: the state of the plot as seen in the toolset's Journal Editor
// - oCreature
// - bAllPartyMembers: If this is TRUE, the entry will show up in the journal of
// everyone in the party
// - bAllPlayers: If this is TRUE, the entry will show up in the journal of
// everyone in the world
// - bAllowOverrideHigher: If this is TRUE, you can set the state to a lower
// number than the one it is currently on
void AddJournalQuestEntry(string szPlotID, int nState, object oCreature, int bAllPartyMembers=TRUE, int bAllPlayers=FALSE, int bAllowOverrideHigher=FALSE);
// Remove a journal quest entry from oCreature.
// - szPlotID: the plot identifier used in the toolset's Journal Editor
// - oCreature
// - bAllPartyMembers: If this is TRUE, the entry will be removed from the
// journal of everyone in the party
// - bAllPlayers: If this is TRUE, the entry will be removed from the journal of
// everyone in the world
void RemoveJournalQuestEntry(string szPlotID, object oCreature, int bAllPartyMembers=TRUE, int bAllPlayers=FALSE);
// Get the public part of the CD Key that oPlayer used when logging in.
string GetPCPublicCDKey(object oPlayer);
// Get the IP address from which oPlayer has connected.
string GetPCIPAddress(object oPlayer);
// Get the name of oPlayer.
string GetPCPlayerName(object oPlayer);
// Sets oPlayer and oTarget to like each other.
void SetPCLike(object oPlayer, object oTarget);
// Sets oPlayer and oTarget to dislike each other.
void SetPCDislike(object oPlayer, object oTarget);
// Send a server message (szMessage) to the oPlayer.
void SendMessageToPC(object oPlayer, string szMessage);
// Get the target at which the caller attempted to cast a spell.
// This value is set every time a spell is cast and is reset at the end of
// combat.
// * Returns OBJECT_INVALID if the caller is not a valid creature.
object GetAttemptedSpellTarget();
// Get the last creature that opened the caller.
// * Returns OBJECT_INVALID if the caller is not a valid door or placeable.
object GetLastOpenedBy();
// Determine whether oCreature has nSpell memorised.
// - nSpell: SPELL_*
// - oCreature
int GetHasSpell(int nSpell, object oCreature=OBJECT_SELF);
// Open oStore for oPC.
// - nBonusMarkUp is added to the stores default mark up percentage on items sold (-100 to 100)
// - nBonusMarkDown is added to the stores default mark down percentage on items bought (-100 to 100)
void OpenStore(object oStore, object oPC, int nBonusMarkUp=0, int nBonusMarkDown=0);
// Create a Turned effect.
effect EffectTurned();
// Get the first member of oMemberOfFaction's faction (start to cycle through
// oMemberOfFaction's faction).
// * Returns OBJECT_INVALID if oMemberOfFaction's faction is invalid.
object GetFirstFactionMember(object oMemberOfFaction, int bPCOnly=TRUE);
// Get the next member of oMemberOfFaction's faction (continue to cycle through
// oMemberOfFaction's faction).
// * Returns OBJECT_INVALID if oMemberOfFaction's faction is invalid.
object GetNextFactionMember(object oMemberOfFaction, int bPCOnly=TRUE);
// Force the action subject to move to lDestination.
void ActionForceMoveToLocation(location lDestination, int bRun=FALSE, float fTimeout=30.0f);
// Force the action subject to move to oMoveTo.
void ActionForceMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f, float fTimeout=30.0f);
// Get the experience assigned in the journal editor for szPlotID.
int GetJournalQuestExperience(string szPlotID);
// Jump to oToJumpTo (the action is added to the top of the action queue).
void JumpToObject(object oToJumpTo, int nWalkStraightLineToPoint=1);
// Set whether oMapPin is enabled.
// - oMapPin
// - nEnabled: 0=Off, 1=On
void SetMapPinEnabled(object oMapPin, int nEnabled);
// Create a Hit Point Change When Dying effect.
// - fHitPointChangePerRound: this can be positive or negative, but not zero.
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if fHitPointChangePerRound is 0.
effect EffectHitPointChangeWhenDying(float fHitPointChangePerRound);
// Spawn a GUI panel for the client that controls oPC.
// - oPC
// - nGUIPanel: GUI_PANEL_*
// * Nothing happens if oPC is not a player character or if an invalid value is
// used for nGUIPanel.
void PopUpGUIPanel(object oPC, int nGUIPanel);
// Clear all personal feelings that oSource has about oTarget.
void ClearPersonalReputation(object oTarget, object oSource=OBJECT_SELF);
// oSource will temporarily be friends towards oTarget.
// bDecays determines whether the personal reputation value decays over time
// fDurationInSeconds is the length of time that the temporary friendship lasts
// Make oSource into a temporary friend of oTarget using personal reputation.
// - oTarget
// - oSource
// - bDecays: If this is TRUE, the friendship decays over fDurationInSeconds;
// otherwise it is indefinite.
// - fDurationInSeconds: This is only used if bDecays is TRUE, it is how long
// the friendship lasts.
// Note: If bDecays is TRUE, the personal reputation amount decreases in size
// over fDurationInSeconds. Friendship will only be in effect as long as
// (faction reputation + total personal reputation) >= REPUTATION_TYPE_FRIEND.
void SetIsTemporaryFriend(object oTarget, object oSource=OBJECT_SELF, int bDecays=FALSE, float fDurationInSeconds=180.0f);
// Make oSource into a temporary enemy of oTarget using personal reputation.
// - oTarget
// - oSource
// - bDecays: If this is TRUE, the enmity decays over fDurationInSeconds;
// otherwise it is indefinite.
// - fDurationInSeconds: This is only used if bDecays is TRUE, it is how long
// the enmity lasts.
// Note: If bDecays is TRUE, the personal reputation amount decreases in size
// over fDurationInSeconds. Enmity will only be in effect as long as
// (faction reputation + total personal reputation) <= REPUTATION_TYPE_ENEMY.
void SetIsTemporaryEnemy(object oTarget, object oSource=OBJECT_SELF, int bDecays=FALSE, float fDurationInSeconds=180.0f);
// Make oSource temporarily neutral to oTarget using personal reputation.
// - oTarget
// - oSource
// - bDecays: If this is TRUE, the neutrality decays over fDurationInSeconds;
// otherwise it is indefinite.
// - fDurationInSeconds: This is only used if bDecays is TRUE, it is how long
// the neutrality lasts.
// Note: If bDecays is TRUE, the personal reputation amount decreases in size
// over fDurationInSeconds. Neutrality will only be in effect as long as
// (faction reputation + total personal reputation) > REPUTATION_TYPE_ENEMY and
// (faction reputation + total personal reputation) < REPUTATION_TYPE_FRIEND.
void SetIsTemporaryNeutral(object oTarget, object oSource=OBJECT_SELF, int bDecays=FALSE, float fDurationInSeconds=180.0f);
// Gives nXpAmount to oCreature.
void GiveXPToCreature(object oCreature, int nXpAmount);
// Sets oCreature's experience to nXpAmount.
void SetXP(object oCreature, int nXpAmount);
// Get oCreature's experience.
int GetXP(object oCreature);
// Convert nInteger to hex, returning the hex value as a string.
// * Return value has the format "0x????????" where each ? will be a hex digit
// (8 digits in total).
string IntToHexString(int nInteger);
// Get the base item type (BASE_ITEM_*) of oItem.
// * Returns BASE_ITEM_INVALID if oItem is an invalid item.
int GetBaseItemType(object oItem);
// Determines whether oItem has nProperty.
// - oItem
// - nProperty: ITEM_PROPERTY_*
// * Returns FALSE if oItem is not a valid item, or if oItem does not have
// nProperty.
int GetItemHasItemProperty(object oItem, int nProperty);
// The creature will equip the melee weapon in its possession that can do the
// most damage. If no valid melee weapon is found, it will equip the most
// damaging range weapon. This function should only ever be called in the
// EndOfCombatRound scripts, because otherwise it would have to stop the combat
// round to run simulation.
// - oVersus: You can try to get the most damaging weapon against oVersus
// - bOffHand
void ActionEquipMostDamagingMelee(object oVersus=OBJECT_INVALID, int bOffHand=FALSE);
// The creature will equip the range weapon in its possession that can do the
// most damage.
// If no valid range weapon can be found, it will equip the most damaging melee
// weapon.
// - oVersus: You can try to get the most damaging weapon against oVersus
void ActionEquipMostDamagingRanged(object oVersus=OBJECT_INVALID);
// Get the Armour Class of oItem.
// * Return 0 if the oItem is not a valid item, or if oItem has no armour value.
int GetItemACValue(object oItem);
// The creature will rest.
void ActionRest();
// Expose the entire map of oArea to oPlayer.
void ExploreAreaForPlayer(object oArea, object oPlayer);
// The creature will equip the armour in its possession that has the highest
// armour class.
void ActionEquipMostEffectiveArmor();
// * Returns TRUE if it is currently day.
int GetIsDay();
// * Returns TRUE if it is currently night.
int GetIsNight();
// * Returns TRUE if it is currently dawn.
int GetIsDawn();
// * Returns TRUE if it is currently dusk.
int GetIsDusk();
// * Returns TRUE if oCreature was spawned from an encounter.
int GetIsEncounterCreature(object oCreature=OBJECT_SELF);
// Use this in an OnPlayerDying module script to get the last player who is dying.
object GetLastPlayerDying();
// Get the starting location of the module.
location GetStartingLocation();
// Make oCreatureToChange join one of the standard factions.
// ** This will only work on an NPC **
// - nStandardFaction: STANDARD_FACTION_*
void ChangeToStandardFaction(object oCreatureToChange, int nStandardFaction);
// Play oSound.
void SoundObjectPlay(object oSound);
// Stop playing oSound.
void SoundObjectStop(object oSound);
// Set the volume of oSound.
// - oSound
// - nVolume: 0-127
void SoundObjectSetVolume(object oSound, int nVolume);
// Set the position of oSound.
void SoundObjectSetPosition(object oSound, vector vPosition);
// Immediately speak a conversation one-liner.
// - sDialogResRef
// - oTokenTarget: This must be specified if there are creature-specific tokens
// in the string.
void SpeakOneLinerConversation(string sDialogResRef="", object oTokenTarget=OBJECT_TYPE_INVALID);
// Get the amount of gold possessed by oTarget.
int GetGold(object oTarget=OBJECT_SELF);
// Use this in an OnRespawnButtonPressed module script to get the object id of
// the player who last pressed the respawn button.
object GetLastRespawnButtonPresser();
// * Returns TRUE if oCreature is controlled by the Dungeon Master.
int GetIsDM(object oCreature);
// Play a voice chat.
// - nVoiceChatID: VOICE_CHAT_*
// - oTarget
void PlayVoiceChat(int nVoiceChatID, object oTarget=OBJECT_SELF);
// * Returns TRUE if the weapon equipped is capable of damaging oVersus.
int GetIsWeaponEffective(object oVersus=OBJECT_INVALID, int bOffHand=FALSE);
// Use this in a SpellCast script to determine whether the spell was considered
// harmful.
// * Returns TRUE if the last spell cast was harmful.
int GetLastSpellHarmful();
// Activate oItem.
event EventActivateItem(object oItem, location lTarget, object oTarget=OBJECT_INVALID);
// Play the background music for oArea.
void MusicBackgroundPlay(object oArea);
// Stop the background music for oArea.
void MusicBackgroundStop(object oArea);
// Set the delay for the background music for oArea.
// - oArea
// - nDelay: delay in milliseconds
void MusicBackgroundSetDelay(object oArea, int nDelay);
// Change the background day track for oArea to nTrack.
// - oArea
// - nTrack
void MusicBackgroundChangeDay(object oArea, int nTrack);
// Change the background night track for oArea to nTrack.
// - oArea
// - nTrack
void MusicBackgroundChangeNight(object oArea, int nTrack);
// Play the battle music for oArea.
void MusicBattlePlay(object oArea);
// Stop the battle music for oArea.
void MusicBattleStop(object oArea);
// Change the battle track for oArea.
// - oArea
// - nTrack
void MusicBattleChange(object oArea, int nTrack);
// Play the ambient sound for oArea.
void AmbientSoundPlay(object oArea);
// Stop the ambient sound for oArea.
void AmbientSoundStop(object oArea);
// Change the ambient day track for oArea to nTrack.
// - oArea
// - nTrack
void AmbientSoundChangeDay(object oArea, int nTrack);
// Change the ambient night track for oArea to nTrack.
// - oArea
// - nTrack
void AmbientSoundChangeNight(object oArea, int nTrack);
// Get the object that killed the caller.
object GetLastKiller();
// Use this in a spell script to get the item used to cast the spell.
object GetSpellCastItem();
// Use this in an OnItemActivated module script to get the item that was activated.
object GetItemActivated();
// Use this in an OnItemActivated module script to get the creature that
// activated the item.
object GetItemActivator();
// Use this in an OnItemActivated module script to get the location of the item's
// target.
location GetItemActivatedTargetLocation();
// Use this in an OnItemActivated module script to get the item's target.
object GetItemActivatedTarget();
// * Returns TRUE if oObject (which is a placeable or a door) is currently open.
int GetIsOpen(object oObject);
// Take nAmount of gold from oCreatureToTakeFrom.
// - nAmount
// - oCreatureToTakeFrom: If this is not a valid creature, nothing will happen.
// - bDestroy: If this is TRUE, the caller will not get the gold. Instead, the
// gold will be destroyed and will vanish from the game.
void TakeGoldFromCreature(int nAmount, object oCreatureToTakeFrom, int bDestroy=FALSE);
// Determine whether oObject is in conversation.
int IsInConversation(object oObject);
// Create an Ability Decrease effect.
// - nAbility: ABILITY_*
// - nModifyBy: This is the amount by which to decrement the ability
effect EffectAbilityDecrease(int nAbility, int nModifyBy);
// Create an Attack Decrease effect.
// - nPenalty
// - nModifierType: ATTACK_BONUS_*
effect EffectAttackDecrease(int nPenalty, int nModifierType=ATTACK_BONUS_MISC);
// Create a Damage Decrease effect.
// - nPenalty
// - nDamageType: DAMAGE_TYPE_*
effect EffectDamageDecrease(int nPenalty, int nDamageType=DAMAGE_TYPE_MAGICAL);
// Create a Damage Immunity Decrease effect.
// - nDamageType: DAMAGE_TYPE_*
// - nPercentImmunity
effect EffectDamageImmunityDecrease(int nDamageType, int nPercentImmunity);
// Create an AC Decrease effect.
// - nValue
// - nModifyType: AC_*
// - nDamageType: DAMAGE_TYPE_*
// * Default value for nDamageType should only ever be used in this function prototype.
effect EffectACDecrease(int nValue, int nModifyType=AC_DODGE_BONUS, int nDamageType=AC_VS_DAMAGE_TYPE_ALL);
// Create a Movement Speed Decrease effect.
// - nPercentChange
effect EffectMovementSpeedDecrease(int nPercentChange);
// Create a Saving Throw Decrease effect.
// - nSave
// - nValue
// - nSaveType: SAVING_THROW_TYPE_*
effect EffectSavingThrowDecrease(int nSave, int nValue, int nSaveType=SAVING_THROW_TYPE_ALL);
// Create a Skill Decrease effect.
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nSkill is invalid.
effect EffectSkillDecrease(int nSkill, int nValue);
// Create a Spell Resistance Decrease effect.
effect EffectSpellResistanceDecrease(int nValue);
// Determine whether oTarget is a plot object.
int GetPlotFlag(object oTarget=OBJECT_SELF);
// Set oTarget's plot object status.
void SetPlotFlag(object oTarget, int nPlotFlag);
// Create an Invisibility effect.
// - nInvisibilityType: INVISIBILITY_TYPE_*
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nInvisibilityType
// is invalid.
effect EffectInvisibility(int nInvisibilityType);
// Create a Concealment effect.
// - nPercentage: 1-100 inclusive
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nPercentage < 1 or
// nPercentage > 100.
effect EffectConcealment(int nPercentage);
// Create a Darkness effect.
effect EffectDarkness();
// Create a Dispel Magic All effect.
effect EffectDispelMagicAll(int nCasterLevel);
// Create an Ultravision effect.
effect EffectUltravision();
// Create a Negative Level effect.
// - nNumLevels: the number of negative levels to apply.
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nNumLevels > 100.
effect EffectNegativeLevel(int nNumLevels);
// Create a Polymorph effect.
effect EffectPolymorph(int nPolymorphSelection);
// Create a Sanctuary effect.
// - nDifficultyClass: must be a non-zero, positive number
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nDifficultyClass <= 0.
effect EffectSanctuary(int nDifficultyClass);
// Create a True Seeing effect.
effect EffectTrueSeeing();
// Create a See Invisible effect.
effect EffectSeeInvisible();
// Create a Time Stop effect.
effect EffectTimeStop();
// Create a Blindness effect.
effect EffectBlindness();
// Determine whether oSource has a friendly reaction towards oTarget, depending
// on the reputation, PVP setting and (if both oSource and oTarget are PCs),
// oSource's Like/Dislike setting for oTarget.
// Note: If you just want to know how two objects feel about each other in terms
// of faction and personal reputation, use GetIsFriend() instead.
// * Returns TRUE if oSource has a friendly reaction towards oTarget
int GetIsReactionTypeFriendly(object oTarget, object oSource=OBJECT_SELF);
// Determine whether oSource has a neutral reaction towards oTarget, depending
// on the reputation, PVP setting and (if both oSource and oTarget are PCs),
// oSource's Like/Dislike setting for oTarget.
// Note: If you just want to know how two objects feel about each other in terms
// of faction and personal reputation, use GetIsNeutral() instead.
// * Returns TRUE if oSource has a neutral reaction towards oTarget
int GetIsReactionTypeNeutral(object oTarget, object oSource=OBJECT_SELF);
// Determine whether oSource has a Hostile reaction towards oTarget, depending
// on the reputation, PVP setting and (if both oSource and oTarget are PCs),
// oSource's Like/Dislike setting for oTarget.
// Note: If you just want to know how two objects feel about each other in terms
// of faction and personal reputation, use GetIsEnemy() instead.
// * Returns TRUE if oSource has a hostile reaction towards oTarget
int GetIsReactionTypeHostile(object oTarget, object oSource=OBJECT_SELF);
// Create a Spell Level Absorption effect.
// - nMaxSpellLevelAbsorbed: maximum spell level that will be absorbed by the
// effect
// - nTotalSpellLevelsAbsorbed: maximum number of spell levels that will be
// absorbed by the effect
// - nSpellSchool: SPELL_SCHOOL_*
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if:
// nMaxSpellLevelAbsorbed is not between -1 and 9 inclusive, or nSpellSchool
// is invalid.
effect EffectSpellLevelAbsorption(int nMaxSpellLevelAbsorbed, int nTotalSpellLevelsAbsorbed=0, int nSpellSchool=SPELL_SCHOOL_GENERAL );
// Create a Dispel Magic Best effect.
effect EffectDispelMagicBest(int nCasterLevel);
// Try to send oTarget to a new server defined by sIPaddress.
// - oTarget
// - sIPaddress: this can be numerical "192.168.0.84" or alphanumeric
// "www.bioware.com". It can also contain a port "192.168.0.84:5121" or
// "www.bioware.com:5121"; if the port is not specified, it will default to
// 5121.
// - sPassword: login password for the destination server
// - sWaypointTag: if this is set, after portalling the character will be moved
// to this waypoint if it exists
// - bSeamless: if this is set, the client wil not be prompted with the
// information window telling them about the server, and they will not be
// allowed to save a copy of their character if they are using a local vault
// character.
void ActivatePortal(object oTarget, string sIPaddress="", string sPassword="", string sWaypointTag="", int bSeemless=FALSE);
// Get the number of stacked items that oItem comprises.
int GetNumStackedItems(object oItem);
// Use this on an NPC to cause all creatures within a 10-metre radius to stop
// what they are doing and sets the NPC's enemies within this range to be
// neutral towards the NPC for roughly 3 minutes. If this command is run on a PC
// or an object that is not a creature, nothing will happen.
void SurrenderToEnemies();
// Create a Miss Chance effect.
// - nPercentage: 1-100 inclusive
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nPercentage < 1 or
// nPercentage > 100.
effect EffectMissChance(int nPercentage);
// Get the number of Hitdice worth of Turn Resistance that oUndead may have.
// This will only work on undead creatures.
int GetTurnResistanceHD(object oUndead=OBJECT_SELF);
// Get the size (CREATURE_SIZE_*) of oCreature.
int GetCreatureSize(object oCreature);
// Create a Disappear/Appear effect.
// The object will "fly away" for the duration of the effect and will reappear
// at lLocation.
effect EffectDisappearAppear(location lLocation);
// Create a Disappear effect to make the object "fly away" and then destroy
// itself.
effect EffectDisappear();
// Create an Appear effect to make the object "fly in".
effect EffectAppear();
// The action subject will unlock oTarget, which can be a door or a placeable
// object.
void ActionUnlockObject(object oTarget);
// The action subject will lock oTarget, which can be a door or a placeable
// object.
void ActionLockObject(object oTarget);
// Create a Modify Attacks effect to add attacks.
// - nAttacks: maximum is 5, even with the effect stacked
// * Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nAttacks > 5.
effect EffectModifyAttacks(int nAttacks);
// Get the last trap detected by oTarget.
// * Return value on error: OBJECT_INVALID
object GetLastTrapDetected(object oTarget=OBJECT_SELF);
// Create a Damage Shield effect which does (nDamageAmount + nRandomAmount)
// damage to any melee attacker on a successful attack of damage type nDamageType.
// - nDamageAmount: an integer value
// - nRandomAmount: DAMAGE_BONUS_*
// - nDamageType: DAMAGE_TYPE_*
effect EffectDamageShield(int nDamageAmount, int nRandomAmount, int nDamageType);
// Get the trap nearest to oTarget.
// Note : "trap objects" are actually any trigger, placeable or door that is
// trapped in oTarget's area.
// - oTarget
// - nTrapDetected: if this is TRUE, the trap returned has to have been detected
// by oTarget.
object GetNearestTrapToObject(object oTarget=OBJECT_SELF, int nTrapDetected=TRUE);
// Get the name of oCreature's deity.
// * Returns "" if oCreature is invalid (or if the deity name is blank for
// oCreature).
string GetDeity(object oCreature);
// Get the name of oCreature's sub race.
// * Returns "" if oCreature is invalid (or if sub race is blank for oCreature).
string GetSubRace(object oTarget);
// Get oTarget's base fortitude saving throw value (this will only work for
// creatures, doors, and placeables).
// * Returns 0 if oTarget is invalid.
int GetFortitudeSavingThrow(object oTarget);
// Get oTarget's base will saving throw value (this will only work for creatures,
// doors, and placeables).
// * Returns 0 if oTarget is invalid.
int GetWillSavingThrow(object oTarget);
// Get oTarget's base reflex saving throw value (this will only work for
// creatures, doors, and placeables).
// * Returns 0 if oTarget is invalid.
int GetReflexSavingThrow(object oTarget);
// Get oCreature's challenge rating.
// * Returns 0.0 if oCreature is invalid.
float GetChallengeRating(object oCreature);
// Get oCreature's age.
// * Returns 0 if oCreature is invalid.
int GetAge(object oCreature);
// Get oCreature's movement rate.
// * Returns 0 if oCreature is invalid.
int GetMovementRate(object oCreature);
// Get oCreature's animal companion creature type
// (ANIMAL_COMPANION_CREATURE_TYPE_*).
// * Returns ANIMAL_COMPANION_CREATURE_TYPE_NONE if oCreature is invalid or does
// not currently have an animal companion.
int GetAnimalCompanionCreatureType(object oCreature);
// Get oCreature's familiar creature type (FAMILIAR_CREATURE_TYPE_*).
// * Returns FAMILIAR_CREATURE_TYPE_NONE if oCreature is invalid or does not
// currently have a familiar.
int GetFamiliarCreatureType(object oCreature);
// Get oCreature's animal companion's name.
// * Returns "" if oCreature is invalid, does not currently
// have an animal companion or if the animal companion's name is blank.
string GetAnimalCompanionName(object oTarget);
// Get oCreature's familiar's name.
// * Returns "" if oCreature is invalid, does not currently
// have a familiar or if the familiar's name is blank.
string GetFamiliarName(object oCreature);
// The action subject will fake casting a spell at oTarget; the conjure and cast
// animations and visuals will occur, nothing else.
// - nSpell
// - oTarget
// - nProjectilePathType: PROJECTILE_PATH_TYPE_*
void ActionCastFakeSpellAtObject(int nSpell, object oTarget, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT);
// The action subject will fake casting a spell at lLocation; the conjure and
// cast animations and visuals will occur, nothing else.
// - nSpell
// - lTarget
// - nProjectilePathType: PROJECTILE_PATH_TYPE_*
void ActionCastFakeSpellAtLocation(int nSpell, location lTarget, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT);
// Removes oAssociate from the service of oMaster, returning them to their
// original faction.
void RemoveSummonedAssociate(object oMaster, object oAssociate=OBJECT_SELF);
// Set the camera mode for oPlayer.
// - oPlayer
// - nCameraMode: CAMERA_MODE_*
// * If oPlayer is not player-controlled or nCameraMode is invalid, nothing
// happens.
void SetCameraMode(object oPlayer, int nCameraMode);
// * Returns TRUE if oCreature is resting.
int GetIsResting(object oCreature=OBJECT_SELF);
// Get the last PC that has rested in the module.
object GetLastPCRested();
// Set the weather for oTarget.
// - oTarget: if this is GetModule(), all outdoor areas will be modified by the
// weather constant. If it is an area, oTarget will play the weather only if
// it is an outdoor area.
// - nWeather: WEATHER_*
// -> WEATHER_USER_AREA_SETTINGS will set the area back to random weather.
// -> WEATHER_CLEAR, WEATHER_RAIN, WEATHER_SNOW will make the weather go to
// the appropriate precipitation *without stopping*.
void SetWeather(object oTarget, int nWeather);
// Determine the type (REST_EVENTTYPE_REST_*) of the last rest event (as
// returned from the OnPCRested module event).
int GetLastRestEventType();
// Shut down the currently loaded module and start a new one (moving all
// currently-connected players to the starting point.
void StartNewModule(string sModuleName);
// Create a Swarm effect.
// - nLooping: If this is TRUE, for the duration of the effect when one creature
// created by this effect dies, the next one in the list will be created. If
// the last creature in the list dies, we loop back to the beginning and
// sCreatureTemplate1 will be created, and so on...
// - sCreatureTemplate1
// - sCreatureTemplate2
// - sCreatureTemplate3
// - sCreatureTemplate4
effect EffectSwarm(int nLooping, string sCreatureTemplate1, string sCreatureTemplate2="", string sCreatureTemplate3="", string sCreatureTemplate4="");
// * Returns TRUE if oItem is a ranged weapon.
int GetWeaponRanged(object oItem);
// Only if we are in a single player game, AutoSave the game.
void DoSinglePlayerAutoSave();
// Get the game difficulty (GAME_DIFFICULTY_*).
int GetGameDifficulty();
// Set the main light color on the tile at lTileLocation.
// - lTileLocation: the vector part of this is the tile grid (x,y) coordinate of
// the tile.
// - nMainLight1Color: TILE_MAIN_LIGHT_COLOR_*
// - nMainLight2Color: TILE_MAIN_LIGHT_COLOR_*
void SetTileMainLightColor(location lTileLocation, int nMainLight1Color, int nMainLight2Color);
// Set the source light color on the tile at lTileLocation.
// - lTileLocation: the vector part of this is the tile grid (x,y) coordinate of
// the tile.
// - nSourceLight1Color: TILE_SOURCE_LIGHT_COLOR_*
// - nSourceLight2Color: TILE_SOURCE_LIGHT_COLOR_*
void SetTileSourceLightColor(location lTileLocation, int nSourceLight1Color, int nSourceLight2Color);
// All clients in oArea will recompute the static lighting.
// This can be used to update the lighting after changing any tile lights or if
// placeables with lights have been added/deleted.
void RecomputeStaticLighting(object oArea);
// Get the color (TILE_MAIN_LIGHT_COLOR_*) for the main light 1 of the tile at
// lTile.
// - lTile: the vector part of this is the tile grid (x,y) coordinate of the tile.
int GetTileMainLight1Color(location lTile);
// Get the color (TILE_MAIN_LIGHT_COLOR_*) for the main light 2 of the tile at
// lTile.
// - lTile: the vector part of this is the tile grid (x,y) coordinate of the
// tile.
int GetTileMainLight2Color(location lTile);
// Get the color (TILE_SOURCE_LIGHT_COLOR_*) for the source light 1 of the tile
// at lTile.
// - lTile: the vector part of this is the tile grid (x,y) coordinate of the
// tile.
int GetTileSourceLight1Color(location lTile);
// Get the color (TILE_SOURCE_LIGHT_COLOR_*) for the source light 2 of the tile
// at lTile.
// - lTile: the vector part of this is the tile grid (x,y) coordinate of the
// tile.
int GetTileSourceLight2Color(location lTile);
// Make the corresponding panel button on the player's client start or stop
// flashing.
// - oPlayer
// - nButton: PANEL_BUTTON_*
// - nEnableFlash: if this is TRUE nButton will start flashing. It if is FALSE,
// nButton will stop flashing.
void SetPanelButtonFlash(object oPlayer, int nButton, int nEnableFlash);
// Get the current action (ACTION_*) that oObject is executing.
int GetCurrentAction(object oObject=OBJECT_SELF);
// Set how nStandardFaction feels about oCreature.
// - nStandardFaction: STANDARD_FACTION_*
// - nNewReputation: 0-100 (inclusive)
// - oCreature
void SetStandardFactionReputation(int nStandardFaction, int nNewReputation, object oCreature=OBJECT_SELF);
// Find out how nStandardFaction feels about oCreature.
// - nStandardFaction: STANDARD_FACTION_*
// - oCreature
int GetStandardFactionReputation(int nStandardFaction, object oCreature=OBJECT_SELF);
// Display floaty text above the specified creature.
// The text will also appear in the chat buffer of each player that receives the
// floaty text.
// - nStrRefToDisplay: String ref (therefore text is translated)
// - oCreatureToFloatAbove
// - bBroadcastToFaction: If this is TRUE then only creatures in the same faction
// as oCreatureToFloatAbove
// will see the floaty text, and only if they are within range (30 metres).
void FloatingTextStrRefOnCreature(int nStrRefToDisplay, object oCreatureToFloatAbove, int bBroadcastToFaction=TRUE);
// Display floaty text above the specified creature.
// The text will also appear in the chat buffer of each player that receives the
// floaty text.
// - sStringToDisplay: String
// - oCreatureToFloatAbove
// - bBroadcastToFaction: If this is TRUE then only creatures in the same faction
// as oCreatureToFloatAbove
// will see the floaty text, and only if they are within range (30 metres).
void FloatingTextStringOnCreature(string sStringToDisplay, object oCreatureToFloatAbove, int bBroadcastToFaction=TRUE);
// - oTrapObject: a placeable, door or trigger
// * Returns TRUE if oTrapObject is disarmable.
int GetTrapDisarmable(object oTrapObject);
// - oTrapObject: a placeable, door or trigger
// * Returns TRUE if oTrapObject is detectable.
int GetTrapDetectable(object oTrapObject);
// - oTrapObject: a placeable, door or trigger
// - oCreature
// * Returns TRUE if oCreature has detected oTrapObject
int GetTrapDetectedBy(object oTrapObject, object oCreature);
// - oTrapObject: a placeable, door or trigger
// * Returns TRUE if oTrapObject has been flagged as visible to all creatures.
int GetTrapFlagged(object oTrapObject);
// Get the trap base type (TRAP_BASE_TYPE_*) of oTrapObject.
// - oTrapObject: a placeable, door or trigger
int GetTrapBaseType(object oTrapObject);
// - oTrapObject: a placeable, door or trigger
// * Returns TRUE if oTrapObject is one-shot (i.e. it does not reset itself
// after firing.
int GetTrapOneShot(object oTrapObject);
// Get the creator of oTrapObject, the creature that set the trap.
// - oTrapObject: a placeable, door or trigger
// * Returns OBJECT_INVALID if oTrapObject was created in the toolset.
object GetTrapCreator(object oTrapObject);
// Get the tag of the key that will disarm oTrapObject.
// - oTrapObject: a placeable, door or trigger
string GetTrapKeyTag(object oTrapObject);
// Get the DC for disarming oTrapObject.
// - oTrapObject: a placeable, door or trigger
int GetTrapDisarmDC(object oTrapObject);
// Get the DC for detecting oTrapObject.
// - oTrapObject: a placeable, door or trigger
int GetTrapDetectDC(object oTrapObject);
// * Returns TRUE if a specific key is required to open the lock on oObject.
int GetLockKeyRequired(object oObject);
// Get the tag of the key that will open the lock on oObject.
string GetLockKeyTag(object oObject);
// * Returns TRUE if the lock on oObject is lockable.
int GetLockLockable(object oObject);
// Get the DC for unlocking oObject.
int GetLockUnlockDC(object oObject);
// Get the DC for locking oObject.
int GetLockLockDC(object oObject);
// Get the last PC that levelled up.
object GetPCLevellingUp();
// - nFeat: FEAT_*
// - oObject
// * Returns TRUE if oObject has effects on it originating from nFeat.
int GetHasFeatEffect(int nFeat, object oObject=OBJECT_SELF);
// Set the status of the illumination for oPlaceable.
// - oPlaceable
// - bIlluminate: if this is TRUE, oPlaceable's illumination will be turned on.
// If this is FALSE, oPlaceable's illumination will be turned off.
// Note: You must call RecomputeStaticLighting() after calling this function in
// order for the changes to occur visually for the players.
// SetPlaceableIllumination() buffers the illumination changes, which are then
// sent out to the players once RecomputeStaticLighting() is called. As such,
// it is best to call SetPlaceableIllumination() for all the placeables you wish
// to set the illumination on, and then call RecomputeStaticLighting() once after
// all the placeable illumination has been set.
// * If oPlaceable is not a placeable object, or oPlaceable is a placeable that
// doesn't have a light, nothing will happen.
void SetPlaceableIllumination(object oPlaceable=OBJECT_SELF, int bIlluminate=TRUE);
// * Returns TRUE if the illumination for oPlaceable is on
int GetPlaceableIllumination(object oPlaceable=OBJECT_SELF);
// - oPlaceable
// - nPlaceableAction: PLACEABLE_ACTION_*
// * Returns TRUE if nPlacebleAction is valid for oPlaceable.
int GetIsPlaceableObjectActionPossible(object oPlaceable, int nPlaceableAction);
// The caller performs nPlaceableAction on oPlaceable.
// - oPlaceable
// - nPlaceableAction: PLACEABLE_ACTION_*
void DoPlaceableObjectAction(object oPlaceable, int nPlaceableAction);
// Get the first PC in the player list.
// This resets the position in the player list for GetNextPC().
object GetFirstPC();
// Get the next PC in the player list.
// This picks up where the last GetFirstPC() or GetNextPC() left off.
object GetNextPC();
// Set oDetector to have detected oTrap.
int SetTrapDetectedBy(object oTrap, object oDetector);
// Note: Only placeables, doors and triggers can be trapped.
// * Returns TRUE if oObject is trapped.
int GetIsTrapped(object oObject);
// Create a Turn Resistance Decrease effect.
// - nHitDice: a positive number representing the number of hit dice for the
/// decrease
effect EffectTurnResistanceDecrease(int nHitDice);
// Create a Turn Resistance Increase effect.
// - nHitDice: a positive number representing the number of hit dice for the
// increase
effect EffectTurnResistanceIncrease(int nHitDice);
// Spawn in the Death GUI.
// The default (as defined by BioWare) can be spawned in by PopUpGUIPanel, but
// if you want to turn off the "Respawn" or "Wait for Help" buttons, this is the
// function to use.
// - oPC
// - bRespawnButtonEnabled: if this is TRUE, the "Respawn" button will be enabled
// on the Death GUI.
// - bWaitForHelpButtonEnabled: if this is TRUE, the "Wait For Help" button will
// be enabled on the Death GUI.
// - nHelpStringReference
// - sHelpString
void PopUpDeathGUIPanel(object oPC, int bRespawnButtonEnabled=TRUE, int bWaitForHelpButtonEnabled=TRUE, int nHelpStringReference=0, string sHelpString="");
// Disable oTrap.
// - oTrap: a placeable, door or trigger.
void SetTrapDisabled(object oTrap);
// Get the last object that was sent as a GetLastAttacker(), GetLastDamager(),
// GetLastSpellCaster() (for a hostile spell), or GetLastDisturbed() (when a
// creature is pickpocketed).
// Note: Return values may only ever be:
// 1) A Creature
// 2) Plot Characters will never have this value set
// 3) Area of Effect Objects will return the AOE creator if they are registered
// as this value, otherwise they will return INVALID_OBJECT_ID
// 4) Traps will not return the creature that set the trap.
// 5) This value will never be overwritten by another non-creature object.
// 6) This value will never be a dead/destroyed creature
object GetLastHostileActor(object oVictim=OBJECT_SELF);
// Force all the characters of the players who are currently in the game to
// be exported to their respective directories i.e. LocalVault/ServerVault/ etc.
void ExportAllCharacters();
// Get the Day Track for oArea.
int MusicBackgroundGetDayTrack(object oArea);
// Get the Night Track for oArea.
int MusicBackgroundGetNightTrack(object oArea);
// Write sLogEntry as a timestamped entry into the log file
void WriteTimestampedLogEntry(string sLogEntry);
// Get the module's name in the language of the server that's running it.
// * If there is no entry for the language of the server, it will return an
// empty string
string GetModuleName();
// Get the leader of the faction of which oMemberOfFaction is a member.
// * Returns OBJECT_INVALID if oMemberOfFaction is not a valid creature.
object GetFactionLeader(object oMemberOfFaction);
// Sends szMessage to all the Dungeon Masters currently on the server.
void SendMessageToAllDMs(string szMessage);
// End the currently running game, play sEndMovie then return all players to the
// game's main menu.
void EndGame(string sEndMovie);
// Remove oPlayer from the server.
void BootPC(object oPlayer);
// Counterspell oCounterSpellTarget.
void ActionCounterSpell(object oCounterSpellTarget);
// Set the ambient day volume for oArea to nVolume.
// - oArea
// - nVolume: 0 - 100
void AmbientSoundSetDayVolume(object oArea, int nVolume);
// Set the ambient night volume for oArea to nVolume.
// - oArea
// - nVolume: 0 - 100
void AmbientSoundSetNightVolume(object oArea, int nVolume);
// Get the Battle Track for oArea.
int MusicBackgroundGetBattleTrack(object oArea);
// Determine whether oObject has an inventory.
// * Returns TRUE for creatures and stores, and checks to see if an item or placeable object is a container.
// * Returns FALSE for all other object types.
int GetHasInventory(object oObject);
// Get the duration (in seconds) of the sound attached to nStrRef
// * Returns 0.0f if no duration is stored or if no sound is attached
float GetStrRefSoundDuration(int nStrRef);
// Add oPC to oPartyLeader's party. This will only work on two PCs.
// - oPC: player to add to a party
// - oPartyLeader: player already in the party
void AddToParty(object oPC, object oPartyLeader);
// Remove oPC from their current party. This will only work on a PC.
// - oPC: removes this player from whatever party they're currently in.
void RemoveFromParty(object oPC);
// Returns the stealth mode of the specified creature.
// - oCreature
// * Returns a constant STEALTH_MODE_*
int GetStealthMode(object oCreature);
// Returns the detection mode of the specified creature.
// - oCreature
// * Returns a constant DETECT_MODE_*
int GetDetectMode(object oCreature);
// Reserved for future use.
int Reserved1(object o);
// Reserved for future use.
int Reserved2(object o);
// Reserved for future use.
void Reserved3();
// Reserved for future use.
int Reserved4();
// Decrement the remaining uses per day for this creature by one.
// - oCreature: creature to modify
// - nFeat: constant FEAT_*
void DecrementRemainingFeatUses(object oCreature, int nFeat);
// Decrement the remaining uses per day for this creature by one.
// - oCreature: creature to modify
// - nSpell: constant SPELL_*
void DecrementRemainingSpellUses(object oCreature, int nSpell);
// returns the template used to create this object (if appropriate)
// * returns an empty string when no template found
string GetResRef(object oObject);
// Reserved for future use
effect Reserved5();
// Reserved for future use
object Reserved6(object o, object oTargetInventory=OBJECT_INVALID);
// Reserved for future use
effect Reserved7();
// Return true if item can be dropped
// - oItem: item to query
int GetDroppableFlag(object oItem);
// Returns true if placeable object can be used
int GetUseableFlag(object oObject=OBJECT_SELF);
// Returns true if item is stolen
// - oItem: item to query
int GetStolenFlag(object oItem);
// Reserved for future use
void Reserved8(string sString1, string sString2, float fFloat, object oObject=OBJECT_INVALID);
// Reserved for future use
void Reserved9(string sString1, string sString2, int nInt, object oObject=OBJECT_INVALID);
// Reserved for future use
void Reserved10(string sString1, string sString2, vector vVector, object oObject=OBJECT_INVALID);
// Reserved for future use
void Reserved11(string sString1, string sString2, location locLocation, object oObject=OBJECT_INVALID);
// Reserved for future use
void Reserved12(string sString1, string sString2, string sString, object oObject=OBJECT_INVALID);
// Reserved for future use
void Reserved13(string sString);
// Reserved for future use
float Reserved14(string sString1, string sString2, object oObject=OBJECT_INVALID);
// Reserved for future use
int Reserved15(string sString1, string sString2, object oObject=OBJECT_INVALID);
// Reserved for future use
vector Reserved16(string sString1, string sString2, object oObject=OBJECT_INVALID);
// Reserved for future use
location Reserved17(string sString1, string sString2, object oObject=OBJECT_INVALID);
// Reserved for future use
string Reserved18(string sString1, string sString2, object oObject=OBJECT_INVALID);
// Duplicates the object specified by oSource.
// ONLY creatures and items can be specified.
// If an owner is specified and the object is an item, it will be put into their inventory
// If the object is a creature, they will be created at the location.
// If a new tag is specified, it will be assigned to the new object.
object CopyObject(object oSource, location locLocation, object oOwner = OBJECT_INVALID, string sNewTag = "");
// Reserved for future use
void Reserved19(string sString1, string sString2, object oObject=OBJECT_INVALID);
// Reserved for future use
int Reserved20(string sString1, string sString2, object oObject1, object oObject2=OBJECT_INVALID);
// Reserved for future use
object Reserved21(string sString1, string sString2, location locLocation, object oObject1 = OBJECT_INVALID, object oObject2=OBJECT_INVALID);
// Returns an effect that is guaranteed to dominate a creature
// Like EffectDominated but cannot be resisted
effect EffectCutsceneDominated();