Fixed Thrall of Grazzt not getting a marker feat

Fixed Thrall of Grazzt not getting a marker feat.  Fixed TLK error with Elemental Savant marker feat.  Added grey elf to Racial IP list for Elves.  Updated release archive.

All @Barmlot: Added Empty Vessel race.  Fixed Necropolitian name/tlk.  Fixed Incarnum Blade meldshaping.  Fixed Hybsil's Pass Without Trace.  Fixed Kalashtar's Skill Affinity: Persuade.  Fixed missing Marrutact Howl.  Added Immunity to Sleep to Mongrelfolk & removed Charm Animal.  (thanks @barmlot!)
This commit is contained in:
Jaysyn904 2024-10-22 10:09:54 -04:00
parent 50f3cd7c0a
commit 53149108fe
24 changed files with 25164 additions and 25042 deletions

1
.gitignore vendored
View File

@ -160,3 +160,4 @@ nwn/nwnprc/trunk/makefile.temp
*.temp
nwn/nwnprc/trunk/makefile.temp
nwn/nwnprc/trunk/makefile.temp
nwn/nwnprc/trunk/makefile.temp

BIN
Release/PRC8_20241022.7z Normal file

Binary file not shown.

View File

@ -155,7 +155,7 @@
151 Arctic_Dwarf 2 **** **** ****
152 Gold_Dwarf 0 **** **** ****
153 Gray_Dwarf 1 **** **** ****
154 **** 0 **** **** ****
154 EmptyVessel 1 **** **** ****
155 Urdunnir 4 **** **** ****
156 Wild_Dwarf 0 **** **** ****
157 **** 0 **** **** ****

View File

@ -1,7 +1,7 @@
2DA V2.0
Bonus
0 0
0 1
1 0
2 0
3 0

View File

@ -106,5 +106,5 @@
102 DemiLich 3087 16847651 8 2 tmp_t_lichd **** tmp_m_lich
103 Vampire **** **** 8 **** **** **** ****
104 VampireSpawn **** **** **** **** **** **** ****
105 Necropolitan **** 16847638 **** 2 tmp_t_necropol **** tmp_m_necropol
105 Necropolitan 16847637 16847638 **** 2 tmp_t_necropol **** tmp_m_necropol
106 Alhoon 16822362 16822363 4 2 tmp_t_alhoon **** tmp_m_alhoon

View File

@ -35,6 +35,7 @@ const int RACIAL_TYPE_CHANGELING = 147;
const int RACIAL_TYPE_KALASHTAR = 148;
const int RACIAL_TYPE_WARFORGED = 149;
const int RACIAL_TYPE_ZAKYA_RAKSHASA = 150;
const int RACIAL_TYPE_EMPTY_VESSEL = 154;
//Planescape Races
const int RACIAL_TYPE_BARIAUR = 207;

View File

@ -165,6 +165,9 @@ int _GetFeatBonusPP(object oChar){
if(GetRacialType(oChar) == RACIAL_TYPE_KALASHTAR)
nBonusPP += GetHitDice(oChar);
if(GetRacialType(oChar) == RACIAL_TYPE_EMPTY_VESSEL)
nBonusPP += GetHitDice(oChar);
if(GetHasFeat(FEAT_ABERRANT_WARPED_MIND, oChar))
nBonusPP += GetAberrantFeatCount(oChar);

View File

@ -23901,6 +23901,7 @@ race2das\race_feat_dusklg.2da \
race2das\race_feat_dwarf.2da \
race2das\race_feat_egen.2da \
race2das\race_feat_elan.2da \
race2das\race_feat_emptyv.2da \
race2das\race_feat_extam.2da \
race2das\race_feat_feyri.2da \
race2das\race_feat_fgen.2da \

View File

@ -378,6 +378,13 @@ void main()
nStage = STAGE_SELECT_MELD; // We've got another class to go
else // We've finished everything
{
// And we're all done
if (GetLevelByClass(CLASS_TYPE_INCARNUM_BLADE, oMeldshaper))
{
DelayCommand(0.5, AssignCommand(oMeldshaper, ClearAllActions(TRUE)));
StartDynamicConversation("moi_iblade_bind", oMeldshaper, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oMeldshaper);
}
DeleteLocalInt(oMeldshaper, "FirstMeldDone");
DeleteLocalInt(oMeldshaper, "SecondMeldDone");
DeleteLocalInt(oMeldshaper, "ThirdMeldDone");

View File

@ -68,8 +68,11 @@ void main()
}
}
else if(nEvent == EVENT_ONPLAYERREST_FINISHED)
{
if(GetHighestMeldshaperLevel(oMeldshaper) == 0)
{
AssignCommand(oMeldshaper, ClearAllActions(TRUE));
StartDynamicConversation("moi_iblade_bind", oMeldshaper, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oMeldshaper);
}
}
}

View File

@ -0,0 +1,9 @@
2DA V2.0
FeatLabel FeatIndex
1 Race_Human 4715
2 SkillAff_Bluff 4753
3 NaturallyPsionic 5205
4 SA_Intimidate 4547
5 SA_Persuade 4528
6 Psionic_Focus 4818

View File

@ -8,7 +8,7 @@
4 Natural_Armor_2 4761
5 Race_Fey 4718
6 SkillAFFSearch 238
7 FEAT_HYBSIL_PASS_WO_TRACE ****
7 FEAT_HYBSIL_PASS_WO_TRACE 5381
8 FEAT_HYBSIL_MIRROR_IMAGE 5382
9 FEAT_HYBSIL_DANCLIGHTS 5383
10 FEAT_HYBSIL_JUMP 5384

View File

@ -6,5 +6,5 @@
2 SkillAff_Bluff 4753
3 NaturallyPsionic 5205
4 SA_Intimidate 4547
5 SA_Persuade 4527
5 SA_Persuade 4528
6 Psionic_Focus 4818

View File

@ -6,4 +6,5 @@
2 Listen4 4581
3 LowLightVision 354
4 ResistFire5 4743
5 WeapProfSim 46
5 Marrutact_Howl 3311
6 WeapProfSim 46

View File

@ -3,4 +3,4 @@
FeatLabel FeatIndex
0 Race_Human 4715
1 LowLightVision 354
2 CharmAnimal 5379
2 ImmunitySleep 235

View File

@ -155,7 +155,7 @@
151 Arctic_Dwarf 2 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
152 Gold_Dwarf 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
153 Gray_Dwarf 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
154 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
154 EmptyVessel 6 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
155 Urdunnir 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
156 Wild_Dwarf 2 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
157 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****

View File

@ -155,7 +155,7 @@
151 Arctic_Dwarf Ad 16826721 16826722 16826723 16826724 16826725 **** 2 4 -2 0 -2 0 2 20 7 RACE_FEAT_ARCDW 8157 1 RACIAL_TYPE_ARC_DWARF 50 7 1 dwarf **** **** **** 4 30 3 1 INT 261
152 Gold_Dwarf Gd 16826726 16826727 16826728 16826729 16826730 **** 0 0 -2 0 0 0 2 20 4 RACE_FEAT_GDWA 8157 1 RACIAL_TYPE_GOLD_DWARF 50 4 1 dwarf **** **** **** 4 30 3 1 INT 261
153 Gray_Dwarf Du 16826731 16826731 16826732 16826731 16826734 **** 0 0 0 0 -4 0 2 20 4 RACE_FEAT_DUERG 16826910 1 RACIAL_TYPE_DUERGAR 40 4 1 duergar **** **** **** 4 30 3 1 INT 261
154 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 4 30 3 1 INT ****
154 EmptyVessel Ev 16852282 16852282 16852283 16852284 16852285 **** 6 0 0 0 0 0 0 30 145 RACE_FEAT_EMPTYV 8163 1 RACIAL_TYPE_EMPTY_VESSEL 40 145 1 empty_vessel **** 1 1 4 30 3 1 INT 261
155 Urdunnir Ud 16826740 16826740 16826741 16826742 16826743 **** 0 0 0 0 -2 0 2 20 4 RACE_FEAT_URDIN 16826911 1 RACIAL_TYPE_URDINNIR 50 4 1 dwarf **** **** **** 4 30 3 1 INT 261
156 Wild_Dwarf Wd 16826744 16826745 16826746 16826747 16826748 **** 2 0 0 0 -2 0 2 20 0 RACE_FEAT_WDWARF 16826911 1 RACIAL_TYPE_WILD_DWARF 50 0 1 dwarf **** **** **** 4 30 3 1 INT 261
157 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 4 30 3 1 INT ****

View File

@ -65,6 +65,7 @@ void AddRacialRestrictions(object oItem)
AddRaceIP(oItem, RACIAL_TYPE_SUN_ELF);
AddRaceIP(oItem, RACIAL_TYPE_WILD_ELF);
AddRaceIP(oItem, RACIAL_TYPE_WOOD_ELF);
AddRaceIP(oItem, RACIAL_TYPE_GREY_ELF);
}
if(array_get_string(oItem, ARRAY_NAME, RACIAL_TYPE_FEY) != "")
{
@ -129,6 +130,7 @@ void AddRacialRestrictions(object oItem)
AddRaceIP(oItem, RACIAL_TYPE_GITHYANKI);
AddRaceIP(oItem, RACIAL_TYPE_GITHZERAI);
AddRaceIP(oItem, RACIAL_TYPE_KALASHTAR);
AddRaceIP(oItem, RACIAL_TYPE_EMPTY_VESSEL);
AddRaceIP(oItem, RACIAL_TYPE_MAENADS);
AddRaceIP(oItem, RACIAL_TYPE_SILVERBROW_HUMAN);
AddRaceIP(oItem, RACIAL_TYPE_KRINTH);

View File

@ -35,6 +35,90 @@ void DisablePowerAttack(object oPC)
}
void PRCFeat_Equip(object oPC, object oSkin, int iEquip)
{
object oItem;
int nType;
// Unequip event (iEquip == 1)
if(iEquip == 1)
{
oItem = GetItemLastUnequipped();
nType = GetBaseItemType(oItem);
// Bow Mastery - Reset bonus on unequip
if(GetHasFeat(FEAT_BOWMASTERY, oPC))
{
if(nType == BASE_ITEM_LONGBOW || nType == BASE_ITEM_SHORTBOW)
SetCompositeAttackBonus(oPC, "WeaponMasteryBow", 0);
}
// Crossbow Mastery - Reset bonus on unequip
if(GetHasFeat(FEAT_XBOWMASTERY, oPC))
{
if(nType == BASE_ITEM_LIGHTCROSSBOW || nType == BASE_ITEM_HEAVYCROSSBOW)
SetCompositeAttackBonus(oPC, "WeaponMasteryXBow", 0);
}
// Shuriken Mastery - Reset bonus on unequip
if(GetHasFeat(FEAT_SHURIKENMASTERY, oPC))
{
if(nType == BASE_ITEM_SHURIKEN)
SetCompositeAttackBonus(oPC, "WeaponMasteryShur", 0);
}
// Brutal Throw - Reset bonus on unequip for throwing weapons
if(GetHasFeat(FEAT_BRUTAL_THROW, oPC))
{
if(nType == BASE_ITEM_THROWINGAXE || nType == BASE_ITEM_SHURIKEN || nType == BASE_ITEM_DART)
SetCompositeAttackBonus(oPC, "BrutalThrow", 0);
}
}
// Equip event (iEquip == 2)
else if(iEquip == 2)
{
oItem = GetItemLastEquipped();
nType = GetBaseItemType(oItem);
// Bow Mastery - Apply bonus on equip
if(GetHasFeat(FEAT_BOWMASTERY, oPC))
{
if(nType == BASE_ITEM_LONGBOW || nType == BASE_ITEM_SHORTBOW)
SetCompositeAttackBonus(oPC, "WeaponMasteryBow", 1);
}
// Crossbow Mastery - Apply bonus on equip
if(GetHasFeat(FEAT_XBOWMASTERY, oPC))
{
if(nType == BASE_ITEM_LIGHTCROSSBOW || nType == BASE_ITEM_HEAVYCROSSBOW)
SetCompositeAttackBonus(oPC, "WeaponMasteryXBow", 1);
}
// Shuriken Mastery - Apply bonus on equip
if(GetHasFeat(FEAT_SHURIKENMASTERY, oPC))
{
if(nType == BASE_ITEM_SHURIKEN)
SetCompositeAttackBonus(oPC, "WeaponMasteryShur", 1);
}
// Brutal Throw - Apply bonus if Strength > Dexterity for throwing weapons
if(GetHasFeat(FEAT_BRUTAL_THROW, oPC))
{
if(nType == BASE_ITEM_THROWINGAXE || nType == BASE_ITEM_SHURIKEN || nType == BASE_ITEM_DART)
{
int nStrMod = GetAbilityModifier(ABILITY_STRENGTH, oPC);
int nDexMod = GetAbilityModifier(ABILITY_DEXTERITY, oPC);
if (nStrMod > nDexMod)
SetCompositeAttackBonus(oPC, "BrutalThrow", (nStrMod - nDexMod));
else
SetCompositeAttackBonus(oPC, "BrutalThrow", 0);
}
}
}
}
/* void PRCFeat_Equip(object oPC, object oSkin, int iEquip)
{
//on unequip
if(iEquip == 1)
@ -104,7 +188,8 @@ void PRCFeat_Equip(object oPC, object oSkin, int iEquip)
}
}
}
}
} */
/*
/// +2 on Intimidate and Persuade /////////
void BrandApply(object oPC ,object oSkin ,int iLevel)
@ -128,13 +213,6 @@ void EvilBrand(object oPC, object oSkin, int iEquip)
|| (GetHasFeat(FEAT_EB_NECK, oPC) && GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC) == OBJECT_INVALID)
|| (GetHasFeat(FEAT_EB_ARM, oPC)
else
BrandApply(oPC, oSkin, 0);
}

View File

@ -51021,7 +51021,7 @@ Prerequisite: Killoren
Benefit: When you are manifesting the aspect of the hunter, you can take a free action to detect all living creatures within 30 feet, even if you cannot see the creature in question. Any opponent that you cannot see still has total concealment.
Use: Selected</entry>
<entry id="58816" lang="en" sex="m">Type of Feat: Racial
Prerequisite: Kalashtar
Prerequisite: Kalashtar or Empty Vessel
Specifics: You gain one extra power point per character level.
Use: Automatic.</entry>
<entry id="58817" lang="en" sex="m">Tome of Battle Feats</entry>
@ -71371,7 +71371,23 @@ Use: Activated</entry>
<entry id="75063" lang="en" sex="m">Face-Changer Quickselect 1</entry>
<entry id="75064" lang="en" sex="m">Face-Changer Quickselect 2</entry>
<entry id="75065" lang="en" sex="m">Face-Changer Quickselect 3</entry>
<entry id="75069" lang="en" sex="m">##START NWN .35 CLASS ABBREVIATIONS ##</entry>
<entry id="75066" lang="en" sex="m">Empty Vessel</entry>
<entry id="75067" lang="en" sex="m">empty vessel</entry>
<entry id="75068" lang="en" sex="m">Empty Vessels</entry>
<entry id="75069" lang="en" sex="m">Unpossessed quori hosts, known as empty vessels, train hard for the day they receive their quori spirits. An empty vessel is taller than the average human, but lightly built, with large, almond-shaped eyes that vary in color. Common colors are black, viridian, or violet, although the eyes change color with the mood of the individual. All empty vessels have pale skin and straight hair that ranges in color from jet black to deep blue or green. By human standards, most empty vessels are strikingly handsome or beautiful, and they possess an unnatural charm and a commanding aura that helps them influence others. Most wear their hair long, and they favor ornate clothing and decorations. Humans born and raised on Sarlona to become vessels receive special training and education, and they are remarkable individuals in their own right.
Empty Vessel Ability Adjustments: None.
Favored Class (Psion): A multiclass empty vessel's psion class does not count when determining whether he suffers an XP penalty for multiclassing.
Special Abilities:
- Base movement of 30.
- Naturally Psionic (Ex): Empty vessels gain 1 extra power point per character level, regardless of whether they choose a psionic class.
- Skills: An empty vessel receives 4 extra skill points at 1st level and 1 extra skill point at each additional level.
- +2 racial bonus on Bluff, Diplomacy, and Intimidate checks. Empty vessels are masters of social interaction, influencing others through their commanding presence and subtle psychic powers.
- Bonus Feat: Empty vessels gain 1 extra feat at 1st level.
- Human: Kalashtar are considered Human for the purpose of spells.
- Level Adjustment: +1</entry>
<entry id="75070" lang="en" sex="m">UrP</entry>
<entry id="75071" lang="en" sex="m">Bnd</entry>
<entry id="75072" lang="en" sex="m">AnM</entry>
@ -72579,8 +72595,8 @@ Use: Activated</entry>
<entry id="76546" lang="en" sex="m">Dragonsong Lyrist Spellcasting (Wizard)</entry>
<entry id="76547" lang="en" sex="m">Eldritch Knight Spellcasting (Wizard)</entry>
<entry id="76548" lang="en" sex="m">Enlightened Fist Spellcasting (Wizard)</entry>
<entry id="76549" lang="en" sex="m">Eldritch Theurge Spellcasting (Wizard)</entry>
<entry id="76550" lang="en" sex="m">Elemental Savant Spellcasting (Wizard)</entry>
<entry id="76549" lang="en" sex="m">Elemental Savant Spellcasting (Wizard)</entry>
<entry id="76550" lang="en" sex="m">Eldritch Theurge Spellcasting (Wizard)</entry>
<entry id="76551" lang="en" sex="m">Force Missile Mage Spellcasting (Wizard)</entry>
<entry id="76552" lang="en" sex="m">Fochlucan Lyrist Spellcasting (Wizard)</entry>
<entry id="76553" lang="en" sex="m">Frost Mage Spellcasting (Wizard)</entry>