Fixed missing Factions on Animated Statues

Fixed missing Factions on Animated Statues.  Added XP to next level for lvl 40+ characters.  Added Dragon AI for CODI Core AI.  Tweaked Beholders & some Dragons to use CODI Core AI.  Fixed CODI Core NPC onSPawn script to run PRC scripts properly.  Full compile.  Updated release archive.
This commit is contained in:
Jaysyn904 2024-10-30 13:07:27 -04:00
parent c929e2ff75
commit 6aa1491726
59 changed files with 2788 additions and 783 deletions

View File

@ -1842,7 +1842,7 @@
},
"Version": {
"type": "dword",
"value": 23
"value": 24
},
"Width": {
"type": "int",

View File

@ -861,7 +861,7 @@
},
"Tile_ID": {
"type": "int",
"value": 5
"value": 166
},
"Tile_MainLight1": {
"type": "byte",
@ -873,15 +873,15 @@
},
"Tile_Orientation": {
"type": "int",
"value": 2
"value": 3
},
"Tile_SrcLight1": {
"type": "byte",
"value": 2
"value": 3
},
"Tile_SrcLight2": {
"type": "byte",
"value": 2
"value": 3
}
},
{
@ -2194,7 +2194,7 @@
},
"Tile_ID": {
"type": "int",
"value": 118
"value": 38
},
"Tile_MainLight1": {
"type": "byte",
@ -2237,7 +2237,7 @@
},
"Tile_ID": {
"type": "int",
"value": 39
"value": 154
},
"Tile_MainLight1": {
"type": "byte",
@ -2245,7 +2245,7 @@
},
"Tile_MainLight2": {
"type": "byte",
"value": 1
"value": 0
},
"Tile_Orientation": {
"type": "int",
@ -2296,11 +2296,11 @@
},
"Tile_SrcLight1": {
"type": "byte",
"value": 3
"value": 2
},
"Tile_SrcLight2": {
"type": "byte",
"value": 3
"value": 2
}
},
{
@ -3629,11 +3629,11 @@
},
"Tile_SrcLight1": {
"type": "byte",
"value": 2
"value": 3
},
"Tile_SrcLight2": {
"type": "byte",
"value": 2
"value": 3
}
},
{
@ -44197,7 +44197,7 @@
},
"Version": {
"type": "dword",
"value": 34
"value": 32
},
"Width": {
"type": "int",

View File

@ -685,7 +685,7 @@
"__struct_id": 2,
"Orientation": {
"type": "float",
"value": -3.092491388320923
"value": -3.092490911483765
},
"X": {
"type": "float",
@ -891,7 +891,7 @@
"__struct_id": 2,
"Orientation": {
"type": "float",
"value": 3.092490911483765
"value": 3.092490434646606
},
"X": {
"type": "float",
@ -1097,7 +1097,7 @@
"__struct_id": 2,
"Orientation": {
"type": "float",
"value": -3.141578435897827
"value": -3.141577959060669
},
"X": {
"type": "float",
@ -1303,7 +1303,7 @@
"__struct_id": 2,
"Orientation": {
"type": "float",
"value": -3.04340386390686
"value": -3.043403625488281
},
"X": {
"type": "float",

View File

@ -31592,7 +31592,7 @@
},
"XPosition": {
"type": "float",
"value": 165.0381317138672
"value": 165.8017883300781
},
"YOrientation": {
"type": "float",
@ -31600,7 +31600,7 @@
},
"YPosition": {
"type": "float",
"value": 14.20234966278076
"value": 13.92373180389404
},
"ZPosition": {
"type": "float",
@ -34406,7 +34406,7 @@
},
"XPosition": {
"type": "float",
"value": 164.8339538574219
"value": 164.9021759033203
},
"YOrientation": {
"type": "float",
@ -34414,11 +34414,11 @@
},
"YPosition": {
"type": "float",
"value": 20.38010215759277
"value": 19.68864059448242
},
"ZPosition": {
"type": "float",
"value": 0.199998140335083
"value": 0.2000000029802322
}
},
{

View File

@ -3131,21 +3131,6 @@
"value": 1
}
},
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "PRC_XP_USE_PNP_XP"
},
"Type": {
"type": "dword",
"value": 1
},
"Value": {
"type": "int",
"value": 0
}
},
{
"__struct_id": 0,
"Name": {

View File

@ -21,7 +21,7 @@
"__struct_id": 0,
"CR": {
"type": "float",
"value": 51.0
"value": 50.0
},
"FACTION": {
"type": "cexostring",
@ -86,7 +86,7 @@
},
"NAME": {
"type": "cexostring",
"value": "Gerater Beholder Mage"
"value": "Greater Beholder Mage"
},
"RESREF": {
"type": "resref",
@ -874,7 +874,7 @@
},
"FACTION": {
"type": "cexostring",
"value": ""
"value": "Hostile"
},
"NAME": {
"type": "cexostring",
@ -1212,11 +1212,11 @@
"__struct_id": 0,
"CR": {
"type": "float",
"value": 16.0
"value": 15.0
},
"FACTION": {
"type": "cexostring",
"value": ""
"value": "Hostile"
},
"NAME": {
"type": "cexostring",

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -582,27 +582,25 @@ void main()
{
//:: Execute drop in from above spawn.
ExecuteScript("nw_c2_dropin9", OBJECT_SELF);
//:: Execute CODI AI OnSpawn script.
ExecuteScript(sSpawnType, OBJECT_SELF);
}
else
{
//:: Execute CODI AI OnSpawn script.
ExecuteScript(sSpawnType, OBJECT_SELF);
//:: Execute default OnSpawn script.
//ExecuteScript("nw_c2_default9", OBJECT_SELF);
//:: Execute PRC OnSpawn module hook script.
ExecuteScript("prc_pwonspawn", OBJECT_SELF);
//:: Execute PRC OnSpawn script.
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
}
//:: Set or Randomize name
ms_Nomenclature(OBJECT_SELF);
//:: Execute PRC OnSpawn script.
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
//:: Post Spawn event requested
if (nSpecEvent == 2 || nSpecEvent == 3)
{
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN));
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN));
}
}

View File

@ -0,0 +1,174 @@
//::///////////////////////////////////////////////
//:: On Spawn In
//::
//:://////////////////////////////////////////////
/*
Determines the course of action to be taken
after having just been spawned in
*/
//:://////////////////////////////////////////////
#include "sd_lootsys_tools"
#include "no_lib_data"
#include "no_inc"
void main()
{
SetThreatLevel(OBJECT_SELF);
//Dragon config
AddBehaviour( "+ENHANCESELF", 100 ); //enhancing spells [self]
AddBehaviour( "+DISPELAOE", 90 ); //Dispel AOEs
AddBehaviour( "+DISPEL", 40 ); //Dispel [enemies]
AddBehaviour( "+DISMISSAL", 80 ); //Dismiss [summoned enemies]
AddBehaviour( "+BREATH", 25 ); //breath weapons
AddBehaviour( "+FEATENHANCE", 60 ); //feat enhance [self]
AddBehaviour( "+ATKMELEE", 100 ); //melee attack
/*
// Movement
AddBehaviour( "+AVOIDENEMY", 100 ); //Keep away from enemies
AddBehaviour( "+AVOIDMELEE", 100 ); //Flee
//Melee
AddBehaviour( "+MELEEASSIST", 100 ); //Melee Assist [allies]
AddBehaviour( "+ATKRANGED", 100 ); //ranged attack
AddBehaviour( "+ATKMELEE", 100 ); //melee attack
// Buffs self
AddBehaviour( "+DEFSELF", 100 ); //defensive [self]
AddBehaviour( "+ENHANCESELF", 100 ); //enhancing spells [self]
AddBehaviour( "+FEATENHANCE", 100 ); //feat enhance [self]
// Buffs party
AddBehaviour( "+DEFSING", 100 ); //defensive [single allies]
AddBehaviour( "+ENHANCESING", 100 ); //enhancing spells [single allies]
AddBehaviour( "+VIS", 100 ); //visual aid spells [self/allies]
AddBehaviour( "+GROUPENHANCE", 100 ); //enhancing spells [AOE]
// Curing
AddBehaviour( "+HELP", 100 ); //Restore debuffs [self/allies]
AddBehaviour( "+RAISE", 100 ); //Ressurect [allies]
// Healing
AddBehaviour( "+HEAL", 100 ); //heal [self/allies]
AddBehaviour( "+HEALSELF", 100 ); //Use pots/spec abil [heal self]
AddBehaviour( "+GROUPHEAL", 100 ); //AOE heal [Allies]
// Off casting
AddBehaviour( "+DIRECT", 100 ); // attack spells [single enemy]
AddBehaviour( "+TOUCH", 100 ); //touch attack spells [single enemy]
AddBehaviour( "+AREA", 100 ); //AOEs
AddBehaviour( "+SUMMON", 100 ); //Summon allies
//Def casting
AddBehaviour( "+COUNTERSPELL", 100 ); //Counterspell [enemy]
AddBehaviour( "+DISPELAOE", 100 ); //Dispel AOEs
AddBehaviour( "+DISPEL", 100 ); //Dispel [enemies]
AddBehaviour( "+DISMISSAL", 100 ); //Dismiss [summoned enemies]
AddBehaviour( "+BREACH", 100 ); //Spell Breach [enemy]
// Special
AddBehaviour( "+TIMESTOP", 100 ); //Cast Time Stop
AddBehaviour( "+BREATH", 100 ); //breath weapons
AddBehaviour( "+TURN", 100 ); //Turn Undead
AddBehaviour( "+EYERAYS", 100 ); //Specific behaviour for: Beholders
AddBehaviour( "+CENTRALEYE", 100 ); //Specific behaviour for: Beholders
*/
//Other config
//Corpse decay set up and exclusions
SetCorpseDelay();
//Set whether the creature can use EffectDisappearAppear when moving
SetIsFlier();
if ( GetIsObjectValid( GetMaster( OBJECT_SELF ) ) )
{
//I am probably a summoned creature, possibly a henchman
SetAssociateListenPatterns();
}
//set voice chat config
SetVoiceChat( NO_VC_DEFAULT, 10 );
//configure perception ranges
SetPerceptionRanges();
//set response range for fighting broadcast
SetResponseRange( BC_FIGHTING, 50.0 );
//tell creature it is ready to act
//SetReadyStatus();
//set fastbuffer status, should always be left on
SetIsFastBuffer( TRUE );
//SetLocalInt( OBJECT_SELF, "#FASTBUFFER", 1 );
//SetLocalInt( OBJECT_SELF, "#ACTIVE", 1 );
//log starting location
ExecuteScript( "no_scr_logspnloc", OBJECT_SELF );
//log loaded melee weapons
ExecuteScript( "no_scr_logeq", OBJECT_SELF );
// OPTIONAL BEHAVIORS (Comment In or Out to Activate ) ****************************************************************************
//SetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION);
//SetSpawnInCondition(NW_FLAG_SPECIAL_COMBAT_CONVERSATION);
// This causes the creature to say a special greeting in their conversation file
// upon Perceiving the player. Attach the [NW_D2_GenCheck.nss] script to the desired
// greeting in order to designate it. As the creature is actually saying this to
// himself, don't attach any player responses to the greeting.
//SetSpawnInCondition(NW_FLAG_SHOUT_ATTACK_MY_TARGET);
// This will set the listening pattern on the NPC to attack when allies call
//SetSpawnInCondition(NW_FLAG_STEALTH);
// If the NPC has stealth and they are a rogue go into stealth mode
//SetSpawnInCondition(NW_FLAG_SEARCH);
// If the NPC has Search go into Search Mode
//SetSpawnInCondition(NW_FLAG_SET_WARNINGS);
// This will set the NPC to give a warning to non-enemies before attacking
//SetSpawnInCondition(NW_FLAG_SLEEP);
//Creatures that spawn in during the night will be asleep.
//SetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING);
//SetSpawnInCondition(NW_FLAG_APPEAR_SPAWN_IN_ANIMATION);
//SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS);
SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);
// SetAnimationCondition(NW_ANIM_FLAG_IS_CIVILIZED);
SetAnimationCondition(NW_ANIM_FLAG_CONSTANT);
// SetAnimationCondition(NW_ANIM_FLAG_CHATTER);
// SetAnimationCondition(NW_ANIM_FLAG_IS_MOBILE_CLOSE_RANGE);
//This will play Ambient Animations until the NPC sees an enemy or is cleared.
//NOTE that these animations will play automatically for Encounter Creatures.
// NOTE: ONLY ONE OF THE FOLOOWING ESCAPE COMMANDS SHOULD EVER BE ACTIVATED AT ANY ONE TIME.
//SetSpawnInCondition(NW_FLAG_ESCAPE_RETURN); // OPTIONAL BEHAVIOR (Flee to a way point and return a short time later.)
//SetSpawnInCondition(NW_FLAG_ESCAPE_LEAVE); // OPTIONAL BEHAVIOR (Flee to a way point and do not return.)
//SetSpawnInCondition(NW_FLAG_TELEPORT_LEAVE); // OPTIONAL BEHAVIOR (Teleport to safety and do not return.)
//SetSpawnInCondition(NW_FLAG_TELEPORT_RETURN); // OPTIONAL BEHAVIOR (Teleport to safety and return a short time later.)
// CUSTOM USER DEFINED EVENTS
/*
The following settings will allow the user to fire one of the blank user defined events in the NW_D2_DefaultD. Like the
On Spawn In script this script is meant to be customized by the end user to allow for unique behaviors. The user defined
events user 1000 - 1010
*/
//SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1001
//SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1002
//SetSpawnInCondition(NW_FLAG_ATTACK_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1005
//SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1006
//SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1008
//SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1003
//SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1004
//SetSpawnInCondition(NW_FLAG_DEATH_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1007
SetListeningPatterns(); // Goes through and sets up which shouts the NPC will listen to.
WalkWayPoints(); // Optional Parameter: void WalkWayPoints(int nRun = FALSE, float fPause = 1.0)
// 1. Looks to see if any Way Points in the module have the tag "WP_" + NPC TAG + "_0X", if so walk them
// 2. If the tag of the Way Point is "POST_" + NPC TAG the creature will return this way point after
// combat.
int iDice = d100();
if (iDice<20)ExecuteScript ("cd_helper_func", OBJECT_SELF);
}

View File

@ -82,6 +82,7 @@ void main()
// combat.
GenerateNPCTreasure(); //* Use this to create a small amount of treasure on the creature
ExecuteScript("prc_pwonspawn", OBJECT_SELF);
ExecuteScript("prc_pwonspawn", OBJECT_SELF);
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
}

View File

@ -18,6 +18,10 @@ If the player is playing a legal character or not...read below..
And if the Player themself have been banned from the module or not..
*/
//////////////////////////////////////////////////////////////////////
#include "nwnx_player"
//Required Include For Color Messages(Read include to learn more)
#include "gen_inc_color"
#include "inc_utility"
//Redundant Variables Declared
effect eEffect;
@ -26,35 +30,30 @@ object oItem;
object aTarget;
location bTarget;
//Required Include For Color Messages(Read include to learn more)
#include "gen_inc_color"
#include "inc_utility"
#include "nwnx_player"
//Required Include for SimTools
//#include "fky_chat_inc"
void SetTlkOverrideForMaximumLevel(object oPC);
void SetTlkOverrideForMaximumLevel(object oPC)
{
int nLevel = GetHitDice(oPC);
if (nLevel < 40)
{
NWNX_Player_SetTlkOverride(oPC, 315, "");
}
else
{
NWNX_Player_SetTlkOverride(oPC, 315, "Next Level: " + IntToString((nLevel + 1) * nLevel * 500) + "\n");
}
int nLevel = GetHitDice(oPC);
if (nLevel < 40)
{
NWNX_Player_SetTlkOverride(oPC, 315, "");
}
else
{
NWNX_Player_SetTlkOverride(oPC, 315, "Next Level: " + IntToString((nLevel + 1) * nLevel * 500) + "\n");
}
}
//Main Script
void main()
{
ExecuteScript("prc_onenter", OBJECT_SELF);
//Declare Major Variables
ExecuteScript("prc_onenter", OBJECT_SELF);
//Declare Major Variables..
object oPC;
oPC = GetEnteringObject();
object oTarget;
@ -62,30 +61,32 @@ void main()
object oPlayer = oPC;
object oPP = oPC;
string sCDKey = GetPCPublicCDKey(oPC, FALSE);
SetTlkOverrideForMaximumLevel(GetEnteringObject());
SetTlkOverrideForMaximumLevel(oPC);
//IMPORTANT, please set the Nap Time Below!
//If changed here you must open the script "kopcwand" and adjust it there!
object oNap = GetItemPossessedBy(oPC, "napper");
if(oNap !=OBJECT_INVALID)
{
//Only on PCs!
if(GetIsPC(oPC) && !GetIsDM(oPC) && !GetIsDMPossessed(oPC))
{
//Start the nap all over again! (the 15 = minutes of nap!)
SetLocalInt(oTarget, "NAP_TIME", 15); //set 15 to your taste
//Allow them to actually enter the module...
DelayCommand(12.0, ExecuteScript("naptime", oPC));
return;
}
}
object oNap = GetItemPossessedBy(oPC, "napper");
if(oNap !=OBJECT_INVALID)
{
//Only on PCs!
if(GetIsPC(oPC) && !GetIsDM(oPC) && !GetIsDMPossessed(oPC))
{
//Start the nap all over again! (the 15 = minutes of nap!)
SetLocalInt(oTarget, "NAP_TIME", 15); //set 15 to your taste
//Allow them to actually enter the module...
DelayCommand(12.0, ExecuteScript("naptime", oPC));
return;
}
}
//Only for PCs!
if(GetIsDM(oPC))
{
AddJournalQuestEntry("dmrules", 1, oPC, FALSE, FALSE);
return; }
//Only for DMs!
if(GetIsDM(oPC))
{
AddJournalQuestEntry("dmrules", 1, oPC, FALSE, FALSE);
return;
}
///////////////////////////////////////////////////////////////////////////
@ -122,89 +123,89 @@ return; }
//Please leave the credits to the module within the message.
//Colorful Server Message sent to all PCs when they enter the module..
string sMessage;
sMessage = GetRGB(1,7,7); //The color (See above)
sMessage += "Welcome to "; //The text to be colorized by the above color.
sMessage += GetRGB(15,15,1);//The next color.
sMessage += "Server Genisys "; //The next text to be colorized by the above color.
sMessage += GetRGB(15,1,1);//etc..
sMessage += "a Revised ";
sMessage += GetRGB(7,7,15);
sMessage += "1.69 ";
sMessage += GetRGB(1,15,1);
sMessage += "Paths of Ascension ";
sMessage += GetRGB(13,9,13);
sMessage += "Classic Module ";
sMessage += GetRGB(12,10,7);
sMessage += "Revised & ";
sMessage += GetRGB();
sMessage += "Rescripted By ";
sMessage += GetRGB(15,5,1);
sMessage += "Genisys (Guile) ";
sMessage += GetRGB(12,10,7);
sMessage += "from 8/20/08 to 3/21/09.";
string sNewb = GetRGB(1,15,1) + "This is PRC Presents Path of Ascension.";
string sNewb2 = GetRGB(1,15,1) + "Contact Altpersona on Discord if you need assistance.";
string sMessage;
sMessage = GetRGB(1,7,7); //The color (See above)
sMessage += "Welcome to "; //The text to be colorized by the above color.
sMessage += GetRGB(15,15,1);//The next color.
sMessage += "Server Genisys "; //The next text to be colorized by the above color.
sMessage += GetRGB(15,1,1);//etc..
sMessage += "a Revised ";
sMessage += GetRGB(7,7,15);
sMessage += "1.69 ";
sMessage += GetRGB(1,15,1);
sMessage += "Paths of Ascension ";
sMessage += GetRGB(13,9,13);
sMessage += "Classic Module ";
sMessage += GetRGB(12,10,7);
sMessage += "Revised & ";
sMessage += GetRGB();
sMessage += "Rescripted By ";
sMessage += GetRGB(15,5,1);
sMessage += "Genisys (Guile) ";
sMessage += GetRGB(12,10,7);
sMessage += "from 8/20/08 to 3/21/09.";
string sNewb = GetRGB(1,15,1) + "This is PRC Presents Path of Ascension.";
string sNewb2 = GetRGB(1,15,1) + "Contact Altpersona on Discord if you need assistance.";
//string sNewb = GetRGB(1,15,1) + "Be sure to read your journal frequently (press J).";
//string sNewb2 = GetRGB(1,15,1) + "Be sure to examine the Rest Menu carefully.";
string sEnter = GetName(oPC) + " / " + GetPCPlayerName(oPC) + " / " + GetPCPublicCDKey(oPC) + " / " + GetPCIPAddress(oPC) + " Entered." ;
SendMessageToAllDMs(sEnter);
string sEnter = GetName(oPC) + " / " + GetPCPlayerName(oPC) + " / " + GetPCPublicCDKey(oPC) + " / " + GetPCIPAddress(oPC) + " Entered." ;
SendMessageToAllDMs(sEnter);
//Get all the stats on the player when they enter the module...
WriteTimestampedLogEntry(sEnter);
WriteTimestampedLogEntry(sEnter);
//Float welcome message by..
DelayCommand(15.3, FloatingTextStringOnCreature(sMessage, oPC, FALSE));
DelayCommand(15.3, FloatingTextStringOnCreature(sMessage, oPC, FALSE));
if(GetHitDice(oPC)<=6)
{
DelayCommand(19.3, FloatingTextStringOnCreature(sNewb, oPC, FALSE));
DelayCommand(27.3, FloatingTextStringOnCreature(sNewb2, oPC, FALSE));
}
if(GetHitDice(oPC)<=6)
{
DelayCommand(19.3, FloatingTextStringOnCreature(sNewb, oPC, FALSE));
DelayCommand(27.3, FloatingTextStringOnCreature(sNewb2, oPC, FALSE));
}
//This means the entering Character has been banned.
int nBann = GetCampaignInt(GetName(GetModule()), "CBANN", oPP);
int nBann = GetCampaignInt(GetName(GetModule()), "CBANN", oPP);
object oTag;
location lTag;
object oTag;
location lTag;
//This part is about verifying the Player's name..
//A player must have at least a 2 character name or they are going to
//return with an error! If they have spaces in their name it will return
//with an error as well, including alt code!
string sPCNM = GetName(oPP);
string sPCNMR = GetStringRight(sPCNM, 2);
string sNC1; string sNC2; string sRNC1; string sRNC2;
int nBad;
string sPCNM = GetName(oPP);
string sPCNMR = GetStringRight(sPCNM, 2);
string sNC1; string sNC2; string sRNC1; string sRNC2;
int nBad;
//Find the second character of the players name..
sNC1 = GetSubString(sPCNM, 0, 1);
sNC1 = GetSubString(sPCNM, 0, 1);
//Find the second character of the players name..
sNC2 = GetSubString(sPCNM, 0, 2);
sNC2 = GetSubString(sPCNM, 0, 2);
//Find the last letter in the player's name.
sRNC1 = GetSubString(sPCNMR, 0, 1);
sRNC1 = GetSubString(sPCNMR, 0, 1);
//Find the next to the last letter in the player's name.
sRNC2 = GetSubString(sPCNMR, 0, 2);
sRNC2 = GetSubString(sPCNMR, 0, 2);
/////////////////////////IMPORTANT//////////////////////////////////
//You must make all the "" below into " " to check for legal names
//I turned it off because a lot of my characters have bad names!
//Simply put the cursor between "" and hit the space bar for "" to " "
if(sNC1 =="")
{ nBad =1; }
else if(sNC2 =="")
{ nBad =1; }
else if(sRNC1 =="")
{ nBad =1; }
else if(sRNC2 =="")
{ nBad =1; }
else { nBad = 0; }
if(sNC1 =="")
{ nBad =1; }
else if(sNC2 =="")
{ nBad =1; }
else if(sRNC1 =="")
{ nBad =1; }
else if(sRNC2 =="")
{ nBad =1; }
else { nBad = 0; }
//See below to activate this system..
////////////////////////////////////////////////////////////////////////////
//This is for the rest of the script, if it's not a PC stop here!
if(!GetIsPC(oPC))return;
if(!GetIsPC(oPC))return;
/////////////////////////////////////////////////////////////////////////////
@ -217,15 +218,15 @@ if(!GetIsPC(oPC))return;
//AddJournalQuestEntry("x2spells", 1, oPC, FALSE, FALSE);
//AddJournalQuestEntry("feats", 1, oPC, FALSE, FALSE);
//AddJournalQuestEntry("shifter", 1, oPC, FALSE, FALSE);
AddJournalQuestEntry("xprules", 1, oPC, FALSE, FALSE);
AddJournalQuestEntry("serverrules", 1, oPC, FALSE, FALSE);
AddJournalQuestEntry("xprules", 1, oPC, FALSE, FALSE);
AddJournalQuestEntry("serverrules", 1, oPC, FALSE, FALSE);
//AddJournalQuestEntry("legartjournal", 1, oPC, FALSE, FALSE);
if(GetHitDice(oPC) <=5)
{
AddJournalQuestEntry("legartjournal", 1, oPC, FALSE, FALSE);
}
if(GetHitDice(oPC) <=5)
{
AddJournalQuestEntry("legartjournal", 1, oPC, FALSE, FALSE);
}
//////////////////IMPORTANT////////////////IMPORTANT////////////////////////
@ -241,9 +242,9 @@ AddJournalQuestEntry("legartjournal", 1, oPC, FALSE, FALSE);
if(GetHitDice(oPC) == 40 || GetItemPossessedBy(oPC, "guildpass")!=OBJECT_INVALID)
{
//Lets make the concealed 50%
eEffect = EffectConcealment(50);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC);
eEffect = EffectConcealment(50);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC);
//Lets make the look like a ghost.. :)
//To activate, simply delete the // below this line
@ -256,11 +257,11 @@ AddJournalQuestEntry("legartjournal", 1, oPC, FALSE, FALSE);
//This is the immortal option, you must utilize the "makeimmortal" script
//to make players immortal (please read that script.)
if(GetItemPossessedBy(oPC, "immotoken") != OBJECT_INVALID)
{
//Run this script on the player (See script to configure settings)
ExecuteScript("powerimmortal", oPC);
}
if(GetItemPossessedBy(oPC, "immotoken") != OBJECT_INVALID)
{
//Run this script on the player (See script to configure settings)
ExecuteScript("powerimmortal", oPC);
}
//////////////////////////////////////////////////////////////////////////////
//If a player has been found with an illegal character they will have this item.
@ -284,45 +285,45 @@ if (GetItemPossessedBy(oPC, "banned")!= OBJECT_INVALID)
}
// */
////////////////////////////////////////////////////////////////////////////
object oDeath = GetItemPossessedBy(oPC, "death");
object oDeath = GetItemPossessedBy(oPC, "death");
//Since the player was dead when they logged, kill them!
if (oDeath!=OBJECT_INVALID)
{
if (oDeath!=OBJECT_INVALID)
{
//FIRST REMOVE THE DEATH TOKEN!!
DestroyObject(oDeath, 0.0f);
DestroyObject(oDeath, 0.0f);
effect eEffect;
eEffect = EffectDamage(3000, DAMAGE_TYPE_POSITIVE, DAMAGE_POWER_ENERGY);
eEffect = SupernaturalEffect(eEffect);
DelayCommand(5.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC));
DelayCommand(6.2, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC));
DelayCommand(7.0, FloatingTextStringOnCreature
("<cëÏ6>Logging out to cheat death is not permitted on this server, YOU HAVE BEEN WARNED!</c>", oPC, TRUE));
effect eEffect;
eEffect = EffectDamage(3000, DAMAGE_TYPE_POSITIVE, DAMAGE_POWER_ENERGY);
eEffect = SupernaturalEffect(eEffect);
DelayCommand(5.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC));
DelayCommand(6.2, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC));
DelayCommand(7.0, FloatingTextStringOnCreature
("<cëÏ6>Logging out to cheat death is not permitted on this server, YOU HAVE BEEN WARNED!</c>", oPC, TRUE));
SendMessageToAllDMs(GetName(oPC) + " HAS LOGGED OUT TO CHEAT DEATH!");
SendMessageToAllDMs(GetName(oPC) + " HAS LOGGED OUT TO CHEAT DEATH!");
}
////////////////////////////////////////////////////////////////////////
//Handling BANN on this server...
//Let's see if the entering PC has been banned Altogether!
if(GetCampaignInt(GetName(GetModule()), "ADMIN_BANN", oPP)==2)
{
//Boot the PC fast!
DelayCommand(3.3, BootPC(oPP));
return;
}
if(GetCampaignInt(GetName(GetModule()), "ADMIN_BANN", oPP)==2)
{
//Boot the PC fast!
DelayCommand(3.3, BootPC(oPP));
return;
}
//Let's see if the player's character has been banned..
if(GetItemPossessedBy(oPP, "char_bann")!=OBJECT_INVALID)
{
if(GetItemPossessedBy(oPP, "char_bann")!=OBJECT_INVALID)
{
//If so boot them fast!
DelayCommand(2.5, BootPC(oPP));
//If so boot them fast!
DelayCommand(2.5, BootPC(oPP));
return;
}
return;
}
@ -362,4 +363,4 @@ else
///////////////////////////////////////////////////////////////
//End Script
}
}

View File

@ -14,73 +14,79 @@ Intergrated SimTools to the OnPlayerLevelUp Event
//Required Include for SimTools
//#include "fky_chat_inc"
void SetTlkOverrideForMaximumLevel(object oPC);
void SendMessageToAllPC(string sMessage);
void SetTlkOverrideForMaximumLevel(object oPC)
{
int nLevel = GetHitDice(oPC);
if (nLevel < 40)
{
NWNX_Player_SetTlkOverride(oPC, 315, "");
}
else
{
NWNX_Player_SetTlkOverride(oPC, 315, "Next Level: " + IntToString((nLevel + 1) * nLevel * 500) + "\n");
}
int nLevel = GetHitDice(oPC);
if (nLevel < 40)
{
NWNX_Player_SetTlkOverride(oPC, 315, "");
}
else
{
NWNX_Player_SetTlkOverride(oPC, 315, "Next Level: " + IntToString((nLevel + 1) * nLevel * 500) + "\n");
}
}
void SendMessageToAllPC(string sMessage)
{
object oPC = GetFirstPC();
while(GetIsObjectValid(oPC))
{
SendMessageToPC(oPC, sMessage);
oPC = GetNextPC();
}
object oPC = GetFirstPC();
while(GetIsObjectValid(oPC))
{
SendMessageToPC(oPC, sMessage);
oPC = GetNextPC();
}
}
void main()
{
ExecuteScript("prc_levelup", OBJECT_SELF);
object oPC = GetPCLevellingUp();
int nHD = GetHitDice(oPC);
location lSaved = GetLocation(oPC);
int MULTI_PLAYER = GetLocalInt(GetModule(), "multi");
SetTlkOverrideForMaximumLevel(GetPCLevellingUp());
///////LOCATION SAVING OPTION////////
//Delete the /* above to activate
SetTlkOverrideForMaximumLevel(oPC);
//If in the guild only!
//If they are in the guild...
if(GetItemPossessedBy(oPC, "guildpass")!=OBJECT_INVALID)
{
if(GetArea(GetAreaFromLocation(lSaved))!=OBJECT_INVALID)
{
object oGuild = GetItemPossessedBy(oPC, "guildstone");
if(GetItemPossessedBy(oPC, "guildpass")!=OBJECT_INVALID)
{
if(GetArea(GetAreaFromLocation(lSaved))!=OBJECT_INVALID)
{
object oGuild = GetItemPossessedBy(oPC, "guildstone");
//Store the PC's location, so they can come back here after relogging
SetCampaignLocation("LOCATIONS", GetName(oGuild), lSaved, oPC);
//Store the PC's location, so they can come back here after relogging
SetCampaignLocation("LOCATIONS", GetName(oGuild), lSaved, oPC);
//Tell the PC thier location was saved..
SendMessageToPC(oPC, "Location Saved.");
}
}
//Tell the PC thier location was saved..
SendMessageToPC(oPC, "Location Saved.");
}
}
// (DO NOT TOUCH THIS LINE!) */
/////////////////////////////////////////
///Character Auto Save (Single Character / safe save)
//:: Character Auto Save (Single Character / safe save)
if(MULTI_PLAYER)
{
//DelayCommand(3.0, ExportSingleCharacter(oPC));
}
else
{
//DelayCommand(2.0, DoSinglePlayerAutoSave());
}
if(MULTI_PLAYER)
{
//DelayCommand(3.0, ExportSingleCharacter(oPC));
}
else
{
//DelayCommand(2.0, DoSinglePlayerAutoSave());
}
if(nHD == 5 || nHD == 10 || nHD == 15 || nHD == 20 ||
nHD == 25 || nHD == 30 || nHD == 35 || nHD == 40)
@ -90,27 +96,17 @@ else
if(nHD == 40)
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectVisualEffect(VFX_DUR_GLOW_WHITE)), oPC);
}
if (!GetIsPC(oPC)) return;
int nInt;
nInt = GetObjectType(oPC);
{
if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_KNOCK), oPC);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_KNOCK), GetLocation(oPC));
object oPC = GetPCLevellingUp();
if (!GetIsPC(oPC)) return;
object oTarget;
oTarget = oPC;
int nInt;
nInt = GetObjectType(oTarget);
if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_KNOCK), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_KNOCK), GetLocation(oTarget));
}
/////////////////////////CHARACTER SCANNING OPTIONS////////////////////////

View File

@ -13,6 +13,16 @@
void ReallyEquipItemInSlot(object oNPC, object oItem, int nSlot);
void ReallyEquipItemInSlot(object oNPC, object oItem, int nSlot)
{
if (GetItemInSlot(nSlot) != oItem)
{
//ClearAllActions();
AssignCommand(oNPC, ActionEquipItem(oItem, nSlot));
DelayCommand(0.5, ReallyEquipItemInSlot(oNPC, oItem, nSlot));
}
}
void main()
{
//:: Initialize Major Variables
@ -30,8 +40,6 @@ void main()
object oSkelly;
object oPC = GetFirstObjectInArea(oArea);
//ExecuteScript("prc_npc_spawn", OBJECT_SELF); -NOT NEEDED
//:: Get average PC level for area
//:: Cycle through PCs in Area
@ -67,15 +75,19 @@ void main()
(sMonthDay == "10/31") ||
(sMonthDay == "11/01"))
{
//: Don't spawn skeletons from skeletons or commoners
if (GetResRef(OBJECT_SELF) == "pa_skeleton" || GetResRef(OBJECT_SELF) == "nw_skeleton" || nCommoner > 0)
return;
//:: 33% chance to spawn
if ( Random(100) < 33 )
{
//:: Spawn Skeleton.
eVFX = EffectVisualEffect(VFX_IMP_EVIL_HELP);
oSkelly = CreateObject(OBJECT_TYPE_CREATURE, "nw_skeleton", GetLocation(OBJECT_SELF));
DelayCommand(0.1f, ActionDoLevelUp(oSkelly, nAveragePCLevel));
DelayCommand(0.0, ActionDoLevelUp(oSkelly, nAveragePCLevel));
//:: Assign Weapon
//:: Assign Weapon
int nResult = d6(1);
int nStackSize = 1; // Create 1 items;
string sItem;
@ -109,19 +121,8 @@ void main()
//:: Apply VFX & Attack
AssignCommand(oSkelly, DetermineCombatRound(OBJECT_SELF));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oSkelly);
DelayCommand(0.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oSkelly));
}
}
}
void ReallyEquipItemInSlot(object oNPC, object oItem, int nSlot)
{
if (GetItemInSlot(nSlot) != oItem)
{
//ClearAllActions();
AssignCommand(oNPC, ActionEquipItem(oItem, nSlot));
DelayCommand(0.3, ReallyEquipItemInSlot(oNPC, oItem, nSlot));
}
}
}
}

View File

@ -1,10 +1,6 @@
#include "prc_inc_util"
void ActionDoLevelUp(object oCreature, int iLevels);
int LevelMob(object oCreature, int iLevels);
int GetPackage(int iClass);
void ActionDoLevelUp(object oCreature, int iLevels);
void ActionDoLevelUp(object oCreature, int iLevels)
{
@ -13,35 +9,38 @@ void ActionDoLevelUp(object oCreature, int iLevels)
int LevelMob(object oCreature, int iLevels)
{
int iNewLevel;
int iIndex;
int iClass;
int iPackage;
int iNewLevel;
int iIndex;
int iClass;
int iPackage;
if (GetClassByPosition(2,oCreature) == CLASS_TYPE_INVALID)
{
iClass = GetClassByPosition(1,oCreature);
iPackage =PACKAGE_INVALID;
} else {
iClass = CLASS_TYPE_INVALID;
iPackage =PACKAGE_INVALID;
}
if (GetClassByPosition(2,oCreature) == CLASS_TYPE_INVALID)
{
iClass = GetClassByPosition(1,oCreature);
iPackage =PACKAGE_INVALID;
}
else
{
iClass = CLASS_TYPE_INVALID;
iPackage =PACKAGE_INVALID;
}
iIndex = 1;
while (iIndex <= iLevels)
{
iNewLevel=LevelUpHenchman(oCreature,iClass,TRUE,iPackage);
iIndex++;
}
iIndex = 1;
while (iIndex <= iLevels)
{
iNewLevel=LevelUpHenchman(oCreature,iClass,TRUE,iPackage);
iIndex++;
}
//Force Rest to mem spells
PRCForceRest(oCreature);
//Force Rest to mem spells
ForceRest(oCreature);
//Give more treasure to be lvl appropriate
//rem this out cuz too much code is running and getting error
//CTG_GenerateNPCTreasure(TREASURE_TYPE_MONSTER, oCreature);
//Give more treasure to be lvl appropriate
//rem this out cuz too much code is running and getting error
//CTG_GenerateNPCTreasure(TREASURE_TYPE_MONSTER, oCreature);
return iNewLevel;
return iNewLevel;
}
//Setup Random Packages, note that Wizards won't get random packages
@ -168,7 +167,5 @@ switch (iClass)
break;
}
return iPackage;
}
//:: void main (){}
return iPackage;
}

File diff suppressed because it is too large Load Diff

View File

@ -109,15 +109,14 @@ void Take1Level(object oTarget)
case 59: nXP = 1653000; break;
case 60: nXP = 1711000; break;
}
SetXP(oTarget, nXP);
SetXP(oTarget, nXP);
}
//The Function Below Give1Level(oTarget); gives the Target one level.
//IMPORTANT: This function cannot be used with Take1Level(oTarget);
//or it will delevel the target!!!!
//I created this exlusively for the purpose of my DM wand
//I created this exlusively for the purose of my DM wand
//and other scripts which only give the PC one level as a reward.
void Give1Level(object oTarget)
{
@ -187,9 +186,8 @@ void Give1Level(object oTarget)
case 59: nXP = 1770000; break;
case 60: nXP = 1830000; break;
}
SetXP(oTarget, nXP);
}
@ -212,6 +210,7 @@ void Relevel(object oTarget)
TakeGoldFromCreature(nGold, oTarget, TRUE);
SetXP(oTarget, 0);
DelayCommand(1.0, GiveXPToCreature(oTarget, gXP));
}
else
{
@ -231,36 +230,34 @@ void Relevel1(object oTarget)
DelayCommand(1.0, SetXP(oTarget, gXP));
}
//The Function Relevel5(oTarget) will take 5 levels from the Target and give
//back their orginal XP. This script does not cause xp loss whatsoever.
//The Function Relevel3(oTarget) will take 3 levels from the Target and give
//back thier orginal XP. This script does not cause xp loss whatsoever.
void Relevel5(object oTarget)
{
int nCCXP;
nCCXP = GetXP(oTarget);
SetLocalInt(oTarget, "pc_exact_xp", nCCXP);
int gXP = GetLocalInt(oTarget, "pc_exact_xp");
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
DelayCommand(1.0, SetXP(oTarget, gXP));
}
//The Function Relevel10(oTarget) will take 10 levels from the Target and give
//back their orginal XP. This script does not cause xp loss whatsoever.
//The Function Relevel5(oTarget) will take 5 levels from the Target and give
//back thier orginal XP. This script does not cause xp loss whatsoever.
void Relevel10(object oTarget)
{
int nGold = GetHitDice(oTarget) * 50;
if(GetGold(oTarget) >= nGold)
{
int nCCXP;
nCCXP = GetXP(oTarget);
SetLocalInt(oTarget, "pc_exact_xp", nCCXP);
int gXP = GetLocalInt(oTarget, "pc_exact_xp");
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
@ -271,7 +268,6 @@ void Relevel10(object oTarget)
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
DelayCommand(1.0, SetXP(oTarget, gXP));
}
}
@ -286,6 +282,7 @@ void ApplyRespawnPenalty(object oPlayer)
{
int cLvl = GetHitDice(oPlayer);
int nXP;
//We need this switch to determine what xp they must keep..
switch (cLvl)
{
@ -373,7 +370,4 @@ void ApplyRespawnPenalty(object oPlayer)
SetXP(oPlayer, nXP); //Set them to the minimum required for level.
TakeGoldFromCreature(pGold, oPlayer, TRUE); //Take 10% of their gold.
}
}
//:: void main (){}
}

View File

@ -15,20 +15,6 @@ character.
*/
////////////////////////////////////
#include "nwnx_player"
void SetTlkOverrideForMaximumLevel(object oPC)
{
int nLevel = GetHitDice(oPC);
if (nLevel < 40)
{
NWNX_Player_SetTlkOverride(oPC, 315, "");
}
else
{
NWNX_Player_SetTlkOverride(oPC, 315, "Next Level: " + IntToString((nLevel + 1) * nLevel * 500) + "\n");
}
}
void main()
{
@ -65,8 +51,6 @@ int tXP = cXP + rXP; //rXP + pXP;
//Take all the player's XP
SetXP(oPC, 0);
SetTlkOverrideForMaximumLevel(oPC);
//Let's make sure the character is saved!!!!
DelayCommand(1.0, ExportSingleCharacter(oPC));

View File

@ -74,7 +74,7 @@ const int PC_DIVIDE_XP = FALSE;
// Minimum XP possible for all PC's
// Default is 5 XP
// Do NOT set this to 0
const int MIN_XP = 5;
const int MIN_XP = 1;
// Check XP to consider level or not?
// Set to TRUE to check the PC's XP to consider level

View File

@ -1,180 +0,0 @@
//::///////////////////////////////////////////////
//:: Name x2_def_heartbeat
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Default Heartbeat script
*/
//:://////////////////////////////////////////////
//:: Created By: Keith Warner
//:: Created On: June 11/03
//:://////////////////////////////////////////////
#include "prc_inc_spells"
/*
Swarm, Berzerker Wasp: 10 HD ar_berzwasp001
Swarm, Berzerker Wasp: 14 HD ar_berzwasp002
Swarm, Locust: 08 HD ds_locustswarm01
Swarm, Mini Kank: 04 HD ds_minkankswrm01
Swarm, Reptilian Bat: 04 HD ds_repbatswrm001
*/
void FollowTarget(string sTargetTag, float fDistance);
void FollowTarget(string sTargetTag, float fDistance)
{
object oTarget = GetObjectByTag(sTargetTag);
if (GetIsObjectValid(oTarget))
{
vector vTargetPosition = GetPosition(oTarget);
vector vCurrentPosition = GetPosition(OBJECT_SELF);
float fDistanceToTarget = VectorMagnitude(vTargetPosition - vCurrentPosition);
// Move to the target if the distance is greater than the desired follow distance
if (fDistanceToTarget > fDistance)
{
AssignCommand(OBJECT_SELF, ActionMoveToObject(oTarget, TRUE, fDistance));
}
}
}
void main()
{
//:: Declare major variables
object oNPC = OBJECT_SELF;
object oArea = GetArea(oNPC);
string sResRef = GetResRef(oNPC);
string sAreaResRef = GetResRef(oArea);
int nTrampleScore = (GetLocalInt(oNPC, "TRAMPLER") + GetHasFeat(FEAT_CENTAUR_TRAMPLE, oNPC));
int nChargeScore = (GetLocalInt(oNPC, "CHARGER") +
GetHasFeat(FEAT_MINOTAUR_CHARGE, oNPC) +
GetHasFeat(FEAT_ACROBATIC_CHARGE, oNPC) +
GetHasFeat(FEAT_SHIELD_CHARGE ,oNPC) +
GetHasFeat(FEAT_POWERFUL_CHARGE, oNPC) +
GetHasFeat(FEAT_GREATER_POWERFUL_CHARGE, oNPC) +
GetHasFeat(FEAT_RHINO_TRIBE_CHARGE, oNPC) +
GetHasFeat(FEAT_FURIOUS_CHARGE, oNPC) +
GetHasFeat(FEAT_RECKLESS_CHARGE, oNPC) +
GetHasFeat(FEAT_COBALT_CHARGE, oNPC));
int nBullRushScore = (GetLocalInt(oNPC, "BULLRUSHER") +
GetHasFeat(FEAT_IMPROVED_BULLRUSH, oNPC) +
GetHasFeat(FEAT_RAMPAGING_BULL_RUSH, oNPC) +
GetHasFeat(5241, oNPC) + //:: Expert Bull Rush
GetHasFeat(5247, oNPC)); //:: Superior Bull Rush
int iAwesomeBlow = GetHasFeat(FEAT_AWESOME_BLOW, oNPC);
int iOverrun = GetHasFeat(FEAT_IMPROVED_OVERRUN, oNPC);
//:: Run Various Combat Maneuver Heartbeats
if(iOverrun)
{
if (GetLocalInt(oNPC, "OverrrunCooldown") != 1)
{
if(DEBUG) DoDebug( "x2_def_heartbeat: Creature w/ Overrun Detected");
DelayCommand(0.0f, ExecuteScript("overrunner_hb", oNPC));
}
else
if(DEBUG) DoDebug("x2_def_heartbeat: Overrun is on cooldown.");
}
if(iAwesomeBlow)
{
if (GetLocalInt(oNPC, "AwesomeBlowCooldown") != 1)
{
if(DEBUG) DoDebug("x2_def_heartbeat: Creature w/ Awesome Blow Detected");
DelayCommand(0.0f, ExecuteScript("awesomeblow_hb", oNPC));
}
else
if(DEBUG) DoDebug("x2_def_heartbeat: Awesome Blow is on cooldown.");
}
if(nTrampleScore)
{
if (GetLocalInt(oNPC, "TrampleCooldown") != 1)
{
if(DEBUG) DoDebug("x2_def_heartbeat: Trampler Detected");
DelayCommand(0.0f, ExecuteScript("trampler_hb", oNPC));
}
else
if(DEBUG) DoDebug("x2_def_heartbeat: Trample is on cooldown.");
}
if(nChargeScore)
{
if (GetLocalInt(oNPC, "ChargeCooldown") != 1)
{
if(DEBUG) DoDebug("x2_def_heartbeat: Charger Detected");
DelayCommand(0.0f, ExecuteScript("charger_hb", oNPC));
}
else
if(DEBUG) DoDebug("x2_def_heartbeat: Charge is on cooldown.");
}
if(nBullRushScore)
{
if (GetLocalInt(oNPC, "BullRushCooldown") != 1)
{
if(DEBUG) DoDebug("x2_def_heartbeat: Bull Rusher Detected");
DelayCommand(0.0f, ExecuteScript("bullrusher_hb", oNPC));
}
else
if(DEBUG) DoDebug("x2_def_heartbeat: Bull Rush is on cooldown.");
}
//:: Runs Malevolent Spirit HB
if (sResRef == "malev_spirit001" )
{
ExecuteScript("i420_ghost_hb", oNPC);
}
//:: Runs Mini-kank swarm HB
if (sResRef == "ds_minkankswrm01" )
{
ExecuteScript("cr_minikank_hb", oNPC);
}
//:: Runs Berzerker Wasp swarm HB
if (sResRef == "ar_berzwasp001" || sResRef == "ar_berzwasp002" )
{
ExecuteScript("cr_berzwasp_hb", oNPC);
}
//:: Runs special swarm HB
if (sResRef == "ds_repbatswrm001" || sResRef == "ds_locustswarm01")
{
ExecuteScript("cr_locust_hb", oNPC);
}
//: Handles NPCs that spawn in captivity. (Sand Raiders Quest)
if (sResRef == "npc_milos" || sResRef == "npc_flaron" || sResRef == "npc_alia")
{
if ((sAreaResRef == "alt_altaruk") || (sAreaResRef == "alt_wavircoster"))
{
SetLocalInt(oNPC, "FREED_NPC", 1);
}
if(GetLocalInt(oNPC, "FREED_NPC") == 0)
{
ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 7.0);
}
}
//:: Make NPC followers follow the NPC (Sand Raiders Quest)
if ((sAreaResRef != "alt_altaruk") && (sAreaResRef != "alt_wavircoster"))
{
if (sResRef == "npc_flaron" || sResRef == "npc_alia")
{
if(GetLocalInt(oNPC, "FREED_NPC") == 1)
{
FollowTarget("NPC_MILOS", 1.0f);
}
}
}
ExecuteScript("nw_c2_default1", oNPC);
}

View File

@ -34,8 +34,6 @@ const int EVENT_USER_DEFINED_POSTSPAWN = 1511;
#include "ms_name_inc"
#include "x2_inc_switches"
#include "nwnx_webhook"
#include "nwnx_util"
void Embiggen(object oNPC, float fIncrease);
@ -47,7 +45,6 @@ void Embiggen(object oNPC, float fIncrease)
void main()
{
string sTag;
string NWNX_DISCORD_URL = "webhook URL here";
object oNPC;
//:: User defined OnSpawn event requested?
@ -56,7 +53,7 @@ void main()
//:: Pre Spawn Event requested
if (nSpecEvent == 1 || nSpecEvent == 3 )
{
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_PRESPAWN ));
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_PRESPAWN ));
}
sTag=GetLocalString(OBJECT_SELF,"X3_HORSE_OWNER_TAG");
@ -574,18 +571,9 @@ void main()
//:: Set or Randomize name
ms_Nomenclature(OBJECT_SELF);
//:: Execute PRC OnSpawn script.
//ExecuteScript("prc_npc_spawn", OBJECT_SELF); -Not needed
//Post Spawn event requeste
//:: Post Spawn event requested
if (nSpecEvent == 2 || nSpecEvent == 3)
{
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN));
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN));
}
// I don't think this should be here
//NWNX_WebHook_SendWebHookHTTPS("discordapp.com", NWNX_DISCORD_URL, "Good Morning Ascension.", "The Madman");
//
}
}

View File

@ -14,7 +14,7 @@
},
"ChallengeRating": {
"type": "float",
"value": 16.0
"value": 15.0
},
"ClassList": {
"type": "list",
@ -54,7 +54,7 @@
},
"DecayTime": {
"type": "dword",
"value": 0
"value": 5000
},
"Deity": {
"type": "cexostring",
@ -100,7 +100,7 @@
},
"FactionID": {
"type": "word",
"value": 8
"value": 1
},
"FeatList": {
"type": "list",
@ -601,11 +601,11 @@
"__struct_id": 4,
"Spell": {
"type": "word",
"value": 25
"value": 61
},
"SpellCasterLevel": {
"type": "byte",
"value": 9
"value": 12
},
"SpellFlags": {
"type": "byte",
@ -616,11 +616,11 @@
"__struct_id": 4,
"Spell": {
"type": "word",
"value": 25
"value": 61
},
"SpellCasterLevel": {
"type": "byte",
"value": 9
"value": 12
},
"SpellFlags": {
"type": "byte",
@ -631,11 +631,11 @@
"__struct_id": 4,
"Spell": {
"type": "word",
"value": 25
"value": 61
},
"SpellCasterLevel": {
"type": "byte",
"value": 9
"value": 12
},
"SpellFlags": {
"type": "byte",
@ -646,11 +646,11 @@
"__struct_id": 4,
"Spell": {
"type": "word",
"value": 25
"value": 61
},
"SpellCasterLevel": {
"type": "byte",
"value": 9
"value": 12
},
"SpellFlags": {
"type": "byte",
@ -661,86 +661,11 @@
"__struct_id": 4,
"Spell": {
"type": "word",
"value": 25
"value": 61
},
"SpellCasterLevel": {
"type": "byte",
"value": 9
},
"SpellFlags": {
"type": "byte",
"value": 1
}
},
{
"__struct_id": 4,
"Spell": {
"type": "word",
"value": 25
},
"SpellCasterLevel": {
"type": "byte",
"value": 9
},
"SpellFlags": {
"type": "byte",
"value": 1
}
},
{
"__struct_id": 4,
"Spell": {
"type": "word",
"value": 25
},
"SpellCasterLevel": {
"type": "byte",
"value": 9
},
"SpellFlags": {
"type": "byte",
"value": 1
}
},
{
"__struct_id": 4,
"Spell": {
"type": "word",
"value": 25
},
"SpellCasterLevel": {
"type": "byte",
"value": 9
},
"SpellFlags": {
"type": "byte",
"value": 1
}
},
{
"__struct_id": 4,
"Spell": {
"type": "word",
"value": 25
},
"SpellCasterLevel": {
"type": "byte",
"value": 9
},
"SpellFlags": {
"type": "byte",
"value": 1
}
},
{
"__struct_id": 4,
"Spell": {
"type": "word",
"value": 25
},
"SpellCasterLevel": {
"type": "byte",
"value": 9
"value": 12
},
"SpellFlags": {
"type": "byte",
@ -759,7 +684,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Construct"
},
"Tag": {
"type": "cexostring",

View File

@ -100,7 +100,7 @@
},
"FactionID": {
"type": "word",
"value": 8
"value": 1
},
"FeatList": {
"type": "list",
@ -133,7 +133,7 @@
},
"Gender": {
"type": "byte",
"value": 0
"value": 4
},
"GoodEvil": {
"type": "byte",
@ -712,7 +712,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Construct"
},
"Tag": {
"type": "cexostring",
@ -730,6 +730,26 @@
"type": "resref",
"value": "adamantinestatue"
},
"VarTable": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "PRC_CASTERLEVEL_OVERRIDE"
},
"Type": {
"type": "dword",
"value": 1
},
"Value": {
"type": "int",
"value": 20
}
}
]
},
"WalkRate": {
"type": "int",
"value": 3

View File

@ -826,55 +826,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "x2_def_attacked"
"value": "codi_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "x2_def_ondamage"
"value": "codi_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "x2_def_ondeath"
"value": "codi_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "x2_def_onconv"
"value": "codi_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "x2_def_ondisturb"
"value": "codi_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "x2_def_endcombat"
"value": "codi_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "x2_def_heartbeat"
"value": "codi_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "x2_def_onblocked"
"value": "codi_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "x2_def_percept"
"value": "codi_percept"
},
"ScriptRested": {
"type": "resref",
"value": "x2_def_rested"
"value": "codi_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": "x2_def_spawn"
"value": "codi_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "x2_def_spellcast"
"value": "codi_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": "x2_def_userdef"
"value": "codi_userdef"
},
"SkillList": {
"type": "list",
@ -1188,7 +1188,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Dragon"
},
"Tag": {
"type": "cexostring",
@ -1206,6 +1206,26 @@
"type": "resref",
"value": "ancmistdrag"
},
"VarTable": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "SPAWN_TYPE"
},
"Type": {
"type": "dword",
"value": 3
},
"Value": {
"type": "cexostring",
"value": "no_spn_dragon"
}
}
]
},
"WalkRate": {
"type": "int",
"value": 8

View File

@ -960,7 +960,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Construct"
},
"Tag": {
"type": "cexostring",
@ -978,6 +978,26 @@
"type": "resref",
"value": "arcanegolem"
},
"VarTable": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "PRC_CASTERLEVEL_OVERRIDE"
},
"Type": {
"type": "dword",
"value": 1
},
"Value": {
"type": "int",
"value": 25
}
}
]
},
"WalkRate": {
"type": "int",
"value": 3

View File

@ -54,7 +54,7 @@
},
"DecayTime": {
"type": "dword",
"value": 0
"value": 5000
},
"Deity": {
"type": "cexostring",
@ -252,55 +252,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "nw_c2_default5"
"value": "x2_def_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "nw_c2_default6"
"value": "x2_def_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "nw_c2_default7"
"value": "x2_def_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "nw_c2_default4"
"value": "x2_def_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "nw_c2_default8"
"value": "x2_def_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "nw_c2_default3"
"value": "x2_def_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "nw_c2_default1"
"value": "x2_def_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "nw_c2_defaulte"
"value": "x2_def_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "nw_c2_default2"
"value": "x2_def_percept"
},
"ScriptRested": {
"type": "resref",
"value": "nw_c2_defaulta"
"value": "x2_def_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": "nw_c2_default9"
"value": "x2_def_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "nw_c2_defaultb"
"value": "x2_def_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": "nw_c2_defaultd"
"value": "x2_def_userdef"
},
"SkillList": {
"type": "list",
@ -749,7 +749,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Construct"
},
"Tag": {
"type": "cexostring",

View File

@ -1012,7 +1012,7 @@
},
"StartingPackage": {
"type": "byte",
"value": 0
"value": 75
},
"Str": {
"type": "byte",
@ -1020,7 +1020,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Construct"
},
"Tag": {
"type": "cexostring",

View File

@ -325,55 +325,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "nw_c2_default5"
"value": "codi_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "nw_c2_default6"
"value": "codi_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "nw_c2_default7"
"value": "codi_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "nw_c2_default4"
"value": "codi_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "nw_c2_default8"
"value": "codi_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "nw_c2_default3"
"value": "codi_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "nw_c2_default1"
"value": "codi_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "nw_c2_defaulte"
"value": "codi_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "nw_c2_default2"
"value": "codi_percept"
},
"ScriptRested": {
"type": "resref",
"value": "nw_c2_defaulta"
"value": "codi_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": "nw_c2_dropin9"
"value": "codi_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "nw_c2_defaultb"
"value": "codi_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": "nw_c2_defaultd"
"value": "codi_userdef"
},
"SkillList": {
"type": "list",
@ -687,7 +687,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Dragon"
},
"Tag": {
"type": "cexostring",
@ -705,6 +705,26 @@
"type": "resref",
"value": "blackdragon1"
},
"VarTable": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "SPAWN_TYPE"
},
"Type": {
"type": "dword",
"value": 3
},
"Value": {
"type": "cexostring",
"value": "no_spn_dragon"
}
}
]
},
"WalkRate": {
"type": "int",
"value": 6

View File

@ -54,7 +54,7 @@
},
"DecayTime": {
"type": "dword",
"value": 0
"value": 5000
},
"Deity": {
"type": "cexostring",
@ -375,55 +375,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "nw_c2_default5"
"value": "codi_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "nw_c2_default6"
"value": "codi_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "nw_c2_default7"
"value": "codi_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "nw_c2_default4"
"value": "codi_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "nw_c2_default8"
"value": "codi_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "nw_c2_default3"
"value": "codi_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "nw_c2_default1"
"value": "codi_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "nw_c2_defaulte"
"value": "codi_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "nw_c2_default2"
"value": "codi_percept"
},
"ScriptRested": {
"type": "resref",
"value": "nw_c2_defaulta"
"value": "codi_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": "nw_c2_dropin9"
"value": "codi_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "nw_c2_defaultb"
"value": "codi_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": "nw_c2_defaultd"
"value": "codi_userdef"
},
"SkillList": {
"type": "list",
@ -1157,7 +1157,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Dragon"
},
"Tag": {
"type": "cexostring",
@ -1175,6 +1175,41 @@
"type": "resref",
"value": "drggreen002"
},
"VarTable": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "SPAWN_TYPE"
},
"Type": {
"type": "dword",
"value": 3
},
"Value": {
"type": "cexostring",
"value": "no_spn_dragon"
}
},
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "PRC_CASTERLEVEL_OVERRIDE"
},
"Type": {
"type": "dword",
"value": 1
},
"Value": {
"type": "int",
"value": 20
}
}
]
},
"WalkRate": {
"type": "int",
"value": 5

View File

@ -54,7 +54,7 @@
},
"DecayTime": {
"type": "dword",
"value": 0
"value": 5000
},
"Deity": {
"type": "cexostring",
@ -2365,7 +2365,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Dragon"
},
"Tag": {
"type": "cexostring",

View File

@ -65,7 +65,7 @@
},
"DecayTime": {
"type": "dword",
"value": 0
"value": 5000
},
"Deity": {
"type": "cexostring",
@ -2429,7 +2429,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Dragon"
},
"Tag": {
"type": "cexostring",

View File

@ -1669,7 +1669,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Dragon"
},
"Tag": {
"type": "cexostring",

View File

@ -54,7 +54,7 @@
},
"DecayTime": {
"type": "dword",
"value": 0
"value": 5000
},
"Deity": {
"type": "cexostring",
@ -2357,7 +2357,7 @@
},
"StartingPackage": {
"type": "byte",
"value": 0
"value": 80
},
"Str": {
"type": "byte",
@ -2365,7 +2365,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Dragon"
},
"Tag": {
"type": "cexostring",

View File

@ -353,55 +353,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "nw_c2_default5"
"value": "codi_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "nw_c2_default6"
"value": "codi_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "nw_c2_default7"
"value": "codi_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "nw_c2_default4"
"value": "codi_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "nw_c2_default8"
"value": "codi_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "nw_c2_default3"
"value": "codi_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "nw_c2_default1"
"value": "codi_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "nw_c2_defaulte"
"value": "codi_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "nw_c2_default2"
"value": "codi_percept"
},
"ScriptRested": {
"type": "resref",
"value": "nw_c2_defaulta"
"value": "codi_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": "nw_c2_dropin9"
"value": "codi_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "nw_c2_defaultb"
"value": "codi_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": "nw_c2_defaultd"
"value": "codi_userdef"
},
"SkillList": {
"type": "list",
@ -835,7 +835,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Dragon"
},
"Tag": {
"type": "cexostring",
@ -853,6 +853,26 @@
"type": "resref",
"value": "grtgreenmchn23"
},
"VarTable": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "SPAWN_TYPE"
},
"Type": {
"type": "dword",
"value": 3
},
"Value": {
"type": "cexostring",
"value": "no_spn_dragon"
}
}
]
},
"WalkRate": {
"type": "int",
"value": 5

View File

@ -237,55 +237,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "x2_def_attacked"
"value": "nw_c2_default5"
},
"ScriptDamaged": {
"type": "resref",
"value": "x2_def_ondamage"
"value": "nw_c2_default6"
},
"ScriptDeath": {
"type": "resref",
"value": "x2_def_ondeath"
"value": "nw_c2_default7"
},
"ScriptDialogue": {
"type": "resref",
"value": "x2_def_onconv"
"value": "nw_c2_default4"
},
"ScriptDisturbed": {
"type": "resref",
"value": "x2_def_ondisturb"
"value": "nw_c2_default8"
},
"ScriptEndRound": {
"type": "resref",
"value": "x2_def_endcombat"
"value": "nw_c2_default3"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "x2_def_heartbeat"
"value": "nw_c2_default1"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "x2_def_onblocked"
"value": "nw_c2_defaulte"
},
"ScriptOnNotice": {
"type": "resref",
"value": "x2_def_percept"
"value": "nw_c2_default2"
},
"ScriptRested": {
"type": "resref",
"value": "x2_def_rested"
"value": "nw_c2_defaulta"
},
"ScriptSpawn": {
"type": "resref",
"value": "x2_def_spawn"
"value": "nw_c2_default9"
},
"ScriptSpellAt": {
"type": "resref",
"value": "x2_def_spellcast"
"value": "nw_c2_defaultb"
},
"ScriptUserDefine": {
"type": "resref",
"value": "x2_def_userdef"
"value": "nw_c2_defaultd"
},
"SkillList": {
"type": "list",

View File

@ -114,6 +114,13 @@
"FeatList": {
"type": "list",
"value": [
{
"__struct_id": 1,
"Feat": {
"type": "word",
"value": 4636
}
},
{
"__struct_id": 1,
"Feat": {
@ -248,55 +255,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "x2_def_attacked"
"value": "nw_c2_default5"
},
"ScriptDamaged": {
"type": "resref",
"value": "x2_def_ondamage"
"value": "nw_c2_default6"
},
"ScriptDeath": {
"type": "resref",
"value": "x2_def_ondeath"
"value": "nw_c2_default7"
},
"ScriptDialogue": {
"type": "resref",
"value": "x2_def_onconv"
"value": "nw_c2_default4"
},
"ScriptDisturbed": {
"type": "resref",
"value": "x2_def_ondisturb"
"value": "nw_c2_default8"
},
"ScriptEndRound": {
"type": "resref",
"value": "x2_def_endcombat"
"value": "nw_c2_default3"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "x2_def_heartbeat"
"value": "nw_c2_default1"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "x2_def_onblocked"
"value": "nw_c2_defaulte"
},
"ScriptOnNotice": {
"type": "resref",
"value": "x2_def_percept"
"value": "nw_c2_default2"
},
"ScriptRested": {
"type": "resref",
"value": "x2_def_rested"
"value": "nw_c2_defaulta"
},
"ScriptSpawn": {
"type": "resref",
"value": "x2_def_spawn"
"value": "nw_c2_default9"
},
"ScriptSpellAt": {
"type": "resref",
"value": "x2_def_spellcast"
"value": "nw_c2_defaultb"
},
"ScriptUserDefine": {
"type": "resref",
"value": "x2_def_userdef"
"value": "nw_c2_defaultd"
},
"SkillList": {
"type": "list",

View File

@ -14,7 +14,7 @@
},
"ChallengeRating": {
"type": "float",
"value": 51.0
"value": 50.0
},
"ClassList": {
"type": "list",
@ -68,7 +68,7 @@
},
"CRAdjust": {
"type": "int",
"value": -30
"value": -18
},
"CurrentHitPoints": {
"type": "short",
@ -581,55 +581,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "x2_def_attacked"
"value": "codi_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "x2_def_ondamage"
"value": "codi_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "x2_def_ondeath"
"value": "codi_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "x2_def_onconv"
"value": "codi_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "x2_def_ondisturb"
"value": "codi_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "x2_def_endcombat"
"value": "codi_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "x2_def_heartbeat"
"value": "codi_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "x2_def_onblocked"
"value": "codi_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "x2_def_percept"
"value": "codi_percept"
},
"ScriptRested": {
"type": "resref",
"value": "x2_def_rested"
"value": "codi_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": "x2_def_spawn"
"value": "codi_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "x2_def_spellcast"
"value": "codi_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": "x2_def_userdef"
"value": "codi_userdef"
},
"SkillList": {
"type": "list",
@ -988,7 +988,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Aberration"
},
"Tag": {
"type": "cexostring",
@ -1013,7 +1013,22 @@
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "X2_L_BEH_MAGIC"
"value": "SPAWN_TYPE"
},
"Type": {
"type": "dword",
"value": 3
},
"Value": {
"type": "cexostring",
"value": "no_spn_beh"
}
},
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "PRC_CASTERLEVEL_OVERRIDE"
},
"Type": {
"type": "dword",
@ -1021,14 +1036,14 @@
},
"Value": {
"type": "int",
"value": 100
"value": 40
}
}
]
},
"WalkRate": {
"type": "int",
"value": 7
"value": 3
},
"willbonus": {
"type": "short",

View File

@ -803,7 +803,7 @@
},
"SoundSetFile": {
"type": "word",
"value": 65535
"value": 258
},
"SpecAbilityList": {
"type": "list",
@ -850,7 +850,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Construct"
},
"Tag": {
"type": "cexostring",
@ -868,6 +868,26 @@
"type": "resref",
"value": "mydgolems"
},
"VarTable": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "PRC_CASTERLEVEL_OVERRIDE"
},
"Type": {
"type": "dword",
"value": 1
},
"Value": {
"type": "int",
"value": 1
}
}
]
},
"WalkRate": {
"type": "int",
"value": 6

View File

@ -230,55 +230,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "nw_c2_default5"
"value": "x2_def_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "nw_c2_default6"
"value": "x2_def_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "nw_c2_default7"
"value": "x2_def_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "nw_c2_default4"
"value": "x2_def_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "nw_c2_default8"
"value": "x2_def_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "nw_c2_default3"
"value": "x2_def_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "nw_c2_default1"
"value": "x2_def_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "nw_c2_defaulte"
"value": "x2_def_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "nw_c2_default2"
"value": "x2_def_percept"
},
"ScriptRested": {
"type": "resref",
"value": "nw_c2_defaulta"
"value": "x2_def_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": "nw_c2_default9"
"value": "x2_def_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "nw_c2_defaultb"
"value": "x2_def_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": "nw_c2_defaultd"
"value": "x2_def_userdef"
},
"SkillList": {
"type": "list",

View File

@ -237,55 +237,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "nw_c2_default5"
"value": "x2_def_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "nw_c2_default6"
"value": "x2_def_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "nw_c2_default7"
"value": "x2_def_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "nw_c2_default4"
"value": "x2_def_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "nw_c2_default8"
"value": "x2_def_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "nw_c2_default3"
"value": "x2_def_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "nw_c2_default1"
"value": "x2_def_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "nw_c2_defaulte"
"value": "x2_def_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "nw_c2_default2"
"value": "x2_def_percept"
},
"ScriptRested": {
"type": "resref",
"value": "nw_c2_defaulta"
"value": "x2_def_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": "nw_c2_default9"
"value": "x2_def_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "nw_c2_defaultb"
"value": "x2_def_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": "nw_c2_defaultd"
"value": "x2_def_userdef"
},
"SkillList": {
"type": "list",

View File

@ -54,7 +54,7 @@
},
"DecayTime": {
"type": "dword",
"value": 0
"value": 5000
},
"Deity": {
"type": "cexostring",
@ -1172,7 +1172,7 @@
},
"Subrace": {
"type": "cexostring",
"value": ""
"value": "Dragon"
},
"Tag": {
"type": "cexostring",

View File

@ -1249,55 +1249,55 @@
},
"ScriptAttacked": {
"type": "resref",
"value": "nw_c2_default5"
"value": "x2_def_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "nw_c2_default6"
"value": "x2_def_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "nw_c2_default7"
"value": "x2_def_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "nw_c2_default4"
"value": "x2_def_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "nw_c2_default8"
"value": "x2_def_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "nw_c2_default3"
"value": "x2_def_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "nw_c2_default1"
"value": "x2_def_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "nw_c2_defaulte"
"value": "x2_def_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "nw_c2_default2"
"value": "x2_def_percept"
},
"ScriptRested": {
"type": "resref",
"value": "nw_c2_defaulta"
"value": "x2_def_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": "nw_c2_default9"
"value": "x2_def_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "nw_c2_defaultb"
"value": "x2_def_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": "nw_c2_defaultd"
"value": "x2_def_userdef"
},
"SkillList": {
"type": "list",

View File

@ -60,7 +60,7 @@
},
"Plot": {
"type": "byte",
"value": 0
"value": 1
},
"PropertiesList": {
"type": "list",