Further PRC integration
Further PRC integration. Fixed Rod of Ruin. Full compile.
This commit is contained in:
@@ -5,16 +5,25 @@
|
||||
//:: Created By: Script Wizard
|
||||
//:: Created On: 9/11/2008 11:46:37 AM
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_class_const"
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
|
||||
// Restrict based on the player's class
|
||||
int iPassed = 0;
|
||||
if(GetLevelByClass(CLASS_TYPE_DRUID, GetPCSpeaker()) >= 1)
|
||||
return TRUE;
|
||||
object oPC = GetPCSpeaker();
|
||||
|
||||
// Restrict based on the player's class
|
||||
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_DRUID, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HATHRAN, oPC);
|
||||
|
||||
if(nClass <= 0)
|
||||
return FALSE;
|
||||
|
||||
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
|
||||
|
||||
}
|
||||
|
@@ -5,14 +5,21 @@
|
||||
//:: Created By: Script Wizard
|
||||
//:: Created On: 9/11/2008 11:46:56 AM
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_class_const"
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
|
||||
object oPC = GetPCSpeaker();
|
||||
|
||||
// Restrict based on the player's class
|
||||
int iPassed = 0;
|
||||
if(GetLevelByClass(CLASS_TYPE_PALADIN, GetPCSpeaker()) >= 1)
|
||||
iPassed = 1;
|
||||
if(iPassed == 0)
|
||||
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_PALADIN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOHEI, oPC);
|
||||
|
||||
if(nClass <= 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
|
@@ -5,14 +5,20 @@
|
||||
//:: Created By: Script Wizard
|
||||
//:: Created On: 9/11/2008 12:18:32 PM
|
||||
//:://////////////////////////////////////////////
|
||||
#include "prc_class_const"
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
|
||||
object oPC = GetPCSpeaker();
|
||||
|
||||
// Restrict based on the player's class
|
||||
int iPassed = 0;
|
||||
if(GetLevelByClass(CLASS_TYPE_RANGER, GetPCSpeaker()) >= 1)
|
||||
iPassed = 1;
|
||||
if(iPassed == 0)
|
||||
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_RANGER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_TOTEMIST, oPC);
|
||||
|
||||
if(nClass <= 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
|
@@ -5,14 +5,23 @@
|
||||
//:: Created By: Script Wizard
|
||||
//:: Created On: 9/11/2008 12:19:02 PM
|
||||
//:://////////////////////////////////////////////
|
||||
#include "prc_class_const"
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
|
||||
object oPC = GetPCSpeaker();
|
||||
|
||||
// Restrict based on the player's class
|
||||
int iPassed = 0;
|
||||
if(GetLevelByClass(CLASS_TYPE_SORCERER, GetPCSpeaker()) >= 1)
|
||||
iPassed = 1;
|
||||
if(iPassed == 0)
|
||||
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_SORCERER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WARMAGE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWCASTER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WARLOCK, oPC);
|
||||
|
||||
if(nClass <= 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
|
@@ -5,27 +5,75 @@
|
||||
//:: Created By: Script Wizard
|
||||
//:: Created On: 2/9/2008 5:09:16 PM
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_class_const"
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
|
||||
// Restrict based on the player's class
|
||||
int iPassed = 0;
|
||||
if(GetLevelByClass(CLASS_TYPE_ASSASSIN, GetPCSpeaker()) >= 1)
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_BARD, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_DIVINE_CHAMPION, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_MONK, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_PALADIN, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_PALE_MASTER, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_BLACKGUARD, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if(iPassed == 0)
|
||||
object oPC = GetPCSpeaker();
|
||||
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_ASSASSIN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BARD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DIVINE_CHAMPION, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BARBARIAN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_MONK, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PALADIN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HEALER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SACREDPURIFIER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_INCANDESCENT_CHAMPION, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HEALER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT_MIDDLECIRCLE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOW_SUN_NINJA, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BAELNORN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_MORNINGLORD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SKULLCLAN_HUNTER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BRIMSTONE_SPEAKER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_CELEBRANT_SHARESS, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HEARTWARDER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT_CHALICE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_VASSAL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWBANE_INQUISITOR, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWBANE_STALKER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHINING_BLADE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_OLLAM, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SLAYER_OF_DOMIEL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOLDIER_OF_LIGHT, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DIABOLIST, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_UR_PRIEST, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_OCULAR, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_JUDICATOR, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_NIGHTSHADE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DISC_BAALZEBUL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DISPATER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BLIGHTLORD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_ORCUS, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_MASTER_OF_SHROUDS, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_THRALL_OF_GRAZZT_A, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_NECROCARNATE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_GHOST_FACED_KILLER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_MEPH, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOUL_EATER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PYROKINETICIST, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WILD_MAGE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DWARVEN_DEFENDER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SAMURAI, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_IAIJUTSU_MASTER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_CW_SAMURAI, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HENSHIN_MYSTIC, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOHEI, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOULBORN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_INCARNUM_BLADE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BLACKGUARD, oPC);
|
||||
|
||||
//:: Restrict based on the player's class
|
||||
if (nClass <= 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
@@ -1,17 +1,54 @@
|
||||
#include "prc_class_const"
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
object oPC = GetPCSpeaker();
|
||||
object oPC = GetPCSpeaker();
|
||||
|
||||
//If the speaker is a spell caster!
|
||||
if ((GetLevelByClass(CLASS_TYPE_BARD, oPC)>0)||
|
||||
(GetLevelByClass(CLASS_TYPE_CLERIC, oPC)>0)||
|
||||
(GetLevelByClass(CLASS_TYPE_DRUID, oPC)>0)||
|
||||
(GetLevelByClass(CLASS_TYPE_PALADIN, oPC)>0)||
|
||||
(GetLevelByClass(CLASS_TYPE_RANGER, oPC)>0)||
|
||||
(GetLevelByClass(CLASS_TYPE_SORCERER, oPC)>0)||
|
||||
(GetLevelByClass(CLASS_TYPE_WIZARD, oPC)>0))
|
||||
return TRUE;
|
||||
//:: If the speaker is a spellcaster return TRUE
|
||||
|
||||
else //Otherwise if they aren't a caster dont' show the line!
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_RANGER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_CLERIC, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DRUID, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PALADIN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SORCERER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WIZARD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HARPER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_ASSASSIN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BLACKGUARD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_UR_PRIEST, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_OCULAR, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DUSKBLADE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HEALER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_CELEBRANT_SHARESS, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_CULTIST_SHATTERED_PEAK, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BEGUILER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT_CHALICE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_VASSAL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT_WEAVE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOLDIER_OF_LIGHT, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWLORD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_JUSTICEWW, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT_MIDDLECIRCLE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_ARCHIVIST, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHAMAN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SLAYER_OF_DOMIEL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SUEL_ARCHANAMACH, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FAVOURED_SOUL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOHEI, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WARMAGE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_NENTYAR_HUNTER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BLIGHTER, oPC);
|
||||
|
||||
if (nClass >= 1)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
else //Otherwise if they aren't a caster don't show the line!
|
||||
return FALSE;
|
||||
}
|
||||
}
|
@@ -5,17 +5,30 @@
|
||||
//:: Created By: Script Wizard
|
||||
//:: Created On: 4/24/2008 3:43:53 PM
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_class_const"
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
|
||||
// Restrict based on the player's class
|
||||
int iPassed = 0;
|
||||
if(GetLevelByClass(CLASS_TYPE_BARBARIAN, GetPCSpeaker()) >= 1)
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_BARD, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if(iPassed == 0)
|
||||
object oPC = GetPCSpeaker();
|
||||
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_PYROKINETICIST, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WILD_MAGE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BARBARIAN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BARD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BATTLERAGER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_TEMPUS, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_RUNESCARRED, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_ARCTRICK, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WEREWOLF, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FRE_BERSERKER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_RAGE_MAGE, oPC);
|
||||
|
||||
//:: Restrict based on the player's class
|
||||
if(nClass <= 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
@@ -5,17 +5,34 @@
|
||||
//:: Created By: Script Wizard
|
||||
//:: Created On: 4/24/2008 3:18:33 PM
|
||||
//:://////////////////////////////////////////////
|
||||
#include "prc_class_const"
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
|
||||
// Restrict based on the player's class
|
||||
int iPassed = 0;
|
||||
if(GetLevelByClass(CLASS_TYPE_DIVINE_CHAMPION, GetPCSpeaker()) >= 1)
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_PALADIN, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if(iPassed == 0)
|
||||
object oPC = GetPCSpeaker();
|
||||
|
||||
int nClass;
|
||||
|
||||
//:: Restrict based on the player's class
|
||||
nClass = GetLevelByClass(CLASS_TYPE_DIVINE_CHAMPION, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PALADIN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT_CHALICE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_VASSAL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWBANE_INQUISITOR, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWBANE_STALKER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHINING_BLADE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_OLLAM, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SLAYER_OF_DOMIEL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOLDIER_OF_LIGHT, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_CELEBRANT_SHARESS, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HEARTWARDER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_MORNINGLORD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SACREDPURIFIER, oPC);
|
||||
|
||||
|
||||
if(nClass <= 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
@@ -5,18 +5,35 @@
|
||||
//:: Created By: Script Wizard
|
||||
//:: Created On: 4/24/2008 3:37:39 PM
|
||||
//:://////////////////////////////////////////////
|
||||
#include "prc_class_const"
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
|
||||
// Restrict based on the player's class
|
||||
int iPassed = 0;
|
||||
if(GetLevelByClass(CLASS_TYPE_DWARVEN_DEFENDER, GetPCSpeaker()) >= 1)
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_MONK, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_PALADIN, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if(iPassed == 0)
|
||||
object oPC = GetPCSpeaker();
|
||||
|
||||
int nClass;
|
||||
|
||||
//:: Restrict based on the player's class
|
||||
nClass = GetLevelByClass(CLASS_TYPE_DIABOLIST, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PALADIN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT_CHALICE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_VASSAL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWBANE_INQUISITOR, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWBANE_STALKER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHINING_BLADE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_OLLAM, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SLAYER_OF_DOMIEL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_MONK, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DWARVEN_DEFENDER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SAMURAI, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_IAIJUTSU_MASTER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_CW_SAMURAI, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HENSHIN_MYSTIC, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOHEI, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT, oPC);
|
||||
|
||||
if(nClass <= 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
|
@@ -5,17 +5,31 @@
|
||||
//:: Created By: Script Wizard
|
||||
//:: Created On: 4/24/2008 3:19:55 PM
|
||||
//:://////////////////////////////////////////////
|
||||
#include "prc_class_const"
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
|
||||
// Restrict based on the player's class
|
||||
int iPassed = 0;
|
||||
if(GetLevelByClass(CLASS_TYPE_ASSASSIN, GetPCSpeaker()) >= 1)
|
||||
iPassed = 1;
|
||||
if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_PALE_MASTER, GetPCSpeaker()) >= 1))
|
||||
iPassed = 1;
|
||||
if(iPassed == 0)
|
||||
object oPC = GetPCSpeaker();
|
||||
|
||||
int nClass;
|
||||
|
||||
//:: Restrict based on the player's class
|
||||
nClass = GetLevelByClass(CLASS_TYPE_ASSASSIN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BLACKGUARD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_OCULAR, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_JUDICATOR, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DISC_BAALZEBUL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DISPATER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BLIGHTLORD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_ORCUS, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_MASTER_OF_SHROUDS, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_THRALL_OF_GRAZZT_A, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_MEPH, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oPC);
|
||||
|
||||
if(nClass <= 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
@@ -1,28 +1,47 @@
|
||||
//IMPORTANT, use the Save As button FIRST, before you Edit This Script!
|
||||
|
||||
//Put this script OnClick or OnFailToOpen
|
||||
|
||||
#include "prc_class_const"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = GetClickingObject();
|
||||
object oMe = OBJECT_SELF;
|
||||
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_SORCERER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WIZARD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BARD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HARPER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_ASSASSIN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DUSKBLADE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_CULTIST_SHATTERED_PEAK, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BEGUILER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT_WEAVE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WARMAGE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWLORD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SUEL_ARCHANAMACH, oPC);
|
||||
|
||||
if (!GetIsPC(oPC)) return;
|
||||
|
||||
object oPC = GetClickingObject();
|
||||
object oMe = OBJECT_SELF;
|
||||
if (!GetIsPC(oPC)) return;
|
||||
if (nClass >= 5)
|
||||
{
|
||||
SetLocked(OBJECT_SELF, FALSE);
|
||||
|
||||
if (GetLevelByClass(CLASS_TYPE_BARD, oPC)>=5 || GetLevelByClass(CLASS_TYPE_WIZARD, oPC)>=5 ||
|
||||
GetLevelByClass(CLASS_TYPE_SORCERER, oPC)>=5)
|
||||
{
|
||||
SetLocked(OBJECT_SELF, FALSE);
|
||||
ActionOpenDoor(OBJECT_SELF);
|
||||
|
||||
ActionOpenDoor(OBJECT_SELF);
|
||||
DelayCommand(7.0, ActionCloseDoor(OBJECT_SELF));
|
||||
|
||||
DelayCommand(7.0, ActionCloseDoor(OBJECT_SELF));
|
||||
DelayCommand(7.1, SetLocked(OBJECT_SELF, TRUE));
|
||||
}
|
||||
|
||||
DelayCommand(7.1, SetLocked(OBJECT_SELF, TRUE));
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
FloatingTextStringOnCreature("Only Magic Users are allowed within..", oPC, TRUE);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
FloatingTextStringOnCreature("Only practicioners of the arcane arts are allowed within...", oPC, TRUE);
|
||||
}
|
||||
}
|
@@ -1,17 +1,30 @@
|
||||
#include "prc_class_const"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oDoor = OBJECT_SELF;
|
||||
object oDoor = OBJECT_SELF;
|
||||
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
|
||||
|
||||
int nClass;
|
||||
|
||||
//:: Restrict based on the player's class
|
||||
nClass = GetLevelByClass(CLASS_TYPE_WIZARD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SORCERER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WARMAGE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWCASTER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_ARCHMAGE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WARLOCK, oPC);
|
||||
|
||||
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
|
||||
int class1 = GetLevelByClass(CLASS_TYPE_WIZARD, oPC);
|
||||
int class2 = GetLevelByClass(CLASS_TYPE_SORCERER, oPC);
|
||||
int pass = class1 + class2;
|
||||
if (pass >=20){
|
||||
if (nClass >= 20)
|
||||
{
|
||||
AssignCommand(oDoor, ActionOpenDoor(oDoor));
|
||||
SendMessageToPC(oPC, "You may pass.");
|
||||
}
|
||||
|
||||
AssignCommand(oDoor, ActionOpenDoor(oDoor));
|
||||
SendMessageToPC(oPC, "You may pass.");
|
||||
}
|
||||
else{
|
||||
SendMessageToPC(oPC, "You will not pass.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SendMessageToPC(oPC, "You will not pass.");
|
||||
}
|
||||
}
|
@@ -1,20 +1,37 @@
|
||||
#include "prc_class_const"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oDoor = OBJECT_SELF;
|
||||
object oDoor = OBJECT_SELF;
|
||||
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
|
||||
|
||||
int nClass;
|
||||
|
||||
//:: Restrict based on the player's class
|
||||
nClass = GetLevelByClass(CLASS_TYPE_CRUSADER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FIGHTER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_KNIGHT, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_MARSHAL, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SAMURAI, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SWASHBUCKLER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WARBLADE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PSYWAR, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_RANGER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BARBARIAN, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_MONK, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SWORDSAGE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOULKNIFE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SOHEI, oPC);
|
||||
|
||||
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
|
||||
int class1 = GetLevelByClass(CLASS_TYPE_BARBARIAN, oPC);
|
||||
int class2 = GetLevelByClass(CLASS_TYPE_FIGHTER, oPC);
|
||||
int class3 = GetLevelByClass(CLASS_TYPE_MONK, oPC);
|
||||
int class4 = GetLevelByClass(CLASS_TYPE_PALADIN, oPC);
|
||||
int class5 = GetLevelByClass(CLASS_TYPE_RANGER, oPC);
|
||||
int pass = class1 + class2 + class3 + class4 + class5;
|
||||
if (pass >=20){
|
||||
if (nClass >= 20)
|
||||
{
|
||||
AssignCommand(oDoor, ActionOpenDoor(oDoor));
|
||||
SendMessageToPC(oPC, "You may pass.");
|
||||
}
|
||||
|
||||
AssignCommand(oDoor, ActionOpenDoor(oDoor)) ;
|
||||
SendMessageToPC(oPC, "You may pass.");
|
||||
}
|
||||
else{
|
||||
SendMessageToPC(oPC, "You will not pass.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SendMessageToPC(oPC, "You will not pass.");
|
||||
}
|
||||
|
||||
}
|
106
_module/nss/nw_c2_default1.nss
Normal file
106
_module/nss/nw_c2_default1.nss
Normal file
@@ -0,0 +1,106 @@
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: NW_C2_DEFAULT1
|
||||
/*
|
||||
Default OnHeartbeat script for NPCs.
|
||||
|
||||
This script causes NPCs to perform default animations
|
||||
while not otherwise engaged.
|
||||
|
||||
This script duplicates the behavior of the default
|
||||
script and just cleans up the code and removes
|
||||
redundant conditional checks.
|
||||
|
||||
*/
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: Copyright (c) 2002 Floodgate Entertainment
|
||||
//:: Created By: Naomi Novik
|
||||
//:: Created On: 12/22/2002
|
||||
//:://////////////////////////////////////////////////
|
||||
|
||||
#include "nw_i0_generic"
|
||||
|
||||
void main()
|
||||
{
|
||||
ExecuteScript("prc_npc_hb", OBJECT_SELF);
|
||||
|
||||
// * if not runnning normal or better Ai then exit for performance reasons
|
||||
if (GetAILevel() == AI_LEVEL_VERY_LOW) return;
|
||||
|
||||
// Buff ourselves up right away if we should
|
||||
if(GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY))
|
||||
{
|
||||
// This will return TRUE if an enemy was within 40.0 m
|
||||
// and we buffed ourselves up instantly to respond --
|
||||
// simulates a spellcaster with protections enabled
|
||||
// already.
|
||||
if(TalentAdvancedBuff(40.0))
|
||||
{
|
||||
// This is a one-shot deal
|
||||
SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY, FALSE);
|
||||
|
||||
// This return means we skip sending the user-defined
|
||||
// heartbeat signal in this one case.
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(GetHasEffect(EFFECT_TYPE_SLEEP))
|
||||
{
|
||||
// If we're asleep and this is the result of sleeping
|
||||
// at night, apply the floating 'z's visual effect
|
||||
// every so often
|
||||
|
||||
if(GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT))
|
||||
{
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_SLEEP);
|
||||
if(d10() > 6)
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If we have the 'constant' waypoints flag set, walk to the next
|
||||
// waypoint.
|
||||
else if ( GetWalkCondition(NW_WALK_FLAG_CONSTANT) )
|
||||
{
|
||||
WalkWayPoints();
|
||||
}
|
||||
|
||||
// Check to see if we should be playing default animations
|
||||
// - make sure we don't have any current targets
|
||||
else if ( !GetIsObjectValid(GetAttemptedAttackTarget())
|
||||
&& !GetIsObjectValid(GetAttemptedSpellTarget())
|
||||
// && !GetIsPostOrWalking())
|
||||
&& !GetIsObjectValid(GetNearestSeenEnemy()))
|
||||
{
|
||||
if (GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) || GetBehaviorState(NW_FLAG_BEHAVIOR_OMNIVORE) ||
|
||||
GetBehaviorState(NW_FLAG_BEHAVIOR_HERBIVORE))
|
||||
{
|
||||
// This handles special attacking/fleeing behavior
|
||||
// for omnivores & herbivores.
|
||||
DetermineSpecialBehavior();
|
||||
}
|
||||
else if (!IsInConversation(OBJECT_SELF))
|
||||
{
|
||||
if (GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS)
|
||||
|| GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN)
|
||||
|| GetIsEncounterCreature())
|
||||
{
|
||||
PlayMobileAmbientAnimations();
|
||||
}
|
||||
else if (GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS))
|
||||
{
|
||||
PlayImmobileAmbientAnimations();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Send the user-defined event signal if specified
|
||||
if(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT))
|
||||
{
|
||||
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_HEARTBEAT));
|
||||
}
|
||||
}
|
||||
|
166
_module/nss/nw_c2_default2.nss
Normal file
166
_module/nss/nw_c2_default2.nss
Normal file
@@ -0,0 +1,166 @@
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: NW_C2_DEFAULT2
|
||||
/*
|
||||
Default OnPerception event handler for NPCs.
|
||||
|
||||
Handles behavior when perceiving a creature for the
|
||||
first time.
|
||||
*/
|
||||
//:://////////////////////////////////////////////////
|
||||
|
||||
#include "nw_i0_generic"
|
||||
|
||||
void main()
|
||||
{
|
||||
ExecuteScript("prc_npc_percep", OBJECT_SELF);
|
||||
|
||||
// * if not runnning normal or better Ai then exit for performance reasons
|
||||
// * if not runnning normal or better Ai then exit for performance reasons
|
||||
if (GetAILevel() == AI_LEVEL_VERY_LOW) return;
|
||||
|
||||
object oPercep = GetLastPerceived();
|
||||
int bSeen = GetLastPerceptionSeen();
|
||||
int bHeard = GetLastPerceptionHeard();
|
||||
if (bHeard == FALSE)
|
||||
{
|
||||
// Has someone vanished in front of me?
|
||||
bHeard = GetLastPerceptionVanished();
|
||||
}
|
||||
|
||||
// This will cause the NPC to speak their one-liner
|
||||
// conversation on perception even if they are already
|
||||
// in combat.
|
||||
if(GetSpawnInCondition(NW_FLAG_SPECIAL_COMBAT_CONVERSATION)
|
||||
&& GetIsPC(oPercep)
|
||||
&& bSeen)
|
||||
{
|
||||
SpeakOneLinerConversation();
|
||||
}
|
||||
|
||||
// March 5 2003 Brent
|
||||
// Had to add this section back in, since modifications were not taking this specific
|
||||
// example into account -- it made invisibility basically useless.
|
||||
//If the last perception event was hearing based or if someone vanished then go to search mode
|
||||
if ((GetLastPerceptionVanished()) && GetIsEnemy(GetLastPerceived()))
|
||||
{
|
||||
object oGone = GetLastPerceived();
|
||||
if((GetAttemptedAttackTarget() == GetLastPerceived() ||
|
||||
GetAttemptedSpellTarget() == GetLastPerceived() ||
|
||||
GetAttackTarget() == GetLastPerceived()) && GetArea(GetLastPerceived()) != GetArea(OBJECT_SELF))
|
||||
{
|
||||
ClearAllActions();
|
||||
DetermineCombatRound();
|
||||
}
|
||||
}
|
||||
|
||||
// This section has been heavily revised while keeping the
|
||||
// pre-existing behavior:
|
||||
// - If we're in combat, keep fighting.
|
||||
// - If not and we've perceived an enemy, start to fight.
|
||||
// Even if the perception event was a 'vanish', that's
|
||||
// still what we do anyway, since that will keep us
|
||||
// fighting any visible targets.
|
||||
// - If we're not in combat and haven't perceived an enemy,
|
||||
// see if the perception target is a PC and if we should
|
||||
// speak our attention-getting one-liner.
|
||||
if (GetIsInCombat(OBJECT_SELF))
|
||||
{
|
||||
// don't do anything else, we're busy
|
||||
//MyPrintString("GetIsFighting: TRUE");
|
||||
|
||||
}
|
||||
// * BK FEB 2003 Only fight if you can see them. DO NOT RELY ON HEARING FOR ENEMY DETECTION
|
||||
else if (GetIsEnemy(oPercep) && bSeen)
|
||||
{ // SpawnScriptDebugger();
|
||||
//MyPrintString("GetIsEnemy: TRUE");
|
||||
// We spotted an enemy and we're not already fighting
|
||||
if(!GetHasEffect(EFFECT_TYPE_SLEEP)) {
|
||||
if(GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL))
|
||||
{
|
||||
//MyPrintString("DetermineSpecialBehavior");
|
||||
DetermineSpecialBehavior();
|
||||
} else
|
||||
{
|
||||
//MyPrintString("DetermineCombatRound");
|
||||
SetFacingPoint(GetPosition(oPercep));
|
||||
SpeakString("NW_I_WAS_ATTACKED", TALKVOLUME_SILENT_TALK);
|
||||
DetermineCombatRound();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bSeen)
|
||||
{
|
||||
//MyPrintString("GetLastPerceptionSeen: TRUE");
|
||||
if(GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL)) {
|
||||
DetermineSpecialBehavior();
|
||||
} else if (GetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION)
|
||||
&& GetIsPC(oPercep))
|
||||
{
|
||||
// The NPC will speak their one-liner conversation
|
||||
// This should probably be:
|
||||
// SpeakOneLinerConversation(oPercep);
|
||||
// instead, but leaving it as is for now.
|
||||
ActionStartConversation(OBJECT_SELF);
|
||||
}
|
||||
}
|
||||
else
|
||||
// * July 14 2003: Some minor reactions based on invisible creatures being nearby
|
||||
if (bHeard && GetIsEnemy(oPercep))
|
||||
{
|
||||
// SpeakString("vanished");
|
||||
// * don't want creatures wandering too far after noises
|
||||
if (GetDistanceToObject(oPercep) <= 7.0)
|
||||
{
|
||||
// if (GetHasSpell(SPELL_TRUE_SEEING) == TRUE)
|
||||
if (GetHasSpell(SPELL_TRUE_SEEING))
|
||||
{
|
||||
ActionCastSpellAtObject(SPELL_TRUE_SEEING, OBJECT_SELF);
|
||||
}
|
||||
else
|
||||
// if (GetHasSpell(SPELL_SEE_INVISIBILITY) == TRUE)
|
||||
if (GetHasSpell(SPELL_SEE_INVISIBILITY))
|
||||
{
|
||||
ActionCastSpellAtObject(SPELL_SEE_INVISIBILITY, OBJECT_SELF);
|
||||
}
|
||||
else
|
||||
// if (GetHasSpell(SPELL_INVISIBILITY_PURGE) == TRUE)
|
||||
if (GetHasSpell(SPELL_INVISIBILITY_PURGE))
|
||||
{
|
||||
ActionCastSpellAtObject(SPELL_INVISIBILITY_PURGE, OBJECT_SELF);
|
||||
}
|
||||
else
|
||||
{
|
||||
ActionPlayAnimation(ANIMATION_FIREFORGET_HEAD_TURN_LEFT, 0.5);
|
||||
ActionPlayAnimation(ANIMATION_FIREFORGET_HEAD_TURN_RIGHT, 0.5);
|
||||
ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD, 0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// activate ambient animations or walk waypoints if appropriate
|
||||
if (!IsInConversation(OBJECT_SELF)) {
|
||||
if (GetIsPostOrWalking()) {
|
||||
WalkWayPoints();
|
||||
} else if (GetIsPC(oPercep) &&
|
||||
(GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS)
|
||||
|| GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN)
|
||||
|| GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS)
|
||||
|| GetIsEncounterCreature()))
|
||||
{
|
||||
SetAnimationCondition(NW_ANIM_FLAG_IS_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Send the user-defined event if appropriate
|
||||
if(GetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT) && GetLastPerceptionSeen())
|
||||
{
|
||||
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_PERCEIVE));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
58
_module/nss/nw_c2_default3.nss
Normal file
58
_module/nss/nw_c2_default3.nss
Normal file
@@ -0,0 +1,58 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Default: End of Combat Round
|
||||
//:: NW_C2_DEFAULT3
|
||||
//:: Copyright (c) 2008 Bioware Corp.
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
Calls the end of combat script every round
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Preston Watamaniuk
|
||||
//:: Created On: Oct 16, 2001
|
||||
//:://////////////////////////////////////////////
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Modified By: Deva Winblood
|
||||
//:: Modified On: Feb 16th, 2008
|
||||
//:: Added Support for Mounted Combat Feat Support
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "NW_I0_GENERIC"
|
||||
|
||||
void main()
|
||||
{
|
||||
ExecuteScript("prc_npc_combat", OBJECT_SELF);
|
||||
|
||||
if (!GetLocalInt(GetModule(),"X3_NO_MOUNTED_COMBAT_FEAT"))
|
||||
{ // set variables on target for mounted combat
|
||||
DeleteLocalInt(OBJECT_SELF,"bX3_LAST_ATTACK_PHYSICAL");
|
||||
DeleteLocalInt(OBJECT_SELF,"nX3_HP_BEFORE");
|
||||
DeleteLocalInt(OBJECT_SELF,"bX3_ALREADY_MOUNTED_COMBAT");
|
||||
if (GetHasFeat(FEAT_MOUNTED_COMBAT,OBJECT_SELF))
|
||||
{ // check for AC increase
|
||||
int nRoll=d20()+GetSkillRank(SKILL_RIDE);
|
||||
nRoll=nRoll-10;
|
||||
if (nRoll>4)
|
||||
{ // ac increase
|
||||
nRoll=nRoll/5;
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectACIncrease(nRoll),OBJECT_SELF,8.5);
|
||||
} // ac increase
|
||||
} // check for AC increase
|
||||
} // set variables on target for mounted combat
|
||||
|
||||
if(GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL))
|
||||
{
|
||||
DetermineSpecialBehavior();
|
||||
}
|
||||
else if(!GetSpawnInCondition(NW_FLAG_SET_WARNINGS))
|
||||
{
|
||||
DetermineCombatRound();
|
||||
}
|
||||
if(GetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT))
|
||||
{
|
||||
SignalEvent(OBJECT_SELF, EventUserDefined(1003));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
92
_module/nss/nw_c2_default4.nss
Normal file
92
_module/nss/nw_c2_default4.nss
Normal file
@@ -0,0 +1,92 @@
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: NW_C2_DEFAULT4
|
||||
/*
|
||||
Default OnConversation event handler for NPCs.
|
||||
|
||||
*/
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: Copyright (c) 2002 Floodgate Entertainment
|
||||
//:: Created By: Naomi Novik
|
||||
//:: Created On: 12/22/2002
|
||||
//:://////////////////////////////////////////////////
|
||||
|
||||
#include "nw_i0_generic"
|
||||
|
||||
void main()
|
||||
{
|
||||
ExecuteScript("prc_npc_conv", OBJECT_SELF);
|
||||
|
||||
// * if petrified, jump out
|
||||
if (GetHasEffect(EFFECT_TYPE_PETRIFY, OBJECT_SELF) == TRUE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// * If dead, exit directly.
|
||||
if (GetIsDead(OBJECT_SELF) == TRUE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// See if what we just 'heard' matches any of our
|
||||
// predefined patterns
|
||||
int nMatch = GetListenPatternNumber();
|
||||
object oShouter = GetLastSpeaker();
|
||||
|
||||
if (nMatch == -1)
|
||||
{
|
||||
// Not a match -- start an ordinary conversation
|
||||
if (GetCommandable(OBJECT_SELF))
|
||||
{
|
||||
ClearActions(CLEAR_NW_C2_DEFAULT4_29);
|
||||
BeginConversation();
|
||||
}
|
||||
else
|
||||
// * July 31 2004
|
||||
// * If only charmed then allow conversation
|
||||
// * so you can have a better chance of convincing
|
||||
// * people of lowering prices
|
||||
if (GetHasEffect(EFFECT_TYPE_CHARMED) == TRUE)
|
||||
{
|
||||
ClearActions(CLEAR_NW_C2_DEFAULT4_29);
|
||||
BeginConversation();
|
||||
}
|
||||
}
|
||||
// Respond to shouts from friendly non-PCs only
|
||||
else if (GetIsObjectValid(oShouter)
|
||||
&& !GetIsPC(oShouter)
|
||||
&& GetIsFriend(oShouter))
|
||||
{
|
||||
object oIntruder = OBJECT_INVALID;
|
||||
// Determine the intruder if any
|
||||
if(nMatch == 4)
|
||||
{
|
||||
oIntruder = GetLocalObject(oShouter, "NW_BLOCKER_INTRUDER");
|
||||
}
|
||||
else if (nMatch == 5)
|
||||
{
|
||||
oIntruder = GetLastHostileActor(oShouter);
|
||||
if(!GetIsObjectValid(oIntruder))
|
||||
{
|
||||
oIntruder = GetAttemptedAttackTarget();
|
||||
if(!GetIsObjectValid(oIntruder))
|
||||
{
|
||||
oIntruder = GetAttemptedSpellTarget();
|
||||
if(!GetIsObjectValid(oIntruder))
|
||||
{
|
||||
oIntruder = OBJECT_INVALID;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Actually respond to the shout
|
||||
RespondToShout(oShouter, nMatch, oIntruder);
|
||||
}
|
||||
|
||||
// Send the user-defined event if appropriate
|
||||
if(GetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT))
|
||||
{
|
||||
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DIALOGUE));
|
||||
}
|
||||
}
|
109
_module/nss/nw_c2_default6.nss
Normal file
109
_module/nss/nw_c2_default6.nss
Normal file
@@ -0,0 +1,109 @@
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: NW_C2_DEFAULT6
|
||||
//:: Default OnDamaged handler
|
||||
/*
|
||||
If already fighting then ignore, else determine
|
||||
combat round
|
||||
*/
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: Copyright (c) 2002 Floodgate Entertainment
|
||||
//:: Created By: Naomi Novik
|
||||
//:: Created On: 12/22/2002
|
||||
//:://////////////////////////////////////////////////
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: Modified By: Deva Winblood
|
||||
//:: Modified On: Jan 17th, 2008
|
||||
//:: Added Support for Mounted Combat Feat Support
|
||||
//:://////////////////////////////////////////////////
|
||||
|
||||
#include "nw_i0_generic"
|
||||
#include "x3_inc_horse"
|
||||
|
||||
void main()
|
||||
{
|
||||
ExecuteScript("prc_npc_damaged", OBJECT_SELF);
|
||||
|
||||
object oDamager = GetLastDamager();
|
||||
object oMe=OBJECT_SELF;
|
||||
int nHPBefore;
|
||||
if (!GetLocalInt(GetModule(),"X3_NO_MOUNTED_COMBAT_FEAT"))
|
||||
if (GetHasFeat(FEAT_MOUNTED_COMBAT)&&HorseGetIsMounted(OBJECT_SELF))
|
||||
{ // see if can negate some damage
|
||||
if (GetLocalInt(OBJECT_SELF,"bX3_LAST_ATTACK_PHYSICAL"))
|
||||
{ // last attack was physical
|
||||
nHPBefore=GetLocalInt(OBJECT_SELF,"nX3_HP_BEFORE");
|
||||
if (!GetLocalInt(OBJECT_SELF,"bX3_ALREADY_MOUNTED_COMBAT"))
|
||||
{ // haven't already had a chance to use this for the round
|
||||
SetLocalInt(OBJECT_SELF,"bX3_ALREADY_MOUNTED_COMBAT",TRUE);
|
||||
int nAttackRoll=GetBaseAttackBonus(oDamager)+d20();
|
||||
int nRideCheck=GetSkillRank(SKILL_RIDE,OBJECT_SELF)+d20();
|
||||
if (nRideCheck>=nAttackRoll&&!GetIsDead(OBJECT_SELF))
|
||||
{ // averted attack
|
||||
if (GetIsPC(oDamager)) SendMessageToPC(oDamager,GetName(OBJECT_SELF)+GetStringByStrRef(111991));
|
||||
//if (GetIsPC(OBJECT_SELF)) SendMessageToPCByStrRef(OBJECT_SELF,111992");
|
||||
if (GetCurrentHitPoints(OBJECT_SELF)<nHPBefore)
|
||||
{ // heal
|
||||
effect eHeal=EffectHeal(nHPBefore-GetCurrentHitPoints(OBJECT_SELF));
|
||||
AssignCommand(GetModule(),ApplyEffectToObject(DURATION_TYPE_INSTANT,eHeal,oMe));
|
||||
} // heal
|
||||
} // averted attack
|
||||
} // haven't already had a chance to use this for the round
|
||||
} // last attack was physical
|
||||
} // see if can negate some damage
|
||||
if(GetFleeToExit()) {
|
||||
// We're supposed to run away, do nothing
|
||||
} else if (GetSpawnInCondition(NW_FLAG_SET_WARNINGS)) {
|
||||
// don't do anything?
|
||||
} else {
|
||||
if (!GetIsObjectValid(oDamager)) {
|
||||
// don't do anything, we don't have a valid damager
|
||||
} else if (!GetIsFighting(OBJECT_SELF)) {
|
||||
// If we're not fighting, determine combat round
|
||||
if(GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL)) {
|
||||
DetermineSpecialBehavior(oDamager);
|
||||
} else {
|
||||
if(!GetObjectSeen(oDamager)
|
||||
&& GetArea(OBJECT_SELF) == GetArea(oDamager)) {
|
||||
// We don't see our attacker, go find them
|
||||
ActionMoveToLocation(GetLocation(oDamager), TRUE);
|
||||
ActionDoCommand(DetermineCombatRound());
|
||||
} else {
|
||||
DetermineCombatRound();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// We are fighting already -- consider switching if we've been
|
||||
// attacked by a more powerful enemy
|
||||
object oTarget = GetAttackTarget();
|
||||
if (!GetIsObjectValid(oTarget))
|
||||
oTarget = GetAttemptedAttackTarget();
|
||||
if (!GetIsObjectValid(oTarget))
|
||||
oTarget = GetAttemptedSpellTarget();
|
||||
|
||||
// If our target isn't valid
|
||||
// or our damager has just dealt us 25% or more
|
||||
// of our hp in damager
|
||||
// or our damager is more than 2HD more powerful than our target
|
||||
// switch to attack the damager.
|
||||
if (!GetIsObjectValid(oTarget)
|
||||
|| (
|
||||
oTarget != oDamager
|
||||
&& (
|
||||
GetTotalDamageDealt() > (GetMaxHitPoints(OBJECT_SELF) / 4)
|
||||
|| (GetHitDice(oDamager) - 2) > GetHitDice(oTarget)
|
||||
)
|
||||
)
|
||||
)
|
||||
{
|
||||
// Switch targets
|
||||
DetermineCombatRound(oDamager);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Send the user-defined event signal
|
||||
if(GetSpawnInCondition(NW_FLAG_DAMAGED_EVENT))
|
||||
{
|
||||
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DAMAGED));
|
||||
}
|
||||
}
|
30
_module/nss/nw_c2_default8.nss
Normal file
30
_module/nss/nw_c2_default8.nss
Normal file
@@ -0,0 +1,30 @@
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: NW_C2_DEFAULT8
|
||||
/*
|
||||
Default OnDisturbed event handler for NPCs.
|
||||
*/
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: Copyright (c) 2002 Floodgate Entertainment
|
||||
//:: Created By: Naomi Novik
|
||||
//:: Created On: 12/22/2002
|
||||
//:://////////////////////////////////////////////////
|
||||
|
||||
#include "nw_i0_generic"
|
||||
|
||||
void main()
|
||||
{
|
||||
ExecuteScript("prc_npc_disturb", OBJECT_SELF);
|
||||
|
||||
object oTarget = GetLastDisturbed();
|
||||
|
||||
// If we've been disturbed and are not already fighting,
|
||||
// attack our disturber.
|
||||
if (GetIsObjectValid(oTarget) && !GetIsFighting(OBJECT_SELF)) {
|
||||
DetermineCombatRound(oTarget);
|
||||
}
|
||||
|
||||
// Send the disturbed flag if appropriate.
|
||||
if(GetSpawnInCondition(NW_FLAG_DISTURBED_EVENT)) {
|
||||
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DISTURBED));
|
||||
}
|
||||
}
|
20
_module/nss/nw_c2_defaulta.nss
Normal file
20
_module/nss/nw_c2_defaulta.nss
Normal file
@@ -0,0 +1,20 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Default: On Rested
|
||||
//:: NW_C2_DEFAULTA
|
||||
//:: Copyright (c) 2002 Bioware Corp.
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
Determines the course of action to be taken
|
||||
after having just rested.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Don Moar
|
||||
//:: Created On: April 28, 2002
|
||||
//:://////////////////////////////////////////////
|
||||
void main()
|
||||
{
|
||||
ExecuteScript("prc_npc_rested", OBJECT_SELF);
|
||||
|
||||
return;
|
||||
|
||||
}
|
159
_module/nss/nw_c2_defaultb.nss
Normal file
159
_module/nss/nw_c2_defaultb.nss
Normal file
@@ -0,0 +1,159 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Default: On Spell Cast At
|
||||
//:: NW_C2_DEFAULTB
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
This determines if the spell just cast at the
|
||||
target is harmful or not.
|
||||
|
||||
GZ 2003-Oct-02 : - New AoE Behavior AI. Will use
|
||||
Dispel Magic against AOES
|
||||
- Flying Creatures will ignore
|
||||
Grease
|
||||
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Preston Watamaniuk
|
||||
//:: Created On: Dec 6, 2001
|
||||
//:: Last Modified On: 2003-Oct-13
|
||||
//:://////////////////////////////////////////////
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Modified By: Deva Winblood
|
||||
//:: Modified On: Jan 4th, 2008
|
||||
//:: Added Support for Mounted Combat Feat Support
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "nw_i0_generic"
|
||||
#include "x2_i0_spells"
|
||||
|
||||
void main()
|
||||
{
|
||||
ExecuteScript("prc_npc_spellat", OBJECT_SELF);
|
||||
|
||||
object oCaster = GetLastSpellCaster();
|
||||
|
||||
|
||||
if(GetLastSpellHarmful())
|
||||
{
|
||||
SetCommandable(TRUE);
|
||||
|
||||
if (!GetLocalInt(GetModule(),"X3_NO_MOUNTED_COMBAT_FEAT"))
|
||||
{ // set variables on target for mounted combat
|
||||
DeleteLocalInt(OBJECT_SELF,"bX3_LAST_ATTACK_PHYSICAL");
|
||||
} // set variables on target for mounted combat
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// If I was hurt by someone in my own faction
|
||||
// Then clear any hostile feelings I have against them
|
||||
// After all, we're all just trying to do our job here
|
||||
// if we singe some eyebrow hair, oh well.
|
||||
// ------------------------------------------------------------------
|
||||
if (GetFactionEqual(oCaster, OBJECT_SELF) == TRUE)
|
||||
{
|
||||
ClearPersonalReputation(oCaster, OBJECT_SELF);
|
||||
ClearAllActions(TRUE);
|
||||
DelayCommand(1.2, ActionDoCommand(DetermineCombatRound(OBJECT_INVALID)));
|
||||
// Send the user-defined event as appropriate
|
||||
if(GetSpawnInCondition(NW_FLAG_SPELL_CAST_AT_EVENT))
|
||||
{
|
||||
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_SPELL_CAST_AT));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
int bAttack = TRUE;
|
||||
// ------------------------------------------------------------------
|
||||
// GZ, 2003-Oct-02
|
||||
// Try to do something smart if we are subject to an AoE Spell.
|
||||
// ------------------------------------------------------------------
|
||||
if (MatchAreaOfEffectSpell(GetLastSpell()) == TRUE)
|
||||
{
|
||||
int nAI = (GetBestAOEBehavior(GetLastSpell())); // from x2_i0_spells
|
||||
switch (nAI)
|
||||
{
|
||||
case X2_SPELL_AOEBEHAVIOR_DISPEL_L:
|
||||
case X2_SPELL_AOEBEHAVIOR_DISPEL_N:
|
||||
case X2_SPELL_AOEBEHAVIOR_DISPEL_M:
|
||||
case X2_SPELL_AOEBEHAVIOR_DISPEL_G:
|
||||
case X2_SPELL_AOEBEHAVIOR_DISPEL_C:
|
||||
bAttack = FALSE;
|
||||
ActionCastSpellAtLocation(nAI, GetLocation(OBJECT_SELF));
|
||||
ActionDoCommand(SetCommandable(TRUE));
|
||||
SetCommandable(FALSE);
|
||||
break;
|
||||
|
||||
case X2_SPELL_AOEBEHAVIOR_FLEE:
|
||||
ClearActions(CLEAR_NW_C2_DEFAULTB_GUSTWIND);
|
||||
oCaster = GetLastSpellCaster();
|
||||
ActionForceMoveToObject(oCaster, TRUE, 2.0);
|
||||
DelayCommand(1.2, ActionDoCommand(DetermineCombatRound(oCaster)));
|
||||
bAttack = FALSE;
|
||||
break;
|
||||
|
||||
case X2_SPELL_AOEBEHAVIOR_IGNORE:
|
||||
// well ... nothing
|
||||
break;
|
||||
|
||||
case X2_SPELL_AOEBEHAVIOR_GUST:
|
||||
ActionCastSpellAtLocation(SPELL_GUST_OF_WIND, GetLocation(OBJECT_SELF));
|
||||
ActionDoCommand(SetCommandable(TRUE));
|
||||
SetCommandable(FALSE);
|
||||
bAttack = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
// ---------------------------------------------------------------------
|
||||
// Not an area of effect spell, but another hostile spell.
|
||||
// If we're not already fighting someone else,
|
||||
// attack the caster.
|
||||
// ---------------------------------------------------------------------
|
||||
if( !GetIsFighting(OBJECT_SELF) && bAttack)
|
||||
{
|
||||
if(GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL))
|
||||
{
|
||||
DetermineSpecialBehavior(oCaster);
|
||||
}
|
||||
else
|
||||
{
|
||||
DetermineCombatRound(oCaster);
|
||||
}
|
||||
}
|
||||
|
||||
// We were attacked, so yell for help
|
||||
SetCommandable(TRUE);
|
||||
//Shout Attack my target, only works with the On Spawn In setup
|
||||
SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);
|
||||
|
||||
//Shout that I was attacked
|
||||
SpeakString("NW_I_WAS_ATTACKED", TALKVOLUME_SILENT_TALK);
|
||||
}
|
||||
else
|
||||
{
|
||||
// ---------------------------------------------------------------------
|
||||
// July 14, 2003 BK
|
||||
// If there is a valid enemy nearby and a NON HARMFUL spell has been
|
||||
// cast on me I should call DetermineCombatRound
|
||||
// I may be invisible and casting spells on myself to buff myself up
|
||||
// ---------------------------------------------------------------------
|
||||
// Fix: JE - let's only do this if I'm currently in combat. If I'm not
|
||||
// in combat, and something casts a spell on me, it'll make me search
|
||||
// out the nearest enemy, no matter where they are on the level, which
|
||||
// is kinda dumb.
|
||||
object oEnemy =GetNearestEnemy();
|
||||
if ((GetIsObjectValid(oEnemy) == TRUE) && (GetIsInCombat() == TRUE))
|
||||
{
|
||||
// SpeakString("keep me in combat");
|
||||
DetermineCombatRound(oEnemy);
|
||||
}
|
||||
}
|
||||
|
||||
// Send the user-defined event as appropriate
|
||||
if(GetSpawnInCondition(NW_FLAG_SPELL_CAST_AT_EVENT))
|
||||
{
|
||||
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_SPELL_CAST_AT));
|
||||
}
|
||||
|
||||
|
||||
}
|
51
_module/nss/nw_c2_defaulte.nss
Normal file
51
_module/nss/nw_c2_defaulte.nss
Normal file
@@ -0,0 +1,51 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Default On Blocked
|
||||
//:: NW_C2_DEFAULTE
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
This will cause blocked creatures to open
|
||||
or smash down doors depending on int and
|
||||
str.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Preston Watamaniuk
|
||||
//:: Created On: Nov 23, 2001
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
void main()
|
||||
{
|
||||
ExecuteScript("prc_npc_blocked", OBJECT_SELF);
|
||||
|
||||
object oDoor = GetBlockingDoor();
|
||||
if (GetObjectType(oDoor) == OBJECT_TYPE_CREATURE)
|
||||
{
|
||||
// * Increment number of times blocked
|
||||
/*SetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED", GetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED") + 1);
|
||||
if (GetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED") > 3)
|
||||
{
|
||||
SpeakString("Blocked by creature");
|
||||
SetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED",0);
|
||||
ClearAllActions();
|
||||
object oEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY);
|
||||
if (GetIsObjectValid(oEnemy) == TRUE)
|
||||
{
|
||||
ActionEquipMostDamagingRanged(oEnemy);
|
||||
ActionAttack(oEnemy);
|
||||
}
|
||||
return;
|
||||
} */
|
||||
return;
|
||||
}
|
||||
if(GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 5)
|
||||
{
|
||||
if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_OPEN) && GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 7 )
|
||||
{
|
||||
DoDoorAction(oDoor, DOOR_ACTION_OPEN);
|
||||
}
|
||||
else if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_BASH))
|
||||
{
|
||||
DoDoorAction(oDoor, DOOR_ACTION_BASH);
|
||||
}
|
||||
}
|
||||
}
|
12
_module/nss/prc_pwonspawn.nss
Normal file
12
_module/nss/prc_pwonspawn.nss
Normal file
@@ -0,0 +1,12 @@
|
||||
//:://////////////////////////////////////////////////
|
||||
//:: prc_pwonspawn
|
||||
/*
|
||||
PRC's OnSpawn event handler for NPCs.
|
||||
|
||||
*/
|
||||
//:://////////////////////////////////////////////////
|
||||
|
||||
void main()
|
||||
{
|
||||
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
|
||||
}
|
@@ -1,24 +1,34 @@
|
||||
//Put this script OnOpen
|
||||
|
||||
#include "prc_class_const"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = GetLastUnlocked();
|
||||
|
||||
object oPC = GetLastUnlocked();
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_ROGUE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_NINJA, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SCOUT, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BEGUILER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oPC);
|
||||
|
||||
if (!GetIsPC(oPC)) return;
|
||||
|
||||
if (!GetIsPC(oPC)) return;
|
||||
if (nClass <= 0)
|
||||
{
|
||||
SendMessageToPC(oPC, "You may not pass!");
|
||||
|
||||
if ((GetLevelByClass(CLASS_TYPE_ROGUE, oPC)==0))
|
||||
{
|
||||
SendMessageToPC(oPC, "You may not pass!");
|
||||
ActionCloseDoor(OBJECT_SELF);
|
||||
|
||||
ActionCloseDoor(OBJECT_SELF);
|
||||
SetLocked(OBJECT_SELF, TRUE);
|
||||
}
|
||||
|
||||
SetLocked(OBJECT_SELF, TRUE);
|
||||
else
|
||||
{
|
||||
SendMessageToPC(oPC, "You may pass.");
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
SendMessageToPC(oPC, "You may pass.");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -1,36 +1,50 @@
|
||||
location lTarget;
|
||||
object oTarget;
|
||||
|
||||
//Put this script OnEnter
|
||||
|
||||
#include "prc_class_const"
|
||||
|
||||
void main()
|
||||
{
|
||||
location lTarget;
|
||||
object oTarget;
|
||||
|
||||
object oPC = GetEnteringObject();
|
||||
|
||||
object oPC = GetEnteringObject();
|
||||
int r = GetLevelByClass(CLASS_TYPE_ROGUE, oPC);
|
||||
int s = GetSkillRank(SKILL_SEARCH, oPC, TRUE);
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_ROGUE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_NINJA, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SCOUT, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oPC);
|
||||
|
||||
int nSearch = GetSkillRank(SKILL_SEARCH, oPC, TRUE);
|
||||
|
||||
//They must be a level 21 rogue nothing happens
|
||||
if (r <=20)
|
||||
{
|
||||
//Only if they can spot it!
|
||||
if(s >=30)
|
||||
FloatingTextStringOnCreature("You notice a strange looking crack in the wall.", oPC, FALSE);
|
||||
}
|
||||
else if (r >=21)
|
||||
{
|
||||
if(s >=34)
|
||||
{
|
||||
SendMessageToPC(oPC, "You found a secrete lever!");
|
||||
//:: They must be a level 21 rogue nothing happens
|
||||
if (nClass <= 20)
|
||||
{
|
||||
//:: Only if they can spot it!
|
||||
if(nSearch >= 30)
|
||||
{
|
||||
FloatingTextStringOnCreature("You notice a strange looking crack in the wall.", oPC, FALSE);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
oTarget = GetWaypointByTag("royalrogueway");
|
||||
else if (nClass >= 21)
|
||||
{
|
||||
if(nSearch >= 34)
|
||||
{
|
||||
SendMessageToPC(oPC, "You found a secret lever!");
|
||||
|
||||
lTarget = GetLocation(oTarget);
|
||||
oTarget = GetWaypointByTag("royalrogueway");
|
||||
|
||||
if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
|
||||
lTarget = GetLocation(oTarget);
|
||||
|
||||
DelayCommand(2.0, AssignCommand(oPC, ClearAllActions()));
|
||||
if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
|
||||
|
||||
DelayCommand(2.0, AssignCommand(oPC, ActionJumpToLocation(lTarget)));
|
||||
}
|
||||
}
|
||||
}
|
||||
DelayCommand(2.0, AssignCommand(oPC, ClearAllActions()));
|
||||
|
||||
DelayCommand(2.0, AssignCommand(oPC, ActionJumpToLocation(lTarget)));
|
||||
}
|
||||
}
|
||||
}
|
@@ -17,7 +17,9 @@ the X2_ITEM_EVENT_ACTIVATE: script code will run.
|
||||
|
||||
*/
|
||||
////////////////////////////////////////
|
||||
|
||||
#include "x2_inc_switches"
|
||||
#include "prc_class_const"
|
||||
|
||||
//Main Script
|
||||
void main()
|
||||
@@ -92,8 +94,15 @@ void main()
|
||||
oTarget = GetItemActivatedTarget(); //The target of the item's power
|
||||
lway = GetItemActivatedTargetLocation(); //To get the location of the target!
|
||||
|
||||
nWLvl = GetLevelByClass(CLASS_TYPE_WIZARD, oPC);
|
||||
nSLvl = GetLevelByClass(CLASS_TYPE_SORCERER, oPC);
|
||||
nWLvl = GetLevelByClass(CLASS_TYPE_WIZARD, oPC);
|
||||
|
||||
nSLvl = GetLevelByClass(CLASS_TYPE_SORCERER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WARMAGE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SHADOWCASTER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_WARLOCK, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_DRAGONFIRE_ADEPT, oPC);
|
||||
|
||||
//Determine effects...
|
||||
if(nWLvl >=21)
|
||||
{
|
||||
|
@@ -1,38 +1,47 @@
|
||||
location lTarget;
|
||||
object oTarget;
|
||||
|
||||
//Put this script OnEnter
|
||||
|
||||
#include "prc_class_const"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = GetEnteringObject();
|
||||
object oTarget;
|
||||
|
||||
location lTarget;
|
||||
|
||||
object oPC = GetEnteringObject();
|
||||
if (!GetIsPC(oPC)) return;
|
||||
|
||||
if (!GetIsPC(oPC)) return;
|
||||
int DoOnce = GetLocalInt(oPC, GetTag(OBJECT_SELF));
|
||||
|
||||
int DoOnce = GetLocalInt(oPC, GetTag(OBJECT_SELF));
|
||||
if (DoOnce==TRUE) return;
|
||||
|
||||
if (DoOnce==TRUE) return;
|
||||
SetLocalInt(oPC, GetTag(OBJECT_SELF), TRUE);
|
||||
|
||||
SetLocalInt(oPC, GetTag(OBJECT_SELF), TRUE);
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_ROGUE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_NINJA, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SCOUT, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BEGUILER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oPC);
|
||||
|
||||
if (nClass >= 1)
|
||||
{
|
||||
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 88))
|
||||
{
|
||||
|
||||
if ((GetLevelByClass(CLASS_TYPE_ROGUE, oPC)>0))
|
||||
{
|
||||
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 88))
|
||||
{
|
||||
oTarget = GetWaypointByTag("crackway1");
|
||||
|
||||
oTarget = GetWaypointByTag("crackway1");
|
||||
lTarget = GetLocation(oTarget);
|
||||
|
||||
lTarget = GetLocation(oTarget);
|
||||
if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
|
||||
|
||||
if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
|
||||
AssignCommand(oPC, ClearAllActions());
|
||||
|
||||
AssignCommand(oPC, ClearAllActions());
|
||||
AssignCommand(oPC, ActionJumpToLocation(lTarget));
|
||||
|
||||
AssignCommand(oPC, ActionJumpToLocation(lTarget));
|
||||
|
||||
DelayCommand(1.0, FloatingTextStringOnCreature("You found a magical entrance to a small cave!", oPC));
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
DelayCommand(1.0, FloatingTextStringOnCreature("You found the magical entrance to a small cave!", oPC));
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,37 +1,47 @@
|
||||
location lTarget;
|
||||
object oTarget;
|
||||
|
||||
//Put this script OnEnter
|
||||
|
||||
#include "prc_class_const"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = GetEnteringObject();
|
||||
object oTarget;
|
||||
|
||||
location lTarget;
|
||||
|
||||
object oPC = GetEnteringObject();
|
||||
if (!GetIsPC(oPC)) return;
|
||||
|
||||
if (!GetIsPC(oPC)) return;
|
||||
int DoOnce = GetLocalInt(oPC, GetTag(OBJECT_SELF));
|
||||
|
||||
int DoOnce = GetLocalInt(oPC, GetTag(OBJECT_SELF));
|
||||
if (DoOnce==TRUE) return;
|
||||
|
||||
if (DoOnce==TRUE) return;
|
||||
SetLocalInt(oPC, GetTag(OBJECT_SELF), TRUE);
|
||||
|
||||
SetLocalInt(oPC, GetTag(OBJECT_SELF), TRUE);
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_ROGUE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_NINJA, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_SCOUT, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BEGUILER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oPC);
|
||||
|
||||
if (nClass >= 11)
|
||||
{
|
||||
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 88))
|
||||
{
|
||||
|
||||
if ((GetLevelByClass(CLASS_TYPE_ROGUE, oPC)>10))
|
||||
{
|
||||
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 88))
|
||||
{
|
||||
oTarget = GetWaypointByTag("crackway2");
|
||||
oTarget = GetWaypointByTag("crackway1");
|
||||
|
||||
lTarget = GetLocation(oTarget);
|
||||
lTarget = GetLocation(oTarget);
|
||||
|
||||
if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
|
||||
|
||||
if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
|
||||
AssignCommand(oPC, ClearAllActions());
|
||||
|
||||
AssignCommand(oPC, ClearAllActions());
|
||||
AssignCommand(oPC, ActionJumpToLocation(lTarget));
|
||||
|
||||
AssignCommand(oPC, ActionJumpToLocation(lTarget));
|
||||
|
||||
DelayCommand(1.0, FloatingTextStringOnCreature("You found a magical entrance to a small cave!", oPC));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
DelayCommand(1.0, FloatingTextStringOnCreature("You found the magical entrance to a small cave!", oPC));
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,16 +1,23 @@
|
||||
#include "prc_class_const"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oDoor = OBJECT_SELF;
|
||||
|
||||
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
|
||||
int class1 = GetLevelByClass(CLASS_TYPE_ROGUE, oPC);
|
||||
int class2 = GetLevelByClass(CLASS_TYPE_BARD, oPC);
|
||||
int pass = class1 + class2;
|
||||
if (pass <=14){
|
||||
AssignCommand(oDoor, ActionCloseDoor(oDoor));
|
||||
SetLocked(oDoor, TRUE) ;
|
||||
|
||||
SendMessageToPC(oPC, "This complex lock has detected tampering, and relocked itself.");
|
||||
}
|
||||
object oDoor = OBJECT_SELF;
|
||||
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
|
||||
|
||||
int nClass;
|
||||
|
||||
nClass = GetLevelByClass(CLASS_TYPE_ROGUE, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_NINJA, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_BEGUILER, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC)
|
||||
+GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oPC);
|
||||
|
||||
if (nClass <= 14)
|
||||
{
|
||||
AssignCommand(oDoor, ActionCloseDoor(oDoor));
|
||||
SetLocked(oDoor, TRUE) ;
|
||||
SendMessageToPC(oPC, "This complex lock has detected tampering, and relocked itself.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
#include "X_O2_CONINCLUDE"
|
||||
#include "GSLOOT_LIB"
|
||||
#include "prc_class_const"
|
||||
|
||||
// Modified by AW Olorin 1-12-2004
|
||||
// Anti-GS Looting
|
||||
@@ -2646,6 +2647,43 @@ void CreateWarhammer(object oTarget, object oAdventurer)
|
||||
if (sItem != "")
|
||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||
}
|
||||
void CreateWhip(object oTarget, object oAdventurer)
|
||||
{
|
||||
string sItem = "";
|
||||
int nHD = GetHitDice(oAdventurer);
|
||||
|
||||
if (GetRange(1, nHD)) // * 800
|
||||
{
|
||||
sItem = "x2_it_wpmwhip1";
|
||||
}
|
||||
else if (GetRange(2, nHD)) // * 200 - 2500
|
||||
{
|
||||
sItem = "x2_it_wpmwhip1";
|
||||
}
|
||||
else if (GetRange(3, nHD)) // * 800 - 10000
|
||||
{
|
||||
int nRandom = Random(2) + 1;
|
||||
switch (nRandom)
|
||||
{
|
||||
case 1: sItem = "x2_it_wpmwhip1"; break;
|
||||
case 2: sItem = "x2_it_wpmwhip2"; break;
|
||||
}
|
||||
}
|
||||
else if (GetRange(4, nHD)) // * 2500 - 16500
|
||||
{
|
||||
sItem = "x2_it_wpmwhip2";
|
||||
}
|
||||
else if (GetRange(5, nHD)) // * 8000 - 25000
|
||||
{
|
||||
sItem = "x2_it_wpmwhip3";
|
||||
}
|
||||
else if (GetRange(6, nHD)) // * 16000 and up
|
||||
{
|
||||
sItem = "x2_it_wpmwhip3";
|
||||
}
|
||||
if (sItem != "")
|
||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||
}
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Prefers
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
@@ -2850,13 +2888,60 @@ location lLoc = GetLocation(OBJECT_SELF);
|
||||
{
|
||||
// * if get to this point then the PC did not have Weapon Focus
|
||||
// * in anything then do additional logic to give an appropriate weapon
|
||||
if (GetLevelByClass(CLASS_TYPE_ALAGHAR, oLastOpener) >= 1)
|
||||
{
|
||||
CreateBattleAxe(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_HEARTWARDER, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_LASHER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateWhip(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_STORMLORD, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpear(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_BLIGHTLORD, oLastOpener) >= 1)
|
||||
{
|
||||
CreateHalberd(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_HALFLING_WARSLINGER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSling(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_BOWMAN, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_BLARCHER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateLongbow(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_SAMURAI, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_CW_SAMURAI, oLastOpener) >= 1)
|
||||
{
|
||||
CreateKatana(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_SWASHBUCKLER, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_DUELIST, oLastOpener) >= 1)
|
||||
{
|
||||
CreateRapier(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_DRUID, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpecificDruidWeapon(oContainer, oLastOpener);
|
||||
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener) >= 1)
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_PSION, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_SHADOWCASTER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpecificWizardWeapon(oContainer, oLastOpener);
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
#include "X_O2_CONINCLUDE"
|
||||
#include "GSLOOT_LIB"
|
||||
#include "prc_class_const"
|
||||
|
||||
// Modified by AW Olorin 1-12-2004
|
||||
// Anti-GS Looting
|
||||
@@ -2646,6 +2647,43 @@ void CreateWarhammer(object oTarget, object oAdventurer)
|
||||
if (sItem != "")
|
||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||
}
|
||||
void CreateWhip(object oTarget, object oAdventurer)
|
||||
{
|
||||
string sItem = "";
|
||||
int nHD = GetHitDice(oAdventurer);
|
||||
|
||||
if (GetRange(1, nHD)) // * 800
|
||||
{
|
||||
sItem = "x2_it_wpmwhip1";
|
||||
}
|
||||
else if (GetRange(2, nHD)) // * 200 - 2500
|
||||
{
|
||||
sItem = "x2_it_wpmwhip1";
|
||||
}
|
||||
else if (GetRange(3, nHD)) // * 800 - 10000
|
||||
{
|
||||
int nRandom = Random(2) + 1;
|
||||
switch (nRandom)
|
||||
{
|
||||
case 1: sItem = "x2_it_wpmwhip1"; break;
|
||||
case 2: sItem = "x2_it_wpmwhip2"; break;
|
||||
}
|
||||
}
|
||||
else if (GetRange(4, nHD)) // * 2500 - 16500
|
||||
{
|
||||
sItem = "x2_it_wpmwhip2";
|
||||
}
|
||||
else if (GetRange(5, nHD)) // * 8000 - 25000
|
||||
{
|
||||
sItem = "x2_it_wpmwhip3";
|
||||
}
|
||||
else if (GetRange(6, nHD)) // * 16000 and up
|
||||
{
|
||||
sItem = "x2_it_wpmwhip3";
|
||||
}
|
||||
if (sItem != "")
|
||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||
}
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Prefers
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
@@ -2850,13 +2888,60 @@ location lLoc = GetLocation(OBJECT_SELF);
|
||||
{
|
||||
// * if get to this point then the PC did not have Weapon Focus
|
||||
// * in anything then do additional logic to give an appropriate weapon
|
||||
if (GetLevelByClass(CLASS_TYPE_ALAGHAR, oLastOpener) >= 1)
|
||||
{
|
||||
CreateBattleAxe(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_HEARTWARDER, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_LASHER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateWhip(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_STORMLORD, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpear(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_BLIGHTLORD, oLastOpener) >= 1)
|
||||
{
|
||||
CreateHalberd(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_HALFLING_WARSLINGER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSling(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_BOWMAN, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_BLARCHER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateLongbow(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_SAMURAI, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_CW_SAMURAI, oLastOpener) >= 1)
|
||||
{
|
||||
CreateKatana(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_SWASHBUCKLER, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_DUELIST, oLastOpener) >= 1)
|
||||
{
|
||||
CreateRapier(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_DRUID, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpecificDruidWeapon(oContainer, oLastOpener);
|
||||
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener) >= 1)
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_PSION, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_SHADOWCASTER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpecificWizardWeapon(oContainer, oLastOpener);
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
#include "X_O2_CONINCLUDE"
|
||||
#include "GSLOOT_LIB"
|
||||
#include "prc_class_const"
|
||||
|
||||
// Modofied by AW Olorin 1-12-2004
|
||||
// Anti-GS Looting
|
||||
@@ -2646,6 +2647,43 @@ void CreateWarhammer(object oTarget, object oAdventurer)
|
||||
if (sItem != "")
|
||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||
}
|
||||
void CreateWhip(object oTarget, object oAdventurer)
|
||||
{
|
||||
string sItem = "";
|
||||
int nHD = GetHitDice(oAdventurer);
|
||||
|
||||
if (GetRange(1, nHD)) // * 800
|
||||
{
|
||||
sItem = "x2_it_wpmwhip1";
|
||||
}
|
||||
else if (GetRange(2, nHD)) // * 200 - 2500
|
||||
{
|
||||
sItem = "x2_it_wpmwhip1";
|
||||
}
|
||||
else if (GetRange(3, nHD)) // * 800 - 10000
|
||||
{
|
||||
int nRandom = Random(2) + 1;
|
||||
switch (nRandom)
|
||||
{
|
||||
case 1: sItem = "x2_it_wpmwhip1"; break;
|
||||
case 2: sItem = "x2_it_wpmwhip2"; break;
|
||||
}
|
||||
}
|
||||
else if (GetRange(4, nHD)) // * 2500 - 16500
|
||||
{
|
||||
sItem = "x2_it_wpmwhip2";
|
||||
}
|
||||
else if (GetRange(5, nHD)) // * 8000 - 25000
|
||||
{
|
||||
sItem = "x2_it_wpmwhip3";
|
||||
}
|
||||
else if (GetRange(6, nHD)) // * 16000 and up
|
||||
{
|
||||
sItem = "x2_it_wpmwhip3";
|
||||
}
|
||||
if (sItem != "")
|
||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||
}
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Prefers
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
@@ -2853,13 +2891,60 @@ location lLoc = GetLocation(OBJECT_SELF);
|
||||
{
|
||||
// * if get to this point then the PC did not have Weapon Focus
|
||||
// * in anything then do additional logic to give an appropriate weapon
|
||||
if (GetLevelByClass(CLASS_TYPE_ALAGHAR, oLastOpener) >= 1)
|
||||
{
|
||||
CreateBattleAxe(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_HEARTWARDER, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_LASHER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateWhip(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_STORMLORD, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpear(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_BLIGHTLORD, oLastOpener) >= 1)
|
||||
{
|
||||
CreateHalberd(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_HALFLING_WARSLINGER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSling(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_BOWMAN, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_BLARCHER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateLongbow(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_SAMURAI, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_CW_SAMURAI, oLastOpener) >= 1)
|
||||
{
|
||||
CreateKatana(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_SWASHBUCKLER, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_DUELIST, oLastOpener) >= 1)
|
||||
{
|
||||
CreateRapier(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_DRUID, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpecificDruidWeapon(oContainer, oLastOpener);
|
||||
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener) >= 1)
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_PSION, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_SHADOWCASTER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpecificWizardWeapon(oContainer, oLastOpener);
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
#include "X_O2_CONINCLUDE"
|
||||
#include "GSLOOT_LIB"
|
||||
#include "prc_class_const"
|
||||
|
||||
// Modifed by AW Olorin 1-12-2004
|
||||
// Anti-GS Looting
|
||||
@@ -2646,6 +2647,43 @@ void CreateWarhammer(object oTarget, object oAdventurer)
|
||||
if (sItem != "")
|
||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||
}
|
||||
void CreateWhip(object oTarget, object oAdventurer)
|
||||
{
|
||||
string sItem = "";
|
||||
int nHD = GetHitDice(oAdventurer);
|
||||
|
||||
if (GetRange(1, nHD)) // * 800
|
||||
{
|
||||
sItem = "x2_it_wpmwhip1";
|
||||
}
|
||||
else if (GetRange(2, nHD)) // * 200 - 2500
|
||||
{
|
||||
sItem = "x2_it_wpmwhip1";
|
||||
}
|
||||
else if (GetRange(3, nHD)) // * 800 - 10000
|
||||
{
|
||||
int nRandom = Random(2) + 1;
|
||||
switch (nRandom)
|
||||
{
|
||||
case 1: sItem = "x2_it_wpmwhip1"; break;
|
||||
case 2: sItem = "x2_it_wpmwhip2"; break;
|
||||
}
|
||||
}
|
||||
else if (GetRange(4, nHD)) // * 2500 - 16500
|
||||
{
|
||||
sItem = "x2_it_wpmwhip2";
|
||||
}
|
||||
else if (GetRange(5, nHD)) // * 8000 - 25000
|
||||
{
|
||||
sItem = "x2_it_wpmwhip3";
|
||||
}
|
||||
else if (GetRange(6, nHD)) // * 16000 and up
|
||||
{
|
||||
sItem = "x2_it_wpmwhip3";
|
||||
}
|
||||
if (sItem != "")
|
||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||
}
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Prefers
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
@@ -2852,13 +2890,60 @@ location lLoc = GetLocation(OBJECT_SELF);
|
||||
{
|
||||
// * if get to this point then the PC did not have Weapon Focus
|
||||
// * in anything then do additional logic to give an appropriate weapon
|
||||
if (GetLevelByClass(CLASS_TYPE_ALAGHAR, oLastOpener) >= 1)
|
||||
{
|
||||
CreateBattleAxe(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_HEARTWARDER, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_LASHER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateWhip(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_STORMLORD, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpear(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_BLIGHTLORD, oLastOpener) >= 1)
|
||||
{
|
||||
CreateHalberd(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_HALFLING_WARSLINGER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSling(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_BOWMAN, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_BLARCHER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateLongbow(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_SAMURAI, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_CW_SAMURAI, oLastOpener) >= 1)
|
||||
{
|
||||
CreateKatana(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_SWASHBUCKLER, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_DUELIST, oLastOpener) >= 1)
|
||||
{
|
||||
CreateRapier(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_DRUID, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpecificDruidWeapon(oContainer, oLastOpener);
|
||||
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener) >= 1)
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_PSION, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_SHADOWCASTER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpecificWizardWeapon(oContainer, oLastOpener);
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
#include "X_O2_CONINCLUDE"
|
||||
#include "GSLOOT_LIB"
|
||||
#include "prc_class_const"
|
||||
|
||||
// Modified by AW Olorin 1-12-2004
|
||||
// Anti-GS Looting
|
||||
@@ -2646,6 +2647,43 @@ void CreateWarhammer(object oTarget, object oAdventurer)
|
||||
if (sItem != "")
|
||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||
}
|
||||
void CreateWhip(object oTarget, object oAdventurer)
|
||||
{
|
||||
string sItem = "";
|
||||
int nHD = GetHitDice(oAdventurer);
|
||||
|
||||
if (GetRange(1, nHD)) // * 800
|
||||
{
|
||||
sItem = "x2_it_wpmwhip1";
|
||||
}
|
||||
else if (GetRange(2, nHD)) // * 200 - 2500
|
||||
{
|
||||
sItem = "x2_it_wpmwhip1";
|
||||
}
|
||||
else if (GetRange(3, nHD)) // * 800 - 10000
|
||||
{
|
||||
int nRandom = Random(2) + 1;
|
||||
switch (nRandom)
|
||||
{
|
||||
case 1: sItem = "x2_it_wpmwhip1"; break;
|
||||
case 2: sItem = "x2_it_wpmwhip2"; break;
|
||||
}
|
||||
}
|
||||
else if (GetRange(4, nHD)) // * 2500 - 16500
|
||||
{
|
||||
sItem = "x2_it_wpmwhip2";
|
||||
}
|
||||
else if (GetRange(5, nHD)) // * 8000 - 25000
|
||||
{
|
||||
sItem = "x2_it_wpmwhip3";
|
||||
}
|
||||
else if (GetRange(6, nHD)) // * 16000 and up
|
||||
{
|
||||
sItem = "x2_it_wpmwhip3";
|
||||
}
|
||||
if (sItem != "")
|
||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||
}
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Prefers
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
@@ -2851,13 +2889,60 @@ location lLoc = GetLocation(OBJECT_SELF);
|
||||
{
|
||||
// * if get to this point then the PC did not have Weapon Focus
|
||||
// * in anything then do additional logic to give an appropriate weapon
|
||||
if (GetLevelByClass(CLASS_TYPE_DRUID, oLastOpener) >= 1)
|
||||
if (GetLevelByClass(CLASS_TYPE_ALAGHAR, oLastOpener) >= 1)
|
||||
{
|
||||
CreateBattleAxe(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_HEARTWARDER, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_LASHER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateWhip(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_STORMLORD, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpear(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_BLIGHTLORD, oLastOpener) >= 1)
|
||||
{
|
||||
CreateHalberd(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_HALFLING_WARSLINGER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSling(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_BOWMAN, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_BLARCHER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateLongbow(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_SAMURAI, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_CW_SAMURAI, oLastOpener) >= 1)
|
||||
{
|
||||
CreateKatana(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_SWASHBUCKLER, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_DUELIST, oLastOpener) >= 1)
|
||||
{
|
||||
CreateRapier(oContainer, oLastOpener);
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_DRUID, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpecificDruidWeapon(oContainer, oLastOpener);
|
||||
|
||||
}
|
||||
else
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener) >= 1)
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_PSION, oLastOpener) >= 1
|
||||
|| GetLevelByClass(CLASS_TYPE_SHADOWCASTER, oLastOpener) >= 1)
|
||||
{
|
||||
CreateSpecificWizardWeapon(oContainer, oLastOpener);
|
||||
|
||||
|
Reference in New Issue
Block a user