#include "x2_inc_switches"
#include "x2_inc_restsys"
#include "pgs_inc_events"
#include "gm_include"
#include "ld_clock_inc"
#include "weather_inc"
#include "weather_inc_area"
#include "sha_subr_methds"
void main()
{
object oMod = GetModule();
//:://////////////////////////////////////////////
//:: PW Clock Code Start
//:://////////////////////////////////////////////
if (GetLocalInt(oMod,"PersistDate")==1)
{
event DEvent = EventUserDefined(5000);
if(GetDateInitialized())
{
int iDate = GetSavedDate();
DelayCommand(HoursToSeconds(1),SignalEvent(oMod,DEvent));
struct Date D = DecodeDate(iDate);
SetTime(D.Hour,1,0,0);
SetCalendar(D.Year,D.Month,D.Day);
} else {
SignalEvent(oMod,DEvent);
InitializeDate();
}
}
//:://////////////////////////////////////////////
//:: PW Clock Code End
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
// Weather System
//:://////////////////////////////////////////////
// Initialize Area List
InitializeAreaList();
// Global Weather Script
if (DEBUG == 1)
{
PrintString("Setting Global Weather");
}
SetGlobalWeather();
//:://////////////////////////////////////////////
// Weather System Ends
//:://////////////////////////////////////////////
if(GetLocalInt(GetModule(),"Werewolf")==1)
{
// Werewolf Settings
int iHourLength = 120; //Tells the werewolf system how many seconds are in an hour.
int iStartDay = 6; //Tells the werewolf system what hour dawn starts
int iStartNight = 18; //Tells the werewolf system what hour dusk starts
int iFullMoon1 = 26; //Tells the werewolf system what the first day of full moon is
int iFullMoon2 = 27; //Tells the werewolf system what the second day of full moon is
int iFullMoon3 = 28; //Tells the werewolf system what the third day of full moon is
SetLocalInt(oMod,"HourLength",iHourLength);
SetLocalInt(oMod,"StartDay",iStartDay);
SetLocalInt(oMod,"StartNight",iStartNight);
SetLocalInt(oMod,"FullMoon1",iFullMoon1);
SetLocalInt(oMod,"FullMoon2",iFullMoon2);
SetLocalInt(oMod,"FullMoon3",iFullMoon3);
}
if(GetLocalInt(GetModule(),"Vampire")==1)
{
//Starts the vampire subrace system
ExecuteScript("vamp_settings", OBJECT_SELF);
}
// Spell Hooking Code
SetModuleOverrideSpellscript ("vg_spell_hook");//<--This was added for under water areas
// Player Guild System Code
PGS_OnModuleLoad();
// Player Unique ID System - Not turned on!
//UID_OnModuleLoad();
//Starts Darklamps system
ExecuteScript("Darklamp_init", oMod);
// Gambling House Gold Setup
SetHouse(HOUSESTART);
if (GetGameDifficulty() == GAME_DIFFICULTY_CORE_RULES || GetGameDifficulty() == GAME_DIFFICULTY_DIFFICULT)
{
// * Setting the switch below will enable a seperate Use Magic Device Skillcheck for
// * rogues when playing on Hardcore+ difficulty. This only applies to scrolls
SetModuleSwitch (MODULE_SWITCH_ENABLE_UMD_SCROLLS, TRUE);
// * Activating the switch below will make AOE spells hurt neutral NPCS by default
// SetModuleSwitch (MODULE_SWITCH_AOE_HURT_NEUTRAL_NPCS, TRUE);
}
// * AI: Activating the switch below will make the creaures using the WalkWaypoint function
// * able to walk across areas
// SetModuleSwitch (MODULE_SWITCH_ENABLE_CROSSAREA_WALKWAYPOINTS, TRUE);
// * Spells: Activating the switch below will make the Glyph of Warding spell behave differently:
// * The visual glyph will disappear after 6 seconds, making them impossible to spot
// SetModuleSwitch (MODULE_SWITCH_ENABLE_INVISIBLE_GLYPH_OF_WARDING, TRUE);
// * Craft Feats: Want 50 charges on a newly created wand? We found this unbalancing,
// * but since it is described this way in the book, here is the switch to get it back...
// SetModuleSwitch (MODULE_SWITCH_ENABLE_CRAFT_WAND_50_CHARGES, TRUE);
// * Craft Feats: Use this to disable Item Creation Feats if you do not want
// * them in your module
// SetModuleSwitch (MODULE_SWITCH_DISABLE_ITEM_CREATION_FEATS, TRUE);
// * Palemaster: Deathless master touch in PnP only affects creatures up to a certain size.
// * We do not support this check for balancing reasons, but you can still activate it...
// SetModuleSwitch (MODULE_SWITCH_SPELL_CORERULES_DMASTERTOUCH, TRUE);
// * Epic Spellcasting: Some Epic spells feed on the liveforce of the caster. However this
// * did not fit into NWNs spell system and was confusing, so we took it out...
// SetModuleSwitch (MODULE_SWITCH_EPIC_SPELLS_HURT_CASTER, TRUE);
// * Epic Spellcasting: Some Epic spells feed on the liveforce of the caster. However this
// * did not fit into NWNs spell system and was confusing, so we took it out...
// SetModuleSwitch (MODULE_SWITCH_RESTRICT_USE_POISON_TO_FEAT, TRUE);
// * Spellcasting: Some people don't like caster's abusing expertise to raise their AC
// * Uncommenting this line will drop expertise mode whenever a spell is cast by a player
// SetModuleSwitch (MODULE_VAR_AI_STOP_EXPERTISE_ABUSE, TRUE);
// * Item Event Scripts: The game's default event scripts allow routing of all item related events
// * into a single file, based on the tag of that item. If an item's tag is "test", it will fire a
// * script called "test" when an item based event (equip, unequip, acquire, unacquire, activate,...)
// * is triggered. Check "x2_it_example.nss" for an example.
// * This feature is disabled by default.
SetModuleSwitch (MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS, TRUE);
if (GetModuleSwitchValue (MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS) == TRUE)
{
// * If Tagbased scripts are enabled, and you are running a Local Vault Server
// * you should use the line below to add a layer of security to your server, preventing
// * people to execute script you don't want them to. If you use the feature below,
// * all called item scrips will be the prefix + the Tag of the item you want to execute, up to a
// * maximum of 16 chars, instead of the pure tag of the object.
// * i.e. without the line below a user activating an item with the tag "test",
// * will result in the execution of a script called "test". If you uncomment the line below
// * the script called will be "1_test.nss"
// SetUserDefinedItemEventPrefix("1_");
}
// * This initializes Bioware's wandering monster system as used in Hordes of the Underdark
// * You can deactivate it, making your module load faster if you do not use it.
// * If you want to use it, make sure you set "x2_mod_def_rest" as your module's OnRest Script
// SetModuleSwitch (MODULE_SWITCH_USE_XP2_RESTSYSTEM, TRUE);
if (GetModuleSwitchValue(MODULE_SWITCH_USE_XP2_RESTSYSTEM) == FALSE)
{
// * This allows you to specify a different 2da for the wandering monster system.
// SetWanderingMonster2DAFile("des_restsystem");
//* Do not change this line.
WMBuild2DACache();
}
// CUSTOM CODE FOR HORSES
// See x3_inc_horse for full explanation of the module options.
// Similar lines in the official Bioware script have been consolidated into this section.
SetMaxHenchmen(99);
// Area Control
SetLocalInt(GetModule(), "X3_MOUNTS_EXTERNAL_ONLY", TRUE); // Horses not allowed in indoor areas
SetLocalInt(GetModule(), "X3_MOUNTS_NO_UNDERGROUND", TRUE); // Horses not allowed underground
// SetLocalInt(GetObjectByTag("AreaTag"), "X3_NO_HORSES", TRUE); // Horses not allowed in this area
SetLocalInt(GetObjectByTag("DismountZone"), "X3_NO_MOUNTING", TRUE); // No mounting in this area
SetLocalInt(GetObjectByTag("DismountZone"), "X3_MOUNT_OK_EXCEPTION", TRUE); // Horses allowed in this area
// SetLocalFloat(GetObjectByTag("DismountZone"), "fX3_MOUNT_MULTIPLE", 0.5); // Mount animation faster or slower in this area
// SetLocalFloat(GetObjectByTag("DismountZone"), "fX3_DISMOUNT_MULTIPLE", 0.5); // Dismount animation faster or slower in this area
// SetLocalInt(GetObjectByTag("AreaTag"), "X3_ABORT_WHEN_STUCK", TRUE); // Abort mount if unable to run to horse in this area
// Abilities & Combat
// SetLocalInt(GetModule(), "X3_HORSE_DISABLE_SPEED", TRUE); // No speed increase on mounting
// SetLocalInt(GetModule(), "X3_HORSE_DISABLE_SKILL", TRUE); // No skill penalties to Hide etc on mounting
// SetLocalInt(GetModule(), "X3_MOUNT_NO_REST_DISMOUNT", TRUE); // Allow rest when mounted
// SetLocalInt(GetModule(), "X3_HORSE_ENABLE_ACBOOST", TRUE); // Increase rider AC to match horse on mounting
// SetLocalInt(GetModule(), "X3_NO_MOUNTED_COMBAT_FEAT", TRUE); // Disable Mounted Combat feat
// SetLocalInt(GetModule(), "X3_HORSE_ENABLE_HPBOOST", TRUE); // Give rider temporary hit points on mounting
// SetLocalInt(GetModule(), "X3_ENABLE_MOUNT_DAMAGE", TRUE); // Horse shares damage on dismounting
// SetLocalInt(GetModule(), "X3_HORSE_NO_CORPSES", TRUE); // Mounted horses leave no corpses
// SetLocalInt(GetModule(), "X3_NO_SHAPESHIFT_SPELL_CHECK", TRUE); // Allow mounted creatures to be shapeshifted by spells
// Henchman Control
SetLocalInt(GetModule(), "X3_RESTORE_HENCHMEN_LOCATIONS", TRUE); // Henchmen's horses respawn near henchmen on loading saved game
// SetLocalInt(GetModule(), "X3_HORSE_NO_HENCHMAN_INCREASE", TRUE); // No increase in maximum henchmen to accommodate horses
// SetLocalInt(GetModule(), "X3_HORSE_MAX_HENCHMEN ", 5); // Upper limit on maximum henchmen to accommodate horses
// Saddlebags
SetLocalInt(GetModule(), "X3_HORSE_ENABLE_SADDLEBAGS", TRUE); // Enable saddlebags
SetLocalString(GetModule(), "X3_SADDLEBAG_DATABASE", "Saddlebags"); // Name of saddlebag database
// Paladin Mounts
// SetLocalInt(GetModule(), "X3_HORSE_PALADIN_USE_PHB", TRUE); // Paladin mount summoning duration as Player's Handbook
// SetLocalInt(GetModule(), "X3_MOUNT_NO_REST_DESPAWN", TRUE); // Paladin mount does not despawn on rest
// SetLocalString(GetModule(), "X3_PALMOUNT_SUMMONOVR", "MyScript"); // Custom summoning script
// SetLocalString(GetModule(), "X3_EXTEND_PALMOUNT", "MyScript"); // Custom post-mount script
// SetLocalString(GetModule(), "X3_EXTEND_PALDMOUNT", "MyScript"); // Custom post-dismount script
// Mounting System
// SetLocalInt(GetModule(), "X3_NO_MOUNT_COMMANDABLE", TRUE); // Allow horse and rider to be commandable during mount / dismount
// SetLocalInt(GetModule(), "X3_HORSE_ACT_VS_DELAY", TRUE); // Use actions rather than delays when mounting/dismounting
// SetLocalFloat(GetModule(), "fX3_MOUNT_DELAY", 2.0); // Mount animation additional time in seconds
// SetLocalFloat(GetModule(), "fX3_TIMEOUT_TO_MOUNT", 6.0); // Maximum time allowed to run to horse in seconds
SetLocalInt(GetModule(), "bX3_MOUNT_NO_ZAXIS", TRUE); // Enabled in official Bioware script
// SetLocalFloat(GetModule(), "fX3_FREQUENCY", 2.0); // Frequency of pathfinding during run to horse in seconds
// Database
SetLocalInt(GetModule(), "X3_ENABLE_MOUNT_DB", TRUE); // Enable data base functions
ExecuteScript ("cnr_module_oml", OBJECT_SELF);
ExecuteScript ("sha_mod_load", OBJECT_SELF);
}