121 lines
4.9 KiB
Plaintext
121 lines
4.9 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////
|
|
// mod_onload
|
|
// written by: eyesolated
|
|
// written at: March 31, 2015
|
|
//
|
|
// Notes: This script is run at Module Load and initializes the different Systems
|
|
// Dialogue System
|
|
#include "anph_cfg"
|
|
#include "mod_cfg"
|
|
#include "x2_inc_spellhook"
|
|
#include "nwnx"
|
|
#include "nwnx_admin"
|
|
#include "nwnx_events"
|
|
#include "nwnx_time"
|
|
//#include "sql_inc"
|
|
//#include "prc_inc_newip"
|
|
|
|
|
|
void CreateObjectOnWaypoints(string sWaypoint, string sObject);
|
|
|
|
void main()
|
|
{
|
|
object oMod = OBJECT_SELF;
|
|
|
|
NWNX_Administration_SetModuleName("Anphillia Unlimited" + ANPH_VERSION + " (" + NWNX_Time_GetSystemDate() +")");
|
|
WriteTimestampedLogEntry ("*** Loading Anphillia Unlimited " + ANPH_VERSION + " ***");
|
|
AnphConfigSaveToLocalVars(oMod);
|
|
|
|
ExecuteScript("sql_init", oMod);
|
|
ExecuteScript("datetime_ini", oMod);
|
|
|
|
ExecuteScript("dlg_ini", oMod);
|
|
ExecuteScript("egs_ini", oMod);
|
|
ExecuteScript("ip_names_ini", oMod);
|
|
ExecuteScript("ip_ini", oMod);
|
|
ExecuteScript("store_ini", oMod);
|
|
ExecuteScript("lgs_ini", oMod);
|
|
ExecuteScript("pat_ini", oMod);
|
|
ExecuteScript("socket_ini", oMod);
|
|
ExecuteScript("hc_defaults",oMod);
|
|
|
|
// Initialize eE Encounters
|
|
ExecuteScript("enc_constructor", oMod);
|
|
ExecuteScript("enc_crypt_01", oMod);
|
|
ExecuteScript("enc_spiderqueen", oMod);
|
|
ExecuteScript("enc_banditchief", oMod);
|
|
|
|
if (ANPH_CNR_ACTIVE)
|
|
{
|
|
// TODO clean up CNR
|
|
ExecuteScript("cnr_module_oml", oMod);
|
|
ExecuteScript("cnr_res_spawn", oMod);
|
|
}
|
|
ExecuteScript("weather_init", oMod);
|
|
ExecuteScript("faction_init", oMod);
|
|
|
|
// Load the XP tables
|
|
SetModuleXPScale(0);
|
|
ExecuteScript("xp_reload", oMod);
|
|
|
|
|
|
// Set Bonus Limits
|
|
SetAbilityBonusLimit(CI_MOD_BONUSLIMIT_ABILITY);
|
|
SetAttackBonusLimit(CI_MOD_BONUSLIMIT_ATTACKBONUS);
|
|
SetDamageBonusLimit(CI_MOD_BONUSLIMIT_DAMAGEBONUS);
|
|
SetSavingThrowBonusLimit(CI_MOD_BONUSLIMIT_SAVINGTHROW);
|
|
SetSkillBonusLimit(CI_MOD_BONUSLIMIT_SKILL);
|
|
|
|
// Execute Module Configuration Switches (use mod_cfg for setup)
|
|
SetLocalInt(oMod, "X2_L_DO_NOT_ALLOW_CRAFTSKILLS", CI_MOD_DO_NOT_ALLOW_CRAFTSKILLS);
|
|
//SetLocalString(oMod, MODULE_VAR_OVERRIDE_SPELLSCRIPT, CI_MOD_OVERRIDE_SPELLSCRIPT);
|
|
SetLocalInt(oMod, MODULE_SWITCH_ENABLE_UMD_SCROLLS, CI_MOD_ENABLE_UMD_SCROLLS);
|
|
SetLocalInt(oMod, MODULE_SWITCH_DISABLE_ITEM_CREATION_FEATS, CI_MOD_DISABLE_ITEM_CREATION_FEATS);
|
|
SetLocalInt(oMod, MODULE_SWITCH_AOE_HURT_NEUTRAL_NPCS, CI_MOD_AOE_HURT_NEUTRAL_NPCS);
|
|
SetLocalInt(oMod, MODULE_SWITCH_ENABLE_CRAFT_WAND_50_CHARGES, CI_MOD_ENABLE_CRAFT_WAND_50_CHARGES);
|
|
SetLocalInt(oMod, MODULE_SWITCH_EPIC_SPELLS_HURT_CASTER, CI_MOD_EPIC_SPELLS_HURT_CASTER);
|
|
SetLocalInt(oMod, MODULE_SWITCH_SPELL_CORERULES_DMASTERTOUCH, CI_MOD_SPELL_CORERULES_DMASTERTOUCH);
|
|
SetLocalInt(oMod, MODULE_SWITCH_RESTRICT_USE_POISON_TO_FEAT, CI_MOD_RESTRICT_USE_POISON_TO_FEAT);
|
|
SetLocalInt(oMod, MODULE_SWITCH_ENABLE_MULTI_HENCH_AOE_DAMAGE, CI_MOD_ENABLE_MULTI_HENCH_AOE_DAMAGE);
|
|
SetLocalInt(oMod, MODULE_SWITCH_ENABLE_NPC_AOE_HURT_ALLIES, CI_MOD_ENABLE_NPC_AOE_HURT_ALLIES);
|
|
SetLocalInt(oMod, MODULE_SWITCH_ENABLE_BEBILITH_RUIN_ARMOR, CI_MOD_ENABLE_BEBILITH_RUIN_ARMOR);
|
|
SetLocalInt(oMod, MODULE_SWITCH_ENABLE_INVISIBLE_GLYPH_OF_WARDING, CI_MOD_ENABLE_INVISIBLE_GLYPH_OF_WARDING);
|
|
SetLocalInt(oMod, MODULE_SWITCH_ENABLE_CROSSAREA_WALKWAYPOINTS, CI_MOD_ENABLE_CROSSAREA_WALKWAYPOINTS);
|
|
SetLocalInt(oMod, MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS, CI_MOD_ENABLE_TAGBASED_SCRIPTS);
|
|
SetLocalInt(oMod, MODULE_SWITCH_USE_XP2_RESTSYSTEM, CI_MOD_USE_XP2_RESTSYSTEM);
|
|
SetLocalInt(oMod, MODULE_SWITCH_DISABLE_AI_DISPEL_AOE, CI_MOD_DISABLE_AI_DISPEL_AOE);
|
|
SetLocalInt(oMod, MODULE_SWITCH_NO_RANDOM_MONSTER_LOOT, CI_MOD_NO_RANDOM_MONSTER_LOOT);
|
|
|
|
SetLocalString(GetModule(), "X2_S_UD_SPELLSCRIPT", "spell_hook");
|
|
|
|
/* Generate all Dream Items and placeables */
|
|
CreateObjectOnWaypoints("dreamroleplaysign", "dreamrpsign");
|
|
CreateObjectOnWaypoints("dreamupdatesign", "dreamupdate");
|
|
|
|
// Set up additional events
|
|
NWNX_Events_SubscribeEvent("NWNX_ON_ENTER_STEALTH_AFTER", "xevent_stealth");
|
|
NWNX_Events_SubscribeEvent("NWNX_ON_EXAMINE_OBJECT_BEFORE", "xevent_examine_b");
|
|
NWNX_Events_SubscribeEvent("NWNX_ON_EXAMINE_OBJECT_AFTER", "xevent_examine_a");
|
|
NWNX_Events_SubscribeEvent("NWNX_ON_DM_SPAWN_OBJECT_BEFORE", "xevent_dmspawn_before");
|
|
|
|
// Call UserDefined Script
|
|
SignalEvent(oMod, EventUserDefined(1));
|
|
WriteTimestampedLogEntry ("*** Anphillia Loaded Successfully ***");
|
|
|
|
DelayCommand(10.0, ExecuteScript("_area_scripts", OBJECT_SELF));
|
|
}
|
|
|
|
|
|
void CreateObjectOnWaypoints(string sWaypoint, string sObject)
|
|
{
|
|
int nSign = 0;
|
|
object oSign = GetObjectByTag(sWaypoint, nSign);
|
|
while (oSign != OBJECT_INVALID)
|
|
{
|
|
CreateObject(OBJECT_TYPE_PLACEABLE, sObject, GetLocation(oSign));
|
|
nSign++;
|
|
oSign = GetObjectByTag(sWaypoint, nSign);
|
|
}
|
|
}
|
|
|