diff --git a/nwn/nwnprc/trunk/2das/cls_feat_mos.2da b/nwn/nwnprc/trunk/2das/cls_feat_mos.2da
index f4644d31..af67dd2b 100644
--- a/nwn/nwnprc/trunk/2das/cls_feat_mos.2da
+++ b/nwn/nwnprc/trunk/2das/cls_feat_mos.2da
@@ -60,17 +60,17 @@
56 GrSpllFcsIll 398 1 -1 0
57 GrSpllFcsNec 399 1 -1 0
58 GrSpllFcsTran 400 1 -1 0
-59 FEAT_EPIC_BLINDING_SPEED 491 0 -1 1
-60 FEAT_EPIC_SPELL_PENETRATION 618 0 -1 0
-61 FEAT_EPIC_AUTOMATIC_QUICKEN_1 857 0 -1 0
-62 FEAT_EPIC_AUTOMATIC_QUICKEN_2 858 0 -1 0
-63 FEAT_EPIC_AUTOMATIC_QUICKEN_3 859 0 -1 0
-64 FEAT_EPIC_AUTOMATIC_SILENT_SPELL_1 860 0 -1 0
-65 FEAT_EPIC_AUTOMATIC_SILENT_SPELL_2 861 0 -1 0
-66 FEAT_EPIC_AUTOMATIC_SILENT_SPELL_3 862 0 -1 0
-67 FEAT_EPIC_AUTOMATIC_STILL_SPELL_1 863 0 -1 0
-68 FEAT_EPIC_AUTOMATIC_STILL_SPELL_2 864 0 -1 0
-69 FEAT_EPIC_AUTOMATIC_STILL_SPELL_3 865 0 -1 0
+59 FEAT_EPIC_BLINDING_SPEED 491 1 -1 1
+60 FEAT_EPIC_SPELL_PENETRATION 618 1 -1 0
+61 FEAT_EPIC_AUTOMATIC_QUICKEN_1 857 1 -1 0
+62 FEAT_EPIC_AUTOMATIC_QUICKEN_2 858 1 -1 0
+63 FEAT_EPIC_AUTOMATIC_QUICKEN_3 859 1 -1 0
+64 FEAT_EPIC_AUTOMATIC_SILENT_SPELL_1 860 1 -1 0
+65 FEAT_EPIC_AUTOMATIC_SILENT_SPELL_2 861 1 -1 0
+66 FEAT_EPIC_AUTOMATIC_SILENT_SPELL_3 862 1 -1 0
+67 FEAT_EPIC_AUTOMATIC_STILL_SPELL_1 863 1 -1 0
+68 FEAT_EPIC_AUTOMATIC_STILL_SPELL_2 864 1 -1 0
+69 FEAT_EPIC_AUTOMATIC_STILL_SPELL_3 865 1 -1 0
70 FEAT_EPIC_SPELL_FOCUS_ABJURATION 610 1 -1 0
71 FEAT_EPIC_SPELL_FOCUS_CONJURATION 611 1 -1 0
72 FEAT_EPIC_SPELL_FOCUS_DIVINATION 612 1 -1 0
@@ -100,12 +100,12 @@
96 FocusedSpellPenetrNec 3133 1 -1 0
97 FocusedSpellPenetrTra 3134 1 -1 0
98 FocusedSpellPenetrAbj 3135 1 -1 0
-99 FEAT_EPIC_DIVINE_VIGOR 3115 0 -1 1
+99 FEAT_EPIC_DIVINE_VIGOR 3115 1 -1 1
100 FEAT_DIVINE_VIGOR 3116 0 -1 1
101 FEAT_DIVINE_RESISTANCE 3117 0 -1 1
102 FEAT_DIVINE_CLEANSING 3118 0 -1 1
-103 FEAT_EPIC_DIVINE_RESISTANCE 3119 0 -1 1
-104 FEAT_EPIC_DIVINE_MIGHT 3120 0 -1 1
+103 FEAT_EPIC_DIVINE_RESISTANCE 3119 1 -1 1
+104 FEAT_EPIC_DIVINE_MIGHT 3120 1 -1 1
105 FEAT_INVOKE_DIVINE_WRATH 3114 0 -1 1
106 FEAT_DIVINE_VENGEANCE 3142 0 -1 1
107 Bane_Magic_Aberration 23556 0 -1 0
diff --git a/nwn/nwnprc/trunk/2das/cls_feat_ooze.2da b/nwn/nwnprc/trunk/2das/cls_feat_ooze.2da
index 24b8af94..04b88663 100644
--- a/nwn/nwnprc/trunk/2das/cls_feat_ooze.2da
+++ b/nwn/nwnprc/trunk/2das/cls_feat_ooze.2da
@@ -96,25 +96,25 @@
92 GrSpllFcsNec 399 1 10 0
93 GrSpllFcsTran 400 1 10 0
94 GreatSpellPen 38 1 10 0
-95 FEAT_EPIC_SPELL_FOCUS_ABJURATION 43 1 10 0
-96 FEAT_EPIC_SPELL_FOCUS_CONJURATION 44 1 10 0
-97 FEAT_EPIC_SPELL_FOCUS_DIVINATION 45 1 10 0
-98 FEAT_EPIC_SPELL_FOCUS_ENCHANTMENT 46 1 10 0
-99 FEAT_EPIC_SPELL_FOCUS_EVOCATION 47 1 10 0
-100 FEAT_EPIC_SPELL_FOCUS_ILLUSION 48 1 10 0
-101 FEAT_EPIC_SPELL_FOCUS_NECROMANCY 49 1 10 0
-102 FEAT_EPIC_SPELL_FOCUS_TRANSMUTATION 50 1 10 0
-103 FEAT_EPIC_SPELL_PENETRATION 51 1 10 0
-104 FEAT_EPIC_IMPROVED_COMBAT_CASTING 52 1 10 0
-105 FocusedSpellPenetrCon 103 1 10 0
-106 FocusedSpellPenetrDiv 104 1 10 0
-107 FocusedSpellPenetrEnc 105 1 10 0
-108 FocusedSpellPenetrEvo 106 1 10 0
-109 FocusedSpellPenetrIll 107 1 10 0
-110 FocusedSpellPenetrNec 108 1 10 0
-111 FocusedSpellPenetrTra 109 1 10 0
-112 FocusedSpellPenetrAbj 110 1 10 0
-113 FEAT_TENACIOUSMAGIC 111 1 10 0
+95 FEAT_EPIC_SPELL_FOCUS_ABJURATION 610 1 10 0
+96 FEAT_EPIC_SPELL_FOCUS_CONJURATION 611 1 10 0
+97 FEAT_EPIC_SPELL_FOCUS_DIVINATION 612 1 10 0
+98 FEAT_EPIC_SPELL_FOCUS_ENCHANTMENT 613 1 10 0
+99 FEAT_EPIC_SPELL_FOCUS_EVOCATION 614 1 10 0
+100 FEAT_EPIC_SPELL_FOCUS_ILLUSION 615 1 10 0
+101 FEAT_EPIC_SPELL_FOCUS_NECROMANCY 616 1 10 0
+102 FEAT_EPIC_SPELL_FOCUS_TRANSMUTATION 617 1 10 0
+103 FEAT_EPIC_SPELL_PENETRATION 618 1 10 0
+104 FEAT_EPIC_IMPROVED_COMBAT_CASTING 696 1 10 0
+105 FocusedSpellPenetrAbj 3128 1 10 0
+106 FocusedSpellPenetrCon 3129 1 10 0
+107 FocusedSpellPenetrDiv 3130 1 10 0
+108 FocusedSpellPenetrEnch 3131 1 10 0
+109 FocusedSpellPenetrEvo 3132 1 10 0
+110 FocusedSpellPenetrIll 3133 1 10 0
+111 FocusedSpellPenetrNec 3134 1 10 0
+112 FocusedSpellPenetrTra 3135 1 10 0
+113 FEAT_TENACIOUSMAGIC 2961 1 10 0
114 FEAT_EPIC_GREAT_CONSTITUTION_1 774 1 10 0
115 FEAT_EPIC_GREAT_CONSTITUTION_2 775 1 10 0
116 FEAT_EPIC_GREAT_CONSTITUTION_3 776 1 10 0
diff --git a/nwn/nwnprc/trunk/2das/feat.2da b/nwn/nwnprc/trunk/2das/feat.2da
index e2c069f1..b5c2d57d 100644
--- a/nwn/nwnprc/trunk/2das/feat.2da
+++ b/nwn/nwnprc/trunk/2das/feat.2da
@@ -4314,7 +4314,7 @@
4310 FREBZK_IMPROVED_POWER_ATTACK 16824236 16824237 ife_s_powatt **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** 4311 0 **** **** **** **** **** **** **** **** **** **** **** **** FREBZK_IMPROVED_POWER_ATTACK 6 **** **** **** **** **** 0 0
4311 SUPREME_POWER_ATTACK 16824227 16824228 ife_s_powatt **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SUPREME_POWER_ATTACK 6 **** **** **** **** **** 0 0
4312 INTIMIDATING_RAGE 16824225 16824226 ife_rage **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** **** **** 293 **** **** **** **** **** **** **** **** FEAT_INTIMIDATING_RAGE 5 **** **** **** **** **** 0 1
-4313 REMAIN_CONSCIOUS 16824229 16824230 ife_remcon 2 **** **** **** **** **** **** **** 22 40 0 0 1 0 1 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_REMAIN_CONSCIOUS 1 **** **** **** **** **** 0 1
+4313 REMAIN_CONSCIOUS 16824229 16824230 ife_remcon 2 **** **** **** **** **** **** **** 22 40 0 0 0 0 1 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_REMAIN_CONSCIOUS 1 **** **** **** **** **** 0 1
4314 DEATHLESS_FRENZY 16824231 16824232 ife_endfre **** **** **** **** **** **** **** **** **** **** 0 0 0 0 1 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_DEATHLESS_FRENZY 1 **** **** **** **** **** 0 1
4315 GREATER_TWO_WEAPON_FIGHTING 16824246 16824247 ife_gtwo_wep 15 **** **** **** **** **** **** **** 20 **** 0 0 1 **** 1 **** 4316 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_GREATER_TWO_WEAPON_FIGHTING 6 **** **** **** **** **** 0 1
4316 SUPREME_TWO_WEAPON_FIGHTING 16824248 16824249 ife_gtwo_wep **** **** **** **** **** **** **** **** **** **** 0 0 0 **** 1 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SUPREME_TWO_WEAPON_FIGHTING 6 **** **** **** **** **** 0 1
@@ -5288,7 +5288,7 @@
5284 InlindlSchool 16834993 16834994 ife_X2DCrtWhip **** **** **** 13 **** **** **** **** 389 42 **** **** 1 **** **** 2723 **** **** -1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_INLINDL_SCHOOL 2 **** **** **** **** **** 0 0
5285 VaeSchool 16834991 16834992 ife_X2WpCh 7 **** **** **** **** **** **** **** 2807 993 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SNAP_KICK **** **** **** **** **** **** **** 0
5286 ThreeMountains 16834989 16834990 ife_X2DiviWrth **** 13 **** **** **** **** **** **** 2806 6 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SNAP_KICK **** **** **** **** **** **** **** 0
-5287 SpinningHalberd 16834987 16834988 ife_X2CritDHalb **** **** **** **** **** **** **** **** 112 41 0 0 1 **** **** 2724 **** 0.5 -1 **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
+5287 SpinningHalberd 16834987 16834988 ife_X2CritDHalb **** **** **** **** **** **** **** **** 112 **** 0 0 1 **** **** 2724 **** 0.5 -1 **** **** 41 374 **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
5288 HighSwordLowAxe 16834985 16834986 ife_wepspec_Dax **** **** **** **** **** **** **** **** 2807 41 0 0 1 **** **** 2793 **** 0.5 -1 **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
5289 HammersEdge 16834983 16834984 ife_X2WSBSwd **** 15 **** **** **** **** **** **** 2806 41 0 0 1 **** **** 2792 **** 0.5 -1 **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
5290 AnvilofThunder 16834981 16834982 ife_X2CritDWHam **** 13 **** **** **** **** **** **** 28 41 0 0 1 **** **** 2791 **** 0.5 -1 **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
diff --git a/nwn/nwnprc/trunk/include/prc_inc_clsfunc.nss b/nwn/nwnprc/trunk/include/prc_inc_clsfunc.nss
index bca981aa..3a6c2517 100644
--- a/nwn/nwnprc/trunk/include/prc_inc_clsfunc.nss
+++ b/nwn/nwnprc/trunk/include/prc_inc_clsfunc.nss
@@ -1678,6 +1678,8 @@ int GetPhobiaRace(int nPhobia)
case 14: return RACIAL_TYPE_SHAPECHANGER;
case 15: return RACIAL_TYPE_UNDEAD;
case 16: return RACIAL_TYPE_VERMIN;
+ case 17: return RACIAL_TYPE_OOZE;
+ case 18: return RACIAL_TYPE_PLANT;
}
return -1;//error
}
diff --git a/nwn/nwnprc/trunk/scripts/prc_alienist.nss b/nwn/nwnprc/trunk/scripts/prc_alienist.nss
index 738149a7..e3448f02 100644
--- a/nwn/nwnprc/trunk/scripts/prc_alienist.nss
+++ b/nwn/nwnprc/trunk/scripts/prc_alienist.nss
@@ -37,11 +37,11 @@ void main()
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ELECTRICAL,IP_CONST_DAMAGERESIST_20), oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1,IP_CONST_DAMAGESOAK_20_HP), oSkin);
- AddEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, "prc_alienist", TRUE, FALSE);
- AddEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, "prc_alienist", TRUE, FALSE);
+/* AddEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, "prc_alienist", TRUE, FALSE);
+ AddEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, "prc_alienist", TRUE, FALSE); */
}
}
- else if(nEvent == EVENT_ONPLAYERUNEQUIPITEM)
+/* else if(nEvent == EVENT_ONPLAYERUNEQUIPITEM)
{
object oItem = GetItemLastUnequipped();
if(GetBaseItemType(oItem) != BASE_ITEM_HELMET)
@@ -70,5 +70,5 @@ void main()
SetCompositeBonus(oSkin, "Trans_persuade", 0, ITEM_PROPERTY_SKILL_BONUS, SKILL_PERSUADE);
SetCompositeBonus(oSkin, "Trans_umd", 0, ITEM_PROPERTY_SKILL_BONUS, SKILL_USE_MAGIC_DEVICE);
SetCompositeBonus(oSkin, "Trans_iaijutsu", 0, ITEM_PROPERTY_SKILL_BONUS, SKILL_IAIJUTSU_FOCUS);
- }
+ } */
}
\ No newline at end of file
diff --git a/nwn/nwnprc/trunk/scripts/prc_feats.nss b/nwn/nwnprc/trunk/scripts/prc_feats.nss
index b8859989..e651ca50 100644
--- a/nwn/nwnprc/trunk/scripts/prc_feats.nss
+++ b/nwn/nwnprc/trunk/scripts/prc_feats.nss
@@ -515,7 +515,25 @@ void PRCFeat_AddMagicalBonuses(object oPC, object oSkin)
{
int nPenalty = GetHasFeat(FEAT_INSANE_CERTAINTY, oPC) ? 6 : 2;
int nRace = GetPhobiaRace(GetPhobia(oPC));
- effect ePhob = EffectSavingThrowDecrease(SAVING_THROW_TYPE_ALL, nPenalty);
+
+ effect ePhobia;
+ ePhobia = VersusRacialTypeEffect(EffectSkillDecrease(nPenalty, SKILL_INTIMIDATE), nRace);
+ ePhobia = EffectLinkEffects(ePhobia, VersusRacialTypeEffect(EffectSkillDecrease(nPenalty, SKILL_ANIMAL_EMPATHY), nRace));
+ ePhobia = EffectLinkEffects(ePhobia, VersusRacialTypeEffect(EffectSkillDecrease(nPenalty, SKILL_BLUFF), nRace));
+ ePhobia = EffectLinkEffects(ePhobia, VersusRacialTypeEffect(EffectSkillDecrease(nPenalty, SKILL_INTIMIDATE), nRace));
+ ePhobia = EffectLinkEffects(ePhobia, VersusRacialTypeEffect(EffectSkillDecrease(nPenalty, SKILL_PERFORM), nRace));
+ ePhobia = EffectLinkEffects(ePhobia, VersusRacialTypeEffect(EffectSkillDecrease(nPenalty, SKILL_PERSUADE), nRace));
+ ePhobia = EffectLinkEffects(ePhobia, VersusRacialTypeEffect(EffectSkillDecrease(nPenalty, SKILL_USE_MAGIC_DEVICE), nRace));
+ ePhobia = EffectLinkEffects(ePhobia, VersusRacialTypeEffect(EffectSkillDecrease(nPenalty, SKILL_IAIJUTSU_FOCUS), nRace));
+ ePhobia = EffectLinkEffects(ePhobia, VersusRacialTypeEffect(EffectSavingThrowDecrease(SAVING_THROW_TYPE_ALL, nPenalty), nRace));
+ ePhobia = EffectLinkEffects(ePhobia, VersusRacialTypeEffect(EffectAttackDecrease(nPenalty), nRace));
+ ePhobia = TagEffect(ePhobia, "ALIENIST_PHOBIA");
+ ePhobia = UnyieldingEffect(ePhobia);
+
+ eFeat = EffectLinkEffects(eFeat, ePhobia);
+
+
+/* effect ePhob = EffectSavingThrowDecrease(SAVING_THROW_TYPE_ALL, nPenalty);
ePhob = EffectLinkEffects(ePhob, EffectAttackDecrease(nPenalty));
ePhob = EffectLinkEffects(ePhob, EffectSkillDecrease(SKILL_ANIMAL_EMPATHY, nPenalty));
ePhob = EffectLinkEffects(ePhob, EffectSkillDecrease(SKILL_INTIMIDATE, nPenalty));
@@ -524,8 +542,9 @@ void PRCFeat_AddMagicalBonuses(object oPC, object oSkin)
ePhob = EffectLinkEffects(ePhob, EffectSkillDecrease(SKILL_USE_MAGIC_DEVICE, nPenalty));
ePhob = EffectLinkEffects(ePhob, EffectSkillDecrease(SKILL_IAIJUTSU_FOCUS, nPenalty));
ePhob = VersusRacialTypeEffect(ePhob, nRace);
- eFeat = EffectLinkEffects(eFeat, ePhob);
- }
+ eFeat = EffectLinkEffects(eFeat, ePhob); */
+ }
+
if(GetHasFeat(FEAT_SH_IMMUNITY_ABILITY_DECREASE, oPC) && !GetHasFeat(FEAT_SH_IMMUNITY_LEVEL_DRAIN))
eFeat = EffectLinkEffects(eFeat, EffectImmunity(IMMUNITY_TYPE_ABILITY_DECREASE));
if(GetHasFeat(FEAT_SH_IMMUNITY_DISEASE, oPC))//skullclan hunter gets protection from evil at this level
diff --git a/nwn/nwnprc/trunk/scripts/prc_oozemstr.nss b/nwn/nwnprc/trunk/scripts/prc_oozemstr.nss
index ca62b3a9..79709e33 100644
--- a/nwn/nwnprc/trunk/scripts/prc_oozemstr.nss
+++ b/nwn/nwnprc/trunk/scripts/prc_oozemstr.nss
@@ -8,10 +8,7 @@
//:: Created By: DarkGod (Modified by Aaon Graywolf)
//:: Created On: Jan 7, 2004
//:://////////////////////////////////////////////
-
-#include "prc_class_const"
-#include "prc_feat_const"
-#include "inc_item_props"
+#include "prc_inc_spells"
// * Applies the Oozemasters's immunities on the object's skin.
// * iType = IP_CONST_IMMUNITYMISC_*
@@ -38,24 +35,60 @@ void OozemasterCharismaPenatly(object oPC, object oSkin)
void main()
{
//Declare main variables.
- object oPC = OBJECT_SELF;
+ int nEvent = GetRunningEvent();
+ object oPC;
+ switch(nEvent)
+ {
+ case EVENT_ONHEARTBEAT: oPC = OBJECT_SELF; break;
+
+ default:
+ oPC = OBJECT_SELF;
+ }
object oSkin = GetPCSkin(oPC);
+
+ AddEventScript(oPC, EVENT_ONHEARTBEAT, "prc_oozemstr", TRUE, FALSE);
//Determine which Oozemaster feats the character has
int bIdAnat = GetHasFeat(FEAT_INDISCERNIBLE_ANATOMY, oPC);
int bChaPen = GetHasFeat(FEAT_CHARISMA_PENALITY, oPC);
int bOneOz = GetHasFeat(FEAT_ONE_WITH_THE_OOZE, oPC);
- //Apply bonuses accordingly
- if(bIdAnat){
+ int nClass = GetLevelByClass(CLASS_TYPE_OOZEMASTER, oPC);
+
+ if(nEvent == EVENT_ONHEARTBEAT)
+ {
+ //Apply bonuses accordingly
+ if(bIdAnat)
+ {
+ if (nClass > 5 && nClass < 10)
+ {
+ int bFortification = GetLocalInt(oPC, "LIGHT_FORTIFCATION_ACTIVE");
+
+ if (!bFortification)
+ {
+ DoFortification(oPC, FORTIFICATION_LIGHT);
+ SetLocalInt(oPC, "LIGHT_FORTIFCATION_ACTIVE", 1);
+ if(DEBUG) DoDebug("prc_oozemstr >> DoFortification() activated.");
+ }
+ }
+ }
+
+/* if(bIdAnat){
OozemasterImmunity(oPC, oSkin, IP_CONST_IMMUNITYMISC_CRITICAL_HITS, "IndiscernibleCrit");
OozemasterImmunity(oPC, oSkin, IP_CONST_IMMUNITYMISC_BACKSTAB, "IndiscernibleBS");
}
-
- if(bOneOz){
- OozemasterImmunity(oPC, oSkin, IP_CONST_IMMUNITYMISC_MINDSPELLS, "OneOozeMind");
- OozemasterImmunity(oPC, oSkin, IP_CONST_IMMUNITYMISC_POISON, "OneOozePoison");
- OozemasterImmunity(oPC, oSkin, IP_CONST_IMMUNITYMISC_PARALYSIS, "OneOozePoison");
- }
+ */
+ }
+ else
+ {
+ if(bOneOz)
+ {
+ OozemasterImmunity(oPC, oSkin, IP_CONST_IMMUNITYMISC_MINDSPELLS, "OneOozeMind");
+ OozemasterImmunity(oPC, oSkin, IP_CONST_IMMUNITYMISC_POISON, "OneOozePoison");
+ OozemasterImmunity(oPC, oSkin, IP_CONST_IMMUNITYMISC_PARALYSIS, "OneOozePoison");
+ OozemasterImmunity(oPC, oSkin, IP_CONST_IMMUNITYMISC_CRITICAL_HITS, "IndiscernibleCrit");
+ OozemasterImmunity(oPC, oSkin, IP_CONST_IMMUNITYMISC_BACKSTAB, "IndiscernibleBS");
+ }
//if(bChaPen) OozemasterCharismaPenatly(oPC, oSkin);
-}
+ }
+}
\ No newline at end of file
diff --git a/nwn/nwnprc/trunk/spells/sp_enred.nss b/nwn/nwnprc/trunk/spells/sp_enred.nss
index 3d23268c..9881cc68 100644
--- a/nwn/nwnprc/trunk/spells/sp_enred.nss
+++ b/nwn/nwnprc/trunk/spells/sp_enred.nss
@@ -66,6 +66,29 @@
#include "prc_inc_function"
#include "prc_add_spell_dc"
+void ResetSize(object oTarget)
+{
+ SetObjectVisualTransform(oTarget, OBJECT_VISUAL_TRANSFORM_SCALE, 1.0f);
+
+ // Remove opposing size effect
+ effect eEffect = GetFirstEffect(oTarget);
+ while (GetIsEffectValid(eEffect))
+ {
+ string sTag = GetEffectTag(eEffect);
+ if(sTag == "ARCANE_SIZE_INCREASE")
+ {
+ RemoveEffect(oTarget, eEffect);
+ DeleteLocalInt(oTarget, "PRC_Power_Expansion_SizeIncrease");
+ }
+ if (sTag == "ARCANE_SIZE_DECREASE")
+ {
+ RemoveEffect(oTarget, eEffect);
+ DeleteLocalInt(oTarget, "PRC_Power_Compression_SizeReduction");
+ }
+ eEffect = GetNextEffect(oTarget);
+ }
+}
+
void DispelMonitor(object oCaster, object oTarget, int nSpellID, int nBeatsRemaining)
{
// Has the power ended since the last beat, or does the duration run out now
@@ -79,6 +102,19 @@ void DispelMonitor(object oCaster, object oTarget, int nSpellID, int nBeatsRemai
DeleteLocalInt(oTarget, "PRC_Power_Expansion_SizeIncrease");
DeleteLocalInt(oTarget, "PRC_Power_Compression_SizeReduction");
+ // Remove opposing size effect
+ effect eEffect = GetFirstEffect(oTarget);
+ while (GetIsEffectValid(eEffect))
+ {
+ string sTag = GetEffectTag(eEffect);
+ if ((sTag == "ARCANE_SIZE_DECREASE") ||
+ (sTag == "ARCANE_SIZE_INCREASE"))
+ {
+ RemoveEffect(oTarget, eEffect);
+ }
+ eEffect = GetNextEffect(oTarget);
+ }
+
// Size has changed, evaluate PrC feats again
EvalPRCFeats(oTarget);
}
@@ -88,80 +124,200 @@ void DispelMonitor(object oCaster, object oTarget, int nSpellID, int nBeatsRemai
void main()
{
- object oCaster = OBJECT_SELF;
- int nCasterLevel = PRCGetCasterLevel(oCaster);
- int nSpellID = PRCGetSpellId();
- PRCSetSchool(GetSpellSchool(nSpellID));
- if (!X2PreSpellCastCode()) return;
- object oTarget = PRCGetSpellTargetObject();
- int nMetaMagic = PRCGetMetaMagicFeat();
- int nSaveDC = PRCGetSaveDC(oTarget, oCaster);
- int nPenetr = nCasterLevel + SPGetPenetr();
- float fDuration = 60.0 * nCasterLevel; //modify if necessary
- if(nMetaMagic & METAMAGIC_EXTEND) fDuration *= 2;
+ //Declare main variables.
+ int nEvent = GetRunningEvent();
+ object oCaster;
+ switch(nEvent)
+ {
+ case EVENT_ONPLAYERREST_STARTED: oCaster = GetLastBeingRested(); break;
- int bMass = ((nSpellID == SPELL_ENLARGE_PERSON_MASS) ||
- (nSpellID == SPELL_REDUCE_PERSON_MASS))
- ;
- int bEnlarge = ((nSpellID == SPELL_ENLARGE_PERSON) ||
- (nSpellID == SPELL_ENLARGE_PERSON_MASS))
- ;
- effect eLink;
- eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_SANCTUARY));
- eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
- if (bEnlarge)
- {
- eLink = EffectLinkEffects(eLink, EffectAttackDecrease(1));
- eLink = EffectLinkEffects(eLink, EffectAbilityDecrease(ABILITY_DEXTERITY, 2));
- eLink = EffectLinkEffects(eLink, EffectAbilityIncrease(ABILITY_STRENGTH, 2));
- eLink = EffectLinkEffects(eLink, EffectACDecrease(1));
- }
- else
- {
- eLink = EffectLinkEffects(eLink, EffectAttackIncrease(1));
- eLink = EffectLinkEffects(eLink, EffectAbilityIncrease(ABILITY_DEXTERITY, 2));
- eLink = EffectLinkEffects(eLink, EffectAbilityDecrease(ABILITY_STRENGTH, 2));
- eLink = EffectLinkEffects(eLink, EffectACIncrease(1));
+ default:
+ oCaster = OBJECT_SELF;
}
- int nRacial, bApply, bRace;
+ if(nEvent == EVENT_ONPLAYERREST_STARTED)
+ {
+ ResetSize(oCaster);
+ }
+ else if(nEvent == FALSE)
+ {
+ int nCasterLevel = PRCGetCasterLevel(oCaster);
+ int nSpellID = PRCGetSpellId();
+ PRCSetSchool(GetSpellSchool(nSpellID));
+ if (!X2PreSpellCastCode()) return;
+ object oTarget = PRCGetSpellTargetObject();
+ int nMetaMagic = PRCGetMetaMagicFeat();
+ int nSaveDC = PRCGetSaveDC(oTarget, oCaster);
+ int nPenetr = nCasterLevel + SPGetPenetr();
+ float fDuration = 60.0 * nCasterLevel; //modify if necessary
+ if(nMetaMagic & METAMAGIC_EXTEND) fDuration *= 2;
- if(nMetaMagic & METAMAGIC_EXTEND) fDuration *= 2;
- location lTarget;
- if(bMass)
- {
- lTarget = PRCGetSpellTargetLocation();
- object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
- }
- while(GetIsObjectValid(oTarget))
- {
- if (PRCAmIAHumanoid(oTarget))
- {
- if(spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, oCaster))
- {
- SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, nSpellID, nCasterLevel);
- if(bEnlarge)
- SetLocalInt(oTarget, "PRC_Power_Expansion_SizeIncrease", 1);
- else
- SetLocalInt(oTarget, "PRC_Power_Compression_SizeReduction", 1);
- EvalPRCFeats(oTarget);
- DelayCommand(6.0f, DispelMonitor(oCaster, oTarget, nSpellID, FloatToInt(fDuration) / 6));
- }
- else if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC))
- {
- SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, nSpellID, nCasterLevel);
- if(bEnlarge)
- SetLocalInt(oTarget, "PRC_Power_Expansion_SizeIncrease", 1);
- else
- SetLocalInt(oTarget, "PRC_Power_Compression_SizeReduction", 1);
- EvalPRCFeats(oTarget);
- DelayCommand(6.0f, DispelMonitor(oCaster, oTarget, nSpellID, FloatToInt(fDuration) / 6));
- }
- }
- if(!bMass) break;
- oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
- }
+ int bMass = ((nSpellID == SPELL_ENLARGE_PERSON_MASS) ||
+ (nSpellID == SPELL_REDUCE_PERSON_MASS));
+
+ int bEnlarge = ((nSpellID == SPELL_ENLARGE_PERSON) ||
+ (nSpellID == SPELL_ENLARGE_PERSON_MASS));
+
+ effect eLink;
+ eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_SANCTUARY));
+ eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
+ if (bEnlarge)
+ {
+ eLink = EffectLinkEffects(eLink, EffectAttackDecrease(1));
+ eLink = EffectLinkEffects(eLink, EffectAbilityDecrease(ABILITY_DEXTERITY, 2));
+ eLink = EffectLinkEffects(eLink, EffectAbilityIncrease(ABILITY_STRENGTH, 2));
+ eLink = EffectLinkEffects(eLink, EffectACDecrease(1));
+ eLink = TagEffect(eLink, "ARCANE_SIZE_INCREASE");
+ }
+ else
+ {
+ eLink = EffectLinkEffects(eLink, EffectAttackIncrease(1));
+ eLink = EffectLinkEffects(eLink, EffectAbilityIncrease(ABILITY_DEXTERITY, 2));
+ eLink = EffectLinkEffects(eLink, EffectAbilityDecrease(ABILITY_STRENGTH, 2));
+ eLink = EffectLinkEffects(eLink, EffectACIncrease(1));
+ eLink = TagEffect(eLink, "ARCANE_SIZE_DECREASE");
+ }
+
+ int nRacial, bApply, bRace;
+
+ AddEventScript(oTarget, EVENT_ONPLAYERREST_STARTED, "sp_enred", TRUE, FALSE);
+
+ if(nMetaMagic & METAMAGIC_EXTEND) fDuration *= 2;
+ location lTarget;
+ if(bMass)
+ {
+ lTarget = PRCGetSpellTargetLocation();
+ object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
+ }
+ while(GetIsObjectValid(oTarget))
+ {
+ if (PRCAmIAHumanoid(oTarget))
+ {
+ if(spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, oCaster))
+ {
+ if(bEnlarge)
+ {
+ if(GetLocalInt(oTarget, "PRC_Power_Compression_SizeReduction"))
+ {
+ // Remove opposing size effect
+ effect eEffect = GetFirstEffect(oTarget);
+ while (GetIsEffectValid(eEffect))
+ {
+ string sTag = GetEffectTag(eEffect);
+ if (sTag == "ARCANE_SIZE_DECREASE")
+ {
+ RemoveEffect(oTarget, eEffect);
+ DelayCommand(0.0f, ResetSize(oTarget));
+ }
+ eEffect = GetNextEffect(oTarget);
+ }
+ }
+ else if(GetLocalInt(oTarget, "PRC_Power_Expansion_SizeIncrease"))
+ {
+ FloatingTextStringOnCreature("This creature's size cannot be increased further.", oTarget);
+ }
+ else
+ {
+ SetLocalInt(oTarget, "PRC_Power_Expansion_SizeIncrease", 1);
+ SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, nSpellID, nCasterLevel);
+ SetObjectVisualTransform(oTarget, OBJECT_VISUAL_TRANSFORM_SCALE, 1.5);
+ DelayCommand(fDuration, ResetSize(oTarget));
+ }
+ }
+ else
+ {
+ if(GetLocalInt(oTarget, "PRC_Power_Expansion_SizeIncrease"))
+ {
+ // Remove opposing size effect
+ effect eEffect = GetFirstEffect(oTarget);
+ while (GetIsEffectValid(eEffect))
+ {
+ string sTag = GetEffectTag(eEffect);
+ if (sTag == "ARCANE_SIZE_INCREASE")
+ {
+ RemoveEffect(oTarget, eEffect);
+ DelayCommand(0.0f, ResetSize(oTarget));
+ }
+ eEffect = GetNextEffect(oTarget);
+ }
+ }
+ else if(GetLocalInt(oTarget, "PRC_Power_Compression_SizeReduction"))
+ {
+ FloatingTextStringOnCreature("This creature's size cannot be decreased further.", oTarget);
+ }
+ else
+ {
+ SetLocalInt(oTarget, "PRC_Power_Compression_SizeReduction", 1);
+ SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, nSpellID, nCasterLevel);
+ SetObjectVisualTransform(oTarget, OBJECT_VISUAL_TRANSFORM_SCALE, 0.5);
+ DelayCommand(fDuration, ResetSize(oTarget));
+ }
+
+ EvalPRCFeats(oTarget);
+ DelayCommand(6.0f, DispelMonitor(oCaster, oTarget, nSpellID, FloatToInt(fDuration) / 6));
+ }
+ }
+ else if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC))
+ {
+ if(bEnlarge)
+ {
+ if(GetLocalInt(oTarget, "PRC_Power_Compression_SizeReduction"))
+ {
+ // Remove opposing size effect
+ effect eEffect = GetFirstEffect(oTarget);
+ while (GetIsEffectValid(eEffect))
+ {
+ string sTag = GetEffectTag(eEffect);
+ if (sTag == "ARCANE_SIZE_DECREASE")
+ {
+ RemoveEffect(oTarget, eEffect);
+ DelayCommand(0.0f, ResetSize(oTarget));
+ }
+ eEffect = GetNextEffect(oTarget);
+ }
+ }
+ else
+ {
+ SetLocalInt(oTarget, "PRC_Power_Expansion_SizeIncrease", 1);
+ SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, nSpellID, nCasterLevel);
+ SetObjectVisualTransform(oTarget, OBJECT_VISUAL_TRANSFORM_SCALE, 1.5);
+ DelayCommand(fDuration, ResetSize(oTarget));
+ }
+ }
+ else
+ {
+ if(GetLocalInt(oTarget, "PRC_Power_Expansion_SizeIncrease"))
+ {
+ // Remove opposing size effect
+ effect eEffect = GetFirstEffect(oTarget);
+ while (GetIsEffectValid(eEffect))
+ {
+ string sTag = GetEffectTag(eEffect);
+ if (sTag == "ARCANE_SIZE_INCREASE")
+ {
+ RemoveEffect(oTarget, eEffect);
+ DelayCommand(0.0f, ResetSize(oTarget));
+ }
+ eEffect = GetNextEffect(oTarget);
+ }
+ }
+ else
+ {
+ SetLocalInt(oTarget, "PRC_Power_Compression_SizeReduction", 1);
+ SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, nSpellID, nCasterLevel);
+ SetObjectVisualTransform(oTarget, OBJECT_VISUAL_TRANSFORM_SCALE, 1.5);
+ DelayCommand(fDuration, ResetSize(oTarget));
+ }
+ }
+
+ EvalPRCFeats(oTarget);
+ DelayCommand(6.0f, DispelMonitor(oCaster, oTarget, nSpellID, FloatToInt(fDuration) / 6));
+ }
+ }
+ if(!bMass) break;
+ oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
+ }
+ }
PRCSetSchool();
-}
-
+}
\ No newline at end of file
diff --git a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk
index dbac5f1f..513504e1 100644
Binary files a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk and b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk differ
diff --git a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml
index d0c0669b..772d3941 100644
--- a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml
+++ b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml
@@ -5048,7 +5048,7 @@ Use: Selected.
grey elves
Gray elves are the most noble and regal of all elves. Taller and grander in physical appearance than others of their race, gray elves have a reputation for being aloof and arrogant (even by elven standards). They certainly are more reclusive than high elves, living in isolated mountain citadels and allowing entry only to a select few outsiders. They have either silver hair and amber eyes or pale golden hair and violet eyes. They prefer clothing of white, silver, yellow, or gold, with cloaks of deep blue or purple.
- +2 Dexterity, +2 Intelligence, –2 Strength, –2 Constitution.
+ +2 Dexterity, +2 Intelligence, -–2 Strength, -–2 Constitution.
Medium: As Medium creatures, gray elves have no special bonuses or penalties due to their size.
@@ -16785,7 +16785,7 @@ Martial arts students face a bewildering array of martial arts schools, each wit
- Hit Die: d8
- Proficiencies: The Drunken Master gains no proficiencies in weapons or armor.
-- Skill Points: 4 + Int modifier.
+- Skill Points: 4+ Int modifier.
REQUIREMENTS:
@@ -26177,7 +26177,7 @@ Warlocks are born, not made. Their ancestors traded portions of their soul for
- Hit Die: d6
- Proficiencies: Warlocks are proficient with simple weapons and light armor.
-- Skill Points: 2 + Int Modifier
+- Skill Points: 2+ Int Modifier
CLASS FEATURES:
@@ -44226,7 +44226,7 @@ Use: Automatic.
Hands of the Winged Masters
hand of the winged masters
(PRESTIGE CLASS)
-Dragons often need expert servants to be their eyes, ears, and hands in humanoid society. A hand of the winged masters has dedicated his life to the service of a single dragon or to a group of dragons united in a common cause. A dragon mater becomes the political and spiritual leader for the hands, gaining their total loyalty. This services rises above obedience to country, church, family, or friends. Usually, the hands act as spies and informants, but when needed, they can also be saboteurs and killers.
+Dragons often need expert servants to be their eyes, ears, and hands in humanoid society. A hand of the winged masters has dedicated his life to the service of a single dragon or to a group of dragons united in a common cause. A dragon master becomes the political and spiritual leader for the hands, gaining their total loyalty. This services rises above obedience to country, church, family, or friends. Usually, the hands act as spies and informants, but when needed, they can also be saboteurs and killers.
- Hit Die: d8
- Proficiencies: A Hand of the Winged Masters gains no additional weapon or armor proficiencies.
@@ -47769,7 +47769,7 @@ Use: Automatic
Special attack creature weapon:
Natural AC bonus:
Challenge Rating:
- Epic Wildshape Spell-Like Abilities:
+ Epic Wildshape Spell-like Abilities:
%(NAME) (SL %(SL) / CL %(CL) / CR %(CR))
Learn new shape
Select a 'Quick Shift Slot' to change the shape stored in it
@@ -71613,7 +71613,7 @@ Special Abilities:
Thrall of Orcus Shadowcasting (Shadowsmith)
Alienist (REMOVE)
Dragonsong Lyrist (REMOVE)
- Elemental Savant (REMOVED)
+ Elemental Savant (REMOVE)
Mystic Theurge (REMOVE)
Ollam (REMOVE)
Thrall of Orcus (REMOVE)
@@ -75213,6 +75213,4 @@ Specifics: You gain a +4 perfection bonus on Will saving throws against charm an
Type of Feat: Exalted
Prerequisite: Wis 13+
Specifics: You gain a +2 bonus on saving throws to resist any fear effect, despair effect (such as the crushing despair spell), or similar mind-affecting condition, but not charms or compulsions (such as the charm person and dominate person spells)
- Raziel's Martial Strike
- At 4th level, a fist of Raziel gains the Sanctify Martial Strike feat as a bonus feat. This feat will allow you to still choose it if you otherwise do not meet the prerequisites.
-
+
\ No newline at end of file
diff --git a/nwn/nwnprc/trunk/tlk/prc_consortium.tlk b/nwn/nwnprc/trunk/tlk/prc_consortium.tlk
index dbac5f1f..513504e1 100644
Binary files a/nwn/nwnprc/trunk/tlk/prc_consortium.tlk and b/nwn/nwnprc/trunk/tlk/prc_consortium.tlk differ