//////////////////////////////////////////////////////// // // 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();