2026/04/02 Morning Update

Added Chaos domain.
Added Glory domain.
Added Law domain.
Added Luck domain.
Added Madness domain.
Added Mind domain.
Added Moon domain.
Added new Shaman / Monk feats to Shaman feat tracker function.
Corrected all instances of Summon Monster to Summon Creature in the TLK
This commit is contained in:
Jaysyn904
2026-05-02 10:32:31 -04:00
parent a8fa7e9fa6
commit 95d6a35a49
85 changed files with 52795 additions and 52189 deletions

View File

@@ -1418,6 +1418,13 @@ const int FEAT_BONUS_DOMAIN_SPELLS = 2046;
const int FEAT_BONUS_DOMAIN_SCALEYKIND = 2047;
const int FEAT_BONUS_DOMAIN_BLIGHTBRINGER = 2048;
const int FEAT_BONUS_DOMAIN_DRAGON = 2122;
const int FEAT_BONUS_DOMAIN_CHAOS = 25130;
const int FEAT_BONUS_DOMAIN_LAW = 25131;
const int FEAT_BONUS_DOMAIN_LUCK = 25132;
const int FEAT_BONUS_DOMAIN_GLORY = 25133;
const int FEAT_BONUS_DOMAIN_MADNESS = 25134;
const int FEAT_BONUS_DOMAIN_MIND = 25135;
const int FEAT_BONUS_DOMAIN_MOON = 25136;
// Domain Power Feats
const int FEAT_DOMAIN_POWER_DARKNESS = 3458;
@@ -1450,6 +1457,13 @@ const int FEAT_DOMAIN_POWER_SPELLS = 4046;
const int FEAT_DOMAIN_POWER_SCALEYKIND = 4057;
const int FEAT_DOMAIN_POWER_BLIGHTBRINGER = 2250;
const int FEAT_DOMAIN_POWER_DRAGON = 4064;
const int FEAT_DOMAIN_POWER_CHAOS = 25138;
const int FEAT_DOMAIN_POWER_LAW = 25139;
const int FEAT_DOMAIN_POWER_LUCK = 25140;
const int FEAT_DOMAIN_POWER_GLORY = 25141;
const int FEAT_DOMAIN_POWER_MADNESS = 25142;
const int FEAT_DOMAIN_POWER_MIND = 25143;
const int FEAT_DOMAIN_POWER_MOON = 25144;
// Cast Bonus Domain
const int FEAT_CAST_DOMAIN_LEVEL_ONE = 2049;

View File

@@ -6463,8 +6463,12 @@ int DomainPower(object oCaster, int nSpellID, int nSpellSchool = -1)
if (GetHasDescriptor(nSpellID, DESCRIPTOR_EVIL) && GetHasFeat(FEAT_EVIL_DOMAIN_POWER, oCaster))
nBonus += 1;
// Boosts Caster level with good spells by 1
if (GetHasDescriptor(nSpellID, DESCRIPTOR_GOOD) && GetHasFeat(FEAT_GOOD_DOMAIN_POWER, oCaster))
// Boosts Caster level with chaos spells by 1
if (GetHasDescriptor(nSpellID, DESCRIPTOR_CHAOTIC) && GetHasFeat(FEAT_DOMAIN_POWER_CHAOS, oCaster))
nBonus += 1;
// Boosts Caster level with law spells
if (GetHasDescriptor(nSpellID, DESCRIPTOR_LAWFUL) && GetHasFeat(FEAT_DOMAIN_POWER_LAW, oCaster))
nBonus += 1;
return nBonus;

View File

@@ -160,6 +160,7 @@ int GetIsBioDivineClass(int nClass)
|| nClass == CLASS_TYPE_PALADIN
|| nClass == CLASS_TYPE_SHAMAN
|| nClass == CLASS_TYPE_UR_PRIEST
|| nClass == CLASS_TYPE_OCULAR
|| nClass == CLASS_TYPE_RANGER;
}
@@ -447,6 +448,13 @@ void CheckBonusDomains(object oPC)
if (GetHasFeat(FEAT_BONUS_DOMAIN_DRAGON, oPC)) AddBonusDomain(oPC, PRC_DOMAIN_DRAGON);
if (GetHasFeat(FEAT_BONUS_DOMAIN_COLD, oPC)) AddBonusDomain(oPC, PRC_DOMAIN_COLD);
if (GetHasFeat(FEAT_BONUS_DOMAIN_WINTER, oPC)) AddBonusDomain(oPC, PRC_DOMAIN_WINTER);
if (GetHasFeat(FEAT_BONUS_DOMAIN_CHAOS, oPC)) AddBonusDomain(oPC, PRC_DOMAIN_CHAOS);
if (GetHasFeat(FEAT_BONUS_DOMAIN_LAW, oPC)) AddBonusDomain(oPC, PRC_DOMAIN_LAW);
if (GetHasFeat(FEAT_BONUS_DOMAIN_LUCK, oPC)) AddBonusDomain(oPC, PRC_DOMAIN_LUCK);
if (GetHasFeat(FEAT_BONUS_DOMAIN_GLORY, oPC)) AddBonusDomain(oPC, PRC_DOMAIN_GLORY);
if (GetHasFeat(FEAT_BONUS_DOMAIN_MADNESS, oPC)) AddBonusDomain(oPC, PRC_DOMAIN_MADNESS);
if (GetHasFeat(FEAT_BONUS_DOMAIN_MIND, oPC)) AddBonusDomain(oPC, PRC_DOMAIN_MIND);
if (GetHasFeat(FEAT_BONUS_DOMAIN_MOON, oPC)) AddBonusDomain(oPC, PRC_DOMAIN_MOON);
//if (DEBUG) FloatingTextStringOnCreature("Check Bonus Domains is running", oPC, FALSE);
}
@@ -529,15 +537,17 @@ int GetTurningDomain(int nSpell)
{
switch(nSpell)
{
case SPELL_TURN_REPTILE: return PRC_DOMAIN_SCALEYKIND;
case SPELL_TURN_OOZE: return PRC_DOMAIN_SLIME;
case SPELL_TURN_SPIDER: return PRC_DOMAIN_SPIDER;
case SPELL_TURN_PLANT: return PRC_DOMAIN_PLANT;
case SPELL_TURN_AIR: return PRC_DOMAIN_AIR;
case SPELL_TURN_EARTH: return PRC_DOMAIN_EARTH;
case SPELL_TURN_FIRE: return PRC_DOMAIN_FIRE;
case SPELL_TURN_WATER: return PRC_DOMAIN_WATER;
case SPELL_TURN_BLIGHTSPAWNED: return PRC_DOMAIN_BLIGHTBRINGER;
case SPELL_TURN_REPTILE: return PRC_DOMAIN_SCALEYKIND;
case SPELL_TURN_OOZE: return PRC_DOMAIN_SLIME;
case SPELL_TURN_SPIDER: return PRC_DOMAIN_SPIDER;
case SPELL_TURN_PLANT: return PRC_DOMAIN_PLANT;
case SPELL_TURN_AIR: return PRC_DOMAIN_AIR;
case SPELL_TURN_EARTH: return PRC_DOMAIN_EARTH;
case SPELL_TURN_FIRE: return PRC_DOMAIN_FIRE;
case SPELL_TURN_WATER: return PRC_DOMAIN_WATER;
case SPELL_TURN_BLIGHTSPAWNED: return PRC_DOMAIN_BLIGHTBRINGER;
case SPELL_DOMAIN_POWER_MADNESS: return PRC_DOMAIN_MADNESS;
case SPELL_DOMAIN_POWER_MOON: return PRC_DOMAIN_MOON;
}
return -1;
@@ -583,4 +593,6 @@ int GetDomainCasterLevel(object oPC)
+ GetLevelByClass(CLASS_TYPE_BLIGHTLORD, oPC)
+ GetLevelByClass(CLASS_TYPE_CONTEMPLATIVE, oPC)
+ GetLevelByClass(CLASS_TYPE_MASTER_OF_SHROUDS, oPC);
}
}
//:: void main (){}

View File

@@ -1399,7 +1399,11 @@ void DomainUses(object oPC)
if(!GetHasFeat(FEAT_BONUS_DOMAIN_SCALEYKIND, oPC) || PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_SCALEYKIND))
FeatUsePerDay(oPC, FEAT_DOMAIN_POWER_SCALEYKIND, ABILITY_CHARISMA, 3);
if(!GetHasFeat(FEAT_BONUS_DOMAIN_PLANT, oPC) || PRC_Funcs_GetFeatKnown(oPC, FEAT_PLANT_DOMAIN_POWER))
FeatUsePerDay(oPC, FEAT_PLANT_DOMAIN_POWER, ABILITY_CHARISMA, 3);
FeatUsePerDay(oPC, FEAT_PLANT_DOMAIN_POWER, ABILITY_CHARISMA, 3);
if(!GetHasFeat(FEAT_BONUS_DOMAIN_MADNESS, oPC) || PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_MADNESS))
FeatUsePerDay(oPC, FEAT_DOMAIN_POWER_MADNESS, ABILITY_CHARISMA, 3);
if(!GetHasFeat(FEAT_BONUS_DOMAIN_MOON, oPC) || PRC_Funcs_GetFeatKnown(oPC, FEAT_DOMAIN_POWER_MOON))
FeatUsePerDay(oPC, FEAT_DOMAIN_POWER_MOON, ABILITY_CHARISMA, 3);
}
void HathranFear(object oPC)

View File

@@ -981,6 +981,8 @@ int PRCMySavingThrow(int nSavingThrow, object oTarget, int nDC, int nSaveType =
// +2 bonus on saves against mind affecting, done here
if(GetLevelByClass(CLASS_TYPE_FIST_DAL_QUOR, oTarget) > 1)
nDC -= 2;
if(GetHasFeat(FEAT_DOMAIN_POWER_MIND, oTarget) || GetHasFeat(FEAT_BONUS_DOMAIN_MIND, oTarget))
nDC -= 2;
// Scorpion's Resolve gives a +4 bonus on mind affecting saves
if(GetHasFeat(FEAT_SCORPIONS_RESOLVE, oTarget))
nDC -= 4;

View File

@@ -274,7 +274,34 @@ int GetIsTurnOrRebuke(object oTarget, int nTurnType, int nTargetRace)
nReturn = ACTION_REBUKE;
break;
}
}
case FEAT_DOMAIN_POWER_MADNESS:
{
// Madness domain rebukes or commands oozes
if(nTargetRace == RACIAL_TYPE_ABERRATION)
nReturn = ACTION_TURN;
break;
}
case FEAT_DOMAIN_POWER_MOON:
{
// Moon domain rebukes lycanthropes
if(nTargetRace == RACIAL_TYPE_SHAPECHANGER)
{
string sName = GetName(oTarget);
int nAppearance = GetAppearanceType(oTarget);
// Check if name starts with "were" OR has lycanthrope appearance
if((GetStringLeft(GetStringLowerCase(sName), 4) == "were") ||
nAppearance == APPEARANCE_TYPE_WEREWOLF ||
nAppearance == APPEARANCE_TYPE_WERECAT ||
nAppearance == APPEARANCE_TYPE_WERERAT)
{
nReturn = ACTION_TURN;
}
}
break;
}
}
//always turn baelnorns & archliches

View File

@@ -1013,7 +1013,7 @@ const int IP_CONST_FEAT_CHECK_DOMAIN_SLOTS = 151;
const int IP_CONST_FEAT_WAR_DOMAIN = 152;
const int IP_CONST_FEAT_STRENGTH_DOMAIN = 153;
const int IP_CONST_FEAT_PROTECTION_DOMAIN = 154;
const int IP_CONST_FEAT_LUCK_DOMAIN = 155;
//const int IP_CONST_FEAT_LUCK_DOMAIN = 155;
const int IP_CONST_FEAT_DEATH_DOMAIN = 156;
const int IP_CONST_FEAT_AIR_DOMAIN = 157;
const int IP_CONST_FEAT_ANIMAL_DOMAIN = 158;
@@ -1062,6 +1062,13 @@ const int IP_CONST_FEAT_BLIGHTBRINGER = 200;
const int IP_CONST_FEAT_DRAGON_DOMAIN = 397;
const int IP_CONST_FEAT_COLD_DOMAIN = 230;
const int IP_CONST_FEAT_WINTER_DOMAIN = 232;
const int IP_CONST_FEAT_CHAOS_DOMAIN = 24900;
const int IP_CONST_FEAT_LAW_DOMAIN = 24901;
const int IP_CONST_FEAT_LUCK_DOMAIN = 24902;
const int IP_CONST_FEAT_GLORY_DOMAIN = 24903;
const int IP_CONST_FEAT_MADNESS_DOMAIN = 24904;
const int IP_CONST_FEAT_MIND_DOMAIN = 24905;
const int IP_CONST_FEAT_MOON_DOMAIN = 24906;
// Lasher
const int IP_CONST_FEAT_IMPROVED_KNOCKDOWN = 264;

View File

@@ -278,57 +278,64 @@ const int POLYMORPH_TYPE_ALGOID = 164;
//:: These constants are off by 1 to allow 0 to be the FALSE return value.
//::///////////////////
const int PRC_DOMAIN_AIR = 1;
const int PRC_DOMAIN_ANIMAL = 2;
const int PRC_DOMAIN_DEATH = 4;
const int PRC_DOMAIN_DESTRUCTION = 5;
const int PRC_DOMAIN_EARTH = 6;
const int PRC_DOMAIN_EVIL = 7;
const int PRC_DOMAIN_FIRE = 8;
const int PRC_DOMAIN_GOOD = 9;
const int PRC_DOMAIN_HEALING = 10;
const int PRC_DOMAIN_KNOWLEDGE = 11;
const int PRC_DOMAIN_MAGIC = 14;
const int PRC_DOMAIN_PLANT = 15;
const int PRC_DOMAIN_PROTECTION = 16;
const int PRC_DOMAIN_STRENGTH = 17;
const int PRC_DOMAIN_SUN = 18;
const int PRC_DOMAIN_TRAVEL = 19;
const int PRC_DOMAIN_TRICKERY = 20;
const int PRC_DOMAIN_WAR = 21;
const int PRC_DOMAIN_WATER = 22;
const int PRC_DOMAIN_DARKNESS = 31;
const int PRC_DOMAIN_STORM = 32;
const int PRC_DOMAIN_METAL = 33;
const int PRC_DOMAIN_PORTAL = 34;
const int PRC_DOMAIN_FORCE = 35;
const int PRC_DOMAIN_SLIME = 36;
const int PRC_DOMAIN_TYRANNY = 37;
const int PRC_DOMAIN_DOMINATION = 38;
const int PRC_DOMAIN_SPIDER = 39;
const int PRC_DOMAIN_UNDEATH = 40;
const int PRC_DOMAIN_TIME = 41;
const int PRC_DOMAIN_DWARF = 42;
const int PRC_DOMAIN_CHARM = 43;
const int PRC_DOMAIN_ELF = 44;
const int PRC_DOMAIN_FAMILY = 45;
const int PRC_DOMAIN_FATE = 46;
const int PRC_DOMAIN_GNOME = 47;
const int PRC_DOMAIN_ILLUSION = 48;
const int PRC_DOMAIN_HATRED = 49;
const int PRC_DOMAIN_HALFLING = 50;
const int PRC_DOMAIN_NOBILITY = 51;
const int PRC_DOMAIN_OCEAN = 52;
const int PRC_DOMAIN_ORC = 53;
const int PRC_DOMAIN_RENEWAL = 54;
const int PRC_DOMAIN_RETRIBUTION = 55;
const int PRC_DOMAIN_RUNE = 56;
const int PRC_DOMAIN_SPELLS = 57;
const int PRC_DOMAIN_SCALEYKIND = 58;
const int PRC_DOMAIN_BLIGHTBRINGER = 59;
const int PRC_DOMAIN_DRAGON = 60;
const int PRC_DOMAIN_COLD = 61;
const int PRC_DOMAIN_WINTER = 62;
const int PRC_DOMAIN_AIR = 1;
const int PRC_DOMAIN_ANIMAL = 2;
const int PRC_DOMAIN_CHAOS = 3;
const int PRC_DOMAIN_DEATH = 4;
const int PRC_DOMAIN_DESTRUCTION = 5;
const int PRC_DOMAIN_EARTH = 6;
const int PRC_DOMAIN_EVIL = 7;
const int PRC_DOMAIN_FIRE = 8;
const int PRC_DOMAIN_GOOD = 9;
const int PRC_DOMAIN_HEALING = 10;
const int PRC_DOMAIN_KNOWLEDGE = 11;
const int PRC_DOMAIN_LAW = 12;
const int PRC_DOMAIN_LUCK = 13;
const int PRC_DOMAIN_MAGIC = 14;
const int PRC_DOMAIN_PLANT = 15;
const int PRC_DOMAIN_PROTECTION = 16;
const int PRC_DOMAIN_STRENGTH = 17;
const int PRC_DOMAIN_SUN = 18;
const int PRC_DOMAIN_TRAVEL = 19;
const int PRC_DOMAIN_TRICKERY = 20;
const int PRC_DOMAIN_WAR = 21;
const int PRC_DOMAIN_WATER = 22;
const int PRC_DOMAIN_GLORY = 26;
const int PRC_DOMAIN_MADNESS = 27;
const int PRC_DOMAIN_MIND = 28;
const int PRC_DOMAIN_MOON = 29;
const int PRC_DOMAIN_DARKNESS = 31;
const int PRC_DOMAIN_STORM = 32;
const int PRC_DOMAIN_METAL = 33;
const int PRC_DOMAIN_PORTAL = 34;
const int PRC_DOMAIN_FORCE = 35;
const int PRC_DOMAIN_SLIME = 36;
const int PRC_DOMAIN_TYRANNY = 37;
const int PRC_DOMAIN_DOMINATION = 38;
const int PRC_DOMAIN_SPIDER = 39;
const int PRC_DOMAIN_UNDEATH = 40;
const int PRC_DOMAIN_TIME = 41;
const int PRC_DOMAIN_DWARF = 42;
const int PRC_DOMAIN_CHARM = 43;
const int PRC_DOMAIN_ELF = 44;
const int PRC_DOMAIN_FAMILY = 45;
const int PRC_DOMAIN_FATE = 46;
const int PRC_DOMAIN_GNOME = 47;
const int PRC_DOMAIN_ILLUSION = 48;
const int PRC_DOMAIN_HATRED = 49;
const int PRC_DOMAIN_HALFLING = 50;
const int PRC_DOMAIN_NOBILITY = 51;
const int PRC_DOMAIN_OCEAN = 52;
const int PRC_DOMAIN_ORC = 53;
const int PRC_DOMAIN_RENEWAL = 54;
const int PRC_DOMAIN_RETRIBUTION = 55;
const int PRC_DOMAIN_RUNE = 56;
const int PRC_DOMAIN_SPELLS = 57;
const int PRC_DOMAIN_SCALEYKIND = 58;
const int PRC_DOMAIN_BLIGHTBRINGER = 59;
const int PRC_DOMAIN_DRAGON = 60;
const int PRC_DOMAIN_COLD = 61;
const int PRC_DOMAIN_WINTER = 62;
//:://////////////////////////////////////////////
//:: Trap Const

View File

@@ -1726,4 +1726,8 @@ const int SPELL_FACECHANGER_QS2 = 19395;
const int SPELL_FACECHANGER_QS3 = 19396;
//:: Saint Template
const int SAINT_PROTECTIVE_AURA = 16386;
const int SAINT_PROTECTIVE_AURA = 16386;
//:: Domain Powers
const int SPELL_DOMAIN_POWER_MADNESS = 17680;
const int SPELL_DOMAIN_POWER_MOON = 17681;