PRC8/nwn/nwnprc/trunk/scripts/prc_dracaura_in.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

124 lines
5.7 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Draconic Aura Enter
//:: prc_dracaura_in.nss
//::///////////////////////////////////////////////
/*
Handles PCs entering the Aura AoE for all
draconic auras.
*/
//:://////////////////////////////////////////////
//:: Created By: xwarren
//:: Created On: Apr 2, 2011
//:://////////////////////////////////////////////
#include "moi_inc_moifunc"
void DraconicAuraVigor(object oTarget, int nBonus);
void DraconicAuraVigor(object oTarget, int nBonus)
{
if (GetHasSpellEffect(SPELL_DRACONIC_AURA_VIGOR, oTarget))
{
int nCurHP = GetCurrentHitPoints(oTarget);
int nMaxHP = GetMaxHitPoints(oTarget);
// Is the HP total lower than half?
if ((nMaxHP/2) > nCurHP)
{
if (!GetIsResting(oTarget)) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nBonus), oTarget);
}
DelayCommand(6.0, DraconicAuraVigor(oTarget, nBonus));
}
}
void main()
{
object oAura = OBJECT_SELF;
object oTarget = GetEnteringObject();
object oShaman = GetAreaOfEffectCreator();
// Only apply to allies
if(!GetIsFriend(oTarget, oShaman))
return;
int nAuraID = GetLocalInt(oAura, "SpellID");
int nAuraBonus = GetLocalInt(oAura, "AuraBonus");
int nDamageType = GetLocalInt(oAura, "DamageType");
effect eBonus = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_HOLY);
switch(nAuraID)
{
case SPELL_DRACONIC_AURA_TOUGHNESS:
eBonus = EffectLinkEffects(eBonus, EffectDamageReduction(nAuraBonus, DAMAGE_POWER_PLUS_TWENTY));
eVis = EffectVisualEffect(VFX_IMP_POLYMORPH);
break;
case SPELL_DRACONIC_AURA_VIGOR:
DraconicAuraVigor(oTarget, nAuraBonus);
eVis = EffectVisualEffect(VFX_IMP_HEALING_M);
break;
case SPELL_DRACONIC_AURA_PRESENCE:
eBonus = EffectLinkEffects(eBonus, EffectSkillIncrease(SKILL_PERSUADE, nAuraBonus));
eBonus = EffectLinkEffects(eBonus, EffectSkillIncrease(SKILL_BLUFF, nAuraBonus));
eBonus = EffectLinkEffects(eBonus, EffectSkillIncrease(SKILL_INTIMIDATE, nAuraBonus));
eVis = EffectVisualEffect(VFX_IMP_MAGICAL_VISION);
break;
case SPELL_DRACONIC_AURA_SENSES:
eBonus = EffectLinkEffects(eBonus, EffectSkillIncrease(SKILL_LISTEN, nAuraBonus));
eBonus = EffectLinkEffects(eBonus, EffectSkillIncrease(SKILL_SPOT, nAuraBonus));
eVis = EffectVisualEffect(VFX_IMP_MAGICAL_VISION);
break;
case SPELL_DRACONIC_AURA_ENERGY_SHIELD:
eBonus = EffectLinkEffects(eBonus, EffectDamageShield(2 * nAuraBonus, 0, nDamageType));
eBonus = EffectLinkEffects(eBonus, EffectVisualEffect(VFX_DUR_ENTROPIC_SHIELD));
break;
case SPELL_DRACONIC_AURA_RESISTANCE:
eBonus = EffectLinkEffects(eBonus, EffectDamageResistance(nDamageType, 5 * nAuraBonus));
eVis = EffectVisualEffect(VFX_IMP_ELEMENTAL_PROTECTION);
break;
case SPELL_DRACONIC_AURA_POWER:
eBonus = EffectLinkEffects(eBonus, EffectDamageIncrease(IPGetDamageBonusConstantFromNumber(nAuraBonus), DAMAGE_TYPE_MAGICAL));
eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
break;
case SPELL_DRACONIC_AURA_INSIGHT:
eBonus = EffectLinkEffects(eBonus, EffectSkillIncrease(SKILL_LORE, nAuraBonus));
eBonus = EffectLinkEffects(eBonus, EffectSkillIncrease(SKILL_SPELLCRAFT, nAuraBonus));
eVis = EffectVisualEffect(VFX_IMP_MAGICAL_VISION);
break;
case SPELL_DRACONIC_AURA_RESOLVE:
eBonus = EffectLinkEffects(eBonus, EffectSavingThrowIncrease(SAVING_THROW_WILL, nAuraBonus, SAVING_THROW_TYPE_FEAR));
eBonus = EffectLinkEffects(eBonus, EffectSkillIncrease(SKILL_CONCENTRATION, nAuraBonus));
eVis = EffectVisualEffect(VFX_IMP_HOLY_AID);
break;
case SPELL_DRACONIC_AURA_STAMINA:
eBonus = EffectLinkEffects(eBonus, EffectSavingThrowIncrease(SAVING_THROW_FORT, nAuraBonus));
eVis = EffectVisualEffect(VFX_IMP_HOLY_AID);
break;
case SPELL_DRACONIC_AURA_SWIFTNESS:
eBonus = EffectLinkEffects(eBonus, EffectMovementSpeedIncrease(nAuraBonus * 5));
eBonus = EffectLinkEffects(eBonus, EffectSkillIncrease(SKILL_JUMP, nAuraBonus));
eVis = EffectVisualEffect(VFX_IMP_HASTE);
break;
case SPELL_DRACONIC_AURA_MAGICPOWER:
if(nAuraBonus > GetLocalInt(oTarget, "MagicPowerAura"))
SetLocalInt(oTarget, "MagicPowerAura", nAuraBonus);
eVis = EffectVisualEffect(VFX_IMP_MAGIC_PROTECTION);
break;
case SPELL_DRACONIC_AURA_ENERGY:
if(nDamageType == DAMAGE_TYPE_ACID && nAuraBonus > GetLocalInt(oTarget, "AcidEnergyAura"))
SetLocalInt(oTarget, "AcidEnergyAura", nAuraBonus);
else if(nDamageType == DAMAGE_TYPE_COLD && nAuraBonus > GetLocalInt(oTarget, "ColdEnergyAura"))
SetLocalInt(oTarget, "ColdEnergyAura", nAuraBonus);
else if(nDamageType == DAMAGE_TYPE_ELECTRICAL && nAuraBonus > GetLocalInt(oTarget, "ElecEnergyAura"))
SetLocalInt(oTarget, "ElecEnergyAura", nAuraBonus);
else if(nDamageType == DAMAGE_TYPE_FIRE && nAuraBonus > GetLocalInt(oTarget, "FireEnergyAura"))
SetLocalInt(oTarget, "FireEnergyAura", nAuraBonus);
eVis = EffectVisualEffect(VFX_IMP_MAGIC_PROTECTION);
break;
}
eBonus = ExtraordinaryEffect(eBonus);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonus, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}