2025/09/21
Tweaked Cerebremancer's featlist. Epic DFA is 21st lvl not 11th. Added EffectPetrificationImmune(). Fixed Large monk damage. @nShaken Fixed expanded monk damage. @nShaken Fixed Phantom Steed, oops. Bahamut breath is a Fort save. Xaniqos school works with Skirmish now.. Gave Drider a female racial appearance. Tweaked oozemaster Light Fortification TLK entry.
This commit is contained in:
@@ -185,6 +185,7 @@ int GetIsShaken(object oTarget);
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#include "prc_inc_castlvl" // get prc_racial_const, prc_inc_nwscript, prc_inc_newip
|
||||
#include "inc_epicspelldef"
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/* Internal functions */
|
||||
@@ -746,7 +747,6 @@ effect EffectImmunityMiscAll()
|
||||
//:: Immunity to all gaze attacks
|
||||
effect EffectGazeImmune()
|
||||
{
|
||||
effect eBlank;
|
||||
|
||||
effect eReturn = EffectSpellImmunity(SPELLABILITY_GAZE_CHARM);
|
||||
eReturn = EffectSpellImmunity(SPELLABILITY_GAZE_CONFUSION);
|
||||
@@ -768,6 +768,23 @@ effect EffectGazeImmune()
|
||||
return eReturn;
|
||||
}
|
||||
|
||||
//:: Immunity to all perification attacks
|
||||
effect EffectPetrificationImmune()
|
||||
{
|
||||
effect eReturn = EffectSpellImmunity(SPELLABILITY_TOUCH_PETRIFY);
|
||||
eReturn = EffectSpellImmunity(SPELLABILITY_BREATH_PETRIFY);
|
||||
eReturn = EffectSpellImmunity(SPELL_FLESH_TO_STONE);
|
||||
eReturn = EffectSpellImmunity(SPELL_STONEHOLD);
|
||||
eReturn = EffectSpellImmunity(SPELL_EPIC_A_STONE);
|
||||
eReturn = EffectSpellImmunity(POWER_CRYSTALLIZE);
|
||||
eReturn = EffectSpellImmunity(MELD_BASILISK_MASK);
|
||||
eReturn = EffectSpellImmunity(SPELLABILITY_GAZE_PETRIFY);
|
||||
|
||||
eReturn = TagEffect(eReturn, "PRCPetrificationImmune");
|
||||
|
||||
return eReturn;
|
||||
}
|
||||
|
||||
int GetIsShaken(object oTarget)
|
||||
{
|
||||
effect eEffect = GetFirstEffect(oTarget);
|
||||
|
@@ -308,7 +308,7 @@ int FindUnarmedDamage(object oCreature)
|
||||
if (GetHasFeat(FEAT_INCREASE_DAMAGE2, oCreature)) iDieIncrease = 2;
|
||||
else if (GetHasFeat(FEAT_INCREASE_DAMAGE1, oCreature)) iDieIncrease = 1;
|
||||
|
||||
//:: Expansion / Compression powers
|
||||
/* //:: Expansion / Compression powers (Double dipping?)
|
||||
int nExpansion = GetLocalInt(oCreature, "PRC_Power_Expansion_SizeIncrease");
|
||||
int nCompression = GetLocalInt(oCreature, "PRC_Power_Compression_SizeReduction");
|
||||
|
||||
@@ -320,7 +320,7 @@ int FindUnarmedDamage(object oCreature)
|
||||
if (nCompression)
|
||||
{
|
||||
iSize -= nCompression;
|
||||
}
|
||||
} */
|
||||
|
||||
iMonkDamage += iDieIncrease;
|
||||
iShouDamage += iDieIncrease;
|
||||
|
@@ -2736,6 +2736,47 @@ object HorseSummonPaladinMount(int bPHBDuration=FALSE)
|
||||
return oMount;
|
||||
} // HorseSummonPaladinMount()
|
||||
|
||||
object HorseSummonPhantomSteed(int nCasterLvl, int nDuration)
|
||||
{ // PURPOSE: Summon Phantom Steed
|
||||
object oSummoner=OBJECT_SELF;
|
||||
object oMount;
|
||||
location lLoc;
|
||||
int nDespawnTime;
|
||||
int nCurrentTime;
|
||||
int nMountNum=1;
|
||||
string sResRef=HORSE_PALADIN_PREFIX;
|
||||
effect eVFX;
|
||||
oMount=HorseGetPaladinMount(oSummoner);
|
||||
if (!GetIsObjectValid(oMount) && GetObjectType(oSummoner) == OBJECT_TYPE_CREATURE)
|
||||
{ // okay to summon - only one mount at a time
|
||||
if ((GetIsPC(oSummoner) || GetIsDM(oSummoner))&&!GetHasFeat(FEAT_HORSE_MENU,oSummoner)) HorseAddHorseMenu(oSummoner);
|
||||
if (nCasterLvl < 11) nMountNum = 2;
|
||||
else if (nCasterLvl > 10 && nCasterLvl < 15) nMountNum = 3;
|
||||
else if (nCasterLvl > 14 && nCasterLvl < 25) nMountNum = 4;
|
||||
else if (nCasterLvl > 24 && nCasterLvl < 30) nMountNum = 5;
|
||||
else if (nCasterLvl > 29 && nCasterLvl < 35) nMountNum = 6;
|
||||
else if (nCasterLvl > 34 && nCasterLvl < 40) nMountNum = 7;
|
||||
else if (nCasterLvl > 39) nMountNum = 8;
|
||||
lLoc=HORSE_SupportGetMountLocation(oSummoner,oSummoner);
|
||||
oMount=HorseCreateHorse(sResRef+IntToString(nMountNum),lLoc,oSummoner);
|
||||
if (!GetIsObjectValid(oMount)) oMount=HorseCreateHorse(sResRef+IntToString(nMountNum),GetLocation(oSummoner),oSummoner);
|
||||
if (GetIsObjectValid(oMount))
|
||||
{ // oMount created
|
||||
eVFX=EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oMount,3.0);
|
||||
eVFX=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2);
|
||||
if (nMountNum>3) eVFX=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
|
||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eVFX,GetLocation(oMount));
|
||||
nCurrentTime=HORSE_SupportAbsoluteMinute();
|
||||
nDespawnTime=(nDuration*60)+nCurrentTime;
|
||||
SetLocalInt(oSummoner,"nX3_PALADIN_UNSUMMON",nDespawnTime);
|
||||
if (GetLocalInt(GetModule(),"X3_ENABLE_MOUNT_DB")&&GetIsPC(oSummoner)) SetLocalInt(oSummoner,"bX3_STORE_MOUNT_INFO",TRUE);
|
||||
SetLocalObject(oSummoner,"oX3PaladinMount",oMount);
|
||||
} // oMount created
|
||||
} // okay to summon - only one paladin mount at a time
|
||||
else { oMount=OBJECT_INVALID; }
|
||||
return oMount;
|
||||
} // HorseSummonPaladinMount()
|
||||
|
||||
void HorseUnsummonPaladinMount()
|
||||
{ // PURPOSE: Unsummon Paladin Mount
|
||||
|
Reference in New Issue
Block a user