UW2_PRC8/_module/nss/onmoduleload.nss
Jaysyn904 6aa7ab4950 Disabled defunct module reset
Disabled defunct module reset.  Disabled item destruction on drop.  Added PRC'd creature abilities.  Fixed invalid hak association.  Updated release archive.
2023-11-04 17:58:12 -04:00

222 lines
9.7 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//Script Name: onmoduleload
//////////////////////////////////////////
//Created By: Genisys (Guile)
//Created On: 7/23/08 (Updated 8/10/08)
/////////////////////////////////////////
/*
This script goes in your OnModuleLoad
Event found in the Module Properties
Event Tab.
*/
////////////////////////////////////////
//IMPORTANT SWITCH
//Set this to TRUE if it's a multiplayer game
const int MULTI = TRUE; //Default = FALSE (Single Player Mode);
// I did this
const string NWNX_DISCORD_URL = "/api/webhooks/713882600216723518/1EpwmMZ6F9VBjDt6uKmvGizGJUqYZgCC35Dyt3slQGUeDMJszHjKcDVbJXjr-a59v55u/slack";
//Required Includes
#include "x2_inc_switches"
#include "x2_inc_restsys"
// I did this
#include "nwnx"
#include "nwnx_util"
#include "nwnx_webhook"
//Required Include for the DM Chat Control Options
#include "dm_chat_inc"
#include "_inc_color_text_"
//Main Script
void main()
{
ExecuteScript("prc_onmodload", OBJECT_SELF);
//Set whether we are using this module for multiplayer or single player..
SetLocalInt(GetModule(), "MULTI", MULTI);
//For Time Keeping...(This MUST BE HERE)
SetLocalInt(GetModule(), "DELAY_OK", 1);
////////////////////////////////////////////////////////
//Stop the treasure generation on creatures, so they won't drop loot..
SetLocalInt(GetModule(), "X2_L_NOTREASURE", FALSE);
//IMPORTANT: This part is part of 2 color systems!
//It must be in your OnModuleLoad Event Script!!
//This set color to placeables in the module, it requires that the placeable
//tagged color is placed in the module somewhere out of reach.
string sColor = GetName(GetObjectByTag("COLORS"));
SetCustomToken(1001, GetSubString(sColor, 0, 6)); //white
SetCustomToken(1002, GetSubString(sColor, 6, 6)); //yellow
SetCustomToken(1003, GetSubString(sColor, 12, 6)); //magenta
SetCustomToken(1004, GetSubString(sColor, 18, 6)); //cyan
SetCustomToken(1005, GetSubString(sColor, 24, 6)); //red
SetCustomToken(1006, GetSubString(sColor, 30, 6)); //green
SetCustomToken(1007, GetSubString(sColor, 36, 6)); //blue
//More Custom Color Tokens By Genisys
//NOTE: These custom tokens go ONLY in conversation lines to colorize text
//The example below is everything that would go on a Conversation Line
/*******EXAMPLE CONVERSATION LINE**************
<CUSTOM101>This text of the conversation would be red<CUSTOM100>
IMPORTANT: You must use <CUSTOM100> At the end EVERY TIME!*/
SetCustomToken(100, "</c>"); // CLOSE tag (Ends color, prevents run on!)
SetCustomToken(101, "<c<> >"); // red
SetCustomToken(102, "<c <20> >"); // green
SetCustomToken(103, "<c <20>>"); // blue
SetCustomToken(104, "<c <20><>>"); // cyan
SetCustomToken(105, "<c<> <20>>"); // magenta
SetCustomToken(106, "<c<><63> >"); // yellow
SetCustomToken(107, "<c >"); // black
SetCustomToken(108, "<c<> >"); // dark red
SetCustomToken(109, "<c <20> >"); // dark green
SetCustomToken(110, "<c <20>>"); // dark blue
SetCustomToken(111, "<c <20><>>"); // dark cyan
SetCustomToken(112, "<c<> <20>>"); // dark magenta
SetCustomToken(113, "<c<><63> >"); // dark yellow
SetCustomToken(114, "<c<><63><EFBFBD>>"); // grey
SetCustomToken(117, "<c<><63><EFBFBD>>"); // dark grey
SetCustomToken(115, "<c<><63> >"); // orange
SetCustomToken(116, "<c<><63> >"); // dark orange
SetCustomToken(117, "<cڥ#>"); // brown
SetCustomToken(118, "<c† >"); // dark brown
SetCustomToken(119, "<c<>k<EFBFBD>>"); // Light Purple
SetCustomToken(120, "<c <20> >"); // Neon Green
SetCustomToken(121, "<c <20><>>"); // Light Blue
SetCustomToken(122, "<c` <20>>"); // Purple
SetCustomToken(123, "<c <20> >"); //Neon Green
//Set the name on the Rainbow Chest!
object oRainbow = GetObjectByTag("rainbowchest");
object oRainbow2 = GetObjectByTag("rainbowchest2");
SetName(oRainbow, ChaoticText(GetName(oRainbow, TRUE)));
SetName(oRainbow2, ChaoticText(GetName(oRainbow2, TRUE)));
////////////////////////////////////////////////////////////////////////////
//Code added for the DM Chat Control Options..
GetChatConfigurations();
/////////SPELL HOOKING BY Genisys (Guile)///////////////////////////////////
//This part sets a local variable on the module to allow you to edit
//spells through the "myhook" script, which will give you greater control
//over spell casting in your module, including items and area casting!
//SetLocalString(GetModule(), "X2_S_UD_SPELLSCRIPT", "myhook");
//To disable spell hooking simply type // at the start of the line above
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
/////////////////AUTOMATIC CHARACTER SAVING FUCTION////////////////////////
//Note this function is Polymorphing Friendly (Designed for that purpose!)
if(MULTI == TRUE)
{
//:: DelayCommand(60.0, ExecuteScript("savepcinfo", OBJECT_SELF)); //:: Not needed for EE
}
//////////////////////////////////////////////////////////////////////////
//Your Code Goes here..
//////////////////////////////////////////////////////////////////////////////
//STANDARD BIOWARE XP2 FUNCTIONS/////////////////////////////////////////////
//////////////////////////////////////////MODULE SWITCHES///////////////////
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, FALSE);
// * 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) == TRUE)
{
// * This allows you to specify a different 2da for the wandering monster system.
// SetWanderingMonster2DAFile("des_restsystem");
//* Do not change this line.
WMBuild2DACache();
}
//Main Script End
NWNX_WebHook_SendWebHookHTTPS("discordapp.com", NWNX_DISCORD_URL, "Man lives in the sunlit world of what he believes to be reality. But... there is, unseen by most, an underworld, a place that is just as real, but not as brightly lit...", "Master of the Void");
}