Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
e2d524963b | ||
|
ef28d788a3 | ||
|
f59214cb64 | ||
|
6d37f86b11 | ||
|
85dd497fd8 | ||
|
033f03b473 | ||
|
238a29a9ca | ||
|
dcfc06d620 | ||
|
ea678dd90a | ||
|
28140be897 |
Binary file not shown.
11
nwsyc commands.txt
Normal file
11
nwsyc commands.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
sudo ./nwsync_write --verbose --path "/mnt/pve/maint/server/hak" --description="PRC presents Path of Ascension" /var/www/html/poa/ "/mnt/pve/nwn/poa/server/modules/poa.mod"
|
||||
|
||||
sudo ./nwsync_write --verbose --path "/mnt/pve/maint/server/hak" --description="PRC presents Land of Destiny" /var/www/html/destiny/ "/mnt/pve/nwn/destiny/server/modules/Land.mod"
|
||||
|
||||
sudo ./nwsync_write --verbose --path "/mnt/pve/maint/server/hak" --description="PRC presents Underworld 2" /var/www/html/under/ "/mnt/pve/nwn/under/server/modules/underworld.mod"
|
||||
|
||||
sudo ./nwsync_write --verbose --path "/mnt/pve/maint/server/hak" --description="PRC presents The Frozen North" /var/www/html/north/ "/mnt/pve/nwn/north/server/modules/tfn.mod"
|
||||
|
||||
sudo ./nwsync_write --verbose --path "/mnt/pve/maint/server/hak" --description="PRC presents Lankhmar Nights" /var/www/html/ "/mnt/pve/nwn/mouser/server/modules/mouser.mod"
|
||||
|
||||
sudo ./nwsync_write --verbose --path "/mnt/pve/maint/server/hak" --description="PRC presents Horde of Orcs" /var/www/html/horde/ "/mnt/pve/nwn/horde/server/modules/horde.mod"
|
File diff suppressed because it is too large
Load Diff
@@ -1,35 +1,37 @@
|
||||
2DA V2.0
|
||||
|
||||
FeatLabel FeatIndex List GrantedOnLevel OnMenu
|
||||
0 Hated_Enemy_Dwarf 4326 2 1 0
|
||||
1 Hated_Enemy_elf 4327 2 1 0
|
||||
2 Hated_Enemy_gnome 4328 2 1 0
|
||||
3 Hated_Enemy_halfling 4329 2 1 0
|
||||
4 Hated_Enemy_halfelf 4330 2 1 0
|
||||
5 Hated_Enemy_halforc 4331 2 1 0
|
||||
6 Hated_Enemy_human 4332 2 1 0
|
||||
7 Hated_Enemy_abberation 4333 2 1 0
|
||||
8 Hated_Enemy_animal 4334 2 1 0
|
||||
9 Hated_Enemy_beast 4335 2 1 0
|
||||
10 Hated_Enemy_construct 4336 2 1 0
|
||||
11 Hated_Enemy_dragon 4337 2 1 0
|
||||
12 Hated_Enemy_goblin 4338 2 1 0
|
||||
13 Hated_Enemy_monstrous 4339 2 1 0
|
||||
14 Hated_Enemy_orc 4340 2 1 0
|
||||
15 Hated_Enemy_reptile 4341 2 1 0
|
||||
16 Hated_Enemy_elemental 4342 2 1 0
|
||||
17 Hated_Enemy_fey 4343 2 1 0
|
||||
18 Hated_Enemy_giant 4344 2 1 0
|
||||
19 Hated_Enemy_mbeast 4345 2 1 0
|
||||
20 Hated_Enemy_outsider 4346 2 1 0
|
||||
21 Hated_Enemy_shapechanger 4347 2 1 0
|
||||
22 Hated_Enemy_undead 4348 2 1 0
|
||||
23 Hated_Enemy_vermin 4349 2 1 0
|
||||
24 Rancor 4322 3 1 0
|
||||
25 Death_Attack 4325 3 10 1
|
||||
26 DR 4323 3 2 0
|
||||
27 SR 4324 3 4 0
|
||||
28 FEAT_EPIC_BLINDING_SPEED 491 0 -1 1
|
||||
29 DefArrow 8 0 -1 0
|
||||
30 TwoWeap 41 0 -1 0
|
||||
31 Ambidex 1 0 -1 0
|
||||
FeatLabel FeatIndex List GrantedOnLevel OnMenu
|
||||
0 Hated_Enemy_Dwarf 4326 2 1 0
|
||||
1 Hated_Enemy_elf 4327 2 1 0
|
||||
2 Hated_Enemy_gnome 4328 2 1 0
|
||||
3 Hated_Enemy_halfling 4329 2 1 0
|
||||
4 Hated_Enemy_halfelf 4330 2 1 0
|
||||
5 Hated_Enemy_halforc 4331 2 1 0
|
||||
6 Hated_Enemy_human 4332 2 1 0
|
||||
7 Hated_Enemy_abberation 4333 2 1 0
|
||||
8 Hated_Enemy_animal 4334 2 1 0
|
||||
9 Hated_Enemy_beast 4335 2 1 0
|
||||
10 Hated_Enemy_construct 4336 2 1 0
|
||||
11 Hated_Enemy_dragon 4337 2 1 0
|
||||
12 Hated_Enemy_goblin 4338 2 1 0
|
||||
13 Hated_Enemy_monstrous 4339 2 1 0
|
||||
14 Hated_Enemy_orc 4340 2 1 0
|
||||
15 Hated_Enemy_reptile 4341 2 1 0
|
||||
16 Hated_Enemy_elemental 4342 2 1 0
|
||||
17 Hated_Enemy_fey 4343 2 1 0
|
||||
18 Hated_Enemy_giant 4344 2 1 0
|
||||
19 Hated_Enemy_mbeast 4345 2 1 0
|
||||
20 Hated_Enemy_outsider 4346 2 1 0
|
||||
21 Hated_Enemy_shapechanger 4347 2 1 0
|
||||
22 Hated_Enemy_undead 4348 2 1 0
|
||||
23 Hated_Enemy_vermin 4349 2 1 0
|
||||
24 FEAT_HATED_ENEMY_OOZE 3469 2 1 0
|
||||
25 FEAT_HATED_ENEMY_PLANT 3470 2 1 0
|
||||
26 Rancor 4322 3 1 0
|
||||
27 Death_Attack 4325 3 10 1
|
||||
28 DR 4323 3 2 0
|
||||
29 SR 4324 3 4 0
|
||||
30 FEAT_EPIC_BLINDING_SPEED 491 0 -1 1
|
||||
31 DefArrow 8 0 -1 0
|
||||
32 TwoWeap 41 0 -1 0
|
||||
33 Ambidex 1 0 -1 0
|
||||
|
@@ -3470,8 +3470,8 @@
|
||||
3466 FEAT_AP_CONTAGION3 777 16825553 is_Contagion **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 2087 3467 1 3 **** **** **** **** **** **** **** **** **** **** **** FEAT_AP_CONTAGION3 3 **** **** **** **** **** 0 1
|
||||
3467 FEAT_AP_CONTAGION4 777 16825553 is_Contagion **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 2087 3468 1 4 **** **** **** **** **** **** **** **** **** **** **** FEAT_AP_CONTAGION4 3 **** **** **** **** **** 0 1
|
||||
3468 FEAT_AP_CONTAGION5 777 16825553 is_Contagion **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 2087 **** 1 5 **** **** **** **** **** **** **** **** **** **** **** FEAT_AP_CONTAGION5 3 **** **** **** **** **** 0 1
|
||||
3469 **** 16825602 16825603 is_CharmPer **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** 3470 1 1 **** **** **** **** **** **** **** **** **** **** **** FEAT_CO_CORRUPTSOUL1 3 **** **** **** **** **** 0 1
|
||||
3470 **** 16825602 16825603 is_CharmPer **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** 3471 1 2 **** **** **** **** **** **** **** **** **** **** **** FEAT_CO_CORRUPTSOUL2 3 **** **** **** **** **** 0 1
|
||||
3469 FEAT_HATED_ENEMY_OOZE 16790073 16824269 ife_racehate **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** **** 0.5 **** 55 **** **** 2354 **** **** **** **** **** **** **** FEAT_HATED_ENEMY_OOZE 6 **** **** **** **** **** 0 1
|
||||
3470 FEAT_HATED_ENEMY_PLANT 16790074 16824269 ife_racehate **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** **** 0.5 **** 55 **** **** 2355 **** **** **** **** **** **** **** FEAT_HATED_ENEMY_PLANT 6 **** **** **** **** **** 0 1
|
||||
3471 **** 16825602 16825603 is_CharmPer **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** 3472 1 3 **** **** **** **** **** **** **** **** **** **** **** FEAT_CO_CORRUPTSOUL3 3 **** **** **** **** **** 0 1
|
||||
3472 **** 16825602 16825603 is_CharmPer **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** 3473 1 4 **** **** **** **** **** **** **** **** **** **** **** FEAT_CO_CORRUPTSOUL4 3 **** **** **** **** **** 0 1
|
||||
3473 **** 16825602 16825603 is_CharmPer **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** **** 1 5 **** **** **** **** **** **** **** **** **** **** **** FEAT_CO_CORRUPTSOUL5 3 **** **** **** **** **** 0 1
|
||||
@@ -7951,7 +7951,7 @@
|
||||
7947 WP_Maul 16834189 16834258 ife_wepprof_mau **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** 45 1 **** 86 **** **** **** **** **** **** **** **** **** **** FEAT_WEAPON_PROFICIENCY_MAUL 1 **** **** **** **** **** 0 1
|
||||
7948 WP_Double_Scimitar 16834198 16834259 ife_wepprof_dsc **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** 44 1 **** 87 **** **** **** **** **** **** **** **** **** **** FEAT_WEAPON_PROFICIENCY_DOUBLE_SCIMITAR 1 **** **** **** **** **** 0 1
|
||||
7949 WP_Goad 16834207 16834257 ife_wepprof_goa **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** 46 1 **** 85 **** **** **** **** **** **** **** **** **** **** FEAT_WEAPON_PROFICIENCY_GOAD 1 **** **** **** **** **** 0 1
|
||||
7950 WP_EagleClaw 16793721 16834259 ife_wepprof_ssw **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** 45 1 **** 86 **** **** **** **** **** **** **** **** **** **** FEAT_WEAPON_PROFICIENCY_SHORTSWORD 1 **** **** **** **** **** 0 1
|
||||
7950 WP_EagleClaw 16793721 16834259 ife_wepprof_ssw **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** 44 1 **** 87 **** **** **** **** **** **** **** **** **** **** FEAT_WEAPON_PROFICIENCY_EAGLE_CLAW 1 **** **** **** **** **** 0 1
|
||||
7951 ReservedForISCAndESS **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1
|
||||
7952 ReservedForISCAndESS **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1
|
||||
7953 ReservedForISCAndESS **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1
|
||||
|
54
trunk/2das/iprp_bonuscost.2da
Normal file
54
trunk/2das/iprp_bonuscost.2da
Normal file
@@ -0,0 +1,54 @@
|
||||
2DA V2.0
|
||||
|
||||
Name Label Cost Value
|
||||
0 **** Random 0 0
|
||||
1 1045 1 1 1
|
||||
2 1046 2 2 2
|
||||
3 1047 3 3 3
|
||||
4 1048 4 4 4
|
||||
5 1049 5 5 5
|
||||
6 1050 6 6 6
|
||||
7 1051 7 7 7
|
||||
8 1052 8 8 8
|
||||
9 1053 9 9 9
|
||||
10 1054 10 10 10
|
||||
11 1954 11 11 11
|
||||
12 1992 12 12 12
|
||||
13 2113 13 13 13
|
||||
14 2119 14 14 14
|
||||
15 2139 15 15 15
|
||||
16 2163 16 16 16
|
||||
17 2164 17 17 17
|
||||
18 2187 18 18 18
|
||||
19 2191 19 19 19
|
||||
20 2192 20 20 20
|
||||
21 2332 21 21 21
|
||||
22 2333 22 22 22
|
||||
23 2334 23 23 23
|
||||
24 2335 24 24 24
|
||||
25 2336 25 25 25
|
||||
26 2337 26 26 26
|
||||
27 2338 27 27 27
|
||||
28 2339 28 28 28
|
||||
29 2340 29 29 29
|
||||
30 2341 30 30 30
|
||||
31 2342 31 31 31
|
||||
32 2343 32 32 32
|
||||
33 2344 33 33 33
|
||||
34 2345 34 34 34
|
||||
35 2346 35 35 35
|
||||
36 2347 36 36 36
|
||||
37 2348 37 37 37
|
||||
38 2349 38 38 38
|
||||
39 2350 39 39 39
|
||||
40 2351 40 40 40
|
||||
41 2352 41 41 41
|
||||
42 2353 42 42 42
|
||||
43 2354 43 43 43
|
||||
44 2355 44 44 44
|
||||
45 2356 45 45 45
|
||||
46 2357 46 46 46
|
||||
47 2358 47 47 47
|
||||
48 2359 48 48 48
|
||||
49 2360 49 49 49
|
||||
50 2361 50 50 50
|
5
trunk/DevNotes/Files Changed for .35.txt
Normal file
5
trunk/DevNotes/Files Changed for .35.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Files changed for .35:
|
||||
|
||||
inv_inc_invfunc.nss - GetHighestInvokerLevel(), GetFirstInvocationClassPosition(), GetPrimaryInvocationClass()
|
||||
|
||||
inc_epicspellfnc.nss - GetCanLearnSeed()
|
25
trunk/DevNotes/updating weapons.txt
Normal file
25
trunk/DevNotes/updating weapons.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
Scripts that need to be updated whenever we get a new weapon type:
|
||||
|
||||
prc_misc_const.nss - New weapon constants go here
|
||||
prc_dispater.nss - Metal / Iron weapons
|
||||
inc_item_props.nss - Missing Light lance
|
||||
inc_rand_equip.nss - Missing all new weapons
|
||||
prc_craft_inc.nss
|
||||
prc_inc_clsfunc.nss - Missing Light Lance & new weapons. Needs update for .35
|
||||
prc_inc_combat.nss - Missing Light lance, elf blades & new weapons.
|
||||
prc_inc_fork.nss - Missing Light Lance & new weapons.
|
||||
prc_inc_wpnrest.nss - Missing Light Lance for some functions
|
||||
prc_x2_itemprop.nss - Missing Light lance.
|
||||
psi_callweapon.nss - May need to make a new default version for each new weapon, needs testing.
|
||||
prc_ad_falskeen.nss - Missing Light lance, elf blades & new weapons.
|
||||
prc_battletempus.nss - Martial melee weapons. Missing new Martial weapons.
|
||||
prc_intuiatk.nss - Simple melee weapons. Missing new Simple weapons.
|
||||
prc_swashweak.nss - All melee weapons. Missing Light lance, elf blades & new weapons.
|
||||
prc_ipfeat_const.nss - Weapon Feat constants go here.
|
||||
|
||||
|
||||
|
||||
2DAs that need updating for new weapon types:
|
||||
|
||||
baseitems.2da - Obviously.
|
||||
prc_weap_items.2da
|
@@ -132,7 +132,7 @@ int GetCanLearnSeed(object oPC, int nSeedID)
|
||||
{
|
||||
int nRestr = GetClassForSeed(nSeedID);
|
||||
int i, nClass;
|
||||
for(i = 1; i <= 3; i++)
|
||||
for(i = 1; i <= 8; i++)
|
||||
{
|
||||
nClass = GetClassByPosition(i, oPC);
|
||||
if(_CheckEpicSpellcastingForClass(oPC, nClass)//this class has epic spellcasting
|
||||
|
@@ -373,12 +373,12 @@ void SetCompositeBonus(object oItem, string sBonus, int iVal, int iType, int iSu
|
||||
iCurVal = TotalAndRemoveProperty(oItem, iType, iSubType);
|
||||
iCurVal -= GetPersistantLocalInt(GetItemPossessor(oItem), "LetoAbility_"+IntToString(iSubType));
|
||||
if (DEBUG) DoDebug("Ability Decrease #1: oItem "+GetName(oItem)+" sBonus "+sBonus+" iChange "+IntToString(iChange)+" iCurVal "+IntToString(iCurVal)+" iSubType "+IntToString(iSubType));
|
||||
/*if ((iCurVal + iChange) > 12)
|
||||
if ((iCurVal + iChange) > 50)
|
||||
{
|
||||
iVal -= iCurVal + iChange - 12;
|
||||
iCurVal = 12;
|
||||
iVal -= iCurVal + iChange - 50;
|
||||
iCurVal = 50;
|
||||
iChange = 0;
|
||||
}*/
|
||||
}
|
||||
if(iCurVal+iChange > 0)
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyAbilityBonus(iSubType, iCurVal + iChange), oItem);
|
||||
@@ -764,10 +764,10 @@ void SetCompositeBonusT(object oItem, string sBonus, int iVal, int iType, int iS
|
||||
{
|
||||
case ITEM_PROPERTY_ABILITY_BONUS:
|
||||
iCurVal = TotalAndRemovePropertyT(oItem, iType, iSubType);
|
||||
if ((iCurVal + iChange) > 12)
|
||||
if ((iCurVal + iChange) > 50)
|
||||
{
|
||||
iVal -= iCurVal + iChange - 12;
|
||||
iCurVal = 12;
|
||||
iVal -= iCurVal + iChange - 50;
|
||||
iCurVal = 50;
|
||||
iChange = 0;
|
||||
}
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyAbilityBonus(iSubType, iCurVal + iChange), oItem,9999.0);
|
||||
|
@@ -230,14 +230,37 @@ int GetIsInvocationUser(object oCreature)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
int GetHighestInvokerLevel(object oCreature)
|
||||
{
|
||||
int n = 0;
|
||||
int nHighest;
|
||||
int nTemp;
|
||||
|
||||
while(n <= 8)
|
||||
{
|
||||
if(GetClassByPosition(n, oCreature) != CLASS_TYPE_INVALID)
|
||||
{
|
||||
nTemp = GetInvokerLevel(oCreature, GetClassByPosition(n, oCreature));
|
||||
|
||||
if(nTemp > nHighest)
|
||||
nHighest = nTemp;
|
||||
}
|
||||
n++;
|
||||
|
||||
}
|
||||
|
||||
return nHighest;
|
||||
}
|
||||
|
||||
/* int GetHighestInvokerLevel(object oCreature)
|
||||
{
|
||||
return max(max(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetInvokerLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
|
||||
GetClassByPosition(2, oCreature) != CLASS_TYPE_INVALID ? GetInvokerLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
|
||||
),
|
||||
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetInvokerLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
||||
);
|
||||
}
|
||||
} */
|
||||
|
||||
int GetIsInvocationClass(int nClass)
|
||||
{
|
||||
@@ -278,7 +301,7 @@ int GetPrimaryInvocationClass(object oCreature = OBJECT_SELF)
|
||||
{
|
||||
int nClass;
|
||||
|
||||
if(GetPRCSwitch(PRC_CASTERLEVEL_FIRST_CLASS_RULE))
|
||||
if(GetPRCSwitch(PRC_CASTERLEVEL_FIRST_CLASS_RULE)) //: Kinda pointless for .35
|
||||
{
|
||||
int nInvocationPos = GetFirstInvocationClassPosition(oCreature);
|
||||
if (!nInvocationPos) return CLASS_TYPE_INVALID; // no invoking class
|
||||
@@ -288,18 +311,30 @@ int GetPrimaryInvocationClass(object oCreature = OBJECT_SELF)
|
||||
else
|
||||
{
|
||||
int nClassLvl;
|
||||
int nClass1, nClass2, nClass3;
|
||||
int nClass1Lvl, nClass2Lvl, nClass3Lvl;
|
||||
int nClass1, nClass2, nClass3, nClass4, nClass5, nClass6, nClass7, nClass8;
|
||||
int nClass1Lvl, nClass2Lvl, nClass3Lvl, nClass4Lvl, nClass5Lvl, nClass6Lvl, nClass7Lvl, nClass8Lvl;
|
||||
|
||||
nClass1 = GetClassByPosition(1, oCreature);
|
||||
nClass2 = GetClassByPosition(2, oCreature);
|
||||
nClass3 = GetClassByPosition(3, oCreature);
|
||||
nClass4 = GetClassByPosition(4, oCreature);
|
||||
nClass5 = GetClassByPosition(5, oCreature);
|
||||
nClass6 = GetClassByPosition(6, oCreature);
|
||||
nClass7 = GetClassByPosition(7, oCreature);
|
||||
nClass8 = GetClassByPosition(8, oCreature);
|
||||
|
||||
if(GetIsInvocationClass(nClass1)) nClass1Lvl = GetLevelByClass(nClass1, oCreature);
|
||||
if(GetIsInvocationClass(nClass2)) nClass2Lvl = GetLevelByClass(nClass2, oCreature);
|
||||
if(GetIsInvocationClass(nClass3)) nClass3Lvl = GetLevelByClass(nClass3, oCreature);
|
||||
if(GetIsInvocationClass(nClass4)) nClass4Lvl = GetLevelByClass(nClass4, oCreature);
|
||||
if(GetIsInvocationClass(nClass5)) nClass5Lvl = GetLevelByClass(nClass5, oCreature);
|
||||
if(GetIsInvocationClass(nClass6)) nClass6Lvl = GetLevelByClass(nClass6, oCreature);
|
||||
if(GetIsInvocationClass(nClass7)) nClass7Lvl = GetLevelByClass(nClass7, oCreature);
|
||||
if(GetIsInvocationClass(nClass8)) nClass8Lvl = GetLevelByClass(nClass8, oCreature);
|
||||
|
||||
nClass = nClass1;
|
||||
nClassLvl = nClass1Lvl;
|
||||
|
||||
if(nClass2Lvl > nClassLvl)
|
||||
{
|
||||
nClass = nClass2;
|
||||
@@ -310,6 +345,32 @@ int GetPrimaryInvocationClass(object oCreature = OBJECT_SELF)
|
||||
nClass = nClass3;
|
||||
nClassLvl = nClass3Lvl;
|
||||
}
|
||||
if(nClass4Lvl > nClassLvl)
|
||||
{
|
||||
nClass = nClass4;
|
||||
nClassLvl = nClass4Lvl;
|
||||
}
|
||||
if(nClass5Lvl > nClassLvl)
|
||||
{
|
||||
nClass = nClass5;
|
||||
nClassLvl = nClass5Lvl;
|
||||
}
|
||||
if(nClass6Lvl > nClassLvl)
|
||||
{
|
||||
nClass = nClass6;
|
||||
nClassLvl = nClass6Lvl;
|
||||
}
|
||||
if(nClass7Lvl > nClassLvl)
|
||||
{
|
||||
nClass = nClass7;
|
||||
nClassLvl = nClass7Lvl;
|
||||
}
|
||||
if(nClass8Lvl > nClassLvl)
|
||||
{
|
||||
nClass = nClass8;
|
||||
nClassLvl = nClass8Lvl;
|
||||
}
|
||||
|
||||
if(nClassLvl == 0)
|
||||
nClass = CLASS_TYPE_INVALID;
|
||||
}
|
||||
@@ -325,7 +386,17 @@ int GetFirstInvocationClassPosition(object oCreature = OBJECT_SELF)
|
||||
return 2;
|
||||
if (GetIsInvocationClass(GetClassByPosition(3, oCreature)))
|
||||
return 3;
|
||||
|
||||
if (GetIsInvocationClass(GetClassByPosition(4, oCreature)))
|
||||
return 4;
|
||||
if (GetIsInvocationClass(GetClassByPosition(5, oCreature)))
|
||||
return 5;
|
||||
if (GetIsInvocationClass(GetClassByPosition(6, oCreature)))
|
||||
return 6;
|
||||
if (GetIsInvocationClass(GetClassByPosition(7, oCreature)))
|
||||
return 7;
|
||||
if (GetIsInvocationClass(GetClassByPosition(8, oCreature)))
|
||||
return 8;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -1710,6 +1710,8 @@ const int FEAT_HATED_ENEMY_OUTSIDER = 4346;
|
||||
const int FEAT_HATED_ENEMY_SHAPECHANGER = 4347;
|
||||
const int FEAT_HATED_ENEMY_UNDEAD = 4348;
|
||||
const int FEAT_HATED_ENEMY_VERMIN = 4349;
|
||||
const int FEAT_HATED_ENEMY_OOZE = 3469;
|
||||
const int FEAT_HATED_ENEMY_PLANT = 3470;
|
||||
|
||||
// Thrall of Graz'zt
|
||||
const int FEAT_TOG_SUMMON_DEMON = 2889;
|
||||
|
6
trunk/newspellbook/prc_kngtw_sp_gen.nss
Normal file
6
trunk/newspellbook/prc_kngtw_sp_gen.nss
Normal file
@@ -0,0 +1,6 @@
|
||||
#include "inc_newspellbook"
|
||||
|
||||
void main()
|
||||
{
|
||||
NewSpellbookSpell(CLASS_TYPE_KNIGHT_WEAVE, SPELLBOOK_TYPE_SPONTANEOUS);
|
||||
}
|
@@ -10,33 +10,45 @@ int IsItemMetal(object oItem)
|
||||
|
||||
// Any of these Base Item Types can be considered "mostly metal"
|
||||
if (type==BASE_ITEM_BASTARDSWORD ||
|
||||
type==BASE_ITEM_BATTLEAXE ||
|
||||
type==BASE_ITEM_DAGGER ||
|
||||
type==BASE_ITEM_DIREMACE ||
|
||||
type==BASE_ITEM_DOUBLEAXE ||
|
||||
type==BASE_ITEM_DWARVENWARAXE ||
|
||||
type==BASE_ITEM_GREATAXE ||
|
||||
type==BASE_ITEM_GREATSWORD ||
|
||||
type==BASE_ITEM_HALBERD ||
|
||||
type==BASE_ITEM_HANDAXE ||
|
||||
type==BASE_ITEM_HEAVYFLAIL ||
|
||||
type==BASE_ITEM_KAMA ||
|
||||
type==BASE_ITEM_KATANA ||
|
||||
type==BASE_ITEM_KUKRI ||
|
||||
type==BASE_ITEM_LIGHTFLAIL ||
|
||||
type==BASE_ITEM_LIGHTHAMMER ||
|
||||
type==BASE_ITEM_LIGHTMACE ||
|
||||
type==BASE_ITEM_LONGSWORD ||
|
||||
type==BASE_ITEM_MORNINGSTAR ||
|
||||
type==BASE_ITEM_RAPIER ||
|
||||
type==BASE_ITEM_SCIMITAR ||
|
||||
type==BASE_ITEM_SCYTHE ||
|
||||
type==BASE_ITEM_SHORTSWORD ||
|
||||
type==BASE_ITEM_SHURIKEN ||
|
||||
type==BASE_ITEM_SICKLE ||
|
||||
type==BASE_ITEM_THROWINGAXE ||
|
||||
type==BASE_ITEM_TWOBLADEDSWORD ||
|
||||
type==BASE_ITEM_WARHAMMER)
|
||||
type==BASE_ITEM_BATTLEAXE ||
|
||||
type==BASE_ITEM_DAGGER ||
|
||||
type==BASE_ITEM_DIREMACE ||
|
||||
type==BASE_ITEM_DOUBLEAXE ||
|
||||
type==BASE_ITEM_DWARVENWARAXE ||
|
||||
type==BASE_ITEM_GREATAXE ||
|
||||
type==BASE_ITEM_GREATSWORD ||
|
||||
type==BASE_ITEM_HALBERD ||
|
||||
type==BASE_ITEM_HANDAXE ||
|
||||
type==BASE_ITEM_HEAVYFLAIL ||
|
||||
type==BASE_ITEM_KAMA ||
|
||||
type==BASE_ITEM_KATANA ||
|
||||
type==BASE_ITEM_KUKRI ||
|
||||
type==BASE_ITEM_LIGHTFLAIL ||
|
||||
type==BASE_ITEM_LIGHTHAMMER ||
|
||||
type==BASE_ITEM_LIGHTMACE ||
|
||||
type==BASE_ITEM_LONGSWORD ||
|
||||
type==BASE_ITEM_MORNINGSTAR ||
|
||||
type==BASE_ITEM_RAPIER ||
|
||||
type==BASE_ITEM_SCIMITAR ||
|
||||
type==BASE_ITEM_SCYTHE ||
|
||||
type==BASE_ITEM_SHORTSWORD ||
|
||||
type==BASE_ITEM_SHURIKEN ||
|
||||
type==BASE_ITEM_SICKLE ||
|
||||
type==BASE_ITEM_THROWINGAXE ||
|
||||
type==BASE_ITEM_TWOBLADEDSWORD ||
|
||||
type==BASE_ITEM_WARHAMMER ||
|
||||
type==BASE_ITEM_HEAVY_PICK ||
|
||||
type==BASE_ITEM_LIGHT_PICK ||
|
||||
type==BASE_ITEM_SAI ||
|
||||
type==BASE_ITEM_FALCHION ||
|
||||
type==BASE_ITEM_KATAR ||
|
||||
type==BASE_ITEM_HEAVY_MACE ||
|
||||
type==BASE_ITEM_MAUL ||
|
||||
type==BASE_ITEM_DOUBLE_SCIMITAR ||
|
||||
type==BASE_ITEM_EAGLE_CLAW ||
|
||||
type==BASE_ITEM_ELVEN_LIGHTBLADE ||
|
||||
type==BASE_ITEM_ELVEN_THINBLADE ||
|
||||
type==BASE_ITEM_ELVEN_COURTBLADE)
|
||||
{
|
||||
nReturnVal=2; // Mostly metal
|
||||
}
|
||||
|
@@ -529,6 +529,13 @@ int CheckArchmageClass()
|
||||
FloatingTextStringOnCreature("Archmage may only advance a single arcane class.", OBJECT_SELF, FALSE);
|
||||
FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if(iArchClass < 1)
|
||||
{
|
||||
FloatingTextStringOnCreature("Archmage must pick one arcane class to advance at first level.", OBJECT_SELF, FALSE);
|
||||
FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
|
@@ -43,6 +43,8 @@ void SetHatedEnemyRace(object oPC)
|
||||
else if(GetHasFeat(FEAT_HATED_ENEMY_SHAPECHANGER, oPC)) hatedEnemy = RACIAL_TYPE_SHAPECHANGER;
|
||||
else if(GetHasFeat(FEAT_HATED_ENEMY_UNDEAD, oPC)) hatedEnemy = RACIAL_TYPE_UNDEAD;
|
||||
else if(GetHasFeat(FEAT_HATED_ENEMY_VERMIN, oPC)) hatedEnemy = RACIAL_TYPE_VERMIN;
|
||||
else if(GetHasFeat(FEAT_HATED_ENEMY_OOZE, oPC)) hatedEnemy = RACIAL_TYPE_OOZE;
|
||||
else if(GetHasFeat(FEAT_HATED_ENEMY_PLANT, oPC)) hatedEnemy = RACIAL_TYPE_PLANT;
|
||||
|
||||
SetLocalInt(oPC, "HatedFoe", hatedEnemy);
|
||||
}
|
||||
|
Binary file not shown.
@@ -2,6 +2,21 @@
|
||||
<!DOCTYPE tlk SYSTEM "tlk2xml.dtd">
|
||||
<tlk>
|
||||
<entry id="0" lang="en" sex="m">Bad Strref</entry>
|
||||
<entry id="12250" lang="en" sex="m">## NEW NWN .35 DAMAGE TYPES ##</entry>
|
||||
<entry id="12251" lang="en" sex="m">Force Damage</entry>
|
||||
<entry id="12252" lang="en" sex="m"><CUSTOM0> Force</entry>
|
||||
<entry id="12253" lang="en" sex="m">Poison Damage</entry>
|
||||
<entry id="12254" lang="en" sex="m"><CUSTOM0> Poison</entry>
|
||||
<entry id="12255" lang="en" sex="m">Psychic Damage</entry>
|
||||
<entry id="12256" lang="en" sex="m"><CUSTOM0> Psychic</entry>
|
||||
<entry id="12257" lang="en" sex="m">Radiant Damage</entry>
|
||||
<entry id="12258" lang="en" sex="m"><CUSTOM0> Radiant</entry>
|
||||
<entry id="12259" lang="en" sex="m">Subdual Damage</entry>
|
||||
<entry id="12260" lang="en" sex="m"><CUSTOM0> Subdual</entry>
|
||||
<entry id="12261" lang="en" sex="m">Untyped Damage</entry>
|
||||
<entry id="12262" lang="en" sex="m"><CUSTOM0> Untyped</entry>
|
||||
<entry id="12263" lang="en" sex="m">Vile Damage</entry>
|
||||
<entry id="12264" lang="en" sex="m"><CUSTOM0> Vile</entry>
|
||||
<entry id="12288" lang="en" sex="m">Ocular Adept</entry>
|
||||
<entry id="12289" lang="en" sex="m">Ocular Adepts</entry>
|
||||
<entry id="12290" lang="en" sex="m">ocular adepts</entry>
|
||||
@@ -2310,6 +2325,10 @@ Use: Automatic.</entry>
|
||||
Prerequisite: Elf or Scent ability.
|
||||
Specifics: Characters with Keen Senses may apply their full Search skill even when making a passive search.
|
||||
Use: Automatic.</entry>
|
||||
<entry id="12857" lang="en" sex="m">Hated Enemy: Oozes</entry>
|
||||
<entry id="12858" lang="en" sex="m">Hated Enemy: Plants</entry>
|
||||
<entry id="12859" lang="en" sex="m">Favored Enemy: Oozes</entry>
|
||||
<entry id="12860" lang="en" sex="m">Favored Enemy: Plants</entry>
|
||||
<entry id="12861" lang="en" sex="m">Practiced Invoker (Dragonfire Adept)</entry>
|
||||
<entry id="12862" lang="en" sex="m">Practiced Invoker (Warlock)</entry>
|
||||
<entry id="12863" lang="en" sex="m">Type of Feat: General.
|
||||
@@ -4796,7 +4815,7 @@ your current position.</entry>
|
||||
<entry id="16443" lang="en" sex="m">96</entry>
|
||||
<entry id="16444" lang="en" sex="m">97</entry>
|
||||
<entry id="16445" lang="en" sex="m">98</entry>
|
||||
<entry id="16446" lang="en" sex="m">100</entry>
|
||||
<entry id="16446" lang="en" sex="m">99</entry>
|
||||
<entry id="16447" lang="en" sex="m">Tomb-Tainted Soul</entry>
|
||||
<entry id="16448" lang="en" sex="m">Type of Feat: General
|
||||
Prerequisite: Nongood alignment.
|
||||
@@ -71236,4 +71255,12 @@ Use: Activated</entry>
|
||||
<entry id="75280" lang="en" sex="m">Fra</entry>
|
||||
<entry id="75281" lang="en" sex="m">CSM</entry>
|
||||
<entry id="75282" lang="en" sex="m">Sht</entry>
|
||||
<entry id="75290" lang="en" sex="m">##START CASTER PRC MARKER FEATS##</entry>
|
||||
<entry id="75291" lang="en" sex="m">The Archmage sacrifices the bonus spell slots he would gain in order to take a High Arcana feat at each level. He does, however, add his level to his base caster class when determining spell power (damage, duration...). </entry>
|
||||
<entry id="75292" lang="en" sex="m">Archmage Spellcasting (Beguiler)</entry>
|
||||
<entry id="75293" lang="en" sex="m">Archmage Spellcasting (Dread Necromancer)</entry>
|
||||
<entry id="75294" lang="en" sex="m">Archmage Spellcasting (Sorcerer)</entry>
|
||||
<entry id="75295" lang="en" sex="m">Archmage Spellcasting (Sublime Chord)</entry>
|
||||
<entry id="75296" lang="en" sex="m">Archmage Spellcasting (Warmage)</entry>
|
||||
<entry id="75297" lang="en" sex="m">Archmage Spellcasting (Wizard)</entry>
|
||||
</tlk>
|
||||
|
BIN
trunk/tools/.34_nwnsc.exe
Normal file
BIN
trunk/tools/.34_nwnsc.exe
Normal file
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user