2025/05/17 Update

Moved Oozemaster over to DoFortification()
Tweaked Master of Shrouds bonus feat list.
Remain Conscious is not a General feat.
Fixed Alienist's Phobia ability.
This commit is contained in:
Jaysyn904 2025-05-17 19:30:04 -04:00
parent 95480e23dd
commit fe853865ab
11 changed files with 344 additions and 136 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
}

View File

@ -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);
}
} */
}

View File

@ -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

View File

@ -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);
int nClass = GetLevelByClass(CLASS_TYPE_OOZEMASTER, oPC);
if(nEvent == EVENT_ONHEARTBEAT)
{
//Apply bonuses accordingly
if(bIdAnat){
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){
*/
}
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);
}
}

View File

@ -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,7 +124,23 @@ void DispelMonitor(object oCaster, object oTarget, int nSpellID, int nBeatsRemai
void main()
{
object oCaster = OBJECT_SELF;
//Declare main variables.
int nEvent = GetRunningEvent();
object oCaster;
switch(nEvent)
{
case EVENT_ONPLAYERREST_STARTED: oCaster = GetLastBeingRested(); break;
default:
oCaster = OBJECT_SELF;
}
if(nEvent == EVENT_ONPLAYERREST_STARTED)
{
ResetSize(oCaster);
}
else if(nEvent == FALSE)
{
int nCasterLevel = PRCGetCasterLevel(oCaster);
int nSpellID = PRCGetSpellId();
PRCSetSchool(GetSpellSchool(nSpellID));
@ -101,11 +153,11 @@ void main()
if(nMetaMagic & METAMAGIC_EXTEND) fDuration *= 2;
int bMass = ((nSpellID == SPELL_ENLARGE_PERSON_MASS) ||
(nSpellID == SPELL_REDUCE_PERSON_MASS))
;
(nSpellID == SPELL_REDUCE_PERSON_MASS));
int bEnlarge = ((nSpellID == SPELL_ENLARGE_PERSON) ||
(nSpellID == SPELL_ENLARGE_PERSON_MASS))
;
(nSpellID == SPELL_ENLARGE_PERSON_MASS));
effect eLink;
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_SANCTUARY));
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
@ -115,6 +167,7 @@ void main()
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
{
@ -122,10 +175,13 @@ void main()
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)
@ -139,21 +195,121 @@ void main()
{
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);
{
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))
{
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, nSpellID, nCasterLevel);
if(bEnlarge)
SetLocalInt(oTarget, "PRC_Power_Expansion_SizeIncrease", 1);
{
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));
}
@ -161,7 +317,7 @@ void main()
if(!bMass) break;
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
}
PRCSetSchool();
}

View File

@ -5048,7 +5048,7 @@ Use: Selected.</entry>
<entry id="16444" lang="en" sex="m">grey elves</entry>
<entry id="16445" lang="en" sex="m">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.</entry>
<entry id="55479" lang="en" sex="m">Hands of the Winged Masters</entry>
<entry id="55480" lang="en" sex="m">hand of the winged masters</entry>
<entry id="55481" lang="en" sex="m">(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
<entry id="57434" lang="en" sex="m">Special attack creature weapon: </entry>
<entry id="57435" lang="en" sex="m">Natural AC bonus: </entry>
<entry id="57436" lang="en" sex="m">Challenge Rating: </entry>
<entry id="57437" lang="en" sex="m">Epic Wildshape Spell-Like Abilities:</entry>
<entry id="57437" lang="en" sex="m">Epic Wildshape Spell-like Abilities:</entry>
<entry id="57438" lang="en" sex="m">%(NAME) (SL %(SL) / CL %(CL) / CR %(CR))</entry>
<entry id="57439" lang="en" sex="m">Learn new shape</entry>
<entry id="57440" lang="en" sex="m">Select a 'Quick Shift Slot' to change the shape stored in it</entry>
@ -71613,7 +71613,7 @@ Special Abilities:
<entry id="75443" lang="en" sex="m">Thrall of Orcus Shadowcasting (Shadowsmith)</entry>
<entry id="75444" lang="en" sex="m">Alienist (REMOVE)</entry>
<entry id="75445" lang="en" sex="m">Dragonsong Lyrist (REMOVE)</entry>
<entry id="75446" lang="en" sex="m">Elemental Savant (REMOVED)</entry>
<entry id="75446" lang="en" sex="m">Elemental Savant (REMOVE)</entry>
<entry id="75447" lang="en" sex="m">Mystic Theurge (REMOVE)</entry>
<entry id="75448" lang="en" sex="m">Ollam (REMOVE)</entry>
<entry id="75449" lang="en" sex="m">Thrall of Orcus (REMOVE)</entry>
@ -75213,6 +75213,4 @@ Specifics: You gain a +4 perfection bonus on Will saving throws against charm an
<entry id="213330" lang="en" sex="m">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)</entry>
<entry id="213331" lang="en" sex="m">Raziel's Martial Strike</entry>
<entry id="213332" lang="en" sex="m">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.</entry>
</tlk>