2025/08/22 Update

Reverted to 4.56 to track down a bug that started in 4.57.  Bugfixed back to 4.61.
It's amazing the damage that one skipped case statement can do.
This commit is contained in:
Jaysyn904
2025-08-22 17:54:55 -04:00
parent 59b2630adf
commit 246f8d56aa
3624 changed files with 101489 additions and 93263 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);
}