2025/07/31 Update

Reverted Luminous Armor.
Updated NUI spellcast menu (@Alhooness).
Fixed Inlindl School.
Tweaked prc_2da_cache creature.
Fixed Celebrant of Sharess spellcasting.
Found a few more functions to remove Assassin from.
Added GetTotalShieldACBonus().
Made magic staves medium weapons again, so that small creatures can use them.
Added feat constants for Charge & Grapple.
Devil's Eye should be Extendable.
Setup talents for Combat maneuvers.
Updated PRC8 manual.
This commit is contained in:
Jaysyn904
2025-07-31 07:35:50 -04:00
parent 2181120567
commit 98e0b02799
41 changed files with 1953 additions and 1800 deletions

View File

@@ -60,100 +60,66 @@ Created: 6/20/06
void main()
{
if(!X2PreSpellCastCode()) return;
//Declare main variables.
int nEvent = GetRunningEvent();
object oPC;
switch(nEvent)
{
case EVENT_ONHEARTBEAT: oPC = OBJECT_SELF; break;
default:
oPC = OBJECT_SELF;
}
PRCSetSchool(SPELL_SCHOOL_ABJURATION);
if(nEvent == FALSE)
object oPC = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int nSpell = GetSpellId();
int nCasterLvl = PRCGetCasterLevel(oPC);
int nAlign = GetAlignmentGoodEvil(oTarget);
int nMetaMagic = PRCGetMetaMagicFeat();
float fDur = HoursToSeconds(nCasterLvl);
if(nAlign == ALIGNMENT_GOOD)
{
object oTarget = PRCGetSpellTargetObject();
int nSpell = GetSpellId();
int nCasterLvl = PRCGetCasterLevel(oPC);
int nAlign = GetAlignmentGoodEvil(oTarget);
int nMetaMagic = PRCGetMetaMagicFeat();
float fDur = HoursToSeconds(nCasterLvl);
if(nMetaMagic & METAMAGIC_EXTEND)
fDur += fDur;
if(nAlign == ALIGNMENT_GOOD)
{
if(nMetaMagic & METAMAGIC_EXTEND)
fDur += fDur;
//VFX
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SUPER_HEROISM), oTarget);
//VFX
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SUPER_HEROISM), oTarget);
//Light as a daylight spell, AoE for attack penalty
effect eLight = EffectLinkEffects(EffectVisualEffect(VFX_DUR_LIGHT_WHITE_20), EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
eLight = EffectLinkEffects(eLight, EffectAreaOfEffect(AOE_MOB_LUMINOUS_ARMOR));
//Light as a daylight spell, AoE for attack penalty
effect eLight = EffectLinkEffects(EffectVisualEffect(VFX_DUR_LIGHT_WHITE_20), EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
eLight = EffectLinkEffects(eLight, EffectAreaOfEffect(AOE_MOB_LUMINOUS_ARMOR));
int nArmor;
int nLevel = GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION);
int nArmor;
int nLevel = GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION);
if(nSpell == SPELL_LUMINOUS_ARMOR)
{
nArmor = nLevel + 5;
DoCorruptionCost(oPC, ABILITY_STRENGTH, d2(1), 0);
}
if(nSpell == SPELL_LUMINOUS_ARMOR)
{
nArmor = nLevel + 5;
DoCorruptionCost(oPC, ABILITY_STRENGTH, d2(1), 0);
}
else if(nSpell == SPELL_GREATER_LUMINOUS_ARMOR)
{
nArmor = nLevel + 8;
DoCorruptionCost(oPC, ABILITY_STRENGTH, d3(), 0);
}
else if(nSpell == SPELL_GREATER_LUMINOUS_ARMOR)
{
nArmor = nLevel + 8;
DoCorruptionCost(oPC, ABILITY_STRENGTH, d3(), 0);
}
else
{
return;
}
else
{
return;
}
PRCRemoveEffectsFromSpell(oTarget, SPELL_LUMINOUS_ARMOR);
PRCRemoveEffectsFromSpell(oTarget, SPELL_GREATER_LUMINOUS_ARMOR);
RemoveEventScript(oPC, EVENT_ONHEARTBEAT, "sp_lumins_armr", TRUE, FALSE);
PRCRemoveEffectsFromSpell(oTarget, SPELL_LUMINOUS_ARMOR);
PRCRemoveEffectsFromSpell(oTarget, SPELL_GREATER_LUMINOUS_ARMOR);
effect eArmor = EffectACIncrease(nArmor, AC_ARMOUR_ENCHANTMENT_BONUS, AC_VS_DAMAGE_TYPE_ALL);
eArmor = EffectLinkEffects(eArmor, eLight);
effect eArmor = EffectACIncrease(nArmor, AC_ARMOUR_ENCHANTMENT_BONUS, AC_VS_DAMAGE_TYPE_ALL);
eArmor = EffectLinkEffects(eArmor, eLight);
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eArmor, oTarget, fDur);
object oArmour = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
if (GetBaseAC(oArmour) > 0)
{
ForceUnequip(oPC, oArmour, INVENTORY_SLOT_CHEST);
SendMessageToPC(oPC, "You cannot wear armor while under the effects of Luminous Armour");
}
}
PRCSetSchool();
AddEventScript(oPC, EVENT_ONHEARTBEAT, "sp_lumins_armr", TRUE, FALSE);
DelayCommand(fDur, RemoveEventScript(oPC, EVENT_ONHEARTBEAT, "sp_lumins_armr", TRUE, FALSE));
//Sanctified spells get mandatory 10 pt good adjustment, regardless of switch
AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE);
}
else if(nEvent == EVENT_ONHEARTBEAT)
{
if(GetHasSpellEffect(SPELL_LUMINOUS_ARMOR, oPC) || GetHasSpellEffect(SPELL_GREATER_LUMINOUS_ARMOR, oPC))
{
object oArmour = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
if (GetBaseAC(oArmour) > 0)
{
ForceUnequip(oPC, oArmour, INVENTORY_SLOT_CHEST);
SendMessageToPC(oPC, "You cannot wear armor while under the effects of Luminous Armour");
}
}
else
{
PRCRemoveEffectsFromSpell(oPC, SPELL_LUMINOUS_ARMOR);
PRCRemoveEffectsFromSpell(oPC, SPELL_GREATER_LUMINOUS_ARMOR);
}
}
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eArmor, oTarget, fDur);
object oArmour = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
if (GetBaseAC(oArmour) > 0)
{
ForceUnequip(oPC, oArmour, INVENTORY_SLOT_CHEST);
SendMessageToPC(oPC, "You cannot wear armor while under the effects of Luminous Armour");
}
}
PRCSetSchool();
//Sanctified spells get mandatory 10 pt good adjustment, regardless of switch
AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE);
}