generated from Jaysyn/ModuleTemplate
2025/08/24 Update
Updated for PRC8 updates.
This commit is contained in:
parent
2761e40da2
commit
2dc2ec8d49
@ -9,7 +9,7 @@ Repository for the development of the PRC8 version of I1 - Dwellers Of The Forbi
|
|||||||
|
|
||||||
2.) [Original module resources](https://neverwintervault.org/project/nwn1/module/i1-dwellers-forbidden-city)
|
2.) [Original module resources](https://neverwintervault.org/project/nwn1/module/i1-dwellers-forbidden-city)
|
||||||
|
|
||||||
3.) [PRC8](https://gitea.raptio.us/Jaysyn/PRC8/src/branch/main/Release)
|
3.) [PRC8](https://gitea.raptio.us/Jaysyn/PRC8/releases)
|
||||||
|
|
||||||
4.) [CEP2](https://neverwintervault.org/cep)
|
4.) [CEP2](https://neverwintervault.org/cep)
|
||||||
|
|
||||||
|
22
nasher.cfg
22
nasher.cfg
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "I1 - Dwellers Of The Forbidden City [PRC8-CEP2]"
|
name = "I1 - Dwellers Of The Forbidden City [PRC8-CEP2]"
|
||||||
description = "PRC8 version of I1 - Dwellers Of The Forbidden City."
|
description = "PRC8 version of I1 - Dwellers Of The Forbidden City."
|
||||||
version = "6.6prc8"
|
version = "6.7prc8"
|
||||||
url = "https://discord.gg/ca2ru3KxYd"
|
url = "https://discord.gg/ca2ru3KxYd"
|
||||||
author = "Udasu & Rosie the Pup"
|
author = "Udasu & Rosie the Pup"
|
||||||
author = "Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com>"
|
author = "Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com>"
|
||||||
@ -231,8 +231,15 @@ description = "PRC8 version of I1 - Dwellers Of The Forbidden City."
|
|||||||
filter = "prc_nui_sc_inc.nss"
|
filter = "prc_nui_sc_inc.nss"
|
||||||
filter = "prc_nui_scd_inc.nss"
|
filter = "prc_nui_scd_inc.nss"
|
||||||
filter = "prc_nui_consts.nss"
|
filter = "prc_nui_consts.nss"
|
||||||
filter = "nw_inc_nui"
|
filter = "prc_nui_sb_inc.nss"
|
||||||
filter = "xchst_inc.nss"
|
filter = "prc_nui_sbd_inc.nss"
|
||||||
|
filter = "prc_nui_lv_inc.nss"
|
||||||
|
filter = "prc_nui_com_inc.nss"
|
||||||
|
filter = "nw_inc_nui.nss"
|
||||||
|
filter = "inc_infusion.nss"
|
||||||
|
filter = "nw_inc_gff.nss"
|
||||||
|
filter = "prc_inc_json.nss"
|
||||||
|
filter = "xchst_inc.nss"
|
||||||
|
|
||||||
[target]
|
[target]
|
||||||
name = "tophak"
|
name = "tophak"
|
||||||
@ -452,7 +459,14 @@ description = "PRC8 merge hakpak for PRC8 version of I1 - Dwellers Of The Forbid
|
|||||||
filter = "prc_nui_sc_inc.nss"
|
filter = "prc_nui_sc_inc.nss"
|
||||||
filter = "prc_nui_scd_inc.nss"
|
filter = "prc_nui_scd_inc.nss"
|
||||||
filter = "prc_nui_consts.nss"
|
filter = "prc_nui_consts.nss"
|
||||||
filter = "nw_inc_nui"
|
filter = "prc_nui_sb_inc.nss"
|
||||||
|
filter = "prc_nui_sbd_inc.nss"
|
||||||
|
filter = "prc_nui_lv_inc.nss"
|
||||||
|
filter = "prc_nui_com_inc.nss"
|
||||||
|
filter = "nw_inc_nui.nss"
|
||||||
|
filter = "inc_infusion.nss"
|
||||||
|
filter = "nw_inc_gff.nss"
|
||||||
|
filter = "prc_inc_json.nss"
|
||||||
filter = "xchst_inc.nss"
|
filter = "xchst_inc.nss"
|
||||||
|
|
||||||
[target.rules]
|
[target.rules]
|
||||||
|
@ -11,8 +11,6 @@
|
|||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
//:: Created By: Brent, Andrew
|
//:: Created By: Brent, Andrew
|
||||||
//:: Created On: November - May
|
//:: Created On: November - May
|
||||||
//::
|
|
||||||
//:: Updated for .35 by Jaysyn 2023/03/10
|
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
// :: MODS
|
// :: MODS
|
||||||
// April 23 2002: Removed animal parts. They were silly.
|
// April 23 2002: Removed animal parts. They were silly.
|
||||||
@ -24,65 +22,64 @@
|
|||||||
// Moved nymph cloak +4 to treasure bracket 6
|
// Moved nymph cloak +4 to treasure bracket 6
|
||||||
// Added Monk Enhancement items to random treasure
|
// Added Monk Enhancement items to random treasure
|
||||||
|
|
||||||
#include "prc_class_const"
|
|
||||||
|
|
||||||
// * ---------
|
// * ---------
|
||||||
// * CONSTANTS
|
// * CONSTANTS
|
||||||
// * ---------
|
// * ---------
|
||||||
|
|
||||||
|
|
||||||
// * tweaking constants
|
// * tweaking constants
|
||||||
|
|
||||||
// * SIX LEVEL RANGES
|
// * SIX LEVEL RANGES
|
||||||
const int RANGE_1_MIN = 0;
|
int RANGE_1_MIN = 0;
|
||||||
const int RANGE_1_MAX = 5;
|
int RANGE_1_MAX = 5;
|
||||||
const int RANGE_2_MIN = 6;
|
int RANGE_2_MIN = 6;
|
||||||
const int RANGE_2_MAX = 8;
|
int RANGE_2_MAX = 8;
|
||||||
|
|
||||||
const int RANGE_3_MIN = 9;
|
int RANGE_3_MIN = 9;
|
||||||
const int RANGE_3_MAX = 10;
|
int RANGE_3_MAX = 10;
|
||||||
|
|
||||||
const int RANGE_4_MIN = 11;
|
int RANGE_4_MIN = 11;
|
||||||
const int RANGE_4_MAX = 13;
|
int RANGE_4_MAX = 13;
|
||||||
|
|
||||||
const int RANGE_5_MIN = 14;
|
int RANGE_5_MIN = 14;
|
||||||
const int RANGE_5_MAX = 16;
|
int RANGE_5_MAX = 16;
|
||||||
|
|
||||||
const int RANGE_6_MIN = 17;
|
int RANGE_6_MIN = 17;
|
||||||
const int RANGE_6_MAX = 100;
|
int RANGE_6_MAX = 100;
|
||||||
|
|
||||||
// * NUMBER OF ITEMS APPEARING
|
// * NUMBER OF ITEMS APPEARING
|
||||||
const int NUMBER_LOW_ONE = 100; const int NUMBER_MED_ONE = 60; const int NUMBER_HIGH_ONE = 40; const int NUMBER_BOSS_ONE = 100;
|
int NUMBER_LOW_ONE = 100; int NUMBER_MED_ONE = 60; int NUMBER_HIGH_ONE = 40; int NUMBER_BOSS_ONE = 100;
|
||||||
const int NUMBER_LOW_TWO = 0; const int NUMBER_MED_TWO = 30; const int NUMBER_HIGH_TWO = 40; const int NUMBER_BOSS_TWO = 0;
|
int NUMBER_LOW_TWO = 0; int NUMBER_MED_TWO = 30; int NUMBER_HIGH_TWO = 40; int NUMBER_BOSS_TWO = 0;
|
||||||
const int NUMBER_LOW_THREE = 0; const int NUMBER_MED_THREE = 10; const int NUMBER_HIGH_THREE = 20; const int NUMBER_BOSS_THREE = 0;
|
int NUMBER_LOW_THREE = 0; int NUMBER_MED_THREE = 10; int NUMBER_HIGH_THREE = 20; int NUMBER_BOSS_THREE = 0;
|
||||||
|
|
||||||
const int NUMBER_BOOK_ONE = 75;
|
int NUMBER_BOOK_ONE = 75;
|
||||||
const int NUMBER_BOOK_TWO = 20;
|
int NUMBER_BOOK_TWO = 20;
|
||||||
const int NUMBER_BOOK_THREE = 5;
|
int NUMBER_BOOK_THREE = 5;
|
||||||
|
|
||||||
// * AMOUNT OF GOLD BY VALUE
|
// * AMOUNT OF GOLD BY VALUE
|
||||||
const float LOW_MOD_GOLD = 0.5; const float MEDIUM_MOD_GOLD = 1.0; const float HIGH_MOD_GOLD = 3.0;
|
float LOW_MOD_GOLD = 0.5; float MEDIUM_MOD_GOLD = 1.0; float HIGH_MOD_GOLD = 3.0;
|
||||||
// * FREQUENCY OF ITEM TYPE APPEARING BY TREASURE TYPE
|
// * FREQUENCY OF ITEM TYPE APPEARING BY TREASURE TYPE
|
||||||
const int LOW_PROB_BOOK = 1; const int MEDIUM_PROB_BOOK = 1; const int HIGH_PROB_BOOK =1;
|
int LOW_PROB_BOOK = 1; int MEDIUM_PROB_BOOK = 1; int HIGH_PROB_BOOK =1;
|
||||||
const int LOW_PROB_ANIMAL = 0; const int MEDIUM_PROB_ANIMAL = 0; const int HIGH_PROB_ANIMAL = 0;
|
int LOW_PROB_ANIMAL = 0; int MEDIUM_PROB_ANIMAL = 0; int HIGH_PROB_ANIMAL = 0;
|
||||||
const int LOW_PROB_JUNK = 2; const int MEDIUM_PROB_JUNK = 1; const int HIGH_PROB_JUNK = 1;
|
int LOW_PROB_JUNK = 2; int MEDIUM_PROB_JUNK = 1; int HIGH_PROB_JUNK = 1;
|
||||||
const int LOW_PROB_GOLD = 43; const int MEDIUM_PROB_GOLD = 38; const int HIGH_PROB_GOLD = 15;
|
int LOW_PROB_GOLD = 43; int MEDIUM_PROB_GOLD = 38; int HIGH_PROB_GOLD = 15;
|
||||||
const int LOW_PROB_GEM = 9; const int MEDIUM_PROB_GEM = 15; const int HIGH_PROB_GEM = 15;
|
int LOW_PROB_GEM = 9; int MEDIUM_PROB_GEM = 15; int HIGH_PROB_GEM = 15;
|
||||||
const int LOW_PROB_JEWEL = 4; const int MEDIUM_PROB_JEWEL = 6; const int HIGH_PROB_JEWEL = 15;
|
int LOW_PROB_JEWEL = 4; int MEDIUM_PROB_JEWEL = 6; int HIGH_PROB_JEWEL = 15;
|
||||||
const int LOW_PROB_ARCANE = 3; const int MEDIUM_PROB_ARCANE = 3; const int HIGH_PROB_ARCANE = 3;
|
int LOW_PROB_ARCANE = 3; int MEDIUM_PROB_ARCANE = 3; int HIGH_PROB_ARCANE = 3;
|
||||||
const int LOW_PROB_DIVINE = 3; const int MEDIUM_PROB_DIVINE = 3; const int HIGH_PROB_DIVINE = 3;
|
int LOW_PROB_DIVINE = 3; int MEDIUM_PROB_DIVINE = 3; int HIGH_PROB_DIVINE = 3;
|
||||||
const int LOW_PROB_AMMO = 10; const int MEDIUM_PROB_AMMO = 5; const int HIGH_PROB_AMMO = 3;
|
int LOW_PROB_AMMO = 10; int MEDIUM_PROB_AMMO = 5; int HIGH_PROB_AMMO = 3;
|
||||||
const int LOW_PROB_KIT = 5; const int MEDIUM_PROB_KIT = 5; const int HIGH_PROB_KIT = 5;
|
int LOW_PROB_KIT = 5; int MEDIUM_PROB_KIT = 5; int HIGH_PROB_KIT = 5;
|
||||||
const int LOW_PROB_POTION =17; const int MEDIUM_PROB_POTION = 20; const int HIGH_PROB_POTION= 9;
|
int LOW_PROB_POTION =17; int MEDIUM_PROB_POTION = 20; int HIGH_PROB_POTION= 9;
|
||||||
const int LOW_PROB_TABLE2 = 3; const int MEDIUM_PROB_TABLE2 = 3; const int HIGH_PROB_TABLE2= 30;
|
int LOW_PROB_TABLE2 = 3; int MEDIUM_PROB_TABLE2 = 3; int HIGH_PROB_TABLE2= 30;
|
||||||
|
|
||||||
|
|
||||||
// * readability constants
|
// * readability constants
|
||||||
|
|
||||||
const int TREASURE_LOW = 1;
|
int TREASURE_LOW = 1;
|
||||||
const int TREASURE_MEDIUM = 2;
|
int TREASURE_MEDIUM = 2;
|
||||||
const int TREASURE_HIGH = 3;
|
int TREASURE_HIGH = 3;
|
||||||
const int TREASURE_BOSS = 4;
|
int TREASURE_BOSS = 4;
|
||||||
const int TREASURE_BOOK = 5;
|
int TREASURE_BOOK = 5;
|
||||||
|
|
||||||
|
|
||||||
// * JUMP_LEVEL is used in a Specific item function
|
// * JUMP_LEVEL is used in a Specific item function
|
||||||
@ -91,7 +88,7 @@ const int TREASURE_BOOK = 5;
|
|||||||
// * hit die for the purposes of the treasure evaluation.
|
// * hit die for the purposes of the treasure evaluation.
|
||||||
// * May 2002: Lowered JUMP_LEVEL from 3 to 2
|
// * May 2002: Lowered JUMP_LEVEL from 3 to 2
|
||||||
|
|
||||||
const int JUMP_LEVEL = 2;
|
int JUMP_LEVEL = 2;
|
||||||
|
|
||||||
|
|
||||||
//* Declarations
|
//* Declarations
|
||||||
@ -118,13 +115,11 @@ void dbSpeak(string s)
|
|||||||
//* made this function to help with debugging
|
//* made this function to help with debugging
|
||||||
void dbCreateItemOnObject(string sItemTemplate, object oTarget = OBJECT_SELF, int nStackSize = 1)
|
void dbCreateItemOnObject(string sItemTemplate, object oTarget = OBJECT_SELF, int nStackSize = 1)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
if (sItemTemplate == "")
|
if (sItemTemplate == "")
|
||||||
{
|
{
|
||||||
PrintString("blank item passed into dbCreateItemOnObject. Please report as bug to Brent.");
|
PrintString("blank item passed into dbCreateItemOnObject. Please report as bug to Brent.");
|
||||||
}
|
}
|
||||||
dbSpeak(sItemTemplate);
|
dbSpeak(sItemTemplate);
|
||||||
*/
|
|
||||||
|
|
||||||
//sItemTemplate = GetStringLowerCase
|
//sItemTemplate = GetStringLowerCase
|
||||||
|
|
||||||
@ -134,14 +129,13 @@ void dbCreateItemOnObject(string sItemTemplate, object oTarget = OBJECT_SELF, in
|
|||||||
// * it creates more
|
// * it creates more
|
||||||
|
|
||||||
string sRoot = GetSubString(sItemTemplate, 0, 6);
|
string sRoot = GetSubString(sItemTemplate, 0, 6);
|
||||||
//dbSpeak("ROOT: " + sRoot);
|
dbSpeak("ROOT: " + sRoot);
|
||||||
if (GetStringLowerCase(sRoot) == "nw_wth")
|
if (GetStringLowerCase(sRoot) == "nw_wth")
|
||||||
{
|
{
|
||||||
nStackSize = Random(30) + 1;
|
nStackSize = Random(30) + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object oItem = CreateItemOnObject(sItemTemplate, oTarget, nStackSize);
|
object oItem = CreateItemOnObject(sItemTemplate, oTarget, nStackSize);
|
||||||
/*
|
|
||||||
if (GetIsObjectValid(oItem) == FALSE && sItemTemplate != "NW_IT_GOLD001")
|
if (GetIsObjectValid(oItem) == FALSE && sItemTemplate != "NW_IT_GOLD001")
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -154,7 +148,6 @@ void dbCreateItemOnObject(string sItemTemplate, object oTarget = OBJECT_SELF, in
|
|||||||
PrintString("*******");
|
PrintString("*******");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -167,16 +160,16 @@ object GetLastOpener()
|
|||||||
{
|
{
|
||||||
if (GetIsObjectValid(GetLastOpenedBy()) == TRUE)
|
if (GetIsObjectValid(GetLastOpenedBy()) == TRUE)
|
||||||
{
|
{
|
||||||
//dbSpeak("LastOpener: GetLastOpenedBy " + GetTag(GetLastOpenedBy()));
|
dbSpeak("LastOpener: GetLastOpenedBy " + GetTag(GetLastOpenedBy()));
|
||||||
return GetLastOpenedBy();
|
return GetLastOpenedBy();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (GetIsObjectValid(GetLastKiller()) == TRUE)
|
if (GetIsObjectValid(GetLastKiller()) == TRUE)
|
||||||
{
|
{
|
||||||
//dbSpeak("LastOpener: GetLastAttacker");
|
dbSpeak("LastOpener: GetLastAttacker");
|
||||||
return GetLastKiller();
|
return GetLastKiller();
|
||||||
}
|
}
|
||||||
//dbSpeak("LastOpener: The Object is Invalid you weenie!");
|
dbSpeak("LastOpener: The Object is Invalid you weenie!");
|
||||||
return OBJECT_INVALID;
|
return OBJECT_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,9 +200,9 @@ int GetRange(int nCategory, int nHD)
|
|||||||
case 1: nMin = RANGE_1_MIN; nMax = RANGE_1_MAX; break;
|
case 1: nMin = RANGE_1_MIN; nMax = RANGE_1_MAX; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//dbSpeak("nMin = " + IntToString(nMin));
|
dbSpeak("nMin = " + IntToString(nMin));
|
||||||
//dbSpeak("nMax = " + IntToString(nMax));
|
dbSpeak("nMax = " + IntToString(nMax));
|
||||||
//dbSpeak("GetRange.nHD = " + IntToString(nHD));
|
dbSpeak("GetRange.nHD = " + IntToString(nHD));
|
||||||
if (nHD >= nMin && nHD <= nMax)
|
if (nHD >= nMin && nHD <= nMax)
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -319,7 +312,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
{
|
{
|
||||||
sRes = "NW_IT_BOOK0" + IntToString(nBook1);
|
sRes = "NW_IT_BOOK0" + IntToString(nBook1);
|
||||||
}
|
}
|
||||||
//dbSpeak("Create book");
|
dbSpeak("Create book");
|
||||||
dbCreateItemOnObject(sRes, oTarget);
|
dbCreateItemOnObject(sRes, oTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,7 +327,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
case 2: sRes = "NW_IT_MMIDMISC05"; break;
|
case 2: sRes = "NW_IT_MMIDMISC05"; break;
|
||||||
case 3: sRes = "NW_IT_MMIDMISC06"; break;
|
case 3: sRes = "NW_IT_MMIDMISC06"; break;
|
||||||
}
|
}
|
||||||
//dbSpeak("animal");
|
dbSpeak("animal");
|
||||||
dbCreateItemOnObject(sRes, oTarget);
|
dbCreateItemOnObject(sRes, oTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +346,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
case 5: sRes = "NW_IT_MPOTION022"; break; // spirits
|
case 5: sRes = "NW_IT_MPOTION022"; break; // spirits
|
||||||
case 6: sRes = "NW_IT_TORCH001"; break; //torch
|
case 6: sRes = "NW_IT_TORCH001"; break; //torch
|
||||||
}
|
}
|
||||||
//dbSpeak("CreateJunk");
|
dbSpeak("CreateJunk");
|
||||||
dbCreateItemOnObject(sRes, oTarget);
|
dbCreateItemOnObject(sRes, oTarget);
|
||||||
}
|
}
|
||||||
// *
|
// *
|
||||||
@ -399,7 +392,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
{
|
{
|
||||||
nAmount = 1;
|
nAmount = 1;
|
||||||
}
|
}
|
||||||
//dbSpeak("gold");
|
dbSpeak("gold");
|
||||||
dbCreateItemOnObject("NW_IT_GOLD001", oTarget, nAmount);
|
dbCreateItemOnObject("NW_IT_GOLD001", oTarget, nAmount);
|
||||||
}
|
}
|
||||||
void CreateGem(object oTarget, object oAdventurer, int nTreasureType, int nModifier = 0)
|
void CreateGem(object oTarget, object oAdventurer, int nTreasureType, int nModifier = 0)
|
||||||
@ -483,7 +476,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
case 8: sGem = "nw_it_gem012"; break;
|
case 8: sGem = "nw_it_gem012"; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//dbSpeak("Create Gem");
|
dbSpeak("Create Gem");
|
||||||
dbCreateItemOnObject(sGem, oTarget, 1);
|
dbCreateItemOnObject(sGem, oTarget, 1);
|
||||||
}
|
}
|
||||||
void CreateJewel(object oTarget, object oAdventurer, int nTreasureType, int nModifier = 0)
|
void CreateJewel(object oTarget, object oAdventurer, int nTreasureType, int nModifier = 0)
|
||||||
@ -554,7 +547,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
case 5: case 6: sJewel = "nw_it_mneck022"; break;
|
case 5: case 6: sJewel = "nw_it_mneck022"; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//dbSpeak("Create Jewel");
|
dbSpeak("Create Jewel");
|
||||||
|
|
||||||
dbCreateItemOnObject(sJewel, oTarget, 1);
|
dbCreateItemOnObject(sJewel, oTarget, 1);
|
||||||
|
|
||||||
@ -704,7 +697,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
case 7: sScroll = "nw_it_spdvscr702"; break;
|
case 7: sScroll = "nw_it_spdvscr702"; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//dbSpeak("Divine Scroll");
|
dbSpeak("Divine Scroll");
|
||||||
|
|
||||||
dbCreateItemOnObject(sScroll, oTarget, 1);
|
dbCreateItemOnObject(sScroll, oTarget, 1);
|
||||||
|
|
||||||
@ -791,7 +784,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
case 20: sAmmo = "nw_wammbu007"; break;
|
case 20: sAmmo = "nw_wammbu007"; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//dbSpeak("ammo");
|
dbSpeak("ammo");
|
||||||
dbCreateItemOnObject(sAmmo, oTarget, Random(30) + 1); // create up to 30 of the specified ammo type
|
dbCreateItemOnObject(sAmmo, oTarget, Random(30) + 1); // create up to 30 of the specified ammo type
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -942,7 +935,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Create Trapkit");
|
dbSpeak("Create Trapkit");
|
||||||
dbCreateItemOnObject(sKit, oTarget, 1);
|
dbCreateItemOnObject(sKit, oTarget, 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1008,7 +1001,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Create Healing Kit");
|
dbSpeak("Create Healing Kit");
|
||||||
|
|
||||||
dbCreateItemOnObject(sKit, oTarget, 1);
|
dbCreateItemOnObject(sKit, oTarget, 1);
|
||||||
|
|
||||||
@ -1083,7 +1076,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Create Lockpick");
|
dbSpeak("Create Lockpick");
|
||||||
|
|
||||||
dbCreateItemOnObject(sKit, oTarget, 1);
|
dbCreateItemOnObject(sKit, oTarget, 1);
|
||||||
|
|
||||||
@ -1220,7 +1213,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
case 29: sPotion = "nw_it_mpotion006"; break;
|
case 29: sPotion = "nw_it_mpotion006"; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//dbSpeak("Create Potion");
|
dbSpeak("Create Potion");
|
||||||
dbCreateItemOnObject(sPotion, oTarget, 1);
|
dbCreateItemOnObject(sPotion, oTarget, 1);
|
||||||
}
|
}
|
||||||
//::///////////////////////////////////////////////
|
//::///////////////////////////////////////////////
|
||||||
@ -1483,7 +1476,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
case 30: sItem = "nw_it_mneck018"; break;
|
case 30: sItem = "nw_it_mneck018"; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//dbSpeak("Create Misc");
|
dbSpeak("Create Misc");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
}
|
}
|
||||||
@ -1543,7 +1536,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
else
|
else
|
||||||
if (GetLevelByClass(CLASS_TYPE_MONK, oAdventurer)>= 1)
|
if (GetLevelByClass(CLASS_TYPE_MONK, oAdventurer)>= 1)
|
||||||
{
|
{
|
||||||
//dbSpeak("in monk function");
|
dbSpeak("in monk function");
|
||||||
if (nSpecific == 0)
|
if (nSpecific == 0)
|
||||||
{
|
{
|
||||||
CreateGenericMonkWeapon(oTarget, oAdventurer);
|
CreateGenericMonkWeapon(oTarget, oAdventurer);
|
||||||
@ -1638,7 +1631,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Generic Rod staff wand");
|
dbSpeak("Generic Rod staff wand");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
}
|
}
|
||||||
@ -1754,7 +1747,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
case 13: sItem = "nw_waxmhn011"; break;
|
case 13: sItem = "nw_waxmhn011"; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//dbSpeak("Generic Monk Weapon");
|
dbSpeak("Generic Monk Weapon");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
}
|
}
|
||||||
@ -1895,7 +1888,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Specific Monk Weapon");
|
dbSpeak("Specific Monk Weapon");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
|
|
||||||
@ -2011,7 +2004,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Generic Druid weapon");
|
dbSpeak("Generic Druid weapon");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
|
|
||||||
@ -2089,7 +2082,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("specific druid weapon");
|
dbSpeak("specific druid weapon");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
|
|
||||||
@ -2175,7 +2168,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Generic Wizard or Sorcerer Weapon");
|
dbSpeak("Generic Wizard or Sorcerer Weapon");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
|
|
||||||
@ -2248,7 +2241,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Specific Wizard or Sorcerer Weapon");
|
dbSpeak("Specific Wizard or Sorcerer Weapon");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
|
|
||||||
@ -2417,7 +2410,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//dbSpeak("Create Generic SImple; Specific = " + IntToString(nModifier));
|
dbSpeak("Create Generic SImple; Specific = " + IntToString(nModifier));
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
}
|
}
|
||||||
@ -2601,7 +2594,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//dbSpeak("Create Generic Martial");
|
dbSpeak("Create Generic Martial");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
}
|
}
|
||||||
@ -2733,7 +2726,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Create generic exotic");
|
dbSpeak("Create generic exotic");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
}
|
}
|
||||||
@ -2832,7 +2825,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Create Generic light");
|
dbSpeak("Create Generic light");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
}
|
}
|
||||||
@ -2959,7 +2952,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//dbSpeak("Create Generic medium");
|
dbSpeak("Create Generic medium");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
}
|
}
|
||||||
@ -3065,7 +3058,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// dbSpeak("Create Generic heavy");
|
dbSpeak("Create Generic heavy");
|
||||||
|
|
||||||
dbCreateItemOnObject(sItem, oTarget, 1);
|
dbCreateItemOnObject(sItem, oTarget, 1);
|
||||||
}
|
}
|
||||||
@ -4014,7 +4007,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
// * if nSpecific is = 1 then spawn in 'named' items at the higher levels
|
// * if nSpecific is = 1 then spawn in 'named' items at the higher levels
|
||||||
void CreateTable2Item(object oTarget, object oAdventurer, int nSpecific=0)
|
void CreateTable2Item(object oTarget, object oAdventurer, int nSpecific=0)
|
||||||
{
|
{
|
||||||
//dbSpeak("In CreateTable2Item");
|
dbSpeak("In CreateTable2Item");
|
||||||
string sItem = "";
|
string sItem = "";
|
||||||
int nProbMisc = 0;
|
int nProbMisc = 0;
|
||||||
int nProbClass = 0;
|
int nProbClass = 0;
|
||||||
@ -4049,12 +4042,9 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
|
|
||||||
|
|
||||||
//* SETUP probabilities based on Class
|
//* SETUP probabilities based on Class
|
||||||
if ( nClass == CLASS_TYPE_FIGHTER || nClass == CLASS_TYPE_PALADIN || nSpecialRanger == 1
|
if ( nClass == CLASS_TYPE_FIGHTER || nClass == CLASS_TYPE_PALADIN || nSpecialRanger == 1)
|
||||||
|| nClass == CLASS_TYPE_ANTI_PALADIN || nClass == CLASS_TYPE_BRAWLER || nClass == CLASS_TYPE_CRUSADER
|
|
||||||
|| nClass == CLASS_TYPE_DUSKBLADE || nClass == CLASS_TYPE_KNIGHT || nClass == CLASS_TYPE_MARSHAL
|
|
||||||
|| nClass == CLASS_TYPE_PSYWAR || nClass == CLASS_TYPE_SOHEI)
|
|
||||||
{
|
{
|
||||||
//dbSpeak("I am fighter or paladin or heavy ranger");
|
dbSpeak("I am fighter or paladin or heavy ranger");
|
||||||
nProbMisc = 20;
|
nProbMisc = 20;
|
||||||
nProbClass = 0;
|
nProbClass = 0;
|
||||||
nProbRodStaffWand = 5;
|
nProbRodStaffWand = 5;
|
||||||
@ -4068,7 +4058,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
else
|
else
|
||||||
if (nClass == CLASS_TYPE_WIZARD || nClass == CLASS_TYPE_SORCERER)
|
if (nClass == CLASS_TYPE_WIZARD || nClass == CLASS_TYPE_SORCERER)
|
||||||
{
|
{
|
||||||
//dbSpeak("I am wizard or sorcerer");
|
dbSpeak("I am wizard or sorcerer");
|
||||||
nProbMisc = 40;
|
nProbMisc = 40;
|
||||||
nProbClass = 30;
|
nProbClass = 30;
|
||||||
nProbRodStaffWand = 15;
|
nProbRodStaffWand = 15;
|
||||||
@ -4080,10 +4070,9 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
nProbHeavy = 2;
|
nProbHeavy = 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (nClass == CLASS_TYPE_BARBARIAN || nSpecialRanger == 2 || nClass == CLASS_TYPE_BOWMAN
|
if (nClass == CLASS_TYPE_BARBARIAN || nSpecialRanger == 2)
|
||||||
|| nClass == CLASS_TYPE_HEXBLADE || nClass == CLASS_TYPE_WARBLADE)
|
|
||||||
{
|
{
|
||||||
//dbSpeak("I am barbarian or light ranger");
|
dbSpeak("I am barbarian or light ranger");
|
||||||
|
|
||||||
nProbMisc = 20;
|
nProbMisc = 20;
|
||||||
nProbClass = 0;
|
nProbClass = 0;
|
||||||
@ -4096,97 +4085,9 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
nProbHeavy = 3;
|
nProbHeavy = 3;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (nClass == CLASS_TYPE_ARCHIVIST || nClass == CLASS_TYPE_DRAGON_SHAMAN || nClass == CLASS_TYPE_FAVOURED_SOUL
|
|
||||||
|| nClass == CLASS_TYPE_MYSTIC || nClass == CLASS_TYPE_WARMAGE || nClass == CLASS_TYPE_TEMPLAR)
|
|
||||||
{
|
|
||||||
//type 1
|
|
||||||
nProbMisc = 25;
|
|
||||||
nProbClass = 0;
|
|
||||||
nProbRodStaffWand = 15;
|
|
||||||
nProbSimple = 15;
|
|
||||||
nProbMartial = 8;
|
|
||||||
nProbExotic = 6;
|
|
||||||
nProbLight = 15;
|
|
||||||
nProbMedium = 10;
|
|
||||||
nProbHeavy = 6;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (nClass == CLASS_TYPE_NOBLE || nClass == CLASS_TYPE_SWASHBUCKLER || nClass == CLASS_TYPE_SWORDSAGE
|
|
||||||
|| nClass == CLASS_TYPE_ULTIMATE_RANGER)
|
|
||||||
{
|
|
||||||
//type 2
|
|
||||||
nProbMisc = 27;
|
|
||||||
nProbClass = 0;
|
|
||||||
nProbRodStaffWand = 5;
|
|
||||||
nProbSimple = 15;
|
|
||||||
nProbMartial = 20;
|
|
||||||
nProbExotic = 10;
|
|
||||||
nProbLight = 10;
|
|
||||||
nProbMedium = 8;
|
|
||||||
nProbHeavy = 5;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (nClass == CLASS_TYPE_BEGUILER || nClass == CLASS_TYPE_DREAD_NECROMANCER || nClass == CLASS_TYPE_HEALER
|
|
||||||
|| nClass == CLASS_TYPE_SCOUT || nClass == CLASS_TYPE_SHAMAN || nClass == CLASS_TYPE_SOULKNIFE
|
|
||||||
|| nClass == CLASS_TYPE_TRUENAMER || nClass == CLASS_TYPE_WARLOCK || nClass == CLASS_TYPE_WILDER)
|
|
||||||
{
|
|
||||||
//type 3
|
|
||||||
nProbMisc = 45;
|
|
||||||
nProbClass = 0;
|
|
||||||
nProbRodStaffWand = 7;
|
|
||||||
nProbSimple = 15;
|
|
||||||
nProbMartial = 5;
|
|
||||||
nProbExotic = 5;
|
|
||||||
nProbLight = 15;
|
|
||||||
nProbMedium = 4;
|
|
||||||
nProbHeavy = 4;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (nClass == CLASS_TYPE_DRAGONFIRE_ADEPT || nClass == CLASS_TYPE_PSION || nClass == CLASS_TYPE_WITCH)
|
|
||||||
{
|
|
||||||
//type 4
|
|
||||||
nProbMisc = 50;
|
|
||||||
nProbClass = 0;
|
|
||||||
nProbRodStaffWand = 10;
|
|
||||||
nProbSimple = 20;
|
|
||||||
nProbMartial = 5;
|
|
||||||
nProbExotic = 5;
|
|
||||||
nProbLight = 4;
|
|
||||||
nProbMedium = 3;
|
|
||||||
nProbHeavy = 3;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (nClass == CLASS_TYPE_NINJA)
|
|
||||||
{
|
|
||||||
//type 5
|
|
||||||
nProbMisc = 45;
|
|
||||||
nProbClass = 0;
|
|
||||||
nProbRodStaffWand = 2;
|
|
||||||
nProbSimple = 12;
|
|
||||||
nProbMartial = 6;
|
|
||||||
nProbExotic = 26;
|
|
||||||
nProbLight = 3;
|
|
||||||
nProbMedium = 3;
|
|
||||||
nProbHeavy = 3;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (nClass == CLASS_TYPE_CW_SAMURAI || nClass == CLASS_TYPE_SAMURAI)
|
|
||||||
{
|
|
||||||
//type 6
|
|
||||||
nProbMisc = 25;
|
|
||||||
nProbClass = 0;
|
|
||||||
nProbRodStaffWand = 5;
|
|
||||||
nProbSimple = 5;
|
|
||||||
nProbMartial = 10;
|
|
||||||
nProbExotic = 20;
|
|
||||||
nProbLight = 10;
|
|
||||||
nProbMedium = 20;
|
|
||||||
nProbHeavy = 5;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (nClass == CLASS_TYPE_CLERIC)
|
if (nClass == CLASS_TYPE_CLERIC)
|
||||||
{
|
{
|
||||||
//dbSpeak("I am cleric");
|
dbSpeak("I am cleric");
|
||||||
|
|
||||||
nProbMisc = 20;
|
nProbMisc = 20;
|
||||||
nProbClass = 10;
|
nProbClass = 10;
|
||||||
@ -4201,7 +4102,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
else
|
else
|
||||||
if (nClass == CLASS_TYPE_DRUID)
|
if (nClass == CLASS_TYPE_DRUID)
|
||||||
{
|
{
|
||||||
//dbSpeak("I am druid");
|
dbSpeak("I am druid");
|
||||||
|
|
||||||
nProbMisc = 20;
|
nProbMisc = 20;
|
||||||
nProbClass = 25;
|
nProbClass = 25;
|
||||||
@ -4216,7 +4117,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
else
|
else
|
||||||
if (nClass == CLASS_TYPE_MONK)
|
if (nClass == CLASS_TYPE_MONK)
|
||||||
{
|
{
|
||||||
//dbSpeak("I am monk");
|
dbSpeak("I am monk");
|
||||||
nProbMisc = 20;
|
nProbMisc = 20;
|
||||||
nProbClass = 50;
|
nProbClass = 50;
|
||||||
nProbRodStaffWand = 2;
|
nProbRodStaffWand = 2;
|
||||||
@ -4228,9 +4129,9 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
nProbHeavy = 4;
|
nProbHeavy = 4;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (nClass == CLASS_TYPE_ROGUE || nClass == CLASS_TYPE_PSYCHIC_ROGUE)
|
if (nClass == CLASS_TYPE_ROGUE)
|
||||||
{
|
{
|
||||||
//dbSpeak("I am rogue");
|
dbSpeak("I am rogue");
|
||||||
|
|
||||||
nProbMisc = 25;
|
nProbMisc = 25;
|
||||||
nProbClass = 10;
|
nProbClass = 10;
|
||||||
@ -4245,7 +4146,7 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
else
|
else
|
||||||
if (nClass == CLASS_TYPE_BARD)
|
if (nClass == CLASS_TYPE_BARD)
|
||||||
{
|
{
|
||||||
//dbSpeak("I am bard");
|
dbSpeak("I am bard");
|
||||||
|
|
||||||
nProbMisc = 25;
|
nProbMisc = 25;
|
||||||
nProbClass = 5;
|
nProbClass = 5;
|
||||||
@ -4257,11 +4158,11 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
nProbMedium = 5;
|
nProbMedium = 5;
|
||||||
nProbHeavy = 5;
|
nProbHeavy = 5;
|
||||||
}
|
}
|
||||||
//else
|
else
|
||||||
//{
|
{
|
||||||
// dbSpeak("No Valid Class");
|
dbSpeak("No Valid Class");
|
||||||
//}
|
}
|
||||||
//dbSpeak("Table2Item: After Class Distribution");
|
dbSpeak("Table2Item: After Class Distribution");
|
||||||
//* Create Items based on Probabilities
|
//* Create Items based on Probabilities
|
||||||
int nRandom = d100();
|
int nRandom = d100();
|
||||||
if (nRandom <= nProbMisc)
|
if (nRandom <= nProbMisc)
|
||||||
@ -4318,10 +4219,10 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
if (nSpecific == 0) CreateGenericHeavyArmor(oTarget, oAdventurer);
|
if (nSpecific == 0) CreateGenericHeavyArmor(oTarget, oAdventurer);
|
||||||
else CreateSpecificHeavyArmor(oTarget, oAdventurer);
|
else CreateSpecificHeavyArmor(oTarget, oAdventurer);
|
||||||
}
|
}
|
||||||
//else
|
else
|
||||||
//{
|
{
|
||||||
// dbSpeak("Generic Generic or Specific; error: 3524");
|
dbSpeak("Generic Generic or Specific; error: 3524");
|
||||||
//}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//::///////////////////////////////////////////////
|
//::///////////////////////////////////////////////
|
||||||
@ -4350,12 +4251,12 @@ int GetNumberOfItems(int nTreasureType)
|
|||||||
void GenerateTreasure(int nTreasureType, object oLastOpener, object oCreateOn)
|
void GenerateTreasure(int nTreasureType, object oLastOpener, object oCreateOn)
|
||||||
{
|
{
|
||||||
|
|
||||||
//dbSpeak("*********************NEW TREASURE*************************");
|
dbSpeak("*********************NEW TREASURE*************************");
|
||||||
|
|
||||||
// * abort treasure if no one opened the container
|
// * abort treasure if no one opened the container
|
||||||
if (GetIsObjectValid(oLastOpener) == FALSE)
|
if (GetIsObjectValid(oLastOpener) == FALSE)
|
||||||
{
|
{
|
||||||
//dbSpeak("Aborted. No valid Last Opener");
|
dbSpeak("Aborted. No valid Last Opener");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4433,7 +4334,7 @@ void GenerateTreasure(int nTreasureType, object oLastOpener, object oCreateOn)
|
|||||||
nProbTable2 = HIGH_PROB_TABLE2;
|
nProbTable2 = HIGH_PROB_TABLE2;
|
||||||
}
|
}
|
||||||
else if (nTreasureType == TREASURE_BOSS)
|
else if (nTreasureType == TREASURE_BOSS)
|
||||||
{ //dbSpeak("boss");
|
{ dbSpeak("boss");
|
||||||
nProbTable2 = 100;
|
nProbTable2 = 100;
|
||||||
nSpecific = 1;
|
nSpecific = 1;
|
||||||
}
|
}
|
||||||
@ -4444,7 +4345,7 @@ void GenerateTreasure(int nTreasureType, object oLastOpener, object oCreateOn)
|
|||||||
nProbDivine = 4;
|
nProbDivine = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
//dbSpeak("Generate Treasure nSpecific = " + IntToString(nSpecific));
|
dbSpeak("Generate Treasure nSpecific = " + IntToString(nSpecific));
|
||||||
|
|
||||||
for (i = 1; i <= nNumberItems; i++)
|
for (i = 1; i <= nNumberItems; i++)
|
||||||
{
|
{
|
||||||
@ -4475,8 +4376,8 @@ void GenerateTreasure(int nTreasureType, object oLastOpener, object oCreateOn)
|
|||||||
{
|
{
|
||||||
CreateTable2Item(oCreateOn, oLastOpener, nSpecific); // * Weapons, Armor, Misc - Class based
|
CreateTable2Item(oCreateOn, oLastOpener, nSpecific); // * Weapons, Armor, Misc - Class based
|
||||||
}
|
}
|
||||||
//else
|
else
|
||||||
// dbSpeak("other stuff");
|
dbSpeak("other stuff");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -4484,23 +4385,23 @@ void GenerateTreasure(int nTreasureType, object oLastOpener, object oCreateOn)
|
|||||||
}
|
}
|
||||||
void GenerateLowTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
|
void GenerateLowTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
|
||||||
{
|
{
|
||||||
GenerateTreasure(TREASURE_LOW, oLastOpener, oCreateOn);
|
//GenerateTreasure(TREASURE_LOW, oLastOpener, oCreateOn);
|
||||||
}
|
}
|
||||||
void GenerateMediumTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
|
void GenerateMediumTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
|
||||||
{
|
{
|
||||||
GenerateTreasure(TREASURE_MEDIUM, oLastOpener, oCreateOn);
|
//GenerateTreasure(TREASURE_MEDIUM, oLastOpener, oCreateOn);
|
||||||
}
|
}
|
||||||
void GenerateHighTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
|
void GenerateHighTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
|
||||||
{
|
{
|
||||||
GenerateTreasure(TREASURE_HIGH, oLastOpener, oCreateOn);
|
//GenerateTreasure(TREASURE_HIGH, oLastOpener, oCreateOn);
|
||||||
}
|
}
|
||||||
void GenerateBossTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
|
void GenerateBossTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
|
||||||
{
|
{
|
||||||
GenerateTreasure(TREASURE_BOSS, oLastOpener, oCreateOn);
|
//GenerateTreasure(TREASURE_BOSS, oLastOpener, oCreateOn);
|
||||||
}
|
}
|
||||||
void GenerateBookTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
|
void GenerateBookTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
|
||||||
{
|
{
|
||||||
GenerateTreasure(TREASURE_BOOK, oLastOpener, oCreateOn);
|
//GenerateTreasure(TREASURE_BOOK, oLastOpener, oCreateOn);
|
||||||
}
|
}
|
||||||
//::///////////////////////////////////////////////
|
//::///////////////////////////////////////////////
|
||||||
//:: GenerateNPCTreasure
|
//:: GenerateNPCTreasure
|
||||||
@ -4542,23 +4443,23 @@ void GenerateNPCTreasure(int nTreasureValue=1, object oTreasureGetter=OBJECT_SEL
|
|||||||
// if a creature
|
// if a creature
|
||||||
if (Random(100)+1 >= 75)
|
if (Random(100)+1 >= 75)
|
||||||
{
|
{
|
||||||
GenerateTreasure(TREASURE_LOW, oTreasureGetter, oKiller);
|
//GenerateTreasure(TREASURE_LOW, oTreasureGetter, oKiller);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (nTreasureValue == 2)
|
if (nTreasureValue == 2)
|
||||||
{
|
{
|
||||||
GenerateTreasure(TREASURE_MEDIUM, oTreasureGetter, oKiller);
|
//GenerateTreasure(TREASURE_MEDIUM, oTreasureGetter, oKiller);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (nTreasureValue == 3)
|
if (nTreasureValue == 3)
|
||||||
{
|
{
|
||||||
GenerateTreasure(TREASURE_HIGH, oTreasureGetter, oKiller);
|
//GenerateTreasure(TREASURE_HIGH, oTreasureGetter, oKiller);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (nTreasureValue == 4)
|
if (nTreasureValue == 4)
|
||||||
{
|
{
|
||||||
GenerateBossTreasure(oKiller, oTreasureGetter);
|
//GenerateBossTreasure(oKiller, oTreasureGetter);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -4617,47 +4518,6 @@ void ShoutDisturbed()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int nGetIsBaseClass(int nClass)
|
|
||||||
{
|
|
||||||
return (nClass <= CLASS_TYPE_WIZARD ||
|
|
||||||
nClass == CLASS_TYPE_ANTI_PALADIN ||
|
|
||||||
nClass == CLASS_TYPE_ARCHIVIST ||
|
|
||||||
nClass == CLASS_TYPE_BEGUILER ||
|
|
||||||
nClass == CLASS_TYPE_BOWMAN ||
|
|
||||||
nClass == CLASS_TYPE_BRAWLER ||
|
|
||||||
nClass == CLASS_TYPE_CRUSADER ||
|
|
||||||
nClass == CLASS_TYPE_DRAGON_SHAMAN ||
|
|
||||||
nClass == CLASS_TYPE_DRAGONFIRE_ADEPT ||
|
|
||||||
nClass == CLASS_TYPE_DREAD_NECROMANCER ||
|
|
||||||
nClass == CLASS_TYPE_DUSKBLADE ||
|
|
||||||
nClass == CLASS_TYPE_FAVOURED_SOUL ||
|
|
||||||
nClass == CLASS_TYPE_HEALER ||
|
|
||||||
nClass == CLASS_TYPE_HEXBLADE ||
|
|
||||||
nClass == CLASS_TYPE_KNIGHT ||
|
|
||||||
nClass == CLASS_TYPE_MARSHAL ||
|
|
||||||
nClass == CLASS_TYPE_MYSTIC ||
|
|
||||||
nClass == CLASS_TYPE_NINJA ||
|
|
||||||
nClass == CLASS_TYPE_NOBLE ||
|
|
||||||
nClass == CLASS_TYPE_PSION ||
|
|
||||||
nClass == CLASS_TYPE_PSYWAR ||
|
|
||||||
nClass == CLASS_TYPE_PSYCHIC_ROGUE ||
|
|
||||||
nClass == CLASS_TYPE_SAMURAI ||
|
|
||||||
nClass == CLASS_TYPE_CW_SAMURAI ||
|
|
||||||
nClass == CLASS_TYPE_SCOUT ||
|
|
||||||
nClass == CLASS_TYPE_SHAMAN ||
|
|
||||||
nClass == CLASS_TYPE_SOHEI ||
|
|
||||||
nClass == CLASS_TYPE_SOULKNIFE ||
|
|
||||||
nClass == CLASS_TYPE_SWASHBUCKLER ||
|
|
||||||
nClass == CLASS_TYPE_SWORDSAGE ||
|
|
||||||
nClass == CLASS_TYPE_TRUENAMER ||
|
|
||||||
nClass == CLASS_TYPE_ULTIMATE_RANGER ||
|
|
||||||
nClass == CLASS_TYPE_WARBLADE ||
|
|
||||||
nClass == CLASS_TYPE_WARLOCK ||
|
|
||||||
nClass == CLASS_TYPE_WARMAGE ||
|
|
||||||
nClass == CLASS_TYPE_WILDER ||
|
|
||||||
nClass == CLASS_TYPE_WITCH ||
|
|
||||||
nClass == CLASS_TYPE_TEMPLAR);
|
|
||||||
}
|
|
||||||
|
|
||||||
//::///////////////////////////////////////////////
|
//::///////////////////////////////////////////////
|
||||||
//:: Determine Class to Use
|
//:: Determine Class to Use
|
||||||
@ -4676,96 +4536,35 @@ int nDetermineClassToUse(object oCharacter)
|
|||||||
{
|
{
|
||||||
int nClass;
|
int nClass;
|
||||||
int nTotal = GetHitDice(oCharacter);
|
int nTotal = GetHitDice(oCharacter);
|
||||||
//dbSpeak("Hit dice " + IntToString(nTotal));
|
dbSpeak("Hit dice " + IntToString(nTotal));
|
||||||
if (nTotal < 1)
|
if (nTotal < 1)
|
||||||
{
|
{
|
||||||
nTotal = 1;
|
nTotal = 1;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
float fTotal = IntToFloat(nTotal);
|
float fTotal = IntToFloat(nTotal);
|
||||||
//if (GetIsObjectValid(oCharacter) == FALSE)
|
if (GetIsObjectValid(oCharacter) == FALSE)
|
||||||
//{
|
{
|
||||||
// dbSpeak("DetermineClassToUse: This character is invalid");
|
dbSpeak("DetermineClassToUse: This character is invalid");
|
||||||
//}
|
}
|
||||||
|
|
||||||
int nClass1 = GetClassByPosition(1, oCharacter);
|
int nClass1 = GetClassByPosition(1, oCharacter);
|
||||||
int nState1 = FloatToInt((IntToFloat(GetLevelByClass(nClass1, oCharacter)) / fTotal) * 100);
|
int nState1 = FloatToInt((IntToFloat(GetLevelByClass(nClass1, oCharacter)) / fTotal) * 100);
|
||||||
//dbSpeak("Level 1 Class Level = " + IntToString(GetLevelByClass(nClass1,oCharacter)));
|
dbSpeak("Level 1 Class Level = " + IntToString(GetLevelByClass(nClass1,oCharacter)));
|
||||||
|
|
||||||
//PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 1 " + IntToString(nState1));
|
PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 1 " + IntToString(nState1));
|
||||||
//dbSpeak("State 1 " + IntToString(nState1));
|
dbSpeak("State 1 " + IntToString(nState1));
|
||||||
int nClass2 = GetClassByPosition(2, oCharacter);
|
int nClass2 = GetClassByPosition(2, oCharacter);
|
||||||
int nState2 = FloatToInt((IntToFloat(GetLevelByClass(nClass2, oCharacter)) / fTotal) * 100) + nState1;
|
int nState2 = FloatToInt((IntToFloat(GetLevelByClass(nClass2, oCharacter)) / fTotal) * 100) + nState1;
|
||||||
//PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 2 " + IntToString(nState2));
|
PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 2 " + IntToString(nState2));
|
||||||
|
|
||||||
int nClass3 = GetClassByPosition(3, oCharacter);
|
int nClass3 = GetClassByPosition(3, oCharacter);
|
||||||
int nState3 = FloatToInt((IntToFloat(GetLevelByClass(nClass3, oCharacter)) / fTotal) * 100) + nState2;
|
int nState3 = FloatToInt((IntToFloat(GetLevelByClass(nClass3, oCharacter)) / fTotal) * 100) + nState2;
|
||||||
//PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 3 " + IntToString(nState3));
|
PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 3 " + IntToString(nState3));
|
||||||
*/
|
|
||||||
int nClass1 = GetClassByPosition(1, oCharacter);
|
|
||||||
int nClass2 = GetClassByPosition(2, oCharacter);
|
|
||||||
int nClass3 = GetClassByPosition(3, oCharacter);
|
|
||||||
int nClass4 = GetClassByPosition(4, oCharacter);
|
|
||||||
int nClass5 = GetClassByPosition(5, oCharacter);
|
|
||||||
int nClass6 = GetClassByPosition(6, oCharacter);
|
|
||||||
int nClass7 = GetClassByPosition(7, oCharacter);
|
|
||||||
int nClass8 = GetClassByPosition(8, oCharacter);
|
|
||||||
|
|
||||||
int nState1 = GetLevelByClass(nClass1, oCharacter) * 100 / nTotal;
|
|
||||||
int nState2 = GetLevelByClass(nClass2, oCharacter) * 100 / nTotal + nState1;
|
|
||||||
int nState3 = GetLevelByClass(nClass3, oCharacter) * 100 / nTotal + nState2;
|
|
||||||
int nState4 = GetLevelByClass(nClass4, oCharacter) * 100 / nTotal + nState3;
|
|
||||||
int nState5 = GetLevelByClass(nClass5, oCharacter) * 100 / nTotal + nState4;
|
|
||||||
int nState6 = GetLevelByClass(nClass6, oCharacter) * 100 / nTotal + nState5;
|
|
||||||
int nState7 = GetLevelByClass(nClass7, oCharacter) * 100 / nTotal + nState6;
|
|
||||||
|
|
||||||
// nState8 will always be 100 if there is an eigth class, or 0 if there isn't
|
|
||||||
//int nState8 = GetLevelByClass(nClass3, oCharacter) * 100 / nTotal + nState7;
|
|
||||||
|
|
||||||
// correct for unrecognized classes - assumes the first class will be a non-prestige player class
|
|
||||||
if(nClass2 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass2))
|
|
||||||
{
|
|
||||||
nClass2 = CLASS_TYPE_INVALID;
|
|
||||||
nState1 = nState2;
|
|
||||||
}
|
|
||||||
if(nClass3 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass3))
|
|
||||||
{
|
|
||||||
nClass3 = CLASS_TYPE_INVALID;
|
|
||||||
nState1 = nState3;
|
|
||||||
}
|
|
||||||
if(nClass4 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass4))
|
|
||||||
{
|
|
||||||
nClass4 = CLASS_TYPE_INVALID;
|
|
||||||
nState1 = nState4;
|
|
||||||
}
|
|
||||||
if(nClass5 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass5))
|
|
||||||
{
|
|
||||||
nClass5 = CLASS_TYPE_INVALID;
|
|
||||||
nState1 = nState5;
|
|
||||||
}
|
|
||||||
if(nClass6 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass6))
|
|
||||||
{
|
|
||||||
nClass6 = CLASS_TYPE_INVALID;
|
|
||||||
nState1 = nState6;
|
|
||||||
}
|
|
||||||
if(nClass7 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass7))
|
|
||||||
{
|
|
||||||
nClass7 = CLASS_TYPE_INVALID;
|
|
||||||
nState1 = nState7;
|
|
||||||
}
|
|
||||||
if(nClass8 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass8))
|
|
||||||
{
|
|
||||||
nClass8 = CLASS_TYPE_INVALID;
|
|
||||||
if(nClass7 != CLASS_TYPE_INVALID)
|
|
||||||
nState7 = 100;
|
|
||||||
else nState1 = 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
int nUseClass = d100();
|
int nUseClass = d100();
|
||||||
//PrintString("GENERIC SCRIPT DEBUG STRING ********** " + "D100 Roll " +IntToString(nUseClass));
|
PrintString("GENERIC SCRIPT DEBUG STRING ********** " + "D100 Roll " +IntToString(nUseClass));
|
||||||
|
|
||||||
|
|
||||||
//dbSpeak("Before comparison : " + IntToString(nClass1));
|
dbSpeak("Before comparison : " + IntToString(nClass1));
|
||||||
if(nUseClass <= nState1)
|
if(nUseClass <= nState1)
|
||||||
{
|
{
|
||||||
nClass = nClass1;
|
nClass = nClass1;
|
||||||
@ -4776,16 +4575,11 @@ int nDetermineClassToUse(object oCharacter)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// might be possible to end up here by accident because of a rounding error
|
nClass = nClass3;
|
||||||
// so just in case...
|
|
||||||
if(nClass3 == CLASS_TYPE_INVALID) nClass = nClass1;
|
|
||||||
else nClass = nClass3;
|
|
||||||
}
|
}
|
||||||
|
dbSpeak("Class from determineClass " + IntToString(nClass));
|
||||||
//dbSpeak("Class from determineClass " + IntToString(nClass));
|
|
||||||
return nClass;
|
return nClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
//:: Test Void
|
|
||||||
//void main () {}
|
|
||||||
|
|
||||||
|
@ -402,6 +402,7 @@ int Vile_Feat(int iTypeWeap)
|
|||||||
case BASE_ITEM_LONGSWORD: return GetHasFeat(FEAT_VILE_MARTIAL_LONGSWORD);
|
case BASE_ITEM_LONGSWORD: return GetHasFeat(FEAT_VILE_MARTIAL_LONGSWORD);
|
||||||
case BASE_ITEM_MORNINGSTAR: return GetHasFeat(FEAT_VILE_MARTIAL_MORNINGSTAR);
|
case BASE_ITEM_MORNINGSTAR: return GetHasFeat(FEAT_VILE_MARTIAL_MORNINGSTAR);
|
||||||
case BASE_ITEM_QUARTERSTAFF: return GetHasFeat(FEAT_VILE_MARTIAL_QUARTERSTAFF);
|
case BASE_ITEM_QUARTERSTAFF: return GetHasFeat(FEAT_VILE_MARTIAL_QUARTERSTAFF);
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return GetHasFeat(FEAT_VILE_MARTIAL_QUARTERSTAFF);
|
||||||
case BASE_ITEM_RAPIER: return GetHasFeat(FEAT_VILE_MARTIAL_RAPIER);
|
case BASE_ITEM_RAPIER: return GetHasFeat(FEAT_VILE_MARTIAL_RAPIER);
|
||||||
case BASE_ITEM_SCIMITAR: return GetHasFeat(FEAT_VILE_MARTIAL_SCIMITAR);
|
case BASE_ITEM_SCIMITAR: return GetHasFeat(FEAT_VILE_MARTIAL_SCIMITAR);
|
||||||
case BASE_ITEM_SCYTHE: return GetHasFeat(FEAT_VILE_MARTIAL_SCYTHE);
|
case BASE_ITEM_SCYTHE: return GetHasFeat(FEAT_VILE_MARTIAL_SCYTHE);
|
||||||
@ -482,6 +483,7 @@ int GetSanctifedMartialFeat(int iTypeWeap)
|
|||||||
case BASE_ITEM_LONGSWORD: return FEAT_SANCTIFY_MARTIAL_LONGSWORD;
|
case BASE_ITEM_LONGSWORD: return FEAT_SANCTIFY_MARTIAL_LONGSWORD;
|
||||||
case BASE_ITEM_MORNINGSTAR: return FEAT_SANCTIFY_MARTIAL_MORNINGSTAR;
|
case BASE_ITEM_MORNINGSTAR: return FEAT_SANCTIFY_MARTIAL_MORNINGSTAR;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return FEAT_SANCTIFY_MARTIAL_QUARTERSTAFF;
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_SANCTIFY_MARTIAL_QUARTERSTAFF;
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return FEAT_SANCTIFY_MARTIAL_QUARTERSTAFF;
|
||||||
case BASE_ITEM_RAPIER: return FEAT_SANCTIFY_MARTIAL_RAPIER;
|
case BASE_ITEM_RAPIER: return FEAT_SANCTIFY_MARTIAL_RAPIER;
|
||||||
case BASE_ITEM_SCIMITAR: return FEAT_SANCTIFY_MARTIAL_SCIMITAR;
|
case BASE_ITEM_SCIMITAR: return FEAT_SANCTIFY_MARTIAL_SCIMITAR;
|
||||||
case BASE_ITEM_SCYTHE: return FEAT_SANCTIFY_MARTIAL_SCYTHE;
|
case BASE_ITEM_SCYTHE: return FEAT_SANCTIFY_MARTIAL_SCYTHE;
|
||||||
@ -555,6 +557,7 @@ int Sanctify_Feat(int iTypeWeap)
|
|||||||
case BASE_ITEM_LONGSWORD: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_LONGSWORD);
|
case BASE_ITEM_LONGSWORD: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_LONGSWORD);
|
||||||
case BASE_ITEM_MORNINGSTAR: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_MORNINGSTAR);
|
case BASE_ITEM_MORNINGSTAR: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_MORNINGSTAR);
|
||||||
case BASE_ITEM_QUARTERSTAFF: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_QUARTERSTAFF);
|
case BASE_ITEM_QUARTERSTAFF: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_QUARTERSTAFF);
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_QUARTERSTAFF);
|
||||||
case BASE_ITEM_RAPIER: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_RAPIER);
|
case BASE_ITEM_RAPIER: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_RAPIER);
|
||||||
case BASE_ITEM_SCIMITAR: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_SCIMITAR);
|
case BASE_ITEM_SCIMITAR: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_SCIMITAR);
|
||||||
case BASE_ITEM_SCYTHE: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_SCYTHE);
|
case BASE_ITEM_SCYTHE: return GetHasFeat(FEAT_SANCTIFY_MARTIAL_SCYTHE);
|
||||||
|
@ -1082,6 +1082,7 @@ int GetIsTwoHandedMeleeWeaponType(int iWeaponType)
|
|||||||
case BASE_ITEM_HEAVYFLAIL: return TRUE;
|
case BASE_ITEM_HEAVYFLAIL: return TRUE;
|
||||||
case BASE_ITEM_SCYTHE: return TRUE;
|
case BASE_ITEM_SCYTHE: return TRUE;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return TRUE;
|
case BASE_ITEM_QUARTERSTAFF: return TRUE;
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return TRUE;
|
||||||
case BASE_ITEM_ELVEN_COURTBLADE: return TRUE;
|
case BASE_ITEM_ELVEN_COURTBLADE: return TRUE;
|
||||||
case BASE_ITEM_MAUL: return TRUE;
|
case BASE_ITEM_MAUL: return TRUE;
|
||||||
case BASE_ITEM_FALCHION: return TRUE;
|
case BASE_ITEM_FALCHION: return TRUE;
|
||||||
@ -1093,7 +1094,7 @@ int GetIsTwoHandedMeleeWeapon(object oWeap)
|
|||||||
{
|
{
|
||||||
return GetIsTwoHandedMeleeWeaponType(GetBaseItemType(oWeap));
|
return GetIsTwoHandedMeleeWeaponType(GetBaseItemType(oWeap));
|
||||||
}
|
}
|
||||||
|
|
||||||
int GetIsCreatureWeaponType(int iWeaponType)
|
int GetIsCreatureWeaponType(int iWeaponType)
|
||||||
{
|
{
|
||||||
// any of the three creature weapon types that produce bludgeoning, piercing or slashing damage
|
// any of the three creature weapon types that produce bludgeoning, piercing or slashing damage
|
||||||
@ -1130,6 +1131,7 @@ int GetIsSimpleWeaponType(int iWeaponType)
|
|||||||
{
|
{
|
||||||
case BASE_ITEM_MORNINGSTAR: return 1;
|
case BASE_ITEM_MORNINGSTAR: return 1;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return 1;
|
case BASE_ITEM_QUARTERSTAFF: return 1;
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return 1;
|
||||||
case BASE_ITEM_SHORTSPEAR: return 1;
|
case BASE_ITEM_SHORTSPEAR: return 1;
|
||||||
case BASE_ITEM_HEAVYCROSSBOW: return 1;
|
case BASE_ITEM_HEAVYCROSSBOW: return 1;
|
||||||
case BASE_ITEM_INVALID: return 1;
|
case BASE_ITEM_INVALID: return 1;
|
||||||
@ -1562,6 +1564,19 @@ struct WeaponFeat GetAllFeatsOfWeaponType(int iWeaponType)
|
|||||||
sFeat.VileMartialStrike = FEAT_VILE_MARTIAL_QUARTERSTAFF;
|
sFeat.VileMartialStrike = FEAT_VILE_MARTIAL_QUARTERSTAFF;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case BASE_ITEM_MAGICSTAFF: {
|
||||||
|
sFeat.Focus = FEAT_WEAPON_FOCUS_STAFF;
|
||||||
|
sFeat.Specialization = FEAT_WEAPON_SPECIALIZATION_STAFF;
|
||||||
|
sFeat.EpicFocus = FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF;
|
||||||
|
sFeat.EpicSpecialization = FEAT_EPIC_WEAPON_SPECIALIZATION_QUARTERSTAFF;
|
||||||
|
sFeat.ImprovedCritical = FEAT_IMPROVED_CRITICAL_STAFF;
|
||||||
|
sFeat.OverwhelmingCritical = FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF;
|
||||||
|
sFeat.DevastatingCritical = FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF;
|
||||||
|
sFeat.WeaponOfChoice = FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF;
|
||||||
|
sFeat.SanctifyMartialStrike = FEAT_SANCTIFY_MARTIAL_QUARTERSTAFF;
|
||||||
|
sFeat.VileMartialStrike = FEAT_VILE_MARTIAL_QUARTERSTAFF;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case BASE_ITEM_RAPIER: {
|
case BASE_ITEM_RAPIER: {
|
||||||
sFeat.Focus = FEAT_WEAPON_FOCUS_RAPIER;
|
sFeat.Focus = FEAT_WEAPON_FOCUS_RAPIER;
|
||||||
sFeat.Specialization = FEAT_WEAPON_SPECIALIZATION_RAPIER;
|
sFeat.Specialization = FEAT_WEAPON_SPECIALIZATION_RAPIER;
|
||||||
|
@ -248,6 +248,7 @@ int GetFocusFeatOfWeaponType(int iWeaponType)
|
|||||||
case BASE_ITEM_LONGSWORD: return FEAT_WEAPON_FOCUS_LONG_SWORD;
|
case BASE_ITEM_LONGSWORD: return FEAT_WEAPON_FOCUS_LONG_SWORD;
|
||||||
case BASE_ITEM_MORNINGSTAR: return FEAT_WEAPON_FOCUS_MORNING_STAR;
|
case BASE_ITEM_MORNINGSTAR: return FEAT_WEAPON_FOCUS_MORNING_STAR;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return FEAT_WEAPON_FOCUS_STAFF;
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_WEAPON_FOCUS_STAFF;
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return FEAT_WEAPON_FOCUS_STAFF;
|
||||||
case BASE_ITEM_RAPIER: return FEAT_WEAPON_FOCUS_RAPIER;
|
case BASE_ITEM_RAPIER: return FEAT_WEAPON_FOCUS_RAPIER;
|
||||||
case BASE_ITEM_SCIMITAR: return FEAT_WEAPON_FOCUS_SCIMITAR;
|
case BASE_ITEM_SCIMITAR: return FEAT_WEAPON_FOCUS_SCIMITAR;
|
||||||
case BASE_ITEM_SCYTHE: return FEAT_WEAPON_FOCUS_SCYTHE;
|
case BASE_ITEM_SCYTHE: return FEAT_WEAPON_FOCUS_SCYTHE;
|
||||||
@ -318,6 +319,7 @@ int GetSpecializationFeatOfWeaponType(int iWeaponType)
|
|||||||
case BASE_ITEM_LONGSWORD: return FEAT_WEAPON_SPECIALIZATION_LONG_SWORD;
|
case BASE_ITEM_LONGSWORD: return FEAT_WEAPON_SPECIALIZATION_LONG_SWORD;
|
||||||
case BASE_ITEM_MORNINGSTAR: return FEAT_WEAPON_SPECIALIZATION_MORNING_STAR;
|
case BASE_ITEM_MORNINGSTAR: return FEAT_WEAPON_SPECIALIZATION_MORNING_STAR;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return FEAT_WEAPON_SPECIALIZATION_STAFF;
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_WEAPON_SPECIALIZATION_STAFF;
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return FEAT_WEAPON_SPECIALIZATION_STAFF;
|
||||||
case BASE_ITEM_RAPIER: return FEAT_WEAPON_SPECIALIZATION_RAPIER;
|
case BASE_ITEM_RAPIER: return FEAT_WEAPON_SPECIALIZATION_RAPIER;
|
||||||
case BASE_ITEM_SCIMITAR: return FEAT_WEAPON_SPECIALIZATION_SCIMITAR;
|
case BASE_ITEM_SCIMITAR: return FEAT_WEAPON_SPECIALIZATION_SCIMITAR;
|
||||||
case BASE_ITEM_SCYTHE: return FEAT_WEAPON_SPECIALIZATION_SCYTHE;
|
case BASE_ITEM_SCYTHE: return FEAT_WEAPON_SPECIALIZATION_SCYTHE;
|
||||||
@ -388,6 +390,7 @@ int GetEpicFocusFeatOfWeaponType(int iWeaponType)
|
|||||||
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_WEAPON_FOCUS_LONGSWORD;
|
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_WEAPON_FOCUS_LONGSWORD;
|
||||||
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_WEAPON_FOCUS_MORNINGSTAR;
|
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_WEAPON_FOCUS_MORNINGSTAR;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF;
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF;
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF;
|
||||||
case BASE_ITEM_RAPIER: return FEAT_EPIC_WEAPON_FOCUS_RAPIER;
|
case BASE_ITEM_RAPIER: return FEAT_EPIC_WEAPON_FOCUS_RAPIER;
|
||||||
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_WEAPON_FOCUS_SCIMITAR;
|
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_WEAPON_FOCUS_SCIMITAR;
|
||||||
case BASE_ITEM_SCYTHE: return FEAT_EPIC_WEAPON_FOCUS_SCYTHE;
|
case BASE_ITEM_SCYTHE: return FEAT_EPIC_WEAPON_FOCUS_SCYTHE;
|
||||||
@ -458,7 +461,8 @@ int GetEpicSpecializationFeatOfWeaponType(int iWeaponType)
|
|||||||
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_WEAPON_SPECIALIZATION_LONGSWORD;
|
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_WEAPON_SPECIALIZATION_LONGSWORD;
|
||||||
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_WEAPON_SPECIALIZATION_MORNINGSTAR;
|
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_WEAPON_SPECIALIZATION_MORNINGSTAR;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_WEAPON_SPECIALIZATION_QUARTERSTAFF;
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_WEAPON_SPECIALIZATION_QUARTERSTAFF;
|
||||||
case BASE_ITEM_RAPIER: return FEAT_EPIC_WEAPON_SPECIALIZATION_RAPIER;
|
case BASE_ITEM_MAGICSTAFF: return FEAT_EPIC_WEAPON_SPECIALIZATION_QUARTERSTAFF;
|
||||||
|
case BASE_ITEM_RAPIER: return FEAT_EPIC_WEAPON_SPECIALIZATION_RAPIER;
|
||||||
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_WEAPON_SPECIALIZATION_SCIMITAR;
|
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_WEAPON_SPECIALIZATION_SCIMITAR;
|
||||||
case BASE_ITEM_SCYTHE: return FEAT_EPIC_WEAPON_SPECIALIZATION_SCYTHE;
|
case BASE_ITEM_SCYTHE: return FEAT_EPIC_WEAPON_SPECIALIZATION_SCYTHE;
|
||||||
case BASE_ITEM_SHORTBOW: return FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTBOW;
|
case BASE_ITEM_SHORTBOW: return FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTBOW;
|
||||||
@ -528,6 +532,7 @@ int GetImprovedCriticalFeatOfWeaponType(int iWeaponType)
|
|||||||
case BASE_ITEM_LONGSWORD: return FEAT_IMPROVED_CRITICAL_LONG_SWORD;
|
case BASE_ITEM_LONGSWORD: return FEAT_IMPROVED_CRITICAL_LONG_SWORD;
|
||||||
case BASE_ITEM_MORNINGSTAR: return FEAT_IMPROVED_CRITICAL_MORNING_STAR;
|
case BASE_ITEM_MORNINGSTAR: return FEAT_IMPROVED_CRITICAL_MORNING_STAR;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return FEAT_IMPROVED_CRITICAL_STAFF;
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_IMPROVED_CRITICAL_STAFF;
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return FEAT_IMPROVED_CRITICAL_STAFF;
|
||||||
case BASE_ITEM_RAPIER: return FEAT_IMPROVED_CRITICAL_RAPIER;
|
case BASE_ITEM_RAPIER: return FEAT_IMPROVED_CRITICAL_RAPIER;
|
||||||
case BASE_ITEM_SCIMITAR: return FEAT_IMPROVED_CRITICAL_SCIMITAR;
|
case BASE_ITEM_SCIMITAR: return FEAT_IMPROVED_CRITICAL_SCIMITAR;
|
||||||
case BASE_ITEM_SCYTHE: return FEAT_IMPROVED_CRITICAL_SCYTHE;
|
case BASE_ITEM_SCYTHE: return FEAT_IMPROVED_CRITICAL_SCYTHE;
|
||||||
@ -598,6 +603,7 @@ int GetOverwhelmingCriticalFeatOfWeaponType(int iWeaponType)
|
|||||||
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_OVERWHELMING_CRITICAL_LONGSWORD;
|
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_OVERWHELMING_CRITICAL_LONGSWORD;
|
||||||
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_OVERWHELMING_CRITICAL_MORNINGSTAR;
|
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_OVERWHELMING_CRITICAL_MORNINGSTAR;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF;
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF;
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF;
|
||||||
case BASE_ITEM_RAPIER: return FEAT_EPIC_OVERWHELMING_CRITICAL_RAPIER;
|
case BASE_ITEM_RAPIER: return FEAT_EPIC_OVERWHELMING_CRITICAL_RAPIER;
|
||||||
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_OVERWHELMING_CRITICAL_SCIMITAR;
|
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_OVERWHELMING_CRITICAL_SCIMITAR;
|
||||||
case BASE_ITEM_SCYTHE: return FEAT_EPIC_OVERWHELMING_CRITICAL_SCYTHE;
|
case BASE_ITEM_SCYTHE: return FEAT_EPIC_OVERWHELMING_CRITICAL_SCYTHE;
|
||||||
@ -668,6 +674,7 @@ int GetDevastatingCriticalFeatOfWeaponType(int iWeaponType)
|
|||||||
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_DEVASTATING_CRITICAL_LONGSWORD;
|
case BASE_ITEM_LONGSWORD: return FEAT_EPIC_DEVASTATING_CRITICAL_LONGSWORD;
|
||||||
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_DEVASTATING_CRITICAL_MORNINGSTAR;
|
case BASE_ITEM_MORNINGSTAR: return FEAT_EPIC_DEVASTATING_CRITICAL_MORNINGSTAR;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF;
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF;
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF;
|
||||||
case BASE_ITEM_RAPIER: return FEAT_EPIC_DEVASTATING_CRITICAL_RAPIER;
|
case BASE_ITEM_RAPIER: return FEAT_EPIC_DEVASTATING_CRITICAL_RAPIER;
|
||||||
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_DEVASTATING_CRITICAL_SCIMITAR;
|
case BASE_ITEM_SCIMITAR: return FEAT_EPIC_DEVASTATING_CRITICAL_SCIMITAR;
|
||||||
case BASE_ITEM_SCYTHE: return FEAT_EPIC_DEVASTATING_CRITICAL_SCYTHE;
|
case BASE_ITEM_SCYTHE: return FEAT_EPIC_DEVASTATING_CRITICAL_SCYTHE;
|
||||||
@ -729,6 +736,7 @@ int GetWeaponOfChoiceFeatOfWeaponType(int iWeaponType)
|
|||||||
case BASE_ITEM_LONGSWORD: return FEAT_WEAPON_OF_CHOICE_LONGSWORD;
|
case BASE_ITEM_LONGSWORD: return FEAT_WEAPON_OF_CHOICE_LONGSWORD;
|
||||||
case BASE_ITEM_MORNINGSTAR: return FEAT_WEAPON_OF_CHOICE_MORNINGSTAR;
|
case BASE_ITEM_MORNINGSTAR: return FEAT_WEAPON_OF_CHOICE_MORNINGSTAR;
|
||||||
case BASE_ITEM_QUARTERSTAFF: return FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF;
|
case BASE_ITEM_QUARTERSTAFF: return FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF;
|
||||||
|
case BASE_ITEM_MAGICSTAFF: return FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF;
|
||||||
case BASE_ITEM_RAPIER: return FEAT_WEAPON_OF_CHOICE_RAPIER;
|
case BASE_ITEM_RAPIER: return FEAT_WEAPON_OF_CHOICE_RAPIER;
|
||||||
case BASE_ITEM_SCIMITAR: return FEAT_WEAPON_OF_CHOICE_SCIMITAR;
|
case BASE_ITEM_SCIMITAR: return FEAT_WEAPON_OF_CHOICE_SCIMITAR;
|
||||||
case BASE_ITEM_SCYTHE: return FEAT_WEAPON_OF_CHOICE_SCYTHE;
|
case BASE_ITEM_SCYTHE: return FEAT_WEAPON_OF_CHOICE_SCYTHE;
|
||||||
@ -787,6 +795,7 @@ int GetWeaponSize(object oWeapon)
|
|||||||
case BASE_ITEM_GREATAXE:
|
case BASE_ITEM_GREATAXE:
|
||||||
case BASE_ITEM_HEAVYFLAIL:
|
case BASE_ITEM_HEAVYFLAIL:
|
||||||
case BASE_ITEM_QUARTERSTAFF:
|
case BASE_ITEM_QUARTERSTAFF:
|
||||||
|
case BASE_ITEM_MAGICSTAFF:
|
||||||
case BASE_ITEM_SCYTHE:
|
case BASE_ITEM_SCYTHE:
|
||||||
case BASE_ITEM_SHORTSPEAR:
|
case BASE_ITEM_SHORTSPEAR:
|
||||||
case BASE_ITEM_ELVEN_COURTBLADE:
|
case BASE_ITEM_ELVEN_COURTBLADE:
|
||||||
@ -823,6 +832,7 @@ int PRCLargeWeaponCheck(int iBaseType, int nSize)
|
|||||||
case BASE_ITEM_GREATAXE:
|
case BASE_ITEM_GREATAXE:
|
||||||
case BASE_ITEM_HEAVYFLAIL:
|
case BASE_ITEM_HEAVYFLAIL:
|
||||||
case BASE_ITEM_QUARTERSTAFF:
|
case BASE_ITEM_QUARTERSTAFF:
|
||||||
|
case BASE_ITEM_MAGICSTAFF:
|
||||||
case BASE_ITEM_SCYTHE:
|
case BASE_ITEM_SCYTHE:
|
||||||
case BASE_ITEM_SHORTSPEAR:
|
case BASE_ITEM_SHORTSPEAR:
|
||||||
case BASE_ITEM_ELVEN_COURTBLADE:
|
case BASE_ITEM_ELVEN_COURTBLADE:
|
||||||
|
@ -156,6 +156,11 @@ int IsProficient(object oPC, int nBaseItem)
|
|||||||
|| GetHasFeat(FEAT_WEAPON_PROFICIENCY_DRUID, oPC)
|
|| GetHasFeat(FEAT_WEAPON_PROFICIENCY_DRUID, oPC)
|
||||||
|| GetHasFeat(FEAT_WEAPON_PROFICIENCY_WIZARD, oPC);
|
|| GetHasFeat(FEAT_WEAPON_PROFICIENCY_WIZARD, oPC);
|
||||||
|
|
||||||
|
case BASE_ITEM_MAGICSTAFF:
|
||||||
|
return GetHasFeat(FEAT_WEAPON_PROFICIENCY_SIMPLE, oPC)
|
||||||
|
|| GetHasFeat(FEAT_WEAPON_PROFICIENCY_DRUID, oPC)
|
||||||
|
|| GetHasFeat(FEAT_WEAPON_PROFICIENCY_WIZARD, oPC);
|
||||||
|
|
||||||
case BASE_ITEM_RAPIER:
|
case BASE_ITEM_RAPIER:
|
||||||
return GetHasFeat(FEAT_WEAPON_PROFICIENCY_RAPIER, oPC)
|
return GetHasFeat(FEAT_WEAPON_PROFICIENCY_RAPIER, oPC)
|
||||||
|| GetHasFeat(FEAT_WEAPON_PROFICIENCY_MARTIAL, oPC)
|
|| GetHasFeat(FEAT_WEAPON_PROFICIENCY_MARTIAL, oPC)
|
||||||
|
@ -1,113 +0,0 @@
|
|||||||
//::///////////////////////////////////////////////
|
|
||||||
//:: NUI Constants
|
|
||||||
//:: prc_nui_consts
|
|
||||||
//:://////////////////////////////////////////////
|
|
||||||
/*
|
|
||||||
This file holds all the constants used by the various PRC NUI scripts.
|
|
||||||
*/
|
|
||||||
//:://////////////////////////////////////////////
|
|
||||||
//:: Created By: Rakiov
|
|
||||||
//:: Created On: 24.05.2005
|
|
||||||
//:://////////////////////////////////////////////
|
|
||||||
|
|
||||||
const int NUI_PAYLOAD_BUTTON_LEFT_CLICK = 0;
|
|
||||||
const int NUI_PAYLOAD_BUTTON_MIDDLE_CLICK = 1;
|
|
||||||
const int NUI_PAYLOAD_BUTTON_RIGHT_CLICK = 2;
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// NUI Spellbook //
|
|
||||||
// //
|
|
||||||
//////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// This is the NUI Spellbook window ID
|
|
||||||
const string PRC_SPELLBOOK_NUI_WINDOW_ID = "prcSpellbookNui";
|
|
||||||
|
|
||||||
// This is the base Id for the Class buttons in the NUI Spellbook, the ID will
|
|
||||||
// have the ClassID attached to it (i.e. spellbookClassButton_123)
|
|
||||||
const string PRC_SPELLBOOK_NUI_CLASS_BUTTON_BASEID = "spellbookClassButton_";
|
|
||||||
|
|
||||||
// This is the base Id for the Spell Circle buttons in the NUI Spellbook, the ID will
|
|
||||||
// have the Circle attached to it (i.e. spellbookCircleButton__6)
|
|
||||||
const string PRC_SPELLBOOK_NUI_CIRCLE_BUTTON_BASEID = "spellbookCircleButton_";
|
|
||||||
|
|
||||||
// This is the base Id for the Spell Buttons in the NUI Spellbook, the ID will
|
|
||||||
// have the SpellbookId (the row of the class's spell's 2da or equivalent)
|
|
||||||
// attached to it (i.e. spellbookSpellButton_6)
|
|
||||||
const string PRC_SPELLBOOK_NUI_SPELL_BUTTON_BASEID = "spellbookSpellButton_";
|
|
||||||
|
|
||||||
// This is the base Id for the Meta Feat buttons in the NUI Spellbook, the ID will
|
|
||||||
// have the FeatID attached to it (i.e. spellbookMetaButton_12345)
|
|
||||||
const string PRC_SPELLBOOK_NUI_META_BUTTON_BASEID = "spellbookMetaButton_";
|
|
||||||
|
|
||||||
// This is the selected ClassID var used to store what class was selected to the Player
|
|
||||||
// locally
|
|
||||||
const string PRC_SPELLBOOK_SELECTED_CLASSID_VAR = "prcSpellbookSelectedClassID";
|
|
||||||
|
|
||||||
// This is the selected Circle var used to store what spell circle was selected
|
|
||||||
// to the Player locally
|
|
||||||
const string PRC_SPELLBOOK_SELECTED_CIRCLE_VAR = "prcSpellbookSelectedCircle";
|
|
||||||
|
|
||||||
// This is the Spellbook NUI geomeotry var, used to allow the location and sizing
|
|
||||||
// of the NUI to be remembered if it is ever rerendered.
|
|
||||||
const string PRC_SPELLBOOK_NUI_GEOMETRY_VAR = "sbNuiGeometry";
|
|
||||||
|
|
||||||
// This is the Selected SpellID Var, used to tell the OnTarget script what spell
|
|
||||||
// we are using after manual targetting
|
|
||||||
const string NUI_SPELLBOOK_SELECTED_SPELLID_VAR = "NUI_Spellbook_SpellId";
|
|
||||||
|
|
||||||
// This is the Selected FeatID Var, used to tell the OnTarget script what feat
|
|
||||||
// we are using after manual targetting
|
|
||||||
const string NUI_SPELLBOOK_SELECTED_FEATID_VAR = "NUI_Spellbook_FeatID";
|
|
||||||
|
|
||||||
// This is the Selected SubSpellID Var, used in conjuncture with the Selected FeatID
|
|
||||||
// to allow radial spells to work (it needs the master spell's featID and the sub spell's
|
|
||||||
// SpellID for it to work.
|
|
||||||
const string NUI_SPELLBOOK_SELECTED_SUBSPELL_SPELLID_VAR = "NUI_Spellbook_SubSpellID";
|
|
||||||
|
|
||||||
// This is the OnTarget action var saved to the player locally to say if we are
|
|
||||||
// using the NUI Spellbook spell or not.
|
|
||||||
const string NUI_SPELLBOOK_ON_TARGET_ACTION_VAR = "ONPLAYERTARGET_ACTION";
|
|
||||||
|
|
||||||
// This is a Boolean to tell the target script if the selected feat is a persoanl feat
|
|
||||||
// and can only be used on the executing object.
|
|
||||||
const string NUI_SPELLBOOK_ON_TARGET_IS_PERSONAL_FEAT = "NUI_Spellbook_IsPersonalFeat";
|
|
||||||
|
|
||||||
const string NUI_SPELL_DESCRIPTION_WINDOW_ID = "NUI_Spell_Description";
|
|
||||||
const string NUI_SPELL_DESCRIPTION_OK_BUTTON = "NUIDescriptionOKButton";
|
|
||||||
|
|
||||||
// This is the limit of how many spell buttons we can have in a row before we
|
|
||||||
// need to start a new row on the NUI Spellbook.
|
|
||||||
const int NUI_SPELLBOOK_SPELL_BUTTON_LENGTH = 9;
|
|
||||||
|
|
||||||
const string NUI_SPELLBOOK_BINDER_DICTIONARY_CACHE_VAR = "NUI_Spellbook_GetBinderSpellToFeatDictionaryCache";
|
|
||||||
const string NUI_SPELLBOOK_CLASS_STANCES_CACHE_BASE_VAR = "NUI_Spellbook_GetToBStanceSpellListCache_";
|
|
||||||
const string NUI_SPELLBOOK_CLASS_SHAPES_CACHE_BASE_VAR = "NUI_Spellbook_GetInvokerShapeSpellListCache_";
|
|
||||||
const string NUI_SPELLBOOK_CLASS_ESSENCE_CACHE_BASE_VAR = "NUISpellbookClassEssence_";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////
|
|
||||||
// //
|
|
||||||
// NUI Power Attack //
|
|
||||||
// //
|
|
||||||
//////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// The Window ID for the Power Attack NUI
|
|
||||||
const string NUI_PRC_POWER_ATTACK_WINDOW = "nui_prc_power_attack_window";
|
|
||||||
|
|
||||||
// LocalVar for the geometry of the Power Attack NUI window
|
|
||||||
const string NUI_PRC_PA_GEOMETRY_VAR = "paNuiGeometry";
|
|
||||||
|
|
||||||
// Event For Left "-" button of the Power Attack NUI
|
|
||||||
const string NUI_PRC_PA_LEFT_BUTTON_EVENT = "nui_prc_pa_left_button_event";
|
|
||||||
// Event For Right "+" Button of the Power Attack NUI
|
|
||||||
const string NUI_PRC_PA_RIGHT_BUTTON_EVENT = "nui_prc_pa_right_button_event";
|
|
||||||
|
|
||||||
// Bind for Text of the Power Attack NUI saying what the current Power Attack level is
|
|
||||||
const string NUI_PRC_PA_TEXT_BIND = "nui_prc_pa_text_bind";
|
|
||||||
// Left Button Enabled Bind for Power Attack NUI
|
|
||||||
const string NUI_PRC_PA_LEFT_BUTTON_ENABLED_BIND = "leftButtonEnabled";
|
|
||||||
// Right Button Enabled Bind for Power Attack NUI
|
|
||||||
const string NUI_PRC_PA_RIGHT_BUTTON_ENABLED_BIND = "rightButtonEnabled";
|
|
File diff suppressed because it is too large
Load Diff
@ -1,98 +0,0 @@
|
|||||||
//::///////////////////////////////////////////////
|
|
||||||
//:: PRC Spellbook Description NUI
|
|
||||||
//:: prc_nui_scd_inc
|
|
||||||
//:://////////////////////////////////////////////
|
|
||||||
/*
|
|
||||||
This is the view for the Spell Description NUI
|
|
||||||
*/
|
|
||||||
//:://////////////////////////////////////////////
|
|
||||||
//:: Created By: Rakiov
|
|
||||||
//:: Created On: 29.05.2005
|
|
||||||
//:://////////////////////////////////////////////
|
|
||||||
#include "nw_inc_nui"
|
|
||||||
#include "prc_nui_consts"
|
|
||||||
#include "inc_2dacache"
|
|
||||||
|
|
||||||
//
|
|
||||||
// CreateSpellDescriptionNUI
|
|
||||||
// Creates a Spell Description NUI mimicing the description GUI of NWN
|
|
||||||
//
|
|
||||||
// Arguments:
|
|
||||||
// oPlayer:Object the player object
|
|
||||||
// featID:int the FeatID
|
|
||||||
// spellId:int the SpellID
|
|
||||||
// realSpellId:int the RealSpellID
|
|
||||||
//
|
|
||||||
void CreateSpellDescriptionNUI(object oPlayer, int featID, int spellId=0, int realSpellId=0);
|
|
||||||
|
|
||||||
void CreateSpellDescriptionNUI(object oPlayer, int featID, int spellId=0, int realSpellId=0)
|
|
||||||
{
|
|
||||||
// look for existing window and destroy
|
|
||||||
int nPreviousToken = NuiFindWindow(OBJECT_SELF, NUI_SPELL_DESCRIPTION_WINDOW_ID);
|
|
||||||
if(nPreviousToken != 0)
|
|
||||||
{
|
|
||||||
NuiDestroy(OBJECT_SELF, nPreviousToken);
|
|
||||||
}
|
|
||||||
|
|
||||||
// in order of accuracy for names it goes RealSpellID > SpellID > FeatID
|
|
||||||
string spellName;
|
|
||||||
if (realSpellId)
|
|
||||||
spellName = GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", realSpellId)));
|
|
||||||
else if (spellId)
|
|
||||||
spellName = GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", spellId)));
|
|
||||||
else
|
|
||||||
spellName = GetStringByStrRef(StringToInt(Get2DACache("feat", "FEAT", featID)));
|
|
||||||
// Descriptions and Icons are accuratly stored on the feat
|
|
||||||
string spellDesc = GetStringByStrRef(StringToInt(Get2DACache("feat", "DESCRIPTION", featID)));
|
|
||||||
string spellIcon = Get2DACache("feat", "ICON", featID);
|
|
||||||
|
|
||||||
json jRoot = JsonArray();
|
|
||||||
json jGroup = JsonArray();
|
|
||||||
|
|
||||||
json jRow = JsonArray();
|
|
||||||
|
|
||||||
json jImage = NuiImage(JsonString(spellIcon), JsonInt(NUI_ASPECT_EXACT), JsonInt(NUI_HALIGN_LEFT), JsonInt(NUI_VALIGN_TOP));
|
|
||||||
jImage = NuiWidth(jImage, 32.0f);
|
|
||||||
jRow = JsonArrayInsert(jRow, jImage);
|
|
||||||
jRow = NuiCol(jRow);
|
|
||||||
jGroup = JsonArrayInsert(jGroup, jRow);
|
|
||||||
|
|
||||||
jRow = JsonArray();
|
|
||||||
json jText = NuiText(JsonString(spellDesc), FALSE, NUI_SCROLLBARS_AUTO);
|
|
||||||
jRow = JsonArrayInsert(jRow, jText);
|
|
||||||
jRow = NuiCol(jRow);
|
|
||||||
jGroup = JsonArrayInsert(jGroup, jRow);
|
|
||||||
|
|
||||||
jGroup = NuiRow(jGroup);
|
|
||||||
jGroup = NuiGroup(jGroup, TRUE, NUI_SCROLLBARS_NONE);
|
|
||||||
jRoot = JsonArrayInsert(jRoot, jGroup);
|
|
||||||
|
|
||||||
jRow = JsonArray();
|
|
||||||
jRow = JsonArrayInsert(jRow, NuiSpacer());
|
|
||||||
json jButton = NuiId(NuiButton(JsonString("OK")), NUI_SPELL_DESCRIPTION_OK_BUTTON);
|
|
||||||
jButton = NuiWidth(jButton, 175.0f);
|
|
||||||
jButton = NuiHeight(jButton, 48.0f);
|
|
||||||
jRow = JsonArrayInsert(jRow, jButton);
|
|
||||||
jRow = NuiRow(jRow);
|
|
||||||
|
|
||||||
jRoot = JsonArrayInsert(jRoot, jRow);
|
|
||||||
jRoot = NuiCol(jRoot);
|
|
||||||
|
|
||||||
|
|
||||||
// This is the main window with jRoot as the main pane. It includes titles and parameters (more on those later)
|
|
||||||
json nui = NuiWindow(jRoot, JsonString(spellName), NuiBind("geometry"), NuiBind("resizable"), JsonBool(FALSE), NuiBind("closable"), NuiBind("transparent"), NuiBind("border"));
|
|
||||||
|
|
||||||
// finally create it and it'll return us a non-zero token.
|
|
||||||
int nToken = NuiCreate(oPlayer, nui, NUI_SPELL_DESCRIPTION_WINDOW_ID);
|
|
||||||
|
|
||||||
// get the geometry of the window in case we opened this before and have a
|
|
||||||
// preference for location
|
|
||||||
json geometry = NuiRect(893.0f,346.0f, 426.0f, 446.0f);
|
|
||||||
|
|
||||||
// Set the binds to their default values
|
|
||||||
NuiSetBind(oPlayer, nToken, "geometry", geometry);
|
|
||||||
NuiSetBind(oPlayer, nToken, "resizable", JsonBool(FALSE));
|
|
||||||
NuiSetBind(oPlayer, nToken, "closable", JsonBool(FALSE));
|
|
||||||
NuiSetBind(oPlayer, nToken, "transparent", JsonBool(FALSE));
|
|
||||||
NuiSetBind(oPlayer, nToken, "border", JsonBool(TRUE));
|
|
||||||
}
|
|
@ -1,74 +0,0 @@
|
|||||||
//::///////////////////////////////////////////////
|
|
||||||
//:: String Util
|
|
||||||
//:: prc_string_inc
|
|
||||||
//:://////////////////////////////////////////////
|
|
||||||
/*
|
|
||||||
A util class for providing useful string functions.
|
|
||||||
*/
|
|
||||||
//:://////////////////////////////////////////////
|
|
||||||
//:: Created By: Rakiov
|
|
||||||
//:: Created On: 22.05.2005
|
|
||||||
//:://////////////////////////////////////////////
|
|
||||||
|
|
||||||
#include "inc_utility"
|
|
||||||
|
|
||||||
//
|
|
||||||
// StringSplit
|
|
||||||
// Takes a string and splits it by " " into a json list of strings
|
|
||||||
// i.e. "this is a test" returns
|
|
||||||
// {
|
|
||||||
// "this",
|
|
||||||
// "is",
|
|
||||||
// "a",
|
|
||||||
// "test"
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Parameters:
|
|
||||||
// string input the string input
|
|
||||||
//
|
|
||||||
// Returns:
|
|
||||||
// json the json list of words
|
|
||||||
//
|
|
||||||
json StringSplit(string input);
|
|
||||||
|
|
||||||
json StringSplit(string input)
|
|
||||||
{
|
|
||||||
json retValue = JsonArray();
|
|
||||||
|
|
||||||
string subString = "";
|
|
||||||
//trim any whitespace characters first
|
|
||||||
string currString = PRCTrimString(input);
|
|
||||||
|
|
||||||
// loop until we process the whole string
|
|
||||||
while(currString != "")
|
|
||||||
{
|
|
||||||
string currChar = GetStringLeft(currString, 1);
|
|
||||||
if (currChar != "" && currChar != " ")
|
|
||||||
{
|
|
||||||
// if the current character isn't nothing or whitespace, then add it
|
|
||||||
// to the current sub string.
|
|
||||||
subString += currChar;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// otherwise if the substring is not empty, then add it to the list
|
|
||||||
// of words to return
|
|
||||||
if(subString != "")
|
|
||||||
{
|
|
||||||
retValue = JsonArrayInsert(retValue, JsonString(subString));
|
|
||||||
subString = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// pop and move to next character
|
|
||||||
currString = GetStringRight(currString, GetStringLength(currString)-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// if there is any sub string left at the end of the loop, add it to the list
|
|
||||||
if(subString != "")
|
|
||||||
{
|
|
||||||
retValue = JsonArrayInsert(retValue, JsonString(subString));
|
|
||||||
}
|
|
||||||
|
|
||||||
return retValue;
|
|
||||||
}
|
|
@ -1154,6 +1154,7 @@ int GetIsDisciplineWeapon(object oWeapon, int nDiscipline)
|
|||||||
// Invalid is empty handed / Unarmed strike
|
// Invalid is empty handed / Unarmed strike
|
||||||
if(nType == BASE_ITEM_INVALID
|
if(nType == BASE_ITEM_INVALID
|
||||||
|| nType == BASE_ITEM_QUARTERSTAFF
|
|| nType == BASE_ITEM_QUARTERSTAFF
|
||||||
|
|| nType == BASE_ITEM_MAGICSTAFF
|
||||||
|| nType == BASE_ITEM_SHORTSWORD
|
|| nType == BASE_ITEM_SHORTSWORD
|
||||||
|| nType == BASE_ITEM_NUNCHAKU)
|
|| nType == BASE_ITEM_NUNCHAKU)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -1542,6 +1542,7 @@ int CheckSecondaryPrC(object oPC = OBJECT_SELF)
|
|||||||
}
|
}
|
||||||
else if (bSorcerer)
|
else if (bSorcerer)
|
||||||
{
|
{
|
||||||
|
if(DEBUG) DoDebug("x2_inc_spellhook: CheckSecondaryPrC >>> Entering Sorcerer", oPC);
|
||||||
if (GetHasFeat(FEAT_ABERRATION_SPELLCASTING_DRIDER)) return TRUE;
|
if (GetHasFeat(FEAT_ABERRATION_SPELLCASTING_DRIDER)) return TRUE;
|
||||||
if (GetHasFeat(FEAT_MONSTROUS_SPELLCASTING_ARKAMOI)) return TRUE;
|
if (GetHasFeat(FEAT_MONSTROUS_SPELLCASTING_ARKAMOI)) return TRUE;
|
||||||
if (GetHasFeat(FEAT_MONSTROUS_SPELLCASTING_MARRUTACT)) return TRUE;
|
if (GetHasFeat(FEAT_MONSTROUS_SPELLCASTING_MARRUTACT)) return TRUE;
|
||||||
|
@ -20919,22 +20919,22 @@
|
|||||||
"__struct_id": 0,
|
"__struct_id": 0,
|
||||||
"RESREF": {
|
"RESREF": {
|
||||||
"type": "resref",
|
"type": "resref",
|
||||||
"value": "zep_tree034"
|
"value": "zep_tree028"
|
||||||
},
|
},
|
||||||
"STRREF": {
|
"STRREF": {
|
||||||
"type": "dword",
|
"type": "dword",
|
||||||
"value": 16813282
|
"value": 16813284
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__struct_id": 0,
|
"__struct_id": 0,
|
||||||
"RESREF": {
|
"RESREF": {
|
||||||
"type": "resref",
|
"type": "resref",
|
||||||
"value": "zep_tree028"
|
"value": "zep_tree034"
|
||||||
},
|
},
|
||||||
"STRREF": {
|
"STRREF": {
|
||||||
"type": "dword",
|
"type": "dword",
|
||||||
"value": 16813284
|
"value": 16813282
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -20981,17 +20981,6 @@
|
|||||||
"value": 16813296
|
"value": 16813296
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"__struct_id": 0,
|
|
||||||
"RESREF": {
|
|
||||||
"type": "resref",
|
|
||||||
"value": "zep_tree035"
|
|
||||||
},
|
|
||||||
"STRREF": {
|
|
||||||
"type": "dword",
|
|
||||||
"value": 16813298
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"__struct_id": 0,
|
"__struct_id": 0,
|
||||||
"RESREF": {
|
"RESREF": {
|
||||||
@ -21007,11 +20996,11 @@
|
|||||||
"__struct_id": 0,
|
"__struct_id": 0,
|
||||||
"RESREF": {
|
"RESREF": {
|
||||||
"type": "resref",
|
"type": "resref",
|
||||||
"value": "zep_tree038"
|
"value": "zep_tree035"
|
||||||
},
|
},
|
||||||
"STRREF": {
|
"STRREF": {
|
||||||
"type": "dword",
|
"type": "dword",
|
||||||
"value": 16813306
|
"value": 16813298
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -21025,6 +21014,17 @@
|
|||||||
"value": 16813308
|
"value": 16813308
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"__struct_id": 0,
|
||||||
|
"RESREF": {
|
||||||
|
"type": "resref",
|
||||||
|
"value": "zep_tree038"
|
||||||
|
},
|
||||||
|
"STRREF": {
|
||||||
|
"type": "dword",
|
||||||
|
"value": 16813306
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"__struct_id": 0,
|
"__struct_id": 0,
|
||||||
"RESREF": {
|
"RESREF": {
|
||||||
@ -21398,17 +21398,6 @@
|
|||||||
"value": 16813264
|
"value": 16813264
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"__struct_id": 0,
|
|
||||||
"RESREF": {
|
|
||||||
"type": "resref",
|
|
||||||
"value": "zep_tree036"
|
|
||||||
},
|
|
||||||
"STRREF": {
|
|
||||||
"type": "dword",
|
|
||||||
"value": 16813286
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"__struct_id": 0,
|
"__struct_id": 0,
|
||||||
"RESREF": {
|
"RESREF": {
|
||||||
@ -21424,11 +21413,11 @@
|
|||||||
"__struct_id": 0,
|
"__struct_id": 0,
|
||||||
"RESREF": {
|
"RESREF": {
|
||||||
"type": "resref",
|
"type": "resref",
|
||||||
"value": "zep_tree093"
|
"value": "zep_tree036"
|
||||||
},
|
},
|
||||||
"STRREF": {
|
"STRREF": {
|
||||||
"type": "dword",
|
"type": "dword",
|
||||||
"value": 16813302
|
"value": 16813286
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -21442,6 +21431,17 @@
|
|||||||
"value": 16813304
|
"value": 16813304
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"__struct_id": 0,
|
||||||
|
"RESREF": {
|
||||||
|
"type": "resref",
|
||||||
|
"value": "zep_tree093"
|
||||||
|
},
|
||||||
|
"STRREF": {
|
||||||
|
"type": "dword",
|
||||||
|
"value": 16813302
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"__struct_id": 0,
|
"__struct_id": 0,
|
||||||
"RESREF": {
|
"RESREF": {
|
||||||
|
@ -2880,7 +2880,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0);
|
if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
BIN
src/module/nss/usewindow.ncs
Normal file
BIN
src/module/nss/usewindow.ncs
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user