601 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			601 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
//------------------------------------------------------------------------------
 | 
						|
//   x2_inc_switches::   Interface for switching subsystem functionality
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
/*
 | 
						|
   This file provides a basic interface for switching different Hordes of
 | 
						|
   the Underdark subsystems on/off  and allows centralized access to certain
 | 
						|
   "expert"  functionality like overriding AI or Spellscripts.
 | 
						|
 | 
						|
   Changing any of these switches from their default position is considered
 | 
						|
   unsupported and done at your own risk - please do NOT send any bug reports
 | 
						|
   about problems caused by these switches.
 | 
						|
*/
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// Copyright (c) 2003 Bioware Corp. * Created By: Georg Zoeller * On: 2003-07-16
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
//                                    M O D U L E
 | 
						|
//-----------------------------------------------------------------------------
 | 
						|
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Force Use Magic Device Skillchecks, Default = FALSE except for GAME_DIFFICULTY_CORE_RULES+
 | 
						|
// * If switched to TRUE, a rogue has to succeed in a UMD check against DC 25+SpellLevel
 | 
						|
// * in order to use a scroll. See x2_pc_umdcheck.nss for details
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_ENABLE_UMD_SCROLLS    = "X2_SWITCH_ENABLE_UMD_SCROLLS";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Toggle on/off the Item Creation Feats, Default = O
 | 
						|
// * Disable the Item Creation Feats that come with Hordes of the Underdark for the
 | 
						|
// * module.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_DISABLE_ITEM_CREATION_FEATS    = "X2_SWITCH_DISABLE_ITEMCREATION_FEATS";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Toggle Area of Effect Spell behaviour
 | 
						|
// * If set to TRUE, AOE Spells will hurt NPCS that are neutral to the caster if they are
 | 
						|
// * caught in the effect
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_AOE_HURT_NEUTRAL_NPCS = "X0_G_ALLOWSPELLSTOHURT";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * For balancing reasons the crafting system will create 50 charges on a new wand
 | 
						|
// * instead it will create 10 + casterlevel charges. if you want to be "hard core rules compliant"
 | 
						|
// * 50 charges, enable thiis switch
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_ENABLE_CRAFT_WAND_50_CHARGES    = "X2_SWITCH_ENABLE_50_WAND_CHARGES";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Some epic spells, namely Hellball, do damage to the caster. We found this too confusing
 | 
						|
// * in testing, so it was disabled. You can reactivate using this flag
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_EPIC_SPELLS_HURT_CASTER = "X2_SWITCH_EPIC_SPELLS_HURT_CASTER";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------// * Deathless master touch is not supposed to affect creatures of size > large
 | 
						|
// * but we do not check this condition by default to balance the fact that the slain
 | 
						|
// * creature is not raised under the command of the pale master.
 | 
						|
// * by setting this switch to TRUE, the ability will no longer effect creatures of
 | 
						|
// * huge+ size.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_SPELL_CORERULES_DMASTERTOUCH = "X2_SWITCH_SPELL_CORERULE_DMTOUCH";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * By default, all characters can use the various poisons that can be found to poison their weapons if
 | 
						|
// * they win a Dex check. Activating this flag will restrict the use of poison to chars with the UsePoison
 | 
						|
// * feat only
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_RESTRICT_USE_POISON_TO_FEAT = "X2_SWITCH_RESTRICT_USE_POISON_FEAT";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Multiple Henchmen: By default, henchmen will never damage each other with AoE spells.
 | 
						|
// * By activating this switch, henchmen will be able to damage each other with AoE spells
 | 
						|
// * and potentially go on each other's throats.
 | 
						|
// * Warning: Activating this switch has the potential of introducing game breaking bugs. Do
 | 
						|
// *          not use on the official SoU campaign. Use at your own risk. Really, its dangerous!
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_ENABLE_MULTI_HENCH_AOE_DAMAGE = "X2_SWITCH_MULTI_HENCH_AOE_MADNESS";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Spell Targeting: Pre Hordes of the underdark, in hardcore mode, creatures would not hurt each other
 | 
						|
// * with their AOE spells if they were no PCs. Setting this switch to true, will activate the correct
 | 
						|
// * behaviour. Activating this on older modules can break things, unless you know what you are doing!
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_ENABLE_NPC_AOE_HURT_ALLIES = "X2_SWITCH_ENABLE_NPC_AOE_HURT_ALLIES";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * If set to TRUE, the Bebilith Ruin Armor ability is going to actually destroy
 | 
						|
// * the armor it hits. Would be very annoying for players...
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_ENABLE_BEBILITH_RUIN_ARMOR = "X2_SWITCH_BEBILITH_HARDCORE_RUIN_ARMOR";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Setting this switch to TRUE will make the Glyph of warding symbol disappear after 6 seconds, but
 | 
						|
// * the glyph will stay active....
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_ENABLE_INVISIBLE_GLYPH_OF_WARDING = "X2_SWITCH_GLYPH_OF_WARDING_INVISIBLE";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Setting this switch to TRUE will enable the allow NPCs running between waypoints using the WalkWaypoints
 | 
						|
// * function to cross areas, like they did in the original NWN. This was changed in 1.30 to use only
 | 
						|
// * waypoints in one area.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_ENABLE_CROSSAREA_WALKWAYPOINTS = "X2_SWITCH_CROSSAREA_WALKWAYPOINTS";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Setting this switch to TRUE will disable the glow of a newly found secret door
 | 
						|
// * used in some locations in XP2
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_DISABLE_SECRET_DOOR_FLASH = "X2_SWITCH_DISABLE_SECRET_DOOR_FLASH";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Setting this switch to TRUE will disable execution of tagbased scripts that are enabled
 | 
						|
// * by default when using the standard module events (x2_mod_def_*)
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS = "X2_SWITCH_ENABLE_TAGBASED_SCRIPTS";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Setting thsi switch to TRUE will enable the XP2 Wandering Monster System
 | 
						|
// * for this module (if you are using the default rest script and you have set
 | 
						|
// * up the correct variables for each area
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_USE_XP2_RESTSYSTEM = "X2_SWITCH_ENABLE_XP2_RESTSYSTEM";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * if this variable is set, the AI will not use Dispel Magic against harmfull AOE
 | 
						|
// * spells.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_DISABLE_AI_DISPEL_AOE = "X2_L_AI_NO_AOE_DISPEL";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Setting this variable to TRUE on the module will disable the call to the
 | 
						|
// * random loot generation in most creatures' OnSpawn script.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_SWITCH_NO_RANDOM_MONSTER_LOOT = "X2_L_NOTREASURE";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
//                             M I S C
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_VAR_OVERRIDE_SPELLSCRIPT ="X2_S_UD_SPELLSCRIPT";
 | 
						|
 | 
						|
const string MODULE_VAR_TAGBASED_SCRIPT_PREFIX ="X2_S_UD_SPELLSCRIPT";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Variable that holds the wandering monster 2da filename
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_VAR_WANDERING_MONSTER_2DA ="X2_WM_2DA_NAME";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * This variable allows to specify a % for NOT using dispel magic against AOEs
 | 
						|
// instead fleeing
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_VAR_AI_NO_DISPEL_AOE_CHANCE = "X2_L_AI_AOE_DISPEL_CHANCE";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Setting this variable to TRUE will cause the Expertise/Improved Expertise
 | 
						|
// * modes to be disabled whenever a player is casting a spell.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string MODULE_VAR_AI_STOP_EXPERTISE_ABUSE = "X2_L_STOP_EXPERTISE_ABUSE";
 | 
						|
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
//                             C R E A T U R E S
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * see x2_ai_demo for details
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_VAR_CUSTOM_AISCRIPT = "X2_SPECIAL_COMBAT_AI_SCRIPT";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Setting this variable on a spellcaster creature will make its spelluse a
 | 
						|
// * bit more random, but their spell selection may not always be appropriate
 | 
						|
// * to the situation anymore.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_VAR_RANDOMIZE_SPELLUSE = "X2_SPELL_RANDOM";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Set to 1 to make the creature activate stealth mode after spawn
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_VAR_USE_SPAWN_STEALTH = "X2_L_SPAWN_USE_STEALTH";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Set to 1 to make the creature activate detectmode after spawn
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_VAR_USE_SPAWN_SEARCH = "X2_L_SPAWN_USE_SEARCH";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Set to 1 to make the creature play mobile ambient animations after spawn
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_VAR_USE_SPAWN_AMBIENT = "X2_L_SPAWN_USE_AMBIENT";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Set to 1 to make the creature play immobile ambient animations after spawn
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_VAR_USE_SPAWN_AMBIENT_IMMOBILE = "X2_L_SPAWN_USE_AMBIENT_IMMOBILE";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Set to 1 to make the creature immune to dispel magic (used for statues)
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_VAR_IMMUNE_TO_DISPEL = "X1_L_IMMUNE_TO_DISPEL";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Set this variable to 1 on a creature to make it walk through other creatures
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_VAR_IS_INCORPOREAL = "X2_L_IS_INCORPOREAL";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Set this variable to 1 - 6 to override the number of attacks a creature has based on its BAB
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_VAR_NUMBER_OF_ATTACKS = "X2_L_NUMBER_OF_ATTACKS";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * The value of this variable (int) is added to the chance that a creature
 | 
						|
// * will use magic in combat. Set to 100 for always, 0 for never
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_AI_MODIFIED_MAGIC_RATE = "X2_L_BEH_MAGIC";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * The higher value of this variable, the higher the chance that the creature
 | 
						|
// * will use offensive abilities in combat. Set to 0 to make them flee.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_AI_MODIFIED_OFFENSE_RATE = "X2_L_BEH_OFFENSE";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * The higher value of this variable, the higher the chance that the creature
 | 
						|
// * will aid friendly creatures in combat. Not that helping usually degrades
 | 
						|
// * the overall difficulty of an encounter, but makes it more interesting.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_AI_MODIFIED_COMPASSION_RATE = "X2_L_BEH_COMPASSION";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * This allows you to script items that enhance a palemaster's summoned creatures. You need
 | 
						|
// * to put the name of a script into this variable that will be run on any creature called by
 | 
						|
// * the pale master's summon undead ability. You can use this script to add effects to the creature.
 | 
						|
// * You can use the OnEquip/OnUnEquip event hooks set this variable.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string CREATURE_VAR_PALE_MASTER_SPECIAL_ITEM = "X2_S_PM_SPECIAL_ITEM";
 | 
						|
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// These constants define item messages that are routed to script files with
 | 
						|
// the item tag's through the default XP2 module scripts.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const int X2_ITEM_EVENT_ACTIVATE = 0;
 | 
						|
const int X2_ITEM_EVENT_EQUIP = 1;
 | 
						|
const int X2_ITEM_EVENT_UNEQUIP = 2;
 | 
						|
const int X2_ITEM_EVENT_ONHITCAST = 3;
 | 
						|
const int X2_ITEM_EVENT_ACQUIRE = 4;
 | 
						|
const int X2_ITEM_EVENT_UNACQUIRE = 5;
 | 
						|
const int X2_ITEM_EVENT_SPELLCAST_AT = 6;
 | 
						|
 | 
						|
const int X2_EXECUTE_SCRIPT_CONTINUE =0;
 | 
						|
const int X2_EXECUTE_SCRIPT_END =1;
 | 
						|
 | 
						|
// Set the active User Defined Item Event
 | 
						|
// X2_ITEM_EVENT_ACTIVATE
 | 
						|
// X2_ITEM_EVENT_EQUIP
 | 
						|
// X2_ITEM_EVENT_UNEQUIP
 | 
						|
// X2_ITEM_EVENT_ONHITCAST
 | 
						|
// X2_ITEM_EVENT_ACQUIRE
 | 
						|
// X2_ITEM_EVENT_UNACQUIRE
 | 
						|
// X2_ITEM_EVENT_SPELLCAST_AT
 | 
						|
int SetUserDefinedItemEventNumber(int nEvent);
 | 
						|
 | 
						|
// Get the active User Defined Item Event
 | 
						|
// X2_ITEM_EVENT_ACTIVATE
 | 
						|
// X2_ITEM_EVENT_EQUIP
 | 
						|
// X2_ITEM_EVENT_UNEQUIP
 | 
						|
// X2_ITEM_EVENT_ONHITCAST
 | 
						|
// X2_ITEM_EVENT_ACQUIRE
 | 
						|
// X2_ITEM_EVENT_UNACQUIRE
 | 
						|
// X2_ITEM_EVENT_SPELLCAST_AT
 | 
						|
int GetUserDefinedItemEventNumber();
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Used to switch between different rule implementations or to subsystems for the game
 | 
						|
// * see x2_inc_switches for more detailed information on these constants
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
void SetModuleSwitch(string sModuleSwitchConstant,int bValue);
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Returns the value of a module switch
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
int GetModuleSwitchValue(string  sModuleSwitchConstant);
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
//                                D O O R S
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string DOOR_FLAG_RESIST_KNOCK = "X2_FLAG_DOOR_RESIST_KNOCK";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Used to toggle custom flags on a door
 | 
						|
// * oDoor - Door to set the switch on
 | 
						|
// * Valid values for sDoorFlagConstant:
 | 
						|
// * X2_FLAG_DOOR_RESIST_KNOCK -
 | 
						|
// *        Set to 1 to prevent knock from working with feedback.
 | 
						|
// *        Set to 2 to prevent knock from working without feedback
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
void SetDoorFlag(object oDoor, string sDoorFlagConstant, int nValue);
 | 
						|
int GetDoorFlag(object oDoor, string  sDoorFlagConstant);
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
//                           W A Y P O I N T S
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * By setting this variable to 1 on a waypoint, a creature using this
 | 
						|
// * waypoint as part of its WalkWaypoints routine will assume the facing
 | 
						|
// * of the waypoint upon reaching it.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string  WAYPOINT_VAR_FORCE_SETFACING = "X2_L_WAYPOINT_SETFACING";
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
//                           I T E M S
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// NOTE: THIS NO LONGER WORKS. TO PREVENT MODIFICATION USE THE PLOT FLAG
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
const string ITEM_FLAG_NO_CRAFT_MODIFICATION = "X2_FLAG_ITEM_CRAFT_DO_NOT_MODIFY";
 | 
						|
void SetItemFlag(object oItem, string sItemFlagConstant, int nValue);
 | 
						|
int GetItemFlag(object oItem, string  sItemFlagConstant);
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Execute sScript on oTarget returning an integer.
 | 
						|
// * Do not nest this function
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
int ExecuteScriptAndReturnInt(string sScript, object oTarget);
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Sets the return value for scripts called via ExecuteScriptAndReturnInt
 | 
						|
// * valid values are
 | 
						|
// * X2_EXECUTE_SCRIPT_CONTINUE - continue calling script after executed scriptis done
 | 
						|
// * X2_EXECUTE_SCRIPT_END - end calling script after executed script is done
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
void  SetExecutedScriptReturnValue(int nValue = X2_EXECUTE_SCRIPT_END);
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * This is a security feature. If you are running a *local vault* server and you
 | 
						|
// * have tag based script execution enabled, people could bring items into your
 | 
						|
// * game that execute existing scripts. You can set a script prefix here to
 | 
						|
// * prevent that. Note that you have to add this prefix to your item scripts in
 | 
						|
// * the module to make them work.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
void SetUserDefinedItemEventPrefix(string sPrefix="");
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
//                          S P E L L S C R I P T S
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// Allows the module creator to specify a script that will be run before any spellscript is run
 | 
						|
// You can call SetModuleOverrideSpellscript() at the end of the script specified by
 | 
						|
// sScriptName. If you call this function this will prevent the original spellscript
 | 
						|
// (and all craft item code) from being executed.
 | 
						|
// If you do not add this line, the original spellscript and/or crafting code will
 | 
						|
// run in addition to your script
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
void SetModuleOverrideSpellscript(string sScriptName);
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
//                             C R E A T U R E S
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
 | 
						|
void SetCreatureFlag(object oCreature, string sFlag, int nValue);
 | 
						|
int  GetCreatureFlag(object oCreature, string sFlag);
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Define a replacement script for DetermineCombatRound
 | 
						|
// * See x2_ai_demo for details
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
void SetCreatureOverrideAIScript(object oCreature, string sScriptName);
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Call this at end of your custom override AI script set via CREATURE_VAR_CUSTOM_AISCRIPT
 | 
						|
// * See x2_ai_demo for details.
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
void   SetCreatureOverrideAIScriptFinished(object oCreature = OBJECT_SELF);
 | 
						|
void   ClearCreatureOverrideAIScriptTarget(object oCreature = OBJECT_SELF);
 | 
						|
object GetCreatureOverrideAIScriptTarget(object oCreature = OBJECT_SELF);
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// * Define the name of the 2da file which is used for the wandering monster
 | 
						|
// * system
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
void SetWanderingMonster2DAFile(string s2DAName = "des_restsystem");
 | 
						|
 | 
						|
 | 
						|
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
// Interface to switch on / off specific  subsystems or behaviors
 | 
						|
// Check X2_INC_SWITCHES.NSS for details
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
void SetModuleSwitch(string sModuleSwitchConstant,int bValue)
 | 
						|
{
 | 
						|
    if (bValue == 0)
 | 
						|
    {
 | 
						|
        DeleteLocalInt (GetModule(),sModuleSwitchConstant);
 | 
						|
        return;
 | 
						|
    } else if ((sModuleSwitchConstant) == MODULE_SWITCH_AOE_HURT_NEUTRAL_NPCS && bValue == TRUE)
 | 
						|
    {
 | 
						|
      bValue = 10;
 | 
						|
    }
 | 
						|
    SetLocalInt (GetModule(),sModuleSwitchConstant, bValue);
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
// Return the value of a module switch set by SetModuleSwitch
 | 
						|
// See X2_INC_SWITCHES for a list of all module switches
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
int GetModuleSwitchValue(string  sModuleSwitchConstant)
 | 
						|
{
 | 
						|
    int nRet =  GetLocalInt (GetModule(),sModuleSwitchConstant);
 | 
						|
    return nRet;
 | 
						|
}
 | 
						|
 | 
						|
void SetDoorFlag(object oDoor, string sDoorFlagConstant, int nValue)
 | 
						|
{
 | 
						|
    if (nValue == 0)
 | 
						|
    {
 | 
						|
        DeleteLocalInt (oDoor,sDoorFlagConstant);
 | 
						|
        return;
 | 
						|
    }
 | 
						|
    SetLocalInt (oDoor,sDoorFlagConstant, nValue);
 | 
						|
}
 | 
						|
 | 
						|
int GetDoorFlag(object oDoor, string  sDoorFlagConstant)
 | 
						|
{
 | 
						|
    int nRet =  GetLocalInt (oDoor,sDoorFlagConstant);
 | 
						|
    return nRet;
 | 
						|
}
 | 
						|
 | 
						|
void SetItemFlag(object oItem, string sItemFlagConstant, int nValue)
 | 
						|
{
 | 
						|
    if (nValue == 0)
 | 
						|
    {
 | 
						|
        DeleteLocalInt (oItem,sItemFlagConstant);
 | 
						|
        return;
 | 
						|
    }
 | 
						|
    SetLocalInt (oItem,sItemFlagConstant, nValue);
 | 
						|
}
 | 
						|
 | 
						|
int GetItemFlag(object oItem, string  sItemFlagConstant)
 | 
						|
{
 | 
						|
    int nRet =  GetLocalInt (oItem,sItemFlagConstant);
 | 
						|
    return nRet;
 | 
						|
}
 | 
						|
 | 
						|
void SetModuleOverrideSpellscript(string sScriptName)
 | 
						|
{
 | 
						|
    SetLocalString(GetModule(),MODULE_VAR_OVERRIDE_SPELLSCRIPT,sScriptName);
 | 
						|
}
 | 
						|
 | 
						|
string GetModuleOverrideSpellscript()
 | 
						|
{
 | 
						|
     string  sScript = GetLocalString(GetModule(),"X2_S_UD_SPELLSCRIPT");
 | 
						|
     return sScript;
 | 
						|
}
 | 
						|
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
// You can call this in our overridden spellscript. If you call this
 | 
						|
// this will prevent the original spellscript (and all craft item code)
 | 
						|
// from being executed. If you do not add this line, the original spellscript
 | 
						|
// and/or crafting code will run in addition to your script
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
void SetModuleOverrideSpellScriptFinished()
 | 
						|
{
 | 
						|
    SetLocalInt(OBJECT_SELF,"X2_L_BLOCK_LAST_SPELL",TRUE);
 | 
						|
}
 | 
						|
 | 
						|
int GetModuleOverrideSpellScriptFinished()
 | 
						|
{
 | 
						|
    int nRet = GetLocalInt(OBJECT_SELF,"X2_L_BLOCK_LAST_SPELL");
 | 
						|
    DeleteLocalInt(OBJECT_SELF,"X2_L_BLOCK_LAST_SPELL");
 | 
						|
    return nRet;
 | 
						|
}
 | 
						|
 | 
						|
void SetCreatureOverrideAIScript(object oCreature, string sScriptName)
 | 
						|
{
 | 
						|
    SetLocalString(oCreature,CREATURE_VAR_CUSTOM_AISCRIPT,sScriptName);
 | 
						|
}
 | 
						|
 | 
						|
void SetCreatureOverrideAIScriptFinished(object oCreature = OBJECT_SELF)
 | 
						|
{
 | 
						|
 //   WriteTimestampedLogEntry("Custom AI Finished");
 | 
						|
    SetLocalInt(oCreature,"X2_SPECIAL_COMBAT_AI_SCRIPT_OK",TRUE);
 | 
						|
}
 | 
						|
 | 
						|
object GetCreatureOverrideAIScriptTarget(object oCreature = OBJECT_SELF)
 | 
						|
{
 | 
						|
    object oRet= GetLocalObject(oCreature,"X2_NW_I0_GENERIC_INTRUDER");
 | 
						|
    return oRet;
 | 
						|
}
 | 
						|
 | 
						|
void ClearCreatureOverrideAIScriptTarget(object oCreature = OBJECT_SELF)
 | 
						|
{
 | 
						|
    DeleteLocalObject(oCreature,"X2_NW_I0_GENERIC_INTRUDER");
 | 
						|
}
 | 
						|
 | 
						|
void SetCreatureFlag(object oCreature, string sFlag, int nValue)
 | 
						|
{
 | 
						|
    if (sFlag == CREATURE_VAR_IMMUNE_TO_DISPEL)
 | 
						|
    {
 | 
						|
        if (nValue != 0)
 | 
						|
        {
 | 
						|
            nValue = 10;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    SetLocalInt(oCreature,sFlag ,nValue);
 | 
						|
}
 | 
						|
 | 
						|
int GetCreatureFlag(object oCreature, string sFlag)
 | 
						|
{
 | 
						|
    int nRet = GetLocalInt(oCreature,sFlag);
 | 
						|
    return nRet;
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
// Get the current UserDefined Item Event Number
 | 
						|
// X2_ITEM_EVENT_ACTIVATE
 | 
						|
// X2_ITEM_EVENT_EQUIP
 | 
						|
// X2_ITEM_EVENT_UNEQUIP
 | 
						|
// X2_ITEM_EVENT_ONHITCAST
 | 
						|
// X2_ITEM_EVENT_ACQUIRE
 | 
						|
// X2_ITEM_EVENT_UNACQUIRE
 | 
						|
// X2_ITEM_EVENT_SPELLCAST_AT
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
int GetUserDefinedItemEventNumber()
 | 
						|
{
 | 
						|
    return GetLocalInt(OBJECT_SELF,"X2_L_LAST_ITEM_EVENT");
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
// Set the current UserDefined Item Event Number
 | 
						|
// X2_ITEM_EVENT_ACTIVATE
 | 
						|
// X2_ITEM_EVENT_EQUIP
 | 
						|
// X2_ITEM_EVENT_UNEQUIP
 | 
						|
// X2_ITEM_EVENT_ONHITCAST
 | 
						|
// X2_ITEM_EVENT_ACQUIRE
 | 
						|
// X2_ITEM_EVENT_UNACQUIRE
 | 
						|
// X2_ITEM_EVENT_SPELLCAST_AT
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
void SetUserDefinedItemEventNumber(int nEvent)
 | 
						|
{
 | 
						|
    SetLocalInt(OBJECT_SELF,"X2_L_LAST_ITEM_EVENT",nEvent);
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
// Returns the name for the User Defined Item Event script for oItem,
 | 
						|
// including possible prefixes configured by SetUserDefinedItemEventPrefix
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
string GetUserDefinedItemEventScriptName(object oItem)
 | 
						|
{
 | 
						|
    string sPrefix = GetLocalString(GetModule(),"MODULE_VAR_TAGBASED_SCRIPT_PREFIX");
 | 
						|
    string sTag = sPrefix + GetTag(oItem);
 | 
						|
    return sTag;
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
// You can define a prefix for any User Defined Item Event here, to prevent
 | 
						|
// people from executing scripts you do not like them to execute on your
 | 
						|
// local vault server
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
void SetUserDefinedItemEventPrefix(string sPrefix="")
 | 
						|
{
 | 
						|
    SetLocalString(GetModule(),"MODULE_VAR_TAGBASED_SCRIPT_PREFIX",sPrefix);
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
// Wrapper for Execute Script to execute a script and get an integer
 | 
						|
// return value. Do not nest this function!
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
int ExecuteScriptAndReturnInt(string sScript, object oTarget)
 | 
						|
{
 | 
						|
    DeleteLocalInt(oTarget,"X2_L_LAST_RETVAR");
 | 
						|
    ExecuteScript(sScript,oTarget);
 | 
						|
    int nRet = GetLocalInt(oTarget,"X2_L_LAST_RETVAR");
 | 
						|
    DeleteLocalInt(oTarget,"X2_L_LAST_RETVAR");
 | 
						|
    return nRet;
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
// Helper function for ExecuteScriptAndReturnInt
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
void  SetExecutedScriptReturnValue(int nValue = X2_EXECUTE_SCRIPT_CONTINUE)
 | 
						|
{
 | 
						|
    SetLocalInt(OBJECT_SELF,"X2_L_LAST_RETVAR",nValue);
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
// Define the name of the 2da file which is used for the wandering monster
 | 
						|
// system
 | 
						|
//----------------------------------------------------------------------------
 | 
						|
void SetWanderingMonster2DAFile(string s2DAName = "des_restsystem")
 | 
						|
{
 | 
						|
    SetLocalString(OBJECT_SELF,MODULE_VAR_WANDERING_MONSTER_2DA,s2DAName);
 | 
						|
}
 |